diff options
| author | Jeff Carr <[email protected]> | 2023-12-28 09:43:45 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2023-12-28 09:43:45 -0600 |
| commit | 6fa6d6dfc9e5a88e7dff2ed3c148b3b4271f566c (patch) | |
| tree | f08edaac07ddf1a2e8a7401ef32c53707bdf5537 /gui.go | |
| parent | 73b0cee93320bb5b572881cd1a5ba9d878a4ba3a (diff) | |
Detect that a VPN is needed
IPv6() returns true if it's working
display duration
a 'DNS Lookup Status' window
actual dig results
display status and failure counters
count lookup failures and successes
add TCP dns lookup
logic to test if dns is working at all
add DNS over HTTPS
cloudflare new & update kind of working
holy shit, go.wit.com finally works with git mod tidy
working, but cloudflare api stuff is broken
AAAA '(none)' logic detection is better
cloudflare control panel
display the working real AAAA addresses
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'gui.go')
| -rw-r--r-- | gui.go | 114 |
1 files changed, 89 insertions, 25 deletions
@@ -14,8 +14,6 @@ import ( "go.wit.com/gui" "go.wit.com/shell" "go.wit.com/control-panel-dns/cloudflare" - - "github.com/davecgh/go-spew/spew" ) // This setups up the dns control panel window @@ -25,9 +23,13 @@ func setupControlPanelWindow() { debug("artificial sleep of:", me.artificialSleep) sleep(me.artificialSleep) + + // setup the main tab dnsTab("DNS") detailsTab("Details") debugTab("Debug") + + me.digStatus = NewDigStatusWindow(me.window) } func detailsTab(title string) { @@ -59,6 +61,9 @@ func detailsTab(title string) { grid.NewLabel("Current IPv6 =") me.IPv6 = grid.NewLabel("?") + grid.NewLabel("Working Real IPv6 =") + me.workingIPv6 = grid.NewLabel("?") + grid.NewLabel("interfaces =") me.Interfaces = grid.NewCombobox("Interfaces") @@ -122,7 +127,6 @@ func debugTab(title string) { g2.NewButton("os.User()", func () { user, _ := user.Current() - spew.Dump(user) log.Println("os.Getuid =", user.Username, os.Getuid()) if (me.uid != nil) { me.uid.SetText(user.Username + " (" + strconv.Itoa(os.Getuid()) + ")") @@ -132,7 +136,6 @@ func debugTab(title string) { g2.NewButton("dig +trace", func () { o := shell.Run("dig +trace +noadditional DS " + me.hostname + " @8.8.8.8") log.Println(o) - // log.Println(o) }) g2.NewButton("Example_listLink()", func () { @@ -186,30 +189,54 @@ func debugTab(title string) { g2.Pad() } +// will return a AAAA value that needs to be deleted +func deleteAAA() string { + var aaaa []string + aaaa = dhcpAAAA() // your AAAA IP addresses right now + for _, s := range aaaa { + debug(LogNow, "DNS AAAA =", s) + if ( me.ipmap[s] == nil) { + return s + } + } + return "" +} + +// will return a AAAA value that needs to be added +func missingAAAA() string { + var aaaa []string + aaaa = dhcpAAAA() // your AAAA IP addresses right now + for _, s := range aaaa { + debug(LogNow, "missing AAAA =", s) + return s + } + return "" +} + // doesn't actually do any network traffic // it just updates the GUI -func displayDNS() int { +func displayDNS() string { var aaaa []string - aaaa = realAAAA() // your AAAA records right now + aaaa = dhcpAAAA() // your AAAA records right now h := me.hostname var all string - var broken int = 0 + var broken string = "unknown" for _, s := range aaaa { debug(LogNow, "host", h, "DNS AAAA =", s, "ipmap[s] =", me.ipmap[s]) all += s + "\n" if ( me.ipmap[s] == nil) { debug(LogError, "THIS IS THE WRONG AAAA DNS ENTRY: host", h, "DNS AAAA =", s) - broken = 2 + broken = "wrong AAAA entry" } else { - if (broken == 0) { - broken = 1 + if (broken == "unknown") { + broken = "needs update" } } } all = sortLines(all) - if (me.DnsAAAA.S != all) { - debug(LogError, "DnsAAAA.SetText() to:", all) - me.DnsAAAA.SetText(all) + if (me.workingIPv6.S != all) { + debug(LogError, "workingIPv6.SetText() to:", all) + me.workingIPv6.SetText(all) } var a []string @@ -296,6 +323,9 @@ func statusGrid(n *gui.Node) { gridP.NewLabel("DNS Status =") me.DnsStatus = gridP.NewLabel("unknown") + me.statusIPv6 = cloudflare.NewOneLiner(gridP, "IPv6 working") + me.statusIPv6.Set("known") + gridP.NewLabel("hostname =") me.hostnameStatus = gridP.NewLabel("invalid") @@ -315,9 +345,6 @@ func statusGrid(n *gui.Node) { ng := n.NewGroup("TODO:") gridP = ng.NewGrid("nut2", 2, 2) - gridP.NewLabel("IPv6 working =") - gridP.NewLabel("unknown") - gridP.NewLabel("ping.wit.com =") gridP.NewLabel("unknown") @@ -337,26 +364,63 @@ func updateDNS() { if (h == "") { h = "test.wit.com" } + + me.digStatus.Update() + // log.Println("digAAAA()") aaaa = digAAAA(h) debug(LogNow, "digAAAA() =", aaaa) + // log.Println(SPEW, me) if (aaaa == nil) { debug(LogError, "There are no DNS AAAA records for hostname: ", h) + me.DnsAAAA.SetText("(none)") + if (cloudflare.CFdialog.TypeNode != nil) { + cloudflare.CFdialog.TypeNode.SetText("AAAA new") + } + + if (cloudflare.CFdialog.NameNode != nil) { + cloudflare.CFdialog.NameNode.SetText(me.hostname) + } + + d := deleteAAA() + if (d != "") { + if (cloudflare.CFdialog.ValueNode != nil) { + cloudflare.CFdialog.ValueNode.SetText(d) + } + } + m := missingAAAA() + if (m != "") { + if (cloudflare.CFdialog.ValueNode != nil) { + cloudflare.CFdialog.ValueNode.SetText(m) + } + /* + rr := &cloudflare.RRT{ + Type: "AAAA", + Name: me.hostname, + Ttl: "Auto", + Proxied: false, + Content: m, + } + cloudflare.Update(rr) + */ + } } - broken := displayDNS() // update the GUI based on dig results + status := displayDNS() // update the GUI based on dig results + me.DnsStatus.SetText(status) - if (broken == 1) { - me.DnsStatus.SetText("PARTLY WORKING") - } else if (broken == 2) { - me.DnsStatus.SetText("WORKING") - } else { - me.DnsStatus.SetText("BROKEN") - me.fix.Enable() + if me.digStatus.Ready() { + if me.digStatus.IPv6() { + me.statusIPv6.Set("IPv6 WORKING") + } else { + me.statusIPv6.Set("Need VPN") + } } + + // me.fix.Enable() + user, _ := user.Current() - spew.Dump(user) log.Println("os.Getuid =", user.Username, os.Getuid()) if (me.uid != nil) { me.uid.SetText(user.Username + " (" + strconv.Itoa(os.Getuid()) + ")") |
