From 299c12b2e91454d2ef4f2c5203cc212a2674a23e Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Fri, 26 Jul 2019 10:45:50 -0400 Subject: [PATCH 001/994] Version bump to fix issue with addon update --- proxy/webext/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/webext/manifest.json b/proxy/webext/manifest.json index fa96a99..75475ae 100644 --- a/proxy/webext/manifest.json +++ b/proxy/webext/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Snowflake", - "version": "0.0.7", + "version": "0.0.8", "description": "Snowflake is a WebRTC pluggable transport for Tor.", "background": { "scripts": ["snowflake.js"], From 905f8b78c122dc7cddfe1094711151fd89663c1c Mon Sep 17 00:00:00 2001 From: David Fifield Date: Sat, 27 Jul 2019 09:30:29 -0600 Subject: [PATCH 002/994] bamsoftware.com -> freehaven.net in proxy/README.md. https://bugs.torproject.org/31250 --- proxy/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proxy/README.md b/proxy/README.md index bd1f819..409d753 100644 --- a/proxy/README.md +++ b/proxy/README.md @@ -29,6 +29,6 @@ To run locally, either: ### Parameters With no parameters, -snowflake uses the default relay `snowflake.bamsoftware.com:443` and +snowflake uses the default relay `snowflake.freehaven.net:443` and uses automatic signaling with the default broker at -`https://snowflake-broker.bamsoftware.com/`. +`https://snowflake-broker.freehaven.net/`. From 695554cbc5fc2af18fd978c15f38706b42b9d842 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Sat, 27 Jul 2019 09:42:12 -0600 Subject: [PATCH 003/994] Make "npm run build" include .htaccess. Formerly it was copying static/*, and the wildcard skipped the dotfile. --- proxy/make.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/proxy/make.js b/proxy/make.js index b614864..5d6e013 100755 --- a/proxy/make.js +++ b/proxy/make.js @@ -30,10 +30,6 @@ var OUTFILE = 'snowflake.js'; var STATIC = 'static'; -var copyStaticFiles = function() { - exec('cp ' + STATIC + '/* build/'); -}; - var concatJS = function(outDir, init) { var files; files = FILES.concat(`init-${init}.js`); @@ -70,8 +66,8 @@ task('test', 'snowflake unit tests', function() { }); task('build', 'build the snowflake proxy', function() { - exec('mkdir -p build'); - copyStaticFiles(); + exec('rm -r build'); + exec('cp -r ' + STATIC + '/ build/'); concatJS('build', 'badge'); console.log('Snowflake prepared.'); }); From 0bded511b99a396df2172c89f0ac9a9ae21a2115 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Sat, 27 Jul 2019 09:53:09 -0600 Subject: [PATCH 004/994] Add a "Deploying" section to proxy/README.md. --- proxy/README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/proxy/README.md b/proxy/README.md index 409d753..70ea273 100644 --- a/proxy/README.md +++ b/proxy/README.md @@ -26,6 +26,48 @@ To run locally, either: - For a more fully featured "debug" version, start a webserver and navigate to `snowflake.html`. +### Preparing to deploy + +Background information: + * https://bugs.torproject.org/23947#comment:8 + * https://help.torproject.org/tsa/doc/static-sites/ + * https://help.torproject.org/tsa/doc/ssh-jump-host/ + +You need to be in LDAP group "snowflake" and have set up an SSH key with your LDAP account. +In your ~/.ssh/config file, you should have something like: + +``` +Host staticiforme +HostName staticiforme.torproject.org +User +ProxyJump people.torproject.org +IdentityFile ~/.ssh/tor +``` + +### Deploying + +``` +npm run build +``` + +Do a "dry run" rsync with `-n` to check that only expected files are being changed. If you don't understand why a file would be updated, you can add the `-i` option to see the reason. + +``` +rsync -n --delete -crv build/ staticiforme:/srv/snowflake.torproject.org/htdocs/ +``` + +If it looks good, then repeat the rsync without `-n`. + +``` +rsync --delete -crv build/ staticiforme:/srv/snowflake.torproject.org/htdocs/ +``` + +Then run the command to copy the new files to the live web servers: + +``` +ssh staticiforme 'static-update-component snowflake.torproject.org' +``` + ### Parameters With no parameters, From e60f22833af9050cafef5ab00931c0c69867130a Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Sun, 14 Jul 2019 09:41:51 +0200 Subject: [PATCH 005/994] Reimagine the badge Trac 27385 --- .gitignore | 4 + proxy/init-badge.js | 125 ++++++++++++++---- proxy/init-testing.js | 83 ++++++++++++ proxy/init-webext.js | 106 ++++++++++++++- proxy/make.js | 22 +-- proxy/static/.htaccess | 1 - proxy/{webext/popup.css => static/embed.css} | 7 +- proxy/static/embed.html | 72 ++++------ .../icons/arrowhead-right-12.svg | 0 proxy/{webext => static}/icons/status-off.png | Bin proxy/{webext => static}/icons/status-off.svg | 0 .../icons/status-off@2x.png | Bin .../icons/status-off@3x.png | Bin proxy/{webext => static}/icons/status-on.png | Bin proxy/{webext => static}/icons/status-on.svg | 0 .../{webext => static}/icons/status-on@2x.png | Bin .../{webext => static}/icons/status-on@3x.png | Bin .../icons/status-running.png | Bin .../icons/status-running.svg | 0 proxy/static/index.css | 5 + proxy/static/index.html | 11 ++ proxy/static/koch.jpg | Bin 131664 -> 0 bytes proxy/static/popup.js | 28 ++++ proxy/static/snowflake.html | 60 --------- proxy/ui.js | 118 ----------------- proxy/util.js | 24 +--- proxy/webext/{popup.js => embed.js} | 29 +--- proxy/webext/manifest.json | 32 ++--- proxy/webext/popup.html | 25 ---- 29 files changed, 401 insertions(+), 351 deletions(-) create mode 100644 proxy/init-testing.js rename proxy/{webext/popup.css => static/embed.css} (95%) rename proxy/{webext => static}/icons/arrowhead-right-12.svg (100%) rename proxy/{webext => static}/icons/status-off.png (100%) rename proxy/{webext => static}/icons/status-off.svg (100%) rename proxy/{webext => static}/icons/status-off@2x.png (100%) rename proxy/{webext => static}/icons/status-off@3x.png (100%) rename proxy/{webext => static}/icons/status-on.png (100%) rename proxy/{webext => static}/icons/status-on.svg (100%) rename proxy/{webext => static}/icons/status-on@2x.png (100%) rename proxy/{webext => static}/icons/status-on@3x.png (100%) rename proxy/{webext => static}/icons/status-running.png (100%) rename proxy/{webext => static}/icons/status-running.svg (100%) delete mode 100644 proxy/static/koch.jpg create mode 100644 proxy/static/popup.js delete mode 100644 proxy/static/snowflake.html rename proxy/webext/{popup.js => embed.js} (60%) delete mode 100644 proxy/webext/popup.html diff --git a/.gitignore b/.gitignore index a187011..315500c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,5 +15,9 @@ proxy/build proxy/node_modules proxy/spec/support proxy/webext/snowflake.js +proxy/webext/popup.js +proxy/webext/embed.html +proxy/webext/embed.css +proxy/webext/icons/ ignore/ npm-debug.log diff --git a/proxy/init-badge.js b/proxy/init-badge.js index 8646bc4..f85be29 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -1,18 +1,71 @@ /* global TESTING, Util, Params, Config, DebugUI, BadgeUI, UI, Broker, Snowflake */ +/* +UI +*/ + +class BadgeUI extends UI { + + constructor() { + super(); + this.popup = new Popup(); + } + + setStatus() {} + + missingFeature(missing) { + this.popup.setImgSrc('off'); + this.popup.setStatusText("Snowflake is off"); + this.popup.setStatusDesc(missing, 'firebrick'); + this.popup.hideButton(); + } + + turnOn() { + const clients = this.active ? 1 : 0; + this.popup.setChecked(true); + this.popup.setToggleText('Turn Off'); + this.popup.setStatusText(`${clients} client${(clients !== 1) ? 's' : ''} connected.`); + // FIXME: Share stats from webext + const total = 0; + this.popup.setStatusDesc(`Your snowflake has helped ${total} user${(total !== 1) ? 's' : ''} circumvent censorship in the last 24 hours.`); + this.popup.setImgSrc(this.active ? "running" : "on"); + } + + turnOff() { + this.popup.setChecked(false); + this.popup.setToggleText('Turn On'); + this.popup.setStatusText("Snowflake is off"); + this.popup.setStatusDesc(""); + this.popup.setImgSrc("off"); + } + + setActive(connected) { + super.setActive(connected); + turnOn(); + } + +} + +BadgeUI.prototype.popup = null; + + /* Entry point. */ -var snowflake, query, debug, silenceNotifications, log, dbg, init; +// Defaults to opt-in. +var COOKIE_NAME = "snowflake-allow"; +var COOKIE_LIFETIME = "Thu, 01 Jan 2038 00:00:00 GMT"; +var COOKIE_EXPIRE = "Thu, 01 Jan 1970 00:00:01 GMT"; + +function setSnowflakeCookie(val, expires) { + document.cookie = `${COOKIE_NAME}=${val}; path=/; expires=${expires};`; +} + +var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotifications, query; (function() { - if (((typeof TESTING === "undefined" || TESTING === null) || !TESTING) && !Util.featureDetect()) { - console.log('webrtc feature not detected. shutting down'); - return; - } - snowflake = null; query = new URLSearchParams(location.search); @@ -35,32 +88,56 @@ var snowflake, query, debug, silenceNotifications, log, dbg, init; } }; + update = function() { + const cookies = Parse.cookie(document.cookie); + if (cookies[COOKIE_NAME] === '1') { + ui.turnOn(); + dbg('Contacting Broker at ' + broker.url); + log('Starting snowflake'); + snowflake.setRelayAddr(config.relayAddr); + snowflake.beginWebRTC(); + } else { + ui.turnOff(); + snowflake.disable(); + log('Currently not active.'); + } + }; + init = function() { - var broker, config, ui; + ui = new BadgeUI(); + + if (!Util.hasWebRTC()) { + ui.missingFeature("WebRTC feature is not detected."); + return; + } + + if (!Util.hasCookies()) { + ui.missingFeature("Cookies are not enabled."); + return; + } + + if (Util.mightBeTBB()) { + ui.missingFeature("Will not run within Tor Browser."); + return; + } + config = new Config; if ('off' !== query.get('ratelimit')) { config.rateLimitBytes = Params.getByteCount(query, 'ratelimit', config.rateLimitBytes); } - ui = null; - if (document.getElementById('badge') !== null) { - ui = new BadgeUI(); - } else if (document.getElementById('status') !== null) { - ui = new DebugUI(); - } else { - ui = new UI(); - } broker = new Broker(config.brokerUrl); snowflake = new Snowflake(config, ui, broker); log('== snowflake proxy =='); - if (Util.snowflakeIsDisabled(config.cookieName)) { - // 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(config.relayAddr); - return snowflake.beginWebRTC(); + update(); + + document.getElementById('enabled').addEventListener('change', (event) => { + if (event.target.checked) { + setSnowflakeCookie('1', COOKIE_LIFETIME); + } else { + setSnowflakeCookie('', COOKIE_EXPIRE); + } + update(); + }) }; // Notification of closing tab with active proxy. diff --git a/proxy/init-testing.js b/proxy/init-testing.js new file mode 100644 index 0000000..003f2b6 --- /dev/null +++ b/proxy/init-testing.js @@ -0,0 +1,83 @@ +/* global TESTING, Util, Params, Config, DebugUI, UI, Broker, Snowflake */ + +/* +Entry point. +*/ + +var snowflake, query, debug, silenceNotifications, log, dbg, init; + +(function() { + + if (((typeof TESTING === "undefined" || TESTING === null) || !TESTING) && !Util.featureDetect()) { + console.log('webrtc feature not detected. shutting down'); + return; + } + + snowflake = null; + + query = new URLSearchParams(location.search); + + debug = Params.getBool(query, 'debug', false); + + silenceNotifications = Params.getBool(query, 'silent', false); + + // 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 = function(msg) { + console.log('Snowflake: ' + msg); + return snowflake != null ? snowflake.ui.log(msg) : void 0; + }; + + dbg = function(msg) { + if (debug || ((snowflake != null ? snowflake.ui : void 0) instanceof DebugUI)) { + return log(msg); + } + }; + + init = function() { + var broker, config, ui; + config = new Config; + if ('off' !== query['ratelimit']) { + config.rateLimitBytes = Params.getByteCount(query, 'ratelimit', config.rateLimitBytes); + } + ui = null; + if (document.getElementById('status') !== null) { + ui = new DebugUI(); + } else { + ui = new UI(); + } + broker = new Broker(config.brokerUrl); + snowflake = new Snowflake(config, ui, broker); + log('== snowflake proxy =='); + if (Util.snowflakeIsDisabled(config.cookieName)) { + // 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(config.relayAddr); + return snowflake.beginWebRTC(); + }; + + // Notification of closing tab with active proxy. + window.onbeforeunload = function() { + if ( + !silenceNotifications && + snowflake !== null && + Snowflake.MODE.WEBRTC_READY === snowflake.state + ) { + return Snowflake.MESSAGE.CONFIRMATION; + } + return null; + }; + + window.onunload = function() { + if (snowflake !== null) { snowflake.disable(); } + return null; + }; + + window.onload = init; + +}()); diff --git a/proxy/init-webext.js b/proxy/init-webext.js index c641621..df618e6 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -1,6 +1,110 @@ /* global Util, chrome, Config, WebExtUI, Broker, Snowflake */ /* eslint no-unused-vars: 0 */ +/* +UI +*/ + +class WebExtUI extends UI { + + constructor() { + super(); + this.onConnect = this.onConnect.bind(this); + this.onMessage = this.onMessage.bind(this); + this.onDisconnect = this.onDisconnect.bind(this); + this.initStats(); + chrome.runtime.onConnect.addListener(this.onConnect); + } + + initStats() { + this.stats = [0]; + return setInterval((() => { + this.stats.unshift(0); + this.stats.splice(24); + return this.postActive(); + }), 60 * 60 * 1000); + } + + initToggle() { + chrome.storage.local.get("snowflake-enabled", (result) => { + if (result['snowflake-enabled'] !== void 0) { + this.enabled = result['snowflake-enabled']; + } else { + log("Toggle state not yet saved"); + } + this.setEnabled(this.enabled); + }); + } + + postActive() { + var ref; + return (ref = this.port) != null ? ref.postMessage({ + active: this.active, + total: this.stats.reduce((function(t, c) { + return t + c; + }), 0), + enabled: this.enabled + }) : void 0; + } + + onConnect(port) { + this.port = port; + port.onDisconnect.addListener(this.onDisconnect); + port.onMessage.addListener(this.onMessage); + return this.postActive(); + } + + onMessage(m) { + this.enabled = m.enabled; + this.setEnabled(this.enabled); + this.postActive(); + chrome.storage.local.set({ + "snowflake-enabled": this.enabled + }, function() { + log("Stored toggle state"); + }); + } + + onDisconnect() { + this.port = null; + } + + setActive(connected) { + super.setActive(connected); + if (connected) { + this.stats[0] += 1; + } + this.postActive(); + if (this.active) { + return chrome.browserAction.setIcon({ + path: { + 32: "icons/status-running.png" + } + }); + } else { + return chrome.browserAction.setIcon({ + path: { + 32: "icons/status-on.png" + } + }); + } + } + + setEnabled(enabled) { + update(); + return chrome.browserAction.setIcon({ + path: { + 32: "icons/status-" + (enabled ? "on" : "off") + ".png" + } + }); + } + +} + +WebExtUI.prototype.port = null; + +WebExtUI.prototype.stats = null; + /* Entry point. */ @@ -30,7 +134,7 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific } }; - if (!Util.featureDetect()) { + if (!Util.hasWebRTC()) { chrome.runtime.onConnect.addListener(function(port) { return port.postMessage({ missingFeature: true diff --git a/proxy/make.js b/proxy/make.js index 5d6e013..52ee098 100755 --- a/proxy/make.js +++ b/proxy/make.js @@ -26,14 +26,19 @@ var FILES_SPEC = [ 'spec/websocket.spec.js' ]; -var OUTFILE = 'snowflake.js'; - var STATIC = 'static'; -var concatJS = function(outDir, init) { +var SHARED_FILES = [ + 'embed.html', + 'embed.css', + 'popup.js', + 'icons' +]; + +var concatJS = function(outDir, init, outFile) { var files; files = FILES.concat(`init-${init}.js`); - return exec(`cat ${files.join(' ')} > ${outDir}/${OUTFILE}`, function(err) { + return exec(`cat ${files.join(' ')} > ${outDir}/${outFile}`, function(err) { if (err) { throw err; } @@ -53,7 +58,7 @@ task('test', 'snowflake unit tests', function() { exec('mkdir -p test'); exec('jasmine init >&-'); // Simply concat all the files because we're not using node exports. - jasmineFiles = FILES.concat('init-badge.js', FILES_SPEC); + jasmineFiles = FILES.concat('init-testing.js', FILES_SPEC); outFile = 'test/bundle.spec.js'; exec('echo "TESTING = true" > ' + outFile); exec('cat ' + jasmineFiles.join(' ') + ' | cat >> ' + outFile); @@ -68,19 +73,20 @@ task('test', 'snowflake unit tests', function() { task('build', 'build the snowflake proxy', function() { exec('rm -r build'); exec('cp -r ' + STATIC + '/ build/'); - concatJS('build', 'badge'); + concatJS('build', 'badge', 'embed.js'); console.log('Snowflake prepared.'); }); task('webext', 'build the webextension', function() { exec('mkdir -p webext'); - concatJS('webext', 'webext'); + exec(`cp -r ${STATIC}/{${SHARED_FILES.join(',')}} webext/`); + concatJS('webext', 'webext', 'snowflake.js'); console.log('Webextension prepared.'); }); task('node', 'build the node binary', function() { exec('mkdir -p build'); - concatJS('build', 'node'); + concatJS('build', 'node', 'snowflake.js'); console.log('Node prepared.'); }); diff --git a/proxy/static/.htaccess b/proxy/static/.htaccess index 3dd217d..f733194 100644 --- a/proxy/static/.htaccess +++ b/proxy/static/.htaccess @@ -1,4 +1,3 @@ Header always unset X-Frame-Options -Redirect permanent /options.html /index.html diff --git a/proxy/webext/popup.css b/proxy/static/embed.css similarity index 95% rename from proxy/webext/popup.css rename to proxy/static/embed.css index 856e855..e6d8149 100644 --- a/proxy/webext/popup.css +++ b/proxy/static/embed.css @@ -2,7 +2,7 @@ body { margin: 10px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; width: 300px; - font-size:12px; + font-size: 12px; } #active { @@ -27,14 +27,13 @@ body { display: block; position: absolute; top: 12px; - background-image: url(../icons/arrowhead-right-12.svg); + background-image: url('icons/arrowhead-right-12.svg'); width: 12px; height: 12px; opacity : 0.6; z-index: 9999; right: 0px; margin-right: 10px; - } /* Snowflake Status */ @@ -43,14 +42,12 @@ body { -webkit-animation:spin 8s linear infinite; -moz-animation:spin 8s linear infinite; animation:spin 8s linear infinite; - fill: BlueViolet; } @-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } } @-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } } @keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } } - /* Toggle */ .switch { diff --git a/proxy/static/embed.html b/proxy/static/embed.html index 32c26ca..a48daf3 100644 --- a/proxy/static/embed.html +++ b/proxy/static/embed.html @@ -1,52 +1,28 @@ - - - - - - - - -
- Internet Freedom + + + + + + + + + +
+ +

Snowflake is off

+

