mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-14 14:11:23 -04:00
implement snowflake-allow cookie check, messaging for when cookies disabled in options page. close #21
This commit is contained in:
parent
c6b02fdaca
commit
58d2854bbd
2 changed files with 27 additions and 4 deletions
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue