mirror of
https://github.com/netbirdio/netbird.git
synced 2026-10-23 22:09:09 +02:00
remove the leading dot and root dot support ns regex
Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user