/// <summary>
        /// Starts listening at the specified port.
        /// </summary>
        public void Start()
        {
            Startup.Listener = this;
            m_host           = new WebHostBuilder();
#if NETSTANDARD2_0
            HttpsConnectionAdapterOptions httpsOptions = new HttpsConnectionAdapterOptions();
            httpsOptions.CheckCertificateRevocation = false;
            httpsOptions.ClientCertificateMode      = ClientCertificateMode.NoCertificate;
            httpsOptions.ServerCertificate          = m_serverCert;
            httpsOptions.SslProtocols = SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12;
            m_host.UseKestrel(options =>
            {
                options.Listen(IPAddress.Any, m_uri.Port, listenOptions =>
                {
                    listenOptions.NoDelay = true;
                    listenOptions.UseHttps(httpsOptions);
                });
            });
#else
            HttpsConnectionFilterOptions httpsOptions = new HttpsConnectionFilterOptions();
            httpsOptions.CheckCertificateRevocation = false;
            httpsOptions.ClientCertificateMode      = ClientCertificateMode.NoCertificate;
            httpsOptions.ServerCertificate          = m_serverCert;
            httpsOptions.SslProtocols = SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12;
            m_host.UseKestrel(options =>
            {
                options.NoDelay = true;
                options.UseHttps(httpsOptions);
            });
#endif
            m_host.UseContentRoot(Directory.GetCurrentDirectory());
            m_host.UseStartup <Startup>();
            m_host.Start(Utils.ReplaceLocalhost(m_uri.ToString()));
        }
Exemple #2
0
        internal static IWebHost CreateWebHost(HttpsConnectionFilterOptions httpsOptions)
        {
            var webHostBuilder = new WebHostBuilder()
                                 .UseLoggerFactory(_loggerFactory)
                                 .UseConfiguration(Configuration)
                                 .UseKestrel(options => {
                if (httpsOptions != null)
                {
                    options.UseHttps(httpsOptions);
                }
                //options.UseConnectionLogging();
            })
                                 .UseContentRoot(Directory.GetCurrentDirectory())
                                 .UseStartup <Startup>();

            var webHost         = webHostBuilder.Build();
            var serverAddresses = webHost.ServerFeatures.Get <IServerAddressesFeature>();

            string pipeName = _startupOptions.WriteServerUrlsToPipe;

            if (pipeName != null)
            {
                NamedPipeClientStream pipe;
                try {
                    pipe = new NamedPipeClientStream(".", pipeName, PipeDirection.Out);
                    pipe.Connect(10000);
                } catch (IOException ex) {
                    _logger.LogCritical(0, ex, Resources.Critical_InvalidPipeHandle, pipeName);
                    throw;
                } catch (System.TimeoutException ex) {
                    _logger.LogCritical(0, ex, Resources.Critical_PipeConnectTimeOut, pipeName);
                    throw;
                }

                var applicationLifetime = webHost.Services.GetService <IApplicationLifetime>();
                applicationLifetime.ApplicationStarted.Register(() => Task.Run(() => {
                    using (pipe) {
                        string serverUriStr = JsonConvert.SerializeObject(serverAddresses.Addresses);
                        _logger.LogTrace(Resources.Trace_ServerUrlsToPipeBegin, pipeName, Environment.NewLine, serverUriStr);

                        var serverUriData = Encoding.UTF8.GetBytes(serverUriStr);
                        pipe.Write(serverUriData, 0, serverUriData.Length);
                        pipe.Flush();
                    }

                    _logger.LogTrace(Resources.Trace_ServerUrlsToPipeDone, pipeName);
                }));
            }

            return(webHost);
        }
