summaryrefslogtreecommitdiff
path: root/herculeswrapper
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-08-10 01:01:34 +0300
committerAndrei Karas <akaras@inbox.ru>2016-08-10 01:01:34 +0300
commit5c0fc1fc767b7b447d787d8123b23e99a35b8577 (patch)
tree020ec097774629268481a47c98e70a53519057bc /herculeswrapper
parent5b99ec96cf46a9a3b6687a7fbf8ef1d379d99f83 (diff)
downloadtools-5c0fc1fc767b7b447d787d8123b23e99a35b8577.tar.gz
tools-5c0fc1fc767b7b447d787d8123b23e99a35b8577.tar.bz2
tools-5c0fc1fc767b7b447d787d8123b23e99a35b8577.tar.xz
tools-5c0fc1fc767b7b447d787d8123b23e99a35b8577.zip
add herculeswrapper.
For now this is basic wrapper. Allow: terminate all servers restart all servers restart char and map servers restart map server
Diffstat (limited to 'herculeswrapper')
-rwxr-xr-xherculeswrapper/char.sh7
-rw-r--r--herculeswrapper/include.sh42
-rwxr-xr-xherculeswrapper/login.sh7
-rwxr-xr-xherculeswrapper/map.sh38
4 files changed, 94 insertions, 0 deletions
diff --git a/herculeswrapper/char.sh b/herculeswrapper/char.sh
new file mode 100755
index 0000000..cdca266
--- /dev/null
+++ b/herculeswrapper/char.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+export PIPE=./log/charpipe.tmp
+
+source ${dir}/include.sh
+
+server_logic ./char-server 2s
diff --git a/herculeswrapper/include.sh b/herculeswrapper/include.sh
new file mode 100644
index 0000000..fe0c276
--- /dev/null
+++ b/herculeswrapper/include.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+function create_pipe {
+ trap "rm -f $PIPE" EXIT
+ if [[ ! -p $PIPE ]]; then
+ echo "Making pipe $PIPE"
+ rm -f $PIPE
+ mkfifo $PIPE
+ fi
+}
+
+# $1 - text
+function send_all_pipes {
+ echo $1 >$LOGIN_PIPE
+ echo $1 >$CHAR_PIPE
+}
+
+# $1 - text
+function send_char_pipe {
+ echo $1 >$CHAR_PIPE
+}
+
+# $1 - server binary name
+# $2 - sleep time
+function server_logic {
+ create_pipe
+ $1
+
+ while true
+ do
+ if read line <$PIPE; then
+ echo pipe: $line
+ if [[ "$line" == 'exit' ]]; then
+ exit
+ fi
+ if [[ "$line" == 'restart' ]]; then
+ sleep $2
+ $1
+ fi
+ fi
+ done
+}
diff --git a/herculeswrapper/login.sh b/herculeswrapper/login.sh
new file mode 100755
index 0000000..ae67bf8
--- /dev/null
+++ b/herculeswrapper/login.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+export PIPE=./log/loginpipe.tmp
+
+source ${dir}/include.sh
+
+server_logic ./login-server 0s
diff --git a/herculeswrapper/map.sh b/herculeswrapper/map.sh
new file mode 100755
index 0000000..ed2a1bd
--- /dev/null
+++ b/herculeswrapper/map.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+export PIPE=./log/mappipe.tmp
+export LOGIN_PIPE=./log/loginpipe.tmp
+export CHAR_PIPE=./log/charpipe.tmp
+
+source ${dir}/include.sh
+
+create_pipe
+
+while [ 1 ] ; do
+ ./map-server
+ export ret=$?
+ case "${ret}" in
+ 0)
+ echo "Returned 0. Probably ctrl+c"
+ break
+ ;;
+ 100)
+ echo "Terminating server"
+ send_all_pipes "exit"
+ break
+ ;;
+ 101)
+ echo "Restarting all servers..."
+ send_all_pipes "restart"
+ sleep 5s
+ ;;
+ 102)
+ echo "Restarting chat and map servers..."
+ send_char_pipe "restart"
+ sleep 3s
+ ;;
+ 103)
+ echo "Restarting map server..."
+ ;;
+ esac
+done