Compare commits

...

4 Commits

3 changed files with 8 additions and 13 deletions

View File

@ -14,6 +14,7 @@ builds:
- linux - linux
- windows - windows
- darwin - darwin
mod_timestamp: "{{ .CommitTimestamp }}"
archives: archives:
- replacements: - replacements:
darwin: Darwin darwin: Darwin
@ -21,6 +22,8 @@ archives:
windows: Windows windows: Windows
386: i386 386: i386
amd64: x86_64 amd64: x86_64
format: binary
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
checksum: checksum:
name_template: 'checksums.txt' name_template: 'checksums.txt'
snapshot: snapshot:

View File

@ -1,7 +1,7 @@
# mullvad-best-server # mullvad-best-server
![Build](https://github.com/bastiandoetsch/mullvad-best-server/actions/workflows/go.yml/badge.svg) ![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 ## Installation
@ -28,5 +28,5 @@ The `-c` flag allows to give a country code. Else `ch` will be used.
## Background ## 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. and outputs the server with the lowest ping.

14
main.go
View File

@ -24,7 +24,7 @@ func main() {
flag.Parse() flag.Parse()
servers := getServers(*typeFlag) servers := getServers(*typeFlag)
bestIndex := selectBestServerIndex(servers, countryFlag) bestIndex := selectBestServerIndex(servers, *countryFlag)
best := servers[bestIndex] best := servers[bestIndex]
log.Debug().Interface("server", best).Msg("Best latency server found.") log.Debug().Interface("server", best).Msg("Best latency server found.")
hostname := strings.TrimSuffix(best.Hostname, "-wireguard") 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 best := servers[0].Hostname
bestIndex := -1 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 { for i, server := range servers {
if server.Active && allowedCountries[server.CountryCode] != "" { if server.Active && server.CountryCode == country {
duration, err := serverLatency(server) duration, err := serverLatency(server)
if err == nil { if err == nil {
pings[server.Hostname] = duration pings[server.Hostname] = duration