Compare commits

...

3 Commits

Author SHA1 Message Date
31859569fc fix typo in README 2022-03-06 19:25:06 +01:00
d31571fc50 cleanup (country default now comes from flag) 2022-03-06 19:20:21 +01:00
5eefe15b3b Update README.md 2022-03-06 19:10:33 +01:00
2 changed files with 5 additions and 13 deletions

View File

@ -1,7 +1,7 @@
# mullvad-best-server
![Build](https://github.com/bastiandoetsch/mullvad-best-server/actions/workflows/go.yml/badge.svg)
Determines the mullvat.net wireguard server with the lowest latency.
Determines the mullvad.net server with the lowest latency.
## Installation
@ -28,5 +28,5 @@ The `-c` flag allows to give a country code. Else `ch` will be used.
## Background
The program uses `https://api.mullvad.net/www/relays/wireguard/` to get the current server list, pings the ones with the right country
The program uses `https://api.mullvad.net/www/relays/<SERVER_TYPE/` to get the current server list, pings the ones with the right country
and outputs the server with the lowest ping.

14
main.go
View File

@ -24,7 +24,7 @@ func main() {
flag.Parse()
servers := getServers(*typeFlag)
bestIndex := selectBestServerIndex(servers, countryFlag)
bestIndex := selectBestServerIndex(servers, *countryFlag)
best := servers[bestIndex]
log.Debug().Interface("server", best).Msg("Best latency server found.")
hostname := strings.TrimSuffix(best.Hostname, "-wireguard")
@ -39,19 +39,11 @@ func main() {
}
}
func selectBestServerIndex(servers []server, country *string) int {
func selectBestServerIndex(servers []server, country string) int {
best := servers[0].Hostname
bestIndex := -1
allowedCountries := map[string]string{}
if *country == "" {
allowedCountries["de"] = "1"
allowedCountries["ch"] = "1"
allowedCountries["at"] = "1"
} else {
allowedCountries[*country] = "1"
}
for i, server := range servers {
if server.Active && allowedCountries[server.CountryCode] != "" {
if server.Active && server.CountryCode == country {
duration, err := serverLatency(server)
if err == nil {
pings[server.Hostname] = duration