82 lines
1.4 KiB
Bash
Executable File
82 lines
1.4 KiB
Bash
Executable File
#!/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
|
|
|