Exemple #3
0
        public static IWebHost CreateWebHost(HttpsConnectionFilterOptions httpsOptions) {

            var webHostBuilder = new WebHostBuilder()
                .UseLoggerFactory(_loggerFactory)
                .UseConfiguration(Configuration)
                .UseKestrel(options => {
                    if (httpsOptions != null) {
                        options.UseHttps(httpsOptions);
                    }
                    //options.UseConnectionLogging();
                })
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseStartup<Startup>();

            var webHost = webHostBuilder.Build();
            var serverAddresses = webHost.ServerFeatures.Get<IServerAddressesFeature>();

            string pipeName = _startupOptions.WriteServerUrlsToPipe;
            if (pipeName != null) {
                NamedPipeClientStream pipe;
                try {
                    pipe = new NamedPipeClientStream(".", pipeName, PipeDirection.Out);
                    pipe.Connect(10000);
                } catch (IOException ex) {
                    _logger.LogCritical(0, ex, Resources.Critical_InvalidPipeHandle, pipeName);
                    throw;
                } catch (TimeoutException ex) {
                    _logger.LogCritical(0, ex, Resources.Critical_PipeConnectTimeOut, pipeName);
                    throw;
                }

                var applicationLifetime = webHost.Services.GetService<IApplicationLifetime>();
                applicationLifetime.ApplicationStarted.Register(() => Task.Run(() => {
                    using (pipe) {
                        string serverUriStr = JsonConvert.SerializeObject(serverAddresses.Addresses);
                        _logger.LogTrace(Resources.Trace_ServerUrlsToPipeBegin, pipeName, Environment.NewLine, serverUriStr);

                        var serverUriData = Encoding.UTF8.GetBytes(serverUriStr);
                        pipe.Write(serverUriData, 0, serverUriData.Length);
                        pipe.Flush();
                    }

                    _logger.LogTrace(Resources.Trace_ServerUrlsToPipeDone, pipeName);
                }));
            }

            return webHost;
        }
Exemple #4
0
        public static void Main(string[] args)
        {
            var configuration = new ConfigurationBuilder()
                                .AddEnvironmentVariables(prefix: "ASPNETCORE_")
                                .Build();
            var host = new WebHostBuilder()
                       .UseKestrel(options =>
            {
                var httpsOptions = new HttpsConnectionFilterOptions
                {
                    ServerCertificate = new X509Certificate2("SimpleIdServer.pfx")
                };
                options.UseHttps(httpsOptions);
            })
                       .UseIISIntegration()
                       .UseContentRoot(Directory.GetCurrentDirectory())
                       .UseConfiguration(configuration)
                       .UseStartup <Startup>()
                       .Build();

            host.Run();
        }
Exemple #5
0
        public static void Main(string[] args, IApiCallbacks callbacks)
        {
            Callbacks = callbacks;

            var host = new WebHostBuilder()
                       .UseKestrel(options =>
            {
                var sslOps = new HttpsConnectionFilterOptions();
                sslOps.ClientCertificateMode       = ClientCertificateMode.RequireCertificate;
                sslOps.ClientCertificateValidation = CheckClientCertificateLogic.CheckClientCertificate;
                sslOps.ServerCertificate           = new X509Certificate2(@"C:\Repos\selly-uob\client2.pfx", "selly");

                options.UseHttps(sslOps);
            })
                       .UseUrls("https://client2:5002")
                       .UseContentRoot(Directory.GetCurrentDirectory())
                       .UseIISIntegration()
                       .UseStartup <Startup>()
                       .UseApplicationInsights()
                       .Build();

            host.Run();
        }
Exemple #6
0
        public static void Main(string[] args, IApiCallbacks callbacks, IApiConfiguration configuration)
        {
            _callbacks     = callbacks;
            _configuration = configuration;

            var host = new WebHostBuilder()
                       .UseKestrel(options =>
            {
                var sslOps = new HttpsConnectionFilterOptions();
                sslOps.ClientCertificateMode       = ClientCertificateMode.AllowCertificate;
                sslOps.ClientCertificateValidation = CheckClientCertificateLogic.CheckClientCertificate;
                sslOps.ServerCertificate           = new X509Certificate2(Conf.CertificatePath, Conf.CertificatePassword);
                options.UseHttps(sslOps);
            })
                       .UseUrls(Conf.Endpoint)
                       .UseContentRoot(Directory.GetCurrentDirectory())
                       .UseIISIntegration()
                       .UseStartup <Startup>()
                       .UseApplicationInsights()
                       .Build();

            host.Run();
        }
