diff --git a/BTCPayServer/Hosting/Startup.cs b/BTCPayServer/Hosting/Startup.cs index c2230ea7b..8d7b7d050 100644 --- a/BTCPayServer/Hosting/Startup.cs +++ b/BTCPayServer/Hosting/Startup.cs @@ -167,40 +167,53 @@ namespace BTCPayServer.Hosting bool hasCertPath = !String.IsNullOrEmpty(httpsCertificateFilePath); services.Configure(kestrel => { - kestrel.Limits.MaxRequestLineSize = 8_192 * 10 * 5; // Around 500K, transactions passed in URI should not be bigger than this - }); - if (hasCertPath || useDefaultCertificate) - { - var bindAddress = Configuration.GetOrDefault("bind", IPAddress.Any); - int bindPort = Configuration.GetOrDefault("port", 443); + kestrel.Limits.MaxRequestLineSize = + 8_192 * 10 * 5; // Around 500K, transactions passed in URI should not be bigger than this - services.Configure(kestrel => + var bindAddress = Configuration.GetOrDefault("bind", null); + int? bindPort = Configuration.GetOrDefault("port", -1); + bindPort = bindPort == -1 ? null : bindPort; + if (hasCertPath || useDefaultCertificate) { + bindAddress ??= IPAddress.Any; + bindPort ??= 443; if (hasCertPath && !File.Exists(httpsCertificateFilePath)) { // Note that by design this is a fatal error condition that will cause the process to exit. - throw new ConfigException($"The https certificate file could not be found at {httpsCertificateFilePath}."); - } - if (hasCertPath && useDefaultCertificate) - { - throw new ConfigException($"Conflicting settings: if HttpsUseDefaultCertificate is true, HttpsCertificateFilePath should not be used"); + throw new ConfigException( + $"The https certificate file could not be found at {httpsCertificateFilePath}."); } - kestrel.Listen(bindAddress, bindPort, l => + if (hasCertPath && useDefaultCertificate) { - if (hasCertPath) + throw new ConfigException( + $"Conflicting settings: if HttpsUseDefaultCertificate is true, HttpsCertificateFilePath should not be used"); + } + } + + if (bindAddress is not null && bindPort is not null) + { + + kestrel.Listen(bindAddress, bindPort.Value, l => + { + if (hasCertPath || useDefaultCertificate) { - Logs.Configuration.LogInformation($"Using HTTPS with the certificate located in {httpsCertificateFilePath}."); - l.UseHttps(httpsCertificateFilePath, Configuration.GetOrDefault("HttpsCertificateFilePassword", null)); - } - else - { - Logs.Configuration.LogInformation($"Using HTTPS with the default certificate"); - l.UseHttps(); + if (hasCertPath) + { + Logs.Configuration.LogInformation( + $"Using HTTPS with the certificate located in {httpsCertificateFilePath}."); + l.UseHttps(httpsCertificateFilePath, + Configuration.GetOrDefault("HttpsCertificateFilePassword", null)); + } + else + { + Logs.Configuration.LogInformation($"Using HTTPS with the default certificate"); + l.UseHttps(); + } } }); - }); - } + } + }); } public void Configure( IApplicationBuilder app, diff --git a/BTCPayServer/Properties/launchSettings.json b/BTCPayServer/Properties/launchSettings.json index 257a0b014..b5a82576f 100644 --- a/BTCPayServer/Properties/launchSettings.json +++ b/BTCPayServer/Properties/launchSettings.json @@ -32,7 +32,7 @@ "BTCPAY_CHEATMODE": "true", "BTCPAY_EXPLORERPOSTGRES": "User ID=postgres;Include Error Detail=true;Host=127.0.0.1;Port=39372;Database=nbxplorer" }, - "applicationUrl": "http://0.0.0.0:14142/" + "applicationUrl": "http://localhost:14142/" }, "Bitcoin-HTTPS": { "commandName": "Project", @@ -70,7 +70,7 @@ "BTCPAY_CHEATMODE": "true", "BTCPAY_EXPLORERPOSTGRES": "User ID=postgres;Include Error Detail=true;Host=127.0.0.1;Port=39372;Database=nbxplorer" }, - "applicationUrl": "https://0.0.0.0:14142/" + "applicationUrl": "https://localhost:14142/" }, "Altcoins-HTTPS": { "commandName": "Project", @@ -110,7 +110,7 @@ "BTCPAY_CHEATMODE": "true", "BTCPAY_EXPLORERPOSTGRES": "User ID=postgres;Include Error Detail=true;Host=127.0.0.1;Port=39372;Database=nbxplorer" }, - "applicationUrl": "https://0.0.0.0:14142/" + "applicationUrl": "https://localhost:14142/" } } }