1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
#!/bin/bash
#
# start/stop cyphesis-cpp game server
#
### BEGIN INIT INFO
# Provides: cyphesis-cpp
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Should-Start: postgresql
# Should-Stop: postgresql
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Game-Server of the WorldForge project
# Description: Game-Server of the WorldForge project
### END INIT INFO
if ! [ -f /etc/cyphesis/cyphesis.vconf ]; then
exit 0
fi
if ! [ -x /usr/bin/cyphesis ]; then
exit 0
fi
. /lib/lsb/init-functions
CYPHESISUSER=cyphesis
POSTGRESUSER=postgres
start() {
log_daemon_msg "Starting Cyphesis game server" "cyphesis"
# Ensure that the system PostgreSQL database user exists
if ! su $POSTGRESUSER -s /bin/sh -c true >/dev/null 2>&1; then
RET=$?
log_progress_msg "cannot find system PostgreSQL database user $POSTGRESUSER"
log_end_msg $RET
fi
# Ensure PostgreSQL is running
if ! su $POSTGRESUSER -s /bin/sh -c "psql -c \"\" template1" >/dev/null 2>&1; then
RET=$?
log_progress_msg "PostgreSQL server is not running"
log_end_msg $RET
fi
# Ensure that the system Cyphesis user exists
if ! su $CYPHESISUSER -s /bin/sh -c true >/dev/null 2>&1; then
RET=$?
log_progress_msg "cannot find system Cyphesis user $CYPHESISUSER"
log_end_msg $RET
fi
# Ensure that the system Cyphesis user has a PostgreSQL account
if ! su $CYPHESISUSER -s /bin/sh -c "psql -c \"\" template1" >/dev/null 2>&1; then
log_progress_msg "creating PostgreSQL account for user $CYPHESISUSER..."
if ! su $POSTGRESUSER -s /bin/sh -c "createuser -d -R -S --no-password $CYPHESISUSER" >/dev/null 2>&1; then
RET=$?
log_progress_msg "cannot create PostgreSQL account for user $CYPHESISUSER"
log_end_msg $RET
fi
fi
# Ensure that the Cyphesis database exists
if ! su $CYPHESISUSER -s /bin/sh -c "psql -c \"\" cyphesis" >/dev/null 2>&1; then
log_progress_msg "creating PostgreSQL database for user $CYPHESISUSER..."
if ! su $CYPHESISUSER -s /bin/sh -c "createdb --no-password $CYPHESISUSER" >/dev/null 2>&1; then
RET=$?
log_progress_msg "cannot create PostgreSQL database for user $CYPHESISUSER"
log_end_msg $RET
fi
fi
# Load and refresh database rules
log_progress_msg "loading and refreshing Cyphesis database rules..."
if ! su $CYPHESISUSER -s /bin/sh -c "cyloadrules" >/dev/null 2>&1; then
RET=$?
log_progress_msg "cannot load rules into $CYPHESISUSER database"
log_end_msg $RET
fi
log_progress_msg "spawning daemon..."
mkdir -p --mode=775 /var/log/cyphesis/ || true
chown cyphesis /var/log/cyphesis/
mkdir -p --mode=775 /run/cyphesis/ || true
chown cyphesis /run/cyphesis/
if start-stop-daemon --start --quiet --oknodo --chuid $CYPHESISUSER --exec /usr/bin/cyphesis -- --cyphesis:daemon=true 2>/dev/null; then
log_progress_msg "spawned"
log_end_msg 0
else
log_progress_msg "failed"
log_end_msg $?
fi
}
stop() {
log_daemon_msg "Stopping Cyphesis game server"
start-stop-daemon --stop --quiet --oknodo --exec /usr/bin/cyphesis
log_end_msg $?
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
$0 restart
;;
force-reload)
$0 restart
;;
restart)
$0 stop
$0 start
;;
try-restart)
start-stop-daemon --status --quiet --oknodo --exec /usr/bin/cyphesis
RET=$?
case $RET in
0)
stop
start
;;
1)
rm /run/cyphesis/cyphesis.pid
;&
3)
return 0
;;
*)
log_daemon_msg "Unable to determine Cyphesis game server status"
log_end_msg $RET
;;
esac
;;
status)
/usr/bin/cycmd localhost stat
log_end_msg $?
;;
*)
echo "Usage: invoke-rc.d cyphesis-cpp {start|stop|reload|force-reload|restart|try-restart|status}"
exit 1
;;
esac
exit $?
|