Pull request: dnsforward: preserve domain name case

Updates #3194.

Squashed commit of the following:

commit 42a363c56b9b7441f9dc4bfc9d881b1b1e8f6b57
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Mon May 31 15:15:59 2021 +0300

    dnsforward: preserve domain name case
This commit is contained in:
Ainar Garipov 2021-05-31 15:24:21 +03:00
parent 78d47d8884
commit c95acf73ab
3 changed files with 10 additions and 9 deletions

View File

@ -37,6 +37,7 @@ released by then.
### Fixed ### Fixed
- Domain name case in responses ([#3194]).
- Custom upstreams selection for clients with client IDs in DNS-over-TLS and - Custom upstreams selection for clients with client IDs in DNS-over-TLS and
DNS-over-HTTP ([#3186]). DNS-over-HTTP ([#3186]).
- Incorrect client-based filtering applying logic ([#2875]). - Incorrect client-based filtering applying logic ([#2875]).
@ -48,6 +49,7 @@ released by then.
[#3184]: https://github.com/AdguardTeam/AdGuardHome/issues/3184 [#3184]: https://github.com/AdguardTeam/AdGuardHome/issues/3184
[#3185]: https://github.com/AdguardTeam/AdGuardHome/issues/3185 [#3185]: https://github.com/AdguardTeam/AdGuardHome/issues/3185
[#3186]: https://github.com/AdguardTeam/AdGuardHome/issues/3186 [#3186]: https://github.com/AdguardTeam/AdGuardHome/issues/3186
[#3194]: https://github.com/AdguardTeam/AdGuardHome/issues/3194
[#3198]: https://github.com/AdguardTeam/AdGuardHome/issues/3198 [#3198]: https://github.com/AdguardTeam/AdGuardHome/issues/3198

View File

@ -129,10 +129,12 @@ func (a *accessCtx) IsBlockedIP(ip net.IP) (bool, string) {
} }
// IsBlockedDomain - return TRUE if this domain should be blocked // IsBlockedDomain - return TRUE if this domain should be blocked
func (a *accessCtx) IsBlockedDomain(host string) bool { func (a *accessCtx) IsBlockedDomain(host string) (ok bool) {
a.lock.Lock() a.lock.Lock()
_, ok := a.blockedHostsEngine.Match(host) defer a.lock.Unlock()
a.lock.Unlock()
_, ok = a.blockedHostsEngine.Match(strings.ToLower(host))
return ok return ok
} }

View File

@ -20,13 +20,10 @@ func (s *Server) beforeRequestHandler(_ *proxy.Proxy, d *proxy.DNSContext) (bool
} }
if len(d.Req.Question) == 1 { if len(d.Req.Question) == 1 {
// It's lowercased here since this handler is called before any host := strings.TrimSuffix(d.Req.Question[0].Name, ".")
// other one.
name := strings.ToLower(d.Req.Question[0].Name)
d.Req.Question[0].Name = name
host := strings.TrimSuffix(name, ".")
if s.access.IsBlockedDomain(host) { if s.access.IsBlockedDomain(host) {
log.Tracef("Domain %s is blocked by settings", host) log.Tracef("domain %s is blocked by access settings", host)
return false, nil return false, nil
} }
} }