Allow bind and port for http too (#4031)

This commit is contained in:
Andrew Camilleri 2022-08-17 09:11:13 +02:00 committed by GitHub
parent 6c45ccc73d
commit a51c9d2b2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 26 deletions

View File

@ -167,40 +167,53 @@ namespace BTCPayServer.Hosting
bool hasCertPath = !String.IsNullOrEmpty(httpsCertificateFilePath);
services.Configure<KestrelServerOptions>(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<IPAddress>("bind", IPAddress.Any);
int bindPort = Configuration.GetOrDefault<int>("port", 443);
kestrel.Limits.MaxRequestLineSize =
8_192 * 10 * 5; // Around 500K, transactions passed in URI should not be bigger than this
services.Configure<KestrelServerOptions>(kestrel =>
var bindAddress = Configuration.GetOrDefault<IPAddress>("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<string>("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<string>("HttpsCertificateFilePassword", null));
}
else
{
Logs.Configuration.LogInformation($"Using HTTPS with the default certificate");
l.UseHttps();
}
}
});
});
}
}
});
}
public void Configure(
IApplicationBuilder app,

View File

@ -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/"
}
}
}