Files
Server/src/discord/handlers/DevRequestHandler.java
T

104 lines
3.8 KiB
Java
Raw Normal View History

// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package discord.handlers;
import discord.MagicBot;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import org.pmw.tinylog.Logger;
import java.io.IOException;
2023-01-09 10:22:35 -05:00
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Collectors;
2023-01-08 12:44:16 -05:00
public class DevRequestHandler {
public static void handleRequest(MessageReceivedEvent event, String[] args) {
2023-01-08 12:44:16 -05:00
String serverCommand;
2023-01-09 01:11:27 -05:00
String commandArgument = "";
2023-01-09 01:32:57 -05:00
String commandString = "";
2023-01-09 09:07:40 -05:00
String logString = "";
2023-01-09 01:32:57 -05:00
ProcessBuilder processBuilder;
// Early exit if database unavailable or is not an admin
if (MagicBot.isAdminEvent(event) == false)
return;
2023-01-08 12:44:16 -05:00
serverCommand = args[0].toLowerCase().trim();
2023-01-08 12:44:16 -05:00
if (args.length == 2)
2023-01-09 01:11:27 -05:00
commandArgument = args[1].toLowerCase().trim();
2023-01-08 12:44:16 -05:00
switch (serverCommand) {
2023-07-15 09:23:48 -04:00
case "build":
2023-01-09 01:39:14 -05:00
commandString = "./mbdevbuild.sh";
2023-01-08 12:44:16 -05:00
break;
2023-01-09 01:01:43 -05:00
case "restart":
2023-01-09 01:39:14 -05:00
commandString = "./mbdevrestart.sh";
2023-01-08 12:44:16 -05:00
break;
case "debug":
2023-01-09 01:39:14 -05:00
commandString = "./mbdevdebug.sh";
2023-01-08 12:44:16 -05:00
break;
case "shutdown":
2023-01-09 01:39:14 -05:00
commandString = "./mbdevkill.sh";
2023-01-08 12:44:16 -05:00
break;
2023-01-09 10:22:35 -05:00
case "lastout":
MagicBot.sendResponse(event, getLastOutput());
return;
2023-01-10 08:34:11 -05:00
case "console":
commandString = "./mbdevconsole.sh";
2023-01-10 08:51:00 -05:00
break;
case "help":
MagicBot.sendResponse(event,
"#dev build <target> (blank==master) \n" +
2023-07-15 09:23:48 -04:00
"#dev shutdown (Shutdown dev server)\n" +
"#dev restart (Restarts the server)\n" +
"#dev debug (Restarts server in debug mode)\n" +
"#dev console # (Displays # lines from console)\n" +
"#dev lastout (Displays output from last command) \n");
2023-01-10 08:51:00 -05:00
return;
2023-01-08 12:44:16 -05:00
default:
break;
}
2023-01-09 01:59:18 -05:00
if (commandString.isEmpty()) {
MagicBot.sendResponse(event, "Unrecognized Dev command: " + serverCommand + " " + commandArgument);
return;
}
2023-01-09 10:12:45 -05:00
processBuilder = new ProcessBuilder("/bin/sh", "-c", commandString + " " + commandArgument + " > devLastOut");
2023-07-15 09:23:48 -04:00
logString = String.join(" ", processBuilder.command().toArray(new String[0]));
2023-01-09 01:32:57 -05:00
2023-01-09 01:59:18 -05:00
try {
2023-07-15 09:23:48 -04:00
processBuilder.start();
} catch (IOException e) {
Logger.info(e.toString());
}
2023-01-09 01:32:57 -05:00
2023-01-09 10:09:43 -05:00
MagicBot.sendResponse(event, "Executed on dev: " + logString + "\n" +
2023-07-15 09:23:48 -04:00
"Use #dev lastout to view results");
}
2023-01-09 09:43:03 -05:00
2023-01-09 10:22:35 -05:00
private static String getLastOutput() {
String outString = null;
try {
outString = Files.lines(Paths.get("devLastOut"))
.collect(Collectors.joining(System.lineSeparator()));
} catch (IOException e) {
e.printStackTrace();
}
return outString;
}
}