示例#1
0
		public RtmpServer(RtmpEndpoint endpoint) {
			_connections = new Hashtable();
			_socketListeners = new ArrayList();
			_endpoint = endpoint;
			_rtmpHandler = new RtmpHandler(endpoint);

			try {
				if (endpoint.ChannelDefinition.Properties.KeystoreFile != null) {

					FileSystemResource fsr = new FileSystemResource(endpoint.ChannelDefinition.Properties.KeystoreFile);
					if (fsr.Exists) {
						if (endpoint.ChannelDefinition.Properties.KeystorePassword != null)
							_serverCertificate = new X509Certificate2(fsr.File.FullName, endpoint.ChannelDefinition.Properties.KeystorePassword);
						else
							_serverCertificate = X509Certificate.CreateFromCertFile(fsr.File.FullName);
						log.Info(string.Format("Certificate issued to {0} and is valid from {1} until {2}.", _serverCertificate.Subject, _serverCertificate.GetEffectiveDateString(), _serverCertificate.GetExpirationDateString()));
					} else
						log.Error("Certificate file not found");
				} else {
					if (endpoint.ChannelDefinition.Properties.ServerCertificate != null) {
						StoreName storeName = (StoreName)Enum.Parse(typeof(StoreName), endpoint.ChannelDefinition.Properties.ServerCertificate.StoreName, false);
						StoreLocation storeLocation = (StoreLocation)Enum.Parse(typeof(StoreLocation), endpoint.ChannelDefinition.Properties.ServerCertificate.StoreLocation, false);
						X509FindType x509FindType = (X509FindType)Enum.Parse(typeof(X509FindType), endpoint.ChannelDefinition.Properties.ServerCertificate.X509FindType, false);
						X509Store store = new X509Store(storeName, storeLocation);
						store.Open(OpenFlags.ReadOnly);
						X509Certificate2Collection certificateCollection = store.Certificates.Find(x509FindType, endpoint.ChannelDefinition.Properties.ServerCertificate.FindValue, false);
						X509Certificate2Enumerator enumerator = certificateCollection.GetEnumerator();
						if (enumerator.MoveNext()) {
							_serverCertificate = enumerator.Current;
							log.Info(string.Format("Certificate issued to {0} and is valid from {1} until {2}.", _serverCertificate.Subject, _serverCertificate.GetEffectiveDateString(), _serverCertificate.GetExpirationDateString()));
						} else
							log.Error("Certificate not found");
					}
				}
			} catch (Exception ex) {
				log.Error("Error loading certificate.", ex);
			}
		}
示例#2
0
		internal WebScope(RtmpEndpoint endpoint, IGlobalScope globalScope, ApplicationConfiguration appConfig)
			: base(null) {
			_endpoint = endpoint;
			_appConfig = appConfig;
			base.Parent = globalScope;
		}