From b96058bf8b9e2b09a586ddadf633a995cafa26c4 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Sun, 25 Feb 2024 17:38:45 +0900 Subject: [PATCH 1/2] use X-Real-Ip if presented --- handlers.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/handlers.go b/handlers.go index 0fa4018..d5f4d92 100644 --- a/handlers.go +++ b/handlers.go @@ -348,7 +348,11 @@ func (s *Server) HandleWebsocket(w http.ResponseWriter, r *http.Request) { ticker := time.NewTicker(pingPeriod) stop := make(chan struct{}) - s.Log.Infof("connected from %s", conn.RemoteAddr().String()) + ip := conn.RemoteAddr().String() + if realIP := r.Header.Get("X-Real-Ip"); realIP != "" { + ip = realIP + } + s.Log.Infof("connected from %s", ip) ws := challenge(conn) @@ -372,7 +376,7 @@ func (s *Server) HandleWebsocket(w http.ResponseWriter, r *http.Request) { removeListener(ws) } s.clientsMu.Unlock() - s.Log.Infof("disconnected from %s", conn.RemoteAddr().String()) + s.Log.Infof("disconnected from %s", ip) ctx.Done() }() @@ -438,7 +442,7 @@ func (s *Server) HandleWebsocket(w http.ResponseWriter, r *http.Request) { s.Log.Errorf("error writing ping: %v; closing websocket", err) return } - s.Log.Infof("pinging for %s", conn.RemoteAddr().String()) + s.Log.Infof("pinging for %s", ip) case <-stop: return } From 5cc480c44ce0b83bf5e0039a0206bdd0de666a63 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Sun, 25 Feb 2024 17:47:04 +0900 Subject: [PATCH 2/2] handle X-Forwarded-For --- handlers.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/handlers.go b/handlers.go index d5f4d92..7aff834 100644 --- a/handlers.go +++ b/handlers.go @@ -349,7 +349,9 @@ func (s *Server) HandleWebsocket(w http.ResponseWriter, r *http.Request) { stop := make(chan struct{}) ip := conn.RemoteAddr().String() - if realIP := r.Header.Get("X-Real-Ip"); realIP != "" { + if realIP := r.Header.Get("X-Forwarded-For"); realIP != "" { + ip = realIP // possible to be multiple comma separated + } else if realIP := r.Header.Get("X-Real-Ip"); realIP != "" { ip = realIP } s.Log.Infof("connected from %s", ip)