diff options
| -rw-r--r-- | argv.go | 2 | ||||
| -rw-r--r-- | controlPanelWindow.go | 11 | ||||
| -rw-r--r-- | errorBox.go | 5 | ||||
| -rw-r--r-- | fix.go | 12 | ||||
| -rw-r--r-- | hostnameStatusWindow.go | 29 | ||||
| -rw-r--r-- | main.go | 2 | ||||
| -rw-r--r-- | structs.go | 2 | 
7 files changed, 46 insertions, 17 deletions
@@ -11,7 +11,7 @@ import (  )  var args struct { -	Daemon   bool `arg:"--daemon" help:"run without a gui"` +	Daemon bool `arg:"--daemon" help:"run without a gui"`  }  func init() { diff --git a/controlPanelWindow.go b/controlPanelWindow.go index c9e1917..dcdc59e 100644 --- a/controlPanelWindow.go +++ b/controlPanelWindow.go @@ -39,8 +39,15 @@ func makeMainWindow() {  		}  	} -	me.autofix = group.NewCheckbox("Auto-correct Errors") -	me.autofix.SetChecked(false) +	autofix := group.NewCheckbox("Auto-correct Errors").SetChecked(true) +	os.Setenv("DNS_AUTOCORRECT", "true") +	autofix.Custom = func() { +		if autofix.Checked() { +			os.Setenv("DNS_AUTOCORRECT", "true") +		} else { +			os.Unsetenv("DNS_AUTOCORRECT") +		} +	}  }  func statusGrid(n *gui.Node) { diff --git a/errorBox.go b/errorBox.go index b2605e5..6991683 100644 --- a/errorBox.go +++ b/errorBox.go @@ -5,6 +5,7 @@  package main  import ( +	"os"  	"time"  	"go.wit.com/gui" @@ -146,8 +147,8 @@ func (eb *errorBox) fix(key string) bool {  	}  	myErr := eb.fixes[key]  	log.Log(WARN, "should try to fix", myErr.problem.kind, "here. IP =", myErr.problem.aaaa) -	if !me.autofix.Checked() { -		log.Log(WARN, "not autofixing. autofix == false") +	if os.Getenv("DNS_AUTOCORRECT") != "true" { +		log.Log(WARN, "not autofixing. $DNS_AUTOCORRECT != true")  		log.Log(WARN, "problem.kind =", myErr.problem.kind)  		log.Log(WARN, "problem.action =", myErr.problem.action)  		log.Log(WARN, "problem.aaaa =", myErr.problem.aaaa) @@ -2,6 +2,8 @@  package main  import ( +	"strings" +  	"go.wit.com/lib/gadgets"  	"go.wit.com/lib/gui/cloudflare"  	"go.wit.com/log" @@ -68,12 +70,20 @@ func fixIPv6dns() bool {  	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) +		log.Log(WARN, "statusDNS.GetIPv6() FOUND DNS AAAA ip", aaaa)  		dnsAAAA[aaaa] = "dns"  	}  	// remove old DNS entries first  	for aaaa, _ := range dnsAAAA { +		aaaa = strings.TrimSpace(aaaa) +		if aaaa == "" { +			log.Log(WARN, "AAAA is blank") +			log.Log(WARN, "AAAA is blank") +			log.Log(WARN, "AAAA is blank sleep 10") +			log.Sleep(10) +			continue +		}  		if osAAAA[aaaa] == "os" {  			log.Log(INFO, "DNS AAAA is in     OS", aaaa)  		} else { diff --git a/hostnameStatusWindow.go b/hostnameStatusWindow.go index 5ce8ae9..c37f430 100644 --- a/hostnameStatusWindow.go +++ b/hostnameStatusWindow.go @@ -64,7 +64,7 @@ func InitHostnameStatus() *hostnameStatus {  	hs.hidden = true  	// hs.hostname = me.hostname -	hs.window = gadgets.RawBasicWindow("fix hostname here"+" Status") +	hs.window = gadgets.RawBasicWindow("fix hostname here" + " Status")  	hs.window.Make()  	// hs.window.Draw()  	// hs.window.Hide() @@ -118,7 +118,7 @@ func (hs *hostnameStatus) API() string {  }  func (hs *hostnameStatus) Update() { -	log.Info("hostnameStatus() Update() START") +	// log.Info("hostnameStatus() Update() START")  	if hs == nil {  		log.Error(errors.New("hostnameStatus() Update() hs == nil"))  		return @@ -136,7 +136,7 @@ func (hs *hostnameStatus) Update() {  	} else {  		hs.set(hs.speed, "FAST")  	} -	log.Info("hostnameStatus() Update() END") +	// log.Info("hostnameStatus() Update() END")  }  // Returns true if the status is valid @@ -227,7 +227,11 @@ func (hs *hostnameStatus) GetIPv6() []string {  	if !hs.Ready() {  		return nil  	} -	return strings.Split(hs.dnsAAAA.String(), "\n") +	// clean out any blank lines +	// todo: fix this whole hacky thing +	tmp := hs.dnsAAAA.String() +	tmp = strings.TrimSpace(tmp) +	return strings.Split(tmp, "\n")  }  func (hs *hostnameStatus) updateStatus() { @@ -305,7 +309,7 @@ func (hs *hostnameStatus) updateStatus() {  	}  	last := hs.statusIPv6.String() -	if hs.verifyIPv6() { +	if ok, err := hs.verifyIPv6(); ok {  		if last != "WORKING" {  			log.Log(CHANGE, "Your DNS IPv6 has started working.", me.statusOS.GetHostname(), "should now work")  			hs.changed = true @@ -314,7 +318,7 @@ func (hs *hostnameStatus) updateStatus() {  		}  	} else {  		if last != "BROKEN" { -			log.Log(CHANGE, "Your DNS entries for IPv6 have BROKEN") +			log.Log(CHANGE, "Your DNS entries for IPv6 have BROKEN", ok, err)  			hs.changed = true  			hs.statusIPv6.SetText("BROKEN")  			me.DnsStatus.SetText("BROKEN") @@ -322,8 +326,13 @@ func (hs *hostnameStatus) updateStatus() {  	}  } -func (hs *hostnameStatus) verifyIPv6() bool { +var ErrorNoIPv6 error = errors.New("OS has no IPv6") +var ErrorDeleteIPv6 error = errors.New("IPv6 Delete") +var ErrorCreateIPv6 error = errors.New("IPv6 Create") + +func (hs *hostnameStatus) verifyIPv6() (bool, error) {  	var working bool = true +	var err error = nil  	osAAAA := make(map[string]string)  	dnsAAAA := make(map[string]string) @@ -331,7 +340,7 @@ func (hs *hostnameStatus) verifyIPv6() bool {  	tmp := me.statusOS.GetIPv6()  	if len(tmp) == 0 {  		// you don't have any IPv6 addresses in your OS right now -		return false +		return false, ErrorNoIPv6  	}  	for _, aaaa := range me.statusOS.GetIPv6() {  		log.Log(INFO, "FOUND OS  AAAA ip", aaaa) @@ -351,6 +360,7 @@ func (hs *hostnameStatus) verifyIPv6() bool {  			working = false  			log.Log(INFO, "DNS AAAA is not in OS", aaaa)  			addToFixWindow("DELETE", aaaa) +			err = ErrorDeleteIPv6  		}  	} @@ -361,10 +371,11 @@ func (hs *hostnameStatus) verifyIPv6() bool {  			working = false  			log.Log(INFO, "OS  AAAA is not in DNS", aaaa)  			addToFixWindow("CREATE", aaaa) +			err = ErrorCreateIPv6  		}  	} -	return working +	return working, err  }  func (hs *hostnameStatus) Show() { @@ -47,7 +47,7 @@ func main() {  	// These are your problems  	me.problems = InitErrorBox(me.window.Box(), "Errors", "has problems?") -	me.problems.addIPerror(RR, USER, "1:1:1:1") +	// me.problems.addIPerror(RR, USER, "1:1:1:1")  	me.window.Show() @@ -66,7 +66,7 @@ type Host struct {  	showErrorsB     *gui.Node  	problems *errorBox -	autofix  *gui.Node +	// autofix  *gui.Node  }  type IPtype struct {  | 
