Compare commits
2 Commits
v20220312.
...
v20220319.
Author | SHA1 | Date | |
---|---|---|---|
2b05df2b75 | |||
415cfa8ee7 |
@ -30,7 +30,7 @@ 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/<SERVER_TYPE/` 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.
|
||||||
|
|
||||||
## Integration into a script
|
## Integration into a script
|
||||||
|
9
main.go
9
main.go
@ -29,6 +29,9 @@ func main() {
|
|||||||
zerolog.SetGlobalLevel(level)
|
zerolog.SetGlobalLevel(level)
|
||||||
servers := getServers(*typeFlag)
|
servers := getServers(*typeFlag)
|
||||||
bestIndex := selectBestServerIndex(servers, *countryFlag)
|
bestIndex := selectBestServerIndex(servers, *countryFlag)
|
||||||
|
if bestIndex == -1 {
|
||||||
|
log.Fatal().Str("country", *countryFlag).Msg("No servers for country found.")
|
||||||
|
}
|
||||||
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")
|
||||||
@ -37,7 +40,7 @@ func main() {
|
|||||||
} else {
|
} else {
|
||||||
serverJson, err := json.Marshal(best)
|
serverJson, err := json.Marshal(best)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal().Err(err)
|
log.Fatal().Err(err).Msg("Couldn't marshal server information to Json")
|
||||||
}
|
}
|
||||||
fmt.Println(string(serverJson))
|
fmt.Println(string(serverJson))
|
||||||
}
|
}
|
||||||
@ -63,7 +66,7 @@ func selectBestServerIndex(servers []server, country string) int {
|
|||||||
func getServers(serverType string) []server {
|
func getServers(serverType string) []server {
|
||||||
resp, err := http.Get("https://api.mullvad.net/www/relays/" + serverType + "/")
|
resp, err := http.Get("https://api.mullvad.net/www/relays/" + serverType + "/")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal().Err(err)
|
log.Fatal().Err(err).Msg("Couldn't retrieve servers")
|
||||||
}
|
}
|
||||||
responseBody, err := ioutil.ReadAll(resp.Body)
|
responseBody, err := ioutil.ReadAll(resp.Body)
|
||||||
defer func(Body io.ReadCloser) {
|
defer func(Body io.ReadCloser) {
|
||||||
@ -78,7 +81,7 @@ func getServers(serverType string) []server {
|
|||||||
var servers []server
|
var servers []server
|
||||||
err = json.Unmarshal(responseBody, &servers)
|
err = json.Unmarshal(responseBody, &servers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal().Err(err)
|
log.Fatal().Err(err).Msg("couldn't unmarshall server json")
|
||||||
}
|
}
|
||||||
return servers
|
return servers
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user