From 27b3f346a7cc34992f181091cedc46dfff79903e Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Fri, 21 Nov 2025 12:46:56 -0800 Subject: [PATCH] Feat: Admin endpoint to seize links --- functions/api/admin/takedown.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 functions/api/admin/takedown.js diff --git a/functions/api/admin/takedown.js b/functions/api/admin/takedown.js new file mode 100644 index 0000000..5c8a2fe --- /dev/null +++ b/functions/api/admin/takedown.js @@ -0,0 +1,19 @@ +export async function onRequestPost({ request, env }) { + try { + const { admin_pass, slug } = await request.json(); + if (admin_pass !== env.ADMIN_PASS) return new Response("Unauthorized", { status: 401 }); + if (!slug) return new Response("Missing slug", { status: 400 }); + + let dest = await env.KV_EV.get(slug); + if (!dest) return new Response("Slug not found", { status: 404 }); + + if (dest.startsWith('✺')) dest = dest.substring(1); + if (dest.startsWith('🚫')) return new Response("Link is already seized."); + + await env.KV_EV.put(slug, `🚫${dest}`); + return new Response(`Seized /${slug}. Redirects to /takedown.`); + } catch (e) { + return new Response(e.message, { status: 500 }); + } +} +