commit eca7ebb2652b0a1588e31799da77c1a312eb7287 Author: David Fifield david@bamsoftware.com Date: Tue Aug 15 18:15:48 2017 -0700
Bug 18628: Pass the client_ip parameter in the JavaScript proxy as well. --- proxy/proxypair.coffee | 15 ++++++++++++++- proxy/websocket.coffee | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/proxy/proxypair.coffee b/proxy/proxypair.coffee index 28696e2..2adbc23 100644 --- a/proxy/proxypair.coffee +++ b/proxy/proxypair.coffee @@ -93,7 +93,20 @@ class ProxyPair # Assumes WebRTC datachannel is connected. connectRelay: => dbg 'Connecting to relay...' - @relay = makeWebsocket @relayAddr + + # Get a remote IP address from the PeerConnection, if possible. Add it to + # the WebSocket URL's query string if available. + # MDN marks remoteDescription as "experimental". However the other two + # options, currentRemoteDescription and pendingRemoteDescription, which + # are not marked experimental, were undefined when I tried them in Firefox + # 52.2.0. + # https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/remoteDes... + peer_ip = Parse.ipFromSDP(@pc.remoteDescription?.sdp) + params = [] + if peer_ip? + params.push(["client_ip", peer_ip]) + + @relay = makeWebsocket @relayAddr, params @relay.label = 'websocket-relay' @relay.onopen = => if @timer diff --git a/proxy/websocket.coffee b/proxy/websocket.coffee index a23f53d..5487df1 100644 --- a/proxy/websocket.coffee +++ b/proxy/websocket.coffee @@ -46,9 +46,9 @@ buildUrl = (scheme, host, port, path, params) ->
parts.join ''
-makeWebsocket = (addr) -> +makeWebsocket = (addr, params) -> wsProtocol = if WSS_ENABLED then 'wss' else 'ws' - url = buildUrl wsProtocol, addr.host, addr.port, '/' + url = buildUrl wsProtocol, addr.host, addr.port, '/', params ws = new WebSocket url ### 'User agents can use this as a hint for how to handle incoming binary data: if
tor-commits@lists.torproject.org