package dns_providers import ( "strings" ) type DNSProvider interface { UpdateRecord(hostname string, ip string) error FetchRecord(hostname string) (string, error) } type DomainParts struct { Name string Domain string } func GetDomainParts(hostname string) *DomainParts { data := arrayToSlice(strings.Split(hostname, ".")) if len(data) <= 2 { // This might be the actual root domain out := DomainParts{Name: strings.Join(data[0:], "."), Domain: strings.Join(data[0:], ".")} return &out } else { // This is a subdomain out := DomainParts{Name: data[0], Domain: strings.Join(data[1:], ".")} return &out } } func arrayToSlice(array []string) []string { return array[:] }