diff options
Diffstat (limited to 'digStatus.go')
| -rw-r--r-- | digStatus.go | 144 |
1 files changed, 78 insertions, 66 deletions
diff --git a/digStatus.go b/digStatus.go index b7536cf..da37875 100644 --- a/digStatus.go +++ b/digStatus.go @@ -1,58 +1,58 @@ -/* +/* 'dig' This is essentially doing what the command 'dig' does It performing DNS queries on TCP and UDP against localhost, cloudflare & google - + IPv4() and IPv6() return true if they are working - + with the 'gui' package, it can also display the results */ package main import ( - "os" + "errors" "fmt" - "time" + "os" "reflect" - "errors" + "time" + "go.wit.com/lib/gadgets" + "go.wit.com/gui" "go.wit.com/log" - "go.wit.com/gui/gui" - "go.wit.com/gui/gadgets" - "go.wit.com/shell" + "go.wit.com/lib/gui/shell" ) type digStatus struct { - ready bool - hidden bool - statusIPv4 string - statusIPv6 string + ready bool + hidden bool + statusIPv4 string + statusIPv6 string - parent *gui.Node - window *gadgets.BasicWindow - group *gui.Node - grid *gui.Node + parent *gui.Node + window *gadgets.BasicWindow + group *gui.Node + grid *gui.Node - summary *gui.Node - status *gadgets.OneLiner - statusAAAA *gadgets.OneLiner - speed *gadgets.OneLiner - speedActual *gadgets.OneLiner + summary *gui.Node + status *gadgets.OneLiner + statusAAAA *gadgets.OneLiner + speed *gadgets.OneLiner + speedActual *gadgets.OneLiner - detailsGroup *gui.Node - details *gui.Node - dsLocalhost *resolverStatus - dsLocalNetwork *resolverStatus - dsCloudflare *resolverStatus - dsGoogle *resolverStatus - DnsDigUDP *gui.Node - DnsDigTCP *gui.Node + detailsGroup *gui.Node + details *gui.Node + dsLocalhost *resolverStatus + dsLocalNetwork *resolverStatus + dsCloudflare *resolverStatus + dsGoogle *resolverStatus + DnsDigUDP *gui.Node + DnsDigTCP *gui.Node - httpGoWitCom *gadgets.OneLiner - statusHTTP *gadgets.OneLiner + httpGoWitCom *gadgets.OneLiner + statusHTTP *gadgets.OneLiner } func NewDigStatusWindow(p *gui.Node) *digStatus { @@ -72,19 +72,19 @@ func NewDigStatusWindow(p *gui.Node) *digStatus { g := ds.summary.NewGrid("LookupStatus", 2, 2) g.Pad() - ds.status = gadgets.NewOneLiner(g, "status").Set("unknown") - ds.statusAAAA = gadgets.NewOneLiner(g, "IPv6 status").Set("unknown") - ds.statusHTTP = gadgets.NewOneLiner(g, "IPv6 via HTTP").Set("unknown") - ds.speed = gadgets.NewOneLiner(g, "speed").Set("unknown") - ds.speedActual = gadgets.NewOneLiner(g, "actual").Set("unknown") + ds.status = gadgets.NewOneLiner(g, "status").SetValue("unknown") + ds.statusAAAA = gadgets.NewOneLiner(g, "IPv6 status").SetValue("unknown") + ds.statusHTTP = gadgets.NewOneLiner(g, "IPv6 via HTTP").SetValue("unknown") + ds.speed = gadgets.NewOneLiner(g, "speed").SetValue("unknown") + ds.speedActual = gadgets.NewOneLiner(g, "actual").SetValue("unknown") // make the area to store the raw details ds.detailsGroup = ds.window.Box().NewGroup("Details") ds.details = ds.detailsGroup.NewBox("bw vbox", false) - ds.dsLocalhost = NewResolverStatus(ds.details, "(localhost)", "127.0.0.1:53", "go.wit.com") - ds.dsLocalNetwork = NewResolverStatus(ds.details, "(Local Network)", "192.168.86.1:53", "go.wit.com") - ds.dsCloudflare = NewResolverStatus(ds.details, "(cloudflare)", "1.1.1.1:53", "go.wit.com") - ds.dsGoogle = NewResolverStatus(ds.details, "(google)", "8.8.8.8:53", "go.wit.com") + ds.dsLocalhost = NewResolverStatus(ds.details, "(localhost)", "127.0.0.1:53", "go.wit.com") + ds.dsLocalNetwork = NewResolverStatus(ds.details, "(Local Network)", "192.168.86.1:53", "go.wit.com") + ds.dsCloudflare = NewResolverStatus(ds.details, "(cloudflare)", "1.1.1.1:53", "go.wit.com") + ds.dsGoogle = NewResolverStatus(ds.details, "(google)", "8.8.8.8:53", "go.wit.com") ds.makeDnsStatusGrid() ds.makeHttpStatusGrid() @@ -99,16 +99,16 @@ func (ds *digStatus) Update() { log.Error(errors.New("digStatus() Update() ds == nil")) return } - duration := timeFunction(func () { + duration := timeFunction(func() { ds.updateDnsStatus() }) s := fmt.Sprint(duration) - // ds.speedActual.Set(s) + // ds.speedActual.SetValue(s) me.digStatus.set(ds.speedActual, s) - if (duration > 500 * time.Millisecond ) { + if duration > 500*time.Millisecond { me.digStatus.set(ds.speed, "SLOW") - } else if (duration > 100 * time.Millisecond ) { + } else if duration > 100*time.Millisecond { me.digStatus.set(ds.speed, "OK") } else { me.digStatus.set(ds.speed, "FAST") @@ -118,17 +118,21 @@ func (ds *digStatus) Update() { // Returns true if the status is valid func (ds *digStatus) Ready() bool { - if ds == nil {return false} + if ds == nil { + return false + } return ds.ready } // Returns true if IPv4 is working func (ds *digStatus) IPv4() bool { - if ! ds.Ready() {return false} - if (ds.statusIPv4 == "OK") { + if !ds.Ready() { + return false + } + if ds.statusIPv4 == "OK" { return true } - if (ds.statusIPv4 == "GOOD") { + if ds.statusIPv4 == "GOOD" { return true } return false @@ -136,8 +140,10 @@ func (ds *digStatus) IPv4() bool { // Returns true if IPv6 is working func (ds *digStatus) IPv6() bool { - if ! ds.Ready() {return false} - if (ds.statusIPv6 == "GOOD") { + if !ds.Ready() { + return false + } + if ds.statusIPv6 == "GOOD" { return true } return false @@ -145,13 +151,17 @@ func (ds *digStatus) IPv6() bool { func (ds *digStatus) setIPv4status(s string) { ds.statusIPv4 = s - if ! ds.Ready() {return} + if !ds.Ready() { + return + } me.digStatus.set(ds.status, s) } func (ds *digStatus) setIPv6status(s string) { ds.statusIPv6 = s - if ! ds.Ready() {return} + if !ds.Ready() { + return + } me.digStatus.set(ds.statusAAAA, s) } @@ -162,13 +172,15 @@ func (ds *digStatus) SetIPv6(s string) { log.Warn("Should SetIPv6() here to", s) log.Warn("Should SetIPv6() here to", s) log.Warn("Should SetIPv6() here to", s) - me.DnsAAAA.Set(s) + me.DnsAAAA.SetValue(s) // me.digStatus.set(ds.httpGoWitCom, addr) } */ func (ds *digStatus) set(a any, s string) { - if ! ds.Ready() {return} + if !ds.Ready() { + return + } if ds.hidden { return } @@ -184,7 +196,7 @@ func (ds *digStatus) set(a any, s string) { var ol *gadgets.OneLiner if reflect.TypeOf(a) == reflect.TypeOf(ol) { ol = a.(*gadgets.OneLiner) - ol.Set(s) + ol.SetValue(s) return } log.Warn("unknown type TypeOf(a) =", reflect.TypeOf(a), "a =", a) @@ -196,12 +208,12 @@ func (ds *digStatus) updateDnsStatus() { var ipv4, ipv6 bool log.Info("updateDnsStatus() START") - if (ds == nil) { + if ds == nil { log.Error(errors.New("updateDnsStatus() not initialized yet. ds == nil")) return } - if (! ds.ready) { + if !ds.ready { log.Error(errors.New("updateDnsStatus() not ready yet")) return } @@ -224,14 +236,14 @@ func (ds *digStatus) updateDnsStatus() { me.digStatus.set(ds.statusHTTP, "INVALID HOSTNAME") } - if (ipv4) { + if ipv4 { log.Log(DNS, "updateDnsStatus() IPv4 A lookups working") ds.setIPv4status("OK") } else { log.Log(DNS, "updateDnsStatus() IPv4 A lookups not working. No internet?") ds.setIPv4status("No Internet?") } - if (ipv6) { + if ipv6 { log.Log(DNS, "updateDnsStatus() IPv6 AAAA lookups working") ds.setIPv4status("GOOD") ds.setIPv6status("GOOD") @@ -251,11 +263,11 @@ func (ds *digStatus) updateDnsStatus() { me.digStatus.set(ds.DnsDigTCP, out) /* - g2.NewButton("dig +trace", func () { - log.Log(NOW, "TODO: redo this") - // o := shell.Run("dig +trace +noadditional DS " + me.hostname + " @8.8.8.8") - // log.Println(o) - }) + g2.NewButton("dig +trace", func () { + log.Log(NOW, "TODO: redo this") + // o := shell.Run("dig +trace +noadditional DS " + me.hostname + " @8.8.8.8") + // log.Println(o) + }) */ } @@ -319,7 +331,7 @@ func (ds *digStatus) Show() { func (ds *digStatus) Hide() { log.Info("digStatus.Hide() window") - if ! me.digStatus.hidden { + if !me.digStatus.hidden { me.digStatus.window.Hide() } me.digStatus.hidden = true |
