snowflake/README.md

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

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, start a local http server in the proxy/ directory however you wish. For instance:

cd proxy/
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. At this point the tor client should bootstrap to 100%.

More

More documentation on the way.