New unit test to scan for external links/forms and if they have rel="noreferrer noopener" (#2668)

* Unit test to check for (possibly) external links

* Add rel="noreferrer noopener" to all external links so unit test passes

* Update BTCPayServer.Tests/UnitTest1.cs

Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>

* Update BTCPayServer.Tests/UnitTest1.cs

Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>

* Fixed bad merge from master

* PascalCasing

Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>
This commit is contained in:
Wouter Samaey 2021-07-06 10:35:42 +02:00 committed by GitHub
parent 40bbc5850f
commit f1a222fbb3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
69 changed files with 216 additions and 149 deletions

View file

@ -206,12 +206,79 @@ namespace BTCPayServer.Tests
List<Task> checkLinks = new List<Task>(); List<Task> checkLinks = new List<Task>();
foreach (var file in viewFiles) foreach (var file in viewFiles)
{ {
checkLinks.Add(CheckLinks(regex, httpClient, file)); checkLinks.Add(CheckDeadLinks(regex, httpClient, file));
} }
await Task.WhenAll(checkLinks); await Task.WhenAll(checkLinks);
} }
[Fact]
[Trait("Fast", "Fast")]
public async Task CheckExternalNoReferrerLinks()
{
var views = Path.Combine(TestUtils.TryGetSolutionDirectoryInfo().FullName, "BTCPayServer", "Views");
var viewFiles = Directory.EnumerateFiles(views, "*.cshtml", SearchOption.AllDirectories).ToArray();
Assert.NotEmpty(viewFiles);
foreach (var file in viewFiles)
{
var html = await File.ReadAllTextAsync(file);
CheckHtmlNodesForReferrer(file, html, "a", "href");
CheckHtmlNodesForReferrer(file, html, "form", "action");
}
}
private void CheckHtmlNodesForReferrer(string filePath, string html, string tagName, string attribute)
{
Regex aNodeRegex = new Regex("<" + tagName + "\\s.*?>");
var matches = aNodeRegex.Matches(html).OfType<Match>();
foreach (var match in matches)
{
var node = match.Groups[0].Value;
var attributeValue = GetAttributeValue(node, attribute);
if (attributeValue != null)
{
if (attributeValue.Length == 0 || attributeValue.StartsWith("mailto:") || attributeValue.StartsWith("/") || attributeValue.StartsWith("~/") || attributeValue.StartsWith("#") || attributeValue.StartsWith("?") || attributeValue.StartsWith("javascript:") || attributeValue.StartsWith("@Url.Action("))
{
// Local link, this is fine
}
else if (attributeValue.StartsWith("http://") || attributeValue.StartsWith("https://") ||
attributeValue.StartsWith("@"))
{
// This can be an external link. Treating it as such.
var rel = GetAttributeValue(node, "rel");
// Building the file path + line number helps us to navigate to the wrong HTML quickly!
var lineNumber = html.Substring(0, html.IndexOf(node, StringComparison.InvariantCulture)).Split("\n").Length;
Assert.True(rel != null, "Template file \"" + filePath + ":" + lineNumber + "\" contains a possibly external link (" + node + ") that is missing rel=\"noreferrer noopener\"");
if (rel != null)
{
// All external links should have 'rel="noreferrer noopener"'
var relWords = rel.Split(" ");
Assert.Contains("noreferrer", relWords);
Assert.Contains("noopener", relWords);
}
}
}
}
}
private String GetAttributeValue(String nodeHtml, string attribute)
{
Regex regex = new Regex("\\s" + attribute + "=\"(.*?)\"");
var match = regex.Match(nodeHtml);
if (match.Success)
{
return match.Groups[1].Value;
}
return null;
}
[Fact] [Fact]
[Trait("Integration", "Integration")] [Trait("Integration", "Integration")]
public async Task CheckSwaggerIsConformToSchema() public async Task CheckSwaggerIsConformToSchema()
@ -286,7 +353,7 @@ namespace BTCPayServer.Tests
} }
} }
private static async Task CheckLinks(Regex regex, HttpClient httpClient, string file) private static async Task CheckDeadLinks(Regex regex, HttpClient httpClient, string file)
{ {
List<Task> checkLinks = new List<Task>(); List<Task> checkLinks = new List<Task>();
var text = await File.ReadAllTextAsync(file); var text = await File.ReadAllTextAsync(file);

View file

@ -16,7 +16,7 @@
<h2 class="mb-0"> <h2 class="mb-0">
@ViewData["PageTitle"] @ViewData["PageTitle"]
<small> <small>
<a href="https://docs.btcpayserver.org/Apps/" target="_blank"> <a href="https://docs.btcpayserver.org/Apps/" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</small> </small>

View file

@ -98,7 +98,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label asp-for="CustomCSSLink" class="form-label"></label> <label asp-for="CustomCSSLink" class="form-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank"> <a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<input asp-for="CustomCSSLink" class="form-control" /> <input asp-for="CustomCSSLink" class="form-control" />

View file

@ -69,7 +69,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label asp-for="CustomCSSLink" class="form-label"></label> <label asp-for="CustomCSSLink" class="form-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank"> <a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<input asp-for="CustomCSSLink" class="form-control" /> <input asp-for="CustomCSSLink" class="form-control" />

View file

@ -17,7 +17,7 @@
</div> </div>
<p> <p>
You can obtain a merchant id at You can obtain a merchant id at
<a href="https://coinswitch.co/switch/setup/btcpay" target="_blank"> <a href="https://coinswitch.co/switch/setup/btcpay" target="_blank" rel="noreferrer noopener">
https://coinswitch.co/switch/setup/btcpay https://coinswitch.co/switch/setup/btcpay
</a> </a>
</p> </p>

View file

@ -3,9 +3,9 @@
ViewData["Title"] = "404 - Page not found"; ViewData["Title"] = "404 - Page not found";
} }
This is like searching for a person more beautiful than <a href="https://twitter.com/NicolasDorier" target="_blank">Nicolas Dorier</a>. This is like searching for a person more beautiful than <a href="https://twitter.com/NicolasDorier" target="_blank" rel="noreferrer noopener">Nicolas Dorier</a>.
<br /><br /> <br /><br />
<a href="https://twitter.com/NicolasDorier" target="_blank"> <a href="https://twitter.com/NicolasDorier" target="_blank" rel="noreferrer noopener">
<img src="~/img/errorpages/404_nicolas.jpg" alt="Nicolas Dorier beauty" title="Slowly stroke the image" asp-append-version="true" /> <img src="~/img/errorpages/404_nicolas.jpg" alt="Nicolas Dorier beauty" title="Slowly stroke the image" asp-append-version="true" />
</a> </a>
<br /><br /> <br /><br />

View file

@ -6,7 +6,7 @@
Sorry, but our server can't service you.<br /> Sorry, but our server can't service you.<br />
Either set proper `Accept` header in HTTP request or find a new server. Either set proper `Accept` header in HTTP request or find a new server.
<br /><br /> <br /><br />
<a href="https://twitter.com/jack" target="_blank"> <a href="https://twitter.com/jack" target="_blank" rel="noreferrer noopener">
<img src="~/img/errorpages/406_jack.jpg" alt="Jack guiding you on what's acceptable" title="Bitcoin fixes this™" /> <img src="~/img/errorpages/406_jack.jpg" alt="Jack guiding you on what's acceptable" title="Bitcoin fixes this™" />
</a> </a>
<br /><br /> <br /><br />
@ -16,7 +16,7 @@ Either set proper `Accept` header in HTTP request or find a new server.
</svg> </svg>
<span class="css-901oao css-16my406 css-cens5h r-13gxpu9 r-poiln3 r-bcqeeo r-qvutc0" style="-webkit-line-clamp: 3;"> <span class="css-901oao css-16my406 css-cens5h r-13gxpu9 r-poiln3 r-bcqeeo r-qvutc0" style="-webkit-line-clamp: 3;">
<span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0"> <span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">
<a href="https://twitter.com/jack/status/1108487911802966017">Jack invites you to learn how Bitcoin fixes this™</a> <a href="https://twitter.com/jack/status/1108487911802966017" rel="noreferrer noopener">Jack invites you to learn how Bitcoin fixes this™</a>
</span> </span>
</span> </span>
</span> </span>

View file

@ -3,9 +3,9 @@
ViewData["Title"] = "417 - Expectation Failed"; ViewData["Title"] = "417 - Expectation Failed";
} }
You've unfortunately failed expectations of manager <a href="https://twitter.com/pavlenex" target="_blank">Pavlenex</a>. Poor you. You've unfortunately failed expectations of manager <a href="https://twitter.com/pavlenex" target="_blank" rel="noreferrer noopener">Pavlenex</a>. Poor you.
<br /><br /> <br /><br />
<a href="https://twitter.com/pavlenex" target="_blank"> <a href="https://twitter.com/pavlenex" target="_blank" rel="noreferrer noopener">
<img src="~/img/errorpages/417_pavlenex.png" alt="Pavlenex avatar" title="Pavlenex fighting the system, while building better systems" asp-append-version="true" /> <img src="~/img/errorpages/417_pavlenex.png" alt="Pavlenex avatar" title="Pavlenex fighting the system, while building better systems" asp-append-version="true" />
</a> </a>
<br /><br /> <br /><br />

View file

@ -3,9 +3,9 @@
ViewData["Title"] = "429 - Too Many Requests"; ViewData["Title"] = "429 - Too Many Requests";
} }
Please send requests slower. Or face the wrath of <a href="https://twitter.com/r0ckstardev" target="_blank">Vin Diesel</a>. Please send requests slower. Or face the wrath of <a href="https://twitter.com/r0ckstardev" target="_blank" rel="noreferrer noopener">Vin Diesel</a>.
<br /><br /> <br /><br />
<a href="https://twitter.com/r0ckstardev" target="_blank"> <a href="https://twitter.com/r0ckstardev" target="_blank" rel="noreferrer noopener">
<img src="~/img/errorpages/429_rockstardev.jpg" alt="Vin is angry because you caused 429" title="Move away that cursor" asp-append-version="true" /> <img src="~/img/errorpages/429_rockstardev.jpg" alt="Vin is angry because you caused 429" title="Move away that cursor" asp-append-version="true" />
</a> </a>
<br /><br /> <br /><br />

View file

@ -3,9 +3,9 @@
ViewData["Title"] = "500 - Internal Server Error"; ViewData["Title"] = "500 - Internal Server Error";
} }
Whoops, something really went wrong! <a href="https://twitter.com/mrkukks">Mr Kukks</a> is so sorry. Whoops, something really went wrong! <a href="https://twitter.com/mrkukks" rel="noreferrer noopener">Mr Kukks</a> is so sorry.
<br /><br /> <br /><br />
<a href="https://twitter.com/mrkukks" target="_blank"> <a href="https://twitter.com/mrkukks" target="_blank" rel="noreferrer noopener">
<img src="~/img/errorpages/500_mrkukks.jpg" alt="Mr Kukks puppy eyes" title="The most innocent look you'll ever see" asp-append-version="true" /> <img src="~/img/errorpages/500_mrkukks.jpg" alt="Mr Kukks puppy eyes" title="The most innocent look you'll ever see" asp-append-version="true" />
</a> </a>
<br /><br /> <br /><br />

