From e8255bd3a7c0210487eb4a8074e1e028d23d773f Mon Sep 17 00:00:00 2001
From: joncrangle <94425204+joncrangle@users.noreply.github.com>
Date: Thu, 14 Dec 2023 21:50:48 -0500
Subject: [PATCH] Use CreateAPIErrReader for error_page middleware
---
handlers/error_page.go | 31 +++++++++++++++++++++++++++++--
handlers/error_page.html | 9 ++++++++-
handlers/styles.css | 2 +-
proxychain/proxychain.go | 20 ++++++++++----------
styles/input.css | 2 +-
5 files changed, 49 insertions(+), 15 deletions(-)
diff --git a/handlers/error_page.go b/handlers/error_page.go
index 9c3b083..8dec116 100644
--- a/handlers/error_page.go
+++ b/handlers/error_page.go
@@ -2,10 +2,14 @@ package handlers
import (
"embed"
+ "encoding/json"
"fmt"
"html/template"
+ "io"
+ "net/http"
"strings"
+ "github.com/everywall/ladder/proxychain/responsemodifiers/api"
"github.com/gofiber/fiber/v2"
)
@@ -20,12 +24,35 @@ func RenderErrorPage() fiber.Handler {
}
return func(c *fiber.Ctx) error {
if err := c.Next(); err != nil {
+ c.Response().SetStatusCode(500)
+
+ errReader := api.CreateAPIErrReader(err)
+ errMessageBytes, err := io.ReadAll(errReader)
+ if err != nil {
+ return err
+ }
+
+ var errMsg api.Error
+ if err := json.Unmarshal(errMessageBytes, &errMsg); err != nil {
+ return err
+ }
+
+ if strings.Contains(c.Get("Accept"), "text/plain") {
+ c.Set("Content-Type", "text/plain")
+ return c.SendString(errMsg.Error.Message)
+ }
if strings.Contains(c.Get("Accept"), "text/html") {
c.Set("Content-Type", "text/html")
- tmpl.Execute(c.Response().BodyWriter(), err.Error())
+ tmpl.Execute(c.Response().BodyWriter(), fiber.Map{
+ "Status": http.StatusText(c.Response().StatusCode()) + ": " + fmt.Sprint(c.Response().StatusCode()),
+ "Message": errMsg.Error.Message,
+ "Type": errMsg.Error.Type,
+ "Cause": errMsg.Error.Cause,
+ })
return nil
}
- return c.SendString(err.Error())
+ c.Set("Content-Type", "text/json")
+ return c.JSON(errMsg)
}
return err
}
diff --git a/handlers/error_page.html b/handlers/error_page.html
index e532b9e..c4e5021 100644
--- a/handlers/error_page.html
+++ b/handlers/error_page.html
@@ -214,7 +214,14 @@
Error
-
{{.}}
+
+ {{.Status}}
+ {{.Message}}
+ Type: {{.Type}}
+ Cause: {{.Cause}}
+