Modify handling of misconfigurations and defaults

This commit is contained in:
Cecylia Bocovich 2021-10-26 15:40:32 -04:00
parent 0e8d41ba4b
commit 3caa83d84d
2 changed files with 27 additions and 17 deletions

View file

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

View file

@ -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)
}
} }