import { clientIp, isAdminNetworkAllowed, json } from "../../../_lib/auth"; import { readSettings, validTvId } from "../../../_lib/store"; import { recordTvCheckIn, tvConfig } from "../../../_lib/tvs"; export const dynamic = "force-dynamic"; /** * Called by the Shield photo app every few minutes: * GET /api/tv/config?device=&name=&model=&app=&applied= * Same network rule as admin: direct LAN only, never through a proxy. */ export async function GET(request: Request) { if (!isAdminNetworkAllowed(request.headers)) return new Response("Not found", { status: 404 }); const params = new URL(request.url).searchParams; const id = validTvId(params.get("device")); if (!id) return json({ error: "Missing or invalid device id." }, 400); const settings = await readSettings(); const setting = settings.tvs.find((tv) => tv.id === id); await recordTvCheckIn( id, { deviceName: params.get("name"), model: params.get("model"), appVersion: params.get("app"), appliedVersion: params.get("applied"), ip: clientIp(request.headers) }, undefined, new Set(settings.tvs.map((tv) => tv.id)), ); return json(tvConfig(setting)); }