File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -14,14 +14,19 @@ type Matcher struct {
1414}
1515
1616func 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 ))
1818 seen := make (map [string ]bool , len (domainList ))
1919 for _ , domain := range domainSuffix {
2020 if seen [domain ] {
2121 continue
2222 }
2323 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+ }
2530 }
2631 for _ , domain := range domains {
2732 if seen [domain ] {
@@ -134,3 +139,16 @@ func reverseDomainSuffix(domain string) string {
134139 b [l ] = prefixLabel
135140 return string (b )
136141}
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