Pluggable Transport using WebRTC, inspired by Flashproxy.
Find a file
2016-01-21 10:44:14 -08:00
broker broker tracking a heap of snowflakes 2016-01-21 10:44:14 -08:00
client broker tracking a heap of snowflakes 2016-01-21 10:44:14 -08:00
proxy broker tracking a heap of snowflakes 2016-01-21 10:44:14 -08:00
server s/facilitator/broker/ 2016-01-19 21:52:03 -08:00
.gitignore use coffeelint 2016-01-15 08:47:06 -08:00
LICENSE add LICENSE (closes #4) 2016-01-02 11:20:32 -08:00
README.md s/facilitator/broker/ 2016-01-19 21:52:03 -08:00

snowflake-pt

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.

Usage

There are currently two ways to try this:

  • Directly to the go-webrtc server plugin.
  • Through a browser snowflake proxy.

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) 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:

ServerTransportPlugin snowflake exec ./server -http 127.0.0.1:8080
cd server/
go build
tor -f torrc

Edit client/torrc and add "-url http://127.0.0.1:8080" to the end of the 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:

A: tor -f torrc SOCKSPort auto

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.

  • 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.