mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
test(proxy): add tests for relayURL check
This commit is contained in:
parent
978a55b7c4
commit
14f4c82ff7
2 changed files with 91 additions and 12 deletions
|
@ -600,18 +600,12 @@ func (sf *SnowflakeProxy) runSession(sid string) {
|
|||
}
|
||||
log.Printf("Received Offer From Broker: \n\t%s", strings.ReplaceAll(offer.SDP, "\n", "\n\t"))
|
||||
|
||||
matcher := namematcher.NewNameMatcher(sf.RelayDomainNamePattern)
|
||||
parsedRelayURL, err := url.Parse(relayURL)
|
||||
if err != nil {
|
||||
log.Printf("bad offer from broker: bad Relay URL %v", err.Error())
|
||||
tokens.ret()
|
||||
return
|
||||
}
|
||||
|
||||
if relayURL != "" && (!matcher.IsMember(parsedRelayURL.Hostname()) || (!sf.AllowNonTLSRelay && parsedRelayURL.Scheme != "wss")) {
|
||||
log.Printf("bad offer from broker: rejected Relay URL")
|
||||
tokens.ret()
|
||||
return
|
||||
if relayURL != "" {
|
||||
if err := checkIsRelayURLAcceptable(sf.RelayDomainNamePattern, sf.AllowNonTLSRelay, relayURL); err != nil {
|
||||
log.Printf("bad offer from broker: %v", err)
|
||||
tokens.ret()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
dataChan := make(chan struct{})
|
||||
|
@ -647,6 +641,24 @@ func (sf *SnowflakeProxy) runSession(sid string) {
|
|||
}
|
||||
}
|
||||
|
||||
// Returns nil if the relayURL is acceptable
|
||||
func checkIsRelayURLAcceptable(
|
||||
allowedHostNamePattern string,
|
||||
allowNonTLSRelay bool,
|
||||
relayURL string,
|
||||
) error {
|
||||
parsedRelayURL, err := url.Parse(relayURL)
|
||||
if err != nil {
|
||||
return fmt.Errorf("bad Relay URL %w", err)
|
||||
}
|
||||
matcher := namematcher.NewNameMatcher(allowedHostNamePattern)
|
||||
if !matcher.IsMember(parsedRelayURL.Hostname()) || (!allowNonTLSRelay && parsedRelayURL.Scheme != "wss") {
|
||||
return fmt.Errorf("rejected Relay URL")
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// 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() error {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue