snowflake/proxy
Cecylia Bocovich c4ae64905b Redo protocol for proxy--broker messages
Switch to containing all communication between the proxy and the broker
in the HTTP response body. This will make things easier if we ever use
something other than HTTP communicate between different actors in the
snowflake system.

Other changes to the protocol are as follows:
- requests are accompanied by a version number so the broker can be
backwards compatable if desired in the future
- all responses are 200 OK unless the request was badly formatted
2019-11-13 10:54:48 -05:00
..
spec Removed "janky" snowflake state machine 2019-10-31 11:59:13 -04:00
static Include language name with along with code 2019-10-16 12:32:45 -04:00
translation@bbf11bb0c9 Redo protocol for proxy--broker messages 2019-11-13 10:54:48 -05:00
webext bump version to 0.0.13 2019-10-28 10:55:51 -04:00
.eslintignore Cleanup lints identified by eslint 2019-07-10 10:58:29 +02:00
.eslintrc.json Enforce consistent indentation in js 2019-08-27 18:19:51 -04:00
broker.js Moved function comments to their definitions 2019-10-31 11:59:13 -04:00
config.js Changed variable name for multiplexed clients 2019-10-31 12:08:43 -04:00
init-badge.js Removed "janky" snowflake state machine 2019-10-31 11:59:13 -04:00
init-node.js Cleanup lints identified by eslint 2019-07-10 10:58:29 +02:00
init-testing.js Removed "janky" snowflake state machine 2019-10-31 11:59:13 -04:00
init-webext.js Removed "janky" snowflake state machine 2019-10-31 11:59:13 -04:00
make.js Include language name with along with code 2019-10-16 12:32:45 -04:00
package.json Include language name with along with code 2019-10-16 12:32:45 -04:00
proxypair.js Moved function comments to their definitions 2019-10-31 11:59:13 -04:00
README.md Add --chown=:snowflake to rsync commands. 2019-10-11 10:37:06 -06:00
shims.js Bug 31126: Use URLSearchParams instead of Query.parse. 2019-07-18 18:29:59 -06:00
snowflake.js Changed variable name for multiplexed clients 2019-10-31 12:08:43 -04:00
ui.js Move more UI code to use specific sites 2019-07-27 12:01:03 -04:00
util.js Remove Util.mightBeTBB 2019-07-27 12:01:03 -04:00
websocket.js Move probe to WS class for reuse in the badge 2019-09-30 18:42:57 -04:00

This is the browser proxy component of Snowflake.

Embedding

See https://snowflake.torproject.org/ for more info:

<iframe src="https://snowflake.torproject.org/embed.html" width="88" height="16" frameborder="0" scrolling="no"></iframe>

Building

npm run build

Testing

Unit testing with Jasmine are available with:

npm install
npm test

To run locally, start an http server in build/ and navigate to /embed.html.

Preparing to deploy

Background information:

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 <your user name>
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 --chown=:snowflake --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 --chown=:snowflake --chmod ug=rw,D+x --perms --delete -crv build/ staticiforme:/srv/snowflake.torproject.org/htdocs/

You can ignore errors of the form rsync: failed to set permissions on "<dirname>/": Operation not permitted (1).

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, snowflake uses the default relay snowflake.freehaven.net:443 and uses automatic signaling with the default broker at https://snowflake-broker.freehaven.net/.