From d20b269a4da9ad3d5b73a75173c816db238fb778 Mon Sep 17 00:00:00 2001 From: vikingowl Date: Fri, 14 Apr 2023 18:40:37 +0200 Subject: [PATCH] init --- go.mod | 11 ++++++++ go.sum | 18 ++++++++++++ ping-package.go | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 go.mod create mode 100644 go.sum create mode 100644 ping-package.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..59737a9 --- /dev/null +++ b/go.mod @@ -0,0 +1,11 @@ +module ping-package/mod + +go 1.19 + +require ( + github.com/go-ping/ping v1.1.0 // indirect + github.com/google/uuid v1.3.0 // indirect + golang.org/x/net v0.1.0 // indirect + golang.org/x/sync v0.1.0 // indirect + golang.org/x/sys v0.1.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..9e42c5e --- /dev/null +++ b/go.sum @@ -0,0 +1,18 @@ +github.com/go-ping/ping v1.1.0 h1:3MCGhVX4fyEUuhsfwPrsEdQw6xspHkv5zHsiSoDFZYw= +github.com/go-ping/ping v1.1.0/go.mod h1:xIFjORFzTxqIV/tDVGO4eDy/bLuSyawEeojSm3GfRGk= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/ping-package.go b/ping-package.go new file mode 100644 index 0000000..2fc08f2 --- /dev/null +++ b/ping-package.go @@ -0,0 +1,73 @@ +package main + +import ( + "fmt" + "strconv" + + "github.com/go-ping/ping" +) + +func main() { + pinger, err := ping.NewPinger("itsh.dev") + if err != nil { + panic(err) + } + + pinger.Count = 3 + + var rtt_float float64 + + pinger.OnRecv = func(pkt *ping.Packet) { + rtt := pkt.Rtt.String() + rtt_len := len(rtt) - 2 + rtt_f, err := strconv.ParseFloat(rtt[0:rtt_len], 2) + if err != nil { + panic(err) + } + rtt_float = rtt_f + } + + pinger.OnFinish = func(stats *ping.Statistics) { + packet := fmt.Sprintf("%v", stats.PacketLoss) + packet_loss, err := strconv.Atoi(packet) + if err != nil { + panic(err) + } + + if packet_loss == 100 { + fmt.Print("%{F#ff7070}ﲁ'") + } else { + var ( + rtt_color string + packet_color string + ) + + if rtt_float < 33 { + rtt_color = "%{F#3cb703}" + } else if rtt_float < 66 { + rtt_color = "%{F#f9dd04}" + } else if rtt_float < 100 { + rtt_color = "%{F#e87205}" + } else { + rtt_color = "%{F#d60606}" + } + + if packet_loss == 0 { + packet_color = "%{F#3cb703}" + } else if packet_loss < 10 { + packet_color = "%{F#f9dd04}" + } else if packet_loss < 25 { + packet_color = "%{F#e87205}" + } else { + packet_color = "%{F#d60606}" + } + + fmt.Printf("%s%0.2fms %%{F-}| %s%d%%", rtt_color, rtt_float, packet_color, packet_loss) + } + } + err = pinger.Run() + + if err != nil { + panic(err) + } +}