public HtcHttpContext(HttpContext context, HttpServerInfo serverInfo) { Request = new HttpRequestContext(context.Request); Response = new HttpResponseContext(context.Response); Connection = new HttpConnectionContext(context.Connection); ServerInfo = new BasicServerInfo(serverInfo); ErrorMessageManager = serverInfo.ErrorMessageManager; }
private void RegisterErrorPages() { var path400 = Path.Combine(_errorPagesPath, "400.html"); var path401 = Path.Combine(_errorPagesPath, "401.html"); var path403 = Path.Combine(_errorPagesPath, "403.html"); var path404 = Path.Combine(_errorPagesPath, "404.html"); var path500 = Path.Combine(_errorPagesPath, "500.html"); var path501 = Path.Combine(_errorPagesPath, "501.html"); var path502 = Path.Combine(_errorPagesPath, "502.html"); var path503 = Path.Combine(_errorPagesPath, "503.html"); if (!File.Exists(path400)) { File.WriteAllText(path400, IoUtils.Default400); } if (!File.Exists(path401)) { File.WriteAllText(path401, IoUtils.Default401); } if (!File.Exists(path403)) { File.WriteAllText(path403, IoUtils.Default403); } if (!File.Exists(path404)) { File.WriteAllText(path404, IoUtils.Default404); } if (!File.Exists(path500)) { File.WriteAllText(path500, IoUtils.Default500); } if (!File.Exists(path501)) { File.WriteAllText(path501, IoUtils.Default501); } if (!File.Exists(path502)) { File.WriteAllText(path502, IoUtils.Default502); } if (!File.Exists(path503)) { File.WriteAllText(path503, IoUtils.Default503); } ErrorMessagesManager.RegisterDefaultPage(new FilePageMessage(path400, 400)); ErrorMessagesManager.RegisterDefaultPage(new FilePageMessage(path401, 401)); ErrorMessagesManager.RegisterDefaultPage(new FilePageMessage(path403, 403)); ErrorMessagesManager.RegisterDefaultPage(new FilePageMessage(path404, 404)); ErrorMessagesManager.RegisterDefaultPage(new FilePageMessage(path500, 500)); ErrorMessagesManager.RegisterDefaultPage(new FilePageMessage(path501, 501)); ErrorMessagesManager.RegisterDefaultPage(new FilePageMessage(path502, 502)); ErrorMessagesManager.RegisterDefaultPage(new FilePageMessage(path503, 503)); }
public HttpServerInfo(IEnumerable <string> hosts, IEnumerable <string> domains, string root, bool useSsl, string certificate, string password, HttpLocationManager httpLocationManager, ErrorMessagesManager errorMessageManager) { var tempHosts = (from host in hosts select host.Split(":") into rawSplit let address = IPAddress.Parse(rawSplit[0]) let port = int.Parse(rawSplit[1]) select new IPEndPoint(address, port)).ToList(); Hosts = tempHosts.AsReadOnly(); Domains = domains.ToList().AsReadOnly(); Root = root; UseSsl = useSsl; Certificate = certificate; Password = password; LocationManager = httpLocationManager; ErrorMessageManager = errorMessageManager; }
private void CreateServers() { var servers = EngineConfig.GetValue("Servers", StringComparison.CurrentCultureIgnoreCase)?.Value <JArray>(); if (servers == null) { return; } foreach (var jToken in servers) { var server = (JObject)jToken; var hosts = GetValues <string>(server, "Hosts"); var domains = GetValues <string>(server, "Domains"); var root = IoUtils.ReplacePathTags(GetValue <string>(server, "Root")); if (!Directory.Exists(root)) { Directory.CreateDirectory(root); } var useSsl = GetValue <bool>(server, "SSL"); string certificate = null; string password = null; if (useSsl) { certificate = IoUtils.ReplacePathTags(GetValue <string>(server, "Certificate")); password = GetValue <string>(server, "Password"); } var locationManager = ContainsKey(server, "Locations") ? new HttpLocationManager(GetValue <JToken>(server, "Default"), GetValue <JObject>(server, "Locations")) : new HttpLocationManager(GetValue <JToken>(server, "Default"), null); var errorMessagesManager = new ErrorMessagesManager(); if (ContainsKey(server, "ErrorPages")) { foreach (var(key, value) in GetValue <JObject>(server, "ErrorPages")) { if (int.TryParse(key, out var pageStatusCode)) { errorMessagesManager.RegisterOverridePage(new FilePageMessage(value.Value <string>(), pageStatusCode)); } } } var serverInfo = new HttpServerInfo(hosts.AsReadOnly(), domains, root, useSsl, certificate, password, locationManager, errorMessagesManager); ServersInfo.Add(serverInfo); foreach (var domain in domains) { // ! ISSUE ! Need future fix, for decoding the domain between ports if (DomainServers.ContainsKey(domain)) { continue; } DomainServers.Add(domain, serverInfo); } } }