package hostname import ( "fmt" "strings" ) // for www.corp.wit.com retuns: // "www", "corp.wit.com", nil func GetDomainname() (string, string, error) { hname, err := osGetHostname() if err != nil { return hname, "", err } hname = strings.TrimSpace(hname) hname = strings.Trim(hname, ".") parts := strings.Split(hname, ".") if len(parts) == 0 { return "", "", fmt.Errorf("domainname not set") } if len(parts) == 1 { return parts[0], "", fmt.Errorf("domainname not set") } dname := strings.Join(parts[1:], ".") return hname, dname, nil } // splits hostname into first and last part // for www.corp.wit.com retuns: // "www", "corp.wit.com", nil func Split(hname string) (string, string, error) { hname = strings.TrimSpace(hname) hname = strings.Trim(hname, ".") parts := strings.Split(hname, ".") if len(parts) == 0 { return "", "", fmt.Errorf("domainname not set") } if len(parts) == 1 { return parts[0], "", fmt.Errorf("domainname not set") } dname := strings.Join(parts[1:], ".") return hname, dname, nil } func Join(hname string, dname string) string { hname = strings.TrimSpace(hname) hname = strings.Trim(hname, ".") dname = strings.TrimSpace(dname) dname = strings.Trim(dname, ".") fullname := strings.Join([]string{hname, dname}, ".") fullname = strings.TrimSpace(fullname) fullname = strings.Trim(fullname, ".") return fullname }