Пример #1
0
 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;
 }
Пример #2
0
        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));
        }
Пример #3
0
        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;
        }
Пример #4
0
        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);
                }
            }
        }