Compare commits

..

No commits in common. "main" and "v20220926.172853" have entirely different histories.

30
main.go
View File

@ -21,7 +21,6 @@ func main() {
var countryFlag = flag.String("c", "ch", "Server country code, e.g. ch for Switzerland") var countryFlag = flag.String("c", "ch", "Server country code, e.g. ch for Switzerland")
var typeFlag = flag.String("t", "wireguard", "Server type, e.g. wireguard") var typeFlag = flag.String("t", "wireguard", "Server type, e.g. wireguard")
var logLevel = flag.String("l", "info", "Log level. Allowed values: trace, debug, info, warn, error, fatal, panic") var logLevel = flag.String("l", "info", "Log level. Allowed values: trace, debug, info, warn, error, fatal, panic")
var ownedFlag = flag.String("m", "true", "Server owned by Mullvad")
flag.Parse() flag.Parse()
level, err := zerolog.ParseLevel(*logLevel) level, err := zerolog.ParseLevel(*logLevel)
@ -30,7 +29,7 @@ func main() {
} }
zerolog.SetGlobalLevel(level) zerolog.SetGlobalLevel(level)
servers := getServers(*typeFlag) servers := getServers(*typeFlag)
bestIndex := selectBestServerIndex(servers, *countryFlag, *ownedFlag) bestIndex := selectBestServerIndex(servers, *countryFlag)
if bestIndex == -1 { if bestIndex == -1 {
log.Fatal().Str("country", *countryFlag).Msg("No servers for country found.") log.Fatal().Str("country", *countryFlag).Msg("No servers for country found.")
} }
@ -48,31 +47,10 @@ func main() {
} }
} }
func getOwned(ownedInput string) bool { func selectBestServerIndex(servers []server, country string) int {
if ownedInput == "true" {
return true
} else {
return false
}
}
func selectBestServerIndex(servers []server, country string, ownedInput string) int {
bestIndex := -1 bestIndex := -1
var bestPing time.Duration var bestPing time.Duration
for i, server := range servers { for i, server := range servers {
if getOwned(ownedInput) == true {
if server.Active && server.CountryCode == country && server.Owned == true {
duration, err := serverLatency(server)
if err == nil {
if bestIndex == -1 || bestPing > duration {
bestIndex = i
bestPing = duration
}
} else {
log.Err(err).Msg("Error determining the server latency via ping.")
}
}
} else {
if server.Active && server.CountryCode == country { if server.Active && server.CountryCode == country {
duration, err := serverLatency(server) duration, err := serverLatency(server)
if err == nil { if err == nil {
@ -85,8 +63,6 @@ func selectBestServerIndex(servers []server, country string, ownedInput string)
} }
} }
} }
}
return bestIndex return bestIndex
} }
@ -119,7 +95,7 @@ func serverLatency(s server) (time.Duration, error) {
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
pinger.SetPrivileged(true) pinger.SetPrivileged(true)
} }
pinger.Count = 3 pinger.Count = 1
if err != nil { if err != nil {
return 0, err return 0, err
} }