diff --git a/management/server/nameserver.go b/management/server/nameserver.go index 797d7c11c..18339335d 100644 --- a/management/server/nameserver.go +++ b/management/server/nameserver.go @@ -18,7 +18,9 @@ import ( "github.com/netbirdio/netbird/management/server/types" ) -const domainPattern = `^(?i)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,}$` +const domainPattern = `^(?i)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*[*.a-z]{1,}$` + +var invalidDomainName = errors.New("invalid domain name") // GetNameServerGroup gets a nameserver group object from account and nameserver group IDs func (am *DefaultAccountManager) GetNameServerGroup(ctx context.Context, accountID, userID, nsGroupID string) (*nbdns.NameServerGroup, error) { @@ -319,13 +321,9 @@ func validateDomain(domain string) error { 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) if !valid { - return errors.New("invalid domain name") - } - - if labels < 2 { - return errors.New("domain should consists of a minimum of two labels") + return invalidDomainName } return nil diff --git a/management/server/nameserver_test.go b/management/server/nameserver_test.go index 1ba790797..dc4be594f 100644 --- a/management/server/nameserver_test.go +++ b/management/server/nameserver_test.go @@ -899,13 +899,33 @@ func TestValidateDomain(t *testing.T) { errFunc: require.NoError, }, { - name: "Invalid domain name with double hyphen", - domain: "test--example.com", + name: "Valid domain name with only one label", + domain: "example", + errFunc: require.NoError, + }, + { + name: "Valid domain name with trailing dot", + domain: "example.", + errFunc: require.NoError, + }, + { + name: "Invalid wildcard domain name", + domain: "*.example", errFunc: require.Error, }, { - name: "Invalid domain name with only one label", - domain: "com", + 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", + domain: "test--example.com", errFunc: require.Error, }, {