Documentation
¶
Overview ¶
Package snowflake_proxy provides functionality for creating, starting, and stopping a snowflake proxy.
To run a proxy, you must first create a proxy configuration. Unconfigured fields will be set to the defined defaults.
proxy := snowflake_proxy.SnowflakeProxy{
BrokerURL: "https://snowflake-broker.example.com",
STUNURL: "stun:stun.l.google.com:19302",
// ...
}
You may then start and stop the proxy. Stopping the proxy will close existing connections and the proxy will not poll for more clients.
go func() {
err := proxy.Start()
// handle error
}
// ...
proxy.Stop()
Index ¶
Constants ¶
const ( // NATUnknown represents a NAT type which is unknown. NATUnknown = "unknown" // NATRestricted represents a restricted NAT. NATRestricted = "restricted" // NATUnrestricted represents an unrestricted NAT. NATUnrestricted = "unrestricted" )
const DefaultBrokerURL = "https://snowflake-broker.torproject.net/"
const DefaultNATProbeURL = "https://snowflake-broker.torproject.net:8443/probe"
const DefaultProxyType = "standalone"
const DefaultRelayURL = "wss://snowflake.bamsoftware.com/"
const DefaultSTUNURL = "stun:stun.l.google.com:19302"
Variables ¶
This section is empty.
Functions ¶
Types ¶
type SignalingServer ¶
type SignalingServer struct {
// contains filtered or unexported fields
}
SignalingServer keeps track of the SignalingServer in use by the Snowflake
type SnowflakeProxy ¶
type SnowflakeProxy struct {
// Capacity is the maximum number of clients a Snowflake will serve.
// Proxies with a capacity of 0 will accept an unlimited number of clients.
Capacity uint
// STUNURL is the URL of the STUN server the proxy will use
STUNURL string
// BrokerURL is the URL of the Snowflake broker
BrokerURL string
// KeepLocalAddresses indicates whether local SDP candidates will be sent to the broker
KeepLocalAddresses bool
// RelayURL is the URL of the Snowflake server that all traffic will be relayed to
RelayURL string
// Ephemeral*Port limits the pool of ports that ICE UDP connections can allocate from
EphemeralMinPort uint16
EphemeralMaxPort uint16
// RelayDomainNamePattern is the pattern specify allowed domain name for relay
// If the pattern starts with ^ then an exact match is required.
// The rest of pattern is the suffix of domain name.
// There is no look ahead assertion when matching domain name suffix,
// thus the string prepend the suffix does not need to be empty or ends with a dot.
RelayDomainNamePattern string
AllowNonTLSRelay bool
// NATProbeURL is the URL of the probe service we use for NAT checks
NATProbeURL string
// NATTypeMeasurementInterval is time before NAT type is retested
NATTypeMeasurementInterval time.Duration
// ProxyType is the type reported to the broker, if not provided it "standalone" will be used
ProxyType string
EventDispatcher event.SnowflakeEventDispatcher
// contains filtered or unexported fields
}
SnowflakeProxy is used to configure an embedded Snowflake in another Go application.
func (*SnowflakeProxy) Start ¶
func (sf *SnowflakeProxy) Start() error
Start configures and starts a Snowflake, fully formed and special. Configuration values that are unset will default to their corresponding default values.
func (*SnowflakeProxy) Stop ¶
func (sf *SnowflakeProxy) Stop()
Stop closes all existing connections and shuts down the Snowflake.
Source Files
¶
- pt_event_logger.go
- snowflake.go
- tokens.go
- util.go
- webrtcconn.go