/Makefile
/build-aux
/missing
-/src/scripts/dnsbl
+/src/scripts/dbl
/tmp
/*.tar.bz2
/*.tar.gz
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
# ------------------------------------------------------------------------------
dist_pkgpython_PYTHON = \
- src/dnsbl/__init__.py \
- src/dnsbl/auth.py \
- src/dnsbl/checker.py \
- src/dnsbl/database.py \
- src/dnsbl/domains.py \
- src/dnsbl/exporters.py \
- src/dnsbl/i18n.py \
- src/dnsbl/lists.py \
- src/dnsbl/logger.py \
- src/dnsbl/reports.py \
- src/dnsbl/sources.py \
- src/dnsbl/users.py \
- src/dnsbl/util.py
+ src/dbl/__init__.py \
+ src/dbl/auth.py \
+ src/dbl/checker.py \
+ src/dbl/database.py \
+ src/dbl/domains.py \
+ src/dbl/exporters.py \
+ src/dbl/i18n.py \
+ src/dbl/lists.py \
+ src/dbl/logger.py \
+ src/dbl/reports.py \
+ src/dbl/sources.py \
+ src/dbl/users.py \
+ src/dbl/util.py
dist_pkgpython_api_PYTHON = \
- src/dnsbl/api/__init__.py \
- src/dnsbl/api/domains.py \
- src/dnsbl/api/lists.py \
- src/dnsbl/api/middlewares.py \
- src/dnsbl/api/reports.py
+ src/dbl/api/__init__.py \
+ src/dbl/api/domains.py \
+ src/dbl/api/lists.py \
+ src/dbl/api/middlewares.py \
+ src/dbl/api/reports.py
pkgpython_apidir = $(pkgpythondir)/api
dist_systemdsystemunit_DATA = \
- src/systemd/dnsbl-api.service \
- src/systemd/dnsbl-notify.timer
+ src/systemd/dbl-api.service \
+ src/systemd/dbl-notify.timer
systemdsystemunit_DATA = \
- src/systemd/dnsbl-notify.service
+ src/systemd/dbl-notify.service
EXTRA_DIST += \
- src/systemd/dnsbl-notify.service.in
+ src/systemd/dbl-notify.service.in
CLEANFILES += \
- src/systemd/dnsbl-notify.service
+ src/systemd/dbl-notify.service
# ------------------------------------------------------------------------------
CLEANFILES += \
- src/scripts/dnsbl
+ src/scripts/dbl
EXTRA_DIST += \
- src/scripts/dnsbl.in
+ src/scripts/dbl.in
bin_SCRIPTS = \
- src/scripts/dnsbl
+ src/scripts/dbl
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
AC_PREREQ([2.64])
-AC_INIT([dnsbl],
+AC_INIT([dbl],
[20251205],
[info@ipfire.org],
- [dnsbl],
- [https://dnsbl.ipfire.org])
+ [dbl],
+ [https://dbl.ipfire.org])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
# Connect to the database
self.db = self.connect()
- log.debug("DNS Blocklist Backend Initialized")
+ log.debug("Domain Blocklist Backend Initialized")
def parse_config(self, config=None):
"""
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Doomain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
# Initialize the app
app = fastapi.FastAPI(
- title = "IPFire DNSBL API",
+ title = "IPFire DBL API",
# Enable debug mode
debug = True,
# Initialize the backend
backend = app.state.backend = Backend(
- config = "/etc/dnsbl.conf",
+ config = "/etc/dbl.conf",
debug = True,
)
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2026 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2026 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
lines = [
"##############################################################################",
- " DNS Blocklist for IPFire",
+ " Domain Blocklist for IPFire",
"##############################################################################",
"",
- " This file contains domains that are part of the official IPFire DNS",
+ " This file contains domains that are part of the official IPFire Domain",
" Blocklist Project. It is intended for use with DNS servers and firewalls",
" that support blocklisting of known malicious or unwanted domains.",
"",
" Copyright (C) %s - IPFire Team" % now.strftime("%Y"),
"",
" For more information or to contribute:",
- " https://dnsbl.ipfire.org/",
+ " https://dbl.ipfire.org/",
"",
"##############################################################################",
"",
class BlocklistExporter(ZoneExporter):
"""
- Exports the list as a regular DNSBL zone file
+ Exports the list as a regular DBL zone file
"""
- prefix = "dnsbl"
+ prefix = "dbl"
type = "A"
content = "127.0.0.2"
# The section in the configuration file for additional settings
- section = "dnsbl"
+ section = "dbl"
class RPZExporter(ZoneExporter):
rules = {
# DNS
"dns" : {
- "msg" : "\"IPFire DNSBL [%s] Blocked DNS Query\"" % self.list,
+ "msg" : "\"IPFire DBL [%s] Blocked DNS Query\"" % self.list,
"dns.query" : None,
"domain" : None,
"dataset" : (
"rev" : "1",
"reference" : (
"url",
- "https://www.ipfire.org/dnsbl/%s" % self.list.slug,
+ "https://www.ipfire.org/dbl/%s" % self.list.slug,
),
"metadata" : {
- "dnsbl" : "%s.dnsbl.ipfire.org" % self.list.slug,
+ "dbl" : "%s.dbl.ipfire.org" % self.list.slug,
},
},
# HTTP
"http" : {
- "msg" : "\"IPFire DNSBL [%s] Blocked HTTP Request\"" % self.list,
+ "msg" : "\"IPFire DBL [%s] Blocked HTTP Request\"" % self.list,
"http.host" : None,
"domain" : None,
"dataset" : (
"rev" : "1",
"reference" : (
"url",
- "https://www.ipfire.org/dnsbl/%s" % self.list.slug,
+ "https://www.ipfire.org/dbl/%s" % self.list.slug,
),
"metadata" : {
- "dnsbl" : "%s.dnsbl.ipfire.org" % self.list.slug,
+ "dbl" : "%s.dbl.ipfire.org" % self.list.slug,
},
},
# TLS
"tls" : {
- "msg" : "\"IPFire DNSBL [%s] Blocked TLS Connection\"" % self.list,
+ "msg" : "\"IPFire DBL [%s] Blocked TLS Connection\"" % self.list,
"tls.sni" : None,
"domain" : None,
"dataset" : (
"rev" : "1",
"reference" : (
"url",
- "https://www.ipfire.org/dnsbl/%s" % self.list.slug,
+ "https://www.ipfire.org/dbl/%s" % self.list.slug,
),
"metadata" : {
- "dnsbl" : "%s.dnsbl.ipfire.org" % self.list.slug,
+ "dbl" : "%s.dbl.ipfire.org" % self.list.slug,
},
},
# QUIC
"quic" : {
- "msg" : "\"IPFire DNSBL [%s] Blocked QUIC Connection\"" % self.list,
+ "msg" : "\"IPFire DBL [%s] Blocked QUIC Connection\"" % self.list,
"quic.sni" : None,
"domain" : None,
"dataset" : (
"rev" : "1",
"reference" : (
"url",
- "https://www.ipfire.org/dnsbl/%s" % self.list.slug,
+ "https://www.ipfire.org/dbl/%s" % self.list.slug,
),
"metadata" : {
- "dnsbl" : "%s.dnsbl.ipfire.org" % self.list.slug,
+ "dbl" : "%s.dbl.ipfire.org" % self.list.slug,
},
},
}
class DirectoryExporter(MultiExporter):
"""
This is a simple nested exporter that will create the directory structure
- as it is available on https://dnsbl.ipfire.org/lists.
+ as it is available on https://dbl.ipfire.org/lists.
"""
files = {
# Simple formats
"%(list)s/hosts.txt" : HostsExporter,
# DNS Zones
- "%(list)s/dnsbl.zone" : BlocklistExporter,
+ "%(list)s/dbl.zone" : BlocklistExporter,
"%(list)s/rpz.zone" : RPZExporter,
# Adblock Plus
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
def _(singular, plural=None, n=None):
if plural:
- return gettext.dngettext("dnsbl", singular, plural, n)
+ return gettext.dngettext("dbl", singular, plural, n)
- return gettext.dgettext("dnsbl", singular)
+ return gettext.dgettext("dbl", singular)
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
formats = {
"abp" : exporters.AdBlockPlusExporter,
"domains" : exporters.DomainsExporter,
- "dnsbl" : exporters.BlocklistExporter,
+ "dbl" : exporters.BlocklistExporter,
"hosts" : exporters.HostsExporter,
"rpz" : exporters.RPZExporter,
"squidguard" : exporters.SquidGuardExporter,
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
import logging.handlers
# Initialise root logger
-log = logging.getLogger("dnsbl")
+log = logging.getLogger("dbl")
log.setLevel(logging.INFO)
# Log to console
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
# Send the message
moderator.sendmail("\n".join(lines), headers={
- "Subject" : _("[IPFire DNSBL] Pending Reports"),
+ "Subject" : _("[IPFire DBL] Pending Reports"),
# Mark that this email is auto-generated
"Auto-Submitted" : "auto-generated",
lines = (
_("Hello,"),
"",
- _("Thank you for submitting a report to the IPFire DNSBL service."),
+ _("Thank you for submitting a report to the IPFire DBL service."),
"",
_("We have received your report regarding %s and wanted to confirm that it's now in our moderation queue.") % self.name,
"",
" Reports like yours are essential to maintaining the effectiveness of our service."),
"",
_("Best regards,"),
- "-%s" % _("DNSBL Moderation Team"),
+ "-%s" % _("DBL Moderation Team"),
)
# Send the email
reporter.sendmail("\n".join(lines), headers={
- "Subject" : _("Your DNSBL Report Has Been Received"),
+ "Subject" : _("Your DBL Report Has Been Received"),
})
def _send_closing_notification(self):
# ACCEPTED
if self.accepted:
- subject = "[IPFire DNSBL] %s" % (_("Your report for %s has been accepted") % self.name)
+ subject = "[IPFire DBL] %s" % (_("Your report for %s has been accepted") % self.name)
lines = (
_("Hello,"),
"",
- _("Thank you for taking the time to report %s to our IPFire DNSBL service.") % self.name,
+ _("Thank you for taking the time to report %s to our IPFire DBL service.") % self.name,
"",
_("We've reviewed your submission and are pleased to inform you that your report has been ACCEPTED."
" The domain has been added to our blocklist and will now be flagged by systems using our service."),
# DECLINED
else:
- subject = "[IPFire DNSBL] %s" % (_("Your report for %s has been reviewed") % self.name)
+ subject = "[IPFire DBL] %s" % (_("Your report for %s has been reviewed") % self.name)
lines = (
_("Hello,"),
"",
- _("Thank you for taking the time to report %s to our IPFire DNSBL service.") % self.name,
+ _("Thank you for taking the time to report %s to our IPFire DBL service.") % self.name,
"",
_("We've carefully reviewed your submission."
" After investigation, we've determined that this domain does not meet our criteria"
@property
def url(self):
- return "https://www.ipfire.org/dnsbl/reports/%s" % self.id
+ return "https://www.ipfire.org/dbl/reports/%s" % self.id
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2026 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
@property
def admins(self):
- return self.get_group("dnsbl-admins")
+ return self.get_group("dbl-admins")
# Moderators
@property
def moderators(self):
- return self.get_group("dnsbl-moderators")
+ return self.get_group("dbl-moderators")
class LDAPObject(object):
message.set_content(content)
# no-reply@ipfire.org
- no_reply = email.utils.formataddr(("IPFire DNSBL", "no-reply@ipfire.org"))
+ no_reply = email.utils.formataddr(("IPFire DBL", "no-reply@ipfire.org"))
# Set the recipient
message["To"] = email.utils.formataddr((self.cn, self.mail))
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
#!@PYTHON@
###############################################################################
# #
-# dnsbl - A DNS Blocklist Compositor For IPFire #
+# dbl - A Domain Blocklist Compositor For IPFire #
# Copyright (C) 2025 IPFire Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
import argparse
import babel.dates
import babel.numbers
-import dnsbl
-import dnsbl.checker
-import dnsbl.exporters
-import dnsbl.util
+import dbl
+import dbl.checker
+import dbl.exporters
+import dbl.util
import logging
import os
import rich.console
import uuid
# i18n
-from dnsbl.i18n import _
+from dbl.i18n import _
class CLI(object):
def __init__(self):
subparsers = parser.add_subparsers()
# Global Configuration Flags
- parser.add_argument("--config", default="@sysconfdir@/dnsbl.conf",
+ parser.add_argument("--config", default="@sysconfdir@/dbl.conf",
type=argparse.FileType("r"), help=_("Configuration File"))
# Logging Flags
help=_("The license of the list"))
create.add_argument("--description",
help=_("The description of the list"))
- create.add_argument("--priority", choices=dnsbl.lists.PRIORITIES,
+ create.add_argument("--priority", choices=dbl.lists.PRIORITIES,
help=_("The priority of this list"), default="INFORMATIONAL")
create.set_defaults(func=self.__create)
export.add_argument("output", type=argparse.FileType("wb"),
help=_("The output file"))
export.add_argument("--format", default="domains",
- choices=("abp", "domains", "dnsbl", "hosts", "rpz", "squidguard", "suricata",),
+ choices=("abp", "domains", "dbl", "hosts", "rpz", "squidguard", "suricata",),
help=_("Output Format"))
export.set_defaults(func=self.__export)
# Configure logging
if args.debug:
- dnsbl.logger.set_level(logging.DEBUG)
+ dbl.logger.set_level(logging.DEBUG)
elif args.quiet:
- dnsbl.logger.set_level(logging.ERROR)
+ dbl.logger.set_level(logging.ERROR)
# Initialize the backend
- backend = dnsbl.Backend(
+ backend = dbl.Backend(
config = args.config,
debug = args.debug,
)
Exports all lists
"""
# Launch the DirectoryExporter
- exporter = dnsbl.exporters.DirectoryExporter(backend, root=args.directory)
+ exporter = dbl.exporters.DirectoryExporter(backend, root=args.directory)
exporter()
def __add_source(self, backend, args):
# Fetch the list
list = self.__get_list(backend, args.list)
- with dnsbl.util.Stopwatch(_("Optimizing %s") % list):
+ with dbl.util.Stopwatch(_("Optimizing %s") % list):
list.optimize()
def __history(self, backend, args):
"""
Runs the checker over all domains
"""
- checker = dnsbl.checker.Checker(backend)
+ checker = dbl.checker.Checker(backend)
checker.check(*args.domain)
# Authentication
-/dnsbl-notify.service
+/dbl-notify.service
[Unit]
-Description=IPFire DNSBL API
+Description=IPFire DBL API
After=network.target postgresql.service
Requires=postgresql.service
[Service]
-ExecStart=/usr/bin/uvicorn dnsbl.api:app
+ExecStart=/usr/bin/uvicorn dbl.api:app
User=nobody
[Install]
[Unit]
-Description=IPFire DNSBL Notification
+Description=IPFire DBL Notification
[Service]
Type=oneshot
-ExecStart=@bindir@/dnsbl --quiet notify
+ExecStart=@bindir@/dbl --quiet notify
User=nobody
[Install]
[Unit]
-Description=IPFire DNSBL Notification Timer
+Description=IPFire DBL Notification Timer
[Timer]
# Run at 9:00 AM
#!/bin/bash
-pg_dump --schema-only --no-owner -h dnsbl01.haj.ipfire.org -U dnsbl dnsbl \
+pg_dump --schema-only --no-owner -h dbl01.haj.ipfire.org -U dbl dbl \
> src/database.sql