From a33eca708a44bb8b9af1790413d56236dc504295 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sat, 16 Dec 2023 09:02:59 -0600 Subject: [PATCH] gocui mode works again Signed-off-by: Jeff Carr --- .gitignore | 1 + bash.go | 5 ++-- fsnotify.go | 17 ++++++----- hostname.go | 26 ++++++++++++---- log.go | 5 +++- net.go | 85 ++++++++++++++++++++++++++-------------------------- nsupdate.go | 7 +++-- rtnetlink.go | 9 +++--- unix.go | 9 +++--- 9 files changed, 94 insertions(+), 70 deletions(-) diff --git a/.gitignore b/.gitignore index 5f076b3..fac511a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ control-panel-dns /files/* /*.deb *.swp +/plugins/* diff --git a/bash.go b/bash.go index 2f4b8ca..5e63e5f 100644 --- a/bash.go +++ b/bash.go @@ -2,6 +2,7 @@ package main import ( "io" + "log" "os" "os/exec" "os/signal" @@ -29,7 +30,7 @@ func test() error { go func() { for range ch { if err := pty.InheritSize(os.Stdin, ptmx); err != nil { - log("error resizing pty: %s", err) + log.Println("error resizing pty: %s", err) } } }() @@ -53,7 +54,7 @@ func test() error { func mainBash() { if err := test(); err != nil { - log(logError, "exit in mainBash()") + log.Println(logError, "exit in mainBash()") exit(err) } } diff --git a/fsnotify.go b/fsnotify.go index cff67b7..8e00527 100644 --- a/fsnotify.go +++ b/fsnotify.go @@ -3,7 +3,8 @@ package main // Watches for changes to a directory. Works cross-platform import ( - "github.com/fsnotify/fsnotify" + "log" + "github.com/fsnotify/fsnotify" ) // This would be a really dumb way to watch for new network interfaces @@ -13,7 +14,7 @@ func watchSysClassNet() { // Create new watcher. watcher, err := fsnotify.NewWatcher() if err != nil { - log(logError, "watchSysClassNet() failed:", err) + log.Println(logError, "watchSysClassNet() failed:", err) return } defer watcher.Close() @@ -26,15 +27,15 @@ func watchSysClassNet() { if !ok { return } - log("event:", event) + log.Println("event:", event) if event.Has(fsnotify.Write) { - log("modified file:", event.Name) + log.Println("modified file:", event.Name) } case err, ok := <-watcher.Errors: if !ok { return } - log("error:", err) + log.Println("error:", err) } } }() @@ -42,7 +43,7 @@ func watchSysClassNet() { // Add a path. err = watcher.Add("/tmp") if err != nil { - log(logError, "watchSysClassNet() watcher.Add() failed:", err) + log.Println(logError, "watchSysClassNet() watcher.Add() failed:", err) return } @@ -65,12 +66,12 @@ func fsnotifyNetworkInterfaceChanges() error { for { select { case event := <-watcher.Events: - log("fsnotifyNetworkInterfaceChanges() event =", event) + log.Println("fsnotifyNetworkInterfaceChanges() event =", event) if event.Op&fsnotify.Create == fsnotify.Create { // Do something on network interface creation } case err := <-watcher.Errors: - log("fsnotifyNetworkInterfaceChanges() event err =", err) + log.Println("fsnotifyNetworkInterfaceChanges() event err =", err) return err } } diff --git a/hostname.go b/hostname.go index b4b0d42..cf033df 100644 --- a/hostname.go +++ b/hostname.go @@ -5,7 +5,10 @@ package main -// import "net" +import ( + "log" + "git.wit.org/wit/shell" +) // will try to get this hosts FQDN import "github.com/Showmax/go-fqdn" @@ -21,7 +24,7 @@ func getHostname() { var s string = "gui.Label == nil" s, err = fqdn.FqdnHostname() if (err != nil) { - log("FQDN hostname error =", err) + log.Println("FQDN hostname error =", err) return } if (me.fqdn != nil) { @@ -31,19 +34,30 @@ func getHostname() { me.changed = true } } - log("FQDN =", s) + log.Println("FQDN =", s) +} + +// returns true if the hostname is good +// check that all the OS settings are correct here +// On Linux, /etc/hosts, /etc/hostname +// and domainname and hostname +func goodHostname(h string) bool { + hostname := shell.Cat("/etc/hostname") + log.Println("hostname =", hostname) + + return false } func dnsAAAA(s string) []string { var aaaa []string // lookup the IP address from DNS rrset := dnssecsocket.Dnstrace(s, "AAAA") - log(args.VerboseDNS, SPEW, rrset) + log.Println(args.VerboseDNS, SPEW, rrset) for i, rr := range rrset { - log(args.VerboseDNS, "r.Answer =", i, rr) + log.Println(args.VerboseDNS, "r.Answer =", i, rr) ipaddr := dns.Field(rr, 1) aaaa = append(aaaa, ipaddr) } - log(args.VerboseDNS, "aaaa =", aaaa) + log.Println(args.VerboseDNS, "aaaa =", aaaa) return aaaa } diff --git a/log.go b/log.go index aa67acf..b0994c0 100644 --- a/log.go +++ b/log.go @@ -1,6 +1,7 @@ package main import ( + "log" witlog "git.wit.org/wit/gui/log" ) @@ -15,16 +16,18 @@ var SPEW witlog.Spewt // var log interface{} +/* func log(a ...any) { witlog.Where = "wit/gui" witlog.Log(a...) } +*/ func sleep(a ...any) { witlog.Sleep(a...) } func exit(a ...any) { - log(logError, "got to log() exit") + log.Println(logError, "got to log() exit") witlog.Exit(a...) } diff --git a/net.go b/net.go index fb3b417..e6d3d07 100644 --- a/net.go +++ b/net.go @@ -2,6 +2,7 @@ package main import ( + "log" "net" "strings" ) @@ -17,21 +18,21 @@ func watchNetworkInterfaces() { // Set up a notification channel notification := make(chan net.Interface) - log(DEBUGNET, "watchNet()") + log.Println(DEBUGNET, "watchNet()") // Start goroutine to watch for changes go func() { - log(DEBUGNET, "watchNet() func") + log.Println(DEBUGNET, "watchNet() func") for { - log(DEBUGNET, "forever loop start") + log.Println(DEBUGNET, "forever loop start") // Check for changes in each interface for _, i := range interfaces { - log(DEBUGNET, "something on i =", i) + log.Println(DEBUGNET, "something on i =", i) if status := i.Flags & net.FlagUp; status != 0 { notification <- i - log(DEBUGNET, "something on i =", i) + log.Println(DEBUGNET, "something on i =", i) } } - log(DEBUGNET, "forever loop end") + log.Println(DEBUGNET, "forever loop end") } }() } @@ -43,20 +44,20 @@ func IsIPv6(address string) bool { func (t *IPtype) IsReal() bool { if (t.ip.IsPrivate() || t.ip.IsLoopback() || t.ip.IsLinkLocalUnicast()) { - log(DEBUGNET, "\t\tIP is Real = false") + log.Println(DEBUGNET, "\t\tIP is Real = false") return false } else { - log(DEBUGNET, "\t\tIP is Real = true") + log.Println(DEBUGNET, "\t\tIP is Real = true") return true } } func IsReal(ip *net.IP) bool { if (ip.IsPrivate() || ip.IsLoopback() || ip.IsLinkLocalUnicast()) { - log(DEBUGNET, "\t\tIP is Real = false") + log.Println(DEBUGNET, "\t\tIP is Real = false") return false } else { - log(DEBUGNET, "\t\tIP is Real = true") + log.Println(DEBUGNET, "\t\tIP is Real = true") return true } } @@ -73,7 +74,7 @@ func renameInterface(i *net.Interface) { func checkInterface(i net.Interface) { val, ok := me.ifmap[i.Index] if ! ok { - log(i.Name, "is a new network interface. The linux kernel index =", i.Index) + log.Println(i.Name, "is a new network interface. The linux kernel index =", i.Index) me.ifmap[i.Index] = new(IFtype) me.ifmap[i.Index].gone = false me.ifmap[i.Index].iface = &i @@ -85,9 +86,9 @@ func checkInterface(i net.Interface) { return } me.ifmap[i.Index].gone = false - log(args.VerboseNet, "me.ifmap[i] does exist. Need to compare everything.", i.Index, i.Name, val.iface.Index, val.iface.Name) + log.Println(args.VerboseNet, "me.ifmap[i] does exist. Need to compare everything.", i.Index, i.Name, val.iface.Index, val.iface.Name) if (val.iface.Name != i.Name) { - log(val.iface.Name, "has changed to it's name to", i.Name) + log.Println(val.iface.Name, "has changed to it's name to", i.Name) me.ifmap[i.Index].iface = &i me.changed = true if (me.Interfaces != nil) { @@ -125,14 +126,14 @@ func checkDNS() (map[string]*IPtype, map[string]*IPtype) { ipt = "IPv6" } if (t.IsReal()) { - log("\tIP is Real ", ipt, i.Index, i.Name, s) + log.Println("\tIP is Real ", ipt, i.Index, i.Name, s) if (t.ipv6) { ipv6s[s] = t } else { ipv4s[s] = t } } else { - log("\tIP is not Real", ipt, i.Index, i.Name, s) + log.Println("\tIP is not Real", ipt, i.Index, i.Name, s) } } return ipv6s, ipv4s @@ -140,14 +141,14 @@ func checkDNS() (map[string]*IPtype, map[string]*IPtype) { // Will figure out if an IP address is new func checkIP(ip *net.IPNet, i net.Interface) bool { - log(args.VerboseNet, "\t\taddr.(type) = *net.IPNet") - log(args.VerboseNet, "\t\taddr.(type) =", ip) + log.Println(args.VerboseNet, "\t\taddr.(type) = *net.IPNet") + log.Println(args.VerboseNet, "\t\taddr.(type) =", ip) var realip string realip = ip.IP.String() val, ok := me.ipmap[realip] if ok { - log(args.VerboseNet, val.ipnet.IP.String(), "is already a defined IP address") + log.Println(args.VerboseNet, val.ipnet.IP.String(), "is already a defined IP address") me.ipmap[realip].gone = false return false } @@ -174,14 +175,14 @@ func checkIP(ip *net.IPNet, i net.Interface) bool { } } if (IsReal(&ip.IP)) { - log("\tIP is Real ", t, i.Index, i.Name, realip) + log.Println("\tIP is Real ", t, i.Index, i.Name, realip) } else { - log("\tIP is not Real", t, i.Index, i.Name, realip) + log.Println("\tIP is not Real", t, i.Index, i.Name, realip) } - log(args.VerboseNet, "\t\tIP is IsPrivate() =", ip.IP.IsPrivate()) - log(args.VerboseNet, "\t\tIP is IsLoopback() =", ip.IP.IsLoopback()) - log(args.VerboseNet, "\t\tIP is IsLinkLocalUnicast() =", ip.IP.IsLinkLocalUnicast()) - // log("HERE HERE", "realip =", realip, "me.ip[realip]=", me.ipmap[realip]) + log.Println(args.VerboseNet, "\t\tIP is IsPrivate() =", ip.IP.IsPrivate()) + log.Println(args.VerboseNet, "\t\tIP is IsLoopback() =", ip.IP.IsLoopback()) + log.Println(args.VerboseNet, "\t\tIP is IsLinkLocalUnicast() =", ip.IP.IsLinkLocalUnicast()) + // log.Println("HERE HERE", "realip =", realip, "me.ip[realip]=", me.ipmap[realip]) return true } @@ -189,25 +190,25 @@ func scanInterfaces() { me.changed = false ifaces, _ := net.Interfaces() // me.ifnew = ifaces - log(DEBUGNET, SPEW, ifaces) + log.Println(DEBUGNET, SPEW, ifaces) for _, i := range ifaces { addrs, _ := i.Addrs() - // log("range ifaces = ", i) + // log.Println("range ifaces = ", i) checkInterface(i) - log(args.VerboseNet, "*net.Interface.Name = ", i.Name, i.Index) - log(args.VerboseNet, SPEW, i) - log(DEBUGNET, SPEW, addrs) + log.Println(args.VerboseNet, "*net.Interface.Name = ", i.Name, i.Index) + log.Println(args.VerboseNet, SPEW, i) + log.Println(DEBUGNET, SPEW, addrs) for _, addr := range addrs { - log(DEBUGNET, "\taddr =", addr) - log(DEBUGNET, SPEW, addrs) + log.Println(DEBUGNET, "\taddr =", addr) + log.Println(DEBUGNET, SPEW, addrs) ips, _ := net.LookupIP(addr.String()) - log(DEBUGNET, "\tLookupIP(addr) =", ips) + log.Println(DEBUGNET, "\tLookupIP(addr) =", ips) switch v := addr.(type) { case *net.IPNet: checkIP(v, i) - // log("\t\tIP is () =", ip.()) + // log.Println("\t\tIP is () =", ip.()) default: - log(DEBUGNET, "\t\taddr.(type) = NO IDEA WHAT TO DO HERE v =", v) + log.Println(DEBUGNET, "\t\taddr.(type) = NO IDEA WHAT TO DO HERE v =", v) } } } @@ -217,12 +218,12 @@ func scanInterfaces() { for s, t := range me.ipmap { if (t.ipv4) { all4 += s + "\n" - log("IPv4 =", s) + log.Println("IPv4 =", s) } else if (t.ipv6) { all6 += s + "\n" - log("IPv6 =", s) + log.Println("IPv6 =", s) } else { - log("???? =", s) + log.Println("???? =", s) } } all4 = strings.TrimSpace(all4) @@ -235,7 +236,7 @@ func scanInterfaces() { func deleteChanges() { for i, t := range me.ifmap { if (t.gone) { - log("DELETE int =", i, "name =", t.name, t.iface) + log.Println("DELETE int =", i, "name =", t.name, t.iface) delete(me.ifmap, i) me.changed = true } @@ -243,10 +244,10 @@ func deleteChanges() { } for s, t := range me.ipmap { if (t.gone) { - log("DELETE name =", s, "IPv4 =", t.ipv4) - log("DELETE name =", s, "IPv6 =", t.ipv6) - log("DELETE name =", s, "iface =", t.iface) - log("DELETE name =", s, "ip =", t.ip) + log.Println("DELETE name =", s, "IPv4 =", t.ipv4) + log.Println("DELETE name =", s, "IPv6 =", t.ipv6) + log.Println("DELETE name =", s, "iface =", t.iface) + log.Println("DELETE name =", s, "ip =", t.ip) delete(me.ipmap, s) me.changed = true } diff --git a/nsupdate.go b/nsupdate.go index af873a2..84f607d 100644 --- a/nsupdate.go +++ b/nsupdate.go @@ -6,6 +6,7 @@ package main import ( + "log" "os" ) @@ -16,17 +17,17 @@ import ( func nsupdate() { var tsigSecret string - log(true, "nsupdate() START") + log.Println(true, "nsupdate() START") cmd := "go-nsupdate --tsig-algorithm=hmac-sha512" tsigSecret = os.Getenv("TIG_SECRET") cmd += " --tig-secret=\"" + tsigSecret + "\"" cmd += " -i wlo1 " + me.hostname - log(true, "nsupdate() RUN:", cmd) + log.Println(true, "nsupdate() RUN:", cmd) for s, t := range me.ipmap { if (t.IsReal()) { if (t.ipv6) { - log(true, "nsupdate() found real AAAA =", s, "on iface", t.iface.Name) + log.Println(true, "nsupdate() found real AAAA =", s, "on iface", t.iface.Name) } } } diff --git a/rtnetlink.go b/rtnetlink.go index 4185c99..46898b5 100644 --- a/rtnetlink.go +++ b/rtnetlink.go @@ -1,6 +1,7 @@ package main import ( + "log" "github.com/jsimonetti/rtnetlink" ) @@ -9,7 +10,7 @@ func Example_listLink() { // Dial a connection to the rtnetlink socket conn, err := rtnetlink.Dial(nil) if err != nil { - log(logError, "Example_listLink() failed", err) + log.Println(logError, "Example_listLink() failed", err) return } defer conn.Close() @@ -17,9 +18,9 @@ func Example_listLink() { // Request a list of interfaces msg, err := conn.Link.List() if err != nil { - log(err) + log.Println(err) } - log("%#v", msg) - log(SPEW, msg) + log.Println("%#v", msg) + log.Println(SPEW, msg) } diff --git a/unix.go b/unix.go index 3660095..c9b5cc0 100644 --- a/unix.go +++ b/unix.go @@ -5,6 +5,7 @@ package main import ( + "log" "os" "os/exec" "net" @@ -22,7 +23,7 @@ func Escalate() { cmd.Stderr = os.Stderr err := cmd.Run() if err != nil { - log(logError, "exit in Escalate()") + log.Println(logError, "exit in Escalate()") exit(err) } } @@ -37,17 +38,17 @@ func DumpPublicDNSZone(zone string) { panic(err) } for _, entry := range entries { - log(entry) + log.Println(entry) } } func dumpIPs(host string) { ips, err := net.LookupIP(host) if err != nil { - log(logError, "dumpIPs() failed:", err) + log.Println(logError, "dumpIPs() failed:", err) } for _, ip := range ips { - log(host, ip) + log.Println(host, ip) } }