implement snowflake-allow cookie check, messaging for when cookies disabled in options page. close #21

This commit is contained in:
Serene H 2017-01-02 14:43:45 -08:00
parent c6b02fdaca
commit 58d2854bbd
2 changed files with 27 additions and 4 deletions

View file

@ -12,6 +12,7 @@ DEFAULT_RELAY =
host: '192.81.135.242' host: '192.81.135.242'
port: 9902 port: 9902
COPY_PASTE_ENABLED = false COPY_PASTE_ENABLED = false
COOKIE_NAME = "snowflake-allow";
silenceNotifications = false silenceNotifications = false
query = Query.parse(location) query = Query.parse(location)
@ -51,6 +52,7 @@ class Snowflake
state: MODE.INIT state: MODE.INIT
retries: 0 retries: 0
# Prepare the Snowflake with a Broker (to find clients) and optional UI.
constructor: (@broker, @ui) -> constructor: (@broker, @ui) ->
rateLimitBytes = undefined rateLimitBytes = undefined
if 'off' != query['ratelimit'] if 'off' != query['ratelimit']
@ -204,6 +206,13 @@ log = (msg) ->
dbg = (msg) -> log msg if DEBUG or snowflake.ui?.debug dbg = (msg) -> log msg if DEBUG or snowflake.ui?.debug
init = (isNode) -> 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() ui = if isNode then null else new UI()
silenceNotifications = Params.getBool(query, 'silent', false) silenceNotifications = Params.getBool(query, 'silent', false)
brokerUrl = Params.getString(query, 'broker', DEFAULT_BROKER) brokerUrl = Params.getString(query, 'broker', DEFAULT_BROKER)
@ -219,7 +228,6 @@ init = (isNode) ->
snowflake.beginWebRTC() snowflake.beginWebRTC()
# Notification of closing tab with active proxy. # Notification of closing tab with active proxy.
# TODO: Opt-in/out parameter or cookie
window.onbeforeunload = -> window.onbeforeunload = ->
if !silenceNotifications && MODE.WEBRTC_READY == snowflake.state if !silenceNotifications && MODE.WEBRTC_READY == snowflake.state
return CONFIRMATION_MESSAGE return CONFIRMATION_MESSAGE

View file

@ -77,6 +77,14 @@
<div id="snowflake-status"></div> <div id="snowflake-status"></div>
</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> <script>
// Defaults to opt-in. // Defaults to opt-in.
@ -120,9 +128,16 @@ function refreshStatus() {
} }
} }
$buttons = document.getElementById('buttons'); window.onload = function() {
$buttons.style = ''; if (navigator.cookieEnabled) {
refreshStatus(); // 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> </script>
</body> </body>
</html> </html>