/// <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); }
/// <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); }
/// <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(); } }
/// <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(); } }
/// <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); }
/// <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);