123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- using System;
- using System.IO;
- using System.Net.Security;
- using System.Security.Cryptography.X509Certificates;
- using System.Threading.Tasks;
- using Emby.Common.Implementations.Net;
- using Emby.Server.Implementations.HttpServer;
- using MediaBrowser.Common.Net;
- using MediaBrowser.Controller;
- using MediaBrowser.Controller.Configuration;
- using MediaBrowser.Controller.Net;
- using MediaBrowser.Model.Cryptography;
- using MediaBrowser.Model.IO;
- using MediaBrowser.Model.Logging;
- using MediaBrowser.Model.Net;
- using MediaBrowser.Model.Serialization;
- using MediaBrowser.Model.System;
- using MediaBrowser.Model.Text;
- using ServiceStack.Text.Jsv;
- using SocketHttpListener.Primitives;
- namespace Emby.Server.Implementations
- {
- /// <summary>
- /// Class ServerFactory
- /// </summary>
- public static class HttpServerFactory
- {
- /// <summary>
- /// Creates the server.
- /// </summary>
- /// <returns>IHttpServer.</returns>
- public static IHttpServer CreateServer(IServerApplicationHost applicationHost,
- ILogManager logManager,
- IServerConfigurationManager config,
- INetworkManager networkmanager,
- IMemoryStreamFactory streamProvider,
- string serverName,
- string defaultRedirectpath,
- ITextEncoding textEncoding,
- ISocketFactory socketFactory,
- ICryptoProvider cryptoProvider,
- IJsonSerializer json,
- IXmlSerializer xml,
- IEnvironmentInfo environment,
- ICertificate certificate,
- IFileSystem fileSystem,
- bool enableDualModeSockets)
- {
- var logger = logManager.GetLogger("HttpServer");
- return new HttpListenerHost(applicationHost,
- logger,
- config,
- serverName,
- defaultRedirectpath,
- networkmanager,
- streamProvider,
- textEncoding,
- socketFactory,
- cryptoProvider,
- json,
- xml,
- environment,
- certificate,
- new StreamFactory(),
- GetParseFn,
- enableDualModeSockets,
- fileSystem);
- }
- private static Func<string, object> GetParseFn(Type propertyType)
- {
- return s => JsvReader.GetParseFn(propertyType)(s);
- }
- }
- public class StreamFactory : IStreamFactory
- {
- public Stream CreateNetworkStream(IAcceptSocket acceptSocket, bool ownsSocket)
- {
- var netSocket = (NetAcceptSocket)acceptSocket;
- return new SocketStream(netSocket.Socket, ownsSocket);
- }
- public Task AuthenticateSslStreamAsServer(Stream stream, ICertificate certificate)
- {
- var sslStream = (SslStream)stream;
- var cert = (Certificate)certificate;
- return sslStream.AuthenticateAsServerAsync(cert.X509Certificate);
- }
- public Stream CreateSslStream(Stream innerStream, bool leaveInnerStreamOpen)
- {
- return new SslStream(innerStream, leaveInnerStreamOpen);
- }
- }
- public class Certificate : ICertificate
- {
- public Certificate(X509Certificate x509Certificate)
- {
- X509Certificate = x509Certificate;
- }
- public X509Certificate X509Certificate { get; private set; }
- }
- }
|