From 88835b5b554692e3c4dfe69157682149d2418f1d Mon Sep 17 00:00:00 2001 From: rockstardev Date: Sat, 1 Feb 2020 00:32:31 -0600 Subject: [PATCH 1/9] Moving _LayoutWelcome to shared folder --- BTCPayServer/Views/Account/Login.cshtml | 2 +- BTCPayServer/Views/Account/Register.cshtml | 2 +- .../_WelcomeLayout.cshtml => Shared/_LayoutWelcome.cshtml} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename BTCPayServer/Views/{Account/_WelcomeLayout.cshtml => Shared/_LayoutWelcome.cshtml} (100%) diff --git a/BTCPayServer/Views/Account/Login.cshtml b/BTCPayServer/Views/Account/Login.cshtml index 2fc0c4d41..b7eaadeca 100644 --- a/BTCPayServer/Views/Account/Login.cshtml +++ b/BTCPayServer/Views/Account/Login.cshtml @@ -2,7 +2,7 @@ @inject BTCPayServer.HostedServices.CssThemeManager themeManager @{ ViewData["Title"] = "Log in"; - Layout = "_WelcomeLayout.cshtml"; + Layout = "_LayoutWelcome"; } @if (TempData.HasStatusMessage()) { diff --git a/BTCPayServer/Views/Account/Register.cshtml b/BTCPayServer/Views/Account/Register.cshtml index a7b7e298c..b87603b1b 100644 --- a/BTCPayServer/Views/Account/Register.cshtml +++ b/BTCPayServer/Views/Account/Register.cshtml @@ -2,7 +2,7 @@ @{ ViewData["Title"] = "Register"; var useBasicLayout = ViewData["UseBasicLayout"] is true; - Layout = useBasicLayout ? "../Shared/_Layout.cshtml" : "_WelcomeLayout.cshtml"; + Layout = useBasicLayout ? "_Layout" : "_LayoutWelcome"; } @if (TempData.HasStatusMessage()) { diff --git a/BTCPayServer/Views/Account/_WelcomeLayout.cshtml b/BTCPayServer/Views/Shared/_LayoutWelcome.cshtml similarity index 100% rename from BTCPayServer/Views/Account/_WelcomeLayout.cshtml rename to BTCPayServer/Views/Shared/_LayoutWelcome.cshtml From fe2eca4fda72884470c0ff98ba27a52ddc04b071 Mon Sep 17 00:00:00 2001 From: rockstardev Date: Sat, 1 Feb 2020 01:40:50 -0600 Subject: [PATCH 2/9] Adding prettier error handling page in the pipeline --- BTCPayServer/Controllers/ErrorController.cs | 18 +++ BTCPayServer/Hosting/Startup.cs | 5 +- BTCPayServer/Views/Error/Handle.cshtml | 19 +++ BTCPayServer/Views/Error/_LayoutError.cshtml | 118 ++++++++++++++++++ BTCPayServer/Views/Error/_ViewStart.cshtml | 3 + .../Views/Shared/_BTCPaySupporters.cshtml | 41 ++++++ .../Views/Shared/_LayoutWelcome.cshtml | 42 +------ 7 files changed, 204 insertions(+), 42 deletions(-) create mode 100644 BTCPayServer/Controllers/ErrorController.cs create mode 100644 BTCPayServer/Views/Error/Handle.cshtml create mode 100644 BTCPayServer/Views/Error/_LayoutError.cshtml create mode 100644 BTCPayServer/Views/Error/_ViewStart.cshtml create mode 100644 BTCPayServer/Views/Shared/_BTCPaySupporters.cshtml diff --git a/BTCPayServer/Controllers/ErrorController.cs b/BTCPayServer/Controllers/ErrorController.cs new file mode 100644 index 000000000..29a02b9e7 --- /dev/null +++ b/BTCPayServer/Controllers/ErrorController.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace BTCPayServer.Controllers +{ + [Route("[controller]/[action]")] + public class ErrorController : Controller + { + public IActionResult Handle(int? statusCode = null) + { + return View(statusCode); + } + } +} diff --git a/BTCPayServer/Hosting/Startup.cs b/BTCPayServer/Hosting/Startup.cs index 541f5cb3f..a88e7f037 100644 --- a/BTCPayServer/Hosting/Startup.cs +++ b/BTCPayServer/Hosting/Startup.cs @@ -241,6 +241,10 @@ namespace BTCPayServer.Hosting forwardingOptions.KnownProxies.Clear(); forwardingOptions.ForwardedHeaders = ForwardedHeaders.All; app.UseForwardedHeaders(forwardingOptions); + + + app.UseStatusCodePagesWithReExecute("/Error/Handle", "?statusCode={0}"); + app.UsePayServer(); app.UseRouting(); app.UseCors(); @@ -252,7 +256,6 @@ namespace BTCPayServer.Hosting app.UseSession(); app.UseWebSockets(); - app.UseStatusCodePages(); app.UseEndpoints(endpoints => { diff --git a/BTCPayServer/Views/Error/Handle.cshtml b/BTCPayServer/Views/Error/Handle.cshtml new file mode 100644 index 000000000..f14d7711a --- /dev/null +++ b/BTCPayServer/Views/Error/Handle.cshtml @@ -0,0 +1,19 @@ +@using System.Net +@model int? +@{ + ViewData["ErrorTitle"] = "Generic Error occurred"; + if (Model.HasValue) + { + var httpCode = (HttpStatusCode)Model.Value; + ViewData["ErrorTitle"] = $"{(int)httpCode} - {httpCode.ToString()}"; + } +} + + diff --git a/BTCPayServer/Views/Error/_LayoutError.cshtml b/BTCPayServer/Views/Error/_LayoutError.cshtml new file mode 100644 index 000000000..d208baafc --- /dev/null +++ b/BTCPayServer/Views/Error/_LayoutError.cshtml @@ -0,0 +1,118 @@ +@{ + Layout = null; +} +@inject BTCPayServer.Services.BTCPayServerEnvironment env + + + + + + + + + +
+
+ + +
+
+
+ +

@ViewData["ErrorTitle"]

+
+
+
+
+
+ @RenderBody() +
+
+
+
+
+ @await Html.PartialAsync("_BTCPaySupporters") +
+
+
+
+
+ + diff --git a/BTCPayServer/Views/Error/_ViewStart.cshtml b/BTCPayServer/Views/Error/_ViewStart.cshtml new file mode 100644 index 000000000..5d3510360 --- /dev/null +++ b/BTCPayServer/Views/Error/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_LayoutError"; +} diff --git a/BTCPayServer/Views/Shared/_BTCPaySupporters.cshtml b/BTCPayServer/Views/Shared/_BTCPaySupporters.cshtml new file mode 100644 index 000000000..921df3b12 --- /dev/null +++ b/BTCPayServer/Views/Shared/_BTCPaySupporters.cshtml @@ -0,0 +1,41 @@ +

BTCPayServer Supporters

+ +
+ + Sponsor DG lab + +
+ DG Lab +
+
+
+ + Sponsor ACINQ + +
+ ACINQ +
+
+
+ + Sponsor LunaNode + +
+ LunaNode +
+
+ diff --git a/BTCPayServer/Views/Shared/_LayoutWelcome.cshtml b/BTCPayServer/Views/Shared/_LayoutWelcome.cshtml index c04520c28..0429dc625 100644 --- a/BTCPayServer/Views/Shared/_LayoutWelcome.cshtml +++ b/BTCPayServer/Views/Shared/_LayoutWelcome.cshtml @@ -102,47 +102,7 @@

-

Our supporters

- -
- - Sponsor DG lab - -
- DG Lab -
-
-
- - Sponsor ACINQ - -
- ACINQ -
-
-
- - Sponsor LunaNode - -
- LunaNode -
-
- + @await Html.PartialAsync("_BTCPaySupporters")
@RenderBody() From ef503fa90775a8f05dba89789ef871c27933b3b4 Mon Sep 17 00:00:00 2001 From: rockstardev Date: Sat, 1 Feb 2020 01:41:27 -0600 Subject: [PATCH 3/9] Special page to handle 404 errors --- BTCPayServer/Controllers/ErrorController.cs | 8 ++++++++ BTCPayServer/Views/Error/404.cshtml | 15 +++++++++++++++ .../wwwroot/img/errorpages/404_nicolas.jpg | Bin 0 -> 14226 bytes 3 files changed, 23 insertions(+) create mode 100644 BTCPayServer/Views/Error/404.cshtml create mode 100644 BTCPayServer/wwwroot/img/errorpages/404_nicolas.jpg diff --git a/BTCPayServer/Controllers/ErrorController.cs b/BTCPayServer/Controllers/ErrorController.cs index 29a02b9e7..1113aa6da 100644 --- a/BTCPayServer/Controllers/ErrorController.cs +++ b/BTCPayServer/Controllers/ErrorController.cs @@ -12,6 +12,14 @@ namespace BTCPayServer.Controllers { public IActionResult Handle(int? statusCode = null) { + if (statusCode.HasValue) + { + if (statusCode.Value == 404) + { + var viewName = statusCode.ToString(); + return View(viewName); + } + } return View(statusCode); } } diff --git a/BTCPayServer/Views/Error/404.cshtml b/BTCPayServer/Views/Error/404.cshtml new file mode 100644 index 000000000..845f9eaae --- /dev/null +++ b/BTCPayServer/Views/Error/404.cshtml @@ -0,0 +1,15 @@ +@{ + ViewData["ErrorTitle"] = "404 - Page not found"; +} + + diff --git a/BTCPayServer/wwwroot/img/errorpages/404_nicolas.jpg b/BTCPayServer/wwwroot/img/errorpages/404_nicolas.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20f741998f318ad240417e4251486056e0a8f676 GIT binary patch literal 14226 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%0Ad&WsHY98{KQv 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 Date: Sat, 1 Feb 2020 01:44:01 -0600 Subject: [PATCH 4/9] Special page to handle 500 errors --- BTCPayServer/Controllers/ErrorController.cs | 3 ++- BTCPayServer/Views/Error/500.cshtml | 15 +++++++++++++++ .../wwwroot/img/errorpages/500_mrkukks.jpg | Bin 0 -> 18781 bytes 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 BTCPayServer/Views/Error/500.cshtml create mode 100644 BTCPayServer/wwwroot/img/errorpages/500_mrkukks.jpg diff --git a/BTCPayServer/Controllers/ErrorController.cs b/BTCPayServer/Controllers/ErrorController.cs index 1113aa6da..2bca043f9 100644 --- a/BTCPayServer/Controllers/ErrorController.cs +++ b/BTCPayServer/Controllers/ErrorController.cs @@ -14,7 +14,8 @@ namespace BTCPayServer.Controllers { if (statusCode.HasValue) { - if (statusCode.Value == 404) + var specialPages = new[] { 404, 500 }; + if (specialPages.Any(a => a == statusCode.Value)) { var viewName = statusCode.ToString(); return View(viewName); diff --git a/BTCPayServer/Views/Error/500.cshtml b/BTCPayServer/Views/Error/500.cshtml new file mode 100644 index 000000000..bf014b3f7 --- /dev/null +++ b/BTCPayServer/Views/Error/500.cshtml @@ -0,0 +1,15 @@ +@{ + ViewData["ErrorTitle"] = "500 - Internal Server Error"; +} + + diff --git a/BTCPayServer/wwwroot/img/errorpages/500_mrkukks.jpg b/BTCPayServer/wwwroot/img/errorpages/500_mrkukks.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4fd4ef216053563fc24e32adf367e8d619818c51 GIT binary patch literal 18781 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 Date: Sat, 1 Feb 2020 01:58:34 -0600 Subject: [PATCH 5/9] Special page to handle 429 errors --- BTCPayServer/Controllers/ErrorController.cs | 2 +- BTCPayServer/Views/Error/429.cshtml | 15 +++++++++++++++ BTCPayServer/Views/Error/Handle.cshtml | 2 +- .../wwwroot/img/errorpages/429_rockstardev.jpg | Bin 0 -> 15748 bytes 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 BTCPayServer/Views/Error/429.cshtml create mode 100644 BTCPayServer/wwwroot/img/errorpages/429_rockstardev.jpg diff --git a/BTCPayServer/Controllers/ErrorController.cs b/BTCPayServer/Controllers/ErrorController.cs index 2bca043f9..0cafdb4e5 100644 --- a/BTCPayServer/Controllers/ErrorController.cs +++ b/BTCPayServer/Controllers/ErrorController.cs @@ -14,7 +14,7 @@ namespace BTCPayServer.Controllers { if (statusCode.HasValue) { - var specialPages = new[] { 404, 500 }; + var specialPages = new[] { 404, 429, 500 }; if (specialPages.Any(a => a == statusCode.Value)) { var viewName = statusCode.ToString(); diff --git a/BTCPayServer/Views/Error/429.cshtml b/BTCPayServer/Views/Error/429.cshtml new file mode 100644 index 000000000..9ef961fef --- /dev/null +++ b/BTCPayServer/Views/Error/429.cshtml @@ -0,0 +1,15 @@ +@{ + ViewData["ErrorTitle"] = "429 - Too Many Requests"; +} + + diff --git a/BTCPayServer/Views/Error/Handle.cshtml b/BTCPayServer/Views/Error/Handle.cshtml index f14d7711a..12f058f32 100644 --- a/BTCPayServer/Views/Error/Handle.cshtml +++ b/BTCPayServer/Views/Error/Handle.cshtml @@ -15,5 +15,5 @@ Consult server log for more details.

Navigate back to home. -


+

diff --git a/BTCPayServer/wwwroot/img/errorpages/429_rockstardev.jpg b/BTCPayServer/wwwroot/img/errorpages/429_rockstardev.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef75fd50f62f3fc10e60422208e3e25298f2ce0a GIT binary patch literal 15748 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 x#G}ak$KLJO) literal 0 HcmV?d00001 From ea9169f607622003e9215927b50ac2f9d7d8db57 Mon Sep 17 00:00:00 2001 From: rockstardev Date: Sat, 1 Feb 2020 02:29:08 -0600 Subject: [PATCH 6/9] Updating 404 page not found assert --- BTCPayServer.Tests/SeleniumTester.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BTCPayServer.Tests/SeleniumTester.cs b/BTCPayServer.Tests/SeleniumTester.cs index c7f163312..e97b958d5 100644 --- a/BTCPayServer.Tests/SeleniumTester.cs +++ b/BTCPayServer.Tests/SeleniumTester.cs @@ -202,7 +202,7 @@ namespace BTCPayServer.Tests internal void AssertNotFound() { - Assert.Contains("Status Code: 404; Not Found", Driver.PageSource); + Assert.Contains("404 - Page not found", Driver.PageSource); } public void GoToHome() From b432d8903f5c698c4d3cb7d6c17e4d99f3352cbc Mon Sep 17 00:00:00 2001 From: rockstardev Date: Sat, 1 Feb 2020 11:16:40 -0600 Subject: [PATCH 7/9] Grammar fix by Kukks --- BTCPayServer/Views/Error/404.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BTCPayServer/Views/Error/404.cshtml b/BTCPayServer/Views/Error/404.cshtml index 845f9eaae..10daba9ff 100644 --- a/BTCPayServer/Views/Error/404.cshtml +++ b/BTCPayServer/Views/Error/404.cshtml @@ -3,7 +3,7 @@ }