From aaa2e0042b532e1f972cbc9734849cf2766933b4 Mon Sep 17 00:00:00 2001
From: tmueller <tmueller@cl.uni-heidelberg.de>
Date: Thu, 8 Apr 2021 19:41:26 +0000
Subject: [PATCH] Implement ability to enter commands when attached, may be in
 further development get externalised as standalone binaries

---
 papermc.sh | 28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/papermc.sh b/papermc.sh
index 7157e39..685d1a6 100755
--- a/papermc.sh
+++ b/papermc.sh
@@ -55,6 +55,11 @@ exec_stop () {
   exit 0
 }
 
+start_server () {
+  screen -dmS mc java -server -Xms${MC_RAM} -Xmx${MC_RAM} ${JAVA_OPTS} -jar ${JAR_NAME} nogui #Startupbefehl inkl. ENVs vom Dockerfile
+  screen -wipe # sollte der server mal abstürzen oder sont irgednwie ein fehler auftreten wird damit zombiesessions entfernt.
+}
+
 while true
   do
     screen -S mc -X select . ; SCRUN=$? #Queryabfrage um rauszufindne ob screensession noch aktiv ist. Return: bool
@@ -62,10 +67,27 @@ while true
       then # Server läuft, zeige letzte zeilen vom log an...
         clear # Aber erstmal sauber machen ^^
         tail /papermc/logs/latest.log
+        read befehl
+        case $befehl in
+          backup
+            screen -r mc -p 0 -X stuff "stop^M"
+            bash backup.sh
+            ;;
+          stop
+            exec_stop
+            ;;
+          restart
+            screen -r mc -p 0 -X stuff "stop^M"
+            ;;
+          restore
+            screen -r mc -p 0 -X stuff "stop^M"
+            bash restore.sh
+            "\n## Please download Plugins and then start the container again. Press any key to continue"
+            read
+            ;;
+        esac
         trap exec_stop TERM INT # SIGTERM ^C etc abfangen und funktion für gracefull shutdown aufrufen
-        sleep 10 # CPU Zeit sparen da eine downtime von max 10s + Startzeit des javapplets vertretbar ist kann bei bedarf beliebig erhöht werden.
       else # Server läuft nicht, abgestürzt, gestoppt über minecraft /stop 
-        screen -dmS mc java -server -Xms${MC_RAM} -Xmx${MC_RAM} ${JAVA_OPTS} -jar ${JAR_NAME} nogui #Startupbefehl inkl. ENVs vom Dockerfile
-        screen -wipe # sollte der server mal abstürzen oder sont irgednwie ein fehler auftreten wird damit zombiesessions entfernt.
+        start_server
     fi
   done
-- 
GitLab