summaryrefslogtreecommitdiff
path: root/hostname.go
diff options
context:
space:
mode:
Diffstat (limited to 'hostname.go')
-rw-r--r--hostname.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/hostname.go b/hostname.go
index bf4c4a7..9b38d4a 100644
--- a/hostname.go
+++ b/hostname.go
@@ -3,8 +3,11 @@
package linuxstatus
import (
+ "fmt"
"io/ioutil"
+ "strings"
+ "go.wit.com/lib/gui/shell"
"go.wit.com/log"
// will try to get this hosts FQDN
@@ -80,6 +83,17 @@ func (ls *LinuxStatus) setHostShort() {
}
}
+// getDomainName extracts the domain name from a given hostname
+func getDomainName(hostname string) (string, error) {
+ parts := strings.Split(hostname, ".")
+ if len(parts) < 3 {
+ return "", fmt.Errorf("hostname '%s' is too short to extract a domain name", hostname)
+ }
+ // Join all parts except the first one, which is assumed to be a subdomain
+ domain := strings.Join(parts[1:], ".")
+ return domain, nil
+}
+
func lookupHostname() {
if !me.Ready() {
return
@@ -107,6 +121,27 @@ func lookupHostname() {
if hostfqdn != hostname {
log.Log(WARN, "hostname", hostname, "does not equal fqdn.FqdnHostname()", hostfqdn)
// TODO: figure out what is wrong
+ if dn == "(none)" {
+ realdn, err := getDomainName(hostfqdn)
+ if err == nil {
+ log.Log(WARN, "need to run: 'domainname", realdn, "' here")
+ me.changed = true
+ me.hostnameStatus.SetText("FIXING")
+ shell.RunPath("", []string{"domainname", realdn})
+ return
+ } else {
+ log.Log(WARN, "getDomainName() err =", err)
+ log.Log(WARN, "/etc/hostname is too short. let the user set the name here.")
+ // me.changed = true
+ me.hostnameStatus.SetText("INVALID DOMAIN NAME")
+ // return
+ }
+ }
+ log.Log(WARN, "don't know what to do here with domainname")
+ log.Log(WARN, "check that /etc/hostname is valid?")
+ // me.changed = true
+ me.hostnameStatus.SetText("UNKNOWN")
+ // return
}
var test string