hostname/domainname.go

63 lines
1.4 KiB
Go

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
}