import { buildSubscriptionConfig, buildSubscriptionHeaders } from "@/lib/subscription"; import { getSubscriptionSettings, getUserBySubscriptionToken, listSubscriptionNodes, } from "@/lib/store"; export async function GET( _request: Request, context: RouteContext<"/api/subscription/[token]/clash">, ) { const { token } = await context.params; const user = await getUserBySubscriptionToken(token); if (!user || !user.enabled) { return new Response("subscription not found", { status: 404 }); } const [nodes, settings] = await Promise.all([ listSubscriptionNodes(), getSubscriptionSettings(), ]); let body: string; try { body = buildSubscriptionConfig({ user, nodes, settings }); } catch { return new Response("subscription secret unavailable", { status: 409 }); } const profileName = user.subscription_label || settings.profileName || user.username; return new Response(body, { status: 200, headers: buildSubscriptionHeaders(user, profileName), }); }