summaryrefslogtreecommitdiff
path: root/linuxstatus/unix.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-01-06 05:24:11 -0600
committerJeff Carr <[email protected]>2024-01-06 05:24:11 -0600
commit3457aefa86ccc9bc6c4eda059e48ebcb8830b410 (patch)
tree525dca4d9ec74d26282521148cd4918d85081e9b /linuxstatus/unix.go
parentd2fb88cd584b8e7e60cb6315d9fb8d0d6ceac22f (diff)
add LinuxStatus()
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'linuxstatus/unix.go')
-rw-r--r--linuxstatus/unix.go97
1 files changed, 97 insertions, 0 deletions
diff --git a/linuxstatus/unix.go b/linuxstatus/unix.go
new file mode 100644
index 0000000..99509c0
--- /dev/null
+++ b/linuxstatus/unix.go
@@ -0,0 +1,97 @@
+// Various Linux/Unix'y things
+
+// https://wiki.archlinux.org/title/Dynamic_DNS
+
+package linuxstatus
+
+import (
+ "os"
+ "os/exec"
+ "net"
+ "bytes"
+ "fmt"
+ "strings"
+
+ "go.wit.com/log"
+ "go.wit.com/shell"
+)
+
+func CheckSuperuser() bool {
+ return os.Getuid() == 0
+}
+
+func Escalate() {
+ if os.Getuid() != 0 {
+ cmd := exec.Command("sudo", "./control-panel-dns") // TODO: get the actual path
+ cmd.Stdin = os.Stdin
+ cmd.Stdout = os.Stdout
+ cmd.Stderr = os.Stderr
+ err := cmd.Run()
+ if err != nil {
+ log.Error(err, "exit in Escalate()")
+ log.Exit(err)
+ }
+ }
+}
+
+// You need permission to do a zone transfer. Otherwise:
+// dig +noall +answer +multiline lab.wit.com any
+// dig +all +multiline fire.lab.wit.com # gives the zonefile header (ttl vals)
+func DumpPublicDNSZone(zone string) {
+ entries, err := net.LookupHost(zone)
+ if err != nil {
+ panic(err)
+ }
+ for _, entry := range entries {
+ log.Println(entry)
+ }
+}
+
+func dumpIPs(host string) {
+ ips, err := net.LookupIP(host)
+ if err != nil {
+ log.Error(err, "dumpIPs() failed")
+ }
+ for _, ip := range ips {
+ log.Println(host, ip)
+ }
+}
+
+/*
+ check if ddclient is installed, working, and/or configured
+ https://github.com/ddclient/ddclient
+*/
+func ddclient() {
+}
+
+/*
+ check if ddupdate is installed, working, and/or configured
+*/
+func ddupdate() {
+}
+
+func run(s string) string {
+ cmdArgs := strings.Fields(s)
+ // Define the command you want to run
+ // cmd := exec.Command(cmdArgs)
+ cmd := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...)
+
+ // Create a buffer to capture the output
+ var out bytes.Buffer
+
+ // Set the output of the command to the buffer
+ cmd.Stdout = &out
+
+ // Run the command
+ err := cmd.Run()
+ if err != nil {
+ fmt.Println("Error running command:", err)
+ return ""
+ }
+
+ tmp := shell.Chomp(out.String())
+ // Output the results
+ log.Info("Command Output:", tmp)
+
+ return tmp
+}