[tor-commits] [snowflake/main] Modify handling of misconfigurations and defaults

cohosh at torproject.org cohosh at torproject.org
Thu Oct 28 14:05:56 UTC 2021


commit 3caa83d84de681b3cd38f4c61cfef2e9bd091176
Author: Cecylia Bocovich <cohosh at torproject.org>
Date:   Tue Oct 26 15:40:32 2021 -0400

    Modify handling of misconfigurations and defaults
---
 proxy/lib/snowflake.go | 34 ++++++++++++++++++++--------------
 proxy/main.go          |  8 ++++++--
 2 files changed, 26 insertions(+), 16 deletions(-)

diff --git a/proxy/lib/snowflake.go b/proxy/lib/snowflake.go
index bd50dc8..734657a 100644
--- a/proxy/lib/snowflake.go
+++ b/proxy/lib/snowflake.go
@@ -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.
 
 	go func() {
-		proxy.Start()
+		err := proxy.Start()
+		// handle error
 	}
 
 	// ...
@@ -46,16 +47,12 @@ import (
 	"github.com/pion/webrtc/v3"
 )
 
-// DefaultBrokerURL is the snowflake broker run at 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"
 
-// DefaultRelayURL is run at wss://snowflake.torproject.net
 const DefaultRelayURL = "wss://snowflake.bamsoftware.com/"
 
-// DefaultSTUNURL is run at stun:stun.stunprotocol.org:3478
 const DefaultSTUNURL = "stun:stun.stunprotocol.org:3478"
 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
 // values that are unset will default to their corresponding default values.
-func (sf *SnowflakeProxy) Start() {
+func (sf *SnowflakeProxy) Start() error {
+	var err error
 
+	log.Println("starting")
 	sf.shutdown = make(chan struct{})
 
-	log.SetFlags(log.LstdFlags | log.LUTC)
-
-	log.Println("starting")
+	// 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)
 	if err != nil {
-		log.Fatal(err)
+		return fmt.Errorf("error configuring broker: %s", err)
 	}
 
 	_, err = url.Parse(sf.STUNURL)
 	if err != nil {
-		log.Fatalf("invalid stun url: %s", err)
+		return fmt.Errorf("invalid stun url: %s", err)
 	}
 	_, err = url.Parse(sf.RelayURL)
 	if err != nil {
-		log.Fatalf("invalid relay url: %s", err)
+		return fmt.Errorf("invalid relay url: %s", err)
 	}
 
 	config = webrtc.Configuration{
@@ -528,13 +533,14 @@ func (sf *SnowflakeProxy) Start() {
 	for ; true; <-ticker.C {
 		select {
 		case <-sf.shutdown:
-			return
+			return nil
 		default:
 			tokens.get()
 			sessionID := genSessionID()
 			sf.runSession(sessionID)
 		}
 	}
+	return nil
 }
 
 // Stop closes all existing connections and shuts down the Snowflake.
diff --git a/proxy/main.go b/proxy/main.go
index aabac51..368589c 100644
--- a/proxy/main.go
+++ b/proxy/main.go
@@ -11,7 +11,7 @@ import (
 )
 
 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")
 	logFilename := flag.String("log", "", "log filename")
 	rawBrokerURL := flag.String("broker", sf.DefaultBrokerURL, "broker URL")
@@ -32,6 +32,7 @@ func main() {
 	var logOutput io.Writer = os.Stderr
 	log.SetFlags(log.LstdFlags | log.LUTC)
 
+	log.SetFlags(log.LstdFlags | log.LUTC)
 	if *logFilename != "" {
 		f, err := os.OpenFile(*logFilename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
 		if err != nil {
@@ -46,5 +47,8 @@ func main() {
 		log.SetOutput(&safelog.LogScrubber{Output: logOutput})
 	}
 
-	proxy.Start()
+	err := proxy.Start()
+	if err != nil {
+		log.Fatal(err)
+	}
 }





More information about the tor-commits mailing list