+ rewrites: support IP exception; support "pass A only" case

+ rewrites: support IP exception

	host.com -> 1.2.3.4
	host.com -> AAAA

Response:

	A:
		A = 1.2.3.4
	AAAA:
		AAAA = <IPv6 address of host.com>

+ rewrites: support "pass A only" case

	host.com -> A

Response:

	A:
		A = <IPv4 address of host.com>
	AAAA:
		<empty>
This commit is contained in:
Simon Zolin
2020-06-03 12:04:23 +03:00
parent 9df7aba9e1
commit 5980db1a2d
5 changed files with 195 additions and 27 deletions

View File

@@ -65,12 +65,11 @@ func (s *Server) filterDNSRequest(ctx *dnsContext) (*dnsfilter.Result, error) {
}
for _, ip := range res.IPList {
ip4 := ip.To4()
if req.Question[0].Qtype == dns.TypeA && ip4 != nil {
a := s.genAAnswer(req, ip4)
if req.Question[0].Qtype == dns.TypeA {
a := s.genAAnswer(req, ip.To4())
a.Hdr.Name = dns.Fqdn(name)
resp.Answer = append(resp.Answer, a)
} else if req.Question[0].Qtype == dns.TypeAAAA && ip4 == nil {
} else if req.Question[0].Qtype == dns.TypeAAAA {
a := s.genAAAAAnswer(req, ip)
a.Hdr.Name = dns.Fqdn(name)
resp.Answer = append(resp.Answer, a)