Răsfoiți Sursa

initial commit of fn_versioncheck

Daniel Gibbs 11 ani în urmă
părinte
comite
196bbe46f8
1 a modificat fișierele cu 124 adăugiri și 0 ștergeri
  1. 124 0
      functions/fn_versioncheck

+ 124 - 0
functions/fn_versioncheck

@@ -0,0 +1,124 @@
+#!/bin/bash
+# LGSM fn_versioncheck function
+# Author: Daniel Gibbs
+# Website: http://danielgibbs.co.uk
+# Version: 191214
+
+
+fn_steamdbcheck(){
+# Checks for server update from SteamDB.info API.
+fn_printdots "Checking ${servicename}: Checking for updates via steamdb.info"
+installedversion=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\  -f3)
+availableversion=$(wget -qO- "http://steamdb.info/api/GetRawDepots/?appid=${appid}" | sed 's/\\n/\n/g' | grep -EA 1000 "^\s+\[branches\]" | grep -EA 5 "^\s+\[public\]" | grep -m 1 -EB 10 "^\s+\)$" | grep -E "^\s+\[buildid\]\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\  -f4)
+sleep 1
+if [ -z "${availableversion}" ]; then
+	fn_printfail "Checking ${servicename}: steamdb.info not returning version info"
+	sleep 1
+	echo ""
+	fn_logupdaterequest
+elif [ "${installedversion}" -ne "${availableversion}" ]; then
+	fn_printok "Checking ${servicename}: Checking for updates via steamdb.info"
+	sleep 1
+	echo -e ""
+	echo -e "Update available:"
+	sleep 1
+	echo -e "	Installed version: \e[0;31m${installedversion}\e[0;39m"
+	echo -e "	Available version: \e[0;32m${availableversion}\e[0;39m"
+	echo -e ""
+	echo -e "	https://steamdb.info/app/261140/"
+	sleep 1
+	echo ""
+	echo -ne "Applying update.\r"
+	sleep 1
+	echo -ne "Applying update..\r"
+	sleep 1
+	echo -ne "Applying update...\r"
+	sleep 1
+	echo -ne "\n"
+	fn_stopserver
+	fn_updateserver
+else
+	fn_printok "Checking ${servicename}: Checking for updates via steamdb.info"
+	sleep 1
+	echo -e "\n"
+	echo -e "No update available:"
+	echo -e "	Installed version: \e[0;32m${installedversion}\e[0;39m"
+	echo -e "	Available version: \e[0;32m${availableversion}\e[0;39m"
+	echo -e "	https://steamdb.info/app/261140/"
+	echo -e ""
+fi
+}
+
+fn_logupdaterequest(){
+# Checks for server update from server logs.
+fn_printdots "Checking ${servicename}: Checking logs for update requests"
+sleep 1
+requestrestart=$(grep -sc "MasterRequestRestart" "${consolelog}")
+if [ "${requestrestart}" -ge "1" ]; then
+	fn_printok "Checking ${servicename}: Checking logs for update requests"
+	sleep 1
+	fn_printoknl "Checking ${servicename}: Server requesting update"
+	fn_stopserver
+	fn_updateserver
+else
+	fn_printok "Checking ${servicename}: Checking logs for update requests"
+	sleep 1
+	fn_printok "Checking ${servicename}: No update request detected"
+	sleep 1
+	echo ""
+fi
+}
+
+
+
+fn_appmanifestinfo(){
+	appmanifestfile=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf")
+	appmanifestfilewc=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf"|wc -l)
+}
+
+fn_appmanifestcheck(){
+fn_appmanifestinfo
+# Multiple matching appmanifest files may sometimes be present.
+# This is an error is corrected below if required.
+if [ "${appmanifestfilewc}" -ge "2" ]; then
+	sleep 1
+	fn_printwarn "Checking ${servicename}: Multiple appmanifest_${appid}.acf files found"
+	sleep 2
+	fn_printdots "Checking ${servicename}: Removing x${appmanifestfilewc} appmanifest_${appid}.acf files"
+	sleep 1
+	for appfile in ${appmanifestfile}; do
+		rm "${appfile}"
+	done
+	appmanifestfilewc1="${appmanifestfilewc}"
+	fn_appmanifestinfo
+	if [ "${appmanifestfilewc}" -ge "2" ]; then
+		fn_printfail "Checking ${servicename}: Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files"
+		sleep 1
+		echo ""
+		echo "	Check user permissions"
+		for appfile in ${appmanifestfile}; do
+			echo "	${appfile}"
+		done
+		exit
+	else
+		sleep 1
+		fn_printok "Checking ${servicename}: Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
+		sleep 1
+		fn_printinfonl "Checking ${servicename}: Forcing update to correct issue"
+		sleep 1
+		fn_updateserver
+		fn_versioncheck
+	fi
+elif [ "${appmanifestfilewc}" -eq "0" ]; then
+	fn_printwarn "Checking ${servicename}: No appmanifest_${appid}.acf found"
+	sleep 2
+	fn_printinfonl "Checking ${servicename}: Forcing update to correct issue"
+	sleep 1
+	fn_updateserver
+	fn_logupdaterequest
+fi
+}
+
+fn_printdots "Checking ${servicename}: Checking for updates"
+fn_appmanifestcheck
+fn_steamdbcheck