Files

128 lines
3.9 KiB
JavaScript

module.exports = that => {
/**
- Enable a plugin by deleting the DISABLED file
- Use socket.io to update masters list of plugins for this server
Give standard JSON object response
*/
that.app.post("/api/serverManager/enablePlugin", async (req, res) => {
if((req.body.token || req.cookies.token)
&& req.body.instanceID
&& typeof req.body.instanceID == "string"
&& req.body.pluginName
&& typeof req.body.pluginName == "string"
&& that.playerManager){
let perms = await that.playerManager.main.getPermissions((req.body.token || req.cookies.token));
if(perms.cluster.includes("enablePlugin")
|| (perms.instance[req.body.instanceID]
&& perms.instance[req.body.instanceID].includes("enablePlugin"))){
that.serverSockets[req.body.instanceID].socket.emit("serverManagerEnablePlugin", {
name: req.body.pluginName,
instanceID: req.body.instanceID,
}, async resp => {
if(resp.ok){
await updateData("plugins", req.body.instanceID);
}
res.send(resp);
});
} else {
res.send({
ok:false,
msg:"Insufficient permissions",
});
}
} else {
res.send({
ok:false,
msg:"Invalid request body",
});
}
});
/**
- Disable a plugin by adding an empty file named DISABLED to the plugins install pathname
- Use socket.io to update masters lost of plugins for this server
Give standard JSON object response
*/
that.app.post("/api/serverManager/disablePlugin", async (req, res) => {
if((req.body.token || req.cookies.token)
&& req.body.instanceID
&& typeof req.body.instanceID == "string"
&& req.body.pluginName
&& typeof req.body.pluginName == "string"
&& that.playerManager){
let perms = await that.playerManager.main.getPermissions((req.body.token || req.cookies.token));
if(perms.cluster.includes("disablePlugin")
|| (perms.instance[req.body.instanceID]
&& perms.instance[req.body.instanceID].includes("disablePlugin"))){
that.serverSockets[req.body.instanceID].socket.emit("serverManagerDisablePlugin", {
name: req.body.pluginName,
instanceID: req.body.instanceID,
}, async resp => {
if(resp.ok){
await updateData("plugins", req.body.instanceID);
}
res.send(resp);
});
} else {
res.send({
ok:false,
msg:"Insufficient permissions",
});
}
} else {
res.send({
ok:false,
msg:"Invalid request body",
});
}
});
that.app.post("/api/serverManager/editConfig", async (req,res) => {
if((req.body.token || req.cookies.token)
&& req.body.instanceID
&& typeof req.body.instanceID == "string"
&& req.body.entry
&& typeof req.body.entry == "string"
&& req.body.value !== undefined
&& that.playerManager){
let perms = await that.playerManager.main.getPermissions((req.body.token || req.cookies.token));
if(perms.cluster.includes("writeConfig")
|| (perms.instance[req.body.instanceID]
&& perms.instance[req.body.instanceID].includes("writeConfig"))){
that.serverSockets[req.body.instanceID].socket.emit("serverManagerEditConfig", {
entry: req.body.entry,
value: req.body.value,
}, async resp => {
if(resp.ok){
// Retrieve the latest config from the server and store it
await updateData("config", req.body.instanceID);
}
res.send(resp);
});
} else {
res.send({
ok:false,
msg:"Insufficient permissions",
});
}
} else {
res.send({
ok:false,
msg:"Invalid request body",
});
}
});
async function updateData(type, instanceID){
// Retrieve the latest ${type} from the server and store it
if(type == "config"){
that.serverSockets[instanceID].socket.emit("serverManagerGetConfig", {}, data => {
that.serverSockets[instanceID].config = data;
});
} else if(type == "plugins"){
that.serverSockets[instanceID].socket.emit("serverManagerGetPlugins", {}, data => {
that.serverSockets[instanceID].plugins = data;
});
}
}
}