Skip to content

Commit

Permalink
MGMT-15886: Fix domain validation (#5801)
Browse files Browse the repository at this point in the history
https://issues.redhat.com/browse/MGMT-15886
Modify domain validation to adhere to the RFC standard for domains
https://datatracker.ietf.org/doc/html/rfc1034#section-3.5
Rules for labels:
1. start with a letter
2. end with a letter or digit
3. and have as interior characters only letters, digits, and hyphen

Domains contains either one label or multiple labels
separated by a period.

Top level (base) domains must have at least two characters and
cannot end in a dash.
  • Loading branch information
CrystalChun committed Dec 17, 2023
1 parent d41f536 commit fd8eb19
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 27 deletions.
4 changes: 2 additions & 2 deletions pkg/validations/validations.go
Expand Up @@ -16,8 +16,8 @@ import (
)

const (
baseDomainRegex = `^[a-z\d]+[\-]*[a-z\d]+$`
dnsNameRegex = `^([a-z\d]([\-]*[a-z\d]+)*\.)+[a-z\d]+[\-]*[a-z\d]+$`
baseDomainRegex = `^[a-z]([\-]*[a-z\d]+)+$`
dnsNameRegex = `^([a-z]([\-]*[a-z\d]+)*\.)+[a-z\d]+([\-]*[a-z\d]+)+$`
wildCardDomainRegex = `^(validateNoWildcardDNS\.).+\.?$`
hostnameRegex = `^[a-z0-9][a-z0-9\-\.]{0,61}[a-z0-9]$`
installerArgsValuesRegex = `^[A-Za-z0-9@!#$%*()_+-=//.,";':{}\[\]]+$`
Expand Down
36 changes: 16 additions & 20 deletions pkg/validations/validations_test.go
Expand Up @@ -184,10 +184,6 @@ var _ = Describe("dns name", func() {
domainName: fqnHugeDomain,
valid: false,
},
{
domainName: "a.com",
valid: true,
},
{
domainName: "a",
valid: false,
Expand All @@ -200,24 +196,32 @@ var _ = Describe("dns name", func() {
domainName: "a-",
valid: false,
},
{
domainName: "co",
valid: true,
},
{
domainName: "1c",
valid: true,
valid: false,
},
{
domainName: "1-c",
valid: true,
valid: false,
},
{
domainName: "1--c",
valid: false,
},
{
domainName: "a.c",
valid: false,
},
{
domainName: "aaa.c",
valid: false,
},
{
domainName: "co",
valid: true,
},
{
domainName: "aaa",
domainName: "a.com",
valid: true,
},
{
Expand All @@ -242,7 +246,7 @@ var _ = Describe("dns name", func() {
},
{
domainName: "0-example.com0",
valid: true,
valid: false,
},
{
domainName: "example-example-example.com",
Expand Down Expand Up @@ -272,14 +276,6 @@ var _ = Describe("dns name", func() {
domainName: "validateNoWildcardDNS.test.com.",
valid: true,
},
{
domainName: "a.c",
valid: false,
},
{
domainName: "aaa.c",
valid: false,
},
}
for _, t := range tests {
t := t
Expand Down
10 changes: 5 additions & 5 deletions subsystem/cluster_test.go
Expand Up @@ -1024,6 +1024,11 @@ var _ = Describe("Validate BaseDNSDomain when creating a cluster", func() {
BaseDNSDomain: "-example.com",
ShouldThrow: true,
},
{
It: "V2RegisterCluster should throw an error. BaseDNSDomain='1-example.com', Illegal first character in domain name",
BaseDNSDomain: "1-example.com",
ShouldThrow: true,
},
{
It: "V2RegisterCluster should not throw an error. BaseDNSDomain='example.com', valid DNS",
BaseDNSDomain: "example.com",
Expand All @@ -1049,11 +1054,6 @@ var _ = Describe("Validate BaseDNSDomain when creating a cluster", func() {
BaseDNSDomain: "exam--ple.com",
ShouldThrow: false,
},
{
It: "V2RegisterCluster should not throw an error. BaseDNSDomain='1-example.com', valid DNS",
BaseDNSDomain: "1-example.com",
ShouldThrow: false,
},
{
It: "V2RegisterCluster should not throw an error. BaseDNSDomain='example.com1', valid DNS",
BaseDNSDomain: "example.com1",
Expand Down

0 comments on commit fd8eb19

Please sign in to comment.