From 0d9f37f42739355e638ac87d0615f09f929c7e7b Mon Sep 17 00:00:00 2001 From: Daniel Aloni Date: Mon, 27 Feb 2023 17:00:26 +0200 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=8C=90=20Forward=20IP=20for=20login/r?= =?UTF-8?q?egister=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 != "" { From c40555c836d14b0f45183f9d0595e82d6bb7336e Mon Sep 17 00:00:00 2001 From: Daniel Aloni Date: Mon, 27 Feb 2023 17:22:56 +0200 Subject: [PATCH 2/2] Weird lint error. --- syncapi/storage/sqlite3/account_data_table.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/syncapi/storage/sqlite3/account_data_table.go b/syncapi/storage/sqlite3/account_data_table.go index d8967113a..de0e72dbd 100644 --- a/syncapi/storage/sqlite3/account_data_table.go +++ b/syncapi/storage/sqlite3/account_data_table.go @@ -105,7 +105,9 @@ func (s *accountDataStatements) SelectAccountDataInRange( filter.Senders, filter.NotSenders, filter.Types, filter.NotTypes, []string{}, nil, filter.Limit, FilterOrderAsc) - + if err != nil { + return + } rows, err := stmt.QueryContext(ctx, params...) if err != nil { return