install_server_files.sh 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #!/bin/bash
  2. # LGSM install_server_files.sh function
  3. # Author: Daniel Gibbs
  4. # Website: https://gameservermanagers.com
  5. # Description: Installs server files.
  6. local commandname="INSTALL"
  7. local commandaction="Install"
  8. local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
  9. fn_install_server_files(){
  10. if [ "${gamename}" == "Unreal Tournament 99" ]; then
  11. fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd"
  12. elif [ "${gamename}" == "Unreal Tournament 2004" ]; then
  13. fileurl="http://files.gameservermanagers.com/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54"
  14. elif [ "${gamename}" == "Unreal Tournament 3" ]; then
  15. fileurl="http://files.gameservermanagers.com/UnrealTournament3/UT3-linux-server-2.1.tar.bz2"; filedir="${tmpdir}"; filename="UT3-linux-server-2.1.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="2527437b46f1b47f20228d27d72395a6"
  16. elif [ "${gamename}" == "Battlefield: 1942" ]; then
  17. fileurl="http://files.gameservermanagers.com/BattleField1942/bf1942_lnxded-1.61-hacked-to-1.612.full.tar.bz2"; filedir="${tmpdir}"; filename="bf1942_lnxded-1.61-hacked-to-1.612.full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="a86a5d3cd64ca59abcc9bb9f777c2e5d"
  18. elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
  19. fileurl="http://files.gameservermanagers.com/WolfensteinEnemyTerritory/enemy-territory.260b.tar.bz2"; filedir="${tmpdir}"; filename="enemy-territory.260b.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f833f514bfcdd46b42c111f83350c5a7"
  20. elif [ "${gamename}" == "Unreal Tournament" ]; then
  21. fileurl="http://files.gameservermanagers.com/UnrealTournament/UnrealTournament-Server-XAN-3045522-Linux.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-XAN-3045522-Linux.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="553fed5645a9fc623e92563049bf79f6"
  22. elif [ "${gamename}" == "GoldenEye: Source" ]; then
  23. fileurl="http://files.gameservermanagers.com/GoldenEyeSource/GoldenEye_Source_v5.0.1_full_server_linux.tar.bz2"; filedir="${tmpdir}"; filename="GoldenEye_Source_v5.0.1_server_full_Linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="ea227a150300abe346e757380325f84c"
  24. elif [ "${gamename}" == "Call of Duty" ]; then
  25. fileurl="http://files.gameservermanagers.com/CallOfDuty/cod-lnxded-1.5b-full.tar.bz2"; filedir="${tmpdir}"; filename="cod-lnxded-1.5-large.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="19629895a4cf6fd8f6d1ee198b5304cd"
  26. elif [ "${gamename}" == "Quake 2" ]; then
  27. fileurl="http://files.gameservermanagers.com/Quake2/quake2-3.20-glibc-i386-full-linux2.0.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="quake2-3.20-glibc-i386-full-linux2.0.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="0b8c7e2d51f40b56b328c69e986e7c5f"
  28. elif [ "${gamename}" == "Quake 3: Arena" ]; then
  29. fileurl="http://files.gameservermanagers.com/Quake3/quake3-1.32c-x86-full-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="quake3-1.32c-x86-full-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="fd7258d827474f67663dda297bff4306"
  30. elif [ "${gamename}" == "QuakeWorld" ]; then
  31. fileurl="http://files.gameservermanagers.com/QuakeWorld/nquake.server.linux.083116.full.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="nquake.server.linux.083116.full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="75a409cf08d808f075e4dacdc7b21b78"
  32. fi
  33. fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}"
  34. fn_dl_extract "${filedir}" "${filename}" "${filesdir}"
  35. }
  36. fn_install_server_files_steamcmd(){
  37. counter="0"
  38. while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; do
  39. counter=$((counter+1))
  40. cd "${rootdir}/steamcmd"
  41. if [ "${counter}" -le "10" ]; then
  42. # Attempt 1-4: Standard attempt
  43. # Attempt 5-6: Validate attempt
  44. # Attempt 7-8: Validate, delete long name dir
  45. # Attempt 9-10: Validate, delete long name dir, re-download SteamCMD
  46. # Attempt 11: Failure
  47. if [ "${counter}" -ge "2" ]; then
  48. fn_print_warning_nl "SteamCMD did not complete the download, retrying: Attempt ${counter}"
  49. fn_script_log "SteamCMD did not complete the download, retrying: Attempt ${counter}"
  50. fi
  51. if [ "${counter}" -ge "7" ]; then
  52. echo "Removing $(find ${filesdir} -type d -print0 | grep -Ez '[^/]{30}$')"
  53. find ${filesdir} -type d -print0 | grep -Ez '[^/]{30}$' | xargs -0 rm -rf
  54. fi
  55. if [ "${counter}" -ge "9" ]; then
  56. rm -rf "${rootdir}/steamcmd"
  57. check_steamcmd.sh
  58. fi
  59. # Detects if unbuffer command is available for 32 bit distributions only.
  60. info_distro.sh
  61. if [ $(command -v stdbuf) ]&&[ "${arch}" != "x86_64" ]; then
  62. unbuffer="stdbuf -i0 -o0 -e0"
  63. fi
  64. if [ "${counter}" -le "4" ]; then
  65. if [ "${engine}" == "goldsource" ]; then
  66. ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} +quit
  67. local exitcode=$?
  68. else
  69. ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit
  70. local exitcode=$?
  71. fi
  72. elif [ "${counter}" -ge "5" ]; then
  73. if [ "${engine}" == "goldsource" ]; then
  74. ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} -validate +quit
  75. local exitcode=$?
  76. else
  77. ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} -validate +quit
  78. local exitcode=$?
  79. fi
  80. fi
  81. elif [ "${counter}" -ge "11" ]; then
  82. fn_print_failure_nl "SteamCMD did not complete the download, too many retrys"
  83. fn_script_log "SteamCMD did not complete the download, too many retrys"
  84. break
  85. fi
  86. done
  87. # Goldsource servers commonly fail to download all the server files required.
  88. # Validating a few of times may reduce the chance of this issue.
  89. if [ "${engine}" == "goldsource" ]; then
  90. fn_print_information_nl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue."
  91. counter="0"
  92. while [ "${counter}" -le "4" ]; do
  93. counter=$((counter+1))
  94. ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} -validate +quit
  95. local exitcode=$?
  96. done
  97. fi
  98. }
  99. echo ""
  100. echo "Installing ${gamename} Server"
  101. echo "================================="
  102. sleep 1
  103. if [ -n "${appid}" ]; then
  104. fn_install_server_files_steamcmd
  105. fi
  106. if [ "${gamename}" == "TeamSpeak 3" ]; then
  107. update_ts3.sh
  108. elif [ "${gamename}" == "Minecraft" ]; then
  109. update_minecraft.sh
  110. install_minecraft_eula.sh
  111. elif [ "${gamename}" == "Mumble" ]; then
  112. update_mumble.sh
  113. elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then
  114. fn_install_server_files
  115. fi
  116. if [ -z "${autoinstall}" ]; then
  117. echo ""
  118. echo "================================="
  119. while true; do
  120. read -e -i "y" -p "Was the install successful? [Y/n]" yn
  121. case $yn in
  122. [Yy]* ) break;;
  123. [Nn]* ) install_retry.sh;;
  124. * ) echo "Please answer yes or no.";;
  125. esac
  126. done
  127. fi