From 8e2d92f7674adff1596cb01effe7fbb890f1ebc4 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Wed, 24 Jun 2015 18:08:59 +0200 Subject: [PATCH 01/29] log output of ShooterGameServer and moved arkmanager logs to arkmanager.log --- tools/arkmanager | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 463c74c..ebb5469 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -34,6 +34,9 @@ GREEN="\\033[1;32m" RED="\\033[1;31m" NORMAL="\\033[0;39m" +arkmanagerLog="arkmanager.log" # here are logged the actions performed by arkmanager +arkserverLog="arkserver.log" # here is logged the output of ShooterGameServer + #--------------------- # functions #--------------------- @@ -155,8 +158,9 @@ doStart() { arkserveropts="${arkserveropts}?listen" # run the server in background - nohup "$arkserverroot/$arkserverexec" "$arkserveropts" /dev/null 2>&1 & - echo "$timestamp: start" >> "$logdir/arkserver.log" + echo "$timestamp: start" >> "$logdir/$arkserverLog" + nohup "$arkserverroot/$arkserverexec" "$arkserveropts" "$logdir/$arkserverLog" 2>&1 & # output of this command is logged + echo "$timestamp: start" >> "$logdir/$arkmanagerLog" tput rc; tput ed; echo "The server is now up" fi @@ -175,7 +179,7 @@ doStop() { tput rc; tput ed; echo "The server has been stopped" - echo "$timestamp: stop" >> "$logdir/arkserver.log" + echo "$timestamp: stop" >> "$logdir/$arkmanagerLog" else echo "The server is already stopped" fi @@ -255,11 +259,11 @@ case "$1" in ;; restart) doStop - echo "$timestamp: stop" >> "$logdir/arkserver.log" + echo "$timestamp: stop" >> "$logdir/$arkmanagerLog" sleep 10 doStart - echo "$timestamp: start" >> "$logdir/arkserver.log" - echo "$timestamp: restart" >> "$logdir/arkserver.log" + echo "$timestamp: start" >> "$logdir/$arkmanagerLog" + echo "$timestamp: restart" >> "$logdir/$arkmanagerLog" ;; install) doInstall From 12322876f0ee7fe0f86b9276ecc345f23cd702f9 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Wed, 24 Jun 2015 18:08:59 +0200 Subject: [PATCH 02/29] added Contributors line instead of putting them together with maintainers --- tools/arkmanager | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index ebb5469..c350fe7 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -3,7 +3,8 @@ # ARK: survival evolved manager # # Original author: LeXaT -# Maintainer: FezVrasta, Sispheor +# Maintainer: FezVrasta +# Contributors: Sispheor, Atriusftw, lexat, puseidr # Check the user is not currently running this script as root if [ "$(id -u)" == "0" ]; then From 13913709d4d6b7a997c2e97f45df3b919842dbc2 Mon Sep 17 00:00:00 2001 From: Sispheor Date: Wed, 24 Jun 2015 20:28:38 +0200 Subject: [PATCH 03/29] add systemd unit file and update install to use it --- tools/install.sh | 25 ++++++++++++++++++------- tools/systemd/arkdeamon.service | 11 +++++++++++ 2 files changed, 29 insertions(+), 7 deletions(-) mode change 100644 => 100755 tools/install.sh create mode 100644 tools/systemd/arkdeamon.service diff --git a/tools/install.sh b/tools/install.sh old mode 100644 new mode 100755 index ec1f5ea..102f804 --- a/tools/install.sh +++ b/tools/install.sh @@ -9,14 +9,22 @@ if [ ! -z "$1" ]; then # 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" - 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 + # on debian 8, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit + if [[ -f /etc/systemd/system.conf ]]; then # used by systemd + cp systemd/arkdeamon.service /etc/systemd/system/arkdaemon.service + systemctl enable arkdeamon.service 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" + echo "systemctl disable unit" + else # systemd not present, so use sysvinit + 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 + 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 elif [ -f /etc/rc.d/init.d/functions ]; then cp redhat/arkdaemon "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" @@ -36,6 +44,9 @@ if [ ! -z "$1" ]; then 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 + elif [[ /etc/systemd/system.conf ]]; then # used by systemd + cp systemd/arkdeamon.service /etc/systemd/system/arkdaemon.service + systemctl enable arkdeamon.service fi # Create a folder in /var/log to let Ark tools write its own log files diff --git a/tools/systemd/arkdeamon.service b/tools/systemd/arkdeamon.service new file mode 100644 index 0000000..3d93a01 --- /dev/null +++ b/tools/systemd/arkdeamon.service @@ -0,0 +1,11 @@ +[Unit] +Description=Daemon to start ark server +After=network.target + +[Service] +ExecStart=/etc/init.d/arkdaemon start +ExecStop=/etc/init.d/arkdaemon stop +Type=forking + +[Install] +WantedBy=multi-user.target From c860735e0c5f0e508aac15550310b9444f04229c Mon Sep 17 00:00:00 2001 From: Sispheor Date: Wed, 24 Jun 2015 21:33:13 +0200 Subject: [PATCH 04/29] fix issue #31 and add forceupdate function --- README.md | 5 +++- tools/arkmanager | 65 ++++++++++++++++++++++++++++-------------------- tools/install.sh | 1 + 3 files changed, 43 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 7b64a76..7bb845e 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,10 @@ stops ARK server restarts ARK server #### arkmanager update -manually updates ARK server +manually updates ARK server if a new version is available + +#### arkmanager forceupdate +Apply update without check the current version #### arkmanager status Get the status of the server. Show if the process is running, if the server is up and the current version number diff --git a/tools/arkmanager b/tools/arkmanager index c350fe7..b3548c5 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -41,12 +41,6 @@ arkserverLog="arkserver.log" # here is logged the output of ShooterGameServer #--------------------- # functions #--------------------- -function testfunction(){ - if [ -z $servermail ]; then - echo "mail ok" - fi - -} # # Check if a new version is available but not apply it @@ -94,7 +88,9 @@ function isUpdateNeeded(){ # function getCurrentVersion(){ cd "$arkserverroot" - touch arkversion # If the file doesn't exist + if ! [ -f arkversion ];then + touch arkversion + fi instver=`cat "arkversion"` return $instver @@ -121,13 +117,20 @@ function isTheServerRunning(){ # # Check if the server is down and not visible in steam server list # -function isTheServerDown(){ - lsof -i |grep $ark_Port > /dev/null +# +function isTheServerUp(){ + lsof -i :"$ark_Port" > /dev/null result=$? - return $result + # In this case, the result is: + # 1 if the command fail. The port is not listenning + # 0 if the command succeed. The port is listenning + if [ $result -eq 0 ];then + return 1 + else + return 0 + fi } - # # start function # @@ -207,27 +210,31 @@ doUpdate() { cd "$arkserverroot" if isUpdateNeeded; then - # check if the server was alive before the update so we can launch it back after the update - serverWasAlive=0 - if isTheServerRunning ;then - serverWasAlive=1 - fi - doStop - cd "$steamcmdroot" - ./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid +quit - echo "$bnumber" > "$arkserverroot/arkversion" - echo "$timestamp: update to $bnumber complete" >> "$logdir/update.log" - - # we restart the server only if it was started before the update - if [ $serverWasAlive -eq 1 ]; then - doStart - fi + forceUpdate else echo "Your server is already up to date! The most recent version is ${bnumber}." echo "$timestamp: No update needed." >> "$logdir/update.log" fi; } +forceUpdate(){ + # check if the server was alive before the update so we can launch it back after the update + serverWasAlive=0 + if isTheServerRunning ;then + serverWasAlive=1 + fi + doStop + cd "$steamcmdroot" + ./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid +quit + echo "$bnumber" > "$arkserverroot/arkversion" + echo "$timestamp: update to $bnumber complete" >> "$logdir/update.log" + + # we restart the server only if it was started before the update + if [ $serverWasAlive -eq 1 ]; then + doStart + fi +} + # # Print the status of the server (running? online? version?) # @@ -238,7 +245,7 @@ printStatus(){ echo -e "$NORMAL" "Server running: " "$RED" "No" "$NORMAL" fi - if isTheServerDown ;then + if isTheServerUp ;then echo -e "$NORMAL" "Server online: " "$RED" "No" "$NORMAL" else echo -e "$NORMAL" "Server online: " "$GREEN" "Yes" "$NORMAL" @@ -273,6 +280,9 @@ case "$1" in doUpdate #testfunction ;; + forceupdate) + forceUpdate + ;; checkupdate) tput sc echo "Querying Steam database for latest version..." @@ -292,6 +302,7 @@ case "$1" in echo "restart Stops the server and then starts it" echo "install Install the ARK server files from steamcmd" echo "update Check for a new ARK server version, if needed, stops the server, updates it, and starts it again" + echo "forceupdate Apply update without check the current version" echo "checkupdate Check for a new ARK server version" echo "boradcast PLACEHOLDER, not supported yet" echo "status Returns the status of the current ARK server instance" diff --git a/tools/install.sh b/tools/install.sh index 102f804..d4f008f 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -12,6 +12,7 @@ if [ ! -z "$1" ]; then # on debian 8, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit if [[ -f /etc/systemd/system.conf ]]; then # used by systemd cp systemd/arkdeamon.service /etc/systemd/system/arkdaemon.service + systemctl daemon-reload systemctl enable arkdeamon.service echo "Ark server will now start on boot, if you want to remove this feature run the following line" echo "systemctl disable unit" From b0936f2f1348c69c9ab92e65b9be9b7b775a617f Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Wed, 24 Jun 2015 18:36:05 +1000 Subject: [PATCH 05/29] Parse steamcmd output and extract buildid buildid for public branch is under depots.branches.public.buildid The output from app_info_print is a line-oriented json-like structure which is easily parsed by bash. --- tools/arkmanager | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index b3548c5..4fe34f8 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -96,11 +96,35 @@ function getCurrentVersion(){ } +# +# Parse the buildid from steamcmd +# +function parseSteamAppVer(){ + local sname + while read name val; do + name="${name#\"}" + name="${name%\"}" + val="${val#\"}" + val="${val%\"}" + if [ "$name" = "}" ]; then + break + elif [ "$name" == "{" ]; then + parseSteamAppVer "${1}.${sname}" + else + if [ "$1" == ".depots.branches.public" -a "$name" == "buildid" ]; then + echo "$val" + break + fi + sname="${name}" + fi + done +} + # # Get the current available server version on steamdb # function getAvailableVersion(){ - bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_print "$appid" +quit | grep -EA 5 "^\s+\"public\"$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -f3 | sed 's/^ //' | cut -c9-14` + bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamAppVer; break; fi; done` return $bnumber } From 0676552a48f3c7bc9429648393173b7053a299e8 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Wed, 24 Jun 2015 13:20:39 +0000 Subject: [PATCH 06/29] Fix typo in init script modification --- tools/install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index d4f008f..b5d97a6 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -30,7 +30,7 @@ if [ ! -z "$1" ]; then 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" + sed -i "s@^DAEMON=\"/usr@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" @@ -39,7 +39,7 @@ if [ ! -z "$1" ]; then 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" + sed -i "s@^DAEMON=\"/usr@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" From 7e9e1b05ae486cccbd38e7ec5c99f76f2c476cdb Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Wed, 24 Jun 2015 13:24:46 +0000 Subject: [PATCH 07/29] Modify config user to match install user --- tools/install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/install.sh b/tools/install.sh index b5d97a6..a30ec63 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -62,6 +62,7 @@ if [ ! -z "$1" ]; then else cp -n arkmanager.cfg "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" chown "$1" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" + sed -i "s|^steamcmd_user=\"steam\"|steamcmd_user=\"$1\"|;s|\"/home/steam|\"/home/$1|" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" fi else From ebb1ccb2c81a418d93aab326c7f5ac3a64931927 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Thu, 25 Jun 2015 11:58:53 +0200 Subject: [PATCH 08/29] improved output of rhel daemon --- tools/redhat/arkdaemon | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/tools/redhat/arkdaemon b/tools/redhat/arkdaemon index be4be54..7b3c683 100755 --- a/tools/redhat/arkdaemon +++ b/tools/redhat/arkdaemon @@ -30,6 +30,10 @@ NAME="ShooterGameServer" LOGFILE="${logdir}/${NAME}.log" DAEMON="/usr/bin/arkmanager" +GREEN="\\033[1;32m" +RED="\\033[1;31m" +NORMAL="\\033[0;39m" + set -e # If the daemon is not there, then exit. @@ -38,37 +42,38 @@ test -x $DAEMON || exit 5 case "$1" in start) echo -n "Starting $NAME: " - su -s /bin/sh -c "$DAEMON start" $steamcmd_user + su -s /bin/sh -c "$DAEMON start" $steamcmd_user > /dev/null sleep 5 PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` if [ -n "$PID" ]; then touch /var/lock/subsys/arkdaemon - echo "OK" + echo "[" "$GREEN" " OK " "$NORMAL" "]" exit 0 else - echo "Failed" + echo "[" "$RED" " FAILED " "$NORMAL" "]" exit 1 fi ;; stop) echo -n "Stopping $NAME: " - su -s /bin/sh -c "$DAEMON stop" $steamcmd_user + su -s /bin/sh -c "$DAEMON stop" $steamcmd_user > /dev/null sleep 5 PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` if [ -n "$PID" ]; then - echo "Failed" + echo "[" "$RED" " FAILED " "$NORMAL" "]" exit 1 else - echo "OK" + echo "[" "$GREEN" " OK " "$NORMAL" "]" rm -f /var/lock/subsys/arkdaemon exit 0 fi ;; restart) - su -s /bin/sh -c "$DAEMON restart" $steamcmd_user - exit 0 + echo -n "Restarting $NAME: " + su -s /bin/sh -c "$DAEMON restart" $steamcmd_user > /dev/null + echo "OK" ;; status) From f196df51c69f691779f6dcfbb46f6a1e90c1b2ab Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 25 Jun 2015 20:29:00 +1000 Subject: [PATCH 09/29] Copy Debian init script to /usr/libexec/arkmanager --- tools/install.sh | 7 +++++-- tools/systemd/arkdeamon.service | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index a30ec63..d2d8933 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -11,11 +11,14 @@ if [ ! -z "$1" ]; then if [ -f /lib/lsb/init-functions ]; then # on debian 8, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit if [[ -f /etc/systemd/system.conf ]]; then # used by systemd + mkdir -p "/usr/libexec/arkmanager" + cp lsb/arkdaemon "/usr/libexec/arkmanager/arkmanager.init" + chmod +x "/usr/libexec/arkmanager/arkmanager.init" cp systemd/arkdeamon.service /etc/systemd/system/arkdaemon.service systemctl daemon-reload - systemctl enable arkdeamon.service + systemctl enable arkdaemon.service echo "Ark server will now start on boot, if you want to remove this feature run the following line" - echo "systemctl disable unit" + echo "systemctl disable arkmanager.service" else # systemd not present, so use sysvinit cp lsb/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager" chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager" diff --git a/tools/systemd/arkdeamon.service b/tools/systemd/arkdeamon.service index 3d93a01..fd67b61 100644 --- a/tools/systemd/arkdeamon.service +++ b/tools/systemd/arkdeamon.service @@ -3,8 +3,8 @@ Description=Daemon to start ark server After=network.target [Service] -ExecStart=/etc/init.d/arkdaemon start -ExecStop=/etc/init.d/arkdaemon stop +ExecStart=/usr/libexec/arkmanager/arkmanager.init start +ExecStop=/usr/libexec/arkmanager/arkmanager.init stop Type=forking [Install] From b2d5554cf4e0e12065e07afa11f9b33be62d5384 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 25 Jun 2015 20:45:52 +1000 Subject: [PATCH 10/29] Rename arkdaemon.service to arkmanager.service --- tools/install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index d2d8933..836436f 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -14,9 +14,9 @@ if [ ! -z "$1" ]; then mkdir -p "/usr/libexec/arkmanager" cp lsb/arkdaemon "/usr/libexec/arkmanager/arkmanager.init" chmod +x "/usr/libexec/arkmanager/arkmanager.init" - cp systemd/arkdeamon.service /etc/systemd/system/arkdaemon.service + cp systemd/arkdeamon.service /etc/systemd/system/arkmanager.service systemctl daemon-reload - systemctl enable arkdaemon.service + systemctl enable arkmanager.service echo "Ark server will now start on boot, if you want to remove this feature run the following line" echo "systemctl disable arkmanager.service" else # systemd not present, so use sysvinit @@ -49,8 +49,8 @@ if [ ! -z "$1" ]; then echo "rc-update del arkmanager default" fi elif [[ /etc/systemd/system.conf ]]; then # used by systemd - cp systemd/arkdeamon.service /etc/systemd/system/arkdaemon.service - systemctl enable arkdeamon.service + cp systemd/arkdeamon.service /etc/systemd/system/arkmanager.service + systemctl enable arkmanager.service fi # Create a folder in /var/log to let Ark tools write its own log files From 9bfdc8ccbae469076ed8c32842967e5f0e9c4614 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 25 Jun 2015 21:02:22 +1000 Subject: [PATCH 11/29] Add RedHat systemd unit --- tools/install.sh | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index 836436f..87dcf23 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -31,13 +31,25 @@ if [ ! -z "$1" ]; then fi 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@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" - if [ -x /sbin/chkconfig -a -z "${INSTALL_ROOT}" ]; then - chkconfig --add arkmanager + # on RHEL 7, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit + if [[ -f /etc/systemd/system.conf ]]; then # used by systemd + mkdir -p "/usr/libexec/arkmanager" + cp redhat/arkdaemon "/usr/libexec/arkmanager/arkmanager.init" + chmod +x "/usr/libexec/arkmanager/arkmanager.init" + cp systemd/arkdeamon.service /etc/systemd/system/arkmanager.service + systemctl daemon-reload + systemctl enable arkmanager.service echo "Ark server will now start on boot, if you want to remove this feature run the following line" - echo "chkconfig arkmanager off" + echo "systemctl disable arkmanager.service" + else # systemd not preset, so use sysvinit + 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@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 elif [ -f /sbin/runscript ]; then cp openrc/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager" From 9ca3d5f3c50de8bfcf24c59daf3f316f88590d9e Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 25 Jun 2015 21:07:58 +1000 Subject: [PATCH 12/29] Add distro-agnostic systemd init script --- tools/install.sh | 5 +++ tools/systemd/arkdaemon.init | 86 ++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100755 tools/systemd/arkdaemon.init diff --git a/tools/install.sh b/tools/install.sh index 87dcf23..2cb6be6 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -61,8 +61,13 @@ if [ ! -z "$1" ]; then echo "rc-update del arkmanager default" fi elif [[ /etc/systemd/system.conf ]]; then # used by systemd + mkdir -p /usr/libexec/arkmanager + cp systemd/arkdaemon.init "/usr/libexec/arkmanager/arkmanager.init" + chmod +x "/usr/libexec/arkmanager/arkmanager.init" cp systemd/arkdeamon.service /etc/systemd/system/arkmanager.service systemctl enable arkmanager.service + echo "Ark server will now start on boot, if you want to remove this feature run the following line" + echo "systemctl disable arkmanager.service" fi # Create a folder in /var/log to let Ark tools write its own log files diff --git a/tools/systemd/arkdaemon.init b/tools/systemd/arkdaemon.init new file mode 100755 index 0000000..6faa93e --- /dev/null +++ b/tools/systemd/arkdaemon.init @@ -0,0 +1,86 @@ +#!/bin/bash +# +# /usr/libexec/arkmanager/arkmanager.init +# +# 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 + +# Global variables +source /etc/arkmanager/arkmanager.cfg + +NAME="ShooterGameServer" +LOGFILE="${logdir}/${NAME}.log" +DAEMON="/usr/bin/arkmanager" + +GREEN="\\033[1;32m" +RED="\\033[1;31m" +NORMAL="\\033[0;39m" + +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 > /dev/null + sleep 5 + PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` + if [ -n "$PID" ]; then + echo "$PID" >/var/run/arkmanager.pid + echo "[" "$GREEN" " OK " "$NORMAL" "]" + exit 0 + else + echo "[" "$RED" " FAILED " "$NORMAL" "]" + exit 1 + fi + ;; + + stop) + echo -n "Stopping $NAME: " + su -s /bin/sh -c "$DAEMON stop" $steamcmd_user > /dev/null + sleep 5 + PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` + if [ -n "$PID" ]; then + echo "[" "$RED" " FAILED " "$NORMAL" "]" + exit 1 + else + echo "[" "$GREEN" " OK " "$NORMAL" "]" + rm /var/run/arkmanager.pid + exit 0 + fi + ;; + + restart) + echo -n "Restarting $NAME: " + su -s /bin/sh -c "$DAEMON restart" $steamcmd_user > /dev/null + echo "OK" + ;; + + 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 89d7b9889c50f012c87ae8701888962cc78a62c5 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 25 Jun 2015 21:22:46 +1000 Subject: [PATCH 13/29] Use INSTALL_ROOT and EXECPREFIX for systemd --- tools/install.sh | 61 +++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index 2cb6be6..0797ec2 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -10,15 +10,18 @@ if [ ! -z "$1" ]; then # Copy arkdaemon to /etc/init.d ,set permissions and add it to boot if [ -f /lib/lsb/init-functions ]; then # on debian 8, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit - if [[ -f /etc/systemd/system.conf ]]; then # used by systemd - mkdir -p "/usr/libexec/arkmanager" - cp lsb/arkdaemon "/usr/libexec/arkmanager/arkmanager.init" - chmod +x "/usr/libexec/arkmanager/arkmanager.init" - cp systemd/arkdeamon.service /etc/systemd/system/arkmanager.service - systemctl daemon-reload - systemctl enable arkmanager.service - echo "Ark server will now start on boot, if you want to remove this feature run the following line" - echo "systemctl disable arkmanager.service" + if [ -f /etc/systemd/system.conf ]; then # used by systemd + mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager" + cp lsb/arkdaemon "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" + chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" + cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" + sed -i "s|=\"/usr/|=\"${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" + if [ -z "${INSTALL_ROOT}" ]; then + systemctl daemon-reload + systemctl enable arkmanager.service + echo "Ark server will now start on boot, if you want to remove this feature run the following line" + echo "systemctl disable arkmanager.service" + fi else # systemd not present, so use sysvinit cp lsb/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager" chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager" @@ -32,15 +35,18 @@ if [ ! -z "$1" ]; then fi elif [ -f /etc/rc.d/init.d/functions ]; then # on RHEL 7, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit - if [[ -f /etc/systemd/system.conf ]]; then # used by systemd - mkdir -p "/usr/libexec/arkmanager" - cp redhat/arkdaemon "/usr/libexec/arkmanager/arkmanager.init" - chmod +x "/usr/libexec/arkmanager/arkmanager.init" - cp systemd/arkdeamon.service /etc/systemd/system/arkmanager.service - systemctl daemon-reload - systemctl enable arkmanager.service - echo "Ark server will now start on boot, if you want to remove this feature run the following line" - echo "systemctl disable arkmanager.service" + if [ -f /etc/systemd/system.conf ]; then # used by systemd + mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager" + cp redhat/arkdaemon "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" + chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" + cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" + sed -i "s|=\"/usr/|=\"${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" + if [ -z "${INSTALL_ROOT}" ]; then + systemctl daemon-reload + systemctl enable arkmanager.service + echo "Ark server will now start on boot, if you want to remove this feature run the following line" + echo "systemctl disable arkmanager.service" + fi else # systemd not preset, so use sysvinit cp redhat/arkdaemon "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" chmod +x "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager" @@ -60,14 +66,17 @@ if [ ! -z "$1" ]; then 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 - elif [[ /etc/systemd/system.conf ]]; then # used by systemd - mkdir -p /usr/libexec/arkmanager - cp systemd/arkdaemon.init "/usr/libexec/arkmanager/arkmanager.init" - chmod +x "/usr/libexec/arkmanager/arkmanager.init" - cp systemd/arkdeamon.service /etc/systemd/system/arkmanager.service - systemctl enable arkmanager.service - echo "Ark server will now start on boot, if you want to remove this feature run the following line" - echo "systemctl disable arkmanager.service" + elif [ -f /etc/systemd/system.conf ]; then # used by systemd + mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager" + cp systemd/arkdaemon.init "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" + chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" + cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" + sed -i "s|=\"/usr/|=\"${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" + if [ -z "${INSTALL_ROOT}" ]; then + systemctl enable arkmanager.service + echo "Ark server will now start on boot, if you want to remove this feature run the following line" + echo "systemctl disable arkmanager.service" + fi fi # Create a folder in /var/log to let Ark tools write its own log files From 2b16b5e7079bc5805fdf2fa6b769a4a3c8cbc60f Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 25 Jun 2015 21:35:42 +1000 Subject: [PATCH 14/29] Add pidfile support --- tools/lsb/arkdaemon | 2 ++ tools/redhat/arkdaemon | 8 +++++--- tools/systemd/arkdeamon.service | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/tools/lsb/arkdaemon b/tools/lsb/arkdaemon index a4fae1f..ad802c3 100755 --- a/tools/lsb/arkdaemon +++ b/tools/lsb/arkdaemon @@ -32,6 +32,7 @@ case "$1" in sleep 5 PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` if [ -n "$PID" ]; then + echo "$PID" >/var/run/arkmanager.pid log_end_msg 0 else log_end_msg 1 @@ -46,6 +47,7 @@ case "$1" in if [ -n "$PID" ]; then log_end_msg 1 else + rm /var/run/arkmanager.pid log_end_msg 0 fi ;; diff --git a/tools/redhat/arkdaemon b/tools/redhat/arkdaemon index 7b3c683..e51925c 100755 --- a/tools/redhat/arkdaemon +++ b/tools/redhat/arkdaemon @@ -1,6 +1,6 @@ #!/bin/bash # -# /etc/rc.d/init.d/arkdaemon +# /etc/rc.d/init.d/arkmanager # # ARK manager daemon # @@ -46,7 +46,8 @@ case "$1" in sleep 5 PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'` if [ -n "$PID" ]; then - touch /var/lock/subsys/arkdaemon + echo "${PID}" >/var/run/arkmanager.pid + touch /var/lock/subsys/arkmanager echo "[" "$GREEN" " OK " "$NORMAL" "]" exit 0 else @@ -65,7 +66,8 @@ case "$1" in exit 1 else echo "[" "$GREEN" " OK " "$NORMAL" "]" - rm -f /var/lock/subsys/arkdaemon + rm -f /var/lock/subsys/arkmanager + rm -f /var/run/arkmanager.pid exit 0 fi ;; diff --git a/tools/systemd/arkdeamon.service b/tools/systemd/arkdeamon.service index fd67b61..d1fb5da 100644 --- a/tools/systemd/arkdeamon.service +++ b/tools/systemd/arkdeamon.service @@ -6,6 +6,7 @@ After=network.target ExecStart=/usr/libexec/arkmanager/arkmanager.init start ExecStop=/usr/libexec/arkmanager/arkmanager.init stop Type=forking +PIDFile=/var/run/arkmanager.pid [Install] WantedBy=multi-user.target From bcd25812d9a7b754d94c971534976619bafbfde4 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 25 Jun 2015 21:37:27 +1000 Subject: [PATCH 15/29] Fix EXECPREFIX modification in systemd install --- tools/install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index 0797ec2..420aba1 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -15,7 +15,7 @@ if [ ! -z "$1" ]; then cp lsb/arkdaemon "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" - sed -i "s|=\"/usr/|=\"${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" + sed -i "s|=/usr/|=${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" if [ -z "${INSTALL_ROOT}" ]; then systemctl daemon-reload systemctl enable arkmanager.service @@ -40,7 +40,7 @@ if [ ! -z "$1" ]; then cp redhat/arkdaemon "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" - sed -i "s|=\"/usr/|=\"${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" + sed -i "s|=/usr/|=${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" if [ -z "${INSTALL_ROOT}" ]; then systemctl daemon-reload systemctl enable arkmanager.service @@ -71,7 +71,7 @@ if [ ! -z "$1" ]; then cp systemd/arkdaemon.init "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init" cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" - sed -i "s|=\"/usr/|=\"${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" + sed -i "s|=/usr/|=${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service" if [ -z "${INSTALL_ROOT}" ]; then systemctl enable arkmanager.service echo "Ark server will now start on boot, if you want to remove this feature run the following line" From 2e12cdedeb8b24567bbd7e5df4113d3d10890e70 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Thu, 25 Jun 2015 17:29:44 +0200 Subject: [PATCH 16/29] fixed forceUpdate function --- tools/arkmanager | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 4fe34f8..2be3091 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -250,8 +250,10 @@ forceUpdate(){ doStop cd "$steamcmdroot" ./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid +quit - echo "$bnumber" > "$arkserverroot/arkversion" - echo "$timestamp: update to $bnumber complete" >> "$logdir/update.log" + # the current version should be the last version. We set our version + getAvailableVersion + setCurrentVersion + echo "$timestamp: update to $instver complete" >> "$logdir/update.log" # we restart the server only if it was started before the update if [ $serverWasAlive -eq 1 ]; then From 721491975b37954b968adbb264923aad672deadc Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Fri, 26 Jun 2015 12:54:12 +1000 Subject: [PATCH 17/29] Get current version from appmanifest_${appid}.acf forceUpdate had a window of time between initiating the update and getting the current version where it could miss an update. Close that window by getting the installed version from the appmanifest file. --- tools/arkmanager | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 2be3091..267a6d7 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -84,22 +84,12 @@ function isUpdateNeeded(){ } # -# Return the current version number +# Parse an ACF structure +# $1 is the desired path +# $2 is the desired property +# $3 is the current path # -function getCurrentVersion(){ - cd "$arkserverroot" - if ! [ -f arkversion ];then - touch arkversion - fi - instver=`cat "arkversion"` - return $instver - -} - -# -# Parse the buildid from steamcmd -# -function parseSteamAppVer(){ +function parseSteamACF(){ local sname while read name val; do name="${name#\"}" @@ -109,9 +99,9 @@ function parseSteamAppVer(){ if [ "$name" = "}" ]; then break elif [ "$name" == "{" ]; then - parseSteamAppVer "${1}.${sname}" + parseSteamACF "$1" "$2" "${3}.${sname}" else - if [ "$1" == ".depots.branches.public" -a "$name" == "buildid" ]; then + if [ "$3" == "$1" -a "$name" == "$2" ]; then echo "$val" break fi @@ -120,11 +110,23 @@ function parseSteamAppVer(){ done } +# +# Return the current version number +# +function getCurrentVersion(){ + if [ -f "${arkserverroot}/steamapps/appmanifest_${appid}.acf" ]; then + instver=`while read name val; do if [ "${name}" == "{" ]; then parseSteamACF "" "buildid"; break; fi; done <"${arkserverroot}/steamapps/appmanifest_${appid}.acf"` + else + instver="" + fi + return $instver +} + # # Get the current available server version on steamdb # function getAvailableVersion(){ - bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamAppVer; break; fi; done` + bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamACF ".depots.branches.public" "buildid"; break; fi; done` return $bnumber } From 6fb7f6a4e6004596ca483d2afd4a422e6cfb26bc Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Fri, 26 Jun 2015 16:34:30 +1000 Subject: [PATCH 18/29] Add app_info_update --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index 267a6d7..a62781c 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -126,7 +126,7 @@ function getCurrentVersion(){ # Get the current available server version on steamdb # function getAvailableVersion(){ - bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamACF ".depots.branches.public" "buildid"; break; fi; done` + bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_update 1 +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamACF ".depots.branches.public" "buildid"; break; fi; done` return $bnumber } From 42ce0a99acc2a0698bb549ed175e24371ad9dca5 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 15:20:34 +0200 Subject: [PATCH 19/29] clear cache before fetching the available version --- tools/arkmanager | 3 ++- tools/arkmanager.cfg | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index a62781c..cf5605b 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -126,7 +126,8 @@ function getCurrentVersion(){ # Get the current available server version on steamdb # function getAvailableVersion(){ - bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_update 1 +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamACF ".depots.branches.public" "buildid"; break; fi; done` + rm -f $steamcmd_appinfocache + bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_update 1 +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamAppVer; break; fi; done` return $bnumber } diff --git a/tools/arkmanager.cfg b/tools/arkmanager.cfg index b0571d1..95e298c 100644 --- a/tools/arkmanager.cfg +++ b/tools/arkmanager.cfg @@ -2,6 +2,7 @@ steamcmdroot="/home/steam/steamcmd" # path of your steamcmd instance steamcmdexec="steamcmd.sh" # name of steamcmd executable steamcmd_user="steam" # name of the system user who own steamcmd folder +steamcmd_appinfocache="/home/steam/Steam/appinfo.vdf" # cache of the appinfo command # config environment arkserverroot="/home/steam/ARK" # path of your ARK server files (default ~/ARK) From 24863a5be65e8a9e2bac822d281b26ae482412c2 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 15:22:40 +0200 Subject: [PATCH 20/29] typo --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index cf5605b..c1784a5 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -126,7 +126,7 @@ function getCurrentVersion(){ # Get the current available server version on steamdb # function getAvailableVersion(){ - rm -f $steamcmd_appinfocache + rm -f "$steamcmd_appinfocache" bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_update 1 +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamAppVer; break; fi; done` return $bnumber } From 410ee769bf6deedd39e845d2d10376224ea5a8cd Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 15:37:22 +0200 Subject: [PATCH 21/29] added @klightspeed as contributor --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index c1784a5..0a28b95 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -4,7 +4,7 @@ # # Original author: LeXaT # Maintainer: FezVrasta -# Contributors: Sispheor, Atriusftw, lexat, puseidr +# Contributors: Sispheor, Atriusftw, klightspeed, lexat, puseidr # Check the user is not currently running this script as root if [ "$(id -u)" == "0" ]; then From 2d8fde09f44ecf643de876156abdadda0e8957c8 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 15:38:53 +0200 Subject: [PATCH 22/29] fixed comment --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index 0a28b95..86157f7 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -142,7 +142,7 @@ function isTheServerRunning(){ } # -# Check if the server is down and not visible in steam server list +# Check if the server is up and visible in steam server list # # function isTheServerUp(){ From e288448de7dc680e1ce48f9901c5741b06517488 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 15:39:50 +0200 Subject: [PATCH 23/29] moved message to function --- tools/arkmanager | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 86157f7..2680774 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -46,6 +46,9 @@ arkserverLog="arkserver.log" # here is logged the output of ShooterGameServer # Check if a new version is available but not apply it # function checkForUpdate(){ + tput sc + echo "Querying Steam database for latest version..." + if isUpdateNeeded; then tput rc; tput ed; echo -e "Current version:" "$RED" $instver "$NORMAL" @@ -313,8 +316,6 @@ case "$1" in forceUpdate ;; checkupdate) - tput sc - echo "Querying Steam database for latest version..." checkForUpdate ;; broadcast) From 0eef15bbe438f811ccbcb1049d26a9c193fda152 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 15:53:58 +0200 Subject: [PATCH 24/29] fixed install command --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7bb845e..d63a35b 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ NB: Change the ports according to the ones set in your `arkmanager.cfg` file. To install ARK Server Tools run this command: ```sh -curl -s http://git.io/vtf5N | sudo bash -s steam +curl -sL http://git.io/vtf5N | sudo bash -s steam ``` NB: You may want to change the `bash -s` parameter to fit your steam user if different from `steam`. From fe06479bc906493ee0fe14dab225d3b7ee6ce0c3 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 15:58:45 +0200 Subject: [PATCH 25/29] ignore cache --- netinstall.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netinstall.sh b/netinstall.sh index b0907c3..c03492a 100644 --- a/netinstall.sh +++ b/netinstall.sh @@ -6,7 +6,7 @@ # Download and untar installation files cd /tmp -wget https://github.com/FezVrasta/ark-server-tools/archive/master.tar.gz +wget --no-cache https://github.com/FezVrasta/ark-server-tools/archive/master.tar.gz tar -zxvf master.tar.gz # Install ARK Server Tools From 4ab5241d1c3b08667bb02c68da497feb71ace243 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 16:02:06 +0200 Subject: [PATCH 26/29] replaced wget with curl (and overwrite existing file if needed) --- netinstall.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netinstall.sh b/netinstall.sh index c03492a..2245ac2 100644 --- a/netinstall.sh +++ b/netinstall.sh @@ -6,7 +6,7 @@ # Download and untar installation files cd /tmp -wget --no-cache https://github.com/FezVrasta/ark-server-tools/archive/master.tar.gz +curl -s https://github.com/FezVrasta/ark-server-tools/archive/master.tar.gz > master.tar.gz tar -zxvf master.tar.gz # Install ARK Server Tools From 1c1170710fb9ddae1f6397f8899cd26af5250188 Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 16:08:13 +0200 Subject: [PATCH 27/29] fixed netinstaller --- netinstall.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/netinstall.sh b/netinstall.sh index 2245ac2..ce21d88 100644 --- a/netinstall.sh +++ b/netinstall.sh @@ -6,8 +6,7 @@ # Download and untar installation files cd /tmp -curl -s https://github.com/FezVrasta/ark-server-tools/archive/master.tar.gz > master.tar.gz -tar -zxvf master.tar.gz +curl -L -k -s https://github.com/FezVrasta/ark-server-tools/archive/master.tar.gz | tar xz # Install ARK Server Tools cd ark-server-tools-master/tools @@ -17,7 +16,6 @@ sh install.sh $1 > /dev/null status=$? # Remove the installation files -rm -f master.tar.gz rm -rf /tmp/ark-server-tools-master # Print messages From c72ed7b482799cb47656bbc4843f97e289024d7c Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Fri, 26 Jun 2015 16:17:38 +0200 Subject: [PATCH 28/29] fixed wrong merge --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index 2680774..0f1b6fa 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -130,7 +130,7 @@ function getCurrentVersion(){ # function getAvailableVersion(){ rm -f "$steamcmd_appinfocache" - bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_update 1 +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamAppVer; break; fi; done` + bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_update 1 +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamACF ".depots.branches.public" "buildid"; break; fi; done` return $bnumber } From ba3a6fff778463c32bec5231acaab03d54342703 Mon Sep 17 00:00:00 2001 From: Marius Linge Date: Fri, 26 Jun 2015 16:47:14 +0200 Subject: [PATCH 29/29] Corrects path to appinfo --- tools/arkmanager.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager.cfg b/tools/arkmanager.cfg index 95e298c..ec40e75 100644 --- a/tools/arkmanager.cfg +++ b/tools/arkmanager.cfg @@ -2,7 +2,7 @@ steamcmdroot="/home/steam/steamcmd" # path of your steamcmd instance steamcmdexec="steamcmd.sh" # name of steamcmd executable steamcmd_user="steam" # name of the system user who own steamcmd folder -steamcmd_appinfocache="/home/steam/Steam/appinfo.vdf" # cache of the appinfo command +steamcmd_appinfocache="/home/steam/Steam/appcache/appinfo.vdf" # cache of the appinfo command # config environment arkserverroot="/home/steam/ARK" # path of your ARK server files (default ~/ARK)