init
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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),
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user