Exemple #7
0
        public static void Main(string[] args)
        {
            // To launch the application : dotnet run --server.urls=http://*:5000
            var configuration = new ConfigurationBuilder()
                                .AddCommandLine(args)
                                .AddEnvironmentVariables(prefix: "ASPNETCORE_")
                                .Build();
            var host = new WebHostBuilder()
                       .UseKestrel(options =>
            {
                var httpsOptions = new HttpsConnectionFilterOptions
                {
                    ServerCertificate = new X509Certificate2("SimpleIdServer.pfx")
                };
                options.UseHttps(httpsOptions);
            })
                       .UseContentRoot(Directory.GetCurrentDirectory())
                       .UseConfiguration(configuration)
                       .UseStartup <Startup>()
                       .Build();

            host.Run();
        }
        /// <summary>
        /// Starts listening at the specified port.
        /// </summary>
        public void Start()
        {
            Startup.Listener = this;
           
            m_host = new WebHostBuilder();

            HttpsConnectionFilterOptions httpsOptions = new HttpsConnectionFilterOptions();
            httpsOptions.CheckCertificateRevocation = false;
            httpsOptions.ClientCertificateMode = ClientCertificateMode.NoCertificate;
            httpsOptions.ServerCertificate = m_serverCert;
            httpsOptions.SslProtocols = SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12;

            m_host.UseKestrel(options =>
            {
                options.NoDelay = true;
                options.UseHttps(httpsOptions);
            });

            m_host.UseContentRoot(Directory.GetCurrentDirectory());
            m_host.UseStartup<Startup>();
            m_host.Build();

            m_host.Start(Utils.ReplaceLocalhost(m_uri.ToString()));
        }
Exemple #9
0
        public static IApplicationBuilder UseKestrelHttps(this IApplicationBuilder app, HttpsConnectionFilterOptions options)
        {
            var serverInfo = app.ServerFeatures.Get <IKestrelServerInformation>();

            if (serverInfo == null)
            {
                return(app);
            }

            var prevFilter = serverInfo.ConnectionFilter ?? new NoOpConnectionFilter();

            serverInfo.ConnectionFilter = new HttpsConnectionFilter(options, prevFilter);

            return(app);
        }
