mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
87 lines
2.1 KiB
Markdown
87 lines
2.1 KiB
Markdown
# 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](https://github.com/keroserene/snowflake/issues/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.
|