remove the leading dot and root dot support ns regex

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>
This commit is contained in:
bcmmbaga
2025-05-22 18:51:05 +03:00
parent f25b5bb987
commit 31f0879e71
2 changed files with 12 additions and 22 deletions
+2 -12
View File
@@ -4,7 +4,6 @@ import (
"context" "context"
"errors" "errors"
"regexp" "regexp"
"strings"
"unicode/utf8" "unicode/utf8"
"github.com/miekg/dns" "github.com/miekg/dns"
@@ -20,7 +19,7 @@ import (
) )
const ( const (
domainPattern = `^(?i)[\.\*a-z0-9]+([\-\.]{1}[a-z0-9]+)*[*.a-z]{1,}$` domainPattern = `^(?i)[\*a-z0-9]+([\-\.]{1}[a-z0-9]+)*[*.a-z]{1,}$`
maxLabelLen = 63 maxLabelLen = 63
) )
@@ -325,16 +324,7 @@ func validateDomain(domain string) error {
return errors.New("domain should consists of only letters, numbers, and hyphens with no leading, trailing hyphens, or spaces") return errors.New("domain should consists of only letters, numbers, and hyphens with no leading, trailing hyphens, or spaces")
} }
labels, valid := dns.IsDomainName(domain) _, valid := dns.IsDomainName(domain)
// validate the TLD domains length
if labels == 0 && strings.HasPrefix(domain, ".") {
if len(domain)-1 > maxLabelLen {
return invalidDomainName
}
return nil
}
if !valid { if !valid {
return invalidDomainName return invalidDomainName
} }
+10 -10
View File
@@ -903,16 +903,21 @@ func TestValidateDomain(t *testing.T) {
domain: "example", domain: "example",
errFunc: require.NoError, errFunc: require.NoError,
}, },
{
name: "Valid top level domain",
domain: ".com",
errFunc: require.NoError,
},
{ {
name: "Valid wildcard domain", name: "Valid wildcard domain",
domain: "*.example", domain: "*.example",
errFunc: require.NoError, errFunc: require.NoError,
}, },
{
name: "Invalid domain name with leading dot",
domain: ".com",
errFunc: require.Error,
},
{
name: "Invalid domain name with dot only",
domain: ".",
errFunc: require.Error,
},
{ {
name: "Invalid domain name with double hyphen", name: "Invalid domain name with double hyphen",
domain: "test--example.com", domain: "test--example.com",
@@ -923,11 +928,6 @@ func TestValidateDomain(t *testing.T) {
domain: "dnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdns.com", domain: "dnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdns.com",
errFunc: require.Error, errFunc: require.Error,
}, },
{
name: "Invalid top level domain with exceeding 63 characters",
domain: ".dnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdnsdns",
errFunc: require.Error,
},
{ {
name: "Invalid domain name starting with a hyphen", name: "Invalid domain name starting with a hyphen",
domain: "-example.com", domain: "-example.com",