From 3dd6affd6fde2f0af23b35e7014ba59b6233320a Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sat, 22 Mar 2025 08:30:15 -0500 Subject: more hostname things --- common.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 common.go (limited to 'common.go') diff --git a/common.go b/common.go new file mode 100644 index 0000000..ae4b7ff --- /dev/null +++ b/common.go @@ -0,0 +1,47 @@ +package hostname + +import ( + "errors" + "fmt" + "net" + "strings" +) + +var ErrorEmptyDomainName error = errors.New("domain name is empty") +var ErrorDomainNameMisconfigured error = errors.New("your OS domain name is not configured correctly") + +// returns 'hostname', 'domainname' +func Split(s string) (string, string) { + parts := strings.Fields(s) + if len(parts) == 0 { + return "", "" + } + if len(parts) == 1 { + return parts[0], "" + } + return parts[0], strings.Join(parts[1:], ".") +} + +// checks to make sure there is a domainname +func ValidDomainname(s string) error { + _, domainname := Split(s) + if domainname == "" { + return ErrorEmptyDomainName + } + return nil +} + +func ReverseLookupFQDN(hostname string) (string, error) { + addrs, err := net.LookupIP(hostname) + if err != nil || len(addrs) == 0 { + return hostname, fmt.Errorf("failed to lookup IP for hostname %s: %w", hostname, err) + } + + // Try reverse lookup on the first IP address + names, err := net.LookupAddr(addrs[0].String()) + if err != nil || len(names) == 0 { + return hostname, fmt.Errorf("reverse DNS lookup failed for IP %s: %w", addrs[0].String(), err) + } + + return names[0], nil +} -- cgit v1.2.3