View file

@ -6,8 +6,8 @@
The life is all about finding the right Gateways.<br /> The life is all about finding the right Gateways.<br />
Unfortunately, this time you've found a bad one. Unfortunately, this time you've found a bad one.
<br /><br /> <br /><br />
<a href="https://twitter.com/milessuter" target="_blank"> <a href="https://twitter.com/milessuter" target="_blank" rel="noreferrer noopener">
<img src="~/img/errorpages/502_milessuter.jpg" alt="Miles obfuscated profile pic" title="But full name is not obfuscated" asp-append-version="true" /> <img src="~/img/errorpages/502_milessuter.jpg" alt="Miles obfuscated profile pic" title="But full name is not obfuscated" asp-append-version="true" />
</a> </a>
<br /><br /> <br /><br />
Maybe <a href="https://twitter.com/milessuter">Gateway Tzar Miles</a> can help you out? Maybe <a href="https://twitter.com/milessuter" rel="noreferrer noopener">Gateway Tzar Miles</a> can help you out?

View file

@ -32,7 +32,7 @@
<div class="form-group"> <div class="form-group">
<label asp-for="KeyPath" class="form-label"></label> <label asp-for="KeyPath" class="form-label"></label>
<input asp-for="KeyPath" class="form-control"/> <input asp-for="KeyPath" class="form-control"/>
<span class="text-muted">Please see <a href="https://medium.com/myetherwallet/hd-wallets-and-derivation-paths-explained-865a643c7bf2" target="_blank">this article.</a></span> <span class="text-muted">Please see <a href="https://medium.com/myetherwallet/hd-wallets-and-derivation-paths-explained-865a643c7bf2" target="_blank" rel="noreferrer noopener">this article.</a></span>
<span asp-validation-for="KeyPath" class="text-danger"></span> <span asp-validation-for="KeyPath" class="text-danger"></span>
</div> </div>

View file

@ -9,7 +9,7 @@
<h1>Welcome to BTCPay Server</h1> <h1>Welcome to BTCPay Server</h1>
<hr /> <hr />
<p class="fw-semibold">BTCPay Server is a free and open source server for merchants wanting to accept Bitcoin for their business.</p> <p class="fw-semibold">BTCPay Server is a free and open source server for merchants wanting to accept Bitcoin for their business.</p>
<a style="background-color: #fff;color: #222;display:inline-block;text-align: center;white-space: nowrap;vertical-align: middle;user-select: none;line-height: 1.25;font-size: 1rem;text-decoration:none;font-weight: 700; text-transform: uppercase;border: none;border-radius: 300px;padding: 15px 30px;" href="https://btcpayserver.org" target="_blank">Official website</a> <a style="background-color: #fff;color: #222;display:inline-block;text-align: center;white-space: nowrap;vertical-align: middle;user-select: none;line-height: 1.25;font-size: 1rem;text-decoration:none;font-weight: 700; text-transform: uppercase;border: none;border-radius: 300px;padding: 15px 30px;" href="https://btcpayserver.org" target="_blank" rel="noreferrer noopener">Official website</a>
</div> </div>
</div> </div>
</header> </header>
@ -55,7 +55,7 @@
<h2>Video tutorials</h2> <h2>Video tutorials</h2>
<div class="row"> <div class="row">
<div class="col-lg-12 text-center"> <div class="col-lg-12 text-center">
<a href="https://www.youtube.com/channel/UCpG9WL6TJuoNfFVkaDMp9ug" target="_blank"> <a href="https://www.youtube.com/channel/UCpG9WL6TJuoNfFVkaDMp9ug" target="_blank" rel="noreferrer noopener">
<img src="~/img/youtube.png" class="img-fluid" asp-append-version="true" /> <img src="~/img/youtube.png" class="img-fluid" asp-append-version="true" />
</a> </a>
</div> </div>
@ -73,7 +73,7 @@
Support us by donating through BTCPay Server Foundation<br /> or by directly sending donation to a specific contributor. Support us by donating through BTCPay Server Foundation<br /> or by directly sending donation to a specific contributor.
</p> </p>
<p> <p>
<a href="https://btcpayserver.org/donate/"> <a href="https://btcpayserver.org/donate/" rel="noreferrer noopener">
<svg viewBox="0 0 208 55" width="208" xmlns="http://www.w3.org/2000/svg"> <svg viewBox="0 0 208 55" width="208" xmlns="http://www.w3.org/2000/svg">
<path d="m208 48c0 3.866-3.135 7-7 7h-194c-3.866 0-7-3.134-7-7v-41c0-3.866 3.134-7 7-7h194c3.865 0 7 3.134 7 7z" fill="var(--btcpay-bg-cta, #0f3723)"/> <path d="m208 48c0 3.866-3.135 7-7 7h-194c-3.866 0-7-3.134-7-7v-41c0-3.866 3.134-7 7-7h194c3.865 0 7 3.134 7 7z" fill="var(--btcpay-bg-cta, #0f3723)"/>
<g fill="#fff"> <g fill="#fff">
@ -117,25 +117,25 @@
<div class="row social-row"> <div class="row social-row">
<div class="col-6 col-md-3 ms-auto text-center"> <div class="col-6 col-md-3 ms-auto text-center">
<a href="https://chat.btcpayserver.org/" target="_blank"> <a href="https://chat.btcpayserver.org/" target="_blank" rel="noreferrer noopener">
<img src="~/img/mattermost.svg" alt="Mattermost" class="social-logo" asp-append-version="true" /> <img src="~/img/mattermost.svg" alt="Mattermost" class="social-logo" asp-append-version="true" />
<span>On Mattermost</span> <span>On Mattermost</span>
</a> </a>
</div> </div>
<div class="col-6 col-md-3 ms-auto text-center"> <div class="col-6 col-md-3 ms-auto text-center">
<a href="https://slack.btcpayserver.org/" target="_blank"> <a href="https://slack.btcpayserver.org/" target="_blank" rel="noreferrer noopener">
<img src="~/img/slack.svg" alt="Slack" class="social-logo" asp-append-version="true" /> <img src="~/img/slack.svg" alt="Slack" class="social-logo" asp-append-version="true" />
<span>On Slack</span> <span>On Slack</span>
</a> </a>
</div> </div>
<div class="col-6 col-md-3 me-auto text-center"> <div class="col-6 col-md-3 me-auto text-center">
<a href="https://twitter.com/BtcpayServer" target="_blank"> <a href="https://twitter.com/BtcpayServer" target="_blank" rel="noreferrer noopener">
<img src="~/img/twitter.svg" alt="Twitter" class="social-logo" asp-append-version="true" /> <img src="~/img/twitter.svg" alt="Twitter" class="social-logo" asp-append-version="true" />
<span>On Twitter</span> <span>On Twitter</span>
</a> </a>
</div> </div>
<div class="col-6 col-md-3 me-auto text-center"> <div class="col-6 col-md-3 me-auto text-center">
<a href="https://github.com/btcpayserver/btcpayserver" target="_blank"> <a href="https://github.com/btcpayserver/btcpayserver" target="_blank" rel="noreferrer noopener">
<img src="~/img/github.svg" alt="Github" class="social-logo" asp-append-version="true" /> <img src="~/img/github.svg" alt="Github" class="social-logo" asp-append-version="true" />
<span>On Github</span> <span>On Github</span>
</a> </a>

View file

@ -73,7 +73,7 @@
</div> </div>
@if (Model.RequireConfirm) @if (Model.RequireConfirm)
{ {
<form id="RecoveryConfirmation" action="@Model.ReturnUrl" class="position-relative d-flex align-items-start justify-content-center" style="margin-top:4rem;padding-bottom: 80px"> <form id="RecoveryConfirmation" action="@Model.ReturnUrl" class="position-relative d-flex align-items-start justify-content-center" style="margin-top:4rem;padding-bottom: 80px" rel="noreferrer noopener">
<label class="form-check-label lead order-2" for="confirm">I have written down my recovery phrase and stored it in a secure location</label> <label class="form-check-label lead order-2" for="confirm">I have written down my recovery phrase and stored it in a secure location</label>
<input type="checkbox" class="mt-2 me-3 order-1 form-check-input" id="confirm"> <input type="checkbox" class="mt-2 me-3 order-1 form-check-input" id="confirm">
<button type="submit" class="btn btn-primary btn-lg px-5 order-3" id="submit">Done</button> <button type="submit" class="btn btn-primary btn-lg px-5 order-3" id="submit">Done</button>
@ -82,7 +82,7 @@
} }
else else
{ {
<a href="@Model.ReturnUrl" class="btn btn-primary btn-lg mt-3 px-5 order-3" id="proceed">Done</a> <a href="@Model.ReturnUrl" class="btn btn-primary btn-lg mt-3 px-5 order-3" id="proceed" rel="noreferrer noopener">Done</a>
} }
</div> </div>
</div> </div>

View file

