import ftp from "basic-ftp"; import { ERR } from "../util/logging.js"; import { getServerAssets } from "./k8s-server-control.js"; const namespace = process.env.MCL_SERVER_NAMESPACE; export async function useFtp(serverService) { const { name } = serverService.metadata; const client = new ftp.Client(); await client.access({ host: `${name}.${namespace}.svc.cluster.local`, user: "minecluster", password: "minecluster", }); return client; } const handleError = (res) => (e) => { ERR("SERVER FILES", "Error occurred while preforming FTP operation!", e); res.status(500).send("Error occurred while performing FTP operation!"); }; export async function listFiles(req, res) { const serverSpec = req.body; if (!serverSpec) return res.sendStatus(400); if (!serverSpec.name) return res.status(400).send("Server name required!"); const { name } = serverSpec; const server = await getServerAssets(name); if (!server) return res.status(404).send("No Resources for that server were found!"); if (!server.service) return res .status(409) .send("Service doesn't exist, please contact your hosting provider!"); // client.ftp.verbose = true; const client = await useFtp(server.service).catch(handleError(res)); if (!client) return; await client .list() .then((f) => res.json(f)) .catch(handleError(res)); client.close(); }