</div>
</section>
+ {# How To Use? #}
+ <section class="section">
+ <div class="container">
+ <h5 class="title is-5">
+ {{ _("How To Use?") }}
+ </h5>
+
+ <div class="tabs">
+ <ul>
+ <li class="is-active" data-tab="ipfire">
+ <a>{% module IPFireLogo() %}</a>
+ </li>
+
+ <li data-tab="rpz">
+ <a>{{ _("Request Policy Zone (RPZ)") }}</a>
+ </li>
+
+ <li data-tab="alternative">
+ <a>{{ _("Alternative Formats") }}</a>
+ </li>
+ </ul>
+ </div>
+
+ <div id="ipfire" class="tab-content">
+ <div class="content">
+ <p>
+ In IPFire, all blocklists are already included and integrated into the following features:
+ </p>
+
+ <ul>
+ <li>
+ {{ _("URL Filter")}}
+ </li>
+
+ <li>
+ {{ _("Intrusion Prevention System") }}
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div id="rpz" class="tab-content is-hidden">
+ <div class="content">
+ <p>
+ The IPFire DNSBL is published as a Response Policy Zone (RPZ) and
+ can be consumed by many popular recursive DNS resolvers.
+ </p>
+
+ <p>
+ Resolvers fetch the list via AXFR/IXFR, store it locally, and only
+ transfer updates when the zone changes — keeping bandwidth usage
+ low and resolution fast.
+ </p>
+
+ <h6>PowerDNS Recursor</h6>
+
+ <pre>
+recursor:
+ rpzs:
+ - name: {{ list.slug }}.rpz.ipfire.org
+ addresses:
+ - 'primary.dnsbl.ipfire.org'</pre>
+
+ <h6>Unbound</h6>
+
+ <pre>
+server:
+ module-config: "respip validator iterator"
+
+rpz:
+ name: {{ list.slug }}.rpz.ipfire.org
+ primary: primary.dnsbl.ipfire.org
+ zonefile: /var/cache/unbound/{{ list.slug }}.rpz.ipfire.org.zone</pre>
+ </div>
+ </div>
+
+ <div id="alternative" class="tab-content is-hidden">
+ <div class="content">
+ <p>
+ All IPFire DNSBL lists are also available as downloadable domain and hosts files.
+ </p>
+
+ <p>
+ These formats are intended for setups where the lists are consumed directly,
+ for example by firewalls, filtering proxies, custom tooling, or systems using
+ hosts-file based blocking. The files can be fetched periodically and applied locally.
+ </p>
+ </div>
+
+ <div class="buttons are-small">
+ <a class="button is-primary" href="https://dnsbl.ipfire.org/lists/{{ list.slug }}/domains.txt">
+ <span class="icon">
+ <i class="fas fa-download"></i>
+ </span>
+
+ <span>
+ {{ _("Domains") }}
+ </span>
+ </a>
+
+ <a class="button is-primary" href="https://dnsbl.ipfire.org/lists/{{ list.slug }}/hosts.txt">
+ <span class="icon">
+ <i class="fas fa-download"></i>
+ </span>
+
+ <span>
+ {{ _("Hosts") }}
+ </span>
+ </a>
+ </div>
+ </div>
+ </div>
+ </section>
+
{# Sources #}
{% if sources %}
<section class="section">
<div class="container">
- <h3 class="title is-3">{{ _("Sources") }}</h3>
+ <h5 class="title is-5">{{ _("Sources") }}</h5>
<table class="table is-fullwidth is-striped is-hoverable is-narrow">
<thead>