summaryrefslogtreecommitdiff
path: root/fix.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-01-06 19:58:58 -0600
committerJeff Carr <[email protected]>2024-01-06 19:58:58 -0600
commitcefe15539fc8f9d96a793c1aeea6e806cfc0944c (patch)
tree9569ccb0ca0598f53335c4866c9608323875518b /fix.go
parent53fbb4cb85ffe7be05aedfcb40a17bf8d15560ad (diff)
knows which AAAA records are broken!
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'fix.go')
-rw-r--r--fix.go65
1 files changed, 58 insertions, 7 deletions
diff --git a/fix.go b/fix.go
index 40179c5..8b9af1a 100644
--- a/fix.go
+++ b/fix.go
@@ -7,7 +7,7 @@ import (
func fix() bool {
log.Warn("")
- if ! me.status.Ready() {
+ if ! me.statusDNS.Ready() {
log.Warn("The IPv6 Control Panel is not Ready() yet")
return false
}
@@ -30,10 +30,10 @@ func fix() bool {
log.Warn("You must first figure out why you can't look up IPv6 addresses")
return false
}
- if ! me.status.IPv4() {
+ if ! me.statusDNS.IPv4() {
log.Warn("You do not have real IPv4 addresses. Nothing to fix here")
}
- if ! me.status.IPv6() {
+ if ! me.statusDNS.IPv6() {
log.Warn("IPv6 DNS is broken. Check what is broken here")
fixIPv6dns()
return false
@@ -44,12 +44,63 @@ func fix() bool {
func fixIPv6dns() {
log.Warn("What are my IPv6 addresses?")
- for _, aaaa := range me.statusOS.GetIPv6os() {
- log.Warn("FOUND AAAA ip", aaaa)
+ osAAAA := make(map[string]string)
+ dnsAAAA := make(map[string]string)
+
+ for _, aaaa := range me.statusOS.GetIPv6() {
+ log.Warn("FOUND OS AAAA ip", aaaa)
+ osAAAA[aaaa] = "os"
}
log.Warn("What are the AAAA resource records in DNS?")
- for _, aaaa := range me.status.GetIPv6dns() {
- log.Warn("FOUND AAAA ip", aaaa)
+ for _, aaaa := range me.statusDNS.GetIPv6() {
+ log.Warn("FOUND DNS AAAA ip", aaaa)
+ dnsAAAA[aaaa] = "dns"
+ }
+
+ // remove old DNS entries first
+ for aaaa, _ := range dnsAAAA {
+ if osAAAA[aaaa] == "dns" {
+ log.Warn("DNS AAAA is not in OS", aaaa)
+ if deleteFromDNS(aaaa) {
+ log.Warn("Delete AAAA", aaaa, "Worked")
+ } else {
+ log.Warn("Delete AAAA", aaaa, "Failed")
+ }
+ } else {
+ log.Warn("DNS AAAA is in OS", aaaa)
+ }
+ }
+
+ // now add new DNS entries
+ for aaaa, _ := range osAAAA {
+ if dnsAAAA[aaaa] == "dns" {
+ log.Warn("OS AAAA is in DNS", aaaa)
+ } else {
+ log.Warn("OS AAAA is not in DNS", aaaa)
+ if addToDNS(aaaa) {
+ log.Warn("Add AAAA", aaaa, "Worked")
+ } else {
+ log.Warn("Add AAAA", aaaa, "Failed")
+ }
+ }
+ }
+}
+
+func deleteFromDNS(aaaa string) bool {
+ log.Warn("deleteFromDNS", aaaa)
+ return false
+}
+
+func addToDNS(aaaa string) bool {
+ log.Warn("TODO: Add this to DNS !!!!", aaaa)
+ log.Warn("what is your API provider?")
+ return false
+}
+
+func exists(m map[string]bool, s string) bool {
+ if _, ok := m[s]; ok {
+ return true
}
+ return false
}