From: Michael Tremer Date: Wed, 10 Dec 2025 10:52:15 +0000 (+0000) Subject: exporter: Build an exporter for a regular DNS BL zone X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b1003bee76c614c67efcaa2d5d6948665687e2a;p=dnsbl.git exporter: Build an exporter for a regular DNS BL zone Signed-off-by: Michael Tremer --- diff --git a/src/dnsbl/exporters.py b/src/dnsbl/exporters.py index ca24ba1..a52d749 100644 --- a/src/dnsbl/exporters.py +++ b/src/dnsbl/exporters.py @@ -107,10 +107,7 @@ class HostsExporter(Exporter): 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, ";") @@ -148,7 +145,7 @@ class RPZExporter(Exporter): 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, ), ) @@ -181,3 +178,19 @@ class RPZExporter(Exporter): # 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 = "." diff --git a/src/dnsbl/lists.py b/src/dnsbl/lists.py index 104be82..e3ee23e 100644 --- a/src/dnsbl/lists.py +++ b/src/dnsbl/lists.py @@ -255,6 +255,7 @@ class List(sqlmodel.SQLModel, database.BackendMixin, table=True): formats = { "domains" : exporters.DomainsExporter, + "dnsbl" : exporters.BlocklistExporter, "hosts" : exporters.HostsExporter, "rpz" : exporters.RPZExporter, } diff --git a/src/scripts/dnsbl.in b/src/scripts/dnsbl.in index b3e9188..e810d76 100644 --- a/src/scripts/dnsbl.in +++ b/src/scripts/dnsbl.in @@ -101,7 +101,7 @@ class CLI(object): 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 @@ -290,6 +290,7 @@ class CLI(object): """ formats = { "domains" : "domains.txt", + "dnsbl" : "dnsbl.zone", "hosts" : "hosts.txt", "rpz" : "rpz.zone", }