[tor-commits] [snowflake/master] Move init into its own file

arlo at torproject.org arlo at torproject.org
Wed May 8 15:41:17 UTC 2019


commit 25dac378ee11a9c7a33ef9527d5acc06b89c49e9
Author: Arlo Breault <arlolra at gmail.com>
Date:   Wed May 1 08:59:10 2019 -0400

    Move init into its own file
---
 proxy/Cakefile         |  1 +
 proxy/init.coffee      | 95 ++++++++++++++++++++++++++++++++++++++++++++++++
 proxy/snowflake.coffee | 97 --------------------------------------------------
 3 files changed, 96 insertions(+), 97 deletions(-)

diff --git a/proxy/Cakefile b/proxy/Cakefile
index 8032034..d984c1b 100644
--- a/proxy/Cakefile
+++ b/proxy/Cakefile
@@ -5,6 +5,7 @@ fs = require 'fs'
 FILES = [
   'shims.coffee'
   'util.coffee'
+  'init.coffee'
   'proxypair.coffee'
   'websocket.coffee'
   'broker.coffee'
diff --git a/proxy/init.coffee b/proxy/init.coffee
new file mode 100644
index 0000000..22176e5
--- /dev/null
+++ b/proxy/init.coffee
@@ -0,0 +1,95 @@
+# General snowflake proxy constants.
+# For websocket-specific constants, see websocket.coffee.
+BROKER = 'snowflake-broker.bamsoftware.com'
+RELAY =
+  host: 'snowflake.bamsoftware.com'
+  port: '443'
+  # Original non-wss relay:
+  # host: '192.81.135.242'
+  # port: 9902
+COOKIE_NAME = "snowflake-allow"
+
+silenceNotifications = false
+query = Query.parse(location)
+DEBUG = Params.getBool(query, 'debug', false)
+
+# Bytes per second. Set to undefined to disable limit.
+DEFAULT_RATE_LIMIT = DEFAULT_RATE_LIMIT || undefined
+MIN_RATE_LIMIT = 10 * 1024
+RATE_LIMIT_HISTORY = 5.0
+DEFAULT_BROKER_POLL_INTERVAL = 5.0 * 1000
+
+MAX_NUM_CLIENTS = 1
+CONNECTIONS_PER_CLIENT = 1
+
+# TODO: Different ICE servers.
+config = {
+  iceServers: [
+    { urls: ['stun:stun.l.google.com:19302'] }
+  ]
+}
+
+# Janky state machine
+MODE =
+  INIT:              0
+  WEBRTC_CONNECTING: 1
+  WEBRTC_READY:      2
+
+CONFIRMATION_MESSAGE = 'You\'re currently serving a Tor user via Snowflake.'
+
+snowflake = null
+
+# Log to both console and UI if applicable.
+# Requires that the snowflake and UI objects are hooked up in order to
+# log to console.
+log = (msg) ->
+  console.log 'Snowflake: ' + msg
+  snowflake?.ui?.log msg
+
+dbg = (msg) -> log msg if DEBUG or snowflake.ui?.debug
+
+snowflakeIsDisabled = ->
+  cookies = Parse.cookie document.cookie
+  # Do nothing if snowflake has not been opted in by user.
+  if cookies[COOKIE_NAME] != '1'
+    log 'Not opted-in. Please click the badge to change options.'
+    return true
+  # Also do nothing if running in Tor Browser.
+  if mightBeTBB()
+    log 'Will not run within Tor Browser.'
+    return true
+  return false
+
+
+###
+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)
+  broker = new Broker BROKER
+  snowflake = new Snowflake broker, ui
+
+  log '== snowflake proxy =='
+  if snowflakeIsDisabled()
+    # Do not activate the proxy if any number of conditions are true.
+    log 'Currently not active.'
+    return
+
+  # Otherwise, begin setting up WebRTC and acting as a proxy.
+  dbg 'Contacting Broker at ' + broker.url
+  snowflake.setRelayAddr RELAY
+  snowflake.beginWebRTC()
+
+# Notification of closing tab with active proxy.
+window.onbeforeunload = ->
+  if !silenceNotifications && MODE.WEBRTC_READY == snowflake.state
+    return CONFIRMATION_MESSAGE
+  null
+
+window.onunload = ->
+  pair.close() for pair in snowflake.proxyPairs
+  null
+
+window.onload = init.bind null, false
diff --git a/proxy/snowflake.coffee b/proxy/snowflake.coffee
index a8fc183..0192818 100644
--- a/proxy/snowflake.coffee
+++ b/proxy/snowflake.coffee
@@ -9,48 +9,8 @@ this proxy must always act as the answerer.
 TODO: More documentation
 ###
 
