summaryrefslogtreecommitdiff
path: root/digStatus.go
diff options
context:
space:
mode:
Diffstat (limited to 'digStatus.go')
-rw-r--r--digStatus.go144
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