From c7f625a502b65c0ff80fa7df3625deab4ca5d1ce Mon Sep 17 00:00:00 2001 From: Thomas Limoncelli Date: Fri, 21 Nov 2025 10:46:05 -0500 Subject: [PATCH] BUGFIX: Domains with Unicode should convert to IDN earlier --- pkg/normalize/validate.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/normalize/validate.go b/pkg/normalize/validate.go index a787f4dfa..1c1903bbe 100644 --- a/pkg/normalize/validate.go +++ b/pkg/normalize/validate.go @@ -14,6 +14,7 @@ import ( "github.com/StackExchange/dnscontrol/v4/providers" "github.com/miekg/dns" "github.com/miekg/dns/dnsutil" + "golang.org/x/net/idna" ) // Returns false if target does not validate. @@ -359,6 +360,15 @@ func ValidateAndNormalizeConfig(config *models.DNSConfig) (errs []error) { } for _, domain := range config.Domains { + + // Convert domain name to punycode. + // In the future, we should do something more sophisticated like having a .Name/.NameUnicode/.NameIDN so that users can see. + var err error + domain.Name, err = idna.ToASCII(domain.Name) + if err != nil { + return []error{fmt.Errorf("Can not convert domain %q to IDN: %w", domain.Name, err)} + } + pTypes := []string{} for _, provider := range domain.DNSProviderInstances { pType := provider.ProviderType