-
- +
+ + +
+ + diff --git a/proxy/webext/icons/arrowhead-right-12.svg b/proxy/static/icons/arrowhead-right-12.svg similarity index 100% rename from proxy/webext/icons/arrowhead-right-12.svg rename to proxy/static/icons/arrowhead-right-12.svg diff --git a/proxy/webext/icons/status-off.png b/proxy/static/icons/status-off.png similarity index 100% rename from proxy/webext/icons/status-off.png rename to proxy/static/icons/status-off.png diff --git a/proxy/webext/icons/status-off.svg b/proxy/static/icons/status-off.svg similarity index 100% rename from proxy/webext/icons/status-off.svg rename to proxy/static/icons/status-off.svg diff --git a/proxy/webext/icons/status-off@2x.png b/proxy/static/icons/status-off@2x.png similarity index 100% rename from proxy/webext/icons/status-off@2x.png rename to proxy/static/icons/status-off@2x.png diff --git a/proxy/webext/icons/status-off@3x.png b/proxy/static/icons/status-off@3x.png similarity index 100% rename from proxy/webext/icons/status-off@3x.png rename to proxy/static/icons/status-off@3x.png diff --git a/proxy/webext/icons/status-on.png b/proxy/static/icons/status-on.png similarity index 100% rename from proxy/webext/icons/status-on.png rename to proxy/static/icons/status-on.png diff --git a/proxy/webext/icons/status-on.svg b/proxy/static/icons/status-on.svg similarity index 100% rename from proxy/webext/icons/status-on.svg rename to proxy/static/icons/status-on.svg diff --git a/proxy/webext/icons/status-on@2x.png b/proxy/static/icons/status-on@2x.png similarity index 100% rename from proxy/webext/icons/status-on@2x.png rename to proxy/static/icons/status-on@2x.png diff --git a/proxy/webext/icons/status-on@3x.png b/proxy/static/icons/status-on@3x.png similarity index 100% rename from proxy/webext/icons/status-on@3x.png rename to proxy/static/icons/status-on@3x.png diff --git a/proxy/webext/icons/status-running.png b/proxy/static/icons/status-running.png similarity index 100% rename from proxy/webext/icons/status-running.png rename to proxy/static/icons/status-running.png diff --git a/proxy/webext/icons/status-running.svg b/proxy/static/icons/status-running.svg similarity index 100% rename from proxy/webext/icons/status-running.svg rename to proxy/static/icons/status-running.svg diff --git a/proxy/static/index.css b/proxy/static/index.css index 70b5a24..9502a37 100644 --- a/proxy/static/index.css +++ b/proxy/static/index.css @@ -76,3 +76,8 @@ h3 { .diagram img, .screenshot img { max-width: 100%; } + +textarea { + max-width: 100%; + width: 600px; +} diff --git a/proxy/static/index.html b/proxy/static/index.html index e46c373..20fe5c8 100644 --- a/proxy/static/index.html +++ b/proxy/static/index.html @@ -77,6 +77,17 @@ Consider adding keywords snowflake-webextension or snowflake-client to let us know how which part of the Snowflake system is experiencing problems.

+ +

EMBED

+ +

It is now possible to embed the Snowflake badge on any website:

+ + + +

Which looks like this:

+ + +
diff --git a/proxy/static/koch.jpg b/proxy/static/koch.jpg deleted file mode 100644 index 1a3c1e3d4191a410a2f526126ef3bb36c3ad9233..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131664 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
    |`fUa>wVQW<(PKi`~9g92zDk&~i%!Km2K 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 diff --git a/proxy/static/popup.js b/proxy/static/popup.js new file mode 100644 index 0000000..0995775 --- /dev/null +++ b/proxy/static/popup.js @@ -0,0 +1,28 @@ +/* exported Popup */ + +class Popup { + constructor() { + this.div = document.getElementById('active'); + this.ps = this.div.querySelectorAll('p'); + this.img = this.div.querySelector('img'); + } + setImgSrc(src) { + this.img.src = `icons/status-${src}.png`; + } + setStatusText(txt) { + this.ps[0].innerText = txt; + } + setStatusDesc(desc, color) { + this.ps[1].innerText = desc; + this.ps[1].style.color = color || 'black'; + } + hideButton() { + document.querySelector('.button').style.display = 'none'; + } + setChecked(checked) { + document.getElementById('enabled').checked = checked; + } + setToggleText(txt) { + document.getElementById('toggle').innerText = txt; + } +} diff --git a/proxy/static/snowflake.html b/proxy/static/snowflake.html deleted file mode 100644 index 84790ed..0000000 --- a/proxy/static/snowflake.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - Snowflake - - - - - -
    -
    - Timeout... -
    - -
    - - - diff --git a/proxy/ui.js b/proxy/ui.js index 54e0897..f99affa 100644 --- a/proxy/ui.js +++ b/proxy/ui.js @@ -21,23 +21,6 @@ UI.prototype.active = false; UI.prototype.enabled = true; -class BadgeUI extends UI { - - constructor() { - super(); - this.$badge = document.getElementById('badge'); - } - - setActive(connected) { - super.setActive(connected); - return this.$badge.className = connected ? 'active' : ''; - } - -} - -BadgeUI.prototype.$badge = null; - - class DebugUI extends UI { constructor() { @@ -75,104 +58,3 @@ class DebugUI extends UI { DebugUI.prototype.$msglog = null; DebugUI.prototype.$status = null; - - -class WebExtUI extends UI { - - constructor() { - super(); - this.onConnect = this.onConnect.bind(this); - this.onMessage = this.onMessage.bind(this); - this.onDisconnect = this.onDisconnect.bind(this); - this.initStats(); - chrome.runtime.onConnect.addListener(this.onConnect); - } - - initStats() { - this.stats = [0]; - return setInterval((() => { - this.stats.unshift(0); - this.stats.splice(24); - return this.postActive(); - }), 60 * 60 * 1000); - } - - initToggle() { - chrome.storage.local.get("snowflake-enabled", (result) => { - if (result['snowflake-enabled'] !== void 0) { - this.enabled = result['snowflake-enabled']; - } else { - log("Toggle state not yet saved"); - } - this.setEnabled(this.enabled); - }); - } - - postActive() { - var ref; - return (ref = this.port) != null ? ref.postMessage({ - active: this.active, - total: this.stats.reduce((function(t, c) { - return t + c; - }), 0), - enabled: this.enabled - }) : void 0; - } - - onConnect(port) { - this.port = port; - port.onDisconnect.addListener(this.onDisconnect); - port.onMessage.addListener(this.onMessage); - return this.postActive(); - } - - onMessage(m) { - this.enabled = m.enabled; - this.setEnabled(this.enabled); - this.postActive(); - chrome.storage.local.set({ - "snowflake-enabled": this.enabled - }, function() { - log("Stored toggle state"); - }); - } - - onDisconnect() { - this.port = null; - } - - setActive(connected) { - super.setActive(connected); - if (connected) { - this.stats[0] += 1; - } - this.postActive(); - if (this.active) { - return chrome.browserAction.setIcon({ - path: { - 32: "icons/status-running.png" - } - }); - } else { - return chrome.browserAction.setIcon({ - path: { - 32: "icons/status-on.png" - } - }); - } - } - - setEnabled(enabled) { - update(); - return chrome.browserAction.setIcon({ - path: { - 32: "icons/status-" + (enabled ? "on" : "off") + ".png" - } - }); - } - -} - -WebExtUI.prototype.port = null; - -WebExtUI.prototype.stats = null; diff --git a/proxy/util.js b/proxy/util.js index 387f0a1..88a9bf6 100644 --- a/proxy/util.js +++ b/proxy/util.js @@ -10,31 +10,21 @@ Contains helpers for parsing query strings and other utilities. class Util { static mightBeTBB() { - return Util.TBB_UAS.indexOf(window.navigator.userAgent) > -1 && (window.navigator.mimeTypes && window.navigator.mimeTypes.length === 0); + return Util.TBB_UAS.indexOf(window.navigator.userAgent) > -1 && ( + window.navigator.mimeTypes && window.navigator.mimeTypes.length === 0 + ); } static genSnowflakeID() { return Math.random().toString(36).substring(2); } - static snowflakeIsDisabled(cookieName) { - var cookies; - cookies = Parse.cookie(document.cookie); - // Do nothing if snowflake has not been opted in by user. - if (cookies[cookieName] !== '1') { - log('Not opted-in. Please click the badge to change options.'); - return true; - } - // Also do nothing if running in Tor Browser. - if (Util.mightBeTBB()) { - log('Will not run within Tor Browser.'); - return true; - } - return false; + static hasWebRTC() { + return typeof PeerConnection === 'function'; } - static featureDetect() { - return typeof PeerConnection === 'function'; + static hasCookies() { + return navigator.cookieEnabled; } } diff --git a/proxy/webext/popup.js b/proxy/webext/embed.js similarity index 60% rename from proxy/webext/popup.js rename to proxy/webext/embed.js index d8d6464..e1364bf 100644 --- a/proxy/webext/popup.js +++ b/proxy/webext/embed.js @@ -1,36 +1,9 @@ -/* global chrome */ +/* global chrome, Popup */ const port = chrome.runtime.connect({ name: "popup" }); -class Popup { - constructor() { - this.div = document.getElementById('active'); - this.ps = this.div.querySelectorAll('p'); - this.img = this.div.querySelector('img'); - } - setImgSrc(src) { - this.img.src = `icons/status-${src}.png`; - } - setStatusText(txt) { - this.ps[0].innerText = txt; - } - setStatusDesc(desc, color) { - this.ps[1].innerText = desc; - this.ps[1].style.color = color || 'black'; - } - hideButton() { - document.querySelector('.button').style.display = 'none'; - } - setChecked(checked) { - document.getElementById('enabled').checked = checked; - } - setToggleText(txt) { - document.getElementById('toggle').innerText = txt; - } -} - port.onMessage.addListener((m) => { const { active, enabled, total, missingFeature } = m; const popup = new Popup(); diff --git a/proxy/webext/manifest.json b/proxy/webext/manifest.json index 75475ae..3b96055 100644 --- a/proxy/webext/manifest.json +++ b/proxy/webext/manifest.json @@ -1,18 +1,18 @@ { - "manifest_version": 2, - "name": "Snowflake", - "version": "0.0.8", - "description": "Snowflake is a WebRTC pluggable transport for Tor.", - "background": { - "scripts": ["snowflake.js"], - "persistent": true - }, - "browser_action": { - "default_icon": { - "32": "icons/status-on.png" - }, - "default_title": "Snowflake", - "default_popup": "popup.html" - }, - "permissions": ["storage"] + "manifest_version": 2, + "name": "Snowflake", + "version": "0.0.8", + "description": "Snowflake is a WebRTC pluggable transport for Tor.", + "background": { + "scripts": ["snowflake.js"], + "persistent": true + }, + "browser_action": { + "default_icon": { + "32": "icons/status-on.png" + }, + "default_title": "Snowflake", + "default_popup": "embed.html" + }, + "permissions": ["storage"] } diff --git a/proxy/webext/popup.html b/proxy/webext/popup.html deleted file mode 100644 index e3ba2f5..0000000 --- a/proxy/webext/popup.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - -
    - -

    -

    -
    -
    - - -
    - - - From 0f33546fec141b7e7e451d3a15b247f9c8eb472e Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Mon, 15 Jul 2019 09:07:00 +0200 Subject: [PATCH 006/994] Clean up some linting errors --- proxy/init-badge.js | 8 +++----- proxy/init-webext.js | 2 +- proxy/ui.js | 2 -- proxy/util.js | 1 - 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/proxy/init-badge.js b/proxy/init-badge.js index f85be29..b240456 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -1,4 +1,4 @@ -/* global TESTING, Util, Params, Config, DebugUI, BadgeUI, UI, Broker, Snowflake */ +/* global Util, Params, Config, UI, Broker, Snowflake, Popup, Parse */ /* UI @@ -41,7 +41,7 @@ class BadgeUI extends UI { setActive(connected) { super.setActive(connected); - turnOn(); + this.turnOn(); } } @@ -83,9 +83,7 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific }; dbg = function(msg) { - if (debug || ((snowflake != null ? snowflake.ui : void 0) instanceof DebugUI)) { - return log(msg); - } + if (debug) { log(msg); } }; update = function() { diff --git a/proxy/init-webext.js b/proxy/init-webext.js index df618e6..0102385 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -1,4 +1,4 @@ -/* global Util, chrome, Config, WebExtUI, Broker, Snowflake */ +/* global Util, chrome, Config, UI, Broker, Snowflake */ /* eslint no-unused-vars: 0 */ /* diff --git a/proxy/ui.js b/proxy/ui.js index f99affa..09d3d07 100644 --- a/proxy/ui.js +++ b/proxy/ui.js @@ -1,5 +1,3 @@ -/* global chrome, log, update */ - /* All of Snowflake's DOM manipulation and inputs. */ diff --git a/proxy/util.js b/proxy/util.js index 88a9bf6..8fa6d9c 100644 --- a/proxy/util.js +++ b/proxy/util.js @@ -1,4 +1,3 @@ -/* global log */ /* exported Params, DummyRateLimit */ /* From a164d61f1641b13b12f467b4639838f136f6f300 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Mon, 15 Jul 2019 09:32:03 +0200 Subject: [PATCH 007/994] Remove tests referring to BadgeUI Since that's been overhauled. The whole ui.spec.js file probably needs redoing. --- proxy/spec/ui.spec.js | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/proxy/spec/ui.spec.js b/proxy/spec/ui.spec.js index 3386a2d..dc9aa35 100644 --- a/proxy/spec/ui.spec.js +++ b/proxy/spec/ui.spec.js @@ -1,4 +1,4 @@ -/* global expect, it, describe, spyOn, DebugUI, BadgeUI */ +/* global expect, it, describe, spyOn, DebugUI */ /* eslint no-redeclare: 0 */ /* @@ -30,20 +30,6 @@ describe('UI', function() { expect(u.$msglog).not.toBeNull(); }); - it('is not debug mode when badge exists', function() { - var u; - spyOn(document, 'getElementById').and.callFake(function(id) { - if ('badge' === id) { - return {}; - } - return null; - }); - u = new BadgeUI(); - expect(document.getElementById).toHaveBeenCalled(); - expect(document.getElementById.calls.count()).toEqual(1); - expect(u.$badge).not.toBeNull(); - }); - it('sets status message when in debug mode', function() { var u; u = new DebugUI(); @@ -66,16 +52,6 @@ describe('UI', function() { expect(u.$msglog.className).toEqual(''); }); - it('sets badge css correctly for non-debug mode', function() { - var u; - u = new BadgeUI(); - u.$badge = {}; - u.setActive(true); - expect(u.$badge.className).toEqual('active'); - u.setActive(false); - expect(u.$badge.className).toEqual(''); - }); - it('logs to the textarea correctly when debug mode', function() { var u; u = new DebugUI(); From 03512bfa297331a66b63f789876c72c4be8ee221 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Thu, 25 Jul 2019 17:40:20 -0400 Subject: [PATCH 008/994] Move more UI code to use specific sites --- proxy/init-testing.js | 44 ++++++++++++++++++++++++++++++++++++++++++- proxy/init-webext.js | 2 ++ proxy/ui.js | 41 ---------------------------------------- 3 files changed, 45 insertions(+), 42 deletions(-) diff --git a/proxy/init-testing.js b/proxy/init-testing.js index 003f2b6..5b63099 100644 --- a/proxy/init-testing.js +++ b/proxy/init-testing.js @@ -1,4 +1,46 @@ -/* global TESTING, Util, Params, Config, DebugUI, UI, Broker, Snowflake */ +/* global TESTING, Util, Params, Config, UI, Broker, Snowflake */ + +/* +UI +*/ + +class DebugUI extends UI { + + constructor() { + super(); + // Setup other DOM handlers if it's debug mode. + this.$status = document.getElementById('status'); + this.$msglog = document.getElementById('msglog'); + this.$msglog.value = ''; + } + + // Status bar + setStatus(msg) { + var txt; + txt = document.createTextNode('Status: ' + msg); + while (this.$status.firstChild) { + this.$status.removeChild(this.$status.firstChild); + } + return this.$status.appendChild(txt); + } + + setActive(connected) { + super.setActive(connected); + return this.$msglog.className = connected ? 'active' : ''; + } + + log(msg) { + // Scroll to latest + this.$msglog.value += msg + '\n'; + return this.$msglog.scrollTop = this.$msglog.scrollHeight; + } + +} + +// DOM elements references. +DebugUI.prototype.$msglog = null; + +DebugUI.prototype.$status = null; /* Entry point. diff --git a/proxy/init-webext.js b/proxy/init-webext.js index 0102385..c5caf67 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -105,6 +105,8 @@ WebExtUI.prototype.port = null; WebExtUI.prototype.stats = null; +WebExtUI.prototype.enabled = true; + /* Entry point. */ diff --git a/proxy/ui.js b/proxy/ui.js index 09d3d07..f667bef 100644 --- a/proxy/ui.js +++ b/proxy/ui.js @@ -15,44 +15,3 @@ class UI { } UI.prototype.active = false; - -UI.prototype.enabled = true; - - -class DebugUI extends UI { - - constructor() { - super(); - // Setup other DOM handlers if it's debug mode. - this.$status = document.getElementById('status'); - this.$msglog = document.getElementById('msglog'); - this.$msglog.value = ''; - } - - // Status bar - setStatus(msg) { - var txt; - txt = document.createTextNode('Status: ' + msg); - while (this.$status.firstChild) { - this.$status.removeChild(this.$status.firstChild); - } - return this.$status.appendChild(txt); - } - - setActive(connected) { - super.setActive(connected); - return this.$msglog.className = connected ? 'active' : ''; - } - - log(msg) { - // Scroll to latest - this.$msglog.value += msg + '\n'; - return this.$msglog.scrollTop = this.$msglog.scrollHeight; - } - -} - -// DOM elements references. -DebugUI.prototype.$msglog = null; - -DebugUI.prototype.$status = null; From 5d26f76ba191f4db90a806b6d9741abda80c1af9 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Fri, 26 Jul 2019 15:09:05 -0400 Subject: [PATCH 009/994] Brace expansion is a bashism --- proxy/make.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/make.js b/proxy/make.js index 52ee098..940e980 100755 --- a/proxy/make.js +++ b/proxy/make.js @@ -79,7 +79,7 @@ task('build', 'build the snowflake proxy', function() { task('webext', 'build the webextension', function() { exec('mkdir -p webext'); - exec(`cp -r ${STATIC}/{${SHARED_FILES.join(',')}} webext/`); + exec(`cp -r ${STATIC}/{${SHARED_FILES.join(',')}} webext/`, { shell: '/bin/bash' }); concatJS('webext', 'webext', 'snowflake.js'); console.log('Webextension prepared.'); }); From 8de6e26c597edadac633ae8bed163893f4d932e2 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Fri, 26 Jul 2019 15:10:44 -0400 Subject: [PATCH 010/994] Remove Util.mightBeTBB Trac 31222 --- proxy/init-badge.js | 5 ----- proxy/util.js | 18 +----------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/proxy/init-badge.js b/proxy/init-badge.js index b240456..4a331c3 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -114,11 +114,6 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific return; } - if (Util.mightBeTBB()) { - ui.missingFeature("Will not run within Tor Browser."); - return; - } - config = new Config; if ('off' !== query.get('ratelimit')) { config.rateLimitBytes = Params.getByteCount(query, 'ratelimit', config.rateLimitBytes); diff --git a/proxy/util.js b/proxy/util.js index 8fa6d9c..42843d7 100644 --- a/proxy/util.js +++ b/proxy/util.js @@ -1,4 +1,4 @@ -/* exported Params, DummyRateLimit */ +/* exported Util, Params, DummyRateLimit */ /* A JavaScript WebRTC snowflake proxy @@ -8,12 +8,6 @@ Contains helpers for parsing query strings and other utilities. class Util { - static mightBeTBB() { - return Util.TBB_UAS.indexOf(window.navigator.userAgent) > -1 && ( - window.navigator.mimeTypes && window.navigator.mimeTypes.length === 0 - ); - } - static genSnowflakeID() { return Math.random().toString(36).substring(2); } @@ -28,16 +22,6 @@ class Util { } -// It would not be effective for Tor Browser users to run the proxy. -// Do we seem to be running in Tor Browser? Check the user-agent string and for -// no listing of supported MIME types. -Util.TBB_UAS = [ - 'Mozilla/5.0 (Windows NT 6.1; rv:10.0) Gecko/20100101 Firefox/10.0', - 'Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0', - 'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0', - 'Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0' -]; - class Parse { From aa27c0556c919a7186a0e24fa3303ec46ead3ce8 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Wed, 31 Jul 2019 15:49:21 -0400 Subject: [PATCH 011/994] Redirect removed snowflake.html --- proxy/static/.htaccess | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proxy/static/.htaccess b/proxy/static/.htaccess index f733194..1a8277f 100644 --- a/proxy/static/.htaccess +++ b/proxy/static/.htaccess @@ -1,3 +1,5 @@ Header always unset X-Frame-Options + +Redirect permanent /snowflake.html / From 5321223240d52be28d5459631c70226cf94bdec0 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Wed, 31 Jul 2019 16:43:56 -0400 Subject: [PATCH 012/994] Use execSync in make.js 695554c highlighted the race here. --- proxy/make.js | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/proxy/make.js b/proxy/make.js index 940e980..aebc4f8 100755 --- a/proxy/make.js +++ b/proxy/make.js @@ -2,7 +2,7 @@ /* global require, process */ -var { exec, spawn } = require('child_process'); +var { execSync, spawn } = require('child_process'); // All files required. var FILES = [ @@ -38,11 +38,7 @@ var SHARED_FILES = [ var concatJS = function(outDir, init, outFile) { var files; files = FILES.concat(`init-${init}.js`); - return exec(`cat ${files.join(' ')} > ${outDir}/${outFile}`, function(err) { - if (err) { - throw err; - } - }); + execSync(`cat ${files.join(' ')} > ${outDir}/${outFile}`); }; var tasks = new Map(); @@ -55,13 +51,13 @@ var task = function(key, msg, func) { task('test', 'snowflake unit tests', function() { var jasmineFiles, outFile, proc; - exec('mkdir -p test'); - exec('jasmine init >&-'); + execSync('mkdir -p test'); + execSync('jasmine init >&-'); // Simply concat all the files because we're not using node exports. jasmineFiles = FILES.concat('init-testing.js', FILES_SPEC); outFile = 'test/bundle.spec.js'; - exec('echo "TESTING = true" > ' + outFile); - exec('cat ' + jasmineFiles.join(' ') + ' | cat >> ' + outFile); + execSync('echo "TESTING = true" > ' + outFile); + execSync('cat ' + jasmineFiles.join(' ') + ' | cat >> ' + outFile); proc = spawn('jasmine', ['test/bundle.spec.js'], { stdio: 'inherit' }); @@ -71,27 +67,27 @@ task('test', 'snowflake unit tests', function() { }); task('build', 'build the snowflake proxy', function() { - exec('rm -r build'); - exec('cp -r ' + STATIC + '/ build/'); + execSync('rm -r build'); + execSync('cp -r ' + STATIC + '/ build/'); concatJS('build', 'badge', 'embed.js'); console.log('Snowflake prepared.'); }); task('webext', 'build the webextension', function() { - exec('mkdir -p webext'); - exec(`cp -r ${STATIC}/{${SHARED_FILES.join(',')}} webext/`, { shell: '/bin/bash' }); + execSync('mkdir -p webext'); + execSync(`cp -r ${STATIC}/{${SHARED_FILES.join(',')}} webext/`, { shell: '/bin/bash' }); concatJS('webext', 'webext', 'snowflake.js'); console.log('Webextension prepared.'); }); task('node', 'build the node binary', function() { - exec('mkdir -p build'); + execSync('mkdir -p build'); concatJS('build', 'node', 'snowflake.js'); console.log('Node prepared.'); }); task('clean', 'remove all built files', function() { - exec('rm -r build test spec/support'); + execSync('rm -r build test spec/support'); }); var cmd = process.argv[2]; From b324d9d42fff09e7db0f2fe2657a2265a3b39271 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Wed, 31 Jul 2019 17:59:48 -0400 Subject: [PATCH 013/994] Move icons/ to assets/ There's a default alias for icons/ in apache, https://www.electrictoolbox.com/apache-icons-directory/ --- .gitignore | 2 +- proxy/init-webext.js | 8 ++++---- proxy/make.js | 2 +- .../static/{icons => assets}/arrowhead-right-12.svg | 0 proxy/static/{icons => assets}/status-off.png | Bin proxy/static/{icons => assets}/status-off.svg | 0 proxy/static/{icons => assets}/status-off@2x.png | Bin proxy/static/{icons => assets}/status-off@3x.png | Bin proxy/static/{icons => assets}/status-on.png | Bin proxy/static/{icons => assets}/status-on.svg | 0 proxy/static/{icons => assets}/status-on@2x.png | Bin proxy/static/{icons => assets}/status-on@3x.png | Bin proxy/static/{icons => assets}/status-running.png | Bin proxy/static/{icons => assets}/status-running.svg | 0 proxy/static/embed.css | 2 +- proxy/static/embed.html | 2 +- proxy/static/popup.js | 2 +- proxy/webext/manifest.json | 2 +- 18 files changed, 10 insertions(+), 10 deletions(-) rename proxy/static/{icons => assets}/arrowhead-right-12.svg (100%) rename proxy/static/{icons => assets}/status-off.png (100%) rename proxy/static/{icons => assets}/status-off.svg (100%) rename proxy/static/{icons => assets}/status-off@2x.png (100%) rename proxy/static/{icons => assets}/status-off@3x.png (100%) rename proxy/static/{icons => assets}/status-on.png (100%) rename proxy/static/{icons => assets}/status-on.svg (100%) rename proxy/static/{icons => assets}/status-on@2x.png (100%) rename proxy/static/{icons => assets}/status-on@3x.png (100%) rename proxy/static/{icons => assets}/status-running.png (100%) rename proxy/static/{icons => assets}/status-running.svg (100%) diff --git a/.gitignore b/.gitignore index 315500c..f3af78e 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,6 @@ proxy/webext/snowflake.js proxy/webext/popup.js proxy/webext/embed.html proxy/webext/embed.css -proxy/webext/icons/ +proxy/webext/assets/ ignore/ npm-debug.log diff --git a/proxy/init-webext.js b/proxy/init-webext.js index c5caf67..05a46f6 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -78,13 +78,13 @@ class WebExtUI extends UI { if (this.active) { return chrome.browserAction.setIcon({ path: { - 32: "icons/status-running.png" + 32: "assets/status-running.png" } }); } else { return chrome.browserAction.setIcon({ path: { - 32: "icons/status-on.png" + 32: "assets/status-on.png" } }); } @@ -94,7 +94,7 @@ class WebExtUI extends UI { update(); return chrome.browserAction.setIcon({ path: { - 32: "icons/status-" + (enabled ? "on" : "off") + ".png" + 32: "assets/status-" + (enabled ? "on" : "off") + ".png" } }); } @@ -142,7 +142,7 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific missingFeature: true }); }); - chrome.browserAction.setIcon({ path: { 32: "icons/status-off.png" } }); + chrome.browserAction.setIcon({ path: { 32: "assets/status-off.png" } }); return; } diff --git a/proxy/make.js b/proxy/make.js index aebc4f8..59165b2 100755 --- a/proxy/make.js +++ b/proxy/make.js @@ -32,7 +32,7 @@ var SHARED_FILES = [ 'embed.html', 'embed.css', 'popup.js', - 'icons' + 'assets' ]; var concatJS = function(outDir, init, outFile) { diff --git a/proxy/static/icons/arrowhead-right-12.svg b/proxy/static/assets/arrowhead-right-12.svg similarity index 100% rename from proxy/static/icons/arrowhead-right-12.svg rename to proxy/static/assets/arrowhead-right-12.svg diff --git a/proxy/static/icons/status-off.png b/proxy/static/assets/status-off.png similarity index 100% rename from proxy/static/icons/status-off.png rename to proxy/static/assets/status-off.png diff --git a/proxy/static/icons/status-off.svg b/proxy/static/assets/status-off.svg similarity index 100% rename from proxy/static/icons/status-off.svg rename to proxy/static/assets/status-off.svg diff --git a/proxy/static/icons/status-off@2x.png b/proxy/static/assets/status-off@2x.png similarity index 100% rename from proxy/static/icons/status-off@2x.png rename to proxy/static/assets/status-off@2x.png diff --git a/proxy/static/icons/status-off@3x.png b/proxy/static/assets/status-off@3x.png similarity index 100% rename from proxy/static/icons/status-off@3x.png rename to proxy/static/assets/status-off@3x.png diff --git a/proxy/static/icons/status-on.png b/proxy/static/assets/status-on.png similarity index 100% rename from proxy/static/icons/status-on.png rename to proxy/static/assets/status-on.png diff --git a/proxy/static/icons/status-on.svg b/proxy/static/assets/status-on.svg similarity index 100% rename from proxy/static/icons/status-on.svg rename to proxy/static/assets/status-on.svg diff --git a/proxy/static/icons/status-on@2x.png b/proxy/static/assets/status-on@2x.png similarity index 100% rename from proxy/static/icons/status-on@2x.png rename to proxy/static/assets/status-on@2x.png diff --git a/proxy/static/icons/status-on@3x.png b/proxy/static/assets/status-on@3x.png similarity index 100% rename from proxy/static/icons/status-on@3x.png rename to proxy/static/assets/status-on@3x.png diff --git a/proxy/static/icons/status-running.png b/proxy/static/assets/status-running.png similarity index 100% rename from proxy/static/icons/status-running.png rename to proxy/static/assets/status-running.png diff --git a/proxy/static/icons/status-running.svg b/proxy/static/assets/status-running.svg similarity index 100% rename from proxy/static/icons/status-running.svg rename to proxy/static/assets/status-running.svg diff --git a/proxy/static/embed.css b/proxy/static/embed.css index e6d8149..990f7ec 100644 --- a/proxy/static/embed.css +++ b/proxy/static/embed.css @@ -27,7 +27,7 @@ body { display: block; position: absolute; top: 12px; - background-image: url('icons/arrowhead-right-12.svg'); + background-image: url('assets/arrowhead-right-12.svg'); width: 12px; height: 12px; opacity : 0.6; diff --git a/proxy/static/embed.html b/proxy/static/embed.html index a48daf3..176f4c3 100644 --- a/proxy/static/embed.html +++ b/proxy/static/embed.html @@ -10,7 +10,7 @@
    - +

    Snowflake is off

    diff --git a/proxy/static/popup.js b/proxy/static/popup.js index 0995775..5fd2142 100644 --- a/proxy/static/popup.js +++ b/proxy/static/popup.js @@ -7,7 +7,7 @@ class Popup { this.img = this.div.querySelector('img'); } setImgSrc(src) { - this.img.src = `icons/status-${src}.png`; + this.img.src = `assets/status-${src}.png`; } setStatusText(txt) { this.ps[0].innerText = txt; diff --git a/proxy/webext/manifest.json b/proxy/webext/manifest.json index 3b96055..6b09376 100644 --- a/proxy/webext/manifest.json +++ b/proxy/webext/manifest.json @@ -9,7 +9,7 @@ }, "browser_action": { "default_icon": { - "32": "icons/status-on.png" + "32": "assets/status-on.png" }, "default_title": "Snowflake", "default_popup": "embed.html" From e6f76339619b2891898f92842e02e88c7b5ea359 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Wed, 31 Jul 2019 18:14:00 -0400 Subject: [PATCH 014/994] Remove mentions of snowflake.html It was removed in e60f228 and aa27c05 --- README.md | 2 +- proxy/README.md | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cd2641b..1a0b655 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ cd build/ python -m http.server ``` -Then, open a browser tab to `http://127.0.0.1:8000/snowflake.html` to view +Then, open a browser tab to `http://127.0.0.1:8000/embed.html` to view the debug-console of the snowflake., So long as that tab is open, you are an ephemeral Tor bridge. diff --git a/proxy/README.md b/proxy/README.md index 70ea273..dd7ffb6 100644 --- a/proxy/README.md +++ b/proxy/README.md @@ -21,10 +21,7 @@ npm install npm test ``` -To run locally, either: -- Navigate to `proxy/build/embed.html` -- For a more fully featured "debug" version, - start a webserver and navigate to `snowflake.html`. +To run locally, start an http server in `build/` and navigate to `/embed.html`. ### Preparing to deploy From 8a56baa8e1b0481867bcbfbe817941c0d76d5ebb Mon Sep 17 00:00:00 2001 From: David Fifield Date: Mon, 22 Jul 2019 16:51:33 -0600 Subject: [PATCH 015/994] Identify popup elements by id. --- proxy/static/embed.html | 6 +++--- proxy/static/popup.js | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/proxy/static/embed.html b/proxy/static/embed.html index 176f4c3..b0820fa 100644 --- a/proxy/static/embed.html +++ b/proxy/static/embed.html @@ -10,9 +10,9 @@
    - -

    Snowflake is off

    -

    + +

    Snowflake is off

    +

    diff --git a/proxy/static/popup.js b/proxy/static/popup.js index 5fd2142..7060054 100644 --- a/proxy/static/popup.js +++ b/proxy/static/popup.js @@ -3,18 +3,19 @@ class Popup { constructor() { this.div = document.getElementById('active'); - this.ps = this.div.querySelectorAll('p'); - this.img = this.div.querySelector('img'); + this.statustext = document.getElementById('statustext'); + this.statusdesc = document.getElementById('statusdesc'); + this.img = document.getElementById('statusimg'); } setImgSrc(src) { this.img.src = `assets/status-${src}.png`; } setStatusText(txt) { - this.ps[0].innerText = txt; + this.statustext.innerText = txt; } setStatusDesc(desc, color) { - this.ps[1].innerText = desc; - this.ps[1].style.color = color || 'black'; + this.statusdesc.innerText = desc; + this.statusdesc.style.color = color || 'black'; } hideButton() { document.querySelector('.button').style.display = 'none'; From 8f885c75572a9e7057c26ff049cfb4f0cc9f8338 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Mon, 22 Jul 2019 22:54:01 -0600 Subject: [PATCH 016/994] Set an "error" class instead of hardcoding a text color. --- proxy/init-badge.js | 2 +- proxy/static/embed.css | 7 ++++++- proxy/static/popup.js | 13 +++++++++++-- proxy/webext/embed.js | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/proxy/init-badge.js b/proxy/init-badge.js index 4a331c3..443e879 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -16,7 +16,7 @@ class BadgeUI extends UI { missingFeature(missing) { this.popup.setImgSrc('off'); this.popup.setStatusText("Snowflake is off"); - this.popup.setStatusDesc(missing, 'firebrick'); + this.popup.setStatusDesc(missing, true); this.popup.hideButton(); } diff --git a/proxy/static/embed.css b/proxy/static/embed.css index 990f7ec..3eac1a7 100644 --- a/proxy/static/embed.css +++ b/proxy/static/embed.css @@ -1,4 +1,5 @@ body { + color: black; margin: 10px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; width: 300px; @@ -17,11 +18,15 @@ body { } .b a { - color: black; + color: inherit; display: inline-block; text-decoration: none; } +.error { + color: firebrick; +} + .learn:before { content : " "; display: block; diff --git a/proxy/static/popup.js b/proxy/static/popup.js index 7060054..994debd 100644 --- a/proxy/static/popup.js +++ b/proxy/static/popup.js @@ -1,5 +1,14 @@ /* exported Popup */ +// Add or remove a class from elem.classList, depending on cond. +function setClass(elem, className, cond) { + if (cond) { + elem.classList.add(className); + } else { + elem.classList.remove(className); + } +} + class Popup { constructor() { this.div = document.getElementById('active'); @@ -13,9 +22,9 @@ class Popup { setStatusText(txt) { this.statustext.innerText = txt; } - setStatusDesc(desc, color) { + setStatusDesc(desc, error) { this.statusdesc.innerText = desc; - this.statusdesc.style.color = color || 'black'; + setClass(this.statusdesc, 'error', error); } hideButton() { document.querySelector('.button').style.display = 'none'; diff --git a/proxy/webext/embed.js b/proxy/webext/embed.js index e1364bf..6571843 100644 --- a/proxy/webext/embed.js +++ b/proxy/webext/embed.js @@ -11,7 +11,7 @@ port.onMessage.addListener((m) => { if (missingFeature) { popup.setImgSrc('off'); popup.setStatusText("Snowflake is off"); - popup.setStatusDesc("WebRTC feature is not detected.", 'firebrick'); + popup.setStatusDesc("WebRTC feature is not detected.", true); popup.hideButton(); return; } From 990047b2f5747543dd1e41993c4dc1b5992bff55 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Tue, 23 Jul 2019 10:13:46 -0600 Subject: [PATCH 017/994] Control statusimg using CSS, rather than setting an img src. --- proxy/init-badge.js | 9 ++++++--- proxy/static/embed.css | 13 +++++++++++++ proxy/static/embed.html | 2 +- proxy/static/popup.js | 7 +++++-- proxy/webext/embed.js | 7 ++++--- 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/proxy/init-badge.js b/proxy/init-badge.js index 443e879..dbe7fea 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -14,7 +14,8 @@ class BadgeUI extends UI { setStatus() {} missingFeature(missing) { - this.popup.setImgSrc('off'); + this.popup.setEnabled(false); + this.popup.setActive(false); this.popup.setStatusText("Snowflake is off"); this.popup.setStatusDesc(missing, true); this.popup.hideButton(); @@ -28,7 +29,8 @@ class BadgeUI extends UI { // FIXME: Share stats from webext const total = 0; this.popup.setStatusDesc(`Your snowflake has helped ${total} user${(total !== 1) ? 's' : ''} circumvent censorship in the last 24 hours.`); - this.popup.setImgSrc(this.active ? "running" : "on"); + this.popup.setEnabled(true); + this.popup.setActive(this.active); } turnOff() { @@ -36,7 +38,8 @@ class BadgeUI extends UI { this.popup.setToggleText('Turn On'); this.popup.setStatusText("Snowflake is off"); this.popup.setStatusDesc(""); - this.popup.setImgSrc("off"); + this.popup.setEnabled(false); + this.popup.setActive(false); } setActive(connected) { diff --git a/proxy/static/embed.css b/proxy/static/embed.css index 3eac1a7..156a688 100644 --- a/proxy/static/embed.css +++ b/proxy/static/embed.css @@ -11,6 +11,19 @@ body { text-align: center; } +#statusimg { + background-image: url("assets/status-off.png"); + background-repeat: no-repeat; + background-position: center center; + min-height: 60px; +} +#statusimg.on { + background-image: url("assets/status-on.png"); +} +#statusimg.on.running { + background-image: url("assets/status-running.png"); +} + .b { border-top: 1px solid gainsboro; padding: 10px; diff --git a/proxy/static/embed.html b/proxy/static/embed.html index b0820fa..441241a 100644 --- a/proxy/static/embed.html +++ b/proxy/static/embed.html @@ -10,7 +10,7 @@
    - +

    Snowflake is off

    diff --git a/proxy/static/popup.js b/proxy/static/popup.js index 994debd..9ff8121 100644 --- a/proxy/static/popup.js +++ b/proxy/static/popup.js @@ -16,8 +16,11 @@ class Popup { this.statusdesc = document.getElementById('statusdesc'); this.img = document.getElementById('statusimg'); } - setImgSrc(src) { - this.img.src = `assets/status-${src}.png`; + setEnabled(enabled) { + setClass(this.img, 'on', enabled); + } + setActive(active) { + setClass(this.img, 'running', active); } setStatusText(txt) { this.statustext.innerText = txt; diff --git a/proxy/webext/embed.js b/proxy/webext/embed.js index 6571843..62c97a5 100644 --- a/proxy/webext/embed.js +++ b/proxy/webext/embed.js @@ -9,7 +9,8 @@ port.onMessage.addListener((m) => { const popup = new Popup(); if (missingFeature) { - popup.setImgSrc('off'); + popup.setEnabled(false); + popup.setActive(false); popup.setStatusText("Snowflake is off"); popup.setStatusDesc("WebRTC feature is not detected.", true); popup.hideButton(); @@ -29,8 +30,8 @@ port.onMessage.addListener((m) => { popup.setStatusText("Snowflake is off"); popup.setStatusDesc(""); } - - popup.setImgSrc(active ? "running" : enabled ? "on" : "off"); + popup.setEnabled(enabled); + popup.setActive(active); }); document.addEventListener('change', (event) => { From 6cc944f2b452db8e74843ba6644c95201d7873ac Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Wed, 17 Jul 2019 09:22:23 -0400 Subject: [PATCH 018/994] Reuse proxypair if sendAnswer fails Make sure to set proxypair.active to false if createAnswer or setLocalDescription fails. This should prevent one edge case the results in an infinite loop described in ticket #31100. --- proxy/snowflake.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/proxy/snowflake.js b/proxy/snowflake.js index bbf3d8b..ae7aa2c 100644 --- a/proxy/snowflake.js +++ b/proxy/snowflake.js @@ -120,10 +120,11 @@ class Snowflake { var fail, next; next = function(sdp) { dbg('webrtc: Answer ready.'); - return pair.pc.setLocalDescription(sdp); + return pair.pc.setLocalDescription(sdp).catch(fail); }; fail = function() { - return dbg('webrtc: Failed to create Answer'); + pair.active = false + return dbg('webrtc: Failed to create or set Answer'); }; return pair.pc.createAnswer().then(next).catch(fail); } From e77baabdcfd742d6dbc4dbf2a74f21ba6d36ad36 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Wed, 24 Jul 2019 10:52:33 -0400 Subject: [PATCH 019/994] Add a timeout to check if datachannel opened This is similar to the deadlock bug in the proxy-go instances. If the proxy-pair sends an answer to the broker, it previously assumed that the datachannel would be opened and the pair reused only once the datachannel closed. However, sometimes the datachannel never opens due to ICE errors or a misbehaving/buggy client causing the proxy to infinitely loop and the proxy-pair to remain active. This commit reuses the pair.running attribute to indicate whether or not the datachannel has been opened and sets a timeout to close the proxy-pair if it has not been opened by that time. --- proxy/proxypair.js | 6 ++++-- proxy/snowflake.js | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/proxy/proxypair.js b/proxy/proxypair.js index 6ffa9e5..703ac27 100644 --- a/proxy/proxypair.js +++ b/proxy/proxypair.js @@ -85,6 +85,7 @@ class ProxyPair { prepareDataChannel(channel) { channel.onopen = () => { log('WebRTC DataChannel opened!'); + this.running = true; snowflake.state = Snowflake.MODE.WEBRTC_READY; snowflake.ui.setActive(true); // This is the point when the WebRTC datachannel is done, so the next step @@ -176,7 +177,6 @@ class ProxyPair { clearTimeout(this.timer); this.timer = 0; } - this.running = false; if (this.webrtcIsReady()) { this.client.close(); } @@ -186,6 +186,8 @@ class ProxyPair { } this.relay = null; this.onCleanup(); + this.active = false; + this.running = false; } flush() { @@ -245,7 +247,7 @@ ProxyPair.prototype.relay = null; // websocket ProxyPair.prototype.timer = 0; -ProxyPair.prototype.running = true; +ProxyPair.prototype.running = false; // Whether a datachannel is opened ProxyPair.prototype.active = false; // Whether serving a client. diff --git a/proxy/snowflake.js b/proxy/snowflake.js index ae7aa2c..7a242db 100644 --- a/proxy/snowflake.js +++ b/proxy/snowflake.js @@ -74,10 +74,16 @@ class Snowflake { this.ui.setStatus(msg); recv = this.broker.getClientOffer(pair.id); recv.then((desc) => { - if (pair.running) { + if (pair.active) { if (!this.receiveOffer(pair, desc)) { return pair.active = false; } + //set a timeout for channel creation + return setTimeout((() => { + log('proxypair datachannel timed out waiting for open'); + pair.close(); + return pair.active = false; + }), 20000); // 20 second timeout } else { return pair.active = false; } From 0b55fd307a41214d11d266f684e948b5566cdb77 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Thu, 8 Aug 2019 11:11:56 -0400 Subject: [PATCH 020/994] Version bump for webextension --- proxy/webext/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/webext/manifest.json b/proxy/webext/manifest.json index 6b09376..8863dbb 100644 --- a/proxy/webext/manifest.json +++ b/proxy/webext/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Snowflake", - "version": "0.0.8", + "version": "0.0.9", "description": "Snowflake is a WebRTC pluggable transport for Tor.", "background": { "scripts": ["snowflake.js"], From f94ef87c46c5e04e17b4b399ca66193461de4381 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Mon, 12 Aug 2019 13:14:25 -0400 Subject: [PATCH 021/994] Increase webextension poll period Raise the webextension poll period from 5 to 20 seconds (bug 31200). --- proxy/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/config.js b/proxy/config.js index b49bb8d..54c4c32 100644 --- a/proxy/config.js +++ b/proxy/config.js @@ -20,7 +20,7 @@ Config.prototype.minRateLimit = 10 * 1024; Config.prototype.rateLimitHistory = 5.0; -Config.prototype.defaultBrokerPollInterval = 5.0 * 1000; +Config.prototype.defaultBrokerPollInterval = 20.0 * 1000; Config.prototype.maxNumClients = 1; From 4e5a50f2b54db62991e4ce3313aa9b7f92a1c573 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Wed, 14 Aug 2019 13:45:15 -0400 Subject: [PATCH 022/994] Start localization Trac 30310 --- .gitignore | 1 + proxy/init-badge.js | 53 ++++++++++++++++++----- proxy/make.js | 7 +-- proxy/static/_locales/en_US/messages.json | 32 ++++++++++++++ proxy/static/embed.html | 6 +-- proxy/static/index.html | 2 +- proxy/static/popup.js | 12 +++++ proxy/webext/embed.js | 25 ++++++++--- proxy/webext/manifest.json | 3 +- 9 files changed, 115 insertions(+), 26 deletions(-) create mode 100644 proxy/static/_locales/en_US/messages.json diff --git a/.gitignore b/.gitignore index f3af78e..1bae622 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,6 @@ proxy/webext/popup.js proxy/webext/embed.html proxy/webext/embed.css proxy/webext/assets/ +proxy/webext/_locales/ ignore/ npm-debug.log diff --git a/proxy/init-badge.js b/proxy/init-badge.js index dbe7fea..b906f62 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -4,6 +4,20 @@ UI */ +class Messages { + constructor(json) { + this.json = json; + } + getMessage(m, ...rest) { + let message = this.json[m].message; + return message.replace(/\$(\d+)/g, (...args) => { + return rest[Number(args[1]) - 1]; + }); + } +} + +let messages = null; + class BadgeUI extends UI { constructor() { @@ -16,7 +30,7 @@ class BadgeUI extends UI { missingFeature(missing) { this.popup.setEnabled(false); this.popup.setActive(false); - this.popup.setStatusText("Snowflake is off"); + this.popup.setStatusText(messages.getMessage('popupStatusOff')); this.popup.setStatusDesc(missing, true); this.popup.hideButton(); } @@ -24,20 +38,23 @@ class BadgeUI extends UI { turnOn() { const clients = this.active ? 1 : 0; this.popup.setChecked(true); - this.popup.setToggleText('Turn Off'); - this.popup.setStatusText(`${clients} client${(clients !== 1) ? 's' : ''} connected.`); + this.popup.setToggleText(messages.getMessage('popupTurnOff')); + if (clients > 0) { + this.popup.setStatusText(messages.getMessage('popupStatusOn', String(clients))); + } else { + this.popup.setStatusText(messages.getMessage('popupStatusReady')); + } // FIXME: Share stats from webext - const total = 0; - this.popup.setStatusDesc(`Your snowflake has helped ${total} user${(total !== 1) ? 's' : ''} circumvent censorship in the last 24 hours.`); + this.popup.setStatusDesc(''); this.popup.setEnabled(true); this.popup.setActive(this.active); } turnOff() { this.popup.setChecked(false); - this.popup.setToggleText('Turn On'); - this.popup.setStatusText("Snowflake is off"); - this.popup.setStatusDesc(""); + this.popup.setToggleText(messages.getMessage('popupTurnOn')); + this.popup.setStatusText(messages.getMessage('popupStatusOff')); + this.popup.setStatusDesc(''); this.popup.setEnabled(false); this.popup.setActive(false); } @@ -108,12 +125,12 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific ui = new BadgeUI(); if (!Util.hasWebRTC()) { - ui.missingFeature("WebRTC feature is not detected."); + ui.missingFeature(messages.getMessage('popupWebRTCOff')); return; } if (!Util.hasCookies()) { - ui.missingFeature("Cookies are not enabled."); + ui.missingFeature(messages.getMessage('badgeCookiesOff')); return; } @@ -153,6 +170,20 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific return null; }; - window.onload = init; + window.onload = function() { + const lang = 'en_US'; + fetch(`./_locales/${lang}/messages.json`) + .then((res) => { + if (!res.ok) { return; } + return res.json(); + }) + .then((json) => { + messages = new Messages(json); + Popup.fill(document.body, (m) => { + return messages.getMessage(m); + }); + init(); + }); + } }()); diff --git a/proxy/make.js b/proxy/make.js index 59165b2..58b7fce 100755 --- a/proxy/make.js +++ b/proxy/make.js @@ -32,7 +32,8 @@ var SHARED_FILES = [ 'embed.html', 'embed.css', 'popup.js', - 'assets' + 'assets', + '_locales', ]; var concatJS = function(outDir, init, outFile) { @@ -67,7 +68,7 @@ task('test', 'snowflake unit tests', function() { }); task('build', 'build the snowflake proxy', function() { - execSync('rm -r build'); + execSync('rm -rf build'); execSync('cp -r ' + STATIC + '/ build/'); concatJS('build', 'badge', 'embed.js'); console.log('Snowflake prepared.'); @@ -87,7 +88,7 @@ task('node', 'build the node binary', function() { }); task('clean', 'remove all built files', function() { - execSync('rm -r build test spec/support'); + execSync('rm -rf build test spec/support'); }); var cmd = process.argv[2]; diff --git a/proxy/static/_locales/en_US/messages.json b/proxy/static/_locales/en_US/messages.json new file mode 100644 index 0000000..f9de9d4 --- /dev/null +++ b/proxy/static/_locales/en_US/messages.json @@ -0,0 +1,32 @@ +{ + "appDesc": { + "message": "Snowflake is a WebRTC pluggable transport for Tor." + }, + "popupTurnOn": { + "message": "Turn On" + }, + "popupTurnOff": { + "message": "Turn Off" + }, + "popupLearnMore": { + "message": "Learn more" + }, + "popupStatusOff": { + "message": "Snowflake is off" + }, + "popupStatusOn": { + "message": "Number of users currently connected: $1" + }, + "popupStatusReady": { + "message": "Your Snowflake is ready to help users circumvent censorship!" + }, + "popupWebRTCOff": { + "message": "WebRTC feature is not detected." + }, + "popupDescOn": { + "message": "Number of users your Snowflake has helped circumvent censorship in the last 24 hours: $1" + }, + "badgeCookiesOff": { + "message": "Cookies are not enabled." + } +} diff --git a/proxy/static/embed.html b/proxy/static/embed.html index 441241a..eb75c30 100644 --- a/proxy/static/embed.html +++ b/proxy/static/embed.html @@ -11,18 +11,18 @@
    -

    Snowflake is off

    +

    __MSG_popupStatusOff__

    - +
    diff --git a/proxy/static/index.html b/proxy/static/index.html index 20fe5c8..5607e07 100644 --- a/proxy/static/index.html +++ b/proxy/static/index.html @@ -86,7 +86,7 @@

    Which looks like this:

    - +
    diff --git a/proxy/static/popup.js b/proxy/static/popup.js index 9ff8121..c59f842 100644 --- a/proxy/static/popup.js +++ b/proxy/static/popup.js @@ -38,4 +38,16 @@ class Popup { setToggleText(txt) { document.getElementById('toggle').innerText = txt; } + static fill(n, func) { + switch(n.nodeType) { + case 3: { // Node.TEXT_NODE + const m = /^__MSG_([^_]*)__$/.exec(n.nodeValue); + if (m) { n.nodeValue = func(m[1]); } + break; + } + case 1: // Node.ELEMENT_NODE + n.childNodes.forEach(c => Popup.fill(c, func)); + break; + } + } } diff --git a/proxy/webext/embed.js b/proxy/webext/embed.js index 62c97a5..7e0dac9 100644 --- a/proxy/webext/embed.js +++ b/proxy/webext/embed.js @@ -1,5 +1,12 @@ /* global chrome, Popup */ +// Fill i18n in HTML +window.onload = () => { + Popup.fill(document.body, (m) => { + return chrome.i18n.getMessage(m); + }); +}; + const port = chrome.runtime.connect({ name: "popup" }); @@ -11,8 +18,8 @@ port.onMessage.addListener((m) => { if (missingFeature) { popup.setEnabled(false); popup.setActive(false); - popup.setStatusText("Snowflake is off"); - popup.setStatusDesc("WebRTC feature is not detected.", true); + popup.setStatusText(chrome.i18n.getMessage('popupStatusOff')); + popup.setStatusDesc(chrome.i18n.getMessage('popupWebRTCOff'), true); popup.hideButton(); return; } @@ -21,13 +28,17 @@ port.onMessage.addListener((m) => { if (enabled) { popup.setChecked(true); - popup.setToggleText('Turn Off'); - popup.setStatusText(`${clients} client${(clients !== 1) ? 's' : ''} connected.`); - popup.setStatusDesc(`Your snowflake has helped ${total} user${(total !== 1) ? 's' : ''} circumvent censorship in the last 24 hours.`); + popup.setToggleText(chrome.i18n.getMessage('popupTurnOff')); + if (clients > 0) { + popup.setStatusText(chrome.i18n.getMessage('popupStatusOn', String(clients))); + } else { + popup.setStatusText(chrome.i18n.getMessage('popupStatusReady')); + } + popup.setStatusDesc((total > 0) ? chrome.i18n.getMessage('popupDescOn', String(total)) : ''); } else { popup.setChecked(false); - popup.setToggleText('Turn On'); - popup.setStatusText("Snowflake is off"); + popup.setToggleText(chrome.i18n.getMessage('popupTurnOn')); + popup.setStatusText(chrome.i18n.getMessage('popupStatusOff')); popup.setStatusDesc(""); } popup.setEnabled(enabled); diff --git a/proxy/webext/manifest.json b/proxy/webext/manifest.json index 8863dbb..7317c67 100644 --- a/proxy/webext/manifest.json +++ b/proxy/webext/manifest.json @@ -2,7 +2,8 @@ "manifest_version": 2, "name": "Snowflake", "version": "0.0.9", - "description": "Snowflake is a WebRTC pluggable transport for Tor.", + "description": "__MSG_appDesc__", + "default_locale": "en_US", "background": { "scripts": ["snowflake.js"], "persistent": true From 0aef40100a63a57b54569ec0f07fb0288347acba Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Tue, 13 Aug 2019 11:44:15 -0400 Subject: [PATCH 023/994] Implemented handler to fetch broker stats This implements a handler at https://[snowflake-broker]/metrics for the snowflake collecTor module to fetch stats from the broker. Logged metrics are copied out to the response with a text/plain; charset=utf-8 content type. This implements bug #31376. --- broker/broker.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/broker/broker.go b/broker/broker.go index 0a79b8f..259b75a 100644 --- a/broker/broker.go +++ b/broker/broker.go @@ -67,6 +67,12 @@ type SnowflakeHandler struct { handle func(*BrokerContext, http.ResponseWriter, *http.Request) } +// Implements the http.Handler interface +type MetricsHandler struct { + logFilename string + handle func(string, http.ResponseWriter, *http.Request) +} + func (sh SnowflakeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Session-ID") @@ -77,6 +83,16 @@ func (sh SnowflakeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { sh.handle(sh.BrokerContext, w, r) } +func (mh MetricsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Session-ID") + // Return early if it's CORS preflight. + if "OPTIONS" == r.Method { + return + } + mh.handle(mh.logFilename, w, r) +} + // Proxies may poll for client offers concurrently. type ProxyPoll struct { id string @@ -251,6 +267,23 @@ func robotsTxtHandler(w http.ResponseWriter, r *http.Request) { w.Write([]byte("User-agent: *\nDisallow: /\n")) } +func metricsHandler(metricsFilename string, w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "text/plain; charset=utf-8") + + if metricsFilename == "" { + http.NotFound(w, r) + return + } + metricsFile, err := os.OpenFile(metricsFilename, os.O_RDONLY, 0644) + if err != nil { + log.Println("Error opening metrics file for reading") + http.NotFound(w, r) + return + } + + io.Copy(w, metricsFile) +} + func main() { var acmeEmail string var acmeHostnamesCommas string @@ -313,6 +346,7 @@ func main() { http.Handle("/client", SnowflakeHandler{ctx, clientOffers}) http.Handle("/answer", SnowflakeHandler{ctx, proxyAnswers}) http.Handle("/debug", SnowflakeHandler{ctx, debugHandler}) + http.Handle("/metrics", MetricsHandler{metricsFilename, metricsHandler}) server := http.Server{ Addr: addr, From 7e2936dcec7374d72fe5579ea1ca3e6cd5c8e157 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Mon, 22 Jul 2019 22:45:20 -0600 Subject: [PATCH 024/994] Dark-mode images from Antonela. https://bugs.torproject.org/31170#comment:3 Also revises the light-mode images. --- proxy/static/assets/status-off-dark.png | Bin 0 -> 3626 bytes proxy/static/assets/status-off-dark.svg | 11 +++++++++++ proxy/static/assets/status-off-dark@2x.png | Bin 0 -> 8891 bytes proxy/static/assets/status-off-dark@3x.png | Bin 0 -> 13339 bytes proxy/static/assets/status-off.png | Bin 5021 -> 3389 bytes proxy/static/assets/status-off.svg | 8 ++------ proxy/static/assets/status-off@2x.png | Bin 11206 -> 8022 bytes proxy/static/assets/status-off@3x.png | Bin 17252 -> 12459 bytes proxy/static/assets/status-on-dark.png | Bin 0 -> 3209 bytes proxy/static/assets/status-on-dark.svg | 11 +++++++++++ proxy/static/assets/status-on-dark@2x.png | Bin 0 -> 7268 bytes proxy/static/assets/status-on-dark@3x.png | Bin 0 -> 11360 bytes proxy/static/assets/status-on.png | Bin 4250 -> 3077 bytes proxy/static/assets/status-on.svg | 8 ++------ proxy/static/assets/status-on@2x.png | Bin 10913 -> 7185 bytes proxy/static/assets/status-on@3x.png | Bin 17084 -> 10844 bytes 16 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 proxy/static/assets/status-off-dark.png create mode 100644 proxy/static/assets/status-off-dark.svg create mode 100644 proxy/static/assets/status-off-dark@2x.png create mode 100644 proxy/static/assets/status-off-dark@3x.png create mode 100644 proxy/static/assets/status-on-dark.png create mode 100644 proxy/static/assets/status-on-dark.svg create mode 100644 proxy/static/assets/status-on-dark@2x.png create mode 100644 proxy/static/assets/status-on-dark@3x.png diff --git a/proxy/static/assets/status-off-dark.png b/proxy/static/assets/status-off-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..75cf163bd517b497ae5aec926bdeaa5af0e78878 GIT binary patch literal 3626 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 l@&$-QqFP{Ba5UjUgs)n7l>g0d2B + + + Fill-4 + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/proxy/static/assets/status-off-dark@2x.png b/proxy/static/assets/status-off-dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..374881e1c7b06325511c2750f21a82e1eadc42e4 GIT binary patch literal 8891 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

    0X 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 diff --git a/proxy/static/assets/status-off.svg b/proxy/static/assets/status-off.svg index f6605ea..843b278 100644 --- a/proxy/static/assets/status-off.svg +++ b/proxy/static/assets/status-off.svg @@ -1,11 +1,7 @@ - - + status-off - Created with Sketch. - - - + \ No newline at end of file diff --git a/proxy/static/assets/status-off@2x.png b/proxy/static/assets/status-off@2x.png index 902d1b5d01fde42abd1d53c0c5100921496ad125..a102a80d34e0f85d7fa14f74535d3f38f4e94b31 100644 GIT binary patch literal 8022 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 LK&?^5Hu`@6*C!t3 literal 11206 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%0A3Umdx(-AG5WY({WK_%%T z+ko|1&DM}YVuh=Au_Dr6v5{}<> z)55yxQULyIiTFk!I+JPTC;D94q{dPd!fT3yZuvKI)i=y2dzn7SasdTMeb$Bw^rRQDGQ4OmSBK+6nvnL^Vr&qG-u|z~EQx zD`6tTe5tF+pK)@UL(5?Vo$~Sdx;&!gIw;-M4oi&H-Md#dhZzE%p>~?CtU^I*zfOJbChZbng0Iy&;`WzOTdP=ObK}A&~7` z_4IGL-$lN@>76Oo{x{xO`pop{Ge2j)U&+bYd7KbwGIk>I`s+(q?z-!MkD(x&!i3%1 kt5?-TEJK8vd@H{H1<@^g)gSdrdH?_b07*qoM6N<$f}5@t1poj5 diff --git a/proxy/static/assets/status-off@3x.png b/proxy/static/assets/status-off@3x.png index 71a6dc8374f05ae6f0e42d293433cc779d258dcc..4e119b63afe504e7cfb5ecedfea5168d2d4e2334 100644 GIT binary patch literal 12459 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 Dq(nG# diff --git a/proxy/static/assets/status-on-dark.png b/proxy/static/assets/status-on-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..09435c2c9fffddec3defd37d8938131d8fd87de6 GIT binary patch literal 3209 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 b?iS>!6d3HCv!W+@v;>%&SQ}Rwl4AY?!nD$1 literal 0 HcmV?d00001 diff --git a/proxy/static/assets/status-on-dark.svg b/proxy/static/assets/status-on-dark.svg new file mode 100644 index 0000000..bfc9894 --- /dev/null +++ b/proxy/static/assets/status-on-dark.svg @@ -0,0 +1,11 @@ + + + + Fill-4 + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/proxy/static/assets/status-on-dark@2x.png b/proxy/static/assets/status-on-dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..18efcf5f01150e55a94ebf13ae967d7955727a12 GIT binary patch literal 7268 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 literal 0 HcmV?d00001 diff --git a/proxy/static/assets/status-on-dark@3x.png b/proxy/static/assets/status-on-dark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..026f6beea65ab43addebabe716c8f1d625dcae52 GIT binary patch literal 11360 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 N0N&QgrWQ-M@*gMchUowR literal 4250 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 diff --git a/proxy/static/assets/status-on.svg b/proxy/static/assets/status-on.svg index 6c7df00..4cd2be8 100644 --- a/proxy/static/assets/status-on.svg +++ b/proxy/static/assets/status-on.svg @@ -1,11 +1,7 @@ - - + status-on - Created with Sketch. - - - + \ No newline at end of file diff --git a/proxy/static/assets/status-on@2x.png b/proxy/static/assets/status-on@2x.png index 619feacf60d9117c66013bf482a3ca8e615d7c81..227ca775b56040b677c633ff14cae206f531a682 100644 GIT binary patch literal 7185 zcmZ`;WmFVE*WO@R8bLtXrMsnbLAo31PKBjY+$9B+mXH(_L26Nf1wj`PSVBU&7g$1R z1WEDZJ>ReQ$2;fTdCuIq&$)l*o|$=WiiwdnB^fgr005xW)wyqWgAxBR65^X#-d*O$ z4G?+34dDPlQwI5!3*=@EbJH<11OTFV0RUtI0B~{RLT&*7q2d6*FJ}Nip#T85gD7q{ zRl324!FnVkX%iq5=Sz z=XLMHEh6T2OCodaLtpf%o?3>=n1G*VqH#tFB%)HH+Pxl(x7>|?fQQA4SU7RCBrxyx zT9*6DYdR#ih^XRV(VVFR$S8|r3MjpWmQJX1F5CO$$$azq>+<-lm(i%u`HMux0?5)ZT)nAhRUT zC?(z&W)xWkjo6|1kTSjF{79rfOUyFBJH2huu|aYU#61HJkwMTS8Y}eGyw-72U%TsL zBQ&reikv<$bqMfa8LJEfr*7+7E{_AK@7&q(#uGUQ;H7*ow?xwoj-}c7z$QJf`dpMc zSR(GAb#M>IcTe;xN{MX@qPm2+WzW3|sO^C}rFmJoZggF@HPgYO#9>eE*}+%-jn=d$ z-`Hb-k^ZjF)(S5i@r?KkSgZWPVA9(q(x6)hBXoBMxR5G%_vpu)-UTm6Ac5}0NFHo@ z*5C-hDHM}`fjc7FZp#ZL*X>IWpK5kLKmlvz=Ja_?FW&=g zs>P|U6g@+MF+^v?2eU3m|5{U2^3c|Hku1E%#95&C08D}$W(4$Bpz&(dO^D%x*zlh% z*=pVMrmo#x;B1e)mh^OS;LN>~XQ@`vtEUvPC7_Nz3r>o$jIUA7G=FZ)$Pdxd3 z3lB~k?o&pS;(zqn>HWKBpb8R;6Yi~>VZ>o2N0qzWUPE-*J#%XwKK~(0jiH+n2s)3% zAFG5UmfN~Gi9na>wY~Z`}U89dCzrj^#&6^abZ5^l?U8zPS|B?)JIgl3% z7_{}QOoIIr{_UBI0qyn7M&bi>p^r`RG5DfyTzV@i3ZIVno-Pft20dd()%t#UZi`T$?dOtB{fL_)A=7Im+ib1(*-ob`rH|6j%`ALN4x-8;Mr0FCcO-~oU5rgg;I3|HAI8-$+zMt%*1e{0NIx3 z5Lm!1IVeWps1U?TP2qaDoq5eL9~_=`CGxbOjRiREekBKw6Y~4XdM@rF$wK}vhN1w~ z=KY&U^1J`mF40*VUg-5KmIo4oN|xd5KMeKBjC(q*03QMQr^M(m%utiZCw-JfM-xs@ zu$Esg~(S*w?fp?LiqyNDuyRqmlF{I<3iPP5)0mC#4l&OBrw;Dxd1^NU*-A@?S@d|h?Jem2}cjbqV zfO38I--y-}u|D5;p}UpodkBisv^Eq4@Hmtd5ky2f7vh5c|;vT5MHZfdd-Pb;oj}{Fm3}iXchGCd`p@F!#j$}W-G`n3!t96g7eJXb!9zIp#BU|^VfNxdZTpS z5%H?KX^Zu5MEQdd2z|X@01PutByn^m#&-^ zr|5QhJarfzDl#}F_=1x`q+JLotHG!5<5xv4V%2^JJpeud9GVy(DrpkYHGQev*sj4_ zAjm3Gy>IzwqexBQUut#oB52M(9%&wBide_xFoxUEy3-6jfL5}f5pep?Pqo~}O;dHS z31D2H+784LINU_mC&ym-1R4X1kQ&|06!zvtBQ^Q-9Veld5X%n4?_;iIw(?XuP*rUq z4kXy_p?46n>hXc&IWPe5nWA!K&P!l#wlI6&kq}%#>Onc>&w0k2{8<$+y^iZs;P=%* zcXvmVAB5J82^tQ}Q2NW$vg)3f5O+wd@QgPJ<``vytN4#zxEv*LOh^5}*QdzZzR}#b zkP`$ORxyuPCdBMriK174(Ow6x>ZZp1!&2B*WDeT?o!gH<bjWxAga>vBgZH7eg+R_9&Wk1Xp=kEYd~_&O&VcX@E4 zr)J_W`y~{p?1`dStUSa~KmURHe^aXy-;eA3_Q(4Wq*8gQUk#V++T4XwmD#WpU(RPpYakXDlottU7kl-tGq-e!+X-AaVo9%TvsCkS(cOU@m6z4@b@hPHHA6kVDD<%OB60Y~n-{>-q=h!|S?T^hufp?!@~PmmL_ieb#4gTU6H2LRgCfnulOz)Qv+vb#w*z&tAuFL3G^o^@{%dX0;t%0s;K_ToriQf8!Jm1v6B|O*XpsZ@ z0iIKT{0Ho9NAahEE~cBSx1dqVGH31%grf%R`t2b(TeEC}KgNVK)}P**zcV5dy~Kej z<1U@Ru*@glg}RK+`3XH9wO3Ng@A>p9f-C1EIik?*YD+lrCf_l9Pgzyg+i0HQOfYXT zEiU@bmKUn8%kaoTdQ<|(N`}d1dHLD_IY{oF{ykIIXU<*$c1Pb%(W!NT(fA?sif@XY z1#+4kS4?q~aQJbVkoYpI&Uq{4_OTY;V0G$b82bit70F&`Vb35$FfU21HN#n3WzXZ) zr>y@LRF&z|ENsE#&|!<_bdM!d-nOg1V7NT7&l@td(U^XTTQ5QBvt7qPbTzV}g@baX zo@0X2j*i_hS&%<-?%K@-D+_i4Uq6?_Ecg9c;1fEu2p5ieDlb<&xVmT{k5hDcaY3#_ zN^ouVR8-3=1y66poICrB|EpkKP=pu(OWzT@YV;?;H}Gng1wrIf+aDByB4yx;TEHw% z#UCuMF5rLs3flCCV#320t5F}Pv6T0mZ3II>n#FV&4SX;WUW@V_x38dsoVu#{K}g)rZUJ|G zTnBfW;;@F9<@Dp`wC$YsYtPfXvLdKZR(k;v0%gvoBvn!q+WeyB+c_*U=KjSfaNuoI z12Kd8a=nR;$Fn{0$oF!E*dpWev)5kew(n(FL32QC>Iu|Z_dL?)le(gF_NDQ+!I(WP z`;wOnRhz;qzwm!Mh1R!A!EFdT+lOnFyOxKB0am zixOQA4pt)XAhP0$m5>qVCEFuIjnkLjtv#d1}r{u)pG^ z%<*FBoyFz436#k{NQtS7^`${`C|i36kF6$} zF>_|$DAMesuLp_}UFU}kCeY;&a`eu0D^vk@h&rkq1}31zIx)2XMu--AWzF!AJ8S6M zx=p-ARUtJQ|3|a8<_&CQGdkDzgl20G&Gps_2KKZ{UOKOTeWTPeWM1GI1x3)IEujIN z`WeMErl_i0Wv?d5CnSwma+>lYI9Eb1$X`7yziss{v6EO_z`tcpze)M3+eSb)R|}PF z_E|N#%^zwOO&v>CJ81N2-mpofirQ>SWpE#*^u2a#HRjpVrpXER!mgU`qAJhCQth#6 zqB9Xh1t+!MdLb*DjhwFFqx$<@aF)F=9KXO}&D1+_Ly^z_da^?=*}{Iz2QafQFqzo- zbMh}1HsEGwBfRB)gQwsaMmb$DH6`QE>E+;BSUp6}U%TQk!>*j6f`6*Tx z|92oNg=MYABW=t#$fKRJjE`yIHa+{Tdzy$sh^<1hFDN*%mrLvkC>XB(OAo4v5S=Kn z(L3P8k7Nz*0~$c5DuYqdR-BWx*e=&$z-Q$1gXeLVu#I_T{w~9im#KIL^Zc$i;_A}s zSAdMmCYz|~dH0~e%r8V8%xy6MgftG7de35K=H3n4A0pgqp?^>9h^20Bzbo^6Saf*p z&255UPu?`G_4Kb36EO=C$vn=EOgUTtxKj^t_u%jsahm`#nMreKmF4R|M3t84GIb0y zAzY@taU9REo#&U^;&0II^ksv!aR|_?&Cz-odjafK`%FbZT65-af~+IAlIiR99b_pG zqtM^P%_>XdDT=G7E_jvP-cpvbR{NGsD?x^5S;&dfwHIs$W;==RBg+&-^MskWarcSt zK{2!)@nmN%;}0}_N$};CtIutQ{#dNyuW8RdR#21wI8<(RUkZ|LwwEgNW1A}d!$A)Z zJE4>gV1aDQa)c4EuJ|6@`eUTfhlu1Y0&?8_9Sa_>vGm##P^_+mK!_nYae8nc{8=GG z_0q=n#jm_a>G@Oq%sR{My=sn0ZN_5vMfVfgNW%C#tV|uIA6WX}U3sr`zqt*l_SCJL z;--W-e4v(riMH?TWHOaYTw$jPD;_X?cxEjc@S_U1u8b6No^ydnrX*Rjg^uOm9iIZ3 zAg6pcpJ-b{|7dEjh9To-iL?4i5fH>T_Tl z;#rNDdsBKAGXu%E6Enm<&E@=E<*#e&3X#DcvHpFvce{b_W(AY-Gpc+eAmhh> zDeRL&WAjkOs4u59T5%fhI|xqv}a%;Ccksj<9vB{ZkmhxEMHc3ddIsyv?-eaL+V+i`*>eZmf2ZMJMwHt{Uq{Nd#TdfC||1f7*&hLx!wy? zCU>{xLGJg=(aM5U!A52g-)bu@E7<4?JJ--JIAWWc3|iMC77i`!!8^iLKKakcKB)!soHEP~npg8+=)(FW}#>X9QLInG? z4s$4}pS}G-a4ptJE5C$wA%E}-! zms63uVo%>nK6|=?*g?p($QM&mCOHrXyOCoxs2+=&XZP2VAkvkn@&g~1LRl+yrdD{J zJH!)n9%DzcGKSNrhM6Ngj;>J1ZJaz2XR20FC%|OFWvy`OI|Il+u;hY?w~@(RvrEvw z5;oGi;cKy_Z*(P3R;P8X<-S<)yQSOZ*J%{)iFZeDo#)#wMLkBNwDzg8c?wDh%qs_O z)Lz71*lI797<-g%U`Hjq4<{={Y{GGM3~XY!CUCwt^6GwE2oBL8_O(r~>WuK5qXYf>k2H1rzz zFZCnkft1H86-TZ72JyN!V4Ns{;t2!X)Z!|eiX49LHmjP<^Jf<%n^yhZ))Mb|pTE3= zmYm5GkgUL4RKE+K^gj?wV$~E_B*hqP4Z3Hp%e2Ls>Axt&{E&R(3ZVOI@9CoH-lu(i zO2pupW=pVBXnA9GSn}<(uRkW}?cfsyDuhy5QGwi%ve zFG!JJ`efLy)IK2r;(KYeP~YhQAd9G(b_lPHf7P_VVL$6G?gM>hQ|{w@wm$^51W4yQh|=QrBJ(XnjN zh~X{E`kOjjR6?bGD9pHH{+EKFA+Ec`7Nf<>rEh3%iG2R$;;6r#;i%a>ZaG0(G#@3T zQz@XDxZ(ETMzNDKB}6<#dnrTh@1~+Uin_-t2oppzXU{DCcqb!71j_H4CcyXnQnSK9 zS4IyDYzqm3w&V+v^dg3PT{kjX93O)kf6ju$YTB2=Go9pa5;ajHR6y!45aR&VKS7cH z63SxOS*f+mi+3u%d{`EN7TI2IS-WTjS0-#KEM?Q!x{Ah1GXDFs%HL?^@IKr+UsK@o zBCaQwObE)J`=mA-J3%|Q(4H9-zB(rqvo7vq?c3GuvHnt0#nZ24{K&C+yg#(jMo;aK z#V{{{c7MUgF%m(Xp(Wd+h;p|A)1|Kljvf~hxp%sh?+7oH@B~By{YKi7&H_)8-6VcH z&@)n9#MqXNw^g)xs!+S*g8ax5?a2bIpN36y%cM}&_MdfXT@fhP|eMKeRgxOE= zCm6e}%cj+0Bvp&ai`kZy@+{@4##7~ase!bXQu>A0bMXP%xZh;Ahn$Zq3nnzZEE|Cg zQ3k@{Q>xZ2qrT@;hM+R)Yacp7W!(N-0#0?YAd9gw=~)WLp8#*RT2pKAm0Qn>QVKb~ zXQwQP*@eDQVwmEBisyX*F&zcx$WoO-eGS=!>*^+On$~HdlH{X0Sj$=;(3;auhCZ_8 z;i&^*1h*yCO9NTW3xdRRRCc)Q!3?N{Reo<}DGkuig{Pt04%$kpYzFW1OM(gKwjB*3 z=TlJ$H*78zbsM-Q--rA)8dmlPawOpJ4BYw&b~cQztX*s1Q5sC27S~7IbW-BD!XsKI z`n^#fUH_GE!2{aiLCdO_g4prbz#_>H;e;bCygiDA&WB_nGwuVk?9=DEXAB;&`7SO< zH3LN?o3mYF|C2I2RKsaVnKJE=!|!m-3?b{%ZSv*KC>^Hf-+0DcM8bzAql;VaUBjhvOu|#+mtM@6g@riU_;7Z?5L5NbUEaWOI1n&Nbf0r0O(i`)G zANRXSZ9uqoUbM*cq@8G9(7>WS7=lRyBm1*@-cxR85H}G0dDanj8_@up=0Dqgi9Xd_ zGP=v2TGvO*BTEa71lWMyyM3MS(~oW3qYBAvCqr;wwWLH)o)9CQjC$i8Fy(_!KdIm7 zs6?GwW9pwS^FL!h54kgxbKqoYpyzkt`N%z!RrSBjMVgchoPR@4r!Z;9iLM&w8R(v9 z&a+r*Y(DRJ*b>TS)%h)Mej1oY)L{8q#8*CL*x6Gq!<~)z==+WA%x)t*>J{jxiJ*4& z88C0MKMrVLmp{Qu$g;09luui>FCd*Q{q1{%jpa6EoQ?l#US++eiE6= z6qw8|>Y6wD(@^U8?v0lV%e#}i3fQcrO6wGA8d5Y9<>B6+ zqdDXBD`w%E3Oe$$eQ;#W8|wXACm|w1>5scbTb-O~gPFzgD^L13Eq;cx5zo0&ZuwyQ z;v0L)*E(k)v!SF7nkdU1H`u?5o(#W1Ek^sc!1SLC<^i4|;VwZQfbj5eQ6GQ5U^f?phiE{MSJ9pl^Gy&ySJUWzgSvCv{{ba& BNyY#G literal 10913 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 D`;((F diff --git a/proxy/static/assets/status-on@3x.png b/proxy/static/assets/status-on@3x.png index cb86fe015b33d20b1d80f5005ccbfd69e641e0f9..f1b7f703d12008c3b8c69e61cfaaceb42549188f 100644 GIT binary patch literal 10844 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 Ji@Fp1{{TBs1J(cl literal 17084 zcmV)bK&iipP)*XUCnkcj?4qaMd3xU82xiZmGv=HFs00(B z5=8OLku0K^PdyBPr=DjzPd(Ws2pBO-hE4PT)eFmeGd=Ik%uCC{eBb-tbai)is;RE7 zuC5kY_pIxIX4(T*Gi_Hvnl)MM;^V}s_fz;?GJCxxBHh}{`m-*Q-!1i%XI+|LJ+O|r zgY}m&_03X!c7xbASz>Q2V!c)-#phll$CiBcfxpnq1nKz`bbY1Aql^Fyv=uAGsLlK*PER~{> z{iLEQGmL9S?sc3ygK=6RbtjPB#US9$GtQIEmYY!jPP)Ge{7ZM7UAA0SUFC*n2DwqH zhp--aggN5~>UB=7G<XzcsT0? zx5(EUn&QI1Zjsp=Thh=cF)wv)Q!BL>Cc>KQyNl~Imxi)%+XLCQ4}-ZOE4Sx6O2tSe ztZcP!kW^LFi@mcOpS7~R6hGyLuZDDz7LP2Dl>>luTn&xL<85kW>E*x%Cc?wM*Gc_} zv>%O3@&l}0GNgHinkDBRELA%}*wgqO3d!us|7{Cp*6rCGLS)!eP5Ahbp1V}a7n|bZ zurs9VO45yphZFySUvitwT|W^P_B}-%-wKO!P0H6Si5rf3E(BeiI1q#{8YFYe6JcTB z!DYeyPB!H)lA`e@xD(b|I@}K-|LlZ=d;L{Xd$AK9G<=IxSMp)+!kY^ zLGi`YUn7;@@*z%)hm-%UfEph2Vi(QKTE(@s51Tb{Um;z8qm9NXADQ-Q2sKdqZLvH= z5(&+<vro!uJJp-4YKNFxTtG!2RDDYpKRgUY4nRXF&)T_Tk@ni zYLLv{Ix(&3J;iqWSX26J!G_5EO>dH_GxRr7zSF#P>O8tBxw%gTs>_(}2q*hkU=fi(ge~V>VwZh|V zD&+rKLEQah>sf4 zTPJnKg(P{NimDt_KxNB;{ABWu}v-X2i zzmECAzv;Ilqvgh9lm0QhfBt_vGH{u7Nx!nDRkU8EZ+Lcy)J` zLGduCvM-Kp(j;ZW#CIGj+g*+e5_qT9g&_+7 z*UCBzIDMl~Bc>Iy>J~C6=bQuaJ=IFqe<5ly=NnCcgtl_;Ud{{<>Cw7i8z|*2dz6_n zdvCbZrp`QY*RQXaiWxV!BQl1xlJ<`*mtSwB+@x)O2yNppW#wrU@IYcA^@Wgh+PU{PiMf+;HT~mj&6{K#~IY` zk>@7zJ5)P3o4s;_^!Nuv`LPoxWfwO{y;0o;xAGE6Ch{>F7O76`!NW0g*n3SmA+#&0 zZ{xUSd%OJ}`JpX+f7RzwJ&*BtC;(y4LRWvzHd3*3R6}K|eSTql+=Y4Il>6699mMAS zP`O{xQcOWEcpR}}dNzoO<7X%6N8~QmT3ISBy7ZT=zK_Q}Am6tBP8MmnZ5$T=hq|_B zJNwgkINSf~8lp~W7C^|Z9Z}@yBL_-FWPyyf=XmU0CK<~A{6^`qtpRQXjgab%mWh2S zGr+|VbkdAr%+Lt5KEP(>w(F%*EipYm_FH9U7Z$yoz_*sspeOkNOgqPoShMlc$N{o} zEEtZ4v?5WolkKxPS@Sy6@v+s>kxid53lvIR`YH)7|`!jIgr6=(*`k6UYW^duFOSZ!WBknR;e+C^g&u@e1 zm`&;Y%Mc&lWpOhbVjqC%s$mh88e??9X5DU1WnDN_s@lclyet6ew7hI(w-D=g`iQ0{ zKlHoHd*e zH-C+(`BW7l(&TB3ZY!-Hqud`F0kIc4eSNsf`5II^4F-LGXBzS~w3OnBZg}<~>O2Rc zFzV55sq3>`>Q1Co(+oJ>%QYKf+0IcNb;JMQ`lo}x)JM&07^6qn4C?_=A2UEIKk$(! zl0;`(`n88Uz17VP%Pyo~#I4O3C|l2FT00oWk)4pQujXgio%3!mod#R8_kqKXT_}qe z>TcO!nZ+p-_cnPVmMdk;6_j;XA}s#SU|+5aS#-I_19K4$`DUbYav8^yt$&WpjWFS2 zEutb*k{Fec&LxuQPOLHl)*J89##B1$1T?agz)1E8wt}e7j&6n}MyG#gZ1e+kJ$x*D zT)BN1tETm+H>6rP5(J8F*$%lGV0{5mj46fauah40O)XU0>{YV-OXAu(<8{@~pqvd6 zxa52Ap2gznQD>f9hT*jDn(AUI6Qa@6?H%kDPv6B1 zcQ=gS7gHKPFv={_wGwsT)R~@s+?{@W+X>HRI48sn=PRBm)pV$wLILUs=RUst`+`;+ zx$=*w;*`*piw2gjRotNtD%+3VNIFb$`oV^q;YPUODrdc@^LM5JK_ppOCZ!!?XCIx} zau$ZTkET9P`7B`4rc&Aad#O6PL9Ais43&_&0` z5SKMjPKX=1?s~YzO^LP4gySg(Qg;fNe(H&C<>>7bar=3vq02}IfmmbMd{MQcjg7?S zh#y}7_o+{}oymF1trdKY+ z#D^HGv)%QuhS86Fc)5LYLfkY;SKwPESKaz{Q>o~ZY3J$ju-~Mfqf~M_`1fZJi<8Uo z6SC%0zp=$qG8XMie{h`PE0Fy|Fz(4NUh4yN=C=-zay|%e9d(#8 zb=@*ksunU%E}eO)6#ucmba!p0g()Xho*WVPOyvaKodqMyo(9((>x735s~vHjtULwc zJRKa{gu@dd^e#T~{<4i!Zi*@qm2LhX?4(;^PRbeq@5mWH)*DLH1Esr3WXKr1B0#r& z82b|jMqpLJwGG;ntQ4Dsq$nwrwSe`!2^BIpbu(f;$+o&Z$Jbm0$zg)m_ zLfj=%qH4A}XN4i|9oRhB*9p%?m>J=HcFHc^KuR_%7E9&g7x}sB5VkCEjt`qRTlq?* z)jbet&~58FKKe0y{M$m*M~3mO614s?S8#`!@>x=nH{#BTSfY($g+CEiVfcEjSLoz} zObyRAOn3028y)s()a8%i@murRjoT{9{la6(Mo#(_V>8(+9WLs+0#5xf2ZKlC`}`z! z-)Ok%Cpzm0v3&>w+Q|veRX8V{TPsULj9c8m4?xA|+n^_thWC+fKOnY@qCs3j0Lw*|By{U5m)=XhT@Eb>@S-G~a}+bwmAkiboyu#9U zWyfz=q1_X&jB2k;AK>(Snk{HQ<&?PT>=z*#RSPCP3{uNlskt}_Sb%^M0%FS}Xj}H8 zBerJIbpt%+CwEosvSm{5Wyj%8o&!i!l(YX}K)rk;+3=QZpXD@^;|tUva+)b2bTHZk z&m}CU#2w{^_8q1M=;cPLyEVlX0tPpqhsNb*xZw5X^6eyZSaX`(K@sIVxVH6-)2twO zwMdQmW|{dXQvBYKYAMGDrx@Tl1?7~uwdU=l?N}2xWUAkAsVqM$r>zTtyq&Ze%|~gF zSMByIxsD_R%8aux)9E;!WJc6R~G11dDoy zweB~?G4=MLzA&l$Jkb+I)={R?sKhuEybv&E;nU6K+GC?@FLP`zp?M>!Vre;?hSWJ5 z1EEv|@wV#BpQ|wE1ob)(wMBP4>JWa`5e{I^g5S#`uC=z?84CD}1@M0j@VtYfXE|-x zuCo#~y7w`8uTZSOyb<>R*=hmAVm!2pkHx2DvBCI;S;d1hruQ%Cg*PaiI(TVG z#s!MYh~!kj(6v>*~cey7qOKV>PhL>ayK%r^^?_KFw4TeK*uGMd_cNwSLGk@e@Iu10zGx|) zHPrzZW;s7eg4+f430~|j-+n`97B@Wq5Qt2@h3()hnQ>mWk!FOWOif9GwIHmsO;F zki!=hYNzh!pgA8|`bVb?WS|T9O54%vZ?~7?r!qCI#HYnUOzSVXOIJ-mX{CCja>o@8 z!UE?c`oN{iq|;aE!GLVqPkZ_MV6eVZd-SHTE2&qEuaw$_5N4TkR9L5UbNV`05e8r9 z$1&!8J;W_1nn;-bUBt(JUu!8F)mOSwp8qE;=hlmaSlHlI-@c4Woyq$nzexS}$Vih0 zN%dc+iS5#F`YE2T?_~z-Kkl@45n2K|plLmoQi-9xHQ!k)`lVHk)L-g^XA*`0dYkhX zO>7E;t#w-^b;p?qn?8Cgk+9YBQ{7VFq-l2a=$UaH;cBja$a?q!oBK|fBwrVluoYoi z;zmrs+4*V@ozYs@Wen=^_0sV7H>LVp2p!kL5pzdZB~t^eTg~xyZ(TW?;|c>+qJoQz zFqMvJ!A0t{-4quT7IWyyRPBBk@FpXYK-j0bYY1tJj8?e1tAj53B3HJLn_}Ph-+75$$ZyCOVV_>HaB7z#U{9}T`%Vt^ME6!jev@jK|KhrPwZ49#Kna4kspbs#3#bhg`d zY#~772N)Ay)2j2xkCMrnTqGqsa+Y;}i24n8n=^-`C2lR^MycpuDkYmE;IpW-J_u4Q zouNm`PEh%LhE#v!l+RVA!q7;c`grcUHz*X+pa>8RT?KzsgHpqdwU#ts`yicz zW1xv*&Ez*$ueWF|Eq~I5hehE!=iPH?t6RhT|mM7!=Sk(Q$pFVsqvCmV60h&x`ePEmto4mTOp z>oj!?;q~Kje*bAWG$PY!JQ^7JKW9GTzv+RuC$trOPfh31`(*Um4MUCIMRnzBhap`O zNVnT-rS{V#AOQvl1EdW*7IIfo)p>}BXEMHQSlL~ib@UEf-%|fOQH0;0kK45)t(l>6WAUYOULjphxCX{h$-p4JEUAtg z5gHI(_|knDmZvFX7R22HA_ryDc_7GV8T7-QHKLv`Q{TTj;a*{IaJ@#gs?IidreU}5 z05(OYI^nqt>os~SrB3%Z&Y_&PVatNJ7La!$>$UOh;C>z!PuP4pA@0P=#N~6Qa6MSt zDKReCyEUSf6pzZc*P>K))a&vZr0yM4no_ZL=r5HndlXYz^?Zv8?Nw(SgOk_ocD=q2 z%gny9wUlc;;jCYfFl}KyArs1QVVtiUhI3Bb@eY71Mdb6CbD3k{=$`uTcpmq^T7=0o zIOA9~`z)j!8m}AN`%T)mM?4(=r;Zcg-o8%CqbeOkzTWY?@qZSQx3iGUx?xrvfBauR zQr1mszI&LCQyiX~f1Q2pH)z}VGO?e|r7WJ~hM2o2E}!e|w@iKNG%<{PzMSP2*In3S z)ptjsY%XxudoYCYqM@aAEk(+`Zc~e=PkjY<(I0ZTE2(=A>_w>e0oTVFub=xr;-X_T z#$pd))yKj)qA?4+fL6RPfEASeoF&EM_muK~^b*T;fZScae@H=yJF$9f)p9P*zMrqz zWnGq-F3tNw8iLo>BE8HhuP4Hl(;+Yam;dbyb-WwRNy?2VIKLhx8}H1^z<&zo-`)w& zG&~J;9`-=TgXbELI(rmh{RTPSi!126oa(&jc6`Ih*pQq|=I$N{(txd>U{p`A#u%>$ zMA9Vo6Xu~%U-JLDP zdccne!H2#xeWBu*j;~L<5?90KsMykiJ&^09+Z1vIq1sUjvA9XyZUNaB8CaM%$Qjx{+6!IaYli^%6t(6|bzcr_RD zIj2j|1skv2{-up{=wxyPNuI07KjPiH2S; z-I0Z}qk2^niWTzPk<>#u`o3Ytka}U;WWB=w_${U7^M3T_q|MzEz3RG#)xOo62C=^K z{d|P!mp-AN+~xt^ePz8;EcVcW(qp=Jn#^OOV_0)Sl+eTOfmn;F z2^NGho;B8VK0?sBpPUdk_l^Grv&g=1YBo61pN~tZ)>H^#80xRr6JW;I*bX5djh?g`{4tH$Fl5Xt-Bsyqyl<{x-P1_Cbq}#yY?-4 zCtzU+p_jAXTK!~=xV1ykm$EC@psVmbRu_@>tq#tP`J*)~Ob1g|5vQnoGO&m(Hg}|_ zcMIUIQB*!xe;}FY&u@{hH>{N<3;5s=5tAPX=yX2XF>xqdJLB#4c%Sn@LDcr{aop+t zAqZ4(@)%;;h-|n!OIKdHcx?x2$z5ae`EjJ*AYC3)JjDDT+IAae+LJXtW8#i!K2CzD z(R|3Zrb10H3SLI>4;M>|JJgS$DNRtA8u%=grAIbI2wnE0(;N#mUl>(Be_BtOS4g+l z6U8Dwxgpv+Dfco%+Rs^7{+`aai7$f7e+5Bq=1hmqcmErtyKA>HG2OJt0#>iX)5EsL zn+y_@H@?&7ztT3;dBvl$d7!zmfGoVQ5an9!>VrUaDnFftf{3$`8o)>{hLLb*XUK;$ zj_vfO0Ys0>gNX&!52(5R)>hiw%gL5sLKdGkTU)#kHPv>EupfhJf!I#^?^L z3m<3-ySnCDx}kc)zDDYfjjpjQtWSN5TXSI~-2xMLSj`7jpM&UeJ1gDMepb5friO>; zWl6DZe`c6)@;Lu<+Y0Mf?cj`#4(~6?c|h%!jHPnGK!s z-eIc>M#93pVtg2No;Tk7$0*a_#67ZkM47Nnni?!*^K4V!#63vnme)(o)eN%kDEgi% zNdG<^Jd6d~)4UrwQksfpEt+~q4zuXTXBzKd6{p_tvOI*+C{uV;wN-VrsYsufiu zWb$}*531CQ(-ODtIMKN*5`|OQ{xu(T>dQr956iV`DeSOCr}#xjWFnu_dCL&Xo>BRH zfOLB;@#BR%zd+p%G1N~*F~fq%`UI}MgQnMm3k)9GCi_H!F7Zawm>%tOi2Ammw&W&U zYXU63QB)t5&-Z6MV7m6Cj$Ik&(>|l`8fU5`;?^&rN~(@$kd$jgxQL$yfU1|$b+4QI&6k|c`h*XB9KFnfTgsE;%puB~?KiDrU=UH~*^j`gZck@h2(RD%^k8CY}<)K|Y_oHw)2I=#!B0c}^Pn3xs_S>b$=- zRdrrYS{(vuBXO%Idscfx{NSK-=aTOBPSWzRd}}`Z)GymtuaR zzmLQS?4dPDotJsL!((V9ZWcgOKyy?oR3!e84jzVTX-d$|jZ}Eoq&St&SIA047K_z- zIQcwadp}oo-X>BxA#wXYAda;%c_VRSp>`wF?+vD2AQ3xeMMM4Ae3KFThY3nsram9%v+P-EmwY@@AYH(V_Jq!}6*aqng}$1`1l~ zrj|Y~pL57p30-GDmk!%+of(jyA?j1u$$Z6co^|QWJjETr7wG zSWjA9ueU%a5qAOV)+~yogDv#hhpLX64i0r#*1IEgAt~6OmtcS1?KAImYgddKSXIfa z-Vn8#D>%<>zQ*?Ze(Q)k1DaTE5ve=4c8?5D`O3;*sY&P9GHE#}%uNHn3Tfhr)Ft+B zQhz@EeL0L|Q?Ke`=CIW|;`ZvD6!7?2P&)WZ)+k$~NSc$V*m`KH+P8F+w$JHSb506s zLP+(zX|1fp0#(kZ&(}*=wU$y^zK*!l^-@B-x{1R-AeMRdMSwGrsS~hf_6ngdVU5HM z6*lsD#SFsDN}=>m4uZ&&Eu`&*{bY-u zJ&9WpYGUt>Z2mDrq-y)xsPWiwwAPn(UbKVlzpIX#JiD>T9O}2H;@)BPqS?BL?~evG z>GYH<)8OThwKa~DPLDgC=%mS4uxO<@Odbwqk*Ky!djzOR4gHSMnl-GSR8+j}F%3PJW*{5>DixDi)E^gR1QMs%7Nw z-3av3D3cEn>m|%y500l-L$;YxwJ&4AlpN0Y2V+(bzKDF@PFg*y_xi-~HOnN{xkKgDbDIJroGml9H6gUv& z8nX`PdK1iiwFqsR- z7O~{hlPK2S5Iei_!JcT@@)Q|ySyrLUs-W_@ZXB)>`#jbRXg&h%@Tz-`yU=Ifr}}KK zUT_gN+=g?5($PCZoV%1D!ujNbxQY7pL0j0jA$<97S5#>h=%y@$P2a4JrGE>&OCUKf*~ulCW~ zyEr6#2;22982Y4+yJNcfogJg{dA%N+JJD300lx|K5p5bM1HT=!g1F2vX$^}mLc>W)63cfJB>ZuZe9bc?uw!L@J$@d*h`ocHc@-eDbx zB`%*c#rI}LID+^fXD%b?s8>Wj=YMQlY5iQbX62Z}AZEs({=co4Fayyw%nWCH{e)e_ zt(owtaXcM#9Rsj~A0+NH);kaax0K1`pw0{3xUvI*;JPw$9B`I1XjcGrp7j>;9gbeg zUt-Yt9@0OE9N3oFoU~7V$d6@Z<+X7r{fvL|hOzN*!vFHNQq(zY-$iGopSgg`QgN#n zbqOt>Qzvz65m=d^A8*toK~(dxTSD7XzA`>2sH{mapW&vpN6O5ONF#B_)95MVTB$pO zuntt1O$#&#)>MvMO=u+@o->^kkC&CJe`cZ`ARrcr)^T)lv7d5cMEoMY^DsH>@s6K7 z@iaUn*IEi?B^eju%m>&e>hGM zIcNDCGUtTdrTf%gX{Ppg*GngsV0ECw zwdlGvPJ8_8=E3(pzq{H=*}bVWAMtX6{DU{xqbqe}at2V;#IQVA?r3T_!H*2+6Ub9I zFYNyBFgQ$kz=^-YS;(8}uTXX|r7^+igvbGBEbm5U$~7R?*Qm!n&TLTqA3pu@B?Fx#2*8kQ;B3FZOpOJsfN0`DgBJOyBDz^M8bvP}Qlc=!z+z6oNiDTjWr{OH##+OLZ z6Mjy1>%geLLUQU&4V$mVl=_Ww7Lek0oVPsUrOr!@!5jYm$MfuIEa=82B+uDvTt0`uRdm@lTLsa6(Ah8Hya=KWcKK{3bzq#c z``jV(+Ao$>aPr6^v}Z_8P)Ei7p@eQyNe!1dzgs5tYy#L9@@wz61$6SKq#X)3e4om=F_6fjPtqXEl@P|QN0yji?Up$`aY<`2(!liX#8|e14H`RCE zK&f~scn$pJ(8U@Tu72c9t@ZCH>vc>wLkyNLI&-zk9P*dAamZo#zI(w5&qp|_Kc9sX zp#ibQI)bqXphj)1A@aGrf(SUy@0A~oIWu_4DRC#(D|(Z#eKIiAiuP8Cak+Spak}SY z2b}+vi!u^%rrT~$OzZUy_Z~;zsLC$sp)GGC*6f}HEI=SGpQAs&5F+0>OciL$BJ%0M z^Kk>E+ncd*3WF+bp1cuvVojp9x^)n_g(+$1>)aAiHonuKTAMp>P&wj+v-`}(h#bBs zck|kAXYlrhFsJz`-s>t6&C5Du4@?~1@`ESWX&~~=R){^1a$00k7Gt#l8bE(;aX0*G zQ`JmxCgv>&amOn#EqdC1UsO_X^oUBTZ9Fc-e`FJ&40T?Xp$dgf}e5=O5BMRyj2!-SS8CR z0Ykp?|IjHv(ulhX>95dhyPa0t20>ouzcnK4sP4f&!kf-KI(;*hZx^=}cgE*C9J_Gq zGYH&7L!VRMuEZ5oJ~ve?ul*EN=c(zVT+Wxfng7DA`E=ljcGCLMY#I3YFMD;$RNL(w zT=;z$VuX9YLx23=>QbU_w09gL4u(-p<3T&5i`+vDwVAqslpM>h_A%^gtH)dpe;7Xk zL)O(G+PjE;coLBex6tMPBuvo%Q!wI=Uq6D(rHd2aHoeiNS?_Ek6?--Xe}%}&r!#<$ z8M^!<({{TdoePARa~Ss8&$%Ml6)cg`tuoz3HQ)^eif-bWeUPL6+X=%bw(6O_xbmY$ zYS?5`L#}WxFd)wDG;{y zTx@60)rqS1ashn;SU4(2{M?Ydg!?_OGQbN0iY;(mB9vB!558Z#QhGuOLcfJsXB#DY zM({3vKg8qx{6j09p_Tr8^i|0F@2P3FZhoc8n>WrKy~m`U?QuC4@gwv{#niN-gA{k< zB*x-Y4a-NI?&z(MdN@jQd#Gc|?RGzP^D@9{D;$rWlkLF!t{k|#)fmUslO?0Xd*KqGr<_7edvIxn9hF4 zmv_9A5KMW1ahh3=ahV?b*``3)TCuUZ~cA5QhMBQdqe1nVf>C&JzIG*8k4A+)I# zz1gg3JZvuggPOQDuNZ3#N9wW4G(WxAA!gV1?{M=IHjv^?nCZ@9%xCCFVb0-(lCYGI zquY`#e_|yk`}xF)Isk;W>Ph397#YGQXHn0n7-9?}Nm*FUI(+5VtxfgrNIk88{D4{UBegPdjhx z3*@qk){{0}n4X3t7^|OVY77HCp{Xn+)#%?;M_^B7OEnq29>luaR1Vzx%4x{0rnr2= zAif4pTMadp%M5&$YQ{`)>0kq-@&kzcG7Q}|!=e!GY)$63GBF=C!5XBRt{!Q8tp?5m}Q>xV{ZM-R8zF~T;$#;Sx!*y-9T~;SGR{*~@Y@K>VEjV8! z|BJB`Kb#MhT_Nlx9NoLOpKLwLgq!%_&#f}28%K)z@WpZ>Cy4E~HJvHsw%8)XSTJfH z^~d+HAu_by*nle|5Te&X%up^1L;B+@Y_Gd0C(Eb+M`jk}cQcq5Il!nytxuWpws*n{ z754U=U@cx>T6RvDne$S`Kw^m=Xk}pU;tpHW>8R_IgWX zRo*o`frxvdRO7&=;Sxj!KlxDSS&tOs`;DEtqgiykm#*8@{Q_xRrkzYLwK$1m`%&*rZfNEZ^#enhPna=9+`pNl@(k6r1|Q-brec}OF3Y!u#}AP<)|C!E ztTEv60zog~>mAWbtgcL%XZzhMRdnq3^@ba{L?sp_FK5eA%%j@A!T7d2n#8RQ89oYo zV%~tu1%haXxqtxZuRYX+*c4X?SbHhDm+}A2U3NsnbFLenJ4hhnhUz>vR%i}K^g-5t zJ!#nq@uSZ*Qu%H0YMb@OoT3>M99M2~cx|`yQIE|{iBYV`^8clbmrZ4`SrU4&X2O>V zOm)`K!aXJ&FvqL)Ft;f#7qEcDZ4IY`lVm@_bKxo%bds_zYCjNm(V#{+aG|XYjr^rT z%5|k&@JF}XsYFjhMKEY;q2{_dee_h3sQ`%SP<#*eFvS%D)&`ftl)KznHsiawUee@* z=PDeCxZxiEM27wgovE7(V<7C~dPqeDyG!?H>U)B-mL83^CZR5@$yEmg!MiHrKG?M0 zurl6m_frq`nMc3>+nH8HIX2DuI^l&1s~b3I;~`V|*s5Qns#H^4wqb$w+^Sfo68g*9 z^O(#l`%+dNXVPu6$&=IRK1d^2OrK&(&&-vRg`~NxqT65u&p6{OX*ijgWnjKfAvx<2 z50^>th!s+I0b!>Y(hcs7@tov*rVGTm;}y^L|Cdsu_nx>mf%y8Xv+0p4lX|OFBQoQ* zP8`%RYuoKk+@>&oKiJxL+g(t%(v?zor72G#V9}4vybj?i6*YBc63XqY+h%yOw%zV$sQH*wE*fr13xS`b$MsBcg@Cn`lA+W$X^j@GhrK=K8i(Y% zP6a1!wL9Pw#;!N{(Lrn>EtOl_6L-DTs(W460s}5IE%A<-+;&51>@#K7{?x~1`~!jM zcKh_yxw9V|U0~bB%@RtxWTbr6D*L5|!-(4k4|7<1H=LI45)P}sTm>g?Z;`|-ulZ|M zwo{q6+gSiB2ZiqQ|CEXKplP#&{@i$pEI%{b# z24e?j!|9A=*fLLX!V3}B?RJO=D@FIC&e+}1{6N?w)16>;1KkgOs+%RQ+0dObKM;s) zghxq7=>@hPaT$XPO5Amk`&&$Hu%3?EGMnP^3)Ag(h{ZL{^8tRC%k6eQt!yL3qag4k z`{rmqyGxZ+9q$K6KGMXTV1DE*i+(L$CDvt5c(%d?BW~p^OiP?WbU#f=x9zpv4pHTO zA?fTXz1e_|>@g=?!`S0Iiuv$ly)|uG6FAfWq1|q(CpA4=ZM4mCnL!Ii+`34k>K&cc zS1kaJ$=`6o^Bu+<;Ln@^eTL58+fa6$UYlWn=N;5Sibl|9E_EARu_eD_^*X>exi%1+ z@R52yP~IyTD{v2~oU99QL-}nv8*r`xo-wFk#0}Rr>b7Z-F47t@ZdphKaJqdV>euU} zfo<-H|3U*MYii=<{TCv?GVIZ>ROO_K>&0mr z)T#I@aX-}UQavl+j>!yC5aQOOWDxM-rmAzSYOD#KOBfu^f~b#T;NOSSz3RcO8>_%} z`|FK?0>3Ph`a`Mjdj6|nZx4~*&e5-LXz$~G zi|jrHA#Tn{9t%Mge37QyLfxTpy6AI=8tsg~)A|sHajlTuq49@}Db8r`k}fy>k2b~r zD_h}DERa>-;rH(W2z|G7`7()T-(nGEK5WKeXI(AGdL;i39XW$i_jHyFN4yLRL*vxt zOq)qqPlTvz1g1khc)Mj7T=-Yn7dI3I<=|}AY_M3Cen#cW_q2WV$=iI8-WNO;OP-SeQb93QO2pch(Gj4Q-oJ0KgIL&!s_;i3A;4=|&PhU8TKLwP4|I;*#- zdQ@br37!c|T~MejStl!*UTqaY*lkSx#5&#A;Rx{cNsTRcv9ZI{yZS8wG2_1*$%Y*f zr%tDh(_-!Pm7R9Bf)Y>U_sUGE`brsvUUA|pvmsIJOn~D|s5Kd;zEDgHrU-6>RQ2g&(PAA(z?@i()m}-qdv3IFXLe~!fd*`@%VvQAM=rn z#b@}$FpfW&`BXgJnU7{B>z9}Plo%vUUWuClxs%Sk%uvAxasP0h0Uii6SZ3`BQD4X4 z9_TkCgR_F&#)q*z9-%~v#^6lk@kavWAH^yE%l)R$Ryw%nOxjuL#K&RkBRO(*4{@70 z<5;i{WWnzGAO_3qzo0E*Mzv3X(8Ab**U^VlmC!p$i{~;ua_Fpg*l@my`wfV@m$R~& z+|&g=?t70IzH_?6ebt7utkq%bHyVErdi7C>ZX=K@r-Ns&)#;*d4BRwR-NCV}g|yx> z&JmsYauG%(_!A4h51hEEsm?6lZgAm8ArKoSg2m;gy%Ahy^F^}(w^Lloj~NN`<2L? zb)f%Kn!~DCh)1v~^vhv57}`u#v*2(UJUQ_uhACrxW`MI1?a;JTf5G_NtZSddH2HeZ zD{;4yl0kHO;|UVwdNlNcAdOW+d}OtYXGryI#D{U@{k@<3lslL5&gUW`Tu@XFi<*ok z=ZxOlVm#aTN?+-^5F8_ub3{WB_@(*U<%?=7>=R7&u%u*y!lP}o?=_`?@UHTs@z9T6 z_Z;+IAHBGW51X05`qqro3u8?fPWg*Sdzo?|KY26_1gXw!ZZmn5b>i@nW8q-OGtiTD^Jk$f`VwN^(3w|19Jt;C zPI$J%s*a=lSDbih<2*R-R&lu6j_AEZ5VLDxjQ^99(%nTL$CLO^zZVUbIs2j%P|sjT z64yF0KHWPiz+U;h13s`!m97El;?*M&X&z0NE*>AftyZpBEUV6=L({7A;`tcte?pYE z`MvLbuvG0-XIP+tXOZ4lu6XtSb~q3m(HZi674GFNUzhcUYNCJ7gpNWYe z)n4$ijs|vqB0TyY@h=$Isxj8KsoK7sE-Qi+;`Xy|w7t8%qP4$C}o=jZ*W9oW0^TA4ITGExHbugaT zai$F$jyjSwTPm_;9uY|rapSPv%N%wG^yCL7rVaY8q7NR%M$^xG`@QOe%bDf|Ehm%o zO^&!#re^AWutsWC)pa(FLwZU5z)|Y?;Xc^j0U7a7M2NRj=SYs7#^MyVb7C?y8qy0s z6X8))SF_6rrt7|mX|w(Qy)4p?r>z^W^|9&Juz^yJ4Tnr|rx&SL(L76!s!-LHo?i9A zNA_pXDg*c_5k37oqlc7FPK4$9y~z>x5?OXD19A?8?W1nWL9Kg9SPlm{g%18SOozQC zvkzoib;;@a_2QFRWDzbF6O zJ#%sT9B%;c!(cAiG;-BP(ZP&Oe+d4>J*9GA=Peq^^~ruH?=p9~CO{xZr%MB2sp;gs zhzNIPKyIxa)$n+fbbcrFz?R|j1m97mz9kX~l%v2ygH^!Ub3M&!Y==F&@;&HXA!Yf}`_;QisBE>oo=ycCM!8ZWJgsH>^0Lcp3FaWfFN8#)3TV>z#blypU&9v0KM7?K4C>A?wR0fV~C zdcU7kRC!?>AU)oJu>R$YSFHi^?A1I%Y4~`xI5T#?v*Yf9PlJePWhz^Of5=dZA9Y zpA)y{9r2MM`HCvi^ozD*S+HQw1eI1-2T?0RlEqVKb;j*wzHrm6-V-!gc;gU9PQkA83E|xVLp@vKDV4 zEnjrQy&)ZN6(T1-5C!j{__Fl&G;*^++4n|wZvWT z;ir&6PTFqw)A`6A_dqlpdPsiYh+SvOY*pcfdQ?s(qmj7T81XHVBo^LYiapF>Ws|RD z)#-_8*Yx+blDMZueCL_XMxER3eg;@CIO3yt%#@aml70}WbHQp#>VmP`$)=6Hg)>4$ zi?A-|REc+WgN89v9nMT;;{G*3aW&QSYaMap&fplhlWV)3fqpN@J@uvm?JwOv1NXD0IH)Ml zh7KOB&NSfxmJ!#Evbx`@90irtz^6XaW_01q@#4d3WC0t4;wof>ji$jVh(e{A#7r~ znw-gNuKNe#TLOV6J-})?3^*wX7&3qj%!io6z5+QP=tRK+QDyJxPPj9St>_s}n1(rw z@yr#{^*2*o7+B0KRc%f@>`ua9Z8~|@I?hdl?}M0^B@O|{pN6YCFAJ7o;^$iHv8 z0|M$+nfje<&R?7rk;II<`9aq@;#Rr3REl% zXenjyA7u8Sh%g%)@^X}`{B;9-9mt~x);h67`ypnheXd8JWCe`;Iv67DX+Udm7=Ql>#8xKxjcq6u43q}^eGp>{FDe`z@TbpCn5qAzpAFob- z2mRROBCPSLuEv0K4@*ujbr?yZu3Ps6?E%(R>z-Wqz)doXE$xOsAO(ILBlwg>>cyzY r-p7+@C9WCn(-Z6|Gpvg=_Q3xGX3?~~1eckT00000NkvXXu0mjfPy*|G From 1e6dd4d86f25bce9e015412dab99ea18247fb0f6 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Tue, 6 Aug 2019 23:31:50 -0600 Subject: [PATCH 025/994] Redo the status-running icon to match the others. This one was missing from the redesigned icons. I made it by making a copy of status-on.svg and changing the fill from #8000D7 to #40E0D0. I didn't make a separate dark-mode version of the icon. --- proxy/static/assets/status-running.png | Bin 4758 -> 3342 bytes proxy/static/assets/status-running.svg | 8 ++------ proxy/static/assets/status-running@2x.png | Bin 0 -> 8109 bytes proxy/static/assets/status-running@3x.png | Bin 0 -> 12386 bytes 4 files changed, 2 insertions(+), 6 deletions(-) create mode 100644 proxy/static/assets/status-running@2x.png create mode 100644 proxy/static/assets/status-running@3x.png diff --git a/proxy/static/assets/status-running.png b/proxy/static/assets/status-running.png index 96ff7b2bae3a36afd22ef372c8c39237652d1a9f..187e91535123d75b1086d3985446862db6e1367a 100644 GIT binary patch literal 3342 zcmZ{mc{tQ<7sr1y!_1h;zLX`z6RE+V2zf+gE0wLGVrJ}H24i2I8I+Kv>^qf`tr-<% z8Dl~zX*9A9M)qwgyGmZq_5St#@!r>U&gYzSeZS|vuKTY$>9VyMKSBxt006&*xrxm_ z&-@#3=ziAwJsh+T9#5l-MgTxfNB+j~?)UPp<~A1rAW{hcNC^P&bALpd2Y?VX04!qn zU3ma-kWkcg<=;h6yp@^BKKIYgx#oZN!ACH64F0cj5erJ_9uM6g!iW|ZO<_}T=s{UQ zu{&pv0|0W!!o1Sz!b(FGE7uj{`uvnTP$jEsEQ29h5L%%i!RX4u<0 z*4Q}sEb2D9DmONNA#7rYtGmSx?rl|Ep3OON6D-6Wrt8zSLC~oB=9%3-E)>eUF2ph7 zB+~81QUksf^z;UGg6TARF6p1SsO_ja_)g@?ieL|@i~N)huv)PhO{<6~(=zwSf_mpBbc zGI<0AzKuW&h6`c@*a9*3mU3nBM%gv+RZed~*} z!xpW`XgSvUTe5vsWYC)@c8bhks;)HXYFSOi$dw2tpYBFCxK31o8R(uI0wGV?mjyusMq+(!#yop zbW?%I>?kEj5#;)m+iMX_ymo?r<^JOVBIK@Jx(a>lEOi+Ba)5FK1+F6$e>{(E_bTtZ zGx$+;>+4|wA93a!6sy;eP)i?R&(M9$`~9}-l12NsO*pX}8&2h;L{aivE8FO;El@fb zY49RBjM+^Gt&a-$@Kbai_bqVqt9cz7Nc_dw(7nj~rW+GGX=I&VT@gHRp5&fd#sXl> z0GvluderOZ_Vo} z<>4M2%GL~84aR89UA=8j)cqbx^K{0;p0*HULkH5A%pvp6zcU`W$h|FQHnU@#Fzn!v zf^0F$Q*wL6jL&=4jU1Z=IE1TN0>DM_8;!AMG8waT9=CqZ|8P$*TgwNJ=G-% z-ivRbo3kx)5>9^u?7vJj=I>so$|GzPNx3@)*M)4MT=hRl&-_wY9r!VB$xV@SNUIYv z_U&;(>Fz_`+mX*RjU_uKN;_KgxVvw`Z6QAzfqQn0OX>mLH`-t~yTy?engk0?qT|p{ zjULIQUqSO^Uv;$qr9j0!caE^|d1%*d$BE+J9vgbeor)qBX@%?A3d$Q`|H?C`L`OZh zb> zq=s6_zGNd#kI**%g^d&q)rp%R%2D)!J4)kpDZADAK3uo~6eh30|E1zH#o^{HWRC-MBt2WmdAs&aI(Pmc?pkX$twUSw)c z=zMxscTHwJ5_La_f!I~)iF&gf@e=0+AB%5<`0~5D>Ls>vT(j=47LsW&Mzq4*{4Xg{8B$ewAnbQ zb7b~bqz0@3&f2!&NG4$k4ml3B|GeN7$04|k8ZxlDgIe1nDN&Vr=i>Y z4Ybxr#}8~gHdi~YQnJN-jy5EKbDVAlZ>8gVJvs(kStlDuUnOFUzFPJOURQV@f848< zm0S?=6>Auu?Umj>yJJeX%0IAxJ5ka9GVciunG)AU&LtsbYFvKSaElc-p=%8AH&^Qo zsGsVeB!uTvp)Xvg0T4_|SGHQMmp3-)mbdy`RDDh1aOAr0>agXjV@+)D_PKt3MNNO< zs6k^_W+QeyR-F@irB~u4B22ZK6z@{R!KQa@#;Ak-9JFduDa?Z3dEabz>1cT%K~vuW zXOv9PCj9|MTbd<;@r~qY{$uBI$&jH>c+ovLN{1#Eo-HY<{YV9F_i4Ck==5aYZKkCe zGYs1-V@v(aylOz?$&fyQj3^Rag>#;q4k-H8eShy=-vYLJ&Tnz(^pOL_wdPgPdZck) zwj(4)DK78!in|u|W8FhisqWAqtE2+`5dpW)PJTiCartQJ=BS>%X@bKJ5i%c`m2KDa z%OQ)!&~3?;PIUotLC?&l0;>*Y;rg0P%8JF*Ckjnbo;T;;jg+u#2G$X%W5W}m6J>>D z7R7H$+{n>zE{{k-Tz1Lv)+yyZv|OCh;XeP9zomC}-JcHTl-D=*r1~3A9TFafu!xvU zXf;pLz+i=VFtM62DrXTqp!@O?&g@=ENBxtg!);hCnqZ*7Q|qkIO?Npa1=GJ+0@Q+_$XBrKu6l zs-~I1PY>*^uE4Q-iQbq2q8CK{qJg-|XFBVLiY9 zfv3DtXB^kMkqzOa*&O4krv=3D7J6HsNEWA+_^z+YS7Lx@QL8m=yvHU^C!{Q0e;dSk z`zk?E@u=*|-wp1{PuD&bz!#nUN}loDd{E!Mi<7&XN{P(g8lOpUy{`3iV8M?5kzm#o^I$Bba--hI^>B?9w2)q+V zPTx=2m13I^4@D^>^f|76xWD-sok~((%ui^%wOiVfr+oO{Fvh9TZ~@$mW>xW@8w9jY zl?!FUWr`pMw>TGWsT$0LX#Y4c&7k7g5>}<6ULc3C5x$nYwFlAI=gw8oy$$)?rzh>pG`)p5nA>OCO{HxHctbh-bSG z{#!6Lb6fhpo8=i_-TrH76)9Yw{zbvNAjm^r)L$MF5+_j%AIA@rou$F;RLsR4XKd2a zT=Q!@F6txQCq7IQqjJh%sjfp?@`?AkOa~Hsh?2OWGWYc6bS~)Osc+((0E|YARyO48 zFKs6Ar9~K1X|07wShX=8Vxd(d%RE*zwu)6RmR*w#VBesB=F}a$rX*q8H_ob3)gR%| znzP?e7;H1Ycm^y)?NbcVl(LwVc6clJ19xemJ^ZsX2``qlj=fhNzW$ zO|f#|F8wcSZon@_do6bl1~J2rhx2_GJ9RDR;|MlPf+{9|$sG|bHQM)&YUydA^)ycH*LrBQQpd^l z|1tOnxOsa-{C~sM{JZA+2FZVKunq7ahT($Tfv~VJHSe3g!LB%hyIMeyXCe2D)V>I? MFts+RGsedK2XAyR_y7O^ literal 4758 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 kZBU`XFl1#<+mlKD4|9nj{pDw diff --git a/proxy/static/assets/status-running.svg b/proxy/static/assets/status-running.svg index 4cc9602..24236c7 100644 --- a/proxy/static/assets/status-running.svg +++ b/proxy/static/assets/status-running.svg @@ -1,11 +1,7 @@ - - + status-on - Created with Sketch. - - - + diff --git a/proxy/static/assets/status-running@2x.png b/proxy/static/assets/status-running@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..587c288a059582b53ccdae5c7e4b6ac0db287c32 GIT binary patch literal 8109 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 literal 0 HcmV?d00001 diff --git a/proxy/static/assets/status-running@3x.png b/proxy/static/assets/status-running@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..0d356cc921de5d26d142e3088515b4cb105a58ee GIT binary patch literal 12386 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 literal 0 HcmV?d00001 From 36815bd57bcc1e91fcd4dd8d7ddff5b7e1d8850e Mon Sep 17 00:00:00 2001 From: David Fifield Date: Tue, 23 Jul 2019 10:14:37 -0600 Subject: [PATCH 026/994] Popup CSS for dark mode. In Firefox, this requires version 67 for support for prefers-color-scheme media queries. https://hacks.mozilla.org/2019/05/firefox-67-dark-mode-css-webrender/ To force Firefox into dark mode, set ui.systemUsesDarkTheme=1 (and optionally browser.in-content.dark-mode=true, to put pages such as about:addons into dark mode as well) in about:config. You can check if it's working at https://bugzilla.mozilla.org/, which has its own dark-mode styling. Note that this kind of dark mode is *independent* of the "Dark" theme that can be selected in about:addons. Chrome requires version 76 for prefers-color-scheme. You can force it by running with the --force-dark-mode command-line option. --- proxy/static/embed.css | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/proxy/static/embed.css b/proxy/static/embed.css index 156a688..4a58d45 100644 --- a/proxy/static/embed.css +++ b/proxy/static/embed.css @@ -121,3 +121,27 @@ input:checked + .slider:before { -ms-transform: translateX(13px); transform: translateX(13px); } + +/* Dark Mode */ +@media (prefers-color-scheme: dark) { + body { + /* https://design.firefox.com/photon/visuals/color.html#dark-theme */ + color: white; + background-color: #38383d; + } + #statusimg { + background-image: url("assets/status-off-dark.png"); + } + #statusimg.on { + background-image: url("assets/status-on-dark.png"); + } + #statusimg.on.running { + background-image: url("assets/status-running.png"); + } + input:checked + .slider { + background-color: #cc80ff; + } + input:focus + .slider { + box-shadow: 0 0 1px #cc80ff; + } +} From 6ab50e32b9fcc0e201d16b40352ce03287bb4320 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Tue, 6 Aug 2019 23:13:56 -0600 Subject: [PATCH 027/994] Toolbar icons that work in both light and dark modes. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://bugs.torproject.org/31170#comment:8 I chose these icons for the "on" and "off" icons: toolbar_icon_purple.svg → toolbar-on.svg toolbar_icon_grey.svg → toolbar-off.svg I then made toolbar-running.svg by copying toolbar-off.svg and changing the stroke and fill from #4A4A4F to #40E0D0. --- proxy/init-webext.js | 16 ++++++++++++---- proxy/static/assets/toolbar-off-48.png | Bin 0 -> 3657 bytes proxy/static/assets/toolbar-off-96.png | Bin 0 -> 7214 bytes proxy/static/assets/toolbar-off.svg | 14 ++++++++++++++ proxy/static/assets/toolbar-on-48.png | Bin 0 -> 3674 bytes proxy/static/assets/toolbar-on-96.png | Bin 0 -> 7355 bytes proxy/static/assets/toolbar-on.svg | 14 ++++++++++++++ proxy/static/assets/toolbar-running-48.png | Bin 0 -> 3268 bytes proxy/static/assets/toolbar-running-96.png | Bin 0 -> 6617 bytes proxy/static/assets/toolbar-running.svg | 14 ++++++++++++++ proxy/webext/manifest.json | 3 ++- 11 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 proxy/static/assets/toolbar-off-48.png create mode 100644 proxy/static/assets/toolbar-off-96.png create mode 100644 proxy/static/assets/toolbar-off.svg create mode 100644 proxy/static/assets/toolbar-on-48.png create mode 100644 proxy/static/assets/toolbar-on-96.png create mode 100644 proxy/static/assets/toolbar-on.svg create mode 100644 proxy/static/assets/toolbar-running-48.png create mode 100644 proxy/static/assets/toolbar-running-96.png create mode 100644 proxy/static/assets/toolbar-running.svg diff --git a/proxy/init-webext.js b/proxy/init-webext.js index 05a46f6..fc0a841 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -78,13 +78,15 @@ class WebExtUI extends UI { if (this.active) { return chrome.browserAction.setIcon({ path: { - 32: "assets/status-running.png" + 48: "assets/toolbar-running-48.png", + 96: "assets/toolbar-running-96.png" } }); } else { return chrome.browserAction.setIcon({ path: { - 32: "assets/status-on.png" + 48: "assets/toolbar-on-48.png", + 96: "assets/toolbar-on-96.png" } }); } @@ -94,7 +96,8 @@ class WebExtUI extends UI { update(); return chrome.browserAction.setIcon({ path: { - 32: "assets/status-" + (enabled ? "on" : "off") + ".png" + 48: "assets/toolbar-" + (enabled ? "on" : "off") + "-48.png", + 96: "assets/toolbar-" + (enabled ? "on" : "off") + "-96.png" } }); } @@ -142,7 +145,12 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific missingFeature: true }); }); - chrome.browserAction.setIcon({ path: { 32: "assets/status-off.png" } }); + chrome.browserAction.setIcon({ + path: { + 48: "assets/toolbar-off-48.png", + 96: "assets/toolbar-off-96.png" + } + }); return; } diff --git a/proxy/static/assets/toolbar-off-48.png b/proxy/static/assets/toolbar-off-48.png new file mode 100644 index 0000000000000000000000000000000000000000..9a28a6f64fabc0688891d39b4dae5674d4732796 GIT binary patch literal 3657 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 Ak^lez literal 0 HcmV?d00001 diff --git a/proxy/static/assets/toolbar-off-96.png b/proxy/static/assets/toolbar-off-96.png new file mode 100644 index 0000000000000000000000000000000000000000..d022b51507c463254275f88b3929fe9dd756b7bc GIT binary patch literal 7214 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 j9vD4$f8?N5U_GlR$83WvOxr + + + toolbar_icon_grey + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/proxy/static/assets/toolbar-on-48.png b/proxy/static/assets/toolbar-on-48.png new file mode 100644 index 0000000000000000000000000000000000000000..990ab302bf7f96720f6a46070cebfba490f8a11d GIT binary patch literal 3674 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 literal 0 HcmV?d00001 diff --git a/proxy/static/assets/toolbar-on-96.png b/proxy/static/assets/toolbar-on-96.png new file mode 100644 index 0000000000000000000000000000000000000000..d0226b6c6d771650b5abe5ae5ba80cd398155248 GIT binary patch literal 7355 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 MHGN2(if#1&0CMmDegFUf literal 0 HcmV?d00001 diff --git a/proxy/static/assets/toolbar-on.svg b/proxy/static/assets/toolbar-on.svg new file mode 100644 index 0000000..70c079a --- /dev/null +++ b/proxy/static/assets/toolbar-on.svg @@ -0,0 +1,14 @@ + + + + toolbar_icon_purple + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/proxy/static/assets/toolbar-running-48.png b/proxy/static/assets/toolbar-running-48.png new file mode 100644 index 0000000000000000000000000000000000000000..2337e8a33d8d0a76a1b186f155c5aa8550313558 GIT binary patch literal 3268 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 literal 0 HcmV?d00001 diff --git a/proxy/static/assets/toolbar-running-96.png b/proxy/static/assets/toolbar-running-96.png new file mode 100644 index 0000000000000000000000000000000000000000..637e3669c5ec58408df1282149676e85def56253 GIT binary patch literal 6617 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 + + + toolbar_icon_grey + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/proxy/webext/manifest.json b/proxy/webext/manifest.json index 7317c67..af15e93 100644 --- a/proxy/webext/manifest.json +++ b/proxy/webext/manifest.json @@ -10,7 +10,8 @@ }, "browser_action": { "default_icon": { - "32": "assets/status-on.png" + "48": "assets/toolbar-on-48.png", + "96": "assets/toolbar-on-96.png" }, "default_title": "Snowflake", "default_popup": "embed.html" From 251b6a26fac63045a774d2798f0c51a95f9a7b68 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Mon, 19 Aug 2019 11:42:41 -0600 Subject: [PATCH 028/994] Change the "running" color to #68B030. Not so light against a white background. https://bugs.torproject.org/31170#comment:13 --- proxy/static/assets/status-running.png | Bin 3342 -> 3333 bytes proxy/static/assets/status-running.svg | 2 +- proxy/static/assets/status-running@2x.png | Bin 8109 -> 7912 bytes proxy/static/assets/status-running@3x.png | Bin 12386 -> 12441 bytes proxy/static/assets/toolbar-running-48.png | Bin 3268 -> 3660 bytes proxy/static/assets/toolbar-running-96.png | Bin 6617 -> 7385 bytes proxy/static/assets/toolbar-running.svg | 4 ++-- 7 files changed, 3 insertions(+), 3 deletions(-) diff --git a/proxy/static/assets/status-running.png b/proxy/static/assets/status-running.png index 187e91535123d75b1086d3985446862db6e1367a..9dfe9fc2f473cfaec7c70def706c9b58a3d173cb 100644 GIT binary patch delta 3134 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 delta 3210 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 diff --git a/proxy/static/assets/status-running.svg b/proxy/static/assets/status-running.svg index 24236c7..dffb7ea 100644 --- a/proxy/static/assets/status-running.svg +++ b/proxy/static/assets/status-running.svg @@ -2,6 +2,6 @@ status-on - + diff --git a/proxy/static/assets/status-running@2x.png b/proxy/static/assets/status-running@2x.png index 587c288a059582b53ccdae5c7e4b6ac0db287c32..fe1163cb8098af11c45506c51d99ddba7f606ddd 100644 GIT binary patch delta 7745 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 HlYAdB?Ci-7 delta 7990 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 diff --git a/proxy/static/assets/status-running@3x.png b/proxy/static/assets/status-running@3x.png index 0d356cc921de5d26d142e3088515b4cb105a58ee..29f8b90e4786faa4920329005ebeefc49a7e4865 100644 GIT binary patch delta 12308 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 Q|9=7TQr%KY872S!0k~A#=Kufz delta 6486 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 diff --git a/proxy/static/assets/toolbar-running.svg b/proxy/static/assets/toolbar-running.svg index c45943f..5599c87 100644 --- a/proxy/static/assets/toolbar-running.svg +++ b/proxy/static/assets/toolbar-running.svg @@ -7,8 +7,8 @@ - + - \ No newline at end of file + From f9173f61a2c90fbc2979f8f73ab79a1a5bc90eee Mon Sep 17 00:00:00 2001 From: David Fifield Date: Mon, 19 Aug 2019 12:16:06 -0600 Subject: [PATCH 029/994] Make a dark-mode version of the arrowhead icon. The former icon used fill="context-fill", which I believe doesn't work except in Mozilla's own extensions. So I changed that one to fill="black" and made a new one with fill="white". --- proxy/static/assets/arrowhead-right-12.svg | 2 +- proxy/static/assets/arrowhead-right-dark-12.svg | 4 ++++ proxy/static/embed.css | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 proxy/static/assets/arrowhead-right-dark-12.svg diff --git a/proxy/static/assets/arrowhead-right-12.svg b/proxy/static/assets/arrowhead-right-12.svg index 54afc2e..3f7e664 100644 --- a/proxy/static/assets/arrowhead-right-12.svg +++ b/proxy/static/assets/arrowhead-right-12.svg @@ -1,4 +1,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/proxy/static/assets/arrowhead-right-dark-12.svg b/proxy/static/assets/arrowhead-right-dark-12.svg new file mode 100644 index 0000000..6534fd0 --- /dev/null +++ b/proxy/static/assets/arrowhead-right-dark-12.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/proxy/static/embed.css b/proxy/static/embed.css index 4a58d45..860d2b0 100644 --- a/proxy/static/embed.css +++ b/proxy/static/embed.css @@ -144,4 +144,7 @@ input:checked + .slider:before { input:focus + .slider { box-shadow: 0 0 1px #cc80ff; } + .learn:before { + background-image: url('assets/arrowhead-right-dark-12.svg'); + } } From 0ef7c6f1fa6abc5ffeff455be0143efce0adb207 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Mon, 19 Aug 2019 12:44:30 -0600 Subject: [PATCH 030/994] Bug 31453: use only SVG for the status images. --- proxy/static/assets/status-off-dark.png | Bin 3626 -> 0 bytes proxy/static/assets/status-off-dark@2x.png | Bin 8891 -> 0 bytes proxy/static/assets/status-off-dark@3x.png | Bin 13339 -> 0 bytes proxy/static/assets/status-off.png | Bin 3389 -> 0 bytes proxy/static/assets/status-off@2x.png | Bin 8022 -> 0 bytes proxy/static/assets/status-off@3x.png | Bin 12459 -> 0 bytes proxy/static/assets/status-on-dark.png | Bin 3209 -> 0 bytes proxy/static/assets/status-on-dark@2x.png | Bin 7268 -> 0 bytes proxy/static/assets/status-on-dark@3x.png | Bin 11360 -> 0 bytes proxy/static/assets/status-on.png | Bin 3077 -> 0 bytes proxy/static/assets/status-on@2x.png | Bin 7185 -> 0 bytes proxy/static/assets/status-on@3x.png | Bin 10844 -> 0 bytes proxy/static/assets/status-running.png | Bin 3333 -> 0 bytes proxy/static/assets/status-running@2x.png | Bin 7912 -> 0 bytes proxy/static/assets/status-running@3x.png | Bin 12441 -> 0 bytes proxy/static/embed.css | 12 ++++++------ 16 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 proxy/static/assets/status-off-dark.png delete mode 100644 proxy/static/assets/status-off-dark@2x.png delete mode 100644 proxy/static/assets/status-off-dark@3x.png delete mode 100644 proxy/static/assets/status-off.png delete mode 100644 proxy/static/assets/status-off@2x.png delete mode 100644 proxy/static/assets/status-off@3x.png delete mode 100644 proxy/static/assets/status-on-dark.png delete mode 100644 proxy/static/assets/status-on-dark@2x.png delete mode 100644 proxy/static/assets/status-on-dark@3x.png delete mode 100644 proxy/static/assets/status-on.png delete mode 100644 proxy/static/assets/status-on@2x.png delete mode 100644 proxy/static/assets/status-on@3x.png delete mode 100644 proxy/static/assets/status-running.png delete mode 100644 proxy/static/assets/status-running@2x.png delete mode 100644 proxy/static/assets/status-running@3x.png diff --git a/proxy/static/assets/status-off-dark.png b/proxy/static/assets/status-off-dark.png deleted file mode 100644 index 75cf163bd517b497ae5aec926bdeaa5af0e78878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3626 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

    0X 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 LK&?^5Hu`@6*C!t3 diff --git a/proxy/static/assets/status-off@3x.png b/proxy/static/assets/status-off@3x.png deleted file mode 100644 index 4e119b63afe504e7cfb5ecedfea5168d2d4e2334..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12459 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 b?iS>!6d3HCv!W+@v;>%&SQ}Rwl4AY?!nD$1 diff --git a/proxy/static/assets/status-on-dark@2x.png b/proxy/static/assets/status-on-dark@2x.png deleted file mode 100644 index 18efcf5f01150e55a94ebf13ae967d7955727a12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7268 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 diff --git a/proxy/static/assets/status-on-dark@3x.png b/proxy/static/assets/status-on-dark@3x.png deleted file mode 100644 index 026f6beea65ab43addebabe716c8f1d625dcae52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11360 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 N0N&QgrWQ-M@*gMchUowR diff --git a/proxy/static/assets/status-on@2x.png b/proxy/static/assets/status-on@2x.png deleted file mode 100644 index 227ca775b56040b677c633ff14cae206f531a682..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7185 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 BNyY#G diff --git a/proxy/static/assets/status-on@3x.png b/proxy/static/assets/status-on@3x.png deleted file mode 100644 index f1b7f703d12008c3b8c69e61cfaaceb42549188f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10844 zcmZ{~XH*m47cQJo6MB>0JJLe0L3-#&??`U~(nUIIY0a2Pjkp3e;5TvL; z1O%ibRf=Bz@B8U~xU<%rz2?k*_Uu{b%vt++&ZIszf{~LjlK=n!a$Oxw(|gNhMDPOuaftxH^?g^|4ge4e0RVQL006~8 z0DvK&w8upG{sxhYK1}o8-XDK7dSmYmI6%iH`2Y9Zbpj?%tcKlp5{Kv-Y7uV`)6)wx zgN`s10Dus`uBMuK_}7E77p3+VMVA9J%{2uf^s>}+YVNuMBHZn%Ao!J{WR+C)hEir` zg$aQ=y$;Aur>C*_i!*f+FE_~{>2Q4<$!VsdSV9!592!Zhs>9jNJYMd&ySjb1@qM?& z{IJ`ivnM~YCp_9hRb{T`{x~cA-%UhbW}A#y|7=f! z7<}J@n%*x3axDmsBUR=usxG=E{3UP{TNmq6X$fcO3a;ZC&yi1_wUBb392qBu zqeU|{_qU!TgVp7TiScgo@9YF1)n6E7SMOtNak8DP2|VU;d_(GUW=nj$3M$Ps0kQ{W zuK|$QL=b&Ng|C(w;%D%Lp=Z9Fd7g%i z;w}7VZOQ+(oYB#g0dlQmU4+(%aVE|Y!`-ft#!PJV*{QS*q@+EM@%`C8vHdn8n9fiC z>#LbrV`3$RH#}?j-$^hc3Q-UU!w%z-N3#_h;=vD95*v(mGpkv=GUQ1mPX(3fwzXE~ zFW<7C-f1XoEE8JpZqZ6@fOu62ii@!Pv(W>5K~#u;OLdHAvWw}xkOrkK3yN~c( zkAHKJ+&_>>tOeQ^ac5=o`E?1;13q#yI(qyu=W>Hc00;h^yzhBM_{3lr*BPXht&*4yWtmbqeH)( z>)Ek~L|&dW-;4&cm$!hn_?XrBn{+y{?f_4{(RL3T?6A$BQF6oxl`WWFXn`eIf%si2 zS*7@kad$KuL7pNhhI%K5-uiyD)V+Bou}Ttd9}Y|x@!lov$39>7g=?_)@$RBn$F*;zQWwzRI~Q?{dthh$EeGuxf|xxUmSNgtvwR6 zX`O(p8rNl%mF`o$yOHz&J7{M5(>Yr5ppJ%(cJ=A{ zbY?RnmQm?F-3g`j$AmbYN$db1SXSy5jaTlRW5I#~)6(?3uNU;<&QpBGd#;_Ng|-5R z^@q58-((>9tg`TG{opnp-aStn_cJlqW=nZ!n)m|wN}_8^KsMNaw4;n`EzQaCdxvU2B-p zwsrc67I_HR?K4uYx66?yShnOL;`D3-yIj*TgCA2lPMJI*5}<3$*1Om&p%|j@8joZq z-Z2r}O?KUnQgzHRR^n&>G)iLen$G{d+uvEL<%qoQPqnQdY9{Bha30RMYV-=pC7D^* ze@S=DOr&$t>f3*4+1bL6g>Z@nFSk)>8Iou`v$3sEmQ;P8`q$He^4@d-e;?L{V<<(| z6v(^&(@;se)2)ZICYeZOwq@8*+GCS%ynn;o?mZAmNm=>s1kS5@gRrLL+DJx!}O`fg#ECKM>ZlZ#h1!#ea{hobjyzZf`*CK zMUeh*i(&2pBpi0bP~MD4L%# zQAq284|($>rCfG!7~i>0Viy6P)T~u6_(xY+6FuWd(S5{{#f@+0kWqfSRY3&VFMJY@ z8cB<_cj$)pD_x}mI3RQow+y5a{x8TohZTlE>J%(dc&m{C`tw~r;=_@VT_zOYKD+iH zg@UP>Rc4V&lZ4}ZqLix?1E2)3Fo(_>@|?M3A`{A-@M8K^Q52I3 z-6P=|kHyX>5hD1ux|07uAuTDLf00CgbxIDcPyDP);vLCQ3Hu#?tM#wrycMn|PI|GY z#nxT|zGh2KrUR*Wg1Aq#G3$QjrZ;Z+M?zk-ll=3nDn8>POvj(bn+gq2S+hf?;%$Cce{cvxs)H!%tu%7ldd7R6yi>@d*JmpQe9)9UKLca{Cp~z4 zyt_G_2_L8VDiAD-SF|X%2mAWjIunFcVc67*rz(pWMpMH~|2>*)-HuBV`rga=bL8!O zv&NrxCQ445<7qw*H!;UR{hVr+_$gCDRCL~I2d8*muG+*f98(iKlznXkPbfOvU4Os! zTcUIz1{sJP`}AzuRM+o)4BeNkAX8Fy zBb_+Y^r2BA(SlZYmYGFipBADFYXuQvi}V7ADi1oo;3cAf@~XWW!XRGy#N?IvEJ)sJ zcQumT;!zYEv&i>QTb4_fxxx+VAHF%*t*+E!7OvoWw^8}Rg_0SWe<{o?>KdX*u`ei? za*`UORchtAM!jpz{CSzs|J-Vm+>#5anZxE#!Z}|TQO}nJNAO7Mlz#$3#$g!&d;cXH3JFi(DB@($9nFyCXG z`KWMQ-ES)1&!OGt`?9R0MyfZ34`%gbY-Vtgw1olTUhxh(8r$tg|zYa~6DdGasFynYwDOJn=>g6gvRZ6+iQsQrA zX^`b>=xCi-e#&jK|(!9^)h4Zh&Rm62jV_;oSiOsIsG% zbtW?u>S_^?s_Ag;PSLG-p)SIxF!G!*Imr}8YjquCG9tfMlO*_ zjLt0ljyDzYA6V~d8hnx+EEYcxjQs2Ex)9PRs?K-}f=O^x!#TH8i!;;X0f*eYn3v)^=vyO_)p zMn&z9_~vFk)F&TiV#2+`73Cw`U+V1OAMeHdV`ua_$8e*8(4j|BsIo`;CQt4Z6R~yPv4u2+vo}LNy!?D)``0m!tuSnn5~Th(HDx@a zW`fxMomMtq+9kOYN7U2AD>!65V`fOdXLk{+@R=%WiHz_x9LC>w9!6Les1Qd z^-uPI(w0`#r6n%#<}71oiuQk$k+70AJ-A9*_nir}?n(>`4AeQO+X*tL=r4(TgA=9t znCT(&jDu7!h%TLwTX^A4r=hGzu&58`vZ2MBkNJChadPYr=*RyKin2mj9V;44((a|) zL~kHs09Tx&ww!23G)+=EfnsjJss3(EVopzH89^~+u+;lPS&KG*qL{ES(`+f@@Cd+RuESrJ;BVGh>hX#)IAd4LGZrT_m9zC_v6!zb~M$w9~F82 zQy6X!CfCgvhW++d*4xwC-i472KqQo)8~MKdaes( z*Xph5>tFL9E*M9S|5M=(q4A>URy1@mldEPHMBs=u{D9Cl?uPyqbSGT?4AY^!)E?a0?Dy_VS={FtdlN>Eh2VE>GdcJR4pNFcgZsH{| z1RSreVEKc1`@zI*Y+K%+i1Wo;i9!?+0@uq#@kr`ChuxxxNkho812rlVw;l;mw@nr zk(t5!W8s-o$D%TTw^p0{1|Ho>m>{h;9FQMppj&ua z(@-w1Rz|QJYuIZsT|p1=m6PF7cue;KdTfImA_xvr3Mj*u1MQPZDJ`)2dHVN%58&pdDyATFsLa`v8grZ<@qNm&8z;S^4ul&&O;j5tirmZo>t?(V)5ZvGz zYw2X1(mg$)FT^j#AC*Auxqj9+HO~9GwU~uwQT699#Vp2sua{S9G|Xd>LWpmvIu5CX zcZn;F|4hugj>0PMn7dx5b&}AO&AWD*-8{M&K9f#W8HkCK6O5v`BHnlFS0t1JD^j`p zhfY{4RP?1UWEBu@2jM1{bPsy-@=R#Cxlv=AQK-+}x#LS2Pho^h@#t*{t_e#?r5#U) z5QtB^){1E>!AYo3G?N?kF`s(Xa-51*E#IJ_qy9`mJu*{uYk0)NUiVSL)3AXC3wcQ13gI}j)3bjTnVPxXnw)GI zIha^arXFy$lsJC!=)`aMtv6p%-(yBmfB!51SG z!z2ZyW%1)Q;%XA}y5*9@@Zb8oCG+3tMdum;C!Cr866pFcbkUwk-seCfl&`y6iI-!N zeY`{lCFpt(p5?y8UpY3|Yk1dzil{=>pve@*B7Tg zV#Wn?=Jg?p8&0q4e#dbDf{)Aib>l0_9A0B&C7%({4`PETca1y*bFh4bZJsVyCC;M!?+xoLtKakpS)F#^q&eo2 z=~NcyLRPc^x9p^TD$AM++Y4}HhK{xINO%Xx9GpRz}VXy&b8zWZ-I-#(b zMaeGO$W2iZ{ z41c)@DshK8my#Hfd^e`uziT8ii{mmN-)z$`(t60d^-dT0uoqj;xtO437W4 zDO9}+LdM0KSU(I<6>scH4h5=1Hs(EUSVP8 zWcZ!&VnAJkU@VO;l*7!;%M=Y63D*!Oc)?7vDgV)b5laV-CeLb(@6+92s~h)A%zF_- za>&h0}&d#rdMZxE>#REkW!-sa)^NCmn&lUW|wv z>nQ+JWq{=UmkbY;1u(>Q;@OKI#^1%fbbD=zA3M@Ny*?QBs9dorFRo&m51czcXYvs^ zfGK!24~X^DIbdJ^5}!%V)qxUJ&{Rq?gM8iwO=9cfNm;Fh0HnO83_o7mP_BF%;hQI)C<{!!k7^)5@E{d1z>rC@vN=)D5I*ZuJKHN7JXVsoVaKXr)nJlfSW zv$xp9ZY9G9o6*D344=SV5E0s>{h9S|CyVYZ>J8hrHf+((b94Zg-OoF$(ao=|^(O91 zAtxiHq)1kKLwGS4c}s~zzwQe8PIlo7(a~`Agn;6rUd&^nuG~kkzb!q~ies*1L5vjF z?7=3Mi$}Da+oTSU*eeYqX}F6XJfpuyQ@0($$`f;JbDT4l!>Etj-FJl0L26lo*_j_r znn)3EkrjPQMl4x<46ezF!;)u#P8ZHymrA~KT~>dE%%pxxBmA`!dpO?NuAK5cycGxp zmVS$$j2o~??x)q*t)>$&HJOp1RUEUmH*L?kkdm0lk)7?JcUu4u-)*}J>fdKkvO-jq z+`}RI>yN2$kipnss9E^)I7c{moaB=(Iw+}Ht&#t{5ah@HTm$cL&2{|NV-g$Vls|+s z{$^wRjLo6!m1@5trPI)^M^xelETZ3B-zVN%Pw~IS4l*bPt>qvXMLyTKtu=|Il~6pF zNS=Qq%IWH*+eXACoGlg+MbS>?Kv=pBxeCs@SSpB-;fGD^)_eQgqFZa{r|R1eVMOv) z2xFQ}6X_Ec8-~rj!WN$yyJYrfTVl^F67}xHpZYS-Q`QR(dAe{nQQWJ!bcK9f17}|8 z(Z3ekRjVP-!{&B9%$HAVcA~uXc&Z}?L7i~Yq-S^x&dQ@|@)Xwm;jlWJVmX!=80erNPHm_}HD9lfO#BJ~!Mzu=%oh(RoR@;v+gwpP@@@M&H(j4o} z`H03i8~9~qD}zF&&v``Rr!{~qpKSH4;4ec*-q6BRKJoE+Br=$(OtHrM>mm2|Kfhz< z?gmS8UEh~sg~~^UGz|YPeiI#H$KQhAW^r#W)qUBcO8fZBsrdX;Bp-i6ovsq9>e?iu z?!#zI{iAKxyQnrG)8e@{Wr~SY9r0mj8?p2sg|r~Nmu1+r^=ulaCvfr>W8f)C$X|Ow z-icxpA*`T@AE(&Q#}{?gujifFM{M|ECUwxs>BQj}jHXUE#kGaOR8}Q#yeygVP>7e> z3EdU6*OUJdzWvf57N04Mms8etcv?9i3^`3<9veyt|2Xllq6A=uRcVwvc6I(ik7J^ zEOW4+a59~+*Gw%_G`JgIFVMjfbWcPUsimDc70;VWMBT!01_6i1=mYnNpW#F7uFu)v z1cLT_pqEqi|KZECWA)_}uG4pk3FIUn5=n!1a#`#-e6g+>k;ZZS=_S6xl?6|SOu zZkg`B+8c{#9UpE&X}%#Nw&XyV*BZL~UIX)Wm0}*C@6A@k{8`UaRG4O98GV4rV=S4y zl40Ts<;z;{);$#@Le!R)vHT}XP0CUq8J!$jIvB5vHlv|)u+U7CPS_uhs9mrxoVKSg zq2_oVR-Ij4@^KawdHaCO$Jl}Qyd2FDeD+P2j!?VTW_h*oUuXWEL!zCe>_`it0m0DZ zy70!6Jy{$Vv8QPGf)CK*2p)8cx5S`!Y58tQ#3PKdpl^O)3I5YuDC~}_W|H6hy7M5K ziq6dImZPBewmrX5?XC?ts2h z?1OJZHA`hBBuzwH@wW!YpavrrHT40a;|uf6V04OZnnetqdmGb9sHYr>)?P}6-mZ=G zp^Dz}O1)3SVU2KukgQg9D;a5 z=ATUcRfRQr(osKhhGTdH)9<=S@@|TFZ?&+7Mo!%aJBcv_k?%|7T^Q#Y{NWfr`7vWc z3tHN?=Kr$Z_ZWr(X~P2ZKE*Yk`G0ws!m)T#nG!?9b8;~#ctmmT{mbrvze>KP?7tFQ zz9j=0AX=otQvb66#ACn;@=!1EfGx~IO<(S4okN(dWHe?iS>kfp-AY3PX!icBv-MnP zr{lsMRgCR35PHwKZxo zUNz>a3L%@1EN}o^C|)PN-3Id*t+(0EqYo+Zk8a-94nFs+yHkl1(7M_oKn$52TzB9H zKWGokywgdn!!8B&iFCb#L<24}j!(eqb_f&7%&v(I+e@B{#0!S0EV6e!?;Q9eUM~XL z{LcOo-7+$Q!FUeRGriLmvw<$DSB{g)}wFae^u z)t`jTDLsL|rO;3W?7&y#JdfYSN|5er8LT)I|(wu zbYCKKDq1h+4Yvq=(I77Uo1KRQWjD)S?Vjj=?_Eo)I3Qd!!>{bI1#&9NRn+A^+i0Y0 zDp4;sdIPL!C#Z4_n0LpV7C6Ff;JMrJRT*kUZ3rRMNQW z%aqrzTI^!cWtFTXL!fkR@NOF}>0+aihr5xrcRI4OYR?(zA3l3tdtY8vkH}n8J=paC zNiGiAt!dY?Lk*e55O*BA>^?zfD!Sp_NqU00*M7AxZ!4I?f4*T8{!-bb>c)uj6tb`P zYA{g@rR57DIqrcd{mot?E81IcuFw-G&}uB1r7=brZ+ZXaIrkma-r~*#<|jPQfaNzb z2c6!xVtZzv$LncOk4S#^5E+2HxDkd%Rc>)&li87kMUCNm#vY2KO;D&tKQ|*ePsg*V zLXuqKX)f!jCE%@iwUAp)I92%PpzBWHB->^oo_fn6Se<9!Tta_`JE%8LaU3ZJ?&zD& zV^W&~mGNr{9F)X8c^9d^-v`H-g+!M#m708Wm$68>I7d(T$ZCFoi;l2jYVzl9>AC=O z)Lfu3yh+uy2INlT0P+KL(8qBy^FQblcACv)W+R6O_uFT}@~_$U&9$DL2=uUrGhgNA zU=T)mK3Hk+ft^&({Ml{ct1?U{X!Xthsybrx>zRtdwmA#xZuEflfNRs*;^^1Bp}L0C zOhIG(m<05r6`q1tr%YOe;rpPg_v7WXo7}jN__??jX?DRY8LlR#`BgklaGG5O;<>k4 z{6H%wOq!ZSO0on?ugb`BY8mT#LC}rLn@D?c{Akko6{MAw`cMn>2|)|><_caNenp&L zY;wpDbD=CWg7=vY6mVO^zJ0?9NleEPtOA;O5W!8_CyEcYgEGwhNEs~w{`gbz{-|UI ziUw~<;S|i=9}nC)aL5RdA0OPmekU};9Km8m)FrlSr~4+ZjwKZF)9XdRXY1LKhu@Ds z`-XCbl*@pOh~*1hY%hrXd`Zv;l~B%-2EWk7A?L2Hui74bKXR`%or*YN-gnMcKY%fTOpq*wQe$_(Hn|)m z!XR&oU}qTttB--j9O@@NbS@zp#X=u|Hh{0gX3k3c>2}CIl3g`aTE+F-KZV7yrsP!_ zzVkSxTj;veOsc_4=>73%G_SX1O^MvG~I7lQY@Ii|js99#lmq8PsO>Cz?!rILh0m7&4~! z`;2@Ph!}Kj&9ux^xelx}bfy@+S0In|e~95|unf!=9gs1EJXwUz$0O7D`N~PwofcQ@ z3<1IpSc85ys`JR>e}s(v>mjpDHG@*o5s?_)ix%5C`{o^Iq9I%j(=Em5r{C~a-Sq7lcn!f1~Jm;DDhK22M_uryNFPc5|;D*=INI`lgz_oV|N=Mw z9ejXm%bCy%7(6XQJ7Kq@%3c&d$?{VfY-37m^S}_x>ZDI7M;y$>!$}VpB`7#pP%{wZ zLISZ#i{pBBPRFCDp8kZEOrG6IE3venKD_712wsV&R^a+Qbzi%m)qet*JpGYXg-P3xp+JPTYxMkLr zHtt|*sKHngp8OL+u`w!1&=DcMyw3H{T;iMo)C!3s$M}uvG~MQqLQiZF6SQ1VdZ5@5 z-wD*|0q7z;^T&!wn1)9FF=VPz%{L#_GUk_;9{@xVZXC9hDD?&gR~Th}A;i9Qa{2Uj z4P`MgPadrgV>a?0$ z+y;JRLZBexzjHO4$NacyE)u)EdIs2FR}R($$I={oFgO7GmywFR>BcpiyG7E3!XPU# zr%hs@h?I3@^3o&}?QhrkijExa7B;87Br86|UCFM)NcDi_W-MI}yGQt_L+L)tp#V4K zw)Gt?mKY;yDei4tYJ1Ya8$z9~fTvd~-aQ)qM*H?sVkq`MX@MnP?W=#@@|=iOLN=ZI zpD6i4w5&tioI~6dU4z{34L}kip&$y86P1)Smy}eLmQs|I6@|zuLLeiJbin@$;P=eU z+vCOm8_;pl)OQbH`ri}Go_T~kcMfs~Jb(UN%-jEIu&Z-`yV$cJ&yquB=6ffAu9lHz Ji@Fp1{{TBs1J(cl diff --git a/proxy/static/assets/status-running.png b/proxy/static/assets/status-running.png deleted file mode 100644 index 9dfe9fc2f473cfaec7c70def706c9b58a3d173cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3333 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 B6}|uf diff --git a/proxy/static/assets/status-running@2x.png b/proxy/static/assets/status-running@2x.png deleted file mode 100644 index fe1163cb8098af11c45506c51d99ddba7f606ddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7912 zcmZ{JXH-*77j8oDJ@jtqy_e8?ARxVWP?Q=%?_G)@3Ia+AO{9db2%!cL1W`bc_R>O= zjsXEd+T~mK*Zpy4tuxO$Gkecj=b4#3d(TccHPNReVm7rVPI|y07UWw0P)EHz`y&Z_#FTsL=phla|HmD-v9ti z@ZwH0mHQ4NcO!kBd%Q1~+Ffz?Kngdo3;Ms3d#=Fb(Us8qM&e+ou`clj2|c->s4

    ~r==X#Lhm(9zo?CwcdbS7vE&}Z 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 diff --git a/proxy/static/embed.css b/proxy/static/embed.css index 860d2b0..162521a 100644 --- a/proxy/static/embed.css +++ b/proxy/static/embed.css @@ -12,16 +12,16 @@ body { } #statusimg { - background-image: url("assets/status-off.png"); + background-image: url("assets/status-off.svg"); background-repeat: no-repeat; background-position: center center; min-height: 60px; } #statusimg.on { - background-image: url("assets/status-on.png"); + background-image: url("assets/status-on.svg"); } #statusimg.on.running { - background-image: url("assets/status-running.png"); + background-image: url("assets/status-running.svg"); } .b { @@ -130,13 +130,13 @@ input:checked + .slider:before { background-color: #38383d; } #statusimg { - background-image: url("assets/status-off-dark.png"); + background-image: url("assets/status-off-dark.svg"); } #statusimg.on { - background-image: url("assets/status-on-dark.png"); + background-image: url("assets/status-on-dark.svg"); } #statusimg.on.running { - background-image: url("assets/status-running.png"); + background-image: url("assets/status-running.svg"); } input:checked + .slider { background-color: #cc80ff; From 73174b403978a92b0cbc1114111d19054cf134e4 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Fri, 23 Aug 2019 18:31:10 -0600 Subject: [PATCH 031/994] Add ids to more elements in static/index.html. --- proxy/static/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/proxy/static/index.html b/proxy/static/index.html index 5607e07..d193d9c 100644 --- a/proxy/static/index.html +++ b/proxy/static/index.html @@ -25,7 +25,7 @@

    -
    +

    Browser

    If your internet access is censored, you should download @@ -34,7 +34,7 @@

    Tor Browser screenshot

    -
    +

    Extension

    If your internet access is not censored, you should @@ -58,7 +58,7 @@

    -

    REPORTING BUGS

    +

    REPORTING BUGS

    If you encounter problems with Snowflake as a client or a proxy, please consider filing a bug. To do so, you will have to,

    @@ -78,7 +78,7 @@ to let us know how which part of the Snowflake system is experiencing problems.

    -

    EMBED

    +

    EMBED

    It is now possible to embed the Snowflake badge on any website:

    From 3bcd60ad106a6258048179c797089da79ab28214 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Fri, 23 Aug 2019 21:52:51 -0600 Subject: [PATCH 032/994] Update the iframe embed height to match the live example. The live example changed from "200px" to "240px" in 4e5a50f2b54db62991e4ce3313aa9b7f92a1c573. --- proxy/static/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/static/index.html b/proxy/static/index.html index d193d9c..fee61dd 100644 --- a/proxy/static/index.html +++ b/proxy/static/index.html @@ -82,7 +82,7 @@

    It is now possible to embed the Snowflake badge on any website:

    - +

    Which looks like this:

    From 1063ef7b1d98947d5d45744c033e1ad800f9b3d0 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Fri, 23 Aug 2019 21:55:32 -0600 Subject: [PATCH 033/994] Fix certain attributes to be pixel counts, not CSS dimensions. Found these using https://validator.w3.org/. --- proxy/static/index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/proxy/static/index.html b/proxy/static/index.html index fee61dd..9afb56b 100644 --- a/proxy/static/index.html +++ b/proxy/static/index.html @@ -9,7 +9,7 @@
    @@ -45,11 +45,11 @@

    - Install in Firefox
    + Install in Firefox
    Install in Firefox
    - Install in Chrome
    + Install in Chrome
    Install in Chrome
    @@ -82,11 +82,11 @@

    It is now possible to embed the Snowflake badge on any website:

    - +

    Which looks like this:

    - +
    From 49f4a710f8a1a708d9f9945459a41d470a9abec0 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Fri, 23 Aug 2019 21:47:05 -0600 Subject: [PATCH 034/994] Use more semantic HTML. --- proxy/static/index.css | 28 +++++++-------- proxy/static/index.html | 75 +++++++++++++++++++++-------------------- 2 files changed, 53 insertions(+), 50 deletions(-) diff --git a/proxy/static/index.css b/proxy/static/index.css index 9502a37..3816776 100644 --- a/proxy/static/index.css +++ b/proxy/static/index.css @@ -13,13 +13,13 @@ body { color: #212529; } -#header { +header { margin: 0; line-height: 0; padding: 1.3rem 2.6rem; } -#header a { +header a { border-style: none; display: inline-block; line-height: 0; @@ -31,6 +31,10 @@ body { background-color: #FFFFFF; } +section { + margin: 1.3rem 0; +} + h1 { margin: 0; font-size: 2.6rem; @@ -38,25 +42,21 @@ h1 { text-align: center; } -h3 { +h2 { margin: 0; font-size: 2rem; color: #7D4698; } -.clear { - margin: 2.6rem 0; - overflow: auto; +.sidebyside { + display: flex; + flex-flow: row wrap; + align-items: flex-start; } -@media only screen and (min-width: 600px) { - .browser, .extension { - float: left; - width: 50%; - } - .padding { - padding: 0 1.3rem; - } +.sidebyside section { + flex: 1 1 15rem; + padding: 0 1.3rem; } .addon { diff --git a/proxy/static/index.html b/proxy/static/index.html index 9afb56b..8609789 100644 --- a/proxy/static/index.html +++ b/proxy/static/index.html @@ -1,5 +1,5 @@ - + @@ -7,12 +7,12 @@ - -
    + +

    SNOWFLAKE

    Diagram

    @@ -23,19 +23,19 @@ information about how Snowflake works see our documentation wiki.

    -
    +
    -
    -

    Browser

    +
    +

    Browser

    If your internet access is censored, you should download Tor Browser.

    Tor Browser screenshot

    -
    +
    -
    -

    Extension

    +
    +

    Extension

    If your internet access is not censored, you should consider installing the Snowflake extension to help users in censored @@ -52,42 +52,45 @@ Install in Chrome
    Install in Chrome -

    -
    +
    -

    REPORTING BUGS

    - -

    If you encounter problems with Snowflake as a client or a proxy, - please consider filing a bug. To do so, you will have to,

    - -
      -
    1. - Either create an - account or log in - using the shared cypherpunks account with password writecode.
    2. -
    3. File a ticket - using our bug tracker.
    4. -
    +
    +

    REPORTING BUGS

    -

    Please try to be as descriptive as possible with your ticket and if - possible include log messages that will help us reproduce the bug. - Consider adding keywords snowflake-webextension or snowflake-client - to let us know how which part of the Snowflake system is experiencing - problems.

    +

    If you encounter problems with Snowflake as a client or a proxy, + please consider filing a bug. To do so, you will have to,

    -

    EMBED

    +
      +
    1. + Either create an + account or log in + using the shared cypherpunks account with password writecode.
    2. +
    3. File a ticket + using our bug tracker.
    4. +
    -

    It is now possible to embed the Snowflake badge on any website:

    +

    Please try to be as descriptive as possible with your ticket and if + possible include log messages that will help us reproduce the bug. + Consider adding keywords snowflake-webextension or snowflake-client + to let us know how which part of the Snowflake system is experiencing + problems.

    +
    - +
    +

    EMBED

    -

    Which looks like this:

    +

    It is now possible to embed the Snowflake badge on any website:

    - + -
    +

    Which looks like this:

    + + + + + From dff07d6672486e4320a817e735a77f03b5e9023f Mon Sep 17 00:00:00 2001 From: David Fifield Date: Fri, 23 Aug 2019 22:41:27 -0600 Subject: [PATCH 035/994] Use less side padding on small screens. --- proxy/static/index.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/proxy/static/index.css b/proxy/static/index.css index 3816776..6c75800 100644 --- a/proxy/static/index.css +++ b/proxy/static/index.css @@ -31,6 +31,12 @@ header a { background-color: #FFFFFF; } +@media only screen and (max-width: 600px) { + #content { + padding: 2.6rem 1.3rem; + } +} + section { margin: 1.3rem 0; } From 1d6a98a40e6f5b9ed8348f2c7a87b1d5cb9df250 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Fri, 23 Aug 2019 22:41:51 -0600 Subject: [PATCH 036/994] Limit the maximum horizontal content width to 55rem. --- proxy/static/index.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/proxy/static/index.css b/proxy/static/index.css index 6c75800..00602e0 100644 --- a/proxy/static/index.css +++ b/proxy/static/index.css @@ -26,7 +26,8 @@ header a { } #content { - margin: 0 0 2.6rem 0; + max-width: 55rem; + margin: 0 auto 2.6rem auto; padding: 2.6rem 5.2rem; background-color: #FFFFFF; } From 6be7bedd0619c31e352823804f141e393dc21901 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Fri, 23 Aug 2019 22:47:58 -0600 Subject: [PATCH 037/994] Add `--chmod ug=rw,D+x --perms` to rsync commands. This is an attempt to solve mixed-ownership permission issues. https://bugs.torproject.org/31496 --- proxy/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proxy/README.md b/proxy/README.md index dd7ffb6..538366f 100644 --- a/proxy/README.md +++ b/proxy/README.md @@ -50,13 +50,13 @@ npm run build Do a "dry run" rsync with `-n` to check that only expected files are being changed. If you don't understand why a file would be updated, you can add the `-i` option to see the reason. ``` -rsync -n --delete -crv build/ staticiforme:/srv/snowflake.torproject.org/htdocs/ +rsync -n --chmod ug=rw,D+x --perms --delete -crv build/ staticiforme:/srv/snowflake.torproject.org/htdocs/ ``` If it looks good, then repeat the rsync without `-n`. ``` -rsync --delete -crv build/ staticiforme:/srv/snowflake.torproject.org/htdocs/ +rsync --chmod ug=rw,D+x --perms --delete -crv build/ staticiforme:/srv/snowflake.torproject.org/htdocs/ ``` Then run the command to copy the new files to the live web servers: From 8a5941daab398cd7595c5fdfdae4afb2acc271a9 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Fri, 23 Aug 2019 15:45:18 -0400 Subject: [PATCH 038/994] Fix to check running status before closing proxy This fixes a bug reported in #31385. There was an error with the proxy deadlock fix in #31100 where we close proxies regardless of connection status. --- proxy/snowflake.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/proxy/snowflake.js b/proxy/snowflake.js index 7a242db..0edb42c 100644 --- a/proxy/snowflake.js +++ b/proxy/snowflake.js @@ -78,11 +78,13 @@ class Snowflake { if (!this.receiveOffer(pair, desc)) { return pair.active = false; } - //set a timeout for channel creation + //set a timeout for channel creation return setTimeout((() => { - log('proxypair datachannel timed out waiting for open'); - pair.close(); - return pair.active = false; + if (!pair.running) { + log('proxypair datachannel timed out waiting for open'); + pair.close(); + return pair.active = false; + } }), 20000); // 20 second timeout } else { return pair.active = false; From 16a1b69823fd1b699a273c54dfe359d794d60220 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Sat, 24 Aug 2019 19:02:54 -0400 Subject: [PATCH 039/994] Added check for active pair in onopen Because the timeout makes the pair inactive, we should check for this state in onopen before connecting to the client. Updated tests to set the proxy pair to active before testing onopen. Also removed a redundant statement. --- proxy/proxypair.js | 3 +++ proxy/snowflake.js | 2 -- proxy/spec/proxypair.spec.js | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/proxy/proxypair.js b/proxy/proxypair.js index 703ac27..fd5a39a 100644 --- a/proxy/proxypair.js +++ b/proxy/proxypair.js @@ -85,6 +85,9 @@ class ProxyPair { prepareDataChannel(channel) { channel.onopen = () => { log('WebRTC DataChannel opened!'); + if (!this.active) { + return + } this.running = true; snowflake.state = Snowflake.MODE.WEBRTC_READY; snowflake.ui.setActive(true); diff --git a/proxy/snowflake.js b/proxy/snowflake.js index 0edb42c..cdc59fb 100644 --- a/proxy/snowflake.js +++ b/proxy/snowflake.js @@ -86,8 +86,6 @@ class Snowflake { return pair.active = false; } }), 20000); // 20 second timeout - } else { - return pair.active = false; } }, function() { return pair.active = false; diff --git a/proxy/spec/proxypair.spec.js b/proxy/spec/proxypair.spec.js index 3716f2d..f15d6d2 100644 --- a/proxy/spec/proxypair.spec.js +++ b/proxy/spec/proxypair.spec.js @@ -100,6 +100,7 @@ describe('ProxyPair', function() { it('connects to the relay once datachannel opens', function() { spyOn(pp, 'connectRelay'); + pp.active = true; pp.client.onopen(); expect(pp.connectRelay).toHaveBeenCalled(); }); From 4b6871a24e857201357e614657a6df223639e2c8 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Mon, 26 Aug 2019 09:16:47 -0400 Subject: [PATCH 040/994] Version bump for bug #31385 --- proxy/webext/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/webext/manifest.json b/proxy/webext/manifest.json index af15e93..bc93608 100644 --- a/proxy/webext/manifest.json +++ b/proxy/webext/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Snowflake", - "version": "0.0.9", + "version": "0.0.10", "description": "__MSG_appDesc__", "default_locale": "en_US", "background": { From a0dd3d9edcd9421ac82f33960815e5fab7d00d53 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Thu, 22 Aug 2019 10:52:57 -0400 Subject: [PATCH 041/994] Add translation submodule At the head of the snowflakeaddon-messages.json_completed branch --- .gitmodules | 3 +++ proxy/translation | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 proxy/translation diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c217344 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "proxy/translation"] + path = proxy/translation + url = https://git.torproject.org/translation.git diff --git a/proxy/translation b/proxy/translation new file mode 160000 index 0000000..b4ac40c --- /dev/null +++ b/proxy/translation @@ -0,0 +1 @@ +Subproject commit b4ac40c1c71c691864388257c82bdeb881501c9e From 9c20ab398484301a8eb2b45db2aa2320a0b44b40 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Thu, 22 Aug 2019 11:23:15 -0400 Subject: [PATCH 042/994] Copy completed translations over when building --- proxy/make.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/proxy/make.js b/proxy/make.js index 58b7fce..2aa0bf4 100755 --- a/proxy/make.js +++ b/proxy/make.js @@ -37,11 +37,15 @@ var SHARED_FILES = [ ]; var concatJS = function(outDir, init, outFile) { - var files; - files = FILES.concat(`init-${init}.js`); + var files = FILES.concat(`init-${init}.js`); execSync(`cat ${files.join(' ')} > ${outDir}/${outFile}`); }; +var copyTranslations = function(outDir) { + execSync('git submodule update --init -- translation') + execSync(`cp -rf translation/* ${outDir}/_locales/`); +}; + var tasks = new Map(); var task = function(key, msg, func) { @@ -68,16 +72,20 @@ task('test', 'snowflake unit tests', function() { }); task('build', 'build the snowflake proxy', function() { - execSync('rm -rf build'); - execSync('cp -r ' + STATIC + '/ build/'); - concatJS('build', 'badge', 'embed.js'); + const outDir = 'build'; + execSync(`rm -rf ${outDir}`); + execSync(`cp -r ${STATIC}/ ${outDir}/`); + copyTranslations(outDir); + concatJS(outDir, 'badge', 'embed.js'); console.log('Snowflake prepared.'); }); task('webext', 'build the webextension', function() { - execSync('mkdir -p webext'); - execSync(`cp -r ${STATIC}/{${SHARED_FILES.join(',')}} webext/`, { shell: '/bin/bash' }); - concatJS('webext', 'webext', 'snowflake.js'); + const outDir = 'webext'; + execSync(`git clean -f -x -d ${outDir}/`); + execSync(`cp -r ${STATIC}/{${SHARED_FILES.join(',')}} ${outDir}/`, { shell: '/bin/bash' }); + copyTranslations(outDir); + concatJS(outDir, 'webext', 'snowflake.js'); console.log('Webextension prepared.'); }); From 1e33ae830f739a7d61e03ea1626f5e71ba175cbc Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Thu, 15 Aug 2019 17:32:21 -0400 Subject: [PATCH 043/994] Get badge locale from navigator.language --- proxy/init-badge.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/proxy/init-badge.js b/proxy/init-badge.js index b906f62..1acc923 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -82,6 +82,26 @@ function setSnowflakeCookie(val, expires) { document.cookie = `${COOKIE_NAME}=${val}; path=/; expires=${expires};`; } +const defaultLang = 'en_US'; +const availableLangs = new Set([ + 'en_US', +]); + +// Resolve as in, +// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization#Localized_string_selection +function getLang() { + let lang = navigator.language || defaultLang; + lang = lang.replace(/-/g, '_'); + if (availableLangs.has(lang)) { + return lang; + } + lang = lang.split('_')[0]; + if (availableLangs.has(lang)) { + return lang; + } + return defaultLang; +} + var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotifications, query; (function() { @@ -171,8 +191,7 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific }; window.onload = function() { - const lang = 'en_US'; - fetch(`./_locales/${lang}/messages.json`) + fetch(`./_locales/${getLang()}/messages.json`) .then((res) => { if (!res.ok) { return; } return res.json(); From 1c550599b8239161fe8ea2bb8bb2541225770453 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Thu, 22 Aug 2019 12:28:26 -0400 Subject: [PATCH 044/994] Automate generating the list of available languages for the badge Note that getMessage in the badge depends on having a complete set of translations, unlike the webextension, which will fallback to the default for a string. --- proxy/init-badge.js | 5 +---- proxy/make.js | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/proxy/init-badge.js b/proxy/init-badge.js index 1acc923..ed6dee9 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -1,4 +1,4 @@ -/* global Util, Params, Config, UI, Broker, Snowflake, Popup, Parse */ +/* global Util, Params, Config, UI, Broker, Snowflake, Popup, Parse, availableLangs */ /* UI @@ -83,9 +83,6 @@ function setSnowflakeCookie(val, expires) { } const defaultLang = 'en_US'; -const availableLangs = new Set([ - 'en_US', -]); // Resolve as in, // https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization#Localized_string_selection diff --git a/proxy/make.js b/proxy/make.js index 2aa0bf4..928c9ba 100755 --- a/proxy/make.js +++ b/proxy/make.js @@ -2,6 +2,7 @@ /* global require, process */ +var { writeFileSync, readdirSync, statSync } = require('fs'); var { execSync, spawn } = require('child_process'); // All files required. @@ -36,9 +37,11 @@ var SHARED_FILES = [ '_locales', ]; -var concatJS = function(outDir, init, outFile) { +var concatJS = function(outDir, init, outFile, pre) { var files = FILES.concat(`init-${init}.js`); - execSync(`cat ${files.join(' ')} > ${outDir}/${outFile}`); + var outPath = `${outDir}/${outFile}`; + writeFileSync(outPath, pre, 'utf8'); + execSync(`cat ${files.join(' ')} >> ${outPath}`); }; var copyTranslations = function(outDir) { @@ -46,6 +49,20 @@ var copyTranslations = function(outDir) { execSync(`cp -rf translation/* ${outDir}/_locales/`); }; +var availableLangs = function() { + let out = "const availableLangs = new Set([\n"; + let dirs = readdirSync('translation').filter((f) => { + const s = statSync(`translation/${f}`); + return s.isDirectory(); + }); + dirs.push('en_US'); + dirs.sort(); + dirs = dirs.map(d => ` '${d}',`); + out += dirs.join("\n"); + out += "\n]);\n\n"; + return out; +}; + var tasks = new Map(); var task = function(key, msg, func) { @@ -76,7 +93,7 @@ task('build', 'build the snowflake proxy', function() { execSync(`rm -rf ${outDir}`); execSync(`cp -r ${STATIC}/ ${outDir}/`); copyTranslations(outDir); - concatJS(outDir, 'badge', 'embed.js'); + concatJS(outDir, 'badge', 'embed.js', availableLangs()); console.log('Snowflake prepared.'); }); @@ -85,13 +102,13 @@ task('webext', 'build the webextension', function() { execSync(`git clean -f -x -d ${outDir}/`); execSync(`cp -r ${STATIC}/{${SHARED_FILES.join(',')}} ${outDir}/`, { shell: '/bin/bash' }); copyTranslations(outDir); - concatJS(outDir, 'webext', 'snowflake.js'); + concatJS(outDir, 'webext', 'snowflake.js', ''); console.log('Webextension prepared.'); }); task('node', 'build the node binary', function() { execSync('mkdir -p build'); - concatJS('build', 'node', 'snowflake.js'); + concatJS('build', 'node', 'snowflake.js', ''); console.log('Node prepared.'); }); From 9faf8293e6614d559758fcd1fa4a76419f92dd55 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Fri, 23 Aug 2019 21:54:56 -0400 Subject: [PATCH 045/994] Bump proxy/translation to HEAD of snowflakeaddon-messages.json_completed --- proxy/translation | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/translation b/proxy/translation index b4ac40c..75d3b03 160000 --- a/proxy/translation +++ b/proxy/translation @@ -1 +1 @@ -Subproject commit b4ac40c1c71c691864388257c82bdeb881501c9e +Subproject commit 75d3b037adf2041b772265e7c1d4e7b3091bc5b8 From 131cf4f8ea0faaa41774e52f5d81878803f45dbc Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Mon, 26 Aug 2019 12:09:41 -0400 Subject: [PATCH 046/994] Add branch to .gitmodule + bump to bbf11bb This allows you to run `git submodule update --remote` to bump to the latest commit on that branch. --- .gitmodules | 1 + proxy/translation | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index c217344..5f79304 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,4 @@ [submodule "proxy/translation"] path = proxy/translation url = https://git.torproject.org/translation.git + branch = snowflakeaddon-messages.json_completed diff --git a/proxy/translation b/proxy/translation index 75d3b03..bbf11bb 160000 --- a/proxy/translation +++ b/proxy/translation @@ -1 +1 @@ -Subproject commit 75d3b037adf2041b772265e7c1d4e7b3091bc5b8 +Subproject commit bbf11bb0c9f1aca4f6b18c6505645f85e2fa1986 From ea442141db4cf1451870124d9f1cc8916a82853a Mon Sep 17 00:00:00 2001 From: emma peel Date: Fri, 23 Aug 2019 12:15:45 +0000 Subject: [PATCH 047/994] remove exclamation mark. ref https://grammar.yourdictionary.com/punctuation/when/when-to-use-exclamation-marks.html --- proxy/static/_locales/en_US/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proxy/static/_locales/en_US/messages.json b/proxy/static/_locales/en_US/messages.json index f9de9d4..f6ed740 100644 --- a/proxy/static/_locales/en_US/messages.json +++ b/proxy/static/_locales/en_US/messages.json @@ -18,7 +18,7 @@ "message": "Number of users currently connected: $1" }, "popupStatusReady": { - "message": "Your Snowflake is ready to help users circumvent censorship!" + "message": "Your Snowflake is ready to help users circumvent censorship" }, "popupWebRTCOff": { "message": "WebRTC feature is not detected." From 00eb4aadf57b66bc4d53801d4113e8402f31cd6f Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Fri, 23 Aug 2019 10:58:20 -0400 Subject: [PATCH 048/994] Modified broker /debug page to display counts only The broker /debug page was displaying proxy IDs and roundtrip times. As serna pointed out in bug #31460, the proxy IDs can be used to launch a denial of service attack. As the metrics team pointed out on #21315, the round trip time average can be potentially sensitive. This change displays only proxy counts and uses ID lengths to distinguish between standalone proxy-go instances and browser-based snowflake proxies. --- broker/broker.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/broker/broker.go b/broker/broker.go index 259b75a..4a88b94 100644 --- a/broker/broker.go +++ b/broker/broker.go @@ -255,10 +255,17 @@ func proxyAnswers(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) { func debugHandler(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) { s := fmt.Sprintf("current snowflakes available: %d\n", ctx.snowflakes.Len()) + + var browsers, standalones int for _, snowflake := range ctx.idToSnowflake { - s += fmt.Sprintf("\nsnowflake %d: %s", snowflake.index, snowflake.id) + if len(snowflake.id) < 16 { + browsers++ + } else { + standalones++ + } } - s += fmt.Sprintf("\n\nroundtrip avg: %d", ctx.metrics.clientRoundtripEstimate) + s += fmt.Sprintf("\tstandalone proxies: %d", standalones) + s += fmt.Sprintf("\n\tbrowser proxies: %d", browsers) w.Write([]byte(s)) } From 1b14810d341d777fb6cdc3d8b1ad7e55b4989c32 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Tue, 27 Aug 2019 18:19:51 -0400 Subject: [PATCH 049/994] Enforce consistent indentation in js --- proxy/.eslintrc.json | 8 +++++++- proxy/make.js | 4 ++-- proxy/proxypair.js | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/proxy/.eslintrc.json b/proxy/.eslintrc.json index f94ba96..406f9e5 100644 --- a/proxy/.eslintrc.json +++ b/proxy/.eslintrc.json @@ -3,5 +3,11 @@ "browser": true, "es6": true }, - "extends": "eslint:recommended" + "extends": "eslint:recommended", + "rules": { + "indent": ["error", 2, { + "SwitchCase": 1, + "MemberExpression": 0 + }] + } } diff --git a/proxy/make.js b/proxy/make.js index 928c9ba..f8f9d7f 100755 --- a/proxy/make.js +++ b/proxy/make.js @@ -52,8 +52,8 @@ var copyTranslations = function(outDir) { var availableLangs = function() { let out = "const availableLangs = new Set([\n"; let dirs = readdirSync('translation').filter((f) => { - const s = statSync(`translation/${f}`); - return s.isDirectory(); + const s = statSync(`translation/${f}`); + return s.isDirectory(); }); dirs.push('en_US'); dirs.sort(); diff --git a/proxy/proxypair.js b/proxy/proxypair.js index fd5a39a..e5f33ea 100644 --- a/proxy/proxypair.js +++ b/proxy/proxypair.js @@ -86,7 +86,7 @@ class ProxyPair { channel.onopen = () => { log('WebRTC DataChannel opened!'); if (!this.active) { - return + return; } this.running = true; snowflake.state = Snowflake.MODE.WEBRTC_READY; From b29b49fc1c50a15d6b542b88a4de5200d08b8087 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Fri, 23 Aug 2019 13:09:02 -0400 Subject: [PATCH 050/994] Added a folder for documentation Added a folder to hold snowflake specifications. This folder starts with a file containing a partial broker spec that focuses on the metrics reporting spec for CollecTor at the moment. --- doc/broker-spec.txt | 51 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 doc/broker-spec.txt diff --git a/doc/broker-spec.txt b/doc/broker-spec.txt new file mode 100644 index 0000000..2877784 --- /dev/null +++ b/doc/broker-spec.txt @@ -0,0 +1,51 @@ + + + Snowflake broker protocol + +0. Scope and Preliminaries + +The Snowflake broker is used to hand out Snowflake proxies to clients using the Snowflake pluggable transport. There are some similarities to the function of the broker and how BridgeDB hands out Tor bridges. + +This document specifies how the Snowflake broker interacts with other parts of the Tor ecosystem, starting with the metrics CollecTor module and to be expanded upon later. + +1. Metrics Reporting (version 1.0) + +Metrics data from the Snowflake broker can be retrieved by sending an HTTP GET request to https://[Snowflake broker URL]/metrics and consists of the following items: + + "snowflake-stats-end" YYYY-MM-DD HH:MM:SS (NSEC s) NL + [At start, exactly once.] + + YYYY-MM-DD HH:MM:SS defines the end of the included measurement + interval of length NSEC seconds (86400 seconds by default). + + "snowflake-ips" [CC=NUM,CC=NUM,...,CC=NUM] NL + [At most once.] + + List of mappings from two-letter country codes to the number of + unique IP addresses of Snowflake proxies that have polled. Each + country code only appears once. + + "snowflake-ips-total" NUM NL + [At most once.] + + A count of the total number of unique IP addresses of Snowflake + proxies that have polled. + + "snowflake-idle-count" NUM NL + [At most once.] + + A count of the number of times a proxy has polled but received + no client offer, rounded up to the nearest multiple of 8. + + "client-denied-count" NUM NL + [At most once.] + + A count of the number of times a client has requested a proxy + from the broker but no proxies were available, rounded up to + the nearest multiple of 8. + + "client-snowflake-match-count" NUM NL + [At most once.] + + A count of the number of times a client successfully received a + proxy from the broker, rounded up to the nearest multiple of 8. From f3be34a45925aaa5b6a1abc305876049a47cceb1 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Thu, 19 Sep 2019 16:48:14 -0400 Subject: [PATCH 051/994] Removed extraneous log messages Many of our log messages were being used to generate metrics, but are now being aggregated and logged to a separate metrics log file and so we don't need them in the regular logs anymore. This addresses the goal of ticket #30830, to remove unecessary messages and keep broker logs for debugging purposes. --- broker/broker.go | 7 ------- broker/metrics.go | 1 - 2 files changed, 8 deletions(-) diff --git a/broker/broker.go b/broker/broker.go index 4a88b94..12b4965 100644 --- a/broker/broker.go +++ b/broker/broker.go @@ -121,7 +121,6 @@ func (ctx *BrokerContext) Broker() { go func(request *ProxyPoll) { select { case offer := <-snowflake.offerChannel: - log.Println("Passing client offer to snowflake proxy.") request.offerChannel <- offer case <-time.After(time.Second * ProxyTimeout): // This snowflake is no longer available to serve clients. @@ -164,7 +163,6 @@ func proxyPolls(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusBadRequest) return } - log.Println("Received snowflake: ", id) // Log geoip stats remoteIP, _, err := net.SplitHostPort(r.RemoteAddr) @@ -177,12 +175,10 @@ func proxyPolls(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) { // Wait for a client to avail an offer to the snowflake, or timeout if nil. offer := ctx.RequestOffer(id) if nil == offer { - log.Println("Proxy " + id + " did not receive a Client offer.") ctx.metrics.proxyIdleCount++ w.WriteHeader(http.StatusGatewayTimeout) return } - log.Println("Passing client offer to snowflake.") w.Write(offer) } @@ -201,7 +197,6 @@ func clientOffers(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) { } // Immediately fail if there are no snowflakes available. if ctx.snowflakes.Len() <= 0 { - log.Println("Client: No snowflake proxies available.") ctx.metrics.clientDeniedCount++ w.WriteHeader(http.StatusServiceUnavailable) return @@ -215,7 +210,6 @@ func clientOffers(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) { // Wait for the answer to be returned on the channel or timeout. select { case answer := <-snowflake.answerChannel: - log.Println("Client: Retrieving answer") ctx.metrics.clientProxyMatchCount++ w.Write(answer) // Initial tracking of elapsed time. @@ -249,7 +243,6 @@ func proxyAnswers(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) { return } - log.Println("Received answer.") snowflake.answerChannel <- body } diff --git a/broker/metrics.go b/broker/metrics.go index ffa61e2..1b2032a 100644 --- a/broker/metrics.go +++ b/broker/metrics.go @@ -114,7 +114,6 @@ func (m *Metrics) UpdateCountryStats(addr string) { if !ok { country = "??" - log.Println("Unknown geoip") } //update map of unique ips and counts From 3c28380bc651885ea79deab21c20a40b10c4ac7c Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich Date: Fri, 13 Sep 2019 12:26:27 -0400 Subject: [PATCH 052/994] Add locks to safelog The safelog Write function can be called from multiple go routines, and it was not thread safe. These locks in particular allow us to pass the logscrubber's output io.Writer to other libraries, such as pion. --- common/safelog/log.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/common/safelog/log.go b/common/safelog/log.go index 1241676..9148e53 100644 --- a/common/safelog/log.go +++ b/common/safelog/log.go @@ -7,6 +7,7 @@ import ( "bytes" "io" "regexp" + "sync" ) const ipv4Address = `\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}` @@ -30,8 +31,13 @@ var addressRegexp = regexp.MustCompile(addressPattern) type LogScrubber struct { Output io.Writer buffer []byte + + lock sync.Mutex } +func (ls *LogScrubber) Lock() { (*ls).lock.Lock() } +func (ls *LogScrubber) Unlock() { (*ls).lock.Unlock() } + func scrub(b []byte) []byte { scrubbedBytes := b for _, pattern := range scrubberPatterns { @@ -45,6 +51,9 @@ func scrub(b []byte) []byte { } func (ls *LogScrubber) Write(b []byte) (n int, err error) { + ls.Lock() + defer ls.Unlock() + n = len(b) ls.buffer = append(ls.buffer, b...) for { From 19bc6d88584fc8cd67e5545e8d5f659a0782aa23 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Wed, 25 Sep 2019 21:33:57 -0400 Subject: [PATCH 053/994] Move missingFeature to initToggle in webext --- proxy/init-webext.js | 91 ++++++++++++++++++++----------------------- proxy/webext/embed.js | 2 +- 2 files changed, 44 insertions(+), 49 deletions(-) diff --git a/proxy/init-webext.js b/proxy/init-webext.js index fc0a841..b45f2df 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -18,46 +18,52 @@ class WebExtUI extends UI { initStats() { this.stats = [0]; - return setInterval((() => { + setInterval((() => { this.stats.unshift(0); this.stats.splice(24); - return this.postActive(); + this.postActive(); }), 60 * 60 * 1000); } initToggle() { + if (!Util.hasWebRTC()) { + this.missingFeature = 'popupWebRTCOff'; + this.setEnabled(false); + return; + } chrome.storage.local.get("snowflake-enabled", (result) => { + let enabled = this.enabled; if (result['snowflake-enabled'] !== void 0) { - this.enabled = result['snowflake-enabled']; + enabled = result['snowflake-enabled']; } else { log("Toggle state not yet saved"); } - this.setEnabled(this.enabled); + this.setEnabled(enabled); }); } postActive() { - var ref; - return (ref = this.port) != null ? ref.postMessage({ + this.setIcon(); + if (!this.port) { return; } + this.port.postMessage({ active: this.active, total: this.stats.reduce((function(t, c) { return t + c; }), 0), - enabled: this.enabled - }) : void 0; + enabled: this.enabled, + missingFeature: this.missingFeature, + }); } onConnect(port) { this.port = port; port.onDisconnect.addListener(this.onDisconnect); port.onMessage.addListener(this.onMessage); - return this.postActive(); + this.postActive(); } onMessage(m) { - this.enabled = m.enabled; - this.setEnabled(this.enabled); - this.postActive(); + this.setEnabled(m.enabled); chrome.storage.local.set({ "snowflake-enabled": this.enabled }, function() { @@ -75,30 +81,34 @@ class WebExtUI extends UI { this.stats[0] += 1; } this.postActive(); - if (this.active) { - return chrome.browserAction.setIcon({ - path: { - 48: "assets/toolbar-running-48.png", - 96: "assets/toolbar-running-96.png" - } - }); - } else { - return chrome.browserAction.setIcon({ - path: { - 48: "assets/toolbar-on-48.png", - 96: "assets/toolbar-on-96.png" - } - }); - } } setEnabled(enabled) { + this.enabled = enabled; + this.postActive(); update(); - return chrome.browserAction.setIcon({ - path: { - 48: "assets/toolbar-" + (enabled ? "on" : "off") + "-48.png", - 96: "assets/toolbar-" + (enabled ? "on" : "off") + "-96.png" - } + } + + setIcon() { + let path = null; + if (!this.enabled) { + path = { + 48: "assets/toolbar-off-48.png", + 96: "assets/toolbar-off-96.png" + }; + } else if (this.active) { + path = { + 48: "assets/toolbar-running-48.png", + 96: "assets/toolbar-running-96.png" + }; + } else { + path = { + 48: "assets/toolbar-on-48.png", + 96: "assets/toolbar-on-96.png" + }; + } + chrome.browserAction.setIcon({ + path: path, }); } @@ -139,28 +149,13 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific } }; - if (!Util.hasWebRTC()) { - chrome.runtime.onConnect.addListener(function(port) { - return port.postMessage({ - missingFeature: true - }); - }); - chrome.browserAction.setIcon({ - path: { - 48: "assets/toolbar-off-48.png", - 96: "assets/toolbar-off-96.png" - } - }); - return; - } - init = function() { config = new Config; ui = new WebExtUI(); broker = new Broker(config.brokerUrl); snowflake = new Snowflake(config, ui, broker); log('== snowflake proxy =='); - return ui.initToggle(); + ui.initToggle(); }; update = function() { diff --git a/proxy/webext/embed.js b/proxy/webext/embed.js index 7e0dac9..85a3465 100644 --- a/proxy/webext/embed.js +++ b/proxy/webext/embed.js @@ -19,7 +19,7 @@ port.onMessage.addListener((m) => { popup.setEnabled(false); popup.setActive(false); popup.setStatusText(chrome.i18n.getMessage('popupStatusOff')); - popup.setStatusDesc(chrome.i18n.getMessage('popupWebRTCOff'), true); + popup.setStatusDesc(chrome.i18n.getMessage(missingFeature), true); popup.hideButton(); return; } From 685c3bd2626df5c2adc85b79b77624c980e12ef9 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Wed, 25 Sep 2019 22:23:14 -0400 Subject: [PATCH 054/994] Disable the webext if the bridge is unreachable --- proxy/init-webext.js | 34 +++++++++++++++++------ proxy/static/_locales/en_US/messages.json | 3 ++ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/proxy/init-webext.js b/proxy/init-webext.js index b45f2df..dff1208 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -31,14 +31,32 @@ class WebExtUI extends UI { this.setEnabled(false); return; } - chrome.storage.local.get("snowflake-enabled", (result) => { - let enabled = this.enabled; - if (result['snowflake-enabled'] !== void 0) { - enabled = result['snowflake-enabled']; - } else { - log("Toggle state not yet saved"); - } - this.setEnabled(enabled); + (new Promise((resolve, reject) => { + const ws = WS.makeWebsocket(config.relayAddr); + ws.onopen = () => { + resolve(); + ws.close(); + }; + ws.onerror = () => { + this.missingFeature = 'popupBridgeUnreachable'; + this.setEnabled(false); + reject('Could not connect to bridge.'); + ws.close(); + }; + })) + .then(() => { + chrome.storage.local.get("snowflake-enabled", (result) => { + let enabled = this.enabled; + if (result['snowflake-enabled'] !== void 0) { + enabled = result['snowflake-enabled']; + } else { + log("Toggle state not yet saved"); + } + this.setEnabled(enabled); + }); + }) + .catch((e) => { + log(e); }); } diff --git a/proxy/static/_locales/en_US/messages.json b/proxy/static/_locales/en_US/messages.json index f6ed740..1ac15d9 100644 --- a/proxy/static/_locales/en_US/messages.json +++ b/proxy/static/_locales/en_US/messages.json @@ -23,6 +23,9 @@ "popupWebRTCOff": { "message": "WebRTC feature is not detected." }, + "popupBridgeUnreachable": { + "message": "Could not connect to the bridge." + }, "popupDescOn": { "message": "Number of users your Snowflake has helped circumvent censorship in the last 24 hours: $1" }, From aa107862c5300ce52842f92196a3f1d1527b48b4 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Thu, 26 Sep 2019 11:38:58 -0400 Subject: [PATCH 055/994] Move probe to WS class for reuse in the badge --- proxy/init-webext.js | 44 ++++++++++++++++++-------------------------- proxy/websocket.js | 14 ++++++++++++++ 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/proxy/init-webext.js b/proxy/init-webext.js index dff1208..f6c0d0f 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -1,4 +1,4 @@ -/* global Util, chrome, Config, UI, Broker, Snowflake */ +/* global Util, chrome, Config, UI, Broker, Snowflake, WS */ /* eslint no-unused-vars: 0 */ /* @@ -31,33 +31,25 @@ class WebExtUI extends UI { this.setEnabled(false); return; } - (new Promise((resolve, reject) => { - const ws = WS.makeWebsocket(config.relayAddr); - ws.onopen = () => { - resolve(); - ws.close(); - }; - ws.onerror = () => { + WS.probeWebsocket(config.relayAddr) + .then( + () => { + chrome.storage.local.get("snowflake-enabled", (result) => { + let enabled = this.enabled; + if (result['snowflake-enabled'] !== void 0) { + enabled = result['snowflake-enabled']; + } else { + log("Toggle state not yet saved"); + } + this.setEnabled(enabled); + }); + }, + () => { + log('Could not connect to bridge.'); this.missingFeature = 'popupBridgeUnreachable'; this.setEnabled(false); - reject('Could not connect to bridge.'); - ws.close(); - }; - })) - .then(() => { - chrome.storage.local.get("snowflake-enabled", (result) => { - let enabled = this.enabled; - if (result['snowflake-enabled'] !== void 0) { - enabled = result['snowflake-enabled']; - } else { - log("Toggle state not yet saved"); - } - this.setEnabled(enabled); - }); - }) - .catch((e) => { - log(e); - }); + } + ); } postActive() { diff --git a/proxy/websocket.js b/proxy/websocket.js index 410fdc0..da7ba94 100644 --- a/proxy/websocket.js +++ b/proxy/websocket.js @@ -54,6 +54,20 @@ class WS { return ws; } + static probeWebsocket(addr) { + return new Promise((resolve, reject) => { + const ws = WS.makeWebsocket(addr); + ws.onopen = () => { + resolve(); + ws.close(); + }; + ws.onerror = () => { + reject(); + ws.close(); + }; + }); + } + } WS.WSS_ENABLED = true; From d4aa9ad2b3abd73c13e32a847d5a0247b4364e81 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Thu, 26 Sep 2019 12:07:24 -0400 Subject: [PATCH 056/994] Reorder enable checks First check that it is enabled before doing feature testing. This will be useful in the badge so that probing only happens if it is enabled. --- proxy/init-webext.js | 65 ++++++++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/proxy/init-webext.js b/proxy/init-webext.js index f6c0d0f..6789ffd 100644 --- a/proxy/init-webext.js +++ b/proxy/init-webext.js @@ -26,30 +26,40 @@ class WebExtUI extends UI { } initToggle() { - if (!Util.hasWebRTC()) { - this.missingFeature = 'popupWebRTCOff'; - this.setEnabled(false); - return; - } - WS.probeWebsocket(config.relayAddr) - .then( - () => { - chrome.storage.local.get("snowflake-enabled", (result) => { - let enabled = this.enabled; - if (result['snowflake-enabled'] !== void 0) { - enabled = result['snowflake-enabled']; - } else { - log("Toggle state not yet saved"); - } - this.setEnabled(enabled); - }); - }, - () => { - log('Could not connect to bridge.'); - this.missingFeature = 'popupBridgeUnreachable'; - this.setEnabled(false); + // First, check if we have our status stored + (new Promise((resolve) => { + chrome.storage.local.get(["snowflake-enabled"], resolve); + })) + .then((result) => { + let enabled = this.enabled; + if (result['snowflake-enabled'] !== void 0) { + enabled = result['snowflake-enabled']; + } else { + log("Toggle state not yet saved"); } - ); + // If it isn't enabled, stop + if (!enabled) { + this.setEnabled(enabled); + return; + } + // Otherwise, do feature checks + if (!Util.hasWebRTC()) { + this.missingFeature = 'popupWebRTCOff'; + this.setEnabled(false); + return; + } + WS.probeWebsocket(config.relayAddr) + .then( + () => { + this.setEnabled(true); + }, + () => { + log('Could not connect to bridge.'); + this.missingFeature = 'popupBridgeUnreachable'; + this.setEnabled(false); + } + ); + }); } postActive() { @@ -73,11 +83,12 @@ class WebExtUI extends UI { } onMessage(m) { - this.setEnabled(m.enabled); - chrome.storage.local.set({ - "snowflake-enabled": this.enabled - }, function() { + (new Promise((resolve) => { + chrome.storage.local.set({ "snowflake-enabled": m.enabled }, resolve); + })) + .then(() => { log("Stored toggle state"); + this.initToggle(); }); } From 8d81270a9f217a5d0867a5db9237a02c8498eef9 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Thu, 26 Sep 2019 12:31:09 -0400 Subject: [PATCH 057/994] Add bridge probe to badge --- proxy/init-badge.js | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/proxy/init-badge.js b/proxy/init-badge.js index ed6dee9..d8d9113 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -1,4 +1,4 @@ -/* global Util, Params, Config, UI, Broker, Snowflake, Popup, Parse, availableLangs */ +/* global Util, Params, Config, UI, Broker, Snowflake, Popup, Parse, availableLangs, WS */ /* UI @@ -125,27 +125,39 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific update = function() { const cookies = Parse.cookie(document.cookie); - if (cookies[COOKIE_NAME] === '1') { - ui.turnOn(); - dbg('Contacting Broker at ' + broker.url); - log('Starting snowflake'); - snowflake.setRelayAddr(config.relayAddr); - snowflake.beginWebRTC(); - } else { + if (cookies[COOKIE_NAME] !== '1') { ui.turnOff(); snowflake.disable(); log('Currently not active.'); + return; } + + if (!Util.hasWebRTC()) { + ui.missingFeature(messages.getMessage('popupWebRTCOff')); + snowflake.disable(); + return; + } + + WS.probeWebsocket(config.relayAddr) + .then( + () => { + ui.turnOn(); + dbg('Contacting Broker at ' + broker.url); + log('Starting snowflake'); + snowflake.setRelayAddr(config.relayAddr); + snowflake.beginWebRTC(); + }, + () => { + ui.missingFeature(messages.getMessage('popupBridgeUnreachable')); + snowflake.disable(); + log('Could not connect to bridge.'); + } + ); }; init = function() { ui = new BadgeUI(); - if (!Util.hasWebRTC()) { - ui.missingFeature(messages.getMessage('popupWebRTCOff')); - return; - } - if (!Util.hasCookies()) { ui.missingFeature(messages.getMessage('badgeCookiesOff')); return; From a5071ec1d623182eb2d9bc36f033f0990f50ec6f Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Fri, 27 Sep 2019 19:10:12 -0400 Subject: [PATCH 058/994] Add a favicon Trac: 31537 --- proxy/static/assets/favicon.ico | Bin 0 -> 1150 bytes proxy/static/index.html | 1 + 2 files changed, 1 insertion(+) create mode 100644 proxy/static/assets/favicon.ico diff --git a/proxy/static/assets/favicon.ico b/proxy/static/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..48060b1ed06825aa9d58e3589ac208329567abc1 GIT binary patch literal 1150 zcmah|T}YEr7=A*h&TVS=hq1QVrhU_Nmj9E@T&6QLZ8m?%NtBeNjWqf(GZTM8D6k+z z=pq6^BM9ooi%Po42<;{V@giznL{N~57lE^JL^f@QW<&$UbOb`CjZh6qLW35{z+8E3ggUOJ zp^3IED-Rc!(VV!Ord<*xMJ!VgNryg-(NLS^zBR4|l;wFvyxQJDzu(XIGjsIVJv77_ zn5H-Lm@13eh^JL2Q4|s^-$Q~X*^-pX`Hw#OK73|tVI!wrzGYQz1(OmCJQ;0cOKdT- z)H+tC=XvG+3@9?3;+wxNE^+SlERScq`0T|Di=-l^C+*>B-9cV39c7ME$7Cq$aTF%@*S4gYnfq8<#|gjJNJ5+rr9C<5jk?d8wiR;`2EhFey)i6 z7k@0V@7yg`yU(&f%4BcR88(`othCrRt$%I5d}x)S2)}#p!6;W&SNZhKJ2rO=vQ&76 z++DOAEHpqP$_0^N7Cj^P1adp#6Kh=c%=gw2W8Nk_Z2M>L z271@x5u8#uZeQwGHCl Snowflake + From 36eb07a6fc1026b8b96471b72a17f578a2caff35 Mon Sep 17 00:00:00 2001 From: Arlo Breault Date: Fri, 27 Sep 2019 18:50:24 -0400 Subject: [PATCH 059/994] Use a static label for the button Trac: 31685 --- proxy/init-badge.js | 2 -- proxy/static/_locales/en_US/messages.json | 7 ++----- proxy/static/embed.html | 2 +- proxy/static/popup.js | 3 --- proxy/webext/embed.js | 2 -- 5 files changed, 3 insertions(+), 13 deletions(-) diff --git a/proxy/init-badge.js b/proxy/init-badge.js index d8d9113..7684e68 100644 --- a/proxy/init-badge.js +++ b/proxy/init-badge.js @@ -38,7 +38,6 @@ class BadgeUI extends UI { turnOn() { const clients = this.active ? 1 : 0; this.popup.setChecked(true); - this.popup.setToggleText(messages.getMessage('popupTurnOff')); if (clients > 0) { this.popup.setStatusText(messages.getMessage('popupStatusOn', String(clients))); } else { @@ -52,7 +51,6 @@ class BadgeUI extends UI { turnOff() { this.popup.setChecked(false); - this.popup.setToggleText(messages.getMessage('popupTurnOn')); this.popup.setStatusText(messages.getMessage('popupStatusOff')); this.popup.setStatusDesc(''); this.popup.setEnabled(false); diff --git a/proxy/static/_locales/en_US/messages.json b/proxy/static/_locales/en_US/messages.json index 1ac15d9..e83a0fd 100644 --- a/proxy/static/_locales/en_US/messages.json +++ b/proxy/static/_locales/en_US/messages.json @@ -2,11 +2,8 @@ "appDesc": { "message": "Snowflake is a WebRTC pluggable transport for Tor." }, - "popupTurnOn": { - "message": "Turn On" - }, - "popupTurnOff": { - "message": "Turn Off" + "popupEnabled": { + "message": "Enabled" }, "popupLearnMore": { "message": "Learn more" diff --git a/proxy/static/embed.html b/proxy/static/embed.html index eb75c30..96bf90c 100644 --- a/proxy/static/embed.html +++ b/proxy/static/embed.html @@ -15,7 +15,7 @@

    - +