63 lines
1.4 KiB
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
|
|
}
|