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