resolve IN LUA A ";local r=resolve('localhost', 1) local t={{}} for _,v in ipairs(r) do table.insert(t, v:toString()) end return t"
-*.createforward IN LUA A "createForward()"
+*.createforward IN LUA A "createForward()"
+*.createreverse IN LUA PTR "createReverse('%5%.example.com')"
+*.createreverse6 IN LUA PTR "createReverse6('%33%.example.com')"
""",
+ 'createforward6.example.org': """
+createforward6.example.org. 3600 IN SOA {soa}
+createforward6.example.org. 3600 IN NS ns1.example.org.
+createforward6.example.org. 3600 IN NS ns2.example.org.
+* IN LUA AAAA "createForward6()"
+ """
+# the separate createforward6 zone is because some of the code in lua-record.cc insists on working relatively to the zone apex
}
_web_rrsets = []
self.assertRcodeEqual(res, dns.rcode.NOERROR)
self.assertEqual(res.answer, response.answer)
- def testCreateForward(self):
- name_suffix = '.createforward.example.org.'
-
- name_expected = {
- "1.2.3.4": "1.2.3.4",
- "1.2.3.4.static": "1.2.3.4",
- "1.2.3.4.5.6": "1.2.3.4",
- "invalid.1.2.3.4": "0.0.0.0",
- "invalid": "0.0.0.0",
- "1-2-3-4": "1.2.3.4",
- "1-2-3-4.foo": "1.2.3.4",
- "1-2-3-4.foo.bar": "0.0.0.0",
- "1-2-3-4.foo.bar.baz": "0.0.0.0",
- "1-2-3-4.foo.bar.baz.quux": "0.0.0.0",
- "ip-1-2-3-4": "1.2.3.4",
- "ip-is-here-for-you-1-2-3-4": "1.2.3.4",
- "ip40414243": "64.65.66.67",
- "ipp40414243": "0.0.0.0",
- "ip4041424": "0.0.0.0",
+ def testCreateForwardAndReverse(self):
+ expected = {
+ ".createforward.example.org." : (dns.rdatatype.A, {
+ "1.2.3.4": "1.2.3.4",
+ "1.2.3.4.static": "1.2.3.4",
+ "1.2.3.4.5.6": "1.2.3.4",
+ "invalid.1.2.3.4": "0.0.0.0",
+ "invalid": "0.0.0.0",
+ "1-2-3-4": "1.2.3.4",
+ "1-2-3-4.foo": "1.2.3.4",
+ "1-2-3-4.foo.bar": "0.0.0.0",
+ "1-2-3-4.foo.bar.baz": "0.0.0.0",
+ "1-2-3-4.foo.bar.baz.quux": "0.0.0.0",
+ "ip-1-2-3-4": "1.2.3.4",
+ "ip-is-here-for-you-1-2-3-4": "1.2.3.4",
+ "ip40414243": "64.65.66.67",
+ "ipp40414243": "0.0.0.0",
+ "ip4041424": "0.0.0.0",
+ }),
+ ".createreverse.example.org." : (dns.rdatatype.PTR, {
+ "4.3.2.1": "1-2-3-4.example.com."
+ }),
+ ".createforward6.example.org." : (dns.rdatatype.AAAA, {
+ "2001--db8" : "2001::db8"
+ }),
+ ".createreverse6.example.org." : (dns.rdatatype.PTR, {
+ "8.b.d.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.2" : "2001--db8.example.com."
+ })
}
- for k, v in name_expected.items():
- name = k + name_suffix
+ for suffix, v in expected.items():
+ qtype, pairs = v
+ for prefix, target in pairs.items():
+ name = prefix + suffix
- query = dns.message.make_query(name, 'A')
- response = dns.message.make_response(query)
- response.answer.append(dns.rrset.from_text(
- name, 0, dns.rdataclass.IN, dns.rdatatype.A, v))
+ query = dns.message.make_query(name, qtype)
+ response = dns.message.make_response(query)
+ response.answer.append(dns.rrset.from_text(
+ name, 0, dns.rdataclass.IN, qtype, target))
- res = self.sendUDPQuery(query)
- print(res)
- self.assertRcodeEqual(res, dns.rcode.NOERROR)
- self.assertEqual(res.answer, response.answer)
+ res = self.sendUDPQuery(query)
+ print(res)
+ self.assertRcodeEqual(res, dns.rcode.NOERROR)
+ self.assertEqual(res.answer, response.answer)
if __name__ == '__main__':