From a7cf851c90193e75b309ef26f6e5bdc4fb39e630 Mon Sep 17 00:00:00 2001 From: binaryDiv Date: Mon, 12 Nov 2018 21:25:35 +0100 Subject: [PATCH] Add server control script --- .gitignore | 2 ++ instantchatctl | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100755 instantchatctl diff --git a/.gitignore b/.gitignore index 6a18ad4..5fdfd4c 100644 --- a/.gitignore +++ b/.gitignore @@ -94,3 +94,5 @@ ENV/ # Rope project settings .ropeproject +# -- project specific -- +screenlog.* diff --git a/instantchatctl b/instantchatctl new file mode 100755 index 0000000..4c2a6bf --- /dev/null +++ b/instantchatctl @@ -0,0 +1,81 @@ +#!/bin/bash + +WORKDIR="$(dirname "$(readlink -f "$0")")" +SCREEN_SOCKNAME="instantchat_server" +SERVER_BIN="./server/chatserver.py" + +print_usage() { + echo "usage: $0 start|stop|restart|status|attach|pull" +} + +if [ $# -ne 1 ]; then + print_usage + exit 1 +fi + +cd "$WORKDIR" + +server_status() { + echo "Server status (screen -ls):" + if screen -ls | grep $SCREEN_SOCKNAME; then + echo "Server running" + else + echo "Server not running" + fi +} + +server_start() { + if screen -ls | grep -q $SCREEN_SOCKNAME; then + echo "Server is already running!" + return 1 + else + echo "Starting server..." + screen -dmS $SCREEN_SOCKNAME -L bash -c "$SERVER_BIN || read -p '-- press key to end screen session --'" + fi +} + +server_stop() { + if screen -ls | grep -q $SCREEN_SOCKNAME; then + echo "Stopping server..." + kill $(screen -ls | grep $SCREEN_SOCKNAME | grep -o '[0-9]*') + else + echo "Server is not running!" + fi +} + +server_restart() { + server_stop + server_start +} + +server_attach() { + echo "Attaching to screen session..." + screen -r $SCREEN_SOCKNAME +} + +server_pull() { + echo "Pulling from repository..." + if git pull --ff-only; then + server_restart + else + echo "Error while pulling!" + exit 1 + fi +} + +COMMAND=$1 + +case $COMMAND in + start) server_start ;; + stop) server_stop ;; + restart) server_restart ;; + status) server_status ;; + attach) server_attach ;; + pull) server_pull ;; + + *) + echo "unknown command" + print_usage + exit 1 +esac +