snowflake/proxy
Shelikhoo 04bc471a63
Support recurring NAT Type measurement
currentNATType will from now on be guarded by currentNATTypeAccess for any access.

NAT Type update rule is flattened into state transfer lookup table to assist reading.
2021-11-12 10:48:14 +00:00
..
lib Support recurring NAT Type measurement 2021-11-12 10:48:14 +00:00
main.go Bump snowflake library imports and go.mod to v2 2021-11-11 10:14:49 -05:00
README.md Unify broker/bridge domains to torproject.net 2021-10-14 11:14:22 -04:00

Table of Contents

This is a standalone (not browser-based) version of the Snowflake proxy. For browser-based versions of the Snowflake proxy, see https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake-webext.

Dependencies

  • Go 1.13+
  • We use the pion/webrtc library for WebRTC communication with Snowflake proxies. Note: running go get will fetch this dependency automatically during the build process.

Building the standalone Snowflake proxy

To build the Snowflake proxy, make sure you are in the proxy/ directory, and then run:

go get
go build

Running a standalone Snowflake proxy

The Snowflake proxy can be run with the following options:

Usage of ./proxy:
  -broker string
        broker URL (default "https://snowflake-broker.torproject.net/")
  -capacity uint
        maximum concurrent clients
  -keep-local-addresses
        keep local LAN address ICE candidates
  -log string
        log filename
  -relay string
        websocket relay URL (default "wss://snowflake.torproject.net/")
  -stun string
        stun URL (default "stun:stun.stunprotocol.org:3478")
  -unsafe-logging
        prevent logs from being scrubbed

For more information on how to run a Snowflake proxy in deployment, see our community documentation.