logic for comparing OS and DNS IPv6 addresses

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-01-07 15:27:44 -06:00
parent 837a8a4be4
commit 74bfddc1e4
2 changed files with 51 additions and 6 deletions

View File

@ -321,10 +321,55 @@ func (hs *hostnameStatus) updateStatus() {
} else { } else {
hs.status.Set("BROKEN") hs.status.Set("BROKEN")
} }
if hs.verifyIPv6() {
hs.statusIPv6.Set("WORKING")
} else {
hs.statusIPv6.Set("BROKEN")
}
}
// lookup the DNS provider func (hs *hostnameStatus) verifyIPv6() bool {
// hs.dnsAPI.Set(me.DnsAPI.S) var working bool = true
lookupNSprovider("wit.com") osAAAA := make(map[string]string)
dnsAAAA := make(map[string]string)
log.Log(INFO, "What are the AAAA resource records in the OS?")
tmp := me.statusOS.GetIPv6()
if len(tmp) == 0 {
// you don't have any IPv6 addresses in your OS right now
return false
}
for _, aaaa := range me.statusOS.GetIPv6() {
log.Log(INFO, "FOUND OS AAAA ip", aaaa)
osAAAA[aaaa] = "os"
}
log.Log(INFO, "What are the AAAA resource records in DNS?")
for _, aaaa := range me.statusDNS.GetIPv6() {
log.Log(INFO, "FOUND DNS AAAA ip", aaaa)
dnsAAAA[aaaa] = "dns"
}
for aaaa, _ := range dnsAAAA {
if osAAAA[aaaa] == "os" {
log.Log(INFO, "DNS AAAA is in OS", aaaa)
} else {
working = false
log.Log(INFO, "DNS AAAA is not in OS", aaaa)
}
}
for aaaa, _ := range osAAAA {
if dnsAAAA[aaaa] == "dns" {
log.Log(INFO, "OS AAAA is in DNS", aaaa)
} else {
working = false
log.Log(INFO, "OS AAAA is not in DNS", aaaa)
}
}
return working
} }
func (hs *hostnameStatus) Show() { func (hs *hostnameStatus) Show() {

View File

@ -88,7 +88,7 @@ func main() {
lastProvider := "unknown" lastProvider := "unknown"
go myTicker(10 * time.Second, "DNSloop", func() { go myTicker(10 * time.Second, "DNSloop", func() {
log.Log(CHANGE, "me.statusDNS.Update() START") log.Log(INFO, "me.statusDNS.Update() START")
me.statusDNS.Update() me.statusDNS.Update()
provider := me.statusDNS.GetDNSapi() provider := me.statusDNS.GetDNSapi()
@ -127,7 +127,7 @@ func main() {
}) })
// check the four known things to see if they are all WORKING // check the four known things to see if they are all WORKING
myTicker(3 * time.Second, "MAIN LOOP", func() { myTicker(10 * time.Second, "MAIN LOOP", func() {
if me.hostnameStatus.GetText() != "WORKING" { if me.hostnameStatus.GetText() != "WORKING" {
log.Log(CHANGE, "The hostname is not WORKING yet", me.hostnameStatus.GetText()) log.Log(CHANGE, "The hostname is not WORKING yet", me.hostnameStatus.GetText())
return return
@ -144,7 +144,7 @@ func main() {
log.Log(CHANGE, "The DNS API provider is not yet working", me.DnsAPIstatus.GetText()) log.Log(CHANGE, "The DNS API provider is not yet working", me.DnsAPIstatus.GetText())
return return
} }
log.Log(CHANGE, "EVERYTHING IS WORKING. YOU HAVE IPv6 BLISS") log.Log(CHANGE, "EVERYTHING IS WORKING. YOU HAVE IPv6 BLISS. TODO: don't check so often now")
}) })
} }