2024-03-15 23:16:23 +13:00
|
|
|
package dns_providers
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type DNSProvider interface {
|
2024-03-18 09:55:01 +13:00
|
|
|
UpdateRecord(hostname string, ip string) error
|
|
|
|
|
FetchRecord(hostname string) (string, error)
|
2024-03-15 23:16:23 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type DomainParts struct {
|
|
|
|
|
Name string
|
|
|
|
|
Domain string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetDomainParts(hostname string) *DomainParts {
|
|
|
|
|
data := arrayToSlice(strings.Split(hostname, "."))
|
|
|
|
|
|
2024-03-18 09:55:01 +13:00
|
|
|
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
|
|
|
|
|
}
|
2024-03-15 23:16:23 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func arrayToSlice(array []string) []string {
|
|
|
|
|
return array[:]
|
|
|
|
|
}
|