@ -60,7 +60,7 @@
@foreach (var crypto in Model.AvailableCryptos) @foreach (var crypto in Model.AvailableCryptos)
{ {
<li class="vexmenuitem"> <li class="vexmenuitem">
<a href="@crypto.Link" onclick="closePaymentMethodDialog('@crypto.PaymentMethodId');return false;"> <a href="@crypto.Link" onclick="closePaymentMethodDialog('@crypto.PaymentMethodId');return false;" rel="noreferrer noopener">
<img alt="@crypto.PaymentMethodName" src="@crypto.CryptoImage" asp-append-version="true" /> <img alt="@crypto.PaymentMethodName" src="@crypto.CryptoImage" asp-append-version="true" />
@crypto.PaymentMethodName @crypto.PaymentMethodName
@(crypto.IsLightning ? Html.Raw("&#9889;") : null) @(crypto.IsLightning ? Html.Raw("&#9889;") : null)

View file

@ -107,7 +107,7 @@
</script> </script>
</div> </div>
<div class="powered__by__btcpayserver"> <div class="powered__by__btcpayserver">
Powered by <a target="_blank" href="https://github.com/btcpayserver/btcpayserver">BTCPay Server</a> Powered by <a target="_blank" href="https://github.com/btcpayserver/btcpayserver" rel="noreferrer noopener">BTCPay Server</a>
</div> </div>
</div> </div>
</div> </div>

View file

@ -58,7 +58,7 @@
<table class="table table-sm table-responsive-md removetopborder"> <table class="table table-sm table-responsive-md removetopborder">
<tr> <tr>
<th>Store</th> <th>Store</th>
<td><a href="@Model.StoreLink">@Model.StoreName</a></td> <td><a href="@Model.StoreLink" rel="noreferrer noopener">@Model.StoreName</a></td>
</tr> </tr>
<tr> <tr>
<th>Invoice Id</th> <th>Invoice Id</th>
@ -110,7 +110,7 @@
{ {
<tr> <tr>
<th>Redirect Url</th> <th>Redirect Url</th>
<td><a href="@Model.RedirectUrl">@Model.RedirectUrl</a></td> <td><a href="@Model.RedirectUrl" rel="noreferrer noopener">@Model.RedirectUrl</a></td>
</tr> </tr>
} }
</table> </table>

View file

@ -179,7 +179,7 @@
<h2 class="mb-0"> <h2 class="mb-0">
@ViewData["Title"] @ViewData["Title"]
<small> <small>
<a href="https://docs.btcpayserver.org/PaymentRequests/" class="ms-1" target="_blank"> <a href="https://docs.btcpayserver.org/PaymentRequests/" class="ms-1" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</small> </small>
@ -321,7 +321,7 @@
</div> </div>
</span> </span>
<a href="https://docs.btcpayserver.org/Accounting/" class="ms-1" target="_blank"> <a href="https://docs.btcpayserver.org/Accounting/" class="ms-1" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
@ -359,7 +359,7 @@
<td style="max-width: 180px;"> <td style="max-width: 180px;">
@if (invoice.RedirectUrl != string.Empty) @if (invoice.RedirectUrl != string.Empty)
{ {
<a href="@invoice.RedirectUrl" class="wraptext200">@invoice.OrderId</a> <a href="@invoice.RedirectUrl" class="wraptext200" rel="noreferrer noopener">@invoice.OrderId</a>
} }
else else
{ {

View file

@ -5,7 +5,7 @@
{ {
if (value is string str && str.StartsWith("http")) if (value is string str && str.StartsWith("http"))
{ {
<a href="@str" target="_blank">@str</a> <a href="@str" target="_blank" rel="noreferrer noopener">@str</a>
} }
else else
{ {

View file

@ -6,8 +6,8 @@
<p> <p>
The <a asp-controller="Home" asp-action="SwaggerDocs" target="_blank">BTCPay Server Greenfield API</a> offers programmatic access to your instance. You can manage your BTCPay The <a asp-controller="Home" asp-action="SwaggerDocs" target="_blank">BTCPay Server Greenfield API</a> offers programmatic access to your instance. You can manage your BTCPay
Server (e.g. stores, invoices, users) as well as automate workflows and integrations (see <a href="https://docs.btcpayserver.org/GreenFieldExample/">use case examples</a>). Server (e.g. stores, invoices, users) as well as automate workflows and integrations (see <a href="https://docs.btcpayserver.org/GreenFieldExample/" rel="noreferrer noopener">use case examples</a>).
For that you need the API keys, which can be generated here. Find more information in the <a href="@Url.Action("SwaggerDocs", "Home")#section/Authentication" target="_blank">API authentication docs</a>. For that you need the API keys, which can be generated here. Find more information in the <a href="@Url.Action("SwaggerDocs", "Home")#section/Authentication" target="_blank" rel="noreferrer noopener">API authentication docs</a>.
</p> </p>
<table class="table table-lg"> <table class="table table-lg">
<thead> <thead>

View file

@ -11,13 +11,13 @@
<ul> <ul>
<li> <li>
Microsoft Authenticator for Microsoft Authenticator for
<a href="https://go.microsoft.com/fwlink/?Linkid=825072">Android</a> or <a href="https://go.microsoft.com/fwlink/?Linkid=825072" rel="noreferrer noopener">Android</a> or
<a href="https://go.microsoft.com/fwlink/?Linkid=825073">iOS</a> <a href="https://go.microsoft.com/fwlink/?Linkid=825073" rel="noreferrer noopener">iOS</a>
</li> </li>
<li> <li>
Google Authenticator for Google Authenticator for
<a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&amp;hl=en">Android</a> or <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&amp;hl=en" rel="noreferrer noopener">Android</a> or
<a href="https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8">iOS</a> <a href="https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8" rel="noreferrer noopener">iOS</a>
</li> </li>
</ul> </ul>
</li> </li>

View file

@ -70,7 +70,7 @@
<td class="text-end fw-normal"> <td class="text-end fw-normal">
@if (!String.IsNullOrEmpty(item.ActionLink)) @if (!String.IsNullOrEmpty(item.ActionLink))
{ {
<a href="@item.ActionLink" class="btn btn-link p-0">Details</a> <a href="@item.ActionLink" class="btn btn-link p-0" rel="noreferrer noopener">Details</a>
<span class="d-none d-md-inline-block"> - </span> <span class="d-none d-md-inline-block"> - </span>
} }
<button onclick="return rowseen(this)" class="btn btn-link p-0 btn-toggle-seen" type="submit" name="command" value="flip-individual:@(item.Id)"> <button onclick="return rowseen(this)" class="btn btn-link p-0 btn-toggle-seen" type="submit" name="command" value="flip-individual:@(item.Id)">

View file

@ -90,7 +90,7 @@
<h4 class="mt-5 mb-4">Custom Appearance</h4> <h4 class="mt-5 mb-4">Custom Appearance</h4>
<div class="form-group"> <div class="form-group">
<label asp-for="CustomCSSLink" class="form-label"></label> <label asp-for="CustomCSSLink" class="form-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank"> <a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<input asp-for="CustomCSSLink" class="form-control" /> <input asp-for="CustomCSSLink" class="form-control" />

View file

@ -12,7 +12,7 @@
<h2 class="mb-0"> <h2 class="mb-0">
@ViewData["Title"] @ViewData["Title"]
<small> <small>
<a href="https://docs.btcpayserver.org/PaymentRequests/" class="ms-1" target="_blank"> <a href="https://docs.btcpayserver.org/PaymentRequests/" class="ms-1" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</small> </small>

View file

@ -328,7 +328,7 @@
</tr> </tr>
<tr v-for="payment of invoice.payments" class="table-borderless table-light"> <tr v-for="payment of invoice.payments" class="table-borderless table-light">
<td class="ps-3 text-break"> <td class="ps-3 text-break">
<a v-if="payment.link" :href="payment.link" class="text-print-default" target="_blank">{{payment.id}}</a> <a v-if="payment.link" :href="payment.link" class="text-print-default" target="_blank" rel="noreferrer noopener">{{payment.id}}</a>
<span v-else>{{payment.id}}</span> <span v-else>{{payment.id}}</span>
</td> </td>
<td v-text="formatDate(payment.receivedDate)"></td> <td v-text="formatDate(payment.receivedDate)"></td>
@ -349,7 +349,7 @@
</main> </main>
<footer class="pt-2 pb-4 d-print-none"> <footer class="pt-2 pb-4 d-print-none">
<div class="container text-center"> <div class="container text-center">
Powered by <a href="https://btcpayserver.org" target="_blank">BTCPay Server</a> Powered by <a href="https://btcpayserver.org" target="_blank" rel="noreferrer noopener">BTCPay Server</a>
</div> </div>
</footer> </footer>
</div> </div>

View file

@ -162,7 +162,7 @@
<td class="text-end text-nowrap"> <td class="text-end text-nowrap">
@if (!string.IsNullOrEmpty(invoice.Link)) @if (!string.IsNullOrEmpty(invoice.Link))
{ {
<a class="transaction-link text-print-default @StatusTextClass(invoice.Status.ToString())" href="@invoice.Link">@invoice.Status.GetStateString()</a> <a class="transaction-link text-print-default @StatusTextClass(invoice.Status.ToString())" href="@invoice.Link" rel="noreferrer noopener">@invoice.Status.GetStateString()</a>
} }
else else
{ {
@ -186,7 +186,7 @@
</main> </main>
<footer class="pt-2 pb-4 d-print-none"> <footer class="pt-2 pb-4 d-print-none">
<div class="container text-center"> <div class="container text-center">
Powered by <a href="https://btcpayserver.org" target="_blank">BTCPay Server</a> Powered by <a href="https://btcpayserver.org" target="_blank" rel="noreferrer noopener">BTCPay Server</a>
</div> </div>
</footer> </footer>
</div> </div>

View file

@ -20,7 +20,7 @@
<h5>Compatible wallets</h5> <h5>Compatible wallets</h5>
<div> <div>
<a href="https://github.com/ZeusLN/zeus" target="_blank" class="d-inline-block me-3 mb-3 text-center"> <a href="https://github.com/ZeusLN/zeus" target="_blank" class="d-inline-block me-3 mb-3 text-center" rel="noreferrer noopener">
<img src="~/img/zeus.jpg" width="100" height="100" asp-append-version="true" alt="Zeus" /> <img src="~/img/zeus.jpg" width="100" height="100" asp-append-version="true" alt="Zeus" />
<div class="mt-2">Zeus</div> <div class="mt-2">Zeus</div>
</a> </a>
@ -55,7 +55,7 @@
<input asp-for="QRCode" readonly class="form-control" /> <input asp-for="QRCode" readonly class="form-control" />
</div> </div>
<div class="form-group"> <div class="form-group">
Click <a href="@Model.QRCodeLink" target="_blank">here</a> to open the configuration file. Click <a href="@Model.QRCodeLink" target="_blank" rel="noreferrer noopener">here</a> to open the configuration file.
</div> </div>
</div> </div>
} }

View file

@ -19,7 +19,7 @@
</p> </p>
</div> </div>
<a href="@Model.ServiceLink" target="_blank" class="form-group"> <a href="@Model.ServiceLink" target="_blank" class="form-group" rel="noreferrer noopener">
<label asp-for="ServiceLink" class="form-label">Service</label> <label asp-for="ServiceLink" class="form-label">Service</label>
<input asp-for="ServiceLink" class="form-control" readonly /> <input asp-for="ServiceLink" class="form-control" readonly />
</a> </a>

View file

@ -14,7 +14,7 @@
This is recommended if you are hosting BTCPayServer at home and wish to have a clearnet HTTPS address to access your server. This is recommended if you are hosting BTCPayServer at home and wish to have a clearnet HTTPS address to access your server.
</span> </span>
</p> </p>
<p>Note that you need to properly configure your NAT and BTCPayServer install to get HTTPS certificate. Check the documentation for <a href="https://docs.btcpayserver.org/DynamicDNS/" target="_blank">more information</a>.</p> <p>Note that you need to properly configure your NAT and BTCPayServer install to get HTTPS certificate. Check the documentation for <a href="https://docs.btcpayserver.org/DynamicDNS/" target="_blank" rel="noreferrer noopener">more information</a>.</p>
</div> </div>
<form method="post" asp-action="DynamicDnsService"> <form method="post" asp-action="DynamicDnsService">
<button id="AddDynamicDNS" class="btn btn-primary" type="submit"><span class="fa fa-plus"></span> Add Dynamic DNS</button> <button id="AddDynamicDNS" class="btn btn-primary" type="submit"><span class="fa fa-plus"></span> Add Dynamic DNS</button>

View file

@ -12,7 +12,7 @@
<a asp-action="storage" asp-route-forceChoice="true" asp-route-returnurl="@ViewData["ReturnUrl"]"> <a asp-action="storage" asp-route-forceChoice="true" asp-route-returnurl="@ViewData["ReturnUrl"]">
choose your file storage service provider choose your file storage service provider
</a>. </a>.
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-upload-files-to-btcpay" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-upload-files-to-btcpay" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</p> </p>
@ -21,7 +21,7 @@ else
{ {
<p> <p>
Change your <a asp-action="storage" asp-route-forceChoice="true" asp-route-returnurl="@ViewData["ReturnUrl"]">file storage service</a> provider. Change your <a asp-action="storage" asp-route-forceChoice="true" asp-route-returnurl="@ViewData["ReturnUrl"]">file storage service</a> provider.
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-upload-files-to-btcpay" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-upload-files-to-btcpay" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</p> </p>
@ -83,7 +83,7 @@ else
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<strong>Direct URL:</strong> <strong>Direct URL:</strong>
<a href="@Model.DirectFileUrl" target="_blank">@Model.DirectFileUrl</a> <a href="@Model.DirectFileUrl" target="_blank" rel="noreferrer noopener">@Model.DirectFileUrl</a>
</li> </li>
</ul> </ul>
</div> </div>

View file

@ -14,14 +14,14 @@
<div class="form-group"> <div class="form-group">
<p>Lightning charge is a simple API for invoicing on lightning network, you can use it with several plugins:</p> <p>Lightning charge is a simple API for invoicing on lightning network, you can use it with several plugins:</p>
<ul> <ul>
<li><a href="https://github.com/ElementsProject/woocommerce-gateway-lightning" target="_blank">WooCommerce Lightning Gateway</a>: A comprehensive e-commerce application that integrates with stock-management and order-tracking systems</li> <li><a href="https://github.com/ElementsProject/woocommerce-gateway-lightning" target="_blank" rel="noreferrer noopener">WooCommerce Lightning Gateway</a>: A comprehensive e-commerce application that integrates with stock-management and order-tracking systems</li>
<li><a href="https://github.com/ElementsProject/nanopos" target="_blank">Nanopos</a>: A simple point-of-sale system for fixed-price goods</li> <li><a href="https://github.com/ElementsProject/nanopos" target="_blank" rel="noreferrer noopener">Nanopos</a>: A simple point-of-sale system for fixed-price goods</li>
<li><a href="https://github.com/ElementsProject/filebazaar" target="_blank">FileBazaar</a>: A system for selling files such as documents, images, and videos</li> <li><a href="https://github.com/ElementsProject/filebazaar" target="_blank" rel="noreferrer noopener">FileBazaar</a>: A system for selling files such as documents, images, and videos</li>
<li><a href="https://github.com/ElementsProject/wordpress-lightning-publisher" target="_blank">Lightning Publisher for WordPress</a>: A patronage model for unlocking WordPress blog entries</li> <li><a href="https://github.com/ElementsProject/wordpress-lightning-publisher" target="_blank" rel="noreferrer noopener">Lightning Publisher for WordPress</a>: A patronage model for unlocking WordPress blog entries</li>
<li><a href="https://github.com/ElementsProject/paypercall" target="_blank">Paypercall</a>: A programmers toolkit for Lightning that enables micropayments for individual API calls</li> <li><a href="https://github.com/ElementsProject/paypercall" target="_blank" rel="noreferrer noopener">Paypercall</a>: A programmers toolkit for Lightning that enables micropayments for individual API calls</li>
<li><a href="https://github.com/ElementsProject/ifpaytt" target="_blank">Ifpaytt</a>: An extension of paypercall that allows web developers using IFTTT to request payments for service usage</li> <li><a href="https://github.com/ElementsProject/ifpaytt" target="_blank" rel="noreferrer noopener">Ifpaytt</a>: An extension of paypercall that allows web developers using IFTTT to request payments for service usage</li>
<li><a href="https://github.com/ElementsProject/lightning-jukebox" target="_blank">Lightning Jukebox</a>: A fun demo that reimagines a classic technology for the Lightning Network</li> <li><a href="https://github.com/ElementsProject/lightning-jukebox" target="_blank" rel="noreferrer noopener">Lightning Jukebox</a>: A fun demo that reimagines a classic technology for the Lightning Network</li>
<li><a href="https://github.com/ElementsProject/nanotip" target="_blank">Nanotip</a>: The simple tip jar, rebuilt to issue Lightning Network invoices</li> <li><a href="https://github.com/ElementsProject/nanotip" target="_blank" rel="noreferrer noopener">Nanotip</a>: The simple tip jar, rebuilt to issue Lightning Network invoices</li>
</ul> </ul>
</div> </div>
</div> </div>

View file

@ -27,7 +27,7 @@
<div class="form-group"> <div class="form-group">
<h5>Browser connection</h5> <h5>Browser connection</h5>
<p> <p>
<span>You can go to @Model.WalletName from your browser by <a href="@Model.ServiceLink">clicking here</a><br/></span> <span>You can go to @Model.WalletName from your browser by <a href="@Model.ServiceLink" rel="noreferrer noopener">clicking here</a><br/></span>
</p> </p>
</div> </div>

View file

@ -11,7 +11,7 @@
<div class="col-lg-8"> <div class="col-lg-8">
<div class="form-group"> <div class="form-group">
<p>The LND seed backup is useful to recover funds of your LND wallet in case of a corruption of your server.</p> <p>The LND seed backup is useful to recover funds of your LND wallet in case of a corruption of your server.</p>
<p>The recovering process is documented by LND on <a href="https://github.com/lightningnetwork/lnd/blob/master/docs/recovery.md">this page</a>.</p> <p>The recovering process is documented by LND on <a href="https://github.com/lightningnetwork/lnd/blob/master/docs/recovery.md" rel="noreferrer noopener">this page</a>.</p>
</div> </div>
<a class="btn btn-primary @(Model.Removed ? "collapse" : "")" id="details" href="#">See confidential seed information</a> <a class="btn btn-primary @(Model.Removed ? "collapse" : "")" id="details" href="#">See confidential seed information</a>
<div class="form-group @(Model.Removed ? "" : "collapse")"> <div class="form-group @(Model.Removed ? "" : "collapse")">

View file

@ -15,22 +15,22 @@
<div> <div>
@if (Model.Uri == null) // if GRPC @if (Model.Uri == null) // if GRPC
{ {
<a href="https://www.pebble.indiesquare.me/" target="_blank" class="d-inline-block me-3 text-center"> <a href="https://www.pebble.indiesquare.me/" target="_blank" class="d-inline-block me-3 text-center" rel="noreferrer noopener">
<img src="~/img/pebblewallet.jpg" width="100" height="100" asp-append-version="true" alt="Pebble" /> <img src="~/img/pebblewallet.jpg" width="100" height="100" asp-append-version="true" alt="Pebble" />
<div class="mt-2">Pebble</div> <div class="mt-2">Pebble</div>
</a> </a>
<a href="https://zaphq.io/" target="_blank" class="d-inline-block me-3 text-center"> <a href="https://zaphq.io/" target="_blank" class="d-inline-block me-3 text-center" rel="noreferrer noopener">
<img src="~/img/zapwallet.jpg" width="100" height="100" asp-append-version="true" alt="Zap" /> <img src="~/img/zapwallet.jpg" width="100" height="100" asp-append-version="true" alt="Zap" />
<div class="mt-2">Zap</div> <div class="mt-2">Zap</div>
</a> </a>
} }
else else
{ {
<a href="https://lightningjoule.com/" target="_blank" class="d-inline-block me-3 mb-3 text-center"> <a href="https://lightningjoule.com/" target="_blank" class="d-inline-block me-3 mb-3 text-center" rel="noreferrer noopener">
<img src="~/img/joule.png" width="100" height="100" asp-append-version="true" alt="Joule" /> <img src="~/img/joule.png" width="100" height="100" asp-append-version="true" alt="Joule" />
<div class="mt-2">Joule</div> <div class="mt-2">Joule</div>
</a> </a>
<a href="https://github.com/ZeusLN/zeus" target="_blank" class="d-inline-block me-3 mb-3 text-center"> <a href="https://github.com/ZeusLN/zeus" target="_blank" class="d-inline-block me-3 mb-3 text-center" rel="noreferrer noopener">
<img src="~/img/zeus.jpg" width="100" height="100" asp-append-version="true" alt="Zeus" /> <img src="~/img/zeus.jpg" width="100" height="100" asp-append-version="true" alt="Zeus" />
<div class="mt-2">Zeus</div> <div class="mt-2">Zeus</div>
</a> </a>
@ -64,7 +64,7 @@
<input asp-for="QRCode" class="form-control" readonly /> <input asp-for="QRCode" class="form-control" readonly />
</div> </div>
<p> <p>
Click <a href="@Model.QRCodeLink" target="_blank">here</a> to open the configuration file. Click <a href="@Model.QRCodeLink" target="_blank" rel="noreferrer noopener">here</a> to open the configuration file.
</p> </p>
</div> </div>
} }

View file

@ -9,7 +9,7 @@
<div class="row mb-5"> <div class="row mb-5">
<div class="col-lg-6"> <div class="col-lg-6">
<h4 class="mb-3">Domain name</h4> <h4 class="mb-3">Domain name</h4>
<p>You can change the domain name of your server by following <a href="https://docs.btcpayserver.org/ChangeDomain" target="_blank">this guide</a>.</p> <p>You can change the domain name of your server by following <a href="https://docs.btcpayserver.org/ChangeDomain" target="_blank" rel="noreferrer noopener">this guide</a>.</p>
<div class="row g-1"> <div class="row g-1">
<div class="col"> <div class="col">

View file

@ -30,11 +30,11 @@
<h4 class="mb-3">Compatible wallets</h4> <h4 class="mb-3">Compatible wallets</h4>
<div> <div>
<a href="https://play.google.com/store/apps/details?id=com.greenaddress.greenbits_android_wallet" target="_blank" class="d-inline-block me-3 mb-3 text-center"> <a href="https://play.google.com/store/apps/details?id=com.greenaddress.greenbits_android_wallet" target="_blank" class="d-inline-block me-3 mb-3 text-center" rel="noreferrer noopener">
<img src="~/img/GreenWallet.png" width="100" height="100" asp-append-version="true" alt="Blockstream Green" /> <img src="~/img/GreenWallet.png" width="100" height="100" asp-append-version="true" alt="Blockstream Green" />
<div class="mt-2">Blockstream Green</div> <div class="mt-2">Blockstream Green</div>
</a> </a>
<a href="https://www.wasabiwallet.io/" target="_blank" class="d-inline-block me-3 mb-3 text-center"> <a href="https://www.wasabiwallet.io/" target="_blank" class="d-inline-block me-3 mb-3 text-center" rel="noreferrer noopener">
<img src="~/img/wasabi.png" width="100" height="100" asp-append-version="true" alt="Wasabi Wallet" /> <img src="~/img/wasabi.png" width="100" height="100" asp-append-version="true" alt="Wasabi Wallet" />
<div class="mt-2">Wasabi Wallet</div> <div class="mt-2">Wasabi Wallet</div>
</a> </a>

View file

@ -19,7 +19,7 @@
<div class="form-check my-1"> <div class="form-check my-1">
<input asp-for="AllowLightningInternalNodeForAll" type="checkbox" class="form-check-input"/> <input asp-for="AllowLightningInternalNodeForAll" type="checkbox" class="form-check-input"/>
<label asp-for="AllowLightningInternalNodeForAll" class="form-check-label"></label> <label asp-for="AllowLightningInternalNodeForAll" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-LightningNetwork/#how-many-users-can-use-lightning-network-in-btcpay" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-LightningNetwork/#how-many-users-can-use-lightning-network-in-btcpay" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<span asp-validation-for="AllowLightningInternalNodeForAll" class="text-danger"></span> <span asp-validation-for="AllowLightningInternalNodeForAll" class="text-danger"></span>
@ -27,7 +27,7 @@
<div class="form-check my-1"> <div class="form-check my-1">
<input asp-for="AllowHotWalletForAll" type="checkbox" class="form-check-input"/> <input asp-for="AllowHotWalletForAll" type="checkbox" class="form-check-input"/>
<label asp-for="AllowHotWalletForAll" class="form-check-label"></label> <label asp-for="AllowHotWalletForAll" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/CreateWallet/#requirements-to-create-wallets" target="_blank"> <a href="https://docs.btcpayserver.org/CreateWallet/#requirements-to-create-wallets" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<span asp-validation-for="AllowHotWalletForAll" class="text-danger"></span> <span asp-validation-for="AllowHotWalletForAll" class="text-danger"></span>
@ -50,7 +50,7 @@
} }
<input asp-for="RequiresConfirmedEmail" type="checkbox" class="form-check-input" disabled="@(isEmailConfigured ? null : "disabled")"/> <input asp-for="RequiresConfirmedEmail" type="checkbox" class="form-check-input" disabled="@(isEmailConfigured ? null : "disabled")"/>
<label asp-for="RequiresConfirmedEmail" class="form-check-label"></label> <label asp-for="RequiresConfirmedEmail" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-allow-registration-on-my-btcpay-server" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-allow-registration-on-my-btcpay-server" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<span asp-validation-for="RequiresConfirmedEmail" class="text-danger"></span> <span asp-validation-for="RequiresConfirmedEmail" class="text-danger"></span>
@ -79,7 +79,7 @@
<div class="form-check my-1"> <div class="form-check my-1">
<input asp-for="DisableInstantNotifications" type="checkbox" class="form-check-input"/> <input asp-for="DisableInstantNotifications" type="checkbox" class="form-check-input"/>
<label asp-for="DisableInstantNotifications" class="form-check-label"></label> <label asp-for="DisableInstantNotifications" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/Notifications/#notifications" target="_blank"> <a href="https://docs.btcpayserver.org/Notifications/#notifications" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<span asp-validation-for="DisableInstantNotifications" class="text-danger"></span> <span asp-validation-for="DisableInstantNotifications" class="text-danger"></span>
@ -87,7 +87,7 @@
<div class="form-check my-1"> <div class="form-check my-1">
<input asp-for="DisableStoresToUseServerEmailSettings" type="checkbox" class="form-check-input"/> <input asp-for="DisableStoresToUseServerEmailSettings" type="checkbox" class="form-check-input"/>
<label asp-for="DisableStoresToUseServerEmailSettings" class="form-check-label"></label> <label asp-for="DisableStoresToUseServerEmailSettings" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/Notifications/#server-emails" target="_blank"> <a href="https://docs.btcpayserver.org/Notifications/#server-emails" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<span asp-validation-for="DisableStoresToUseServerEmailSettings" class="text-danger"></span> <span asp-validation-for="DisableStoresToUseServerEmailSettings" class="text-danger"></span>
@ -107,7 +107,7 @@
<div class="form-check my-1"> <div class="form-check my-1">
<input asp-for="DiscourageSearchEngines" type="checkbox" class="form-check-input"/> <input asp-for="DiscourageSearchEngines" type="checkbox" class="form-check-input"/>
<label asp-for="DiscourageSearchEngines" class="form-check-label"></label> <label asp-for="DiscourageSearchEngines" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-hide-my-btcpay-server-from-search-engines" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-hide-my-btcpay-server-from-search-engines" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<span asp-validation-for="DiscourageSearchEngines" class="text-danger"></span> <span asp-validation-for="DiscourageSearchEngines" class="text-danger"></span>
@ -191,7 +191,7 @@
<label class="form-label">@network.DisplayName (@network.CryptoCode)</label> <label class="form-label">@network.DisplayName (@network.CryptoCode)</label>
<input type="hidden" asp-for="BlockExplorerLinks[i].CryptoCode" value="@network.CryptoCode"/> <input type="hidden" asp-for="BlockExplorerLinks[i].CryptoCode" value="@network.CryptoCode"/>
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control" asp-for="BlockExplorerLinks[i].Link" value="@linkValue" data-default-link="@network.BlockExplorerLinkDefault"/> <input type="text" class="form-control" asp-for="BlockExplorerLinks[i].Link" value="@linkValue" rel="noreferrer noopener" data-default-link="@network.BlockExplorerLinkDefault"/>
<button type="button" class="btn btn-secondary only-for-js" title="Revert to default"> <button type="button" class="btn btn-secondary only-for-js" title="Revert to default">
<span class="fa fa-refresh"></span> <span class="fa fa-refresh"></span>
</button> </button>

View file

@ -30,11 +30,11 @@
<h4 class="mb-3">Compatible wallets</h4> <h4 class="mb-3">Compatible wallets</h4>
<div> <div>
<a href="https://apps.apple.com/us/app/fully-noded/id1436425586" target="_blank" class="d-inline-block me-3 text-center"> <a href="https://apps.apple.com/us/app/fully-noded/id1436425586" target="_blank" class="d-inline-block me-3 text-center" rel="noreferrer noopener">
<img src="~/img/fullynoded.png" width="100" height="100" asp-append-version="true" alt="Fully Noded" /> <img src="~/img/fullynoded.png" width="100" height="100" asp-append-version="true" alt="Fully Noded" />
<div class="mt-2">Fully Noded</div> <div class="mt-2">Fully Noded</div>
</a> </a>
<a href="https://github.com/cryptoadvance/specter-desktop" target="_blank" class="d-inline-block me-3 text-center"> <a href="https://github.com/cryptoadvance/specter-desktop" target="_blank" class="d-inline-block me-3 text-center" rel="noreferrer noopener">
<img src="~/img/specter.png" width="100" height="100" asp-append-version="true" alt="Specter Desktop" /> <img src="~/img/specter.png" width="100" height="100" asp-append-version="true" alt="Specter Desktop" />
<div class="mt-2">Specter Desktop</div> <div class="mt-2">Specter Desktop</div>
</a> </a>

View file

@ -64,7 +64,7 @@
<tr> <tr>
<td>@s.Name</td> <td>@s.Name</td>
<td style="text-align: right"> <td style="text-align: right">
<a href="@s.Link" target="_blank">See information</a> <a href="@s.Link" target="_blank" rel="noreferrer noopener">See information</a>
</td> </td>
</tr> </tr>
} }
@ -91,7 +91,7 @@
<tr> <tr>
<td>@s.Name</td> <td>@s.Name</td>
<td style="text-align: right"> <td style="text-align: right">
<a href="@s.Link" target="_blank">See information</a> <a href="@s.Link" target="_blank" rel="noreferrer noopener">See information</a>
</td> </td>
</tr> </tr>
} }
@ -143,7 +143,7 @@
<tr> <tr>
<td>@s.Name</td> <td>@s.Name</td>
<td style="text-align: right"> <td style="text-align: right">
<a href="@s.Link">Edit</a> <a href="@s.Link" rel="noreferrer noopener">Edit</a>
</td> </td>
</tr> </tr>
} }

View file

@ -26,7 +26,7 @@
</div> </div>
<div class="form-group mb-5"> <div class="form-group mb-5">
<label asp-for="CustomThemeCssUri" class="form-label"></label> <label asp-for="CustomThemeCssUri" class="form-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#1-custom-themes" target="_blank"> <a href="https://docs.btcpayserver.org/Theme/#1-custom-themes" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<input asp-for="CustomThemeCssUri" class="form-control" /> <input asp-for="CustomThemeCssUri" class="form-control" />
@ -36,14 +36,14 @@
<h4 class="mb-3">Bootstrap theme</h4> <h4 class="mb-3">Bootstrap theme</h4>
<div class="form-group"> <div class="form-group">
<label asp-for="BootstrapCssUri" class="form-label"></label> <label asp-for="BootstrapCssUri" class="form-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank"> <a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<input asp-for="BootstrapCssUri" class="form-control" /> <input asp-for="BootstrapCssUri" class="form-control" />
<span asp-validation-for="BootstrapCssUri" class="text-danger"></span> <span asp-validation-for="BootstrapCssUri" class="text-danger"></span>
<p class="form-text text-muted"> <p class="form-text text-muted">
<a href="https://pikock.github.io/bootstrap-magic/app/index.html" target="_blank">Build your own theme</a> <a href="https://pikock.github.io/bootstrap-magic/app/index.html" target="_blank" rel="noreferrer noopener">Build your own theme</a>
or <a href="https://bootswatch.com/" target="_blank">pick one already made</a> or <a href="https://bootswatch.com/" target="_blank" rel="noreferrer noopener">pick one already made</a>
</p> </p>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -51,7 +51,7 @@
<input asp-for="CreativeStartCssUri" class="form-control" /> <input asp-for="CreativeStartCssUri" class="form-control" />
<span asp-validation-for="CreativeStartCssUri" class="text-danger"></span> <span asp-validation-for="CreativeStartCssUri" class="text-danger"></span>
<p class="form-text text-muted"> <p class="form-text text-muted">
<a href="https://startbootstrap.com/template-overviews/creative/" target="_blank">Creative Start theme</a> <a href="https://startbootstrap.com/template-overviews/creative/" target="_blank" rel="noreferrer noopener">Creative Start theme</a>
is used on top of Bootstrap is used on top of Bootstrap
</p> </p>
</div> </div>

View file

@ -3,6 +3,6 @@
<p>To complete payment, please send <b>@Model.BtcDue @Model.CryptoCode</b> to <b style="word-break: break-word;">@Model.BtcAddress</b></p> <p>To complete payment, please send <b>@Model.BtcDue @Model.CryptoCode</b> to <b style="word-break: break-word;">@Model.BtcAddress</b></p>
<p>Time remaining: @Model.TimeLeft</p> <p>Time remaining: @Model.TimeLeft</p>
<p> <p>
<a href="@Model.InvoiceBitcoinUrl" style="word-break: break-word;">@Model.InvoiceBitcoinUrl</a> <a href="@Model.InvoiceBitcoinUrl" style="word-break: break-word;" rel="noreferrer noopener">@Model.InvoiceBitcoinUrl</a>
</p> </p>
</div> </div>

View file

@ -71,7 +71,7 @@
<td class="payment-value">@payment.CryptoPaymentData.GetValue() @Safe.Raw(payment.AdditionalInformation is string i ? $"<br/>({i})" : string.Empty)</td> <td class="payment-value">@payment.CryptoPaymentData.GetValue() @Safe.Raw(payment.AdditionalInformation is string i ? $"<br/>({i})" : string.Empty)</td>
<td style="max-width:300px;" data-bs-toggle="tooltip" class="text-truncate" title="@payment.TransactionId"> <td style="max-width:300px;" data-bs-toggle="tooltip" class="text-truncate" title="@payment.TransactionId">
<div class="wraptextAuto"> <div class="wraptextAuto">
<a href="@payment.TransactionLink" target="_blank"> <a href="@payment.TransactionLink" target="_blank" rel="noreferrer noopener">
@payment.TransactionId @payment.TransactionId
</a> </a>
</div> </div>

View file

@ -30,7 +30,7 @@
@if (!string.IsNullOrEmpty(Model.Action)) @if (!string.IsNullOrEmpty(Model.Action))
{ {
<form method="post" class="modal-footer justify-content-center" action="@Model.ActionUrl"> <form method="post" class="modal-footer justify-content-center" action="@Model.ActionUrl" rel="noreferrer noopener">
<button type="submit" class="btn @Model.ButtonClass xmx-2" id="continue" style="min-width:25%;">@Model.Action</button> <button type="submit" class="btn @Model.ButtonClass xmx-2" id="continue" style="min-width:25%;">@Model.Action</button>
<button type="submit" class="btn btn-secondary mx-2" onclick="history.back(); return false;" style="min-width:25%;">Go back</button> <button type="submit" class="btn btn-secondary mx-2" onclick="history.back(); return false;" style="min-width:25%;">Go back</button>
</form> </form>

View file

@ -26,9 +26,9 @@
<div> <div>
Possible free options are Possible free options are
<ul> <ul>
<li><a href="https://medium.com/linkpool/release-of-public-ethereum-rpcs-f5dd57455d2e" target="_blank">linkpool.io</a> - Free, just set the url to <code>https://main-rpc.linkpool.io</code></li> <li><a href="https://medium.com/linkpool/release-of-public-ethereum-rpcs-f5dd57455d2e" target="_blank" rel="noreferrer noopener">linkpool.io</a> - Free, just set the url to <code>https://main-rpc.linkpool.io</code></li>
<li><a href="https://chainstack.com/" target="_blank">chainstack.com</a> - Free plan, choose shared public node</li> <li><a href="https://chainstack.com/" target="_blank" rel="noreferrer noopener">chainstack.com</a> - Free plan, choose shared public node</li>
<li><a href="https://infura.io/" target="_blank">infura.io</a> - Free tier but limited calls per day</li> <li><a href="https://infura.io/" target="_blank" rel="noreferrer noopener">infura.io</a> - Free tier but limited calls per day</li>
<li>Your own geth/openethereum node</li> <li>Your own geth/openethereum node</li>
</ul> </ul>
</div> </div>

View file

@ -47,7 +47,7 @@
<td>@payment.Amount</td> <td>@payment.Amount</td>
<td> <td>
<div class="wraptextAuto"> <div class="wraptextAuto">
<a href="@payment.BalanceLink" target="_blank"> <a href="@payment.BalanceLink" target="_blank" rel="noreferrer noopener">
@payment.DepositAddress @payment.DepositAddress
</a> </a>

View file

@ -19,9 +19,9 @@
<partial name="@provider.Partial"/> <partial name="@provider.Partial"/>
} }
<p> <p>
<a href="https://www.youtube.com/watch?v=OrYDehC-8TU" target="_blank">Watch this video</a> to understand the importance of blockchain synchronization. <a href="https://www.youtube.com/watch?v=OrYDehC-8TU" target="_blank" rel="noreferrer noopener">Watch this video</a> to understand the importance of blockchain synchronization.
</p> </p>
<p class="mb-0">If you really don't want to synch and you are familiar with the command line, check <a href="https://github.com/btcpayserver/btcpayserver-docker/blob/master/contrib/FastSync/README.md" target="_blank">FastSync</a>.</p> <p class="mb-0">If you really don't want to synch and you are familiar with the command line, check <a href="https://github.com/btcpayserver/btcpayserver-docker/blob/master/contrib/FastSync/README.md" target="_blank" rel="noreferrer noopener">FastSync</a>.</p>
</div> </div>
</div> </div>
</div> </div>

View file

@ -3,7 +3,7 @@
<p>To complete payment, please send <b>@Model.BtcDue @Model.CryptoCode</b> to <b style="word-break: break-word;">@Model.BtcAddress</b></p> <p>To complete payment, please send <b>@Model.BtcDue @Model.CryptoCode</b> to <b style="word-break: break-word;">@Model.BtcAddress</b></p>
<p>Time remaining: @Model.TimeLeft</p> <p>Time remaining: @Model.TimeLeft</p>
<p> <p>
<a href="@Model.InvoiceBitcoinUrl" style="word-break: break-word;">@Model.InvoiceBitcoinUrl</a> <a href="@Model.InvoiceBitcoinUrl" style="word-break: break-word;" rel="noreferrer noopener">@Model.InvoiceBitcoinUrl</a>
</p> </p>
<p>Peer Info: <b>@Model.PeerInfo</b></p> <p>Peer Info: <b>@Model.PeerInfo</b></p>
</div> </div>

View file

@ -53,7 +53,7 @@
<td>@payment.Amount</td> <td>@payment.Amount</td>
<td> <td>
<div class="wraptextAuto"> <div class="wraptextAuto">
<a href="@payment.TransactionLink" target="_blank"> <a href="@payment.TransactionLink" target="_blank" rel="noreferrer noopener">
@payment.TransactionId @payment.TransactionId
</a> </a>
</div> </div>

View file

@ -17,7 +17,7 @@
<title>Post Redirect</title> <title>Post Redirect</title>
</head> </head>
<body> <body>
<form method="post" id="postform" action="@action"> <form method="post" id="postform" action="@action" rel="noreferrer noopener">
@Html.AntiForgeryToken() @Html.AntiForgeryToken()
@foreach (var o in Model.Parameters) @foreach (var o in Model.Parameters)
{ {

View file

@ -10,7 +10,7 @@
<span class="d-flex flex-wrap flex-fill flex-column flex-sm-row"> <span class="d-flex flex-wrap flex-fill flex-column flex-sm-row">
<strong class="me-3"> <strong class="me-3">
Shopify Shopify
<a href="https://docs.btcpayserver.org/Shopify" target="_blank"> <a href="https://docs.btcpayserver.org/Shopify" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o" title="More information..."></span> <span class="fa fa-question-circle-o" title="More information..."></span>
</a> </a>
</strong> </strong>

View file

@ -3,24 +3,24 @@
</h5> </h5>
<div class="row justify-content-center mb-2"> <div class="row justify-content-center mb-2">
<div class="p-3 text-center" style="flex-basis:105px;"> <div class="p-3 text-center" style="flex-basis:105px;">
<a href="https://kraken.com" target="_blank" class="text-muted small"> <a href="https://kraken.com" target="_blank" class="text-muted small" rel="noreferrer noopener">
<img src="~/img/kraken.svg" alt="Sponsor Kraken" height="50" asp-append-version="true"/> <img src="~/img/kraken.svg" alt="Sponsor Kraken" height="50" asp-append-version="true"/>
<span class="d-block mt-3">Kraken</span> <span class="d-block mt-3">Kraken</span>
</a> </a>
</div> </div>
<div class="p-3 text-center" style="flex-basis:105px;"> <div class="p-3 text-center" style="flex-basis:105px;">
<a href="https://twitter.com/sqcrypto" target="_blank" class="text-muted small"> <a href="https://twitter.com/sqcrypto" target="_blank" class="text-muted small" rel="noreferrer noopener">
<img src="~/img/squarecrypto.svg" alt="Sponsor Square Crypto" height="50" asp-append-version="true"/> <img src="~/img/squarecrypto.svg" alt="Sponsor Square Crypto" height="50" asp-append-version="true"/>
<span class="d-block mt-3">Square Crypto</span> <span class="d-block mt-3">Square Crypto</span>
</a> </a>
</div> </div>
<div class="p-3 text-center" style="flex-basis:105px;"> <div class="p-3 text-center" style="flex-basis:105px;">
<a href="https://www.pnxbet.com" target="_blank" class="text-muted small"> <a href="https://www.pnxbet.com" target="_blank" class="text-muted small" rel="noreferrer noopener">
<img src="~/img/pnxbet.png" alt="Sponsor PNXBET" height="50" width="50" asp-append-version="true"/> <img src="~/img/pnxbet.png" alt="Sponsor PNXBET" height="50" width="50" asp-append-version="true"/>
<span class="d-block mt-3">PNXBET</span> <span class="d-block mt-3">PNXBET</span>
</a> </a>
</div> </div>
</div> </div>
<p class="text-center"> <p class="text-center">
<a href="https://foundation.btcpayserver.org" target="_blank">View all supporters</a> <a href="https://foundation.btcpayserver.org" target="_blank" rel="noreferrer noopener">View all supporters</a>
</p> </p>

View file

@ -90,7 +90,7 @@
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close">
<vc:icon symbol="close" /> <vc:icon symbol="close" />
</button> </button>
<span>BTCPay is expecting you to access this website from <b>@(Env.ExpectedProtocol)://@(Env.ExpectedHost)/</b>. If you use a reverse proxy, please set the <b>X-Forwarded-Proto</b> header to <b id="browserScheme">@(Env.ExpectedProtocol)</b> (<a href="https://docs.btcpayserver.org/FAQ/FAQ-Deployment/#cause-3-btcpay-is-expecting-you-to-access-this-website-from" target="_blank" class="alert-link">More information</a>)</span> <span>BTCPay is expecting you to access this website from <b>@(Env.ExpectedProtocol)://@(Env.ExpectedHost)/</b>. If you use a reverse proxy, please set the <b>X-Forwarded-Proto</b> header to <b id="browserScheme">@(Env.ExpectedProtocol)</b> (<a href="https://docs.btcpayserver.org/FAQ/FAQ-Deployment/#cause-3-btcpay-is-expecting-you-to-access-this-website-from" target="_blank" class="alert-link" rel="noreferrer noopener">More information</a>)</span>
</div> </div>
@if (!Env.IsSecure) @if (!Env.IsSecure)
{ {
@ -113,7 +113,7 @@
{ {
<footer class="footer"> <footer class="footer">
<div class="container"> <div class="container">
<div class="float-start">Logo made with 💚 by <a href="https://ibukingdom.themedia.jp/" target="_blank">Ibuki</a></div> <div class="float-start">Logo made with 💚 by <a href="https://ibukingdom.themedia.jp/" target="_blank" rel="noreferrer noopener">Ibuki</a></div>
<div class="text-end">@Env.ToString()</div> <div class="text-end">@Env.ToString()</div>
</div> </div>
</footer> </footer>

View file

@ -15,7 +15,7 @@
<h4 class="mb-3"> <h4 class="mb-3">
Shopify Shopify
<small> <small>
<a href="https://docs.btcpayserver.org/Shopify" target="_blank"> <a href="https://docs.btcpayserver.org/Shopify" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</small> </small>
@ -63,14 +63,14 @@
</div> </div>
<div class="alert alert-warning"> <div class="alert alert-warning">
<p> <p>
In Shopify please paste following script at <a href="@shopifyUrl/admin/settings/checkout#PolarisTextField1" target="_blank" class="fw-bold"> Settings &gt; Checkout &gt; Order Processing &gt; Additional Scripts</a> In Shopify please paste following script at <a href="@shopifyUrl/admin/settings/checkout#PolarisTextField1" target="_blank" class="fw-bold" rel="noreferrer noopener"> Settings &gt; Checkout &gt; Order Processing &gt; Additional Scripts</a>
</p> </p>
<kbd style="display: block; word-break: break-all;"> <kbd style="display: block; word-break: break-all;">
@($"<script src='{Url.Action("ShopifyJavascript", "Shopify", new {storeId = Context.GetRouteValue("storeId")}, Context.Request.Scheme)}'></script>") @($"<script src='{Url.Action("ShopifyJavascript", "Shopify", new {storeId = Context.GetRouteValue("storeId")}, Context.Request.Scheme)}'></script>")
</kbd> </kbd>
</div> </div>
<p class="alert alert-warning"> <p class="alert alert-warning">
In Shopify please add a payment method at <a target="_blank" href="@shopifyUrl/admin/settings/payments" class="fw-bold"> Settings &gt; Payments &gt; Manual Payment Methods</a> with the name <kbd>Bitcoin with BTCPay Server</kbd> In Shopify please add a payment method at <a target="_blank" href="@shopifyUrl/admin/settings/payments" class="fw-bold" rel="noreferrer noopener"> Settings &gt; Payments &gt; Manual Payment Methods</a> with the name <kbd>Bitcoin with BTCPay Server</kbd>
</p> </p>
<p class="alert alert-success"> <p class="alert alert-success">

View file

@ -93,7 +93,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label asp-for="CustomLogo" class="form-label"></label> <label asp-for="CustomLogo" class="form-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#checkout-page-themes" target="_blank"> <a href="https://docs.btcpayserver.org/Theme/#checkout-page-themes" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<input asp-for="CustomLogo" class="form-control"/> <input asp-for="CustomLogo" class="form-control"/>
@ -101,7 +101,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label asp-for="CustomCSS" class="form-label"></label> <label asp-for="CustomCSS" class="form-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#checkout-page-themes" target="_blank"> <a href="https://docs.btcpayserver.org/Theme/#checkout-page-themes" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<input asp-for="CustomCSS" class="form-control"/> <input asp-for="CustomCSS" class="form-control"/>

View file

@ -15,7 +15,7 @@
<h1>@ViewData["Title"]</h1> <h1>@ViewData["Title"]</h1>
<p class="lead text-secondary mt-3"> <p class="lead text-secondary mt-3">
This key, also called "xpub", is used to generate individual destination addresses for your invoices. This key, also called "xpub", is used to generate individual destination addresses for your invoices.
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Wallet/#what-is-a-derivation-scheme" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-Wallet/#what-is-a-derivation-scheme" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</p> </p>

View file

@ -18,10 +18,10 @@
<h4 class="mt-5 mb-3">Other Integrations</h4> <h4 class="mt-5 mb-3">Other Integrations</h4>
<p>Take a look at documentation for the list of other integrations we support and the directions on how to enable them:</p> <p>Take a look at documentation for the list of other integrations we support and the directions on how to enable them:</p>
<ul> <ul>
<li><a href="https://docs.btcpayserver.org/WooCommerce/" target="_blank">WooCommerce</a></li> <li><a href="https://docs.btcpayserver.org/WooCommerce/" target="_blank" rel="noreferrer noopener">WooCommerce</a></li>
<li><a href="https://docs.btcpayserver.org/Drupal/" target="_blank">Drupal</a></li> <li><a href="https://docs.btcpayserver.org/Drupal/" target="_blank" rel="noreferrer noopener">Drupal</a></li>
<li><a href="https://docs.btcpayserver.org/Magento/" target="_blank">Magento</a></li> <li><a href="https://docs.btcpayserver.org/Magento/" target="_blank" rel="noreferrer noopener">Magento</a></li>
<li><a href="https://docs.btcpayserver.org/PrestaShop/" target="_blank">PrestaShop</a></li> <li><a href="https://docs.btcpayserver.org/PrestaShop/" target="_blank" rel="noreferrer noopener">PrestaShop</a></li>
</ul> </ul>
</div> </div>
</div> </div>

View file

@ -11,7 +11,7 @@
<vc:icon symbol="close" /> <vc:icon symbol="close" />
</button> </button>
Warning: No wallet has been linked to your BTCPay Store.<br/> Warning: No wallet has been linked to your BTCPay Store.<br/>
See <a href="https://docs.btcpayserver.org/WalletSetup/" target="_blank" class="alert-link">this link</a> for more information on how to connect your store and wallet. See <a href="https://docs.btcpayserver.org/WalletSetup/" target="_blank" class="alert-link" rel="noreferrer noopener">this link</a> for more information on how to connect your store and wallet.
</div> </div>
} }
@ -26,7 +26,7 @@
</div> </div>
<p>Authorize a public key to access Bitpay compatible Invoice API. <p>Authorize a public key to access Bitpay compatible Invoice API.
<a href="https://support.bitpay.com/hc/en-us/articles/115003001183-How-do-I-pair-my-client-and-create-a-token-" target="_blank"> <a href="https://support.bitpay.com/hc/en-us/articles/115003001183-How-do-I-pair-my-client-and-create-a-token-" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</p> </p>

View file

@ -18,7 +18,7 @@
<div class="form-group"> <div class="form-group">
<h5>Scripting</h5> <h5>Scripting</h5>
<p>Rate script allows you to express precisely how you want to calculate rates for currency pairs.</p> <p>Rate script allows you to express precisely how you want to calculate rates for currency pairs.</p>
<p>We are retrieving the rate of each exchange either directly, or via <a href="https://www.coingecko.com/" target="_blank">CoinGecko (free)</a>.</p> <p>We are retrieving the rate of each exchange either directly, or via <a href="https://www.coingecko.com/" target="_blank" rel="noreferrer noopener">CoinGecko (free)</a>.</p>
<div class="accordion" id="accordion-info"> <div class="accordion" id="accordion-info">
<div class="accordion-item"> <div class="accordion-item">
@ -32,7 +32,7 @@
<div class="accordion-body"> <div class="accordion-body">
@foreach (var exchange in Model.AvailableExchanges.Where(a => a.Source == BTCPayServer.Rating.RateSource.Direct)) @foreach (var exchange in Model.AvailableExchanges.Where(a => a.Source == BTCPayServer.Rating.RateSource.Direct))
{ {
<a href="@exchange.Url">@exchange.Id</a><span>&nbsp;</span> <a href="@exchange.Url" rel="noreferrer noopener">@exchange.Id</a><span>&nbsp;</span>
} }
</div> </div>
</div> </div>
@ -48,7 +48,7 @@
<div class="accordion-body"> <div class="accordion-body">
@foreach (var exchange in Model.AvailableExchanges.Where(a => a.Source == BTCPayServer.Rating.RateSource.Coingecko)) @foreach (var exchange in Model.AvailableExchanges.Where(a => a.Source == BTCPayServer.Rating.RateSource.Coingecko))
{ {
<a href="@exchange.Url">@exchange.Id</a><span>&nbsp;</span> <a href="@exchange.Url" rel="noreferrer noopener">@exchange.Id</a><span>&nbsp;</span>
} }
</div> </div>
</div> </div>
@ -157,7 +157,7 @@
<select asp-for="PreferredExchange" asp-items="Model.Exchanges" class="form-select"></select> <select asp-for="PreferredExchange" asp-items="Model.Exchanges" class="form-select"></select>
<span asp-validation-for="PreferredExchange" class="text-danger"></span> <span asp-validation-for="PreferredExchange" class="text-danger"></span>
<p id="PreferredExchangeHelpBlock" class="form-text text-muted"> <p id="PreferredExchangeHelpBlock" class="form-text text-muted">
Current Rates source is <a href="@Model.RateSource" target="_blank">@Model.PreferredExchange</a>. Current Rates source is <a href="@Model.RateSource" target="_blank" rel="noreferrer noopener">@Model.PreferredExchange</a>.
</p> </p>
</div> </div>
<p> <p>

View file

@ -11,7 +11,7 @@
<p class="text-secondary text-start mb-0"> <p class="text-secondary text-start mb-0">
Please understand that the Lightning Network is still under active development and considered experimental. Please understand that the Lightning Network is still under active development and considered experimental.
Before you proceed, take time to familiarize yourself with the risks. Before you proceed, take time to familiarize yourself with the risks.
<a href="https://docs.btcpayserver.org/LightningNetwork/" target="_blank">More information</a> <a href="https://docs.btcpayserver.org/LightningNetwork/" target="_blank" rel="noreferrer noopener">More information</a>
</p> </p>
</div> </div>
</header> </header>

View file

@ -178,7 +178,7 @@
<div class="form-group d-flex align-items-center"> <div class="form-group d-flex align-items-center">
<input asp-for="AnyoneCanCreateInvoice" type="checkbox" class="btcpay-toggle me-2" /> <input asp-for="AnyoneCanCreateInvoice" type="checkbox" class="btcpay-toggle me-2" />
<label asp-for="AnyoneCanCreateInvoice" class="form-label mb-0 me-1"></label> <label asp-for="AnyoneCanCreateInvoice" class="form-label mb-0 me-1"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#allow-anyone-to-create-invoice" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#allow-anyone-to-create-invoice" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</div> </div>
@ -188,7 +188,7 @@
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<input asp-for="PayJoinEnabled" type="checkbox" class="btcpay-toggle me-2"/> <input asp-for="PayJoinEnabled" type="checkbox" class="btcpay-toggle me-2"/>
<label asp-for="PayJoinEnabled" class="form-label mb-0 me-1"></label> <label asp-for="PayJoinEnabled" class="form-label mb-0 me-1"></label>
<a href="https://docs.btcpayserver.org/Payjoin/" target="_blank"> <a href="https://docs.btcpayserver.org/Payjoin/" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</div> </div>
@ -197,7 +197,7 @@
} }
<div class="form-group mt-4"> <div class="form-group mt-4">
<label asp-for="NetworkFeeMode" class="form-label"></label> <label asp-for="NetworkFeeMode" class="form-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#add-network-fee-to-invoice-vary-with-mining-fees" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#add-network-fee-to-invoice-vary-with-mining-fees" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<select asp-for="NetworkFeeMode" class="form-select"> <select asp-for="NetworkFeeMode" class="form-select">
@ -208,7 +208,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label asp-for="InvoiceExpiration" class="form-label"></label> <label asp-for="InvoiceExpiration" class="form-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#invoice-expires-if-the-full-amount-has-not-been-paid-after-minutes" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#invoice-expires-if-the-full-amount-has-not-been-paid-after-minutes" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<div class="input-group"> <div class="input-group">
@ -219,7 +219,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label asp-for="MonitoringExpiration" class="form-label"></label> <label asp-for="MonitoringExpiration" class="form-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#payment-invalid-if-transactions-fails-to-confirm-minutes-after-invoice-expiration" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#payment-invalid-if-transactions-fails-to-confirm-minutes-after-invoice-expiration" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<div class="input-group"> <div class="input-group">
@ -230,7 +230,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label asp-for="PaymentTolerance" class="form-label"></label> <label asp-for="PaymentTolerance" class="form-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#consider-the-invoice-paid-even-if-the-paid-amount-is-less-than-expected" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#consider-the-invoice-paid-even-if-the-paid-amount-is-less-than-expected" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<div class="input-group"> <div class="input-group">
@ -241,7 +241,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label asp-for="SpeedPolicy" class="form-label"></label> <label asp-for="SpeedPolicy" class="form-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#consider-the-invoice-confirmed-when-the-payment-transaction" target="_blank"> <a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#consider-the-invoice-confirmed-when-the-payment-transaction" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<select asp-for="SpeedPolicy" class="form-select w-auto" onchange="document.getElementById('unconfirmed-warning').hidden = this.value !== '0';"> <select asp-for="SpeedPolicy" class="form-select w-auto" onchange="document.getElementById('unconfirmed-warning').hidden = this.value !== '0';">

View file

@ -14,8 +14,8 @@
<div class="alert alert-warning"> <div class="alert alert-warning">
You are not an admin on this server. While you are able to import or generate a wallet via seed with You are not an admin on this server. While you are able to import or generate a wallet via seed with
your account, please understand that you are trusting the server admins not just with your your account, please understand that you are trusting the server admins not just with your
<a href="https://docs.btcpayserver.org/ThirdPartyHosting/#privacy-concerns" target="_blank" class="alert-link">privacy</a> <a href="https://docs.btcpayserver.org/ThirdPartyHosting/#privacy-concerns" target="_blank" class="alert-link" rel="noreferrer noopener">privacy</a>
but also with <a href="https://docs.btcpayserver.org/ThirdPartyHosting/#trust-concerns" target="_blank" class="alert-link">trivial access to your funds.</a> but also with <a href="https://docs.btcpayserver.org/ThirdPartyHosting/#trust-concerns" target="_blank" class="alert-link" rel="noreferrer noopener">trivial access to your funds.</a>
If you NEED to use this feature, please reconsider hosting your own BTCPay Server instance. If you NEED to use this feature, please reconsider hosting your own BTCPay Server instance.
</div> </div>
} }
@ -65,7 +65,7 @@
<p class="text-muted pt-2"> <p class="text-muted pt-2">
PayJoin enhances the privacy for you and your customers. PayJoin enhances the privacy for you and your customers.
Enabling it gives your customers the option to use PayJoin during checkout. Enabling it gives your customers the option to use PayJoin during checkout.
<a href="https://docs.btcpayserver.org/Payjoin/" target="_blank"> <a href="https://docs.btcpayserver.org/Payjoin/" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</p> </p>

View file

@ -67,7 +67,7 @@
<td> <td>
@if (!string.IsNullOrEmpty(store.WebSite)) @if (!string.IsNullOrEmpty(store.WebSite))
{ {
<a href="@store.WebSite">@store.WebSite</a> <a href="@store.WebSite" rel="noreferrer noopener">@store.WebSite</a>
} }
</td> </td>
<td style="text-align:right"> <td style="text-align:right">

View file

@ -12,7 +12,7 @@
<h2> <h2>
@ViewData["Title"] @ViewData["Title"]
<small> <small>
<a href="https://docs.btcpayserver.org/Wallet/" target="_blank"> <a href="https://docs.btcpayserver.org/Wallet/" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</small> </small>

View file

@ -74,7 +74,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label asp-for="CustomCSSLink" class="form-label"></label> <label asp-for="CustomCSSLink" class="form-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank"> <a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<input asp-for="CustomCSSLink" class="form-control" /> <input asp-for="CustomCSSLink" class="form-control" />

View file

@ -117,7 +117,7 @@
<td class="text-end"> <td class="text-end">
@if (!(pp.ProofLink is null)) @if (!(pp.ProofLink is null))
{ {
<a class="transaction-link" href="@pp.ProofLink">Link</a> <a class="transaction-link" href="@pp.ProofLink" rel="noreferrer noopener">Link</a>
} }
</td> </td>
} }

