commit 3fe10f3e7c39991193f4322fee55c7067d21831d Author: Serene H git@keroserene.net Date: Tue Feb 28 22:46:39 2017 -0800
default to wss and some documentation updates, #40 --- proxy/proxypair.coffee | 5 +++++ proxy/snowflake.coffee | 19 ++++++++++++++----- proxy/util.coffee | 1 + proxy/websocket.coffee | 4 +++- 4 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/proxy/proxypair.coffee b/proxy/proxypair.coffee index b19df09..28696e2 100644 --- a/proxy/proxypair.coffee +++ b/proxy/proxypair.coffee @@ -22,6 +22,11 @@ class ProxyPair onCleanup: null id: null
+ ### + Constructs a ProxyPair where: + - @relayAddr is the destination relay + - @rateLimit specifies a rate limit on traffic + ### constructor: (@relayAddr, @rateLimit) -> @active = false @id = genSnowflakeID() diff --git a/proxy/snowflake.coffee b/proxy/snowflake.coffee index 0966053..3068d6a 100644 --- a/proxy/snowflake.coffee +++ b/proxy/snowflake.coffee @@ -1,16 +1,21 @@ ### A Coffeescript WebRTC snowflake proxy -Using Copy-paste signaling for now.
-Uses WebRTC from the client, and websocket to the server. +Uses WebRTC from the client, and Websocket to the server.
Assume that the webrtc client plugin is always the offerer, in which case this must always act as the answerer. ### + +# General snowflake proxy constants. +# For websocket-specific constants, see websocket.coffee. DEFAULT_BROKER = 'snowflake-reg.appspot.com' DEFAULT_RELAY = - host: '192.81.135.242' - port: 9902 + host: 'snowflake.bamsoftware.com' + port: '443' + # Original non-wss relay: + # host: '192.81.135.242' + # port: 9902 COPY_PASTE_ENABLED = false COOKIE_NAME = "snowflake-allow"
@@ -174,7 +179,7 @@ class Snowflake snowflake = null
# Signalling channel - just tells user to copy paste to the peer. -# Eventually this should go over the broker. +# When copy-paste mode is not enabled, this is handled automatically by Broker. Signalling = send: (msg) -> log '---- Please copy the below to peer ----\n' @@ -205,10 +210,14 @@ log = (msg) ->
dbg = (msg) -> log msg if DEBUG or snowflake.ui?.debug
+### +Entry point. +### init = (isNode) -> # Hook up to the debug UI if available. ui = if isNode then null else new UI() silenceNotifications = Params.getBool(query, 'silent', false) + # Establish connectivity information with the Broker. brokerUrl = Params.getString(query, 'broker', DEFAULT_BROKER) broker = new Broker brokerUrl snowflake = new Snowflake broker, ui diff --git a/proxy/util.coffee b/proxy/util.coffee index a5b247c..e0d965b 100644 --- a/proxy/util.coffee +++ b/proxy/util.coffee @@ -71,6 +71,7 @@ Parse = m = spec.match(/^[([\0-9a-fA-F:.]+)]:([0-9]+)$/) if !m # IPv4 syntax. m = spec.match(/^([0-9.]+):([0-9]+)$/) if !m + # TODO: Domain match return null if !m
host = m[1] diff --git a/proxy/websocket.coffee b/proxy/websocket.coffee index 94cf274..a23f53d 100644 --- a/proxy/websocket.coffee +++ b/proxy/websocket.coffee @@ -2,6 +2,7 @@ Only websocket-specific stuff. ###
+WSS_ENABLED = true DEFAULT_PORTS = http: 80 https: 443 @@ -46,7 +47,8 @@ buildUrl = (scheme, host, port, path, params) -> parts.join ''
makeWebsocket = (addr) -> - url = buildUrl 'ws', addr.host, addr.port, '/' + wsProtocol = if WSS_ENABLED then 'wss' else 'ws' + url = buildUrl wsProtocol, addr.host, addr.port, '/' 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