f.write("0.0.0.0 %s\n" % domain)
-class RPZExporter(Exporter):
- """
- Exports the list as a RPZ zone file
- """
+class ZoneExporter(Exporter):
def export(self, f, ttl=60, rpz_action="."):
# Write the header
self.write_header(f, ";")
zone.replace_rdataset(
dns.name.from_text("%s.%s" % (domain, self.list.zone), origin=origin),
dns.rdataset.from_text(
- dns.rdataclass.IN, dns.rdatatype.CNAME, ttl, rpz_action,
+ dns.rdataclass.IN, self.type, ttl, self.content,
),
)
# Add the ZONEMD record
zone.replace_rdataset(zone.origin, rrset)
+
+
+class BlocklistExporter(ZoneExporter):
+ """
+ Exports the list as a regular DNSBL zone file
+ """
+ type = dns.rdatatype.A
+ content = "127.0.0.2"
+
+
+class RPZExporter(ZoneExporter):
+ """
+ Exports the list as a RPZ zone file
+ """
+ type = dns.rdatatype.CNAME
+ content = "."
formats = {
"domains" : exporters.DomainsExporter,
+ "dnsbl" : exporters.BlocklistExporter,
"hosts" : exporters.HostsExporter,
"rpz" : exporters.RPZExporter,
}
export.add_argument("output", type=argparse.FileType("w"),
help=_("The output file"))
export.add_argument("--format", default="domains",
- choices=("domains", "hosts", "rpz",), help=_("Output Format"))
+ choices=("domains", "dnsbl", "hosts", "rpz",), help=_("Output Format"))
export.set_defaults(func=self.__export)
# export-all
"""
formats = {
"domains" : "domains.txt",
+ "dnsbl" : "dnsbl.zone",
"hosts" : "hosts.txt",
"rpz" : "rpz.zone",
}