import createServerResources from "../k8s/server-create.js"; import deleteServerResources from "../k8s/server-delete.js"; import { sendError } from "../util/ExpressClientError.js"; import { startServerContainer, stopServerContainer, } from "../k8s/server-control.js"; function payloadFilter(req, res) { const serverSpec = req.body; if (!serverSpec) return res.sendStatus(400); const { name, url, version, serverType, difficulty, gamemode, memory } = serverSpec; if (!name) return res.status(400).send("Server name is required!"); if (!url) return res.status(400).send("Server url 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; 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); } startServerContainer(serverSpec) .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); } stopServerContainer(serverSpec) .then(() => res.sendStatus(200)) .catch(sendError(res)); }