]> git.ipfire.org Git - location/libloc.git/commitdiff
export: Support exporting a zone with all bogons
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 16 Dec 2025 17:24:20 +0000 (17:24 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 16 Dec 2025 17:24:20 +0000 (17:24 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/python/location/export.py

index ac41f8211353ca1695a0e2c83ea029a034273086..faf39e24b293d1017385e1b5f36321b81ba2e264 100644 (file)
@@ -304,6 +304,7 @@ class Exporter(object):
 class ZoneExporter(object):
        def __init__(self, db, format, origin, ttl=None):
                self.db = db
+               self.format = format
                self.origin = origin
                self.ttl = ttl
 
@@ -332,8 +333,13 @@ class ZoneExporter(object):
                if self.ttl:
                        f.write("$TTL %s" % self.ttl)
 
+               if self.format == "bogons":
+                       networks = self.db.list_bogons()
+               else:
+                       networks = self.db.networks
+
                # Write all networks
-               for network in self.db.networks:
+               for network in networks:
                        self.write(f, network)
 
        def write(self, f, network):
@@ -356,6 +362,13 @@ class ZoneExporter(object):
 
                f.write("%s IN %s %s\n" % (rp, self.type, content))
 
+       # DNSBL
+
+       def _format_dnsbl(self, network):
+               return "127.0.0.2"
+
+       # ASN
+
        def _format_asn(self, network):
                # Skip the network if it does not belong to an AS
                if network.asn is None:
@@ -369,5 +382,6 @@ class ZoneExporter(object):
                return "\"%s\"" % asn
 
        formats = {
-               "asn" : ("TXT", _format_asn),
+               "asn"    : ("TXT", _format_asn),
+               "bogons" : ("A", _format_dnsbl),
        }