29 lines
836 B
TypeScript
29 lines
836 B
TypeScript
import { NextResponse } from "next/server";
|
|
|
|
import { getOriginFromRequest } from "@/lib/request-origin";
|
|
import { requireAdminAccess } from "@/lib/session";
|
|
import { buildNodeHy2Config } from "@/lib/subscription";
|
|
import { getNodeBySlug } from "@/lib/store";
|
|
|
|
export async function GET(
|
|
request: Request,
|
|
context: RouteContext<"/api/admin/nodes/[slug]/config">,
|
|
) {
|
|
await requireAdminAccess();
|
|
|
|
const { slug } = await context.params;
|
|
const node = await getNodeBySlug(slug);
|
|
|
|
if (!node) {
|
|
return new NextResponse("node not found", { status: 404 });
|
|
}
|
|
|
|
return new NextResponse(buildNodeHy2Config(node, getOriginFromRequest(request)), {
|
|
status: 200,
|
|
headers: {
|
|
"Content-Type": "application/x-yaml; charset=utf-8",
|
|
"Content-Disposition": `attachment; filename="${slug}.config.yaml"`,
|
|
},
|
|
});
|
|
}
|