summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linuxstatus/draw.go1
-rw-r--r--linuxstatus/hostname.go11
-rw-r--r--linuxstatus/linuxloop.go51
-rw-r--r--linuxstatus/net.go7
-rw-r--r--linuxstatus/structs.go1
-rw-r--r--linuxstatus/unix.go4
6 files changed, 61 insertions, 14 deletions
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)