mirror of
https://github.com/go-acme/lego.git
synced 2025-07-17 12:17:44 +02:00
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package dns01
|
|
|
|
import (
|
|
"iter"
|
|
|
|
"github.com/miekg/dns"
|
|
)
|
|
|
|
// ToFqdn converts the name into a fqdn appending a trailing dot.
|
|
func ToFqdn(name string) string {
|
|
n := len(name)
|
|
if n == 0 || name[n-1] == '.' {
|
|
return name
|
|
}
|
|
return name + "."
|
|
}
|
|
|
|
// UnFqdn converts the fqdn into a name removing the trailing dot.
|
|
func UnFqdn(name string) string {
|
|
n := len(name)
|
|
if n != 0 && name[n-1] == '.' {
|
|
return name[:n-1]
|
|
}
|
|
return name
|
|
}
|
|
|
|
// UnFqdnDomainsSeq generates a sequence of "unFQDNed" domain names derived from a domain (FQDN or not) in descending order.
|
|
func UnFqdnDomainsSeq(fqdn string) iter.Seq[string] {
|
|
return func(yield func(string) bool) {
|
|
if fqdn == "" {
|
|
return
|
|
}
|
|
|
|
for _, index := range dns.Split(fqdn) {
|
|
if !yield(UnFqdn(fqdn[index:])) {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// DomainsSeq generates a sequence of domain names derived from a domain (FQDN or not) in descending order.
|
|
func DomainsSeq(fqdn string) iter.Seq[string] {
|
|
return func(yield func(string) bool) {
|
|
if fqdn == "" {
|
|
return
|
|
}
|
|
|
|
for _, index := range dns.Split(fqdn) {
|
|
if !yield(fqdn[index:]) {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|