commit 83f87120788c2c25f9c8ac1363711d5146c097d9 Author: David Fifield david@bamsoftware.com Date: Tue Oct 17 21:39:04 2017 -0700
Factor out a function to extract the client IP address. --- server/server.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/server/server.go b/server/server.go index 562ccf8..29e8137 100644 --- a/server/server.go +++ b/server/server.go @@ -128,6 +128,16 @@ func proxy(local *net.TCPConn, conn *webSocketConn) { wg.Wait() }
+// Return an address string suitable to pass into pt.DialOr. +func clientAddr(clientIPParam string) string { + // Check if client addr is a valid IP + clientIP := net.ParseIP(clientIPParam) + if clientIP == nil { + return "" + } + return clientIPParam +} + func webSocketHandler(ws *websocket.WebSocket) { // Undo timeouts on HTTP request handling. ws.Conn.SetDeadline(time.Time{}) @@ -139,17 +149,9 @@ func webSocketHandler(ws *websocket.WebSocket) { handlerChan <- -1 }()
- // Check if client addr is a valid IP - addr := ws.Request().URL.Query().Get("client_ip") - clientIP := net.ParseIP(addr) - - if clientIP == nil { - // Set client addr to empty - addr = "" - } - // Pass the address of client as the remote address of incoming connection - or, err := pt.DialOr(&ptInfo, addr, ptMethodName) + clientIPParam := ws.Request().URL.Query().Get("client_ip") + or, err := pt.DialOr(&ptInfo, clientIPParam, ptMethodName)
if err != nil { log.Printf("failed to connect to ORPort: %s", err)