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.
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
Now, 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%.
Snowflake proxy
Otherwise, to connect through the WebRTC proxy in the browser, build with:
cd proxy/
cake build
Then start a local http server in the proxy/build/
however you wish
For instance:
''' cd build/ python -m http.server '''
Open a browser tab to 0.0.0.0:8000/snowflake.html
.
The page will ask you to input a relay.
Input your desired relay address, or input nothing/gibberish which will cause
snowflake to 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.