diff options
author | Serene Han <keroserene+git@gmail.com> | 2016-01-21 13:54:43 -0800 |
---|---|---|
committer | Serene Han <keroserene+git@gmail.com> | 2016-01-21 14:00:39 -0800 |
commit | c0b6383f26d2b721ce5896a4c8a52646ea89ba5e (patch) | |
tree | 93879610172ec430fa936f1f1dedd43957ffc1c8 /README.md | |
parent | c9013b2f80aeda0aa6e86d984f1d7e9b89aabd46 (diff) | |
download | snowflake-c0b6383f26d2b721ce5896a4c8a52646ea89ba5e.tar.gz snowflake-c0b6383f26d2b721ce5896a4c8a52646ea89ba5e.zip |
Automatic 100% bootstrap using meek-signaling broker works.
Minimum viable webrtc pt now exists.
(close #1)
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 113 |
1 files changed, 65 insertions, 48 deletions
@@ -4,25 +4,78 @@ A Pluggable Transport using WebRTC ### Status -- Successfully bootstraps over WebRTC, both directly to a server plugin, - as well as through the browser which proxies WebRTC to websocket. -- Needs work on signaling with the broker. +- Successful automatic bootstraps with a WebRTC transport, + using HTTP signaling (with optional domain fronting) speaking to + a multitude of volunteer "snowflakes". +- Needs a lot more work though. ### Usage -There are currently two ways to try this: -- Directly to the go-webrtc server plugin. -- Through a browser snowflake proxy. + + +``` +cd client/ +go build +tor -f torrc +``` + +And it will start the client plugin with the following `torrc` +options: +``` +ClientTransportPlugin snowflake exec ./client \ +--url https://snowflake-reg.appspot.com/ \ +--front www.google.com +``` + +It will speak to the Broker, get matched with a "snowflake" browser proxy, +and negotiate a WebRTC PeerConnection. +After that, it should bootstrap to 100%. + +To see logs, do `tail -F snowflake.log` in a second terminal. + +You can modify the `torrc` to use your own broker, +or remove the options entirely which will default to the old copy paste +method (see `torrc-manual`): + +``` +ClientTransportPlugin snowflake exec ./client --meek +``` + +Also, it is possible to connect directly to the go-webrtc server plugin +(skipping all the browser snowflake / broker stuff - see appendix) + +### Building a Snowflake Proxy + +This will only work if there are any browser snowflakes running at all. +To run your own, first make sure coffeescript is installed. +Then, build with: + +``` +cd proxy/ +cake build +``` +(Type `cake` by itself to see possible commands) + +Then, start a local http server in the `proxy/build/` in any way you like. +For instance: + +``` +cd build/ +python -m http.server +``` + +Open a browser tab to `0.0.0.0:8000/snowflake.html`. + +TODO: Turn the snowflake proxy into a more deployable badge. + +### Appendix + +##### -- Testing directly via WebRTC Server -- Using the server plugin uses an HTTP server that simulates the interaction that a client would have with a broker. Using the browser proxy (which will soon be the only way) requires copy and pasting between 3 terminals and a browser tab. -Once a signaling broker is implemented -([issue #1](https://github.com/keroserene/snowflake/issues/1)) -this will become much simpler to use. - -##### -- Via WebRTC Server -- Edit server/torrc and add "-http 127.0.0.1:8080" to the end of the ServerTransportPlugin line: @@ -42,14 +95,6 @@ ClientTransportPlugin line: ClientTransportPlugin snowflake exec ./client -url http://127.0.0.1:8080/ ``` -``` -cd client/ -go build -tor -f torrc -``` - -At this point the tor client should bootstrap to 100%. - ##### -- Via Browser Proxy -- Open up three terminals for the **client:** @@ -60,39 +105,11 @@ B: `cat > signal` C: `tail -F snowflake.log` - -To connect through the WebRTC browser proxy, first make sure -coffeescript is installed. Then, build with: -``` -cd proxy/ -cake build -``` - -Then start a local http server in the `proxy/build/` in any way you like. -For instance: - -``` -cd build/ -python -m http.server -``` - -Open a browser tab to `0.0.0.0:8000/snowflake.html`. -Input your desired relay address, or nothing/gibberish, which will cause -snowflake to just use a default relay. +Then, in the browser proxy: - Look for the offer in terminal C; copy and paste it into the browser. - Copy and paste the answer generated in the browser back to terminal B. - Once WebRTC successfully connects, the browser terminal should turn green. Shortly after, the tor client should bootstrap to 100%. - -### More - -To try using the Meek signaling channel (which will soon be fully ready), -add the `--meek` flag like so: - -``` -ClientTransportPlugin snowflake exec ./client --meek -``` - More documentation on the way. |