public void OpenSubscriber() { try { if (IsListening()) { return; } log.InfoFormat("Opening subscriber endpoint at {0}", netTcpAddress); log.InfoFormat("Opening http subscriber endpoint at {0}", httpAddress); NotificationSubscriber notificationSubscriber = new NotificationSubscriber(); notificationSubscriber.IndicationReceived += OnIndication; CngKeyCreationParameters keyCreationParameters = new CngKeyCreationParameters(); keyCreationParameters.ExportPolicy = CngExportPolicies.AllowExport | CngExportPolicies.AllowPlaintextExport | CngExportPolicies.AllowPlaintextArchiving | CngExportPolicies.AllowArchiving; keyCreationParameters.KeyUsage = CngKeyUsages.AllUsages; X509CertificateCreationParameters configCreate = new X509CertificateCreationParameters(new X500DistinguishedName("CN=SolarWinds-SwqlStudio")); configCreate.EndTime = DateTime.Now.AddYears(1); configCreate.StartTime = DateTime.Now; using (CngKey cngKey = CngKey.Create(CngAlgorithm2.Rsa)) { X509Certificate2 certificate = cngKey.CreateSelfSignedCertificate(configCreate); ServiceHost host = new ServiceHost(notificationSubscriber, new Uri(netTcpAddress), new Uri(httpAddress)); host.Credentials.ServiceCertificate.Certificate = certificate; // SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectDistinguishedName, "CN=SolarWinds-Orion"); host.Open(); subscriberHosts.Add(host); } log.Info("Http Subscriber endpoint opened"); } catch (Exception ex) { log.ErrorFormat("Exception opening subscriber host with address {0}.\n{1}", httpAddress, ex); } foreach (ServiceHost serviceHost in subscriberHosts) { foreach (ChannelDispatcherBase channelDispatcher in serviceHost.ChannelDispatchers) { log.InfoFormat("Listening on {0}", channelDispatcher.Listener.Uri.AbsoluteUri); } } ListenerOpened?.Invoke(); }
public void OpenSubscriber() { try { if (IsListening()) return; log.InfoFormat("Opening subscriber endpoint at {0}", netTcpAddress); log.InfoFormat("Opening http subscriber endpoint at {0}", httpAddress); NotificationSubscriber notificationSubscriber = new NotificationSubscriber(); notificationSubscriber.IndicationReceived += OnIndication; CngKeyCreationParameters keyCreationParameters = new CngKeyCreationParameters(); keyCreationParameters.ExportPolicy = CngExportPolicies.AllowExport | CngExportPolicies.AllowPlaintextExport | CngExportPolicies.AllowPlaintextArchiving | CngExportPolicies.AllowArchiving; keyCreationParameters.KeyUsage = CngKeyUsages.AllUsages; X509CertificateCreationParameters configCreate = new X509CertificateCreationParameters(new X500DistinguishedName("CN=SolarWinds-SwqlStudio")); configCreate.EndTime = DateTime.Now.AddYears(1); configCreate.StartTime = DateTime.Now; using (CngKey cngKey = CngKey.Create(CngAlgorithm2.Rsa)) { X509Certificate2 certificate = cngKey.CreateSelfSignedCertificate(configCreate); ServiceHost host = new ServiceHost(notificationSubscriber, new Uri(netTcpAddress), new Uri(httpAddress)); host.Credentials.ServiceCertificate.Certificate = certificate; // SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectDistinguishedName, "CN=SolarWinds-Orion"); host.Open(); subscriberHosts.Add(host); } log.Info("Http Subscriber endpoint opened"); } catch (Exception ex) { log.ErrorFormat("Exception opening subscriber host with address {0}.\n{1}", httpAddress, ex); } foreach (ServiceHost serviceHost in subscriberHosts) { foreach (ChannelDispatcherBase channelDispatcher in serviceHost.ChannelDispatchers) { log.InfoFormat("Listening on {0}", channelDispatcher.Listener.Uri.AbsoluteUri); } } ListenerOpened?.Invoke(); }