Esempio n. 1
0
        /// <summary>
        /// 启动HTTP服务
        /// </summary>
        /// <param name="registerServer">HTTP 注册管理服务</param>
        /// <param name="domains">域名信息集合</param>
        /// <param name="onStop">停止服务处理</param>
        /// <returns>是否启动成功</returns>
        public override bool Start(HttpRegister.Server registerServer, HttpRegister.Domain[] domains, Action onStop)
        {
            string path = AutoCSer.IO.File.FileNameToLower((this.path.fileNameToLower() ?? LoadCheckPath).pathSuffix());

            if (Directory.Exists(path) && Interlocked.CompareExchange(ref isStart, 1, 0) == 0)
            {
                pathIdentity   = PathCacheWatcher.Add(path);
                WorkPath       = path;
                RegisterServer = registerServer;
                this.domains   = domains;
                this.onStop   += onStop;
                if (Http.SocketBase.Config.IsResponseCacheControl)
                {
                    int clientCacheSeconds = this.clientCacheSeconds;
                    if (clientCacheSeconds == Http.Response.StaticFileCacheControlSeconds)
                    {
                        cacheControl = Http.Response.StaticFileCacheControl;
                    }
                    else if (clientCacheSeconds == 0)
                    {
                        cacheControl = Http.Response.ZeroAgeBytes;
                    }
                    else
                    {
                        cacheControl = ("public, max-age=" + clientCacheSeconds.toString()).getBytes();
                    }
                }
                createErrorResponse();
                return(true);
            }
            return(false);
        }
Esempio n. 2
0
 /// <summary>
 /// 启动HTTP服务
 /// </summary>
 /// <param name="registerServer">HTTP 注册管理服务</param>
 /// <param name="domains">域名信息集合</param>
 /// <param name="onStop">停止服务处理</param>
 /// <returns>是否启动成功</returns>
 public override bool Start(HttpRegister.Server registerServer, HttpRegister.Domain[] domains, Action onStop)
 {
     if (isStart == 0)
     {
         string domain = getLocationDomain();
         if (!string.IsNullOrEmpty(domain))
         {
             byte[] domainData = getDomainData(domain);
             if (Interlocked.CompareExchange(ref isStart, 1, 0) == 0)
             {
                 locationState  = is302 ? AutoCSer.Net.Http.ResponseState.Found302 : AutoCSer.Net.Http.ResponseState.MovedPermanently301;
                 locationDomain = sslLocationDomain = domainData;
                 string sslDomain = getSslLocationDomain();
                 if (!string.IsNullOrEmpty(sslDomain))
                 {
                     sslLocationDomain = getDomainData(domain);
                 }
                 RegisterServer = registerServer;
                 this.domains   = domains;
                 this.onStop   += onStop;
                 return(true);
             }
         }
     }
     return(false);
 }
Esempio n. 3
0
 /// <summary>
 /// 基于安全连接的 HTTP 服务
 /// </summary>
 /// <param name="server">HTTP 注册管理服务</param>
 /// <param name="domain">域名信息</param>
 internal SslServer(HttpRegister.Server server, Domain domain)
     : base(server, ref domain.SslHost, true, false)
 {
     if (SetCertificate(domain))
     {
         start();
     }
 }
Esempio n. 4
0
 /// <summary>
 /// HTTP服务
 /// </summary>
 /// <param name="server">HTTP 注册管理服务</param>
 /// <param name="host">TCP 服务端口信息</param>
 /// <param name="isSSL">是否安全服务</param>
 /// <param name="isStart">是否启动服务</param>
 internal Server(HttpRegister.Server server, ref HostPort host, bool isSSL, bool isStart = true)
 {
     this.RegisterServer = server;
     this.host           = host;
     IsSSL       = isSSL;
     DomainCount = 1;
     if (isStart)
     {
         start();
     }
 }
Esempio n. 5
0
        /// <summary>
        /// 启动HTTP服务
        /// </summary>
        /// <param name="registerServer">HTTP 注册管理服务</param>
        /// <param name="domains">域名信息集合</param>
        /// <param name="onStop">停止服务处理</param>
        /// <returns>是否启动成功</returns>
        public override bool Start(HttpRegister.Server registerServer, HttpRegister.Domain[] domains, Action onStop)
        {
            KeyValue <string[], string[]> rewrites = this.rewrites;

            rewritePaths      = new StateSearcher.AsciiSearcher <byte[]>(rewrites.Key, rewrites.Value.getArray(value => value.getBytes()), false);
            viewIndexs        = StateSearcher.AsciiBuilder.Create(views, false);
            viewSearcher      = new StateSearcher.AsciiSearcher(ref viewIndexs);
            callIndexs        = StateSearcher.AsciiBuilder.Create(calls, false);
            callSearcher      = new StateSearcher.AsciiSearcher(ref callIndexs);
            rewriteIndexs     = StateSearcher.AsciiBuilder.Create(viewRewrites, false);
            rewriteSearcher   = new StateSearcher.AsciiSearcher(ref rewriteIndexs);
            webSocketIndexs   = StateSearcher.AsciiBuilder.Create(webSockets, false);
            webSocketSearcher = new StateSearcher.AsciiSearcher(ref webSocketIndexs);
            if (base.Start(registerServer, domains, onStop))
            {
                if (WebConfig.IsHtmlLinkVersion)
                {
                    VersionFileWatcher.Add(this);
                }
                return(true);
            }
            return(false);
        }
Esempio n. 6
0
 /// <summary>
 /// 启动HTTP服务
 /// </summary>
 /// <param name="registerServer">HTTP 注册管理服务</param>
 /// <param name="domains">域名信息集合</param>
 /// <param name="onStop">停止服务处理</param>
 /// <returns>是否启动成功</returns>
 public abstract bool Start(HttpRegister.Server registerServer, HttpRegister.Domain[] domains, Action onStop);