[tor-commits] [snowflake/master] default to wss and some documentation updates, #40

serene at torproject.org serene at torproject.org
Thu Mar 2 03:15:16 UTC 2017


commit 3fe10f3e7c39991193f4322fee55c7067d21831d
Author: Serene H <git at 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





More information about the tor-commits mailing list