rewrite: qtype matching

This commit is contained in:
Dimitry Kolyshev 2022-12-30 23:42:55 +07:00
parent 18392943fa
commit 18a6066df5
2 changed files with 35 additions and 10 deletions

View file

@ -217,9 +217,9 @@ func (s *DefaultStorage) resetRules() (err error) {
// matchesQType returns true if dnsrewrite matches the question type qt.
func matchesQType(dnsrr *rules.DNSRewrite, qt uint16) (ok bool) {
// Reject types other than A and AAAA.
// Accept types other than A and AAAA.
if qt != dns.TypeA && qt != dns.TypeAAAA {
return false
return true
}
// Add CNAMEs, since they match for all types requests.

View file

@ -116,9 +116,29 @@ func TestDefaultStorage_MatchRequest(t *testing.T) {
wantDNSRewrites: nil,
dtyp: dns.TypeA,
}, {
name: "not_filtered_qtype",
name: "other_qtype",
host: "www.host.com",
wantDNSRewrites: nil,
wantDNSRewrites: []*rules.DNSRewrite{{
Value: nil,
NewCNAME: "host.com",
RCode: dns.RcodeSuccess,
RRType: dns.TypeNone,
}, {
Value: net.IP{1, 2, 3, 4}.To16(),
NewCNAME: "",
RCode: dns.RcodeSuccess,
RRType: dns.TypeA,
}, {
Value: net.IP{1, 2, 3, 5}.To16(),
NewCNAME: "",
RCode: dns.RcodeSuccess,
RRType: dns.TypeA,
}, {
Value: net.ParseIP("1:2:3::4"),
NewCNAME: "",
RCode: dns.RcodeSuccess,
RRType: dns.TypeAAAA,
}},
dtyp: dns.TypeMX,
}, {
name: "rewritten_a",
@ -253,7 +273,12 @@ func TestDefaultStorage_MatchRequest(t *testing.T) {
}, {
name: "issue4008",
host: "somehost.com",
wantDNSRewrites: nil,
wantDNSRewrites: []*rules.DNSRewrite{{
Value: net.IP{0, 0, 0, 0}.To16(),
NewCNAME: "",
RCode: dns.RcodeSuccess,
RRType: dns.TypeA,
}},
dtyp: dns.TypeHTTPS,
}, {
name: "issue4016",