File tree Expand file tree Collapse file tree 1 file changed +20
-2
lines changed Expand file tree Collapse file tree 1 file changed +20
-2
lines changed Original file line number Diff line number Diff line change @@ -14,14 +14,19 @@ type Matcher struct {
14
14
}
15
15
16
16
func NewMatcher (domains []string , domainSuffix []string ) * Matcher {
17
- domainList := make ([]string , 0 , len (domains )+ len (domainSuffix ))
17
+ domainList := make ([]string , 0 , len (domains )+ 2 * len (domainSuffix ))
18
18
seen := make (map [string ]bool , len (domainList ))
19
19
for _ , domain := range domainSuffix {
20
20
if seen [domain ] {
21
21
continue
22
22
}
23
23
seen [domain ] = true
24
- domainList = append (domainList , reverseDomainSuffix (domain ))
24
+ if domain [0 ] == '.' {
25
+ domainList = append (domainList , reverseDomainSuffix (domain ))
26
+ } else {
27
+ domainList = append (domainList , reverseDomain (domain ))
28
+ domainList = append (domainList , reverseRootDomainSuffix (domain ))
29
+ }
25
30
}
26
31
for _ , domain := range domains {
27
32
if seen [domain ] {
@@ -134,3 +139,16 @@ func reverseDomainSuffix(domain string) string {
134
139
b [l ] = prefixLabel
135
140
return string (b )
136
141
}
142
+
143
+ func reverseRootDomainSuffix (domain string ) string {
144
+ l := len (domain )
145
+ b := make ([]byte , l + 2 )
146
+ for i := 0 ; i < l ; {
147
+ r , n := utf8 .DecodeRuneInString (domain [i :])
148
+ i += n
149
+ utf8 .EncodeRune (b [l - i :], r )
150
+ }
151
+ b [l ] = '.'
152
+ b [l + 1 ] = prefixLabel
153
+ return string (b )
154
+ }
You can’t perform that action at this time.
0 commit comments