mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 06:24:24 +01:00
Can show external service link with BTCPAY_EXTERNALSERVICES
This commit is contained in:
@@ -141,6 +141,18 @@ namespace BTCPayServer.Configuration
|
|||||||
|
|
||||||
Logs.Configuration.LogInformation("Supported chains: " + String.Join(',', supportedChains.ToArray()));
|
Logs.Configuration.LogInformation("Supported chains: " + String.Join(',', supportedChains.ToArray()));
|
||||||
|
|
||||||
|
var services = conf.GetOrDefault<string>("externalservices", null);
|
||||||
|
if(services != null)
|
||||||
|
{
|
||||||
|
foreach(var service in services.Split(new[] { ';', ',' })
|
||||||
|
.Select(p => p.Split(':'))
|
||||||
|
.Where(p => p.Length == 2)
|
||||||
|
.Select(p => (Name: p[0], Link: p[1])))
|
||||||
|
{
|
||||||
|
ExternalServices.AddOrReplace(service.Name, service.Link);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PostgresConnectionString = conf.GetOrDefault<string>("postgres", null);
|
PostgresConnectionString = conf.GetOrDefault<string>("postgres", null);
|
||||||
MySQLConnectionString = conf.GetOrDefault<string>("mysql", null);
|
MySQLConnectionString = conf.GetOrDefault<string>("mysql", null);
|
||||||
BundleJsCss = conf.GetOrDefault<bool>("bundlejscss", true);
|
BundleJsCss = conf.GetOrDefault<bool>("bundlejscss", true);
|
||||||
@@ -248,6 +260,8 @@ namespace BTCPayServer.Configuration
|
|||||||
|
|
||||||
public string RootPath { get; set; }
|
public string RootPath { get; set; }
|
||||||
public Dictionary<string, LightningConnectionString> InternalLightningByCryptoCode { get; set; } = new Dictionary<string, LightningConnectionString>();
|
public Dictionary<string, LightningConnectionString> InternalLightningByCryptoCode { get; set; } = new Dictionary<string, LightningConnectionString>();
|
||||||
|
public Dictionary<string, string> ExternalServices { get; set; } = new Dictionary<string, string>();
|
||||||
|
|
||||||
public ExternalServices ExternalServicesByCryptoCode { get; set; } = new ExternalServices();
|
public ExternalServices ExternalServicesByCryptoCode { get; set; } = new ExternalServices();
|
||||||
|
|
||||||
public BTCPayNetworkProvider NetworkProvider { get; set; }
|
public BTCPayNetworkProvider NetworkProvider { get; set; }
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ namespace BTCPayServer.Configuration
|
|||||||
app.Option("--postgres", $"Connection string to a PostgreSQL database (default: SQLite)", CommandOptionType.SingleValue);
|
app.Option("--postgres", $"Connection string to a PostgreSQL database (default: SQLite)", CommandOptionType.SingleValue);
|
||||||
app.Option("--mysql", $"Connection string to a MySQL database (default: SQLite)", CommandOptionType.SingleValue);
|
app.Option("--mysql", $"Connection string to a MySQL database (default: SQLite)", CommandOptionType.SingleValue);
|
||||||
app.Option("--externalurl", $"The expected external URL of this service, to use if BTCPay is behind a reverse proxy (default: empty, use the incoming HTTP request to figure out)", CommandOptionType.SingleValue);
|
app.Option("--externalurl", $"The expected external URL of this service, to use if BTCPay is behind a reverse proxy (default: empty, use the incoming HTTP request to figure out)", CommandOptionType.SingleValue);
|
||||||
|
app.Option("--externalservices", $"Links added to external services inside Server Settings / Services under the format service1:path2;service2:path2.(default: empty)", CommandOptionType.SingleValue);
|
||||||
app.Option("--bundlejscss", $"Bundle JavaScript and CSS files for better performance (default: true)", CommandOptionType.SingleValue);
|
app.Option("--bundlejscss", $"Bundle JavaScript and CSS files for better performance (default: true)", CommandOptionType.SingleValue);
|
||||||
app.Option("--rootpath", "The root path in the URL to access BTCPay (default: /)", CommandOptionType.SingleValue);
|
app.Option("--rootpath", "The root path in the URL to access BTCPay (default: /)", CommandOptionType.SingleValue);
|
||||||
app.Option("--sshconnection", "SSH server to manage BTCPay under the form user@server:port (default: root@externalhost or empty)", CommandOptionType.SingleValue);
|
app.Option("--sshconnection", "SSH server to manage BTCPay under the form user@server:port (default: root@externalhost or empty)", CommandOptionType.SingleValue);
|
||||||
|
|||||||
@@ -435,7 +435,22 @@ namespace BTCPayServer.Controllers
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.HasSSH = _Options.SSHSettings != null;
|
foreach(var externalService in _Options.ExternalServices)
|
||||||
|
{
|
||||||
|
result.ExternalServices.Add(new ServicesViewModel.ExternalService()
|
||||||
|
{
|
||||||
|
Name = externalService.Key,
|
||||||
|
Link = this.Request.GetRelativePath(externalService.Value)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if(_Options.SSHSettings != null)
|
||||||
|
{
|
||||||
|
result.ExternalServices.Add(new ServicesViewModel.ExternalService()
|
||||||
|
{
|
||||||
|
Name = "SSH",
|
||||||
|
Link = this.Url.Action(nameof(SSHService))
|
||||||
|
});
|
||||||
|
}
|
||||||
return View(result);
|
return View(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -168,6 +168,15 @@ namespace BTCPayServer
|
|||||||
request.Path.ToUriComponent());
|
request.Path.ToUriComponent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string GetRelativePath(this HttpRequest request, string path)
|
||||||
|
{
|
||||||
|
if (path.Length > 0 && path[0] != '/')
|
||||||
|
path = $"/{path}";
|
||||||
|
return string.Concat(
|
||||||
|
request.PathBase.ToUriComponent(),
|
||||||
|
path);
|
||||||
|
}
|
||||||
|
|
||||||
public static string GetAbsoluteUri(this HttpRequest request, string redirectUrl)
|
public static string GetAbsoluteUri(this HttpRequest request, string redirectUrl)
|
||||||
{
|
{
|
||||||
bool isRelative =
|
bool isRelative =
|
||||||
|
|||||||
@@ -15,7 +15,13 @@ namespace BTCPayServer.Models.ServerViewModels
|
|||||||
public int Index { get; set; }
|
public int Index { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ExternalService
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Link { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public List<LNDServiceViewModel> LNDServices { get; set; } = new List<LNDServiceViewModel>();
|
public List<LNDServiceViewModel> LNDServices { get; set; } = new List<LNDServiceViewModel>();
|
||||||
public bool HasSSH { get; set; }
|
public List<ExternalService> ExternalServices { get; set; } = new List<ExternalService>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,8 @@
|
|||||||
"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",
|
||||||
|
"BTCPAY_EXTERNALSERVICES": "totoservice:totolink;"
|
||||||
},
|
},
|
||||||
"applicationUrl": "https://localhost:14142/"
|
"applicationUrl": "https://localhost:14142/"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,9 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
|
<h4>Crypto services</h4>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<span>You can get access here to LND (gRPC, Rest) or SSH services exposed by your server</span>
|
<span>You can get access here to LND (gRPC, Rest) services exposed by your server</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@@ -46,13 +47,35 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
@if (Model.HasSSH)
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (Model.ExternalServices.Count != 0)
|
||||||
|
{
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<h4>Other services</h4>
|
||||||
|
<div class="form-group">
|
||||||
|
<span>Other external services</span>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<table class="table table-sm table-responsive-md">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th style="text-align:right">Actions</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach (var s in Model.ExternalServices)
|
||||||
{
|
{
|
||||||
<tr>
|
<tr>
|
||||||
<td>None</td>
|
<td>@s.Name</td>
|
||||||
<td>SSH</td>
|
|
||||||
<td style="text-align:right">
|
<td style="text-align:right">
|
||||||
<a asp-action="SSHService">See information</a>
|
<a href="@s.Link" target="_blank">See information</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
@@ -61,6 +84,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
@section Scripts {
|
@section Scripts {
|
||||||
@await Html.PartialAsync("_ValidationScriptsPartial")
|
@await Html.PartialAsync("_ValidationScriptsPartial")
|
||||||
|
|||||||
Reference in New Issue
Block a user