From 6a4bb51efcfff2f033ba5afc8af5a767792a8616 Mon Sep 17 00:00:00 2001 From: Mygod Date: Fri, 21 Jul 2023 13:57:03 -0400 Subject: [PATCH] Refine error user --- forwardproxy.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/forwardproxy.go b/forwardproxy.go index d1aa93d..d27befc 100644 --- a/forwardproxy.go +++ b/forwardproxy.go @@ -422,17 +422,23 @@ func (h Handler) checkCredentials(r *http.Request) error { return nil } } + repl := r.Context().Value(caddy.ReplacerCtxKey).(*caddy.Replacer) buf := make([]byte, base64.StdEncoding.DecodedLen(len([]byte(pa[1])))) n, err := base64.StdEncoding.Decode(buf, []byte(pa[1])) - if err == nil && utf8.Valid(buf[:n]) { + if err != nil { + repl.Set("http.auth.user.id", "invalidbase64:"+err.Error()) + return err + } + if utf8.Valid(buf[:n]) { cred := string(buf[:n]) i := strings.IndexByte(cred, ':') - repl := r.Context().Value(caddy.ReplacerCtxKey).(*caddy.Replacer) if i >= 0 { repl.Set("http.auth.user.id", "invalid:"+cred[:i]) } else { repl.Set("http.auth.user.id", "invalidformat:"+cred) } + } else { + repl.Set("http.auth.user.id", "invalid::") } return errors.New("invalid credentials") }