This commit is contained in:
2023-04-14 18:40:37 +02:00
commit d20b269a4d
3 changed files with 102 additions and 0 deletions

11
go.mod Normal file
View File

@@ -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
)

18
go.sum Normal file
View File

@@ -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=

73
ping-package.go Normal file
View File

@@ -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)
}
}