34 lines
952 B
TypeScript
34 lines
952 B
TypeScript
import { upsertBlocklistDomains } from "../../db/domains";
|
|
|
|
const HAGEZI_URL =
|
|
"https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/gambling.txt";
|
|
|
|
export default defineEventHandler(async () => {
|
|
const raw = await $fetch<string>(HAGEZI_URL, { responseType: "text" });
|
|
|
|
const domains = raw
|
|
.split("\n")
|
|
.map((l) => l.trim())
|
|
.filter((l) => l.startsWith("||") && l.endsWith("^"))
|
|
.map((l) => l.slice(2, -1).toLowerCase())
|
|
.filter((d) => d.length > 0 && !d.includes("/") && d.includes("."));
|
|
|
|
if (domains.length < 1000) {
|
|
throw createError({
|
|
statusCode: 500,
|
|
message: `Zu wenige Domains (${domains.length}), möglicher Fetch-Fehler`,
|
|
});
|
|
}
|
|
|
|
const processed = await upsertBlocklistDomains(
|
|
domains.map((domain) => ({ domain, source: "hagezi" })),
|
|
);
|
|
|
|
return {
|
|
success: true,
|
|
total_fetched: domains.length,
|
|
processed,
|
|
timestamp: new Date().toISOString(),
|
|
};
|
|
});
|