[tor-commits] [snowflake/master] Pass the incoming client_ip into the ExtORPort.
dcf at torproject.org
dcf at torproject.org
Sat Oct 14 19:12:34 UTC 2017
commit 9e5eb7f5ee1c15122425ab4fe47fa6ad6ec75f92
Author: David Fifield <david at bamsoftware.com>
Date: Sat Oct 14 14:57:53 2017 -0400
Pass the incoming client_ip into the ExtORPort.
---
server/server.go | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/server/server.go b/server/server.go
index 3e29a0b..562ccf8 100644
--- a/server/server.go
+++ b/server/server.go
@@ -139,10 +139,18 @@ func webSocketHandler(ws *websocket.WebSocket) {
handlerChan <- -1
}()
- // Pass an empty string for the client address. The remote address on
- // the incoming connection reflects that of the browser proxy, not of
- // the client. See https://bugs.torproject.org/18628.
- or, err := pt.DialOr(&ptInfo, "", ptMethodName)
+ // 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)
+
if err != nil {
log.Printf("failed to connect to ORPort: %s", err)
return
More information about the tor-commits
mailing list