From 3e403fa3484fea72b130868b588af6608b919818 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Wed, 9 Feb 2022 12:33:37 +0100 Subject: [PATCH] internal: improve error handling for internal reverse proxy Signed-off-by: Jens Langhammer --- internal/web/proxy.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/internal/web/proxy.go b/internal/web/proxy.go index 44cb26cdf..4c0b1477b 100644 --- a/internal/web/proxy.go +++ b/internal/web/proxy.go @@ -1,6 +1,7 @@ package web import ( + "encoding/json" "fmt" "net/http" "net/http/httputil" @@ -67,7 +68,18 @@ func (ws *WebServer) configureProxy() { func (ws *WebServer) proxyErrorHandler(rw http.ResponseWriter, req *http.Request, err error) { ws.log.Warning(err.Error()) rw.WriteHeader(http.StatusBadGateway) - _, err = rw.Write([]byte("authentik starting...")) + em := fmt.Sprintf("failed to connect to authentik backend: %v", err) + if !ws.p.IsRunning() { + em = "authentik starting..." + } + // return json if the client asks for json + if req.Header.Get("Accept") == "application/json" { + eem, _ := json.Marshal(map[string]string{ + "error": em, + }) + em = string(eem) + } + _, err = rw.Write([]byte(em)) if err != nil { ws.log.WithError(err).Warning("failed to write error message") }