Skip to content

Commit 6782467

Browse files
committed
fix: wildcard and IPv6 domain are supported at the same time
1 parent 9c9057f commit 6782467

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

internal/fn/domain.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func GetUniqDomains(s []string) []string {
2020
}
2121

2222
func GetDomainsByString(input string) (result []string) {
23-
domainPattern := `([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}`
23+
domainPattern := `(\*\.)?([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}`
2424
ipv4Pattern := `((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)`
2525
ipv6Pattern := `(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))`
2626
combinedPattern := fmt.Sprintf(`^(%s|%s|%s)$`, domainPattern, ipv4Pattern, ipv6Pattern)

internal/fn/domain_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ func TestGetDomainsByString(t *testing.T) {
6565
t.Fatal("test GetDomainsByString failed")
6666
}
6767

68+
ret = fn.GetDomainsByString("2001:db8::1,2001:db8::2,a.com,192.168.1.1,A.COM,*.a.b.com")
69+
if !reflect.DeepEqual(ret, []string{"2001:db8::1", "2001:db8::2", "a.com", "192.168.1.1", "*.a.b.com"}) {
70+
t.Fatal("test GetDomainsByString failed")
71+
}
72+
6873
ret = fn.GetDomainsByString("")
6974
if !reflect.DeepEqual(ret, []string{}) {
7075
t.Fatal("test GetDomainsByString failed")

0 commit comments

Comments
 (0)