mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-14 05:11:19 -04:00
Allow broker base url to have a path
This commit is contained in:
parent
44ab82bc61
commit
42ec097a58
1 changed files with 6 additions and 16 deletions
|
@ -26,7 +26,7 @@ const defaultBrokerURL = "https://snowflake-reg.appspot.com/"
|
||||||
const defaultRelayURL = "wss://snowflake.bamsoftware.com/"
|
const defaultRelayURL = "wss://snowflake.bamsoftware.com/"
|
||||||
const defaultSTUNURL = "stun:stun.l.google.com:19302"
|
const defaultSTUNURL = "stun:stun.l.google.com:19302"
|
||||||
|
|
||||||
var brokerURL string
|
var brokerURL *url.URL
|
||||||
var relayURL string
|
var relayURL string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -121,18 +121,8 @@ func genSessionID() string {
|
||||||
return strings.TrimRight(base64.StdEncoding.EncodeToString(buf), "=")
|
return strings.TrimRight(base64.StdEncoding.EncodeToString(buf), "=")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parses a URL with url.Parse and panics on any error.
|
|
||||||
func mustParseURL(rawurl string) *url.URL {
|
|
||||||
u, err := url.Parse(rawurl)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return u
|
|
||||||
}
|
|
||||||
|
|
||||||
func pollOffer(sid string) *webrtc.SessionDescription {
|
func pollOffer(sid string) *webrtc.SessionDescription {
|
||||||
broker := mustParseURL(brokerURL)
|
broker := brokerURL.ResolveReference(&url.URL{Path: "proxy"})
|
||||||
broker.Path = "/proxy"
|
|
||||||
for {
|
for {
|
||||||
req, _ := http.NewRequest("POST", broker.String(), bytes.NewBuffer([]byte(sid)))
|
req, _ := http.NewRequest("POST", broker.String(), bytes.NewBuffer([]byte(sid)))
|
||||||
req.Header.Set("X-Session-ID", sid)
|
req.Header.Set("X-Session-ID", sid)
|
||||||
|
@ -156,8 +146,7 @@ func pollOffer(sid string) *webrtc.SessionDescription {
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendAnswer(sid string, pc *webrtc.PeerConnection) error {
|
func sendAnswer(sid string, pc *webrtc.PeerConnection) error {
|
||||||
broker := mustParseURL(brokerURL)
|
broker := brokerURL.ResolveReference(&url.URL{Path: "answer"})
|
||||||
broker.Path = "/answer"
|
|
||||||
body := bytes.NewBuffer([]byte(pc.LocalDescription().Serialize()))
|
body := bytes.NewBuffer([]byte(pc.LocalDescription().Serialize()))
|
||||||
req, _ := http.NewRequest("POST", broker.String(), body)
|
req, _ := http.NewRequest("POST", broker.String(), body)
|
||||||
req.Header.Set("X-Session-ID", sid)
|
req.Header.Set("X-Session-ID", sid)
|
||||||
|
@ -349,9 +338,10 @@ func main() {
|
||||||
var capacity uint
|
var capacity uint
|
||||||
var stunURL string
|
var stunURL string
|
||||||
var logFilename string
|
var logFilename string
|
||||||
|
var rawBrokerURL string
|
||||||
|
|
||||||
flag.UintVar(&capacity, "capacity", 10, "maximum concurrent clients")
|
flag.UintVar(&capacity, "capacity", 10, "maximum concurrent clients")
|
||||||
flag.StringVar(&brokerURL, "broker", defaultBrokerURL, "broker URL")
|
flag.StringVar(&rawBrokerURL, "broker", defaultBrokerURL, "broker URL")
|
||||||
flag.StringVar(&relayURL, "relay", defaultRelayURL, "websocket relay URL")
|
flag.StringVar(&relayURL, "relay", defaultRelayURL, "websocket relay URL")
|
||||||
flag.StringVar(&stunURL, "stun", defaultSTUNURL, "stun URL")
|
flag.StringVar(&stunURL, "stun", defaultSTUNURL, "stun URL")
|
||||||
flag.StringVar(&logFilename, "log", "", "log filename")
|
flag.StringVar(&logFilename, "log", "", "log filename")
|
||||||
|
@ -370,7 +360,7 @@ func main() {
|
||||||
log.Println("starting")
|
log.Println("starting")
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
_, err = url.Parse(brokerURL)
|
brokerURL, err = url.Parse(rawBrokerURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("invalid broker url: %s", err)
|
log.Fatalf("invalid broker url: %s", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue