/// <summary>
        /// Returns list of GDS servers known to the LDS.
        /// </summary>
        /// <param name="lds">The LDS to use.</param>
        /// <returns>
        /// TRUE if successful; FALSE otherwise.
        /// </returns>
        public List <string> GetDefaultGdsUrls(LocalDiscoveryServerClient lds)
        {
            List <string> gdsUrls = new List <string>();

            try
            {
                DateTime lastResetTime;

                if (lds == null)
                {
                    lds = new LocalDiscoveryServerClient(Configuration);
                }

                var servers = lds.FindServersOnNetwork(0, 1000, out lastResetTime);

                foreach (var server in servers)
                {
                    if (server.ServerCapabilities != null && server.ServerCapabilities.Contains(ServerCapability.GlobalDiscoveryServer))
                    {
                        gdsUrls.Add(server.DiscoveryUrl);
                    }
                }
            }
            catch (Exception exception)
            {
                Utils.LogError(exception, "Unexpected error connecting to LDS");
            }

            return(gdsUrls);
        }
Exemple #2
0
        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 GlobalDiscoveryServerClient(m_application, m_configuration.GlobalDiscoveryServerUrl);
            m_gds.KeepAlive                   += GdsServer_KeepAlive;
            m_gds.ServerStatusChanged         += GdsServer_StatusNotification;
            m_lds                              = new LocalDiscoveryServerClient(m_application.ApplicationConfiguration);
            m_server                           = new ServerPushConfigurationClient(m_application);
            m_server.AdminCredentialsRequired += Server_AdminCredentialsRequired;
            m_server.KeepAlive                += Server_KeepAlive;
            m_server.ServerStatusChanged      += Server_StatusNotification;
            m_server.ConnectionStatusChanged  += Server_ConnectionStatusChanged;

            RegistrationPanel.Initialize(m_gds, m_server, null, m_configuration);

            m_application.ApplicationConfiguration.CertificateValidator.CertificateValidation += CertificateValidator_CertificateValidation;
            UpdateStatus(true, DateTime.MinValue, "---");
            UpdateGdsStatus(true, DateTime.MinValue, "---");
            UpdateMainFormHeader();

            ShowPanel(Panel.None);


            SelectServerButton.Enabled     = false;
            ServerStatusButton.Enabled     = false;
            CertificateButton.Enabled      = false;
            HttpsCertificateButton.Visible = false;
            TrustListButton.Enabled        = false;
            HttpsTrustListButton.Visible   = false;
        }
        /// <summary>
        ///  Returns list of servers known to the LDS, excluding GDS servers.
        /// </summary>
        /// <param name="lds">The LDS to use.</param>
        /// <returns>
        /// TRUE if successful; FALSE otherwise.
        /// </returns>
        public List <string> GetDefaultServerUrls(LocalDiscoveryServerClient lds)
        {
            List <string> serverUrls = new List <string>();

            try
            {
                DateTime lastResetTime;

                if (lds == null)
                {
                    lds = new LocalDiscoveryServerClient(this.Application.ApplicationConfiguration);
                }

                var servers = lds.FindServersOnNetwork(0, 1000, out lastResetTime);

                foreach (var server in servers)
                {
                    if (server.ServerCapabilities != null)
                    {
                        // ignore GDS and LDS servers
                        if (server.ServerCapabilities.Contains(ServerCapability.GlobalDiscoveryServer) ||
                            server.ServerCapabilities.Contains(ServerCapability.LocalDiscoveryServer))
                        {
                            continue;
                        }
                    }
                    serverUrls.Add(server.DiscoveryUrl);
                }
            }
            catch (Exception exception)
            {
                Utils.Trace(exception, "Unexpected error connecting to LDS");
            }

            return(serverUrls);
        }