From 34c29a156f1435cc0f61eb90d270b9e4ba0dd7a1 Mon Sep 17 00:00:00 2001 From: Deluan Date: Sat, 20 Jan 2024 18:58:12 -0500 Subject: [PATCH] Simplify RealIP middleware setup --- server/middlewares.go | 9 +++++++++ server/server.go | 9 ++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/server/middlewares.go b/server/middlewares.go index 7f912770..364ad149 100644 --- a/server/middlewares.go +++ b/server/middlewares.go @@ -157,6 +157,15 @@ func clientUniqueIDMiddleware(next http.Handler) http.Handler { }) } +// realIPMiddleware wraps the middleware.RealIP middleware function, bypassing it if the +// ReverseProxyWhitelist configuration option is set. +func realIPMiddleware(h http.Handler) http.Handler { + if conf.Server.ReverseProxyWhitelist == "" { + return middleware.RealIP(h) + } + return h +} + // serverAddressMiddleware is a middleware function that modifies the request object // to reflect the address of the server handling the request, as determined by the // presence of X-Forwarded-* headers or the scheme and host of the request URL. diff --git a/server/server.go b/server/server.go index 91dfac98..eb64e207 100644 --- a/server/server.go +++ b/server/server.go @@ -164,18 +164,13 @@ func (s *Server) initRoutes() { secureMiddleware(), corsHandler(), middleware.RequestID, - } - if conf.Server.ReverseProxyWhitelist == "" { - middlewares = append(middlewares, middleware.RealIP) - } - - middlewares = append(middlewares, + realIPMiddleware, middleware.Recoverer, middleware.Heartbeat("/ping"), robotsTXT(ui.BuildAssets()), serverAddressMiddleware, clientUniqueIDMiddleware, - ) + } // Mount the Native API /events endpoint with all middlewares, except the compress and request logger, // adding the authentication middlewares