From 2c172fa8ca20840087fbf72074cdfe699a3d1b2a Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 29 Jun 2020 18:27:43 +0200 Subject: [PATCH] Extract X-Forwarded-* headers for WebSocket connections --- server.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index 8fb7874..207ba5b 100644 --- a/server.go +++ b/server.go @@ -151,5 +151,11 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request) { s.Logger.Printf("failed to serve HTTP connection: %v", err) return } - s.handle(newWebsocketIRCConn(conn), req.RemoteAddr) + remoteAddr := req.RemoteAddr + forwardedHost := req.Header.Get("X-Forwarded-For") + forwardedPort := req.Header.Get("X-Forwarded-Port") + if forwardedHost != "" && forwardedPort != "" { + remoteAddr = net.JoinHostPort(forwardedHost, forwardedPort) + } + s.handle(newWebsocketIRCConn(conn), remoteAddr) }