[tor-commits] [snowflake/master] implement snowflake-allow cookie check, messaging for when cookies disabled in options page. close #21
serene at torproject.org
serene at torproject.org
Tue Jan 3 05:01:37 UTC 2017
commit 58d2854bbda5f355b0d1c82c79bec24d276dfd46
Author: Serene H <git at keroserene.net>
Date: Mon Jan 2 14:43:45 2017 -0800
implement snowflake-allow cookie check, messaging for when cookies disabled in options page. close #21
---
proxy/snowflake.coffee | 10 +++++++++-
proxy/static/options.html | 21 ++++++++++++++++++---
2 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/proxy/snowflake.coffee b/proxy/snowflake.coffee
index 5bdf315..944c304 100644
--- a/proxy/snowflake.coffee
+++ b/proxy/snowflake.coffee
@@ -12,6 +12,7 @@ DEFAULT_RELAY =
host: '192.81.135.242'
port: 9902
COPY_PASTE_ENABLED = false
+COOKIE_NAME = "snowflake-allow";
silenceNotifications = false
query = Query.parse(location)
@@ -51,6 +52,7 @@ class Snowflake
state: MODE.INIT
retries: 0
+ # Prepare the Snowflake with a Broker (to find clients) and optional UI.
constructor: (@broker, @ui) ->
rateLimitBytes = undefined
if 'off' != query['ratelimit']
@@ -204,6 +206,13 @@ log = (msg) ->
dbg = (msg) -> log msg if DEBUG or snowflake.ui?.debug
init = (isNode) ->
+ cookies = Parse.cookie document.cookie
+ # Do nothing if snowflake has not been opted in.
+ if cookies[COOKIE_NAME] != "1"
+ console.log 'Snowflake is not activate. Please click the badge to change options.';
+ return
+
+ # Hook up to the debug UI if available.
ui = if isNode then null else new UI()
silenceNotifications = Params.getBool(query, 'silent', false)
brokerUrl = Params.getString(query, 'broker', DEFAULT_BROKER)
@@ -219,7 +228,6 @@ init = (isNode) ->
snowflake.beginWebRTC()
# Notification of closing tab with active proxy.
-# TODO: Opt-in/out parameter or cookie
window.onbeforeunload = ->
if !silenceNotifications && MODE.WEBRTC_READY == snowflake.state
return CONFIRMATION_MESSAGE
diff --git a/proxy/static/options.html b/proxy/static/options.html
index 6dbf850..91a8ea1 100644
--- a/proxy/static/options.html
+++ b/proxy/static/options.html
@@ -77,6 +77,14 @@
<div id="snowflake-status"></div>
</div>
+ <div id='cookies-disabled' style='display:none'>
+ <hr/>
+ <p>
+ Your browser has cookies disabled. You will need to enable them in order
+ to set Snowflake preferences.
+ </p>
+ </div>
+
<script>
// Defaults to opt-in.
@@ -120,9 +128,16 @@ function refreshStatus() {
}
}
-$buttons = document.getElementById('buttons');
-$buttons.style = '';
-refreshStatus();
+window.onload = function() {
+ if (navigator.cookieEnabled) {
+ // Both JS and cookies enabled -- display normal buttons.
+ document.getElementById('buttons').style = '';
+ } else {
+ // Display the cookies disabled message if necessary.
+ document.getElementById('cookies-disabled').style = '';
+ }
+ refreshStatus();
+}
</script>
</body>
</html>
More information about the tor-commits
mailing list