From 7ce311832234e33788635b0d0df1fd3030970ff2 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 23 Jun 2015 22:58:25 +1000 Subject: [PATCH 1/4] Move LSB init script to separate directory --- tools/install.sh | 18 ++++++++++-------- tools/{ => lsb}/arkdaemon | 0 2 files changed, 10 insertions(+), 8 deletions(-) rename tools/{ => lsb}/arkdaemon (100%) diff --git a/tools/install.sh b/tools/install.sh index 5450eb6..26db1f6 100644 --- a/tools/install.sh +++ b/tools/install.sh @@ -7,14 +7,16 @@ if [ ! -z "$1" ]; then cp arkmanager "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager" chmod +x "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager" - # Copy arkdaemon to /etc/init.d/arkmanager ,set permissions and add it to boot - cp arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager" - chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager" - # add to startup if the system use sysinit - if [ -x /usr/sbin/update-rc.d -a -z "${INSTALL_ROOT}" ]; then - update-rc.d arkmanager defaults - echo "Ark server will now start on boot, if you want to remove this feature run the following line" - echo "update-rc.d -f arkmanager remove" + # Copy arkdaemon to /etc/init.d ,set permissions and add it to boot + if [ -f /lib/lsb/init-functions ]; then + cp lsb/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager" + chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager" + # add to startup if the system use sysinit + if [ -x /usr/sbin/update-rc.d -a -z "${INSTALL_ROOT}" ]; then + update-rc.d arkmanager defaults + echo "Ark server will now start on boot, if you want to remove this feature run the following line" + echo "update-rc.d -f arkmanager remove" + fi fi # Create a folder in /var/log to let Ark tools write its own log files diff --git a/tools/arkdaemon b/tools/lsb/arkdaemon similarity index 100% rename from tools/arkdaemon rename to tools/lsb/arkdaemon From 607a3096be9159dc28ea29d15887b657c9812fc4 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 23 Jun 2015 23:01:29 +1000 Subject: [PATCH 2/4] Modify DAEMON variable according to EXECPREFIX --- tools/install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/install.sh b/tools/install.sh index 26db1f6..e955f91 100644 --- a/tools/install.sh +++ b/tools/install.sh @@ -11,6 +11,7 @@ if [ ! -z "$1" ]; then if [ -f /lib/lsb/init-functions ]; then cp lsb/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager" chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager" + sed -i "s|^DAEMON=\"/usr|DAEMON=\"${EXECPREFIX}|" "${INSTALL_ROOT}/etc/init.d/arkmanager" # add to startup if the system use sysinit if [ -x /usr/sbin/update-rc.d -a -z "${INSTALL_ROOT}" ]; then update-rc.d arkmanager defaults From d44b9e9f67c7583b6d51e4a21c6065183ef05ada Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 23 Jun 2015 23:08:52 +1000 Subject: [PATCH 3/4] Add RedHat SysV init script --- tools/install.sh | 9 +++++ tools/redhat/arkdaemon | 84 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100755 tools/redhat/arkdaemon diff --git a/tools/install.sh b/tools/install.sh index e955f91..4c972d9 100644 --- a/tools/install.sh +++ b/tools/install.sh @@ -18,6 +18,15 @@ if [ ! -z "$1" ]; then echo "Ark server will now start on boot, if you want to remove this feature run the following line" echo "update-rc.d -f arkmanager remove" fi + elif [ -f /etc/rc.d/init.d/functions ]; then + cp redhat/arkdaemon "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" + chmod +x "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" + sed -i "s@^DAEMON=\"/usr/bin@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" + if [ -x /sbin/chkconfig -a -z "${INSTALL_ROOT}" ]; then + chkconfig --add arkmanager + echo "Ark server will now start on boot, if you want to remove this feature run the following line" + echo "chkconfig arkmanager off" + fi fi # Create a folder in /var/log to let Ark tools write its own log files diff --git a/tools/redhat/arkdaemon b/tools/redhat/arkdaemon new file mode 100755 index 0000000..be4be54 --- /dev/null +++ b/tools/redhat/arkdaemon @@ -0,0 +1,84 @@ +#!/bin/bash +# +# /etc/rc.d/init.d/arkdaemon +# +# ARK manager daemon +# +# chkconfig: 2345 80 20 +# description: ARK manager daemon used to start the server and keep it updated +# processname: ShooterGameServer +# config: /etc/arkmanager/arkmanager.cfg + +### BEGIN INIT INFO +# Provides: ARK manager deamon +# Required-Start: networking +# Required-Stop: networking +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: ARK manager deamon +# Description: ARK manager daemon used to start the server and keep it updated +# +### END INIT INFO + +# Using the lsb functions to perform the operations. +. /etc/rc.d/init.d/functions + +# Global variables +source /etc/arkmanager/arkmanager.cfg + +NAME="ShooterGameServer" +LOGFILE="${logdir}/${NAME}.log" +DAEMON="/usr/bin/arkmanager" + +set -e + +# If the daemon is not there, then exit. +test -x $DAEMON || exit 5 + +case "$1" in + start) + echo -n "Starting $NAME: " + su -s /bin/sh -c "$DAEMON start" $steamcmd_user + sleep 5 + PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` + if [ -n "$PID" ]; then + touch /var/lock/subsys/arkdaemon + echo "OK" + exit 0 + else + echo "Failed" + exit 1 + fi + ;; + + stop) + echo -n "Stopping $NAME: " + su -s /bin/sh -c "$DAEMON stop" $steamcmd_user + sleep 5 + PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` + if [ -n "$PID" ]; then + echo "Failed" + exit 1 + else + echo "OK" + rm -f /var/lock/subsys/arkdaemon + exit 0 + fi + ;; + + restart) + su -s /bin/sh -c "$DAEMON restart" $steamcmd_user + exit 0 + ;; + + status) + su -s /bin/sh -c "$DAEMON status" $steamcmd_user + exit 0 + ;; + + *) + # For invalid arguments, print the usage message. + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; +esac From a891e71e753dfb032d6bd84b8efacc4b8083f3aa Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 23 Jun 2015 23:15:28 +1000 Subject: [PATCH 4/4] Add OpenRC init script --- tools/install.sh | 9 +++++++++ tools/openrc/arkdaemon | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 tools/openrc/arkdaemon diff --git a/tools/install.sh b/tools/install.sh index 4c972d9..ec1f5ea 100644 --- a/tools/install.sh +++ b/tools/install.sh @@ -27,6 +27,15 @@ if [ ! -z "$1" ]; then echo "Ark server will now start on boot, if you want to remove this feature run the following line" echo "chkconfig arkmanager off" fi + elif [ -f /sbin/runscript ]; then + cp openrc/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager" + chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager" + sed -i "s@^DAEMON=\"/usr/bin@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}/etc/init.d/arkmanager" + if [ -x /sbin/rc-update -a -z "${INSTALL_ROOT}" ]; then + rc-update add arkmanager default + echo "Ark server will now start on boot, if you want to remove this feature run the following line" + echo "rc-update del arkmanager default" + fi fi # Create a folder in /var/log to let Ark tools write its own log files diff --git a/tools/openrc/arkdaemon b/tools/openrc/arkdaemon new file mode 100644 index 0000000..7104607 --- /dev/null +++ b/tools/openrc/arkdaemon @@ -0,0 +1,38 @@ +#!/sbin/runscript +# Short-Description: ARK manager deamon +# Description: ARK manager daemon used to start the server and keep it updated + +source /etc/arkmanager/arkmanager.cfg + +NAME="ShooterGameServer" +LOGFILE="${logdir}/${NAME}.log" +DAEMON="/usr/bin/arkmanager" + +depend(){ + require net +} + +start(){ + ebegin "Starting ARK manager daemon" + su -s /bin/sh -c "$DAEMON start" $steamcmd_user + sleep 5 + PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` + if [ -n "$PID" ]; then + eend 0 + else + eend 1 + fi +} + +stop(){ + ebegin "Stopping ARK manager daemon" + su -s /bin/sh -c "$DAEMON start" $steamcmd_user + sleep 5 + PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` + if [ -n "$PID" ]; then + eend 0 + else + eend 1 + fi +} +