Files
hy2-panel/app/api/admin/nodes/[slug]/config/route.ts
T

38 lines
999 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 });
}
if (node.node_type !== "hy2") {
return new NextResponse("hy2 config unavailable for custom node", {
status: 409,
});
}
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"`,
},
},
);
}