From 0d9f37f42739355e638ac87d0615f09f929c7e7b Mon Sep 17 00:00:00 2001 From: Daniel Aloni Date: Mon, 27 Feb 2023 17:00:26 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90=20Forward=20IP=20for=20login/regis?= =?UTF-8?q?ter=20device=20creation=20(external=20API)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/httputil/httpapi.go | 3 +++ syncapi/sync/requestpool.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/internal/httputil/httpapi.go b/internal/httputil/httpapi.go index 9c4ea59d4..c42a1dbd0 100644 --- a/internal/httputil/httpapi.go +++ b/internal/httputil/httpapi.go @@ -239,6 +239,9 @@ func MakeExternalAPI(metricsName string, f func(*http.Request) util.JSONResponse span := opentracing.StartSpan(metricsName) defer span.Finish() req = req.WithContext(opentracing.ContextWithSpan(req.Context(), span)) + if forwardedFor := req.Header.Get("X-Forwarded-For"); forwardedFor != "" { + req.RemoteAddr = forwardedFor + } h.ServeHTTP(nextWriter, req) } diff --git a/syncapi/sync/requestpool.go b/syncapi/sync/requestpool.go index 1733a15b0..57cd96871 100644 --- a/syncapi/sync/requestpool.go +++ b/syncapi/sync/requestpool.go @@ -191,6 +191,9 @@ func (rp *RequestPool) updateLastSeen(req *http.Request, device *userapi.Device) return } + if forwardedFor := req.Header.Get("X-Forwarded-For"); forwardedFor != "" { + req.RemoteAddr = forwardedFor + } remoteAddr := req.RemoteAddr if rp.cfg.RealIPHeader != "" { if header := req.Header.Get(rp.cfg.RealIPHeader); header != "" {