minecluster/lib/k8s/server-files.js

44 lines
1.4 KiB
JavaScript
Raw Normal View History

2023-12-16 09:28:06 -07:00
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;
2023-12-17 12:25:14 -07:00
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!");
};
2023-12-16 09:28:06 -07:00
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!");
2023-12-17 12:25:14 -07:00
// 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));
2023-12-16 09:28:06 -07:00
client.close();
}