mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-03 17:36:59 +01:00
Properly configure the logger to log what happen in ConfigureServices, add https profile adapted for debugging ledger wallet.
This commit is contained in:
parent
24623c59d7
commit
0d51c99717
5 changed files with 78 additions and 38 deletions
|
@ -29,12 +29,6 @@ If you want to stop, and remove all existing data
|
||||||
docker-compose down --v
|
docker-compose down --v
|
||||||
```
|
```
|
||||||
|
|
||||||
You can run the tests inside a container by running
|
|
||||||
|
|
||||||
```
|
|
||||||
docker-compose run --rm tests
|
|
||||||
```
|
|
||||||
|
|
||||||
You can run tests on `MySql` database instead of `Postgres` by setting environnement variable `TESTS_DB` equals to `MySql`.
|
You can run tests on `MySql` database instead of `Postgres` by setting environnement variable `TESTS_DB` equals to `MySql`.
|
||||||
|
|
||||||
## How to manually test payments
|
## How to manually test payments
|
||||||
|
|
|
@ -182,10 +182,4 @@
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<None Update="devtest.pfx">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -57,19 +57,22 @@ namespace BTCPayServer.Hosting
|
||||||
return context.GetHttpContext().User.IsInRole(_Role);
|
return context.GetHttpContext().User.IsInRole(_Role);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public Startup(IConfiguration conf, IHostingEnvironment env)
|
public Startup(IConfiguration conf, IHostingEnvironment env, ILoggerFactory loggerFactory)
|
||||||
{
|
{
|
||||||
Configuration = conf;
|
Configuration = conf;
|
||||||
_Env = env;
|
_Env = env;
|
||||||
|
LoggerFactory = loggerFactory;
|
||||||
}
|
}
|
||||||
IHostingEnvironment _Env;
|
IHostingEnvironment _Env;
|
||||||
public IConfiguration Configuration
|
public IConfiguration Configuration
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
public ILoggerFactory LoggerFactory { get; }
|
||||||
|
|
||||||
public void ConfigureServices(IServiceCollection services)
|
public void ConfigureServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
|
Logs.Configure(LoggerFactory);
|
||||||
services.ConfigureBTCPayServer(Configuration);
|
services.ConfigureBTCPayServer(Configuration);
|
||||||
services.AddMemoryCache();
|
services.AddMemoryCache();
|
||||||
services.AddIdentity<ApplicationUser, IdentityRole>()
|
services.AddIdentity<ApplicationUser, IdentityRole>()
|
||||||
|
@ -121,24 +124,37 @@ namespace BTCPayServer.Hosting
|
||||||
|
|
||||||
// If the HTTPS certificate path is not set this logic will NOT be used and the default Kestrel binding logic will be.
|
// If the HTTPS certificate path is not set this logic will NOT be used and the default Kestrel binding logic will be.
|
||||||
string httpsCertificateFilePath = Configuration.GetOrDefault<string>("HttpsCertificateFilePath", null);
|
string httpsCertificateFilePath = Configuration.GetOrDefault<string>("HttpsCertificateFilePath", null);
|
||||||
|
bool useDefaultCertificate = Configuration.GetOrDefault<bool>("HttpsUseDefaultCertificate", false);
|
||||||
if (!String.IsNullOrEmpty(httpsCertificateFilePath))
|
bool hasCertPath = !String.IsNullOrEmpty(httpsCertificateFilePath);
|
||||||
|
if (hasCertPath || useDefaultCertificate)
|
||||||
{
|
{
|
||||||
var bindAddress = Configuration.GetOrDefault<IPAddress>("bind", IPAddress.Any);
|
var bindAddress = Configuration.GetOrDefault<IPAddress>("bind", IPAddress.Any);
|
||||||
int bindPort = Configuration.GetOrDefault<int>("port", 443);
|
int bindPort = Configuration.GetOrDefault<int>("port", 443);
|
||||||
|
|
||||||
services.Configure<KestrelServerOptions>(kestrel =>
|
services.Configure<KestrelServerOptions>(kestrel =>
|
||||||
{
|
{
|
||||||
if (!File.Exists(httpsCertificateFilePath))
|
if (hasCertPath && !File.Exists(httpsCertificateFilePath))
|
||||||
{
|
{
|
||||||
// Note that by design this is a fatal error condition that will cause the process to exit.
|
// 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}.");
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
Logs.Configuration.LogInformation($"Https certificate file path {httpsCertificateFilePath}.");
|
|
||||||
kestrel.Listen(bindAddress, bindPort, l =>
|
kestrel.Listen(bindAddress, bindPort, l =>
|
||||||
{
|
{
|
||||||
l.UseHttps(httpsCertificateFilePath, Configuration.GetOrDefault<string>("HttpsCertificateFilePassword", null));
|
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();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -151,7 +167,6 @@ namespace BTCPayServer.Hosting
|
||||||
BTCPayServerOptions options,
|
BTCPayServerOptions options,
|
||||||
ILoggerFactory loggerFactory)
|
ILoggerFactory loggerFactory)
|
||||||
{
|
{
|
||||||
Logs.Configure(loggerFactory);
|
|
||||||
Logs.Configuration.LogInformation($"Root Path: {options.RootPath}");
|
Logs.Configuration.LogInformation($"Root Path: {options.RootPath}");
|
||||||
if (options.RootPath.Equals("/", StringComparison.OrdinalIgnoreCase))
|
if (options.RootPath.Equals("/", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,22 +1,40 @@
|
||||||
{
|
{
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"Docker-Regtest": {
|
"Docker-Regtest": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"commandLineArgs": "--debuglog debug.log",
|
"launchBrowser": true,
|
||||||
"launchBrowser": true,
|
"environmentVariables": {
|
||||||
"environmentVariables": {
|
"BTCPAY_NETWORK": "regtest",
|
||||||
"BTCPAY_NETWORK": "regtest",
|
"BTCPAY_BUNDLEJSCSS": "true",
|
||||||
"BTCPAY_BUNDLEJSCSS": "true",
|
"BTCPAY_LTCEXPLORERURL": "http://127.0.0.1:32838/",
|
||||||
"BTCPAY_LTCEXPLORERURL": "http://127.0.0.1:32838/",
|
"BTCPAY_BTCLIGHTNING": "type=charge;server=http://127.0.0.1:54938/;api-token=foiewnccewuify",
|
||||||
"BTCPAY_BTCLIGHTNING": "type=charge;server=http://127.0.0.1:54938/;api-token=foiewnccewuify",
|
"BTCPAY_BTCEXTERNALLNDGRPC": "type=lnd-grpc;server=https://lnd:lnd@127.0.0.1:53280/;allowinsecure=true",
|
||||||
"BTCPAY_BTCEXTERNALLNDGRPC": "type=lnd-grpc;server=https://lnd:lnd@127.0.0.1:53280/;allowinsecure=true",
|
"BTCPAY_BTCEXTERNALLNDREST": "type=lnd-rest;server=https://lnd:lnd@127.0.0.1:53280/lnd-rest/btc/;allowinsecure=true;macaroonfilepath=D:\\admin.macaroon",
|
||||||
"BTCPAY_BTCEXTERNALLNDREST": "type=lnd-rest;server=https://lnd:lnd@127.0.0.1:53280/lnd-rest/btc/;allowinsecure=true;macaroonfilepath=D:\\admin.macaroon",
|
"BTCPAY_BTCEXPLORERURL": "http://127.0.0.1:32838/",
|
||||||
"BTCPAY_BTCEXPLORERURL": "http://127.0.0.1:32838/",
|
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development",
|
"BTCPAY_CHAINS": "btc,ltc",
|
||||||
"BTCPAY_CHAINS": "btc,ltc",
|
"BTCPAY_POSTGRES": "User ID=postgres;Host=127.0.0.1;Port=39372;Database=btcpayserver"
|
||||||
"BTCPAY_POSTGRES": "User ID=postgres;Host=127.0.0.1;Port=39372;Database=btcpayserver"
|
},
|
||||||
|
"applicationUrl": "http://127.0.0.1:14142/"
|
||||||
},
|
},
|
||||||
"applicationUrl": "http://127.0.0.1:14142/"
|
"Docker-Regtest-https": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"launchBrowser": true,
|
||||||
|
"environmentVariables": {
|
||||||
|
"BTCPAY_NETWORK": "regtest",
|
||||||
|
"BTCPAY_PORT": "14142",
|
||||||
|
"BTCPAY_HttpsUseDefaultCertificate": "true",
|
||||||
|
"BTCPAY_BUNDLEJSCSS": "true",
|
||||||
|
"BTCPAY_LTCEXPLORERURL": "http://127.0.0.1:32838/",
|
||||||
|
"BTCPAY_BTCLIGHTNING": "type=charge;server=http://127.0.0.1:54938/;api-token=foiewnccewuify",
|
||||||
|
"BTCPAY_BTCEXTERNALLNDGRPC": "type=lnd-grpc;server=https://lnd:lnd@127.0.0.1:53280/;allowinsecure=true",
|
||||||
|
"BTCPAY_BTCEXTERNALLNDREST": "type=lnd-rest;server=https://lnd:lnd@127.0.0.1:53280/lnd-rest/btc/;allowinsecure=true;macaroonfilepath=D:\\admin.macaroon",
|
||||||
|
"BTCPAY_BTCEXPLORERURL": "http://127.0.0.1:32838/",
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||||
|
"BTCPAY_CHAINS": "btc,ltc",
|
||||||
|
"BTCPAY_POSTGRES": "User ID=postgres;Host=127.0.0.1;Port=39372;Database=btcpayserver"
|
||||||
|
},
|
||||||
|
"applicationUrl": "https://localhost:14142/"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
21
README.md
21
README.md
|
@ -63,7 +63,7 @@ You can also read the [BTCPay Merchants Guide](https://www.reddit.com/r/Bitcoin/
|
||||||
|
|
||||||
While the documentation advises to use docker-compose, you may want to build BTCPay yourself.
|
While the documentation advises to use docker-compose, you may want to build BTCPay yourself.
|
||||||
|
|
||||||
First install .NET Core SDK v2.1.4 (with patch version >= 402) as specified by [Microsoft website](https://www.microsoft.com/net/download/dotnet-core/2.1).
|
First install .NET Core SDK v2.1.4 (with patch version >= 403) as specified by [Microsoft website](https://www.microsoft.com/net/download/dotnet-core/2.1).
|
||||||
|
|
||||||
On Powershell:
|
On Powershell:
|
||||||
```
|
```
|
||||||
|
@ -89,6 +89,25 @@ On linux:
|
||||||
./run.sh --help
|
./run.sh --help
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## How to debug
|
||||||
|
|
||||||
|
If you want to debug, use Visual Studio Code or Visual studio 2017.
|
||||||
|
|
||||||
|
You need to run the development time docker-compose as described [in the test guide](BTCPayServer.Tests/README.md).
|
||||||
|
|
||||||
|
You can then run the debugger by using the Launch Profile `Docker-Regtest` on either Visual Studio Code or Visual studio 2017.
|
||||||
|
|
||||||
|
If you need to debug ledger wallet interaction, install the development time certificate with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install development time certificate in the trust store
|
||||||
|
dotnet dev-certs https --trust
|
||||||
|
```
|
||||||
|
|
||||||
|
Then use the `Docker-Regtest-https` debug profile.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Other dependencies
|
## Other dependencies
|
||||||
|
|
||||||
For more information, see the documentation: [How to deploy a BTCPay server instance](https://github.com/btcpayserver/btcpayserver-doc/#deployment).
|
For more information, see the documentation: [How to deploy a BTCPay server instance](https://github.com/btcpayserver/btcpayserver-doc/#deployment).
|
||||||
|
|
Loading…
Add table
Reference in a new issue