commit b7df69fa55629cfc3528d9daaea4e7e1dd7de005 Author: Hooman hoomanm@princeton.edu Date: Thu Jun 29 13:51:55 2017 -0700
Make Broker run standalone --- broker/broker.go | 41 +++++++++++++++++++++++++++++++++++++++-- broker/metrics.go | 2 +- broker/snowflake-broker_test.go | 2 +- broker/snowflake-heap.go | 2 +- 4 files changed, 42 insertions(+), 5 deletions(-)
diff --git a/broker/broker.go b/broker/broker.go index 1673601..8550400 100644 --- a/broker/broker.go +++ b/broker/broker.go @@ -3,7 +3,7 @@ Broker acts as the HTTP signaling channel. It matches clients and snowflake proxies by passing corresponding SessionDescriptions in order to negotiate a WebRTC connection. */ -package snowflake_broker +package main
import ( "container/heap" @@ -13,6 +13,8 @@ import ( "net" "net/http" "time" + "sync" + "os" )
const ( @@ -226,7 +228,19 @@ func ipHandler(w http.ResponseWriter, r *http.Request) { w.Write([]byte(remoteAddr)) }
-func init() { +func main() { + + if len(os.Args) < 3 { + log.Println("Usage: broker cert cert_key") + os.Exit(1) + } + + cert := os.Args[1] + log.Println("Using cert file:", cert) + cert_key := os.Args[2] + log.Println("Using cert key file: ", cert_key) + + ctx := NewBrokerContext()
go ctx.Broker() @@ -238,4 +252,27 @@ func init() { http.Handle("/client", SnowflakeHandler{ctx, clientOffers}) http.Handle("/answer", SnowflakeHandler{ctx, proxyAnswers}) http.Handle("/debug", SnowflakeHandler{ctx, debugHandler}) + + var wg sync.WaitGroup + wg.Add(2) + + //Run HTTP server + go func(){ + defer wg.Done() + err := http.ListenAndServe(":80", nil) + if err != nil { + log.Println("ListenAndServe: ", err) + } + }() + + //Run HTTPS server + go func(){ + defer wg.Done() + err := http.ListenAndServeTLS(":443", cert, cert_key, nil) + if err != nil { + log.Println("ListenAndServeTLS: ", err) + } + }() + + wg.Wait() } diff --git a/broker/metrics.go b/broker/metrics.go index f64d1cc..002fdfe 100644 --- a/broker/metrics.go +++ b/broker/metrics.go @@ -1,4 +1,4 @@ -package snowflake_broker +package main
import ( // "golang.org/x/net/internal/timeseries" diff --git a/broker/snowflake-broker_test.go b/broker/snowflake-broker_test.go index 44940a3..109d7df 100644 --- a/broker/snowflake-broker_test.go +++ b/broker/snowflake-broker_test.go @@ -1,4 +1,4 @@ -package snowflake_broker +package main
import ( "bytes" diff --git a/broker/snowflake-heap.go b/broker/snowflake-heap.go index cf249fe..419956f 100644 --- a/broker/snowflake-heap.go +++ b/broker/snowflake-heap.go @@ -2,7 +2,7 @@ Keeping track of pending available snowflake proxies. */
-package snowflake_broker +package main
/* The Snowflake struct contains a single interaction
tor-commits@lists.torproject.org