public void Initialize( ConfiguredEndpointCollection endpoints, LocalDiscoveryServerMethods lds, GlobalDiscoveryServerMethods gds, QueryServersFilter filters) { m_lds = lds; m_gds = gds; m_filters = filters; DiscoveryTreeView.Nodes.Clear(); TreeNode node = new TreeNode("Local Machine"); node.SelectedImageIndex = node.ImageIndex = ImageIndex.Computer; node.Tag = RootFolders.LocalMachine; node.Nodes.Add(new TreeNode()); DiscoveryTreeView.Nodes.Add(node); node = new TreeNode("Local Network"); node.SelectedImageIndex = node.ImageIndex = ImageIndex.LocalNetwork; node.Tag = RootFolders.LocalNetwork; node.Nodes.Add(new TreeNode()); DiscoveryTreeView.Nodes.Add(node); node = new TreeNode("Global Discovery"); node.SelectedImageIndex = node.ImageIndex = ImageIndex.GlobalNetwork; node.Tag = RootFolders.GlobalDiscovery; node.Nodes.Add(new TreeNode()); DiscoveryTreeView.Nodes.Add(node); if (endpoints != null) { m_endpoints = endpoints; node = new TreeNode("Custom Discovery"); node.SelectedImageIndex = node.ImageIndex = ImageIndex.ClosedFolder; node.Tag = RootFolders.CustomDiscovery; TreeNode child = new TreeNode("<double click to add server>"); child.SelectedImageIndex = child.ImageIndex = ImageIndex.Add; child.Tag = RootFolders.Add; node.Nodes.Add(child); DiscoveryTreeView.Nodes.Add(node); foreach (ConfiguredEndpoint ce in m_endpoints.Endpoints) { child = new TreeNode(Utils.Format("{0}", ce.ToString())); child.SelectedImageIndex = child.ImageIndex = (ce.Description.SecurityMode == MessageSecurityMode.None && ce.EndpointUrl.Scheme != Utils.UriSchemeHttps) ? ImageIndex.InSecure : ImageIndex.Secure; child.Tag = ce; node.Nodes.Add(child); } } }
public EndpointDescription ShowDialog( IWin32Window owner, ConfiguredEndpointCollection endpoints, LocalDiscoveryServerMethods lds, GlobalDiscoveryServerMethods gds, QueryServersFilter filters) { this.DiscoveryControl.Initialize(endpoints, lds, gds, filters); if (base.ShowDialog(owner) != System.Windows.Forms.DialogResult.OK) { return(null); } return(DiscoveryControl.SelectedEndpoint); }
public MainForm(ApplicationInstance application) { InitializeComponent(); Icon = ClientUtils.GetAppIcon(); m_application = application; // get the configuration. m_configuration = m_application.ApplicationConfiguration.ParseExtension <GlobalDiscoveryClientConfiguration>(); // use suitable defaults if no configuration exists. if (m_configuration == null) { m_configuration = new GlobalDiscoveryClientConfiguration() { GlobalDiscoveryServerUrl = "opc.tcp://localhost:58810/GlobalDiscoveryServer", ExternalEditor = "notepad.exe" }; } m_filters = new QueryServersFilter(); m_identity = new UserIdentity(); m_gds = new GlobalDiscoveryServerMethods(m_application, m_configuration); m_gds.KeepAlive += GdsServer_KeepAlive; m_gds.ServerStatusChanged += GdsServer_StatusNotification; m_lds = new LocalDiscoveryServerMethods(m_application.ApplicationConfiguration); m_server = new ServerPushConfigurationMethods(m_application); m_server.KeepAlive += Server_KeepAlive; m_server.ServerStatusChanged += Server_StatusNotification; m_server.ConnectionStatusChanged += Server_ConnectionStatusChanged; RegistrationPanel.Initialize(m_gds, null, m_configuration); m_application.ApplicationConfiguration.CertificateValidator.CertificateValidation += CertificateValidator_CertificateValidation; UpdateStatus(true, DateTime.MinValue, "---"); UpdateGdsStatus(true, DateTime.MinValue, "---"); ShowPanel(Panel.None); SelectServerButton.Enabled = false; ServerStatusButton.Enabled = false; CertificateButton.Enabled = false; HttpsCertificateButton.Visible = false; TrustListButton.Enabled = false; HttpsTrustListButton.Visible = false; }
public void Initialize(GlobalDiscoveryServerMethods gds, ServerPushConfigurationMethods server, RegisteredApplication application, bool isHttps) { m_gds = gds; m_server = server; m_application = application; // display local trust list. if (application != null) { m_trustListStorePath = (isHttps) ? m_application.HttpsTrustListStorePath : m_application.TrustListStorePath; m_issuerListStorePath = (isHttps) ? m_application.HttpsIssuerListStorePath : m_application.IssuerListStorePath; CertificateStoreControl.Initialize(m_trustListStorePath, m_issuerListStorePath, null); MergeWithGdsButton.Enabled = !String.IsNullOrEmpty(m_trustListStorePath); } ApplyChangesButton.Enabled = false; }
public ViewServersOnNetworkDialog(GlobalDiscoveryServerMethods gds) { InitializeComponent(); Icon = ClientUtils.GetAppIcon(); ServersDataGridView.AutoGenerateColumns = false; m_gds = gds; m_dataset = new DataSet(); m_dataset.Tables.Add("Servers"); m_dataset.Tables[0].Columns.Add("RecordId", typeof(uint)); m_dataset.Tables[0].Columns.Add("ServerName", typeof(string)); m_dataset.Tables[0].Columns.Add("DiscoveryUrl", typeof(string)); m_dataset.Tables[0].Columns.Add("ServerCapabilities", typeof(string)); m_dataset.Tables[0].Columns.Add("ServerOnNetwork", typeof(ServerOnNetwork)); ServersDataGridView.DataSource = m_dataset.Tables[0]; }
public ViewApplicationRecordsDialog(GlobalDiscoveryServerMethods gds) { InitializeComponent(); Icon = ClientUtils.GetAppIcon(); ApplicationRecordDataGridView.AutoGenerateColumns = false; m_gds = gds; m_dataset = new DataSet(); m_dataset.Tables.Add("ApplicationRecords"); m_dataset.Tables[0].Columns.Add("ApplicationId", typeof(NodeId)); m_dataset.Tables[0].Columns.Add("ApplicationName", typeof(string)); m_dataset.Tables[0].Columns.Add("ApplicationType", typeof(ApplicationType)); m_dataset.Tables[0].Columns.Add("ProductUri", typeof(string)); m_dataset.Tables[0].Columns.Add("DiscoveryUrls", typeof(string)); m_dataset.Tables[0].Columns.Add("ServerCapabilities", typeof(string)); m_dataset.Tables[0].Columns.Add("ApplicationRecord", typeof(ApplicationRecordDataType)); ApplicationRecordDataGridView.DataSource = m_dataset.Tables[0]; }
public string ShowDialog(IWin32Window owner, GlobalDiscoveryServerMethods gds, IList <string> serverUrls) { m_gds = gds; ServersListBox.Items.Clear(); foreach (var serverUrl in serverUrls) { ServersListBox.Items.Add(serverUrl); } ServerUrlTextBox.Text = gds.EndpointUrl; UserNameCredentialsRB.Checked = true; OkButton.Enabled = Uri.IsWellFormedUriString(ServerUrlTextBox.Text.Trim(), UriKind.Absolute); if (base.ShowDialog(owner) != DialogResult.OK) { return(null); } return(ServerUrlTextBox.Text.Trim()); }
public async Task Initialize( GlobalDiscoveryClientConfiguration configuration, GlobalDiscoveryServerMethods gds, ServerPushConfigurationMethods server, RegisteredApplication application, bool isHttps) { m_configuration = configuration; m_gds = gds; m_server = server; m_application = application; m_certificate = null; m_certificatePassword = null; CertificateRequestTimer.Enabled = false; RequestProgressLabel.Visible = false; ApplyChangesButton.Enabled = false; CertificateControl.ShowNothing(); X509Certificate2 certificate = null; if (!isHttps) { if (server.Endpoint != null && server.Endpoint.Description.ServerCertificate != null) { certificate = new X509Certificate2(server.Endpoint.Description.ServerCertificate); } else if (application != null) { if (!String.IsNullOrEmpty(application.CertificatePublicKeyPath)) { string file = Utils.GetAbsoluteFilePath(application.CertificatePublicKeyPath, true, false, false); if (file != null) { certificate = new X509Certificate2(file); } } else if (!String.IsNullOrEmpty(application.CertificateStorePath)) { CertificateIdentifier id = new CertificateIdentifier { StorePath = application.CertificateStorePath }; id.StoreType = CertificateStoreIdentifier.DetermineStoreType(id.StorePath); id.SubjectName = application.CertificateSubjectName.Replace("localhost", Utils.GetHostName()); certificate = await id.Find(true); } } } else { if (application != null) { if (!String.IsNullOrEmpty(application.HttpsCertificatePublicKeyPath)) { string file = Utils.GetAbsoluteFilePath(application.HttpsCertificatePublicKeyPath, true, false, false); if (file != null) { certificate = new X509Certificate2(file); } } else { foreach (string disoveryUrl in application.DiscoveryUrl) { if (Uri.IsWellFormedUriString(disoveryUrl, UriKind.Absolute)) { Uri url = new Uri(disoveryUrl); CertificateIdentifier id = new CertificateIdentifier() { StoreType = CertificateStoreType.X509Store, StorePath = "CurrentUser\\UA_MachineDefault", SubjectName = "CN=" + url.DnsSafeHost }; certificate = await id.Find(); } } } } } if (certificate != null) { try { CertificateControl.Tag = certificate.Thumbprint; } catch (Exception) { MessageBox.Show( Parent, "The certificate does not appear to be valid. Please check configuration settings.", Parent.Text, MessageBoxButtons.OK, MessageBoxIcon.Error); certificate = null; } } WarningLabel.Visible = certificate == null; if (certificate != null) { m_certificate = certificate; CertificateControl.ShowValue(null, "Application Certificate", new CertificateWrapper() { Certificate = certificate }, true); } }