From f69ff038a3be09642ed5e8ebaf99528e0fb0189b Mon Sep 17 00:00:00 2001 From: moony Date: Tue, 11 Jan 2022 15:12:24 -0800 Subject: [PATCH] Cleaned up CLI output. --- cmd/mullfast/main.go | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/cmd/mullfast/main.go b/cmd/mullfast/main.go index 01f8269..6f8f1c1 100644 --- a/cmd/mullfast/main.go +++ b/cmd/mullfast/main.go @@ -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 {