package ratelimits import ( "strings" "github.com/letsencrypt/boulder/core" "github.com/weppos/publicsuffix-go/publicsuffix" ) // joinWithColon joins the provided args with a colon. func joinWithColon(args ...string) string { return strings.Join(args, ":") } // DomainsForRateLimiting transforms a list of FQDNs into a list of eTLD+1's // for the purpose of rate limiting. It also de-duplicates the output // domains. Exact public suffix matches are included. func DomainsForRateLimiting(names []string) []string { var domains []string for _, name := range names { domain, err := publicsuffix.Domain(name) if err != nil { // The only possible errors are: // (1) publicsuffix.Domain is giving garbage values // (2) the public suffix is the domain itself // We assume 2 and include the original name in the result. domains = append(domains, name) } else { domains = append(domains, domain) } } return core.UniqueLowerNames(domains) }