feat(url-filter): add blocklist.txt endpoint for DNS-filter sync
AdGuard Home auf rebreak-mdm pullt diese Liste alle 1h für DoH-DNS-NXDOMAIN. Single source of truth mit dem URL-Filter (NEFilter) — gleicher getActiveBlocklistDomains() backend-call. Public (no auth) — Casino-Domains sind keine PII, andere DNS-Blocklisten (HaGeZi, OISD) sind genauso public. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c1a66e3d07
commit
86445d8607
19
backend/server/api/url-filter/blocklist.txt.get.ts
Normal file
19
backend/server/api/url-filter/blocklist.txt.get.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { getActiveBlocklistDomains } from "../../db/domains";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GET /api/url-filter/blocklist.txt
|
||||||
|
*
|
||||||
|
* Plain-text Blocklist für externe DNS-Filter (AdGuard Home, Pi-hole, etc.).
|
||||||
|
* Eine Domain pro Zeile. Wird vom rebreak-mdm DoH-Server alle 1h gepullt.
|
||||||
|
*
|
||||||
|
* Public — Casino-Domains sind keine PII. Andere Filter-Listen (HaGeZi, OISD)
|
||||||
|
* sind genauso public. Single source of truth mit dem URL-Filter im NEFilter.
|
||||||
|
*/
|
||||||
|
export default defineEventHandler(async (event) => {
|
||||||
|
const domains = await getActiveBlocklistDomains();
|
||||||
|
const body = domains.map((d) => d.domain).join("\n") + "\n";
|
||||||
|
|
||||||
|
setHeader(event, "Content-Type", "text/plain; charset=utf-8");
|
||||||
|
setHeader(event, "Cache-Control", "public, max-age=300");
|
||||||
|
return body;
|
||||||
|
});
|
||||||
Loading…
x
Reference in New Issue
Block a user