Comment package and minor changes exports

This commit is contained in:
Cecylia Bocovich 2021-10-26 15:10:59 -04:00
parent b2edf948e2
commit 84e8a183e5
7 changed files with 48 additions and 24 deletions

View file

@ -1,4 +1,4 @@
package snowflake package snowflake_proxy
import ( import (
"bytes" "bytes"

View file

@ -1,4 +1,27 @@
package snowflake /*
Package snowflake_proxy provides functionality for creating, starting, and stopping a snowflake
proxy.
To run a proxy, you must first create a proxy configuration
proxy := snowflake_proxy.SnowflakeProxy{
BrokerURL: "https://snowflake-broker.example.com",
STUNURL: "stun:stun.stunprotocol.org:3478",
// ...
}
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() {
proxy.Start()
}
// ...
proxy.Stop()
*/
package snowflake_proxy
import ( import (
"bytes" "bytes"
@ -76,11 +99,10 @@ var (
// Snowflake in another Go application. // Snowflake in another Go application.
type SnowflakeProxy struct { type SnowflakeProxy struct {
Capacity uint Capacity uint
StunURL string STUNURL string
RawBrokerURL string BrokerURL string
KeepLocalAddresses bool KeepLocalAddresses bool
RelayURL string RelayURL string
LogOutput io.Writer
shutdown chan struct{} shutdown chan struct{}
} }
@ -475,12 +497,12 @@ func (sf *SnowflakeProxy) Start() {
log.Println("starting") log.Println("starting")
var err error var err error
broker, err = newSignalingServer(sf.RawBrokerURL, sf.KeepLocalAddresses) broker, err = newSignalingServer(sf.BrokerURL, sf.KeepLocalAddresses)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
_, err = url.Parse(sf.StunURL) _, err = url.Parse(sf.STUNURL)
if err != nil { if err != nil {
log.Fatalf("invalid stun url: %s", err) log.Fatalf("invalid stun url: %s", err)
} }
@ -492,7 +514,7 @@ func (sf *SnowflakeProxy) Start() {
config = webrtc.Configuration{ config = webrtc.Configuration{
ICEServers: []webrtc.ICEServer{ ICEServers: []webrtc.ICEServer{
{ {
URLs: []string{sf.StunURL}, URLs: []string{sf.STUNURL},
}, },
}, },
} }

View file

@ -1,4 +1,4 @@
package snowflake package snowflake_proxy
import ( import (
"sync/atomic" "sync/atomic"

View file

@ -1,4 +1,4 @@
package snowflake package snowflake_proxy
import ( import (
"testing" "testing"

View file

@ -1,4 +1,4 @@
package snowflake package snowflake_proxy
import ( import (
"fmt" "fmt"

View file

@ -1,4 +1,4 @@
package snowflake package snowflake_proxy
import ( import (
"fmt" "fmt"

View file

@ -7,42 +7,44 @@ import (
"os" "os"
"git.torproject.org/pluggable-transports/snowflake.git/common/safelog" "git.torproject.org/pluggable-transports/snowflake.git/common/safelog"
"git.torproject.org/pluggable-transports/snowflake.git/proxy/lib" sf "git.torproject.org/pluggable-transports/snowflake.git/proxy/lib"
) )
func main() { func main() {
capacity := flag.Int("capacity", 10, "maximum concurrent clients") capacity := flag.Int("capacity", 10, "maximum concurrent clients")
stunURL := flag.String("stun", snowflake.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", snowflake.DefaultBrokerURL, "broker URL") rawBrokerURL := flag.String("broker", sf.DefaultBrokerURL, "broker URL")
unsafeLogging := flag.Bool("unsafe-logging", false, "prevent logs from being scrubbed") unsafeLogging := flag.Bool("unsafe-logging", false, "prevent logs from being scrubbed")
keepLocalAddresses := flag.Bool("keep-local-addresses", false, "keep local LAN address ICE candidates") keepLocalAddresses := flag.Bool("keep-local-addresses", false, "keep local LAN address ICE candidates")
relayURL := flag.String("relay", snowflake.DefaultRelayURL, "websocket relay URL") relayURL := flag.String("relay", sf.DefaultRelayURL, "websocket relay URL")
flag.Parse() flag.Parse()
sf := snowflake.SnowflakeProxy{ proxy := sf.SnowflakeProxy{
Capacity: uint(*capacity), Capacity: uint(*capacity),
StunURL: *stunURL, STUNURL: *stunURL,
RawBrokerURL: *rawBrokerURL, BrokerURL: *rawBrokerURL,
KeepLocalAddresses: *keepLocalAddresses, KeepLocalAddresses: *keepLocalAddresses,
RelayURL: *relayURL, RelayURL: *relayURL,
LogOutput: os.Stderr,
} }
var logOutput io.Writer = os.Stderr
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 {
log.Fatal(err) log.Fatal(err)
} }
defer f.Close() defer f.Close()
sf.LogOutput = io.MultiWriter(os.Stderr, f) logOutput = io.MultiWriter(os.Stderr, f)
} }
if *unsafeLogging { if *unsafeLogging {
log.SetOutput(sf.LogOutput) log.SetOutput(logOutput)
} else { } else {
log.SetOutput(&safelog.LogScrubber{Output: sf.LogOutput}) log.SetOutput(&safelog.LogScrubber{Output: logOutput})
} }
sf.Start() proxy.Start()
} }