From aebbfa4eaa8eb6a0e8161ad9686fbc6154f3179c Mon Sep 17 00:00:00 2001 From: WeebDataHoarder Date: Sat, 3 May 2025 22:32:25 +0200 Subject: [PATCH] context: set client network address without original port on backend-ip-header option --- lib/challenge/data.go | 2 +- lib/settings/backend.go | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/challenge/data.go b/lib/challenge/data.go index f947c05..bb4936e 100644 --- a/lib/challenge/data.go +++ b/lib/challenge/data.go @@ -350,7 +350,7 @@ func (d *RequestData) RequestHeaders(headers http.Header) { if d.State.Settings().ClientIpHeader != "" { headers.Del(d.State.Settings().ClientIpHeader) } - headers.Set(d.State.Settings().BackendIpHeader, d.RemoteAddress.String()) + headers.Set(d.State.Settings().BackendIpHeader, d.RemoteAddress.Addr().Unmap().String()) } for id, result := range d.ChallengeVerify { diff --git a/lib/settings/backend.go b/lib/settings/backend.go index e68ed1e..55b65fa 100644 --- a/lib/settings/backend.go +++ b/lib/settings/backend.go @@ -106,6 +106,12 @@ func (b Backend) Create() (*httputil.ReverseProxy, error) { if b.IpHeader != "" || b.Host != "" || !b.Transparent { director := proxy.Director proxy.Director = func(req *http.Request) { + if !b.Transparent { + if data := challenge.RequestDataFromContext(req.Context()); data != nil { + data.RequestHeaders(req.Header) + } + } + if b.IpHeader != "" && !b.Transparent { if ip := utils.GetRemoteAddress(req.Context()); ip != nil { req.Header.Set(b.IpHeader, ip.Addr().Unmap().String()) @@ -114,12 +120,6 @@ func (b Backend) Create() (*httputil.ReverseProxy, error) { if b.Host != "" { req.Host = b.Host } - - if !b.Transparent { - if data := challenge.RequestDataFromContext(req.Context()); data != nil { - data.RequestHeaders(req.Header) - } - } director(req) } }