Merge pull request #165 from klightspeed/1.4-dev#warn

Add option to warn players before update
This commit is contained in:
Fez Vrasta 2015-09-14 11:23:34 +02:00
commit 3a4372c58f
3 changed files with 79 additions and 0 deletions

View File

@ -88,6 +88,9 @@ Apply update without check the current version
#### arkmanager update --safe
Waits for server to perform world save and then updates.
#### arkmanager update --warn
Warns the players for a configurable amount of time before updating. Should be suitable for adding to a cron job.
#### arkmanager status
Get the status of the server. Show if the process is running, if the server is up and the current version number

View File

@ -165,6 +165,14 @@ doBroadcast(){
rconcmd "broadcast $1" >/dev/null
}
#
# Broadcast message with echo
#
doBroadcastWithEcho(){
echo "$1"
doBroadcast "$1"
}
#
# Check if a new version is available but not apply it
#
@ -537,6 +545,64 @@ doInstallMod(){
fi
}
#
# Waits for a configurable number of minutes before updating the server
#
doWarnUpdate(){
cd "$arkserverroot"
if isUpdateNeeded; then
local pid=`getServerPID`
if [ -n "$pid" ]; then
local warnmsg
local warnminutes=$(( arkwarnminutes ))
if (( warnminutes == 0 )); then
warnminutes=60
fi
local warnintervals=( 90 60 45 30 20 15 10 5 4 3 2 1 )
for warninterval in "${warnintervals[@]}"; do
if [ "`getServerPID`" != "$pid" ]; then
echo "Server has stopped. Aborting update"
return 1
fi
if (( arkwarnminutes > warninterval )); then
if [ -n "$msgWarnUpdateMinutes" ]; then
warnmsg="$(printf "$msgWarnUpdateMinutes" "$warnminutes")"
else
warnmsg="$(printf "This ARK server will shutdown for an update in %d minutes" "$warnminutes")"
fi
doBroadcastWithEcho "$warnmsg"
sleep $(( warnminutes - warninterval ))m
warnminutes=$warninterval
fi
done
local warnseconds=90
warnintervals=( 60 45 30 20 15 10 5 0 )
for warninterval in "${warnintervals[@]}"; do
if [ "`getServerPID`" != "$pid" ]; then
echo "Server has stopped. Aborting update"
return 1
fi
if [ -n "$msgWarnUpdateMinutes" ]; then
warnmsg="$(printf "$msgWarnUpdateMinutes" "$warnminutes")"
else
warnmsg="$(printf "This ARK server will shutdown for an update in %d seconds" "$warnseconds")"
fi
doBroadcastWithEcho "$warnmsg"
sleep $(( warnseconds - warninterval ))s
done
fi
if [ "`getServerPID`" != "$pid" ]; then
echo "Server has stopped. Aborting update"
fi
doUpdate
fi
}
#
# Copies server state to a backup directory
#
@ -741,6 +807,9 @@ while true; do
elif [ "$2" == "--safe" ]; then
doSafeUpdate
shift
elif [ "$2" == "--warn" ]; then
doWarnUpdate
shift
else
doUpdate
fi
@ -792,6 +861,7 @@ while true; do
echo "update Check for a new ARK server version, if needed, stops the server, updates it, and starts it again"
echo "update --force Apply update without check the current version"
echo "update --safe Wait for server to perform world save and update."
echo "update --warn Warn players before updating server"
echo "upgrade Check for a new ARK Server Tools version and upgrades it if needed"
echo "useconfig <name> Use the configuration overrides in the specified config name or file"
exit 1

View File

@ -10,6 +10,12 @@ steamcmd_appinfocache="/home/steam/Steam/appcache/appinfo.vdf" # cache of t
arkserverroot="/home/steam/ARK" # path of your ARK server files (default ~/ARK)
arkserverexec="ShooterGame/Binaries/Linux/ShooterGameServer" # name of ARK server executable
arkbackupdir="/home/steam/ARK-Backups" # path to backup directory
arkwarnminutes="60" # number of minutes to warn players when using update --warn
# Update warning messages
# Modify as desired, putting the %d replacement operator where the number belongs
msgWarnUpdateMinutes="This ARK server will shutdown for an update in %d minutes"
msgWarnUpdateSeconds="This ARK server will shutdown for an update in %d seconds"
# ARK server options - use ark_<optionname>=<value>
# comment out these values if you want to define them