</a>
{% else %}
<a class="navbar-item" href="/">
- {% if request.path.startswith("/fireinfo") %}
+ {% if request.path.startswith("/dnsbl") %}
+ {% module IPFireLogo("DNSBL") %}
+ {% elif request.path.startswith("/fireinfo") %}
{% module IPFireLogo("Fireinfo") %}
{% elif hostname.startswith("nopaste.") %}
{% module IPFireLogo("NoPaste") %}
</div>
{% end %}
+ {# DNSBL #}
+ {% if request.path.startswith("/dnsbl") %}
+ <a class="navbar-item is-tab
+ {% if request.path.startswith("/dnsbl/how-to-use") %}is-active{% end %}"
+ href="/dnsbl/how-to-use">
+ {{ _("How To Use?") }}
+ </a>
+
{# Location #}
- {% if request.path.startswith("/location") %}
+ {% elif request.path.startswith("/location") %}
<a class="navbar-item is-tab
{% if request.path.startswith("/location/how-to-use") %}is-active{% end %}"
href="/location/how-to-use">
--- /dev/null
+{% extends "../base.html" %}
+
+{% block head %}
+ {% module OpenGraph(
+ title=_("IPFire DNSBL"),
+ description="High-quality DNS blocklists for security-critical environments",
+ ) %}
+{% end block %}
+
+{% block title %}{{ _("Welcome to IPFire DNSBL") }}{% end block %}
+
+{% block container %}
+ <section class="hero is-medium is-primary">
+ <div class="hero-body">
+ <div class="container">
+ <h1 class="title">{{ _("IPFire DNS Blocklist") }}</h1>
+
+ <h6 class="subtitle mb-6">
+ {{ _("Early threat mitigation, enforced over DNS") }}
+ </h6>
+
+ <div class="columns is-multiline my-6">
+ <div class="column is-half">
+ <div class="columns is-mobile is-vcentered">
+ <div class="column is-3 has-text-centered">
+ <i class="fa-solid fa-magnifying-glass fa-5x"></i>
+ </div>
+
+ <div class="column">
+ <p class="title is-5">{{ _("Accuracy First, Always") }}</p>
+
+ <div class="content">
+ <p>
+ We prioritise high-confidence, well-verified data over raw volume.
+ Every listed domain must meet clear criteria, be reviewed continuously,
+ and be removed quickly when it no longer poses a threat.
+ The goal is trustworthy blocking with minimal false positives, suitable
+ for production networks.
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="column is-half">
+ <div class="columns is-mobile is-vcentered">
+ <div class="column is-3 has-text-centered">
+ <i class="fa-solid fa-shield-heart fa-5x"></i>
+ </div>
+
+ <div class="column">
+ <p class="title is-5">{{ _("Privacy-Respecting Operation") }}</p>
+
+ <div class="content">
+ <p>
+ The service is operated without tracking users or collecting
+ resolver telemetry. DNS security should improve safety without
+ introducing new privacy risks.
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="column is-half">
+ <div class="columns is-mobile is-vcentered">
+ <div class="column is-3 has-text-centered">
+ <i class="fa-solid fa-earth-europe fa-5x"></i>
+ </div>
+
+ <div class="column">
+ <p class="title is-5">{{ _("Built on DNS Standards and Best Practices") }}</p>
+
+ <div class="content">
+ <p>
+ These blocklists are developed with a deep understanding of DNS
+ infrastructure. They integrate naturally with technologies like
+ Response Policy Zones (RPZ), follow established standards, and
+ are operated with stability and long-term reliability in mind
+ — even at scale.
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="column is-half">
+ <div class="columns is-mobile is-vcentered">
+ <div class="column is-3 has-text-centered">
+ <span class="fab fa-osi fa-5x"></span>
+ </div>
+
+ <div class="column">
+ <p class="title is-5">{{ _("Open, Inclusive, and Free Software") }}</p>
+
+ <div class="content">
+ <p>
+ The IPFire DNS blocklists are built as a public good:
+ open, transparent, and free to use.
+ They are available to anyone, regardless of platform or vendor,
+ and developed in the open so the wider community can inspect,
+ contribute, and benefit.
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </section>
+
+ <section class="hero">
+ <div class="hero-body">
+ <div class="container">
+ <a class="button is-primary is-large is-fullwidth" href="/donate">
+ <span class="icon">
+ <i class="fa-solid fa-heart"></i>
+ </span>
+ <span>
+ Help keep the Internet safe and free — support IPFire DNSBL today
+ </span>
+ </a>
+ </div>
+ </div>
+ </section>
+{% end block %}
(r"/location/report\-a\-problem", StaticHandler, { "template" : "location/report-a-problem.html" }),
(r"/location/lookup/(.+)", location.LookupHandler),
+ # DNSBL
+ (r"/dnsbl/?", StaticHandler, { "template" : "dnsbl/index.html" }),
+
# Single-Sign-On for Discourse
(r"/sso/discourse", auth.SSODiscourse),
tornado.web.StaticFileHandler, { "path" : BOOT_STATIC_PATH }),
])
+ # dnsbl.ipfire.org
+ self.add_handlers(r"dnsbl\.([a-z]+\.dev\.)?ipfire\.org", [
+ (r"(.*)", tornado.web.RedirectHandler, { "url" : "https://www.ipfire.org/dnsbl{0}" }),
+ ])
+
# nopaste.ipfire.org
self.add_handlers(r"nopaste\.([a-z]+\.dev\.)?ipfire\.org", [
(r"/", nopaste.CreateHandler),