Pluggable Transport using WebRTC, inspired by Flashproxy.
Find a file
David Fifield e0b36d2f33 Do simple HTTP POST signaling in the client.
This is just enough to be compatible with the HTTP signaling in the
server, and doesn't do domain fronting or anything like that. It's just
an interim replacement for the copy-paste FIFO signaling while we
continue to develop the other pieces that'll be dropped in the middle.
2016-01-18 22:53:22 -08:00
client Do simple HTTP POST signaling in the client. 2016-01-18 22:53:22 -08:00
proxy use coffeelint 2016-01-15 08:47:06 -08:00
server Add an HTTP signaling receiver in the server. 2016-01-18 21:30:31 -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 README update and go fmt 2016-01-14 16:40:28 -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 facilitator.

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 requires copy and pasting between 6 terminals. Using the browser proxy (which will soon be the only way) requires copy and pasting between 3 terminals and a browser tab. Once a signalling facilitator is implemented (issue #1) this will become much simpler to use.

Setting up the client is the same in both cases. Open up three terminals for the client:

cd client/
go build

A: tor -f torrc SOCKSPort auto

B: cat > signal

C: tail -F snowflake.log

-- Via WebRTC Server --

To connect directly to a server plugin, open up another three terminals for the server:

cd server/
go build

D: tor -f torrc

E: cat > signal

F: tail -F snowflake.log

  • Look for the offer in terminal C; copy and paste it into terminal E.
  • Copy and paste the answer in terminal F to terminal B.
  • At this point the tor client should bootstrap to 100%.
-- Via Browser Proxy --

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

More documentation on the way.