add check for update function

This commit is contained in:
Sispheor 2015-06-20 15:34:57 +02:00
parent 8449c5e663
commit 5f40f360c7

View File

@ -29,19 +29,32 @@ NORMAL="\\033[0;39m"
#--------------------- #---------------------
# functions # functions
#--------------------- #---------------------
function checkForUpdate(){
if isUpdateNeeded; then
echo "Current version:" $instver
echo "Available version:" $bnumber
echo "Your server needs to be restarted in order to receive the latest update."
echo "Run \"arkmanager update\" to do so"
else
echo "No update available"
fi
}
function setCurrentVersion(){
# set the new current version in a file
cd $arkserverroot
echo $bnumber > arkversion
}
function isUpdateNeeded(){ function isUpdateNeeded(){
# #
# Check if the server need to be updated # Check if the server need to be updated
# Return 1 if update is needed, else return 0 # Return 0 if update is needed, else return 1
# #
getCurrentVersion getCurrentVersion
getAvailableVersion getAvailableVersion
echo $instver if [ "$bnumber" -eq "$instver" ]; then
echo $bnumber return 1 # no update needed
if ["$bnumber" = "$instver"]; then
return 0
else else
return 1 return 0 # update needed
fi fi
} }
@ -59,9 +72,8 @@ function getAvailableVersion(){
# #
# Get the current available server version on steamdb # Get the current available server version on steamdb
# #
echo "Checking for update, this may take a while"
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 | grep -EA 5 "^\s+\"public\"$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -f3 | sed 's/^ //' | cut -c9-14`
echo "Available server version: "$bnumber return $bnumber
} }
function isTheServerRunning(){ function isTheServerRunning(){
@ -92,6 +104,7 @@ case "$1" in
restart);; restart);;
install);; install);;
update);; update);;
checkupdate);;
broadcast);; broadcast);;
status);; status);;
*) *)
@ -108,52 +121,60 @@ doStart() {
echo "$timestamp: start" >> "$logdir/arkserver.log" echo "$timestamp: start" >> "$logdir/arkserver.log"
} }
# stop function
doStop() { doStop() {
read -p "This operation will quit the server without saving, are your really sure?" -n 1 -r #
if [[ $REPLY =~ ^[Yy]$ ]]; then # stop the ARK server
screen -S "$servicename" -p 0 -X stuff "quit$(printf \\r)" #
# screen -S "$servicename" -X quit screen -S "$servicename" -p 0 -X stuff "quit$(printf \\r)"
sleep 30 # screen -S "$servicename" -X quit
echo "$timestamp: stop" >> "$logdir/arkserver.log" sleep 30
fi echo "$timestamp: stop" >> "$logdir/arkserver.log"
} }
# install function
doInstall() { doInstall() {
if [ ! -d "$arkserverroot" ]; then #
mkdir $arkserverroot # install of ARK server
fi #
cd $steamcmdroot if [ ! -d "$arkserverroot" ]; then
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid validate +quit mkdir $arkserverroot
fi
cd $steamcmdroot
# install the server
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid validate +quit
# the current version should be the last version. We set our version
getAvailableVersion
setCurrentVersion
} }
# update function
doUpdate() { doUpdate() {
cd $arkserverroot #
if isUpdateNeeded; then # Stop the server, update it and then start it back.
if [ -f "$arkserverroot/arkupdate.timed" ] #
then cd $arkserverroot
doStop if isUpdateNeeded; then
cd $steamcmdroot if [ -f "$arkserverroot/arkupdate.timed" ]; then
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid validate +quit doStop
cd $logdir cd $steamcmdroot
echo "$bnumber" > "$arkserverroot/arkversion" ./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid validate +quit
cd $steamcmdroot cd $logdir
doStart echo "$bnumber" > "$arkserverroot/arkversion"
echo "$timestamp: update to $bnumber complete" >> "$logdir/update.log" cd $steamcmdroot
if [ $servermail != "" ]; then doStart
mail -a $logdir/update.log -s "Update-Log" $servermail < /dev/null echo "$timestamp: update to $bnumber complete" >> "$logdir/update.log"
fi if [ $servermail != "" ]; then
rm "$arkserverroot/arkupdate.timed" mail -a $logdir/update.log -s "Update-Log" $servermail < /dev/null
else fi
touch "$arkserverroot/arkupdate.timed" rm "$arkserverroot/arkupdate.timed"
info="There is a update for ark, server will restart in 60mins!!!!!" else
doInfo $info touch "$arkserverroot/arkupdate.timed"
fi; info="There is a update for ark, server will restart in 60mins!!!!!"
else doInfo $info
echo "$timestamp: No update needed." >> "$logdir/update.log" fi;
fi; else
echo "$timestamp: No update needed." >> "$logdir/update.log"
fi;
} }
#broadcast info #broadcast info
@ -203,7 +224,11 @@ case "$1" in
doInstall doInstall
;; ;;
update) update)
doUpdate testupdate
#doUpdate
;;
checkupdate)
checkForUpdate
;; ;;
broadcast) broadcast)
doInfo $2 doInfo $2