forked from ooni/probe-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: create common package for holding STUN input (ooni#631)
We want stunreachability to use the same STUN servers used by snowflake, so let's start by making a common package holding the servers. Let's also use this new package in Snowflake. We're currently not using this package in stunreachability, but I am going to apply this as a subsequent diff. Reference issue: ooni/probe#1814. This issue is a bit complex to address in a single PR, so we are going to proceed incremntally. This diff was extracted from ooni#539.
- Loading branch information
1 parent
f496b7a
commit 4c6e0d7
Showing
3 changed files
with
77 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
// Package stuninput contains stun targets as well as | ||
// code to format such targets according to various conventions. | ||
package stuninput | ||
|
||
import ( | ||
"fmt" | ||
"net/url" | ||
) | ||
|
||
// TODO(bassosimone): we need to keep this list in sync with | ||
// the list internally used by TPO's snowflake. | ||
var inputs = []string{ | ||
"stun.voip.blackberry.com:3478", | ||
"stun.altar.com.pl:3478", | ||
"stun.antisip.com:3478", | ||
"stun.bluesip.net:3478", | ||
"stun.dus.net:3478", | ||
"stun.epygi.com:3478", | ||
"stun.sonetel.com:3478", | ||
"stun.sonetel.net:3478", | ||
"stun.stunprotocol.org:3478", | ||
"stun.uls.co.za:3478", | ||
"stun.voipgate.com:3478", | ||
"stun.voys.nl:3478", | ||
} | ||
|
||
// AsSnowflakeInput formats the input in the format | ||
// that is expected by snowflake. | ||
func AsSnowflakeInput() (output []string) { | ||
for _, input := range inputs { | ||
output = append(output, fmt.Sprintf("stun:%s", input)) | ||
} | ||
return | ||
} | ||
|
||
// AsnStunReachabilityInput formats the input in | ||
// the format that is expected by stunreachability. | ||
func AsnStunReachabilityInput() (output []string) { | ||
for _, input := range inputs { | ||
serio := (&url.URL{Scheme: "stun", Host: input}) | ||
output = append(output, serio.String()) | ||
} | ||
return | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package stuninput | ||
|
||
import "testing" | ||
|
||
func TestAsSnowflakeInput(t *testing.T) { | ||
outputs := AsSnowflakeInput() | ||
if len(outputs) != len(inputs) { | ||
t.Fatal("unexpected number of entries") | ||
} | ||
for idx := 0; idx < len(inputs); idx++ { | ||
output := outputs[idx] | ||
input := "stun:" + inputs[idx] | ||
if input != output { | ||
t.Fatal("mismatch") | ||
} | ||
} | ||
} | ||
|
||
func TestAsStunReachabilityInput(t *testing.T) { | ||
outputs := AsnStunReachabilityInput() | ||
if len(outputs) != len(inputs) { | ||
t.Fatal("unexpected number of entries") | ||
} | ||
for idx := 0; idx < len(inputs); idx++ { | ||
output := outputs[idx] | ||
input := "stun://" + inputs[idx] | ||
if input != output { | ||
t.Fatal("mismatch") | ||
} | ||
} | ||
} |