+ DNS Rewrites: support wildcard domain name

This commit is contained in:
Simon Zolin
2019-12-11 19:02:46 +03:00
committed by Ildar Kamalov
parent 28096d6966
commit 8685584bf5
3 changed files with 69 additions and 2 deletions

View File

@@ -334,6 +334,13 @@ func (d *Dnsfilter) CheckHost(host string, qtype uint16, setts *RequestFiltering
return Result{}, nil
}
// Return TRUE of host name matches a wildcard pattern
func matchDomainWildcard(host, wildcard string) bool {
return len(wildcard) >= 2 &&
wildcard[0] == '*' && wildcard[1] == '.' &&
strings.HasSuffix(host, wildcard[1:])
}
// Process rewrites table
// . Find CNAME for a domain name
// . if found, set domain name to canonical name
@@ -347,7 +354,9 @@ func (d *Dnsfilter) processRewrites(host string, qtype uint16) Result {
for _, r := range d.Rewrites {
if r.Domain != host {
continue
if !matchDomainWildcard(host, r.Domain) {
continue
}
}
ip := net.ParseIP(r.Answer)
@@ -362,7 +371,9 @@ func (d *Dnsfilter) processRewrites(host string, qtype uint16) Result {
for _, r := range d.Rewrites {
if r.Domain != host {
continue
if !matchDomainWildcard(host, r.Domain) {
continue
}
}
ip := net.ParseIP(r.Answer)