100 lines
2.4 KiB
Go
100 lines
2.4 KiB
Go
// 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 (
|
|
"io/ioutil"
|
|
"os"
|
|
"os/user"
|
|
"sort"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"go.wit.com/log"
|
|
)
|
|
|
|
func linuxLoop() {
|
|
me.changed = false
|
|
|
|
// 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.String() {
|
|
log.Log(CHANGE, "realA() your real IPv6 addresses changed")
|
|
me.changed = true
|
|
me.workingIPv4.SetText(tmp)
|
|
}
|
|
|
|
// get all the real AAAA records from all the network interfaces linux can see
|
|
aaaa := realAAAA()
|
|
sort.Strings(aaaa)
|
|
tmp = strings.Join(aaaa, "\n")
|
|
if tmp != me.workingIPv6.String() {
|
|
log.Log(CHANGE, "realAAAA() your real IPv6 addresses changed")
|
|
me.changed = true
|
|
me.workingIPv6.SetText(tmp)
|
|
}
|
|
|
|
user, _ := user.Current()
|
|
tmp = user.Username + " (" + strconv.Itoa(os.Getuid()) + ")"
|
|
if tmp != me.uid.String() {
|
|
log.Log(CHANGE, "os.Getuid =", user.Username, os.Getuid())
|
|
me.changed = true
|
|
me.uid.SetText(tmp)
|
|
}
|
|
|
|
content, _ := ioutil.ReadFile("/etc/resolv.conf")
|
|
var ns []string
|
|
for _, line := range strings.Split(string(content), "\n") {
|
|
parts := strings.Split(line, " ")
|
|
if len(parts) > 1 {
|
|
if parts[0] == "nameserver" {
|
|
ns = append(ns, parts[1])
|
|
}
|
|
}
|
|
}
|
|
sort.Strings(ns)
|
|
newNS := strings.Join(ns, "\n")
|
|
if newNS != me.resolver.String() {
|
|
log.Log(CHANGE, "resolver changed in /etc/resolv.conf to", ns)
|
|
me.changed = true
|
|
me.resolver.SetText(newNS)
|
|
}
|
|
|
|
/*
|
|
processName := getProcessNameByPort(53)
|
|
fmt.Println("Process with port 53:", processName)
|
|
|
|
commPath := filepath.Join("/proc", proc.Name(), "comm")
|
|
comm, err := ioutil.ReadFile(commPath)
|
|
if err != nil {
|
|
return "", err // Error reading the process name
|
|
}
|
|
return strings.TrimSpace(string(comm)), nil
|
|
*/
|
|
}
|