window titles update to correct values

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-01-07 07:09:59 -06:00
parent 930bdc941b
commit 807b3be94f
10 changed files with 101 additions and 76 deletions

View File

@ -245,6 +245,14 @@ func (ds *digStatus) updateDnsStatus() {
out = shell.Run(cmd)
log.Log(DNS, "makeDnsStatusGrid() dig", out)
me.digStatus.set(ds.DnsDigTCP, out)
/*
g2.NewButton("dig +trace", func () {
log.Log(NOW, "TODO: redo this")
// o := shell.Run("dig +trace +noadditional DS " + me.hostname + " @8.8.8.8")
// log.Println(o)
})
*/
}
func (ds *digStatus) makeHttpStatusGrid() {

19
gui.go
View File

@ -5,6 +5,7 @@ import (
"time"
"os"
"strings"
"sort"
"go.wit.com/log"
@ -12,7 +13,7 @@ import (
"go.wit.com/gui/gadgets"
"go.wit.com/gui/cloudflare"
"go.wit.com/gui/debugger"
"go.wit.com/control-panels/dns/linuxstatus"
// "go.wit.com/control-panels/dns/linuxstatus"
)
// This setups up the dns control panel window
@ -43,17 +44,6 @@ func debugTab(title string) {
updateDNS()
})
g2.NewButton("dig +trace", func () {
log.Log(NOW, "TODO: redo this")
// o := shell.Run("dig +trace +noadditional DS " + me.hostname + " @8.8.8.8")
// log.Println(o)
})
g2.NewButton("getProcessNameByPort()", func () {
processName := linuxstatus.GetProcessNameByPort(53)
log.Info("Process with port 53:", processName)
})
g2 = me.debug.Box().NewGroup("debugging options")
// makes a slider widget
@ -93,7 +83,8 @@ func displayDNS() string {
var a []string
a = append(a, "fixme")
all = sortLines(strings.Join(a, "\n"))
sort.Strings(a)
all = strings.Join(a, "\n")
if (all == "") {
log.Log(NOW, "THERE IS NOT a real A DNS ENTRY")
all = "CNAME ipv6.wit.com"
@ -145,7 +136,7 @@ func mainWindow(title string) {
statusGrid(me.window.Box())
gr = me.window.Box().NewGroup("debugging")
gr.NewButton("hostname status", func () {
me.statusDNSbutton = gr.NewButton("hostname status", func () {
if ! me.statusDNS.Ready() {return}
me.statusDNS.window.Toggle()
})

View File

@ -11,6 +11,7 @@ import (
"time"
"reflect"
"strings"
"sort"
"errors"
"go.wit.com/log"
@ -22,7 +23,6 @@ type hostnameStatus struct {
ready bool
hidden bool
// hostname string // my hostname. Example: "test.wit.com"
lastname string // used to watch for changes in the hostname
window *gadgets.BasicWindow
@ -33,14 +33,12 @@ type hostnameStatus struct {
statusIPv4 *gadgets.OneLiner
statusIPv6 *gadgets.OneLiner
// Details Group
hostShort *gadgets.OneLiner
hostname *gadgets.OneLiner
domainname *gadgets.OneLiner
// what the current IP address your network has given you
// what the current IP addresses your network has given you
currentIPv4 *gadgets.OneLiner
currentIPv6 *gadgets.OneLiner
currentAAAA string
// what the DNS servers have
NSrr *gadgets.OneLiner
@ -81,7 +79,7 @@ func NewHostnameStatusWindow(p *gui.Node) *hostnameStatus {
group = hs.window.Box().NewGroup("Details")
grid = group.NewGrid("LookupDetails", 2, 2)
hs.hostShort = gadgets.NewOneLiner(grid, "hostname -s")
hs.hostname = gadgets.NewOneLiner(grid, "hostname")
hs.domainname = gadgets.NewOneLiner(grid, "domain name")
hs.currentIPv4 = gadgets.NewOneLiner(grid, "Current IPv4")
hs.currentIPv6 = gadgets.NewOneLiner(grid, "Current IPv6")
@ -121,12 +119,6 @@ func NewHostnameStatusWindow(p *gui.Node) *hostnameStatus {
return hs
}
/*
func (hs *hostnameStatus) ValidHostname() bool {
return goodHostname()
}
*/
func (hs *hostnameStatus) Domain() string {
if ! hs.Ready() {return ""}
return hs.domainname.Get()
@ -137,34 +129,6 @@ func (hs *hostnameStatus) API() string {
return hs.dnsAPI.Get()
}
/*
func (hs *hostnameStatus) deleteDNSrecord(value string) bool {
log.Info("deleteDNSrecord() START for", value)
log.Info("deleteDNSrecord() hostname =", me.status.GetHostname())
log.Info("deleteDNSrecord() domain =", hs.Domain())
log.Info("deleteDNSrecord() DNS API Provider =", hs.API())
if (hs.API() == "cloudflare") {
log.Info("deleteDNSrecord() Try to delete via cloudflare")
return cloudflare.Delete(hs.Domain(), me.status.GetHostname(), value)
}
return false
}
func (hs *hostnameStatus) createDNSrecord(value string) bool {
log.Info("createDNSrecord() START for", value)
log.Info("createDNSrecord() hostname =", me.status.GetHostname())
log.Info("createDNSrecord() domain =", hs.Domain())
log.Info("createDNSrecord() DNS API Provider =", hs.API())
if (hs.API() == "cloudflare") {
log.Warn("createDNSrecord() Try to create via cloudflare:", me.status.GetHostname(), value)
return cloudflare.Create(hs.Domain(), me.status.GetHostname(), value)
}
return false
}
*/
func (hs *hostnameStatus) Update() {
log.Info("hostnameStatus() Update() START")
if hs == nil {
@ -282,7 +246,7 @@ func (hs *hostnameStatus) missingAAAA() bool {
func (hs *hostnameStatus) GetIPv6() []string {
if ! hs.Ready() { return nil}
return strings.Split(hs.currentAAAA, "\n")
return strings.Split(hs.dnsAAAA.Get(), "\n")
}
func (hs *hostnameStatus) updateStatus() {
@ -291,9 +255,27 @@ func (hs *hostnameStatus) updateStatus() {
var vals []string
log.Log(STATUS, "updateStatus() START")
hs.hostShort.Set(me.statusOS.GetHostShort())
// copy the OS status over
lasthostname := hs.hostname.Get()
hostname := me.statusOS.GetHostname()
// hostname changed or was setup for the first time. Set the window title, etc
if lasthostname != hostname {
me.changed = true
hs.hostname.Set(hostname)
hs.window.Title(hostname + " Status")
me.statusDNSbutton.Set(hostname + " status")
}
hs.domainname.Set(me.statusOS.GetDomainName())
tmp := me.statusOS.GetIPv4()
sort.Strings(tmp)
hs.currentIPv4.Set(strings.Join(tmp, "\n"))
tmp = me.statusOS.GetIPv6()
sort.Strings(tmp)
hs.currentIPv6.Set(strings.Join(tmp, "\n"))
if me.statusOS.ValidHostname() {
vals = lookupDoH(me.statusOS.GetHostname(), "AAAA")
@ -315,7 +297,8 @@ func (hs *hostnameStatus) updateStatus() {
// hs.dnsAction.SetText("DELETE")
}
}
hs.currentAAAA = strings.Join(vals, "\n")
sort.Strings(vals)
hs.dnsAAAA.Set(strings.Join(vals, "\n"))
vals = lookupDoH(me.statusOS.GetHostname(), "A")
log.Log(STATUS, "IPv4 Addresses for ", me.statusOS.GetHostname(), "=", vals)
@ -334,11 +317,6 @@ func (hs *hostnameStatus) updateStatus() {
}
}
// hs.currentIPv4.Set(me.IPv4.S)
// hs.currentIPv6.Set(me.IPv6.S)
hs.currentIPv4.Set("get this from linuxStatus")
hs.currentIPv6.Set("get this from linuxStatus")
if hs.IPv4() && hs.IPv6() {
hs.status.Set("GOOD")
} else {

View File

@ -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 =")

View File

@ -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")

View File

@ -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)
}
/*

View File

@ -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")
}

View File

@ -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

View File

@ -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)

View File

@ -59,6 +59,7 @@ type Host struct {
statusIPv6 *gadgets.OneLiner
digStatusButton *gui.Node
statusDNSbutton *gui.Node
witcom *gadgets.BasicWindow
fixButton *gui.Node
fixWindow *smartwindow.SmartWindow