[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [snowflake/master] Bug 18628: Pass the client_ip parameter in the JavaScript proxy as well.
commit eca7ebb2652b0a1588e31799da77c1a312eb7287
Author: David Fifield <david@xxxxxxxxxxxxxxx>
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/remoteDescription
+ 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 mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits