Add the option to warn on shutdown and restart

This commit is contained in:
Ben Peddell 2015-12-11 06:00:00 +10:00
parent 6606ed3cd2
commit 45ace77565

View File

@ -682,6 +682,9 @@ doStartAll(){
#
doStop() {
if isTheServerRunning; then
if [ " $* " =~ " --warn " ]; then
doWarn "$1"
fi
tput sc
echo "Stopping server..."
echo "`timestamp`: stopping" >> "$logdir/$arkmanagerLog"
@ -758,9 +761,47 @@ doInstall() {
#
# Waits for a configurable number of minutes before updating the server
#
doUpdateWarn(){
doWarn(){
cd "$arkserverroot"
local warnmsgmin
local warnmsgsec
if [ "$1" == "update" ]; then
if [ -n "$msgWarnUpdateMinutes" ]; then
warnmsgmin="$msgWarnUpdateMinutes"
else
warnmsgmin="This ARK server will shutdown for an update in %d minutes"
fi
if [ -n "$msgWarnUpdateSeconds" ]; then
warnmsgsec="$msgWarnUpdateSeconds"
else
warnmsgsec="This ARK server will shutdown for an update in %d seconds"
fi
elif [ "$1" == "restart" ]; then
if [ -n "$msgWarnRestartMinutes" ]; then
warnmsgmin="$msgWarnRestartMinutes"
else
warnmsgmin="This ARK server will shutdown for a restart in %d minutes"
fi
if [ -n "$msgWarnRestartSeconds" ]; then
warnmsgsec="$msgWarnRestartSeconds"
else
warnmsgsec="This ARK server will shutdown for a restart in %d seconds"
fi
else
if [ -n "$msgWarnShutdownMinutes" ]; then
warnmsgmin="$msgWarnShutdownMinutes"
else
warnmsgmin="This ARK server will shutdown in %d minutes"
fi
if [ -n "$msgWarnShutdownSeconds" ]; then
warnmsgsec="$msgWarnShutdownSeconds"
else
warnmsgsec="This ARK server will shutdown in %d seconds"
fi
fi
local pid=`getServerPID`
local sleeppid
if [ -n "$pid" ]; then
@ -774,22 +815,18 @@ doUpdateWarn(){
for warninterval in "${warnintervals[@]}"; do
if [ "`getServerPID`" != "$pid" ]; then
echo "Server has stopped. Aborting update"
echo "Server has stopped. Aborting $1"
return 1
fi
if (( warnminutes > warninterval )); then
sleep 1m &
sleeppid=$!
if [ -n "$msgWarnUpdateMinutes" ]; then
warnmsg="$(printf "$msgWarnUpdateMinutes" "$warnminutes")"
else
warnmsg="$(printf "This ARK server will shutdown for an update in %d minutes" "$warnminutes")"
fi
warnmsg="$(printf "$warnmsgmin" "$warnminutes")"
doBroadcastWithEcho "$warnmsg"
for (( min = warnminutes - 1; min >= warninterval; min-- )); do
numplayers=$(numPlayersConnected)
if (( numplayers + 0 == 0 )); then
echo "Nobody is connected. Updating immediately"
echo "Nobody is connected. Shutting down immediately"
return 0
fi
wait $sleeppid
@ -811,16 +848,12 @@ doUpdateWarn(){
echo "Server has stopped. Aborting update"
return 1
fi
if [ -n "$msgWarnUpdateSeconds" ]; then
warnmsg="$(printf "$msgWarnUpdateSeconds" "$warnseconds")"
else
warnmsg="$(printf "This ARK server will shutdown for an update in %d seconds" "$warnseconds")"
fi
warnmsg="$(printf "$warnmsgsec" "$warnseconds")"
doBroadcastWithEcho "$warnmsg"
if (( warnseconds >= 20 )); then
numplayers=$(numPlayersConnected)
if (( numplayers + 0 == 0 )); then
echo "Nobody is connected. Updating immediately"
echo "Nobody is connected. Shutting down immediately"
return 0
fi
fi
@ -830,7 +863,7 @@ doUpdateWarn(){
fi
if [ "`getServerPID`" != "$pid" ]; then
echo "Server has stopped. Aborting update"
echo "Server has stopped. Aborting $1"
return 1
fi
@ -952,7 +985,7 @@ doUpdate() {
done
echo "`timestamp`: Save file newer than 1 minute. Performing an update." >> "$logdir/update.log"
elif [ "$updatetype" == "warn" ]; then
if ! doUpdateWarn; then
if ! doWarn update; then
return 1
fi
elif [ "$updatetype" == "ifempty" ]; then
@ -1513,7 +1546,7 @@ while true; do
doStopAll
shift
else
doStop
doStop stop "${options[@]}"
fi
;;
restart)
@ -1521,7 +1554,7 @@ while true; do
if [ "$2" == "--all" ]; then
doStopAll
else
doStop
doStop restart "${options[@]}"
fi
echo "`timestamp`: stop" >> "$logdir/$arkmanagerLog"
sleep 1