-# General snowflake proxy constants.
-# For websocket-specific constants, see websocket.coffee.
-BROKER = 'snowflake-broker.bamsoftware.com'
-RELAY =
-  host: 'snowflake.bamsoftware.com'
-  port: '443'
-  # Original non-wss relay:
-  # host: '192.81.135.242'
-  # port: 9902
-COOKIE_NAME = "snowflake-allow"
-
-silenceNotifications = false
-query = Query.parse(location)
-DEBUG = Params.getBool(query, 'debug', false)
-
-# Bytes per second. Set to undefined to disable limit.
-DEFAULT_RATE_LIMIT = DEFAULT_RATE_LIMIT || undefined
-MIN_RATE_LIMIT = 10 * 1024
-RATE_LIMIT_HISTORY = 5.0
-DEFAULT_BROKER_POLL_INTERVAL = 5.0 * 1000
-
-MAX_NUM_CLIENTS = 1
-CONNECTIONS_PER_CLIENT = 1
-
-# TODO: Different ICE servers.
-config = {
-  iceServers: [
-    { urls: ['stun:stun.l.google.com:19302'] }
-  ]
-}
-
-# Janky state machine
-MODE =
-  INIT:              0
-  WEBRTC_CONNECTING: 1
-  WEBRTC_READY:      2
-
-CONFIRMATION_MESSAGE = 'You\'re currently serving a Tor user via Snowflake.'
-
 # Minimum viable snowflake for now - just 1 client.
 class Snowflake
-
   relayAddr:  null
   proxyPairs: []
   rateLimit:  null
@@ -174,60 +134,3 @@ class Snowflake
     log 'Snowflake resetting...'
     @retries = 0
     @beginWebRTC()
-
-snowflake = null
-
-# Log to both console and UI if applicable.
-# Requires that the snowflake and UI objects are hooked up in order to
-# log to console.
-log = (msg) ->
-  console.log 'Snowflake: ' + msg
-  snowflake?.ui?.log msg
-
-dbg = (msg) -> log msg if DEBUG or snowflake.ui?.debug
-
-snowflakeIsDisabled = ->
-  cookies = Parse.cookie document.cookie
-  # Do nothing if snowflake has not been opted in by user.
-  if cookies[COOKIE_NAME] != '1'
-    log 'Not opted-in. Please click the badge to change options.'
-    return true
-  # Also do nothing if running in Tor Browser.
-  if mightBeTBB()
-    log 'Will not run within Tor Browser.'
-    return true
-  return false
-
-
-###
-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)
-  broker = new Broker BROKER
-  snowflake = new Snowflake broker, ui
-
-  log '== snowflake proxy =='
-  if snowflakeIsDisabled()
-    # Do not activate the proxy if any number of conditions are true.
-    log 'Currently not active.'
-    return
-
-  # Otherwise, begin setting up WebRTC and acting as a proxy.
-  dbg 'Contacting Broker at ' + broker.url
-  snowflake.setRelayAddr RELAY
-  snowflake.beginWebRTC()
-
-# Notification of closing tab with active proxy.
-window.onbeforeunload = ->
-  if !silenceNotifications && MODE.WEBRTC_READY == snowflake.state
-    return CONFIRMATION_MESSAGE
-  null
-
-window.onunload = ->
-  pair.close() for pair in snowflake.proxyPairs
-  null
-
-window.onload = init.bind null, false





More information about the tor-commits mailing list