mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-18 18:17:03 +00:00
Support numeric domain-parts, closes #24
This commit is contained in:
@@ -73,15 +73,14 @@ func ValidateDomainPart(domain string) bool {
|
||||
}
|
||||
prev := '.'
|
||||
labelLen := 0
|
||||
hasLetters := false
|
||||
hasAlphaNum := false
|
||||
|
||||
for _, c := range domain {
|
||||
switch {
|
||||
case ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '_':
|
||||
case ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') ||
|
||||
('0' <= c && c <= '9') || c == '_':
|
||||
// Must contain some of these to be a valid label
|
||||
hasLetters = true
|
||||
labelLen++
|
||||
case '0' <= c && c <= '9':
|
||||
hasAlphaNum = true
|
||||
labelLen++
|
||||
case c == '-':
|
||||
if prev == '.' {
|
||||
@@ -96,11 +95,11 @@ func ValidateDomainPart(domain string) bool {
|
||||
if labelLen > 63 {
|
||||
return false
|
||||
}
|
||||
if !hasLetters {
|
||||
if !hasAlphaNum {
|
||||
return false
|
||||
}
|
||||
labelLen = 0
|
||||
hasLetters = false
|
||||
hasAlphaNum = false
|
||||
default:
|
||||
// Unknown character
|
||||
return false
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package smtpd
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestParseMailboxName(t *testing.T) {
|
||||
@@ -74,9 +75,10 @@ func TestValidateDomain(t *testing.T) {
|
||||
{"_domainkey.foo.com", true, "Underscores are allowed"},
|
||||
{"bar.com.", true, "Must be able to end with a dot"},
|
||||
{"ABC.6DBS.com", true, "Mixed case is OK"},
|
||||
{"mail.123.com", true, "Number only label valid"},
|
||||
{"123.com", true, "Number only label valid"},
|
||||
{"google..com", false, "Double dot not valid"},
|
||||
{".foo.com", false, "Cannot start with a dot"},
|
||||
{"mail.123.com", false, "Number only label not valid"},
|
||||
{"google\r.com", false, "Special chars not allowed"},
|
||||
{"foo.-bar.com", false, "Label cannot start with hyphen"},
|
||||
{"foo-.bar.com", false, "Label cannot end with hyphen"},
|
||||
|
||||
Reference in New Issue
Block a user