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. |
||
---|---|---|
client | ||
proxy | ||
server | ||
.gitignore | ||
LICENSE | ||
README.md |
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.