diff options
Diffstat (limited to 'internal/validator/validator.go')
-rw-r--r-- | internal/validator/validator.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/internal/validator/validator.go b/internal/validator/validator.go index 63fe75f0..9b3cfd90 100644 --- a/internal/validator/validator.go +++ b/internal/validator/validator.go @@ -7,8 +7,11 @@ import ( "fmt" "net/url" "regexp" + "strings" ) +var domainRegex = regexp.MustCompile(`^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$`) + // ValidateRange makes sure the offset/limit values are valid. func ValidateRange(offset, limit int) error { if offset < 0 { @@ -43,3 +46,24 @@ func IsValidURL(absoluteURL string) bool { _, err := url.ParseRequestURI(absoluteURL) return err == nil } + +func IsValidDomain(domain string) bool { + domain = strings.ToLower(domain) + + if len(domain) < 1 || len(domain) > 253 { + return false + } + + return domainRegex.MatchString(domain) +} + +func IsValidDomainList(value string) bool { + domains := strings.Split(strings.TrimSpace(value), " ") + for _, domain := range domains { + if !IsValidDomain(domain) { + return false + } + } + + return true +} |