packageutilsimport("net""strings""golang.org/x/net/publicsuffix")// GetBaseDomain returns the registered domain name for a given FQDN.// It handles edge cases like dynamic hostnames registered under public suffixes// (common with VPS providers like Linode, AWS, etc).funcGetBaseDomain(fqdnstring)string{iffqdn==""{return""}// Remove trailing dot if presentfqdn=strings.TrimSuffix(fqdn,".")// If it's an IPv4 address, return it as isifip:=net.ParseIP(fqdn);ip!=nil{ifip.To4()!=nil{returnfqdn}}domain,err:=publicsuffix.EffectiveTLDPlusOne(fqdn)iferr!=nil{// Fallback for cases where EffectiveTLDPlusOne fails (e.g., "localhost")parts:=strings.Split(fqdn,".")iflen(parts)>=2{returnstrings.Join(parts[len(parts)-2:],".")}returnfqdn}// If EffectiveTLDPlusOne returned the full FQDN, we're dealing with a// dynamic hostname registered under a public suffix (e.g., ip.linodeusercontent.com).// In this case, find the actual base domain by going one level above the public suffix.ifdomain==fqdn{suffix,_:=publicsuffix.PublicSuffix(fqdn)ifsuffix!=""&&suffix!=fqdn{// Get the domain one level above the suffix// e.g., for suffix "ip.linodeusercontent.com", find "linodeusercontent.com"suffixParts:=strings.Split(suffix,".")iflen(suffixParts)>=2{returnstrings.Join(suffixParts[len(suffixParts)-2:],".")}}}returndomain}