Example #1
0
        private void ConfigureKestrel(KestrelServerOptions options)
        {
            var ipEndPointList = new List <IPEndPointConfig>();

            foreach (var site in _sites)
            {
                foreach (string host in site.Config.Hosts)
                {
                    string[] hostData  = host.Split(":", 2);
                    string   ipAddress = hostData[0];
                    int      port      = int.Parse(hostData[1]);

                    if (TryGetIPEndPoint(ipEndPointList, ipAddress, port, out var endPoint))
                    {
                        foreach (var sslConfig in site.Config.SslConfigs)
                        {
                            endPoint.AddCertificate(sslConfig.GetCertificate());
                        }
                    }
                    else
                    {
                        endPoint = new IPEndPointConfig(ipAddress, port);
                        foreach (var sslConfig in site.Config.SslConfigs)
                        {
                            endPoint.AddCertificate(sslConfig.GetCertificate());
                        }

                        ipEndPointList.Add(endPoint);
                    }
                }
            }

            foreach (var endPoint in ipEndPointList)
            {
                options.Listen(endPoint.IPAddress, endPoint.Port, listenOptions => {
                    if (endPoint.Certificates.Count > 0)
                    {
                        Logger.LogInfo($"Listening https on '{endPoint.IPAddress}:{endPoint.Port}'");
                        foreach (var certificate in endPoint.Certificates)
                        {
                            listenOptions.UseHttps(certificate);
                        }
                    }
                    else
                    {
                        Logger.LogInfo($"Listening http on '{endPoint.IPAddress}:{endPoint.Port}'");
                    }
                });
            }
        }
Example #2
0
        private static bool TryGetIPEndPoint(IEnumerable <IPEndPointConfig> list, string address, int port, out IPEndPointConfig config)
        {
            foreach (var ipEndPointConfig in list)
            {
                if (!ipEndPointConfig.Equals(address, port))
                {
                    continue;
                }
                config = ipEndPointConfig;
                return(true);
            }

            config = null;
            return(false);
        }