diff --git a/linuxstatus/draw.go b/linuxstatus/draw.go index 5b76b49..6b7d6bd 100644 --- a/linuxstatus/draw.go +++ b/linuxstatus/draw.go @@ -24,6 +24,7 @@ func draw(ls *LinuxStatus) { ls.uid = gadgets.NewOneLiner(ls.grid, "UID =") ls.IPv4 = gadgets.NewOneLiner(ls.grid, "Current IPv4 =") ls.IPv6 = gadgets.NewOneLiner(ls.grid, "Current IPv6 =") + ls.workingIPv4 = gadgets.NewOneLiner(ls.grid, "Real IPv4 =") ls.workingIPv6 = gadgets.NewOneLiner(ls.grid, "Real IPv6 =") // ls.nics = gadgets.NewOneLiner(ls.grid, "network intefaces =") diff --git a/linuxstatus/hostname.go b/linuxstatus/hostname.go index d31299f..184e593 100644 --- a/linuxstatus/hostname.go +++ b/linuxstatus/hostname.go @@ -4,8 +4,8 @@ package linuxstatus import ( "strings" + "io/ioutil" "go.wit.com/log" - "go.wit.com/shell" // will try to get this hosts FQDN "github.com/Showmax/go-fqdn" @@ -124,7 +124,14 @@ func lookupHostname() { // On Linux, /etc/hosts, /etc/hostname // and domainname and hostname func goodHostname() bool { - hostname := shell.Chomp(shell.Cat("/etc/hostname")) + content, err := ioutil.ReadFile("/etc/hostname") + if err != nil { + // this needs to be a fixWindow() error + log.Error(err) + } + + hostname := string(content) + log.Log(NOW, "hostname =", hostname) hs := run("hostname -s") diff --git a/linuxstatus/linuxloop.go b/linuxstatus/linuxloop.go index b2572d1..9127206 100644 --- a/linuxstatus/linuxloop.go +++ b/linuxstatus/linuxloop.go @@ -1,7 +1,13 @@ // GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 // Copyright (c) 2023 WIT.COM, Inc. + // This is a control panel for DNS +// This is the main Linux kernel / OS code +// to check your network settings are correct +// This does (and should do) no network or external checking +// This is just the state of your OS + package linuxstatus import ( @@ -9,30 +15,55 @@ import ( "os/user" "strconv" "strings" + "sort" "go.wit.com/log" ) func linuxLoop() { me.changed = false - duration := timeFunction(lookupHostname) - log.Log(INFO, "getHostname() execution Time: ", duration, "me.changed =", me.changed) - duration = timeFunction(scanInterfaces) - log.Log(NET, "scanInterfaces() execution Time: ", duration) + // checks for a VALID hostname + lookupHostname() + if me.changed { + log.Log(CHANGE, "lookupHostname() detected a change") + } + + // scans the linux network intefaces for your available IPv4 & IPv6 addresses + scanInterfaces() + if me.changed { + log.Log(CHANGE, "scanInterfaces() detected a change") + } for i, t := range me.ifmap { log.Log(NET, strconv.Itoa(i) + " iface = " + t.iface.Name) } + // get all the real A records from all the network interfaces linux can see + a := realA() + sort.Strings(a) + tmp := strings.Join(a, "\n") + if tmp != me.workingIPv4.Get() { + log.Log(CHANGE, "realAAAA() your real IPv6 addresses changed") + me.changed = true + me.workingIPv4.Set(tmp) + } + // get all the real AAAA records from all the network interfaces linux can see - tmp := strings.Join(realAAAA(), "\n") - tmp = sortLines(tmp) - me.workingIPv6.Set(tmp) + aaaa := realAAAA() + sort.Strings(aaaa) + tmp = strings.Join(aaaa, "\n") + if tmp != me.workingIPv6.Get() { + log.Log(CHANGE, "realAAAA() your real IPv6 addresses changed") + me.changed = true + me.workingIPv6.Set(tmp) + } user, _ := user.Current() - log.Log(INFO, "os.Getuid =", user.Username, os.Getuid()) - if (me.uid != nil) { - me.uid.Set(user.Username + " (" + strconv.Itoa(os.Getuid()) + ")") + tmp = user.Username + " (" + strconv.Itoa(os.Getuid()) + ")" + if tmp != me.uid.Get() { + log.Log(CHANGE, "os.Getuid =", user.Username, os.Getuid()) + me.changed = true + me.uid.Set(tmp) } /* diff --git a/linuxstatus/net.go b/linuxstatus/net.go index 2926946..7170765 100644 --- a/linuxstatus/net.go +++ b/linuxstatus/net.go @@ -269,3 +269,10 @@ func deleteChanges() bool { return changed } + +func (ls *LinuxStatus) GetIPv4() []string { + if ! me.Ready() {return nil} + tmp := "(none) fixme" + return strings.Split(tmp, "\n") +} + diff --git a/linuxstatus/structs.go b/linuxstatus/structs.go index de9936d..42fd420 100644 --- a/linuxstatus/structs.go +++ b/linuxstatus/structs.go @@ -35,6 +35,7 @@ type LinuxStatus struct { uid *gadgets.OneLiner IPv4 *gadgets.OneLiner IPv6 *gadgets.OneLiner + workingIPv4 *gadgets.OneLiner workingIPv6 *gadgets.OneLiner Interfaces *gui.Node speed *gadgets.OneLiner diff --git a/linuxstatus/unix.go b/linuxstatus/unix.go index 99509c0..88f64ec 100644 --- a/linuxstatus/unix.go +++ b/linuxstatus/unix.go @@ -13,7 +13,6 @@ import ( "strings" "go.wit.com/log" - "go.wit.com/shell" ) func CheckSuperuser() bool { @@ -89,7 +88,8 @@ func run(s string) string { return "" } - tmp := shell.Chomp(out.String()) + // Trim leading and trailing whitespace from each line + tmp := strings.TrimSpace(out.String()) // Output the results log.Info("Command Output:", tmp)