Cleaned up CLI output.

This commit is contained in:
moony 2022-01-11 15:12:24 -08:00
parent e4027dfb6a
commit f69ff038a3

@ -13,11 +13,11 @@ import (
"time"
ct "github.com/daviddengcn/go-colortext"
"github.com/manifoldco/promptui"
ui "github.com/manifoldco/promptui"
"github.com/nuttapp/pinghist/ping"
)
const BANNER = "ICAgKiAgICAgICAgICAgICAgICAgICgKICggIGAgICAgICAgICAgKCAgICggIClcICkgICAgICAgICAgICAgICkKIClcKSkoICAgICAoICAgKVwgIClcKCgpLyggICAgKSAgICAgICggLygKKChfKSgpXCAgICkpXCAoKF8pKChfKS8oXykpKCAvKCAgKCAgIClcKCkpCihfKCkoKF8pIC8oKF8pIF8gICBfIChfKSlffCkoXykpIClcIChfKSkvCnwgIFwvICB8KF8pKSggfCB8IHwgfHwgfF8gKChfKV8gKChfKXwgfF8KfCB8XC98IHx8IHx8IHx8IHwgfCB8fCBfX3wvIF9gIHwoXy08fCAgX3wKfF98ICB8X3wgXF8sX3x8X3wgfF98fF98ICBcX18sX3wvX18vIFxfX3wKICAgLSBDb2RlZCBieSBNb29ueSAtIFZlcnNpb246IDAuMS4wIC0K"
const BANNER = "ICAgKiAgICAgICAgICAgICAgICAgICgKICggIGAgICAgICAgICAgKCAgICggIClcICkgICAgICAgICAgICAgICkKIClcKSkoICAgICAoICAgKVwgIClcKCgpLyggICAgKSAgICAgICggLygKKChfKSgpXCAgICkpXCAoKF8pKChfKS8oXykpKCAvKCAgKCAgIClcKCkpCihfKCkoKF8pIC8oKF8pIF8gICBfIChfKSlffCkoXykpIClcIChfKSkvCnwgIFwvICB8KF8pKSggfCB8IHwgfHwgfF8gKChfKV8gKChfKXwgfF8KfCB8XC98IHx8IHx8IHx8IHwgfCB8fCBfX3wvIF9gIHwoXy08fCAgX3wKfF98ICB8X3wgXF8sX3x8X3wgfF98fF98ICBcX18sX3wvX18vIFxfX3wK"
const URL = "https://api.mullvad.net/www/relays/all"
type Server struct {
@ -51,8 +51,8 @@ func (a ByLast) Less(i, j int) bool { return a[i].Last < a[j].Last }
// Ping method
func (s *Server) Ping() (float64, error) {
// for i := 0; i < 3; i++ {
ct.ChangeColor(ct.Blue, false, ct.None, false)
fmt.Println("[*] Testing server latency", s.URL)
ct.ChangeColor(ct.Cyan, false, ct.None, false)
fmt.Println("[*] Testing server:", s.URL)
r, err := ping.Ping(s.URL)
if err != nil {
return 0, err
@ -76,12 +76,12 @@ func main() {
ct.ChangeColor(ct.Red, false, ct.None, false)
fmt.Println(err)
} else {
ct.ChangeColor(ct.Magenta, false, ct.None, false)
ct.ChangeColor(ct.Red, false, ct.None, false)
fmt.Printf("%s\n", banner)
}
prompt := promptui.Select{
Label: "Select Mullvad server type",
prompt := ui.Select{
Label: "Select Mullvad VPN type",
Items: []string{"WireGuard", "OpenVPN", "Cancel"},
}
@ -89,7 +89,7 @@ func main() {
if err != nil {
ct.ChangeColor(ct.Red, false, ct.None, false)
fmt.Println("[!] User prompt failed", err)
fmt.Println("\n[!] User prompt failed", err)
return
} else if promptResult == "Cancel" {
@ -98,11 +98,11 @@ func main() {
os.Exit(0)
} else {
ct.ChangeColor(ct.Blue, true, ct.None, false)
fmt.Printf("[*] You selected %q servers for testing\n", promptResult)
ct.ChangeColor(ct.Cyan, true, ct.None, false)
fmt.Printf("[*] You selected %q servers for testing\n\n", promptResult)
}
ct.ChangeColor(ct.Blue, false, ct.None, false)
ct.ChangeColor(ct.Cyan, false, ct.None, false)
fmt.Println("[*] Retrieving list of Mullvad servers...")
response, err := http.Get(URL)
@ -111,11 +111,13 @@ func main() {
fmt.Println("[!] Request Error\n", err.Error())
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
jsonErr := json.Unmarshal(body, &servers)
ct.ChangeColor(ct.Blue, false, ct.None, false)
fmt.Printf("[*] There are %d total servers\n\n", len(servers))
ct.ChangeColor(ct.Green, false, ct.None, false)
fmt.Printf("[*] There are %d total servers\n", len(servers))
if jsonErr != nil {
ct.ChangeColor(ct.Red, false, ct.None, false)
fmt.Println("[!] Json Error", jsonErr)
@ -123,12 +125,11 @@ func main() {
for i := range servers {
servers[i].URL = servers[i].Hostname + ".mullvad.net"
if servers[i].Type == strings.ToLower(promptResult) && servers[i].Active {
// if servers[i].Type == "wireguard" && servers[i].Active {
active = append(active, servers[i])
}
}
}
ct.ChangeColor(ct.Blue, false, ct.None, false)
ct.ChangeColor(ct.Green, false, ct.None, false)
fmt.Printf("[*] There are %d active servers\n\n", len(active))
// Test the valid servers.
@ -156,10 +157,11 @@ func main() {
wg.Wait()
ct.ChangeColor(ct.Red, false, ct.None, false)
fmt.Printf("\n\n%s\n", banner)
ct.ChangeColor(ct.Magenta, false, ct.None, false)
// fmt.Println("------------------------------------------")
// fmt.Println("------------------------------------------")
// fmt.Println("==========================================")
fmt.Println("==========================================")
fmt.Println("============ TOP 10 RESULTS ==============")
fmt.Println("==========================================")
ct.ResetColor()
@ -171,9 +173,9 @@ func main() {
}
ct.ChangeColor(ct.Green, false, ct.None, false)
fmt.Println("[*]", server.URL, "\t", server.Last, "ms")
fmt.Println("-", server.URL, "\t", server.Last, "ms")
ct.ChangeColor(ct.Magenta, false, ct.None, false)
fmt.Println("------------------------------------------")
fmt.Println("==========================================")
ct.ResetColor()
if printed >= 9 {