import createServerResources from "../k8s/server-create.js"; import deleteServerResources from "../k8s/server-delete.js"; import { createServerEntry } from "../database/queries/server-queries.js"; import { sendError } from "../util/ExpressClientError.js"; import { startServerContainer, stopServerContainer, } from "../k8s/server-control.js"; import { toggleServer } from "../k8s/k8s-server-control.js"; function payloadFilter(req, res) { const serverSpec = req.body; if (!serverSpec) return res.sendStatus(400); const { name, host, version, serverType, difficulty, gamemode, memory } = serverSpec; if (!name) return res.status(400).send("Server name is required!"); if (!host) return res.status(400).send("Server host is required!"); if (!version) return res.status(400).send("Server version is required!"); if (!difficulty) return res.status(400).send("Server difficulty is required!"); if (!serverType) return res.status(400).send("Server type is required!"); if (!gamemode) return res.status(400).send("Server Gamemode is required!"); if (!memory) return res.status(400).send("Memory is required!"); req.body.name = req.body.name.toLowerCase(); return "filtered"; } function checkServerName(serverSpec) { if (!serverSpec) throw new ExpressClientError({ c: 400 }); if (!serverSpec.name) throw new ExpressClientError({ c: 400, m: "Server name required!" }); } export function createServer(req, res) { if (payloadFilter(req, res) !== "filtered") return; const serverSpec = req.body; createServerEntry(serverSpec) .then(() => createServerResources(serverSpec).then(() => res.sendStatus(200)), ) .catch(sendError(res)); } export async function deleteServer(req, res) { // Ensure spec is safe const serverSpec = req.body; try { checkServerName(serverSpec); } catch (e) { return sendError(res)(e); } deleteServerResources(serverSpec) .then(() => res.sendStatus(200)) .catch(sendError(res)); } export async function startServer(req, res) { // Ensure spec is safe const serverSpec = req.body; try { checkServerName(serverSpec); } catch (e) { return sendError(res)(e); } const { name } = serverSpec; toggleServer(name, true) .then(() => res.sendStatus(200)) .catch(sendError(res)); } export async function stopServer(req, res) { // Ensure spec is safe const serverSpec = req.body; try { checkServerName(serverSpec); } catch (e) { return sendError(res)(e); } const { name } = serverSpec; toggleServer(name, false) .then(() => res.sendStatus(200)) .catch(sendError(res)); }