fn_versioncheck 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #!/bin/bash
  2. # LGSM fn_versioncheck function
  3. # Author: Daniel Gibbs
  4. # Website: http://danielgibbs.co.uk
  5. # Version: 231214
  6. fn_steamcmdcheck(){
  7. # Checks for server update from SteamDB.info API.
  8. fn_printdots "Checking ${servicename}: Checking for updates via SteamCMD"
  9. installedversion=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3)
  10. availableversion=$(steamcmd/steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_print ${appid} +app_info_print ${appid} +quit | 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\ -f3)
  11. sleep 1
  12. if [ -z "${availableversion}" ]; then
  13. fn_printfail "Checking ${servicename}: Checking for updates via SteamCMD"
  14. sleep 1
  15. fn_printfail "Checking ${servicename}: SteamCMD is not returning version info"
  16. sleep 2
  17. else
  18. fn_printok "Checking ${servicename}: Checking for updates via SteamCMD"
  19. sleep 1
  20. fi
  21. if [ -z "${availableversion}" ]; then
  22. echo ""
  23. fn_printdots "Checking ${servicename}: Checking for updates via SteamDB.info"
  24. 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)
  25. sleep 1
  26. if [ -z "${availableversion}" ]; then
  27. fn_printfail "Checking ${servicename}: Checking for updates via SteamDB.info"
  28. sleep 1
  29. fn_printfail "Checking ${servicename}: SteamDB.info is not returning version info"
  30. sleep 2
  31. else
  32. fn_printok "Checking ${servicename}: Checking for updates via SteamDB.info"
  33. sleep 1
  34. fi
  35. fi
  36. if [ -z "${availableversion}" ]; then
  37. fn_logupdaterequest
  38. fi
  39. if [ "${installedversion}" -ne "${availableversion}" ]; then
  40. echo -e "\n"
  41. echo -e "Update available:"
  42. sleep 1
  43. echo -e " Installed version: \e[0;31m${installedversion}\e[0;39m"
  44. echo -e " Available version: \e[0;32m${availableversion}\e[0;39m"
  45. echo -e ""
  46. echo -e " https://steamdb.info/app/${appid}/"
  47. sleep 1
  48. echo ""
  49. echo -ne "Applying update.\r"
  50. sleep 1
  51. echo -ne "Applying update..\r"
  52. sleep 1
  53. echo -ne "Applying update...\r"
  54. sleep 1
  55. echo -ne "\n"
  56. if [ ! -z "${norestart}" ]; then
  57. fn_updateserver
  58. else
  59. fn_stopserver
  60. fn_updateserver
  61. fn_startserver
  62. fi
  63. else
  64. echo -e "\n"
  65. echo -e "No update available:"
  66. echo -e " Installed version: \e[0;32m${installedversion}\e[0;39m"
  67. echo -e " Available version: \e[0;32m${availableversion}\e[0;39m"
  68. echo -e " https://steamdb.info/app/${appid}/"
  69. echo -e ""
  70. fi
  71. }
  72. fn_logupdaterequest(){
  73. # Checks for server update from server logs.
  74. echo ""
  75. fn_printdots "Checking ${servicename}: Checking server logs for update requests"
  76. requestrestart=$(grep -sc "MasterRequestRestart" "${consolelog}")
  77. sleep 1
  78. if [ "${requestrestart}" -ge "1" ]; then
  79. fn_printok "Checking ${servicename}: Checking server logs for update requests"
  80. sleep 1
  81. fn_printoknl "Checking ${servicename}: Server requesting update"
  82. sleep 1
  83. echo ""
  84. echo -ne "Applying update.\r"
  85. sleep 1
  86. echo -ne "Applying update..\r"
  87. sleep 1
  88. echo -ne "Applying update...\r"
  89. sleep 1
  90. echo -ne "\n"
  91. if [ ! -z "${norestart}" ]; then
  92. fn_updateserver
  93. else
  94. fn_stopserver
  95. fn_updateserver
  96. fn_startserver
  97. fi
  98. else
  99. fn_printok "Checking ${servicename}: Checking logs for update requests"
  100. sleep 1
  101. fn_printok "Checking ${servicename}: No update request detected"
  102. sleep 1
  103. fi
  104. echo ""
  105. exit
  106. }
  107. fn_appmanifestinfo(){
  108. appmanifestfile=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf")
  109. appmanifestfilewc=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf"|wc -l)
  110. }
  111. fn_appmanifestcheck(){
  112. fn_appmanifestinfo
  113. # Multiple matching appmanifest files may sometimes be present.
  114. # This is an error is corrected below if required.
  115. if [ "${appmanifestfilewc}" -ge "2" ]; then
  116. sleep 1
  117. fn_printwarn "Checking ${servicename}: Multiple appmanifest_${appid}.acf files found"
  118. sleep 2
  119. fn_printdots "Checking ${servicename}: Removing x${appmanifestfilewc} appmanifest_${appid}.acf files"
  120. sleep 1
  121. for appfile in ${appmanifestfile}; do
  122. rm "${appfile}"
  123. done
  124. appmanifestfilewc1="${appmanifestfilewc}"
  125. fn_appmanifestinfo
  126. if [ "${appmanifestfilewc}" -ge "2" ]; then
  127. fn_printfail "Checking ${servicename}: Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files"
  128. sleep 1
  129. echo ""
  130. echo " Check user permissions"
  131. for appfile in ${appmanifestfile}; do
  132. echo " ${appfile}"
  133. done
  134. exit
  135. else
  136. sleep 1
  137. fn_printok "Checking ${servicename}: Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
  138. sleep 1
  139. fn_printinfonl "Checking ${servicename}: Forcing update to correct issue"
  140. sleep 1
  141. fn_updateserver
  142. fn_versioncheck
  143. fi
  144. elif [ "${appmanifestfilewc}" -eq "0" ]; then
  145. fn_printwarn "Checking ${servicename}: No appmanifest_${appid}.acf found"
  146. sleep 2
  147. fn_printinfonl "Checking ${servicename}: Forcing update to correct issue"
  148. sleep 1
  149. fn_updateserver
  150. fn_logupdaterequest
  151. fi
  152. }
  153. fn_printdots "Checking ${servicename}: Checking for updates"
  154. fn_appmanifestcheck
  155. fn_steamcmdcheck