View file

@ -16,7 +16,7 @@
<h4 class="mb-0"> <h4 class="mb-0">
@ViewData["Title"] @ViewData["Title"]
<small> <small>
<a href="https://docs.btcpayserver.org/PullPayments/" target="_blank"> <a href="https://docs.btcpayserver.org/PullPayments/" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</small> </small>

View file

@ -179,7 +179,7 @@
<div class="form-check"> <div class="form-check">
<input asp-for="NoChange" class="form-check-input" /> <input asp-for="NoChange" class="form-check-input" />
<label asp-for="NoChange" class="form-check-label"></label> <label asp-for="NoChange" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/Wallet/#dont-create-utxo-change" target="_blank"> <a href="https://docs.btcpayserver.org/Wallet/#dont-create-utxo-change" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</div> </div>
@ -188,7 +188,7 @@
<div class="form-check"> <div class="form-check">
<input asp-for="AlwaysIncludeNonWitnessUTXO" class="form-check-input"/> <input asp-for="AlwaysIncludeNonWitnessUTXO" class="form-check-input"/>
<label asp-for="AlwaysIncludeNonWitnessUTXO" class="form-check-label"></label> <label asp-for="AlwaysIncludeNonWitnessUTXO" class="form-check-label"></label>
<a href="https://medium.com/@@jmacato/wasabi-wallets-advisory-for-trezor-users-7d942c727f92" target="_blank"> <a href="https://medium.com/@@jmacato/wasabi-wallets-advisory-for-trezor-users-7d942c727f92" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
</div> </div>
@ -197,7 +197,7 @@
{ {
<div class="form-group"> <div class="form-group">
<label asp-for="AllowFeeBump" class="form-label"></label> <label asp-for="AllowFeeBump" class="form-label"></label>
<a href="https://docs.btcpayserver.org/Wallet/#rbf-replace-by-fee" target="_blank"> <a href="https://docs.btcpayserver.org/Wallet/#rbf-replace-by-fee" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a> </a>
<select asp-for="AllowFeeBump" class="form-select w-auto"> <select asp-for="AllowFeeBump" class="form-select w-auto">

View file

@ -64,7 +64,7 @@
<h4> <h4>
Partially Signed Bitcoin Transaction Partially Signed Bitcoin Transaction
<small> <small>
<a href="https://docs.btcpayserver.org/Wallet/#signing-with-a-wallet-supporting-psbt" target="_blank"> <a href="https://docs.btcpayserver.org/Wallet/#signing-with-a-wallet-supporting-psbt" target="_blank" rel="noreferrer noopener">
<span class="fa fa-question-circle-o text-secondary pe-none" title="More information..."></span> <span class="fa fa-question-circle-o text-secondary pe-none" title="More information..."></span>
</a> </a>
</small> </small>

View file

@ -62,7 +62,7 @@
<p> <p>
If BTCPay Server shows you an invalid balance, <a asp-action="WalletRescan" asp-route-walletId="@Context.GetRouteValue("walletId")">rescan your wallet</a>. If BTCPay Server shows you an invalid balance, <a asp-action="WalletRescan" asp-route-walletId="@Context.GetRouteValue("walletId")">rescan your wallet</a>.
<br/> <br/>
If some transactions appear in BTCPay Server, but are missing in another wallet, <a href="https://docs.btcpayserver.org/FAQ/FAQ-Wallet/#missing-payments-in-my-software-or-hardware-wallet">follow these instructions</a>. If some transactions appear in BTCPay Server, but are missing in another wallet, <a href="https://docs.btcpayserver.org/FAQ/FAQ-Wallet/#missing-payments-in-my-software-or-hardware-wallet" rel="noreferrer noopener">follow these instructions</a>.
</p> </p>
@if (Model.Transactions.Any()) @if (Model.Transactions.Any())
@ -136,7 +136,7 @@
</div> </div>
@if (!string.IsNullOrEmpty(label.Link)) @if (!string.IsNullOrEmpty(label.Link))
{ {
<a href="@label.Link" target="_blank" class="badge transaction-details-icon" style="background-color: @label.Color; filter: brightness(1.1);"> <a href="@label.Link" target="_blank" class="badge transaction-details-icon" style="background-color: @label.Color; filter: brightness(1.1);" rel="noreferrer noopener">
<span class="fa fa-info-circle" title="Transaction details" style="color: @label.Color; filter: brightness(0.5);"> <span class="fa fa-info-circle" title="Transaction details" style="color: @label.Color; filter: brightness(0.5);">
<span class="visually-hidden">Transaction details</span> <span class="visually-hidden">Transaction details</span>
</span> </span>
@ -146,7 +146,7 @@
} }
</td> </td>
<td class="smMaxWidth text-truncate @(transaction.IsConfirmed ? "" : "unconf")"> <td class="smMaxWidth text-truncate @(transaction.IsConfirmed ? "" : "unconf")">
<a href="@transaction.Link" target="_blank"> <a href="@transaction.Link" target="_blank" rel="noreferrer noopener">
@transaction.Id @transaction.Id
</a> </a>
</td> </td>