[snowflake/master] Snowflake badge works, and animates when serving client (issue #16) and some logging cleanups

commit 21c38a04ceac3cfa14dc932c979075c7b6cfbe76 Author: Serene Han <keroserene+git@gmail.com> Date: Wed Feb 3 21:37:21 2016 -0800 Snowflake badge works, and animates when serving client (issue #16) and some logging cleanups --- proxy/broker.coffee | 14 +++++++------- proxy/proxypair.coffee | 19 +++++++++---------- proxy/snowflake.coffee | 11 ++++++----- proxy/static/embed.html | 30 +++++++++++++++++++++--------- proxy/ui.coffee | 2 +- 5 files changed, 44 insertions(+), 32 deletions(-) diff --git a/proxy/broker.coffee b/proxy/broker.coffee index 0f5c4ab..2cc39f7 100644 --- a/proxy/broker.coffee +++ b/proxy/broker.coffee @@ -24,7 +24,7 @@ class Broker constructor: (@url) -> @clients = 0 @id = genSnowflakeID() - log 'Contacting Broker at ' + @url + '\nSnowflake ID: ' + @id + dbg 'Contacting Broker at ' + @url + '\nSnowflake ID: ' + @id # Ensure url has the right protocol + trailing slash. @url = 'https://' + @url if 0 != @url.indexOf('https://', 0) @url += '/' if '/' != @url.substr -1 @@ -61,8 +61,8 @@ class Broker xhr.send @id sendAnswer: (answer) -> - log @id + ' - Sending answer back to broker...\n' - log answer.sdp + dbg @id + ' - Sending answer back to broker...\n' + dbg answer.sdp xhr = new XMLHttpRequest() try xhr.open 'POST', @url + 'answer' @@ -74,12 +74,12 @@ class Broker return if xhr.DONE != xhr.readyState switch xhr.status when STATUS_OK - log 'Broker: Successfully replied with answer.' - log xhr.responseText + dbg 'Broker: Successfully replied with answer.' + dbg xhr.responseText when STATUS_GONE - log 'Broker: No longer valid to reply with answer.' + dbg 'Broker: No longer valid to reply with answer.' else - log 'Broker ERROR: Unexpected ' + xhr.status + + dbg 'Broker ERROR: Unexpected ' + xhr.status + ' - ' + xhr.statusText Status.set ' failure. Please refresh.' xhr.send JSON.stringify(answer) diff --git a/proxy/proxypair.coffee b/proxy/proxypair.coffee index 3c62d13..83dc353 100644 --- a/proxy/proxypair.coffee +++ b/proxy/proxypair.coffee @@ -32,16 +32,15 @@ class ProxyPair if null == evt.candidate # TODO: Use a promise.all to tell Snowflake about all offers at once, # once multiple proxypairs are supported. - log 'Finished gathering ICE candidates.' + dbg 'Finished gathering ICE candidates.' if COPY_PASTE_ENABLED Signalling.send @pc.localDescription else snowflake.broker.sendAnswer @pc.localDescription # OnDataChannel triggered remotely from the client when connection succeeds. @pc.ondatachannel = (dc) => - console.log dc channel = dc.channel - log 'Data Channel established...' + dbg 'Data Channel established...' @prepareDataChannel channel @client = channel @@ -52,19 +51,19 @@ class ProxyPair catch e log 'Invalid SDP message.' return false - log 'SDP ' + offer.type + ' successfully received.' + dbg 'SDP ' + offer.type + ' successfully received.' true prepareDataChannel: (channel) => channel.onopen = => - log 'Data channel opened!' + log 'WebRTC DataChannel opened!' snowflake.state = MODE.WEBRTC_READY ui.setActive true # This is the point when the WebRTC datachannel is done, so the next step # is to establish websocket to the server. @connectRelay() channel.onclose = -> - log 'Data channel closed.' + log 'WebRTC DataChannel closed.' ui.setStatus 'disconnected.' snowflake.state = MODE.INIT ui.setActive false @@ -75,11 +74,11 @@ class ProxyPair # Assumes WebRTC datachannel is connected. connectRelay: => - log 'Connecting to relay...' + dbg 'Connecting to relay...' @relay = makeWebsocket @relayAddr @relay.label = 'websocket-relay' @relay.onopen = => - log '\nRelay ' + @relay.label + ' connected!' + log @relay.label + ' connected!' ui.setStatus 'connected' @relay.onclose = @onClose @relay.onerror = @onError @@ -106,13 +105,13 @@ class ProxyPair onClose: (event) => ws = event.target - log(ws.label + ': closed.') + log ws.label + ' closed.' @flush() @maybeCleanup() onError: (event) => ws = event.target - log ws.label + ': error.' + log ws.label + ' error.' @close() # we can't rely on onclose_callback to cleanup, since one common error # case is when the client fails to connect and the relay never starts. diff --git a/proxy/snowflake.coffee b/proxy/snowflake.coffee index 60c2751..a0cce74 100644 --- a/proxy/snowflake.coffee +++ b/proxy/snowflake.coffee @@ -118,7 +118,7 @@ class Snowflake @retries++ recv.then (desc) => offer = JSON.parse desc - log 'Received:\n\n' + offer.sdp + '\n' + dbg 'Received:\n\n' + offer.sdp + '\n' @receiveOffer offer , (err) -> countdown(err, DEFAULT_BROKER_POLL_INTERVAL / 1000) @@ -133,7 +133,7 @@ class Snowflake sendAnswer: => next = (sdp) => - log 'webrtc: Answer ready.' + dbg 'webrtc: Answer ready.' @proxyPair.pc.setLocalDescription sdp promise = @proxyPair.pc.createAnswer next promise.then next if promise @@ -170,7 +170,7 @@ class Snowflake # Close all existing ProxyPairs and begin finding new clients from scratch. reset: -> @cease() - log '\nSnowflake resetting...' + log 'Snowflake resetting...' @retries = 0 @beginWebRTC() @@ -178,7 +178,6 @@ snowflake = null broker = null ui = null - # Signalling channel - just tells user to copy paste to the peer. # Eventually this should go over the broker. Signalling = @@ -202,9 +201,11 @@ Signalling = # Log to both console and UI if applicable. log = (msg) -> - console.log msg + console.log 'Snowflake: ' + msg ui.log msg +dbg = (msg) -> log msg if ui.debug + init = -> ui = new UI() log '== snowflake proxy ==' diff --git a/proxy/static/embed.html b/proxy/static/embed.html index ae361c6..c59809e 100644 --- a/proxy/static/embed.html +++ b/proxy/static/embed.html @@ -13,23 +13,35 @@ body { position: absolute; width: 100%; height: 100%; top: 0; margin: 0 auto; - background-color: #424; - color: #000; - text-align: center; - font-size: 16px; - font-variant: small-caps; + background-color: #424; color: #000; + font-size: 10px; letter-spacing: 1px; font-variant: small-caps; + text-align: center; cursor: default; + margin: 0; padding: 0; } #badge { - margin: auto; - width: 88px; height: 31px; + margin: auto; padding: 0; + width: 88px; height: 16px; background-image: url('koch.jpg'); - color: #fff; + text-shadow: 0 0 5px #fef; + font-weight: 900; + } + .active { + -webkit-animation: bgScroll 8s linear infinite; + animation: bgScroll 8s linear infinite; + } + @-webkit-keyframes bgScroll { + from {background-position: 49% -4%;} + to {background-position: 49% 104%;} + } + @keyframes bgScroll { + from {background-position: 49% -4%;} + to {background-position: 49% 104%;} } </style> </head> <body> <div id="badge"> - Snowflake + Internet Freedom </div> </body> </html> diff --git a/proxy/ui.coffee b/proxy/ui.coffee index eb54854..648a88e 100644 --- a/proxy/ui.coffee +++ b/proxy/ui.coffee @@ -37,7 +37,7 @@ class UI if debug @$msglog.className = if connected then 'active' else '' else - # magic + @$badge.className = if connected then 'active' else '' # Local input from keyboard into message window. acceptInput: =>
participants (1)
-
serene@torproject.org