diff options
| author | Jeff Carr <[email protected]> | 2024-01-06 01:41:33 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-01-06 01:41:33 -0600 |
| commit | ca3a01f478aa60fb039892d2cae6823188b5842c (patch) | |
| tree | 55e13fa31e58b6d1bdb1fc298200ccc458a9df5c /hostnameStatus.go | |
| parent | 2d1e3213261bee4640c11d8e1f526fcb6234e037 (diff) | |
make new resolverStatus()
also fix dns-https
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'hostnameStatus.go')
| -rw-r--r-- | hostnameStatus.go | 129 |
1 files changed, 81 insertions, 48 deletions
diff --git a/hostnameStatus.go b/hostnameStatus.go index eb158bf..2fd9bdd 100644 --- a/hostnameStatus.go +++ b/hostnameStatus.go @@ -23,7 +23,8 @@ type hostnameStatus struct { ready bool hidden bool - hostname string // my hostname. Example: "test.wit.com" + // hostname string // my hostname. Example: "test.wit.com" + lastname string // used to watch for changes in the hostname window *gadgets.BasicWindow @@ -60,9 +61,9 @@ func NewHostnameStatusWindow(p *gui.Node) *hostnameStatus { hs.ready = false hs.hidden = true - hs.hostname = me.hostname + // hs.hostname = me.hostname - hs.window = gadgets.NewBasicWindow(p, hs.hostname + " Status") + hs.window = gadgets.NewBasicWindow(p, "fix hostname here" + " Status") hs.window.Draw() hs.window.Hide() @@ -116,6 +117,25 @@ func NewHostnameStatusWindow(p *gui.Node) *hostnameStatus { return hs } +func (hs *hostnameStatus) ValidHostname() bool { + return goodHostname() +} + +func (hs *hostnameStatus) GetHostname() string { + return hs.lastname +} + +func (hs *hostnameStatus) SetHostname(hostname string) { + if hostname == hs.lastname {return} + log.Log(CHANGE, "the hostname is changing from", hs.lastname, "to", hostname) + hs.lastname = hostname + me.changed = true + + if (me.fqdn != nil) { + me.fqdn.SetText(hostname) + } +} + func (hs *hostnameStatus) Domain() string { if ! hs.Ready() {return ""} return hs.domainname.Get() @@ -128,26 +148,26 @@ func (hs *hostnameStatus) API() string { func (hs *hostnameStatus) deleteDNSrecord(value string) bool { log.Info("deleteDNSrecord() START for", value) - log.Info("deleteDNSrecord() hostname =", me.hostname) + log.Info("deleteDNSrecord() hostname =", me.status.GetHostname()) log.Info("deleteDNSrecord() domain =", hs.Domain()) log.Info("deleteDNSrecord() DNS API Provider =", hs.API()) if (hs.API() == "cloudflare") { log.Info("deleteDNSrecord() Try to delete via cloudflare") - return cloudflare.Delete(hs.Domain(), me.hostname, value) + return cloudflare.Delete(hs.Domain(), me.status.GetHostname(), value) } return false } func (hs *hostnameStatus) createDNSrecord(value string) bool { log.Info("createDNSrecord() START for", value) - log.Info("createDNSrecord() hostname =", me.hostname) + log.Info("createDNSrecord() hostname =", me.status.GetHostname()) log.Info("createDNSrecord() domain =", hs.Domain()) log.Info("createDNSrecord() DNS API Provider =", hs.API()) if (hs.API() == "cloudflare") { - log.Warn("createDNSrecord() Try to delete via cloudflare:", me.hostname, value) - return cloudflare.Create(hs.Domain(), me.hostname, value) + log.Warn("createDNSrecord() Try to create via cloudflare:", me.status.GetHostname(), value) + return cloudflare.Create(hs.Domain(), me.status.GetHostname(), value) } return false } @@ -229,10 +249,10 @@ func (hs *hostnameStatus) set(a any, s string) { if reflect.TypeOf(a) == reflect.TypeOf(ol) { ol = a.(*gadgets.OneLiner) if ol == nil { - log.Println("ol = nil", reflect.TypeOf(a), "a =", a) + // log.Println("ol = nil", reflect.TypeOf(a), "a =", a) return } - log.Println("SETTING ol:", ol) + // log.Println("SETTING ol:", ol) ol.Set(s) return } @@ -240,69 +260,82 @@ func (hs *hostnameStatus) set(a any, s string) { os.Exit(0) } +// returns true if AAAA record already exists in DNS +func (hs *hostnameStatus) existsAAAA(s string) bool { + log.Log(NOW, "existsAAAA() try to see if AAAA is already set", s) + return false +} + // figure out if I'm missing any IPv6 address in DNS func (hs *hostnameStatus) missingAAAA() bool { var aaaa []string aaaa = dhcpAAAA() for _, s := range aaaa { log.Log(NET, "my actual AAAA = ",s) - hs.dnsValue.SetText(s) - hs.dnsAction.SetText("CREATE") - return true + if hs.existsAAAA(s) { + log.Log(NOW, "my actual AAAA already exists in DNS =",s) + } else { + log.Log(NOW, "my actual AAAA is missing from DNS",s) + hs.dnsValue.SetText(s) + hs.dnsAction.SetText("CREATE") + return true + } } return false } func (hs *hostnameStatus) updateStatus() { + if ! hs.Ready() { return } var s string var vals []string - log.Info("updateStatus() START") - if ! hs.Ready() { return } + log.Log(STATUS, "updateStatus() START") hs.hostShort.Set(me.hostshort.S) hs.domainname.Set(me.domainname.S) - vals = lookupDoH(hs.hostname, "AAAA") + if hs.ValidHostname() { + vals = lookupDoH(hs.GetHostname(), "AAAA") - log.Println("DNS IPv6 Addresses for ", hs.hostname, "=", vals) - if len(vals) == 0 { - s = "(none)" - hs.setIPv6("Check for real IPv6 addresses here") - if hs.missingAAAA() { - hs.setIPv6("Add the missing IPv6 address") - } - } else { - for _, addr := range vals { - log.Println(addr) - s += addr + " (DELETE)" - hs.setIPv6("NEEDS DELETE") - hs.dnsValue.SetText(addr) - hs.dnsAction.SetText("DELETE") + log.Log(STATUS, "DNS IPv6 Addresses for ", hs.GetHostname(), "=", vals) + if len(vals) == 0 { + s = "(none)" + } else { + hs.setIPv6("Check for real IPv6 addresses here") + if hs.missingAAAA() { + hs.setIPv6("Add the missing IPv6 address") + } + for _, addr := range vals { + log.Log(STATUS, addr) + s += addr + " (DELETE)" + "\n" + hs.setIPv6("NEEDS DELETE") + hs.dnsValue.SetText(addr) + hs.dnsAction.SetText("DELETE") + } } - } - hs.set(hs.dnsAAAA, s) + hs.set(hs.dnsAAAA, s) - vals = lookupDoH(hs.hostname, "A") - log.Println("IPv4 Addresses for ", hs.hostname, "=", vals) - s = strings.Join(vals, "\n") - if (s == "") { - s = "(none)" - hs.setIPv4("NEEDS CNAME") - } - hs.set(hs.dnsA, s) + vals = lookupDoH(hs.GetHostname(), "A") + log.Log(STATUS, "IPv4 Addresses for ", hs.GetHostname(), "=", vals) + s = strings.Join(vals, "\n") + if (s == "") { + s = "(none)" + hs.setIPv4("NEEDS CNAME") + } + hs.set(hs.dnsA, s) - vals = lookupDoH(hs.hostname, "CNAME") - s = strings.Join(vals, "\n") - if (s != "") { - hs.set(hs.dnsA, "CNAME " + s) - hs.setIPv4("GOOD") + vals = lookupDoH(hs.GetHostname(), "CNAME") + s = strings.Join(vals, "\n") + if (s != "") { + hs.set(hs.dnsA, "CNAME " + s) + hs.setIPv4("GOOD") + } } hs.currentIPv4.Set(me.IPv4.S) hs.currentIPv6.Set(me.IPv6.S) - if hs.IPv4() && hs.IPv4() { + if hs.IPv4() && hs.IPv6() { hs.status.Set("GOOD") } else { hs.status.Set("BROKEN") @@ -312,7 +345,7 @@ func (hs *hostnameStatus) updateStatus() { } func (hs *hostnameStatus) Show() { - log.Info("hostnameStatus.Show() window") + log.Log(STATUS, "hostnameStatus.Show() window") if hs.hidden { hs.window.Show() } @@ -320,7 +353,7 @@ func (hs *hostnameStatus) Show() { } func (hs *hostnameStatus) Hide() { - log.Info("hostnameStatus.Hide() window") + log.Log(STATUS, "hostnameStatus.Hide() window") if ! hs.hidden { hs.window.Hide() } |