Exemple #10
0
        public static void Main(string[] args)
        {
            var config = new ConfigurationBuilder()
                         .AddCommandLine(args)
                         .Build();

            string          startUpClassString = Environment.GetEnvironmentVariable("ANCMTestStartupClassName");
            IWebHostBuilder builder            = null;

            if (!string.IsNullOrEmpty(startUpClassString))
            {
                if (startUpClassString == "StartupHTTPS")
                {
                    // load .\testresources\testcert.pfx
                    string pfxPassword = "******";
                    if (File.Exists(@".\TestResources\testcert.pfx"))
                    {
                        _x509Certificate2 = new X509Certificate2(@".\TestResources\testcert.pfx", pfxPassword);
                    }
                    else
                    {
                        throw new Exception(@"Certificate file not found: .\TestResources\testcert.pfx of which password should " + pfxPassword);
                    }

                    builder = new WebHostBuilder()
                              .UseConfiguration(config)
                              .UseIISIntegration()
                              .UseKestrel(options =>
                    {
                        HttpsConnectionFilterOptions httpsoptions = new HttpsConnectionFilterOptions();
                        httpsoptions.ServerCertificate            = _x509Certificate2;
                        httpsoptions.ClientCertificateMode        = ClientCertificateMode.RequireCertificate;
                        httpsoptions.CheckCertificateRevocation   = false;
                        options.UseHttps(httpsoptions);
                    })
                              .UseStartup <Startup>();
                }
                else if (startUpClassString == "StartupCompressionCaching")
                {
                    builder = new WebHostBuilder()
                              .UseConfiguration(config)
                              .UseIISIntegration()
                              .UseContentRoot(Directory.GetCurrentDirectory())
                              .UseStartup <StartupCompressionCaching>();
                }
                else if (startUpClassString == "StartupNoCompressionCaching")
                {
                    StartupCompressionCaching.CompressionMode = false;
                    builder = new WebHostBuilder()
                              .UseConfiguration(config)
                              .UseIISIntegration()
                              .UseContentRoot(Directory.GetCurrentDirectory())
                              .UseStartup <StartupCompressionCaching>();
                }
                else if (startUpClassString == "StartupHelloWorld")
                {
                    builder = new WebHostBuilder()
                              .UseConfiguration(config)
                              .UseIISIntegration()
                              .UseStartup <StartupHelloWorld>();
                }
                else if (startUpClassString == "StartupNtlmAuthentication")
                {
                    builder = new WebHostBuilder()
                              .UseConfiguration(config)
                              .UseIISIntegration()
                              .UseStartup <StartupNtlmAuthentication>();
                }
                else
                {
                    throw new System.Exception("Invalid startup class name : " + startUpClassString);
                }
            }
            else
            {
                builder = new WebHostBuilder()
                          .UseConfiguration(config)
                          .UseIISIntegration()
                          .UseStartup <Startup>();
            }

            string startupDelay = Environment.GetEnvironmentVariable("ANCMTestStartUpDelay");

            if (!string.IsNullOrEmpty(startupDelay))
            {
                Startup.SleeptimeWhileStarting = Convert.ToInt32(startupDelay);
            }

            if (Startup.SleeptimeWhileStarting != 0)
            {
                Thread.Sleep(Startup.SleeptimeWhileStarting);
            }

            string shutdownDelay = Environment.GetEnvironmentVariable("ANCMTestShutdownDelay");

            if (!string.IsNullOrEmpty(shutdownDelay))
            {
                Startup.SleeptimeWhileClosing = Convert.ToInt32(shutdownDelay);
            }

            // Switch between Kestrel and WebListener for different tests. Default to Kestrel for normal app execution.
            if (string.Equals(builder.GetSetting("server"), "Microsoft.AspNetCore.Server.WebListener", System.StringComparison.Ordinal))
            {
                if (string.Equals(builder.GetSetting("environment") ??
                                  Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"),
                                  "NtlmAuthentication", System.StringComparison.Ordinal))
                {
                    // Set up NTLM authentication for WebListener as follows.
                    // For IIS and IISExpress use inetmgr to setup NTLM authentication on the application or
                    // modify the applicationHost.config to enable NTLM.
                    builder.UseWebListener(options =>
                    {
                        options.ListenerSettings.Authentication.AllowAnonymous = true;
                        options.ListenerSettings.Authentication.Schemes        =
                            AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM;
                    });
                }
                else
                {
                    builder.UseWebListener();
                }
            }
            else
            {
                builder.UseKestrel();
            }

            var host = builder.Build();

            AappLifetime = (IApplicationLifetime)host.Services.GetService(typeof(IApplicationLifetime));

            string gracefulShutdownDelay = Environment.GetEnvironmentVariable("GracefulShutdownDelayTime");

            if (!string.IsNullOrEmpty(gracefulShutdownDelay))
            {
                GracefulShutdownDelayTime = Convert.ToInt32(gracefulShutdownDelay);
            }

            AappLifetime.ApplicationStarted.Register(
                () => Thread.Sleep(1000)
                );
            AappLifetime.ApplicationStopping.Register(
                () => Thread.Sleep(Startup.SleeptimeWhileClosing / 2)
                );
            AappLifetime.ApplicationStopped.Register(
                () => {
                Thread.Sleep(Startup.SleeptimeWhileClosing / 2);
                Startup.SleeptimeWhileClosing = 0;       // All of SleeptimeWhileClosing is used now
            }
                );
            try
            {
                host.Run();
            }
            catch
            {
                // ignore
            }

            if (Startup.SleeptimeWhileClosing != 0)
            {
                Thread.Sleep(Startup.SleeptimeWhileClosing);
            }
        }
Exemple #11
0
        /// <summary>
        /// Configure Kestrel to use HTTPS.
        /// </summary>
        /// <param name="options">
        /// The Microsoft.AspNetCore.Server.KestrelServerOptions to configure.
        /// </param>
        /// <param name="httpsOptions">
        /// Options to configure HTTPS.
        /// </param>
        /// <returns>
        /// The Microsoft.AspNetCore.Server.KestrelServerOptions.
        /// </returns>
        public static KestrelServerOptions UseHttps(this KestrelServerOptions options, HttpsConnectionFilterOptions httpsOptions)
        {
            var prevFilter = options.ConnectionFilter ?? new NoOpConnectionFilter();

            options.ConnectionFilter = new HttpsConnectionFilter(httpsOptions, prevFilter);
            return(options);
        }