import { findMagicDeviceByToken } from "../../db/devices"; /** * GET /api/magic/status?token= * * KEIN auth required — Token selbst ist das Secret (64-char hex). * * Polling-Endpoint für den Windows-Tamper-Service (rebreak-magic-win): * Service prüft alle 5 Minuten ob das Binding noch aktiv ist. * - active=true → DoH-Schutz muss aktiv sein (bei Manipulation re-applien) * - active=false → Release-Cooldown abgelaufen, Token revoked → Teardown erlaubt * * Offline-Verhalten ist Client-Sache: kein Response → fail-closed (Schutz bleibt). */ export default defineEventHandler(async (event) => { const query = getQuery(event); const token = query.token as string | undefined; // Hex-Token, ≤63 Zeichen (AdGuard-clientid-Limit). Länge nicht hart fixieren, // damit Token-Längen-Änderungen den Tamper-Poll nicht brechen. if (!token || !/^[0-9a-f]{1,63}$/.test(token)) { throw createError({ statusCode: 400, message: "token query parameter required", }); } const device = await findMagicDeviceByToken(token); return { success: true, data: { active: device !== null, }, }; });