From 85fd76dde19b4cd54ab1a6c384f1cdb4edf6e341 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sun, 13 Aug 2017 20:11:10 +0300 Subject: [PATCH] =?UTF-8?q?Zond:=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/asys/zond/ZondCommandHandler.java | 28 +++++++++++++++++++ zond/src/main/resources/zond.properties | 3 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/zond/src/main/java/asys/zond/ZondCommandHandler.java b/zond/src/main/java/asys/zond/ZondCommandHandler.java index 193979f..87b9ed9 100644 --- a/zond/src/main/java/asys/zond/ZondCommandHandler.java +++ b/zond/src/main/java/asys/zond/ZondCommandHandler.java @@ -14,7 +14,12 @@ import org.apache.commons.exec.ExecuteWatchdog; import org.apache.commons.exec.Executor; import org.fusesource.jansi.Ansi; +import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.List; public class ZondCommandHandler implements CommandHandler { private Executor executor; @@ -57,6 +62,27 @@ public class ZondCommandHandler implements CommandHandler { }, "Thread Ticker"); } + private void preStartScript() { + if (Config.getInstance().getString("cmd.prestart").isEmpty()) + return; + + ProcessBuilder builder = new ProcessBuilder(Arrays.asList( + Config.getInstance().getString("cmd.prestart").split(" ", 2))); + builder.redirectErrorStream(true); + try { + Process process = builder.start(); + BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + while ((line = br.readLine()) != null) { + Shell.getInstance().getOutput().println(zondColored(line)); + } + process.waitFor(); + } catch (IOException | InterruptedException e) { + Shell.getInstance().getOutput() + .println(zondColored("[!] PreStart error: " + e.getMessage(), Ansi.Color.RED)); + } + } + @Override public void handle(String commandLine) { if (commandLine.startsWith(":")) { @@ -103,6 +129,8 @@ public class ZondCommandHandler implements CommandHandler { private void startProcess() { if (watchdog == null || !watchdog.isWatching()) { + preStartScript(); + if (watchdog == null) { watchdog = new ZondExecuteWatchdog( ExecuteWatchdog.INFINITE_TIMEOUT, diff --git a/zond/src/main/resources/zond.properties b/zond/src/main/resources/zond.properties index ddffcb0..03dc7dc 100644 --- a/zond/src/main/resources/zond.properties +++ b/zond/src/main/resources/zond.properties @@ -10,4 +10,5 @@ pingmonitor.maxlost = 6 #cmd.killer = taskkill /F /PID %PID #Linux cmd.killer = kill -KILL %PID -cmd.start = java -jar server.jar \ No newline at end of file +cmd.start = java -jar server.jar +cmd.prestart = echo Hello \ No newline at end of file