]> git.ipfire.org Git - dbl.git/commitdiff
exporter: Support exporting for AdBlock Plus
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 31 Dec 2025 16:37:39 +0000 (16:37 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 31 Dec 2025 16:37:39 +0000 (16:37 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/dnsbl/exporters.py
src/dnsbl/lists.py
src/scripts/dnsbl.in

index 3387bb151f88d8e60f38bc34292f63cc06d8f71d..7408289ec4d28e8227f487c5c692bf5483a637b4 100644 (file)
@@ -151,6 +151,22 @@ class HostsExporter(TextExporter):
                        f.write("0.0.0.0 %s\n" % domain)
 
 
+class AdBlockPlusExporter(TextExporter):
+       """
+               Exports for AdBlock Plus and compatible clients
+       """
+       def export(self, f):
+               # Write the format
+               f.write("[Adblock Plus]\n")
+
+               # Write the header
+               self.write_header(f, "!")
+
+               # Write all domains
+               for domain in self.list.domains:
+                       f.write("||%s^\n" % domain)
+
+
 class ZoneExporter(TextExporter):
        def export(self, f, ttl=60):
                # Write the header
index 99c29ec812d0561029cb8c5935e411c648b6c6e1..3173b2a46d4998b57d073b01202d4dab58d74e3a 100644 (file)
@@ -410,6 +410,7 @@ class List(sqlmodel.SQLModel, database.BackendMixin, table=True):
                        Exports the list
                """
                formats = {
+                       "abp"        : exporters.AdBlockPlusExporter,
                        "domains"    : exporters.DomainsExporter,
                        "dnsbl"      : exporters.BlocklistExporter,
                        "hosts"      : exporters.HostsExporter,
index 81fad186d892abd79ec88fb79d3ebae54d2dc7f3..8edcab20f86a1e20dba869c7afb57a7bda2af307 100644 (file)
@@ -111,7 +111,7 @@ class CLI(object):
                export.add_argument("output", type=argparse.FileType("wb"),
                                help=_("The output file"))
                export.add_argument("--format", default="domains",
-                               choices=("domains", "dnsbl", "hosts", "rpz", "squidguard",),
+                               choices=("abp", "domains", "dnsbl", "hosts", "rpz", "squidguard",),
                                help=_("Output Format"))
                export.set_defaults(func=self.__export)
 
@@ -357,6 +357,7 @@ class CLI(object):
                        Exports all lists
                """
                formats = {
+                       "abp"        : "abp.txt",
                        "domains"    : "domains.txt",
                        "dnsbl"      : "dnsbl.zone",
                        "hosts"      : "hosts.txt",