mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
Modify handling of misconfigurations and defaults
This commit is contained in:
parent
0e8d41ba4b
commit
3caa83d84d
2 changed files with 27 additions and 17 deletions
|
@ -15,7 +15,8 @@ You may then start and stop the proxy. Stopping the proxy will close existing co
|
||||||
the proxy will not poll for more clients.
|
the proxy will not poll for more clients.
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
proxy.Start()
|
err := proxy.Start()
|
||||||
|
// handle error
|
||||||
}
|
}
|
||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
@ -46,16 +47,12 @@ import (
|
||||||
"github.com/pion/webrtc/v3"
|
"github.com/pion/webrtc/v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DefaultBrokerURL is the snowflake broker run at https://snowflake-broker.torproject.net
|
|
||||||
const DefaultBrokerURL = "https://snowflake-broker.torproject.net/"
|
const DefaultBrokerURL = "https://snowflake-broker.torproject.net/"
|
||||||
|
|
||||||
// DefaultProbeURL is run at https://snowflake-broker.torproject.net:8443/probe
|
|
||||||
const DefaultProbeURL = "https://snowflake-broker.torproject.net:8443/probe"
|
const DefaultProbeURL = "https://snowflake-broker.torproject.net:8443/probe"
|
||||||
|
|
||||||
// DefaultRelayURL is run at wss://snowflake.torproject.net
|
|
||||||
const DefaultRelayURL = "wss://snowflake.bamsoftware.com/"
|
const DefaultRelayURL = "wss://snowflake.bamsoftware.com/"
|
||||||
|
|
||||||
// DefaultSTUNURL is run at stun:stun.stunprotocol.org:3478
|
|
||||||
const DefaultSTUNURL = "stun:stun.stunprotocol.org:3478"
|
const DefaultSTUNURL = "stun:stun.stunprotocol.org:3478"
|
||||||
const pollInterval = 5 * time.Second
|
const pollInterval = 5 * time.Second
|
||||||
|
|
||||||
|
@ -486,27 +483,35 @@ func (sf *SnowflakeProxy) runSession(sid string) {
|
||||||
|
|
||||||
// Start configures and starts a Snowflake, fully formed and special. Configuration
|
// Start configures and starts a Snowflake, fully formed and special. Configuration
|
||||||
// values that are unset will default to their corresponding default values.
|
// values that are unset will default to their corresponding default values.
|
||||||
func (sf *SnowflakeProxy) Start() {
|
func (sf *SnowflakeProxy) Start() error {
|
||||||
|
var err error
|
||||||
sf.shutdown = make(chan struct{})
|
|
||||||
|
|
||||||
log.SetFlags(log.LstdFlags | log.LUTC)
|
|
||||||
|
|
||||||
log.Println("starting")
|
log.Println("starting")
|
||||||
|
sf.shutdown = make(chan struct{})
|
||||||
|
|
||||||
|
// blank configurations revert to default
|
||||||
|
if sf.BrokerURL == "" {
|
||||||
|
sf.BrokerURL = DefaultBrokerURL
|
||||||
|
}
|
||||||
|
if sf.RelayURL == "" {
|
||||||
|
sf.RelayURL = DefaultRelayURL
|
||||||
|
}
|
||||||
|
if sf.STUNURL == "" {
|
||||||
|
sf.STUNURL = DefaultSTUNURL
|
||||||
|
}
|
||||||
|
|
||||||
var err error
|
|
||||||
broker, err = newSignalingServer(sf.BrokerURL, sf.KeepLocalAddresses)
|
broker, err = newSignalingServer(sf.BrokerURL, sf.KeepLocalAddresses)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
return fmt.Errorf("error configuring broker: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = url.Parse(sf.STUNURL)
|
_, err = url.Parse(sf.STUNURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("invalid stun url: %s", err)
|
return fmt.Errorf("invalid stun url: %s", err)
|
||||||
}
|
}
|
||||||
_, err = url.Parse(sf.RelayURL)
|
_, err = url.Parse(sf.RelayURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("invalid relay url: %s", err)
|
return fmt.Errorf("invalid relay url: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
config = webrtc.Configuration{
|
config = webrtc.Configuration{
|
||||||
|
@ -528,13 +533,14 @@ func (sf *SnowflakeProxy) Start() {
|
||||||
for ; true; <-ticker.C {
|
for ; true; <-ticker.C {
|
||||||
select {
|
select {
|
||||||
case <-sf.shutdown:
|
case <-sf.shutdown:
|
||||||
return
|
return nil
|
||||||
default:
|
default:
|
||||||
tokens.get()
|
tokens.get()
|
||||||
sessionID := genSessionID()
|
sessionID := genSessionID()
|
||||||
sf.runSession(sessionID)
|
sf.runSession(sessionID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop closes all existing connections and shuts down the Snowflake.
|
// Stop closes all existing connections and shuts down the Snowflake.
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
capacity := flag.Int("capacity", 10, "maximum concurrent clients")
|
capacity := flag.Uint("capacity", 0, "maximum concurrent clients")
|
||||||
stunURL := flag.String("stun", sf.DefaultSTUNURL, "broker URL")
|
stunURL := flag.String("stun", sf.DefaultSTUNURL, "broker URL")
|
||||||
logFilename := flag.String("log", "", "log filename")
|
logFilename := flag.String("log", "", "log filename")
|
||||||
rawBrokerURL := flag.String("broker", sf.DefaultBrokerURL, "broker URL")
|
rawBrokerURL := flag.String("broker", sf.DefaultBrokerURL, "broker URL")
|
||||||
|
@ -32,6 +32,7 @@ func main() {
|
||||||
var logOutput io.Writer = os.Stderr
|
var logOutput io.Writer = os.Stderr
|
||||||
log.SetFlags(log.LstdFlags | log.LUTC)
|
log.SetFlags(log.LstdFlags | log.LUTC)
|
||||||
|
|
||||||
|
log.SetFlags(log.LstdFlags | log.LUTC)
|
||||||
if *logFilename != "" {
|
if *logFilename != "" {
|
||||||
f, err := os.OpenFile(*logFilename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
|
f, err := os.OpenFile(*logFilename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -46,5 +47,8 @@ func main() {
|
||||||
log.SetOutput(&safelog.LogScrubber{Output: logOutput})
|
log.SetOutput(&safelog.LogScrubber{Output: logOutput})
|
||||||
}
|
}
|
||||||
|
|
||||||
proxy.Start()
|
err := proxy.Start()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue