2.3 KiB
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 uses an HTTP server that simulates the interaction that a client would have with a facilitator. 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.
-- 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.