diff --git a/functions/command_install.sh b/functions/command_install.sh index 7f5753e3b..a68a5cc62 100644 --- a/functions/command_install.sh +++ b/functions/command_install.sh @@ -2,7 +2,7 @@ # LGSM fn_install function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="200216" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" @@ -17,8 +17,7 @@ if [ "${gamename}" == "Unreal Tournament 2004" ]; then install_ut2k4.sh install_ut2k4_key.sh elif [ "${gamename}" == "Unreal Tournament 99" ]; then - install_dl_ut99.sh - install_ut99.sh + install_server_files.sh elif [ "${gamename}" == "Teamspeak 3" ]; then install_ts3.sh elif [ ! -z "${appid}" ]; then diff --git a/functions/install_dl_ut99.sh b/functions/install_dl_ut99.sh deleted file mode 100644 index 7d8b2fd23..000000000 --- a/functions/install_dl_ut99.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# LGSM install_dl_ut99.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="050216" - -echo "" -echo "Downloading Server Files" -echo "=================================" -sleep 1 -fn_fetch_file "http://gameservermanagers.com/files/ut-server-451-complete.tar.bz2" "${lgsmdir}/tmp" "ut-server-451-complete.tar.bz2" "norun" "noforce" "e623fdff5ed600a9bfccab852e18d34d" -fn_dl_extract "${lgsmdir}/tmp" "ut-server-451-complete.tar.bz2" "${filesdir}" \ No newline at end of file diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh new file mode 100644 index 000000000..d0af67112 --- /dev/null +++ b/functions/install_server_files.sh @@ -0,0 +1,109 @@ +#!/bin/bash +# LGSM install_server_files.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="050216" + + +fn_install_server_files(){ +if [ "${gamename}" == "Unreal Tournament 99" ]; then + fileurl="http://gameservermanagers.com/files/ut-server-451-complete.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut-server-451-complete.tar.bz2"; run="norun"; force="noforce"; md5="e623fdff5ed600a9bfccab852e18d34d" +fi +fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${run}" "${force}" "${md5}" +fn_dl_extract "${filedir}" "${filename}" "${filesdir}" +} + +#!/bin/bash +# LGSM install_serverfiles.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +fn_install_server_files_steamcmd(){ +check.sh +mkdir -pv "${filesdir}" +counter="0" +while [ "${counter}" == "0" ]||[ "$(grep -wc 0x402 .install_serverfiles.sh.tmp)" -ge "1" ]||[ "$(grep -wc 0x406 .install_serverfiles.sh.tmp)" -ge "1" ]||[ "$(grep -wc 0x6 .install_serverfiles.sh.tmp)" -ge "1" ]||[ "$(grep -wc 0x106 .install_serverfiles.sh.tmp)" -ge "1" ]; do + counter=$((counter+1)) + cd "${rootdir}/steamcmd" + if [ "${counter}" -le "10" ]; then + # Attempt 1-4: Standard attempt + # Attempt 5-6: Validate attempt + # Attempt 7-8: Validate, delete long name dir + # Attempt 9-10: Validate, delete long name dir, re-download SteamCMD + # Attempt 11: Failure + + if [ "${counter}" -ge "2" ]; then + fn_printwarningnl "SteamCMD did not complete the download, retrying: Attempt ${counter}:" + fi + + if [ "${counter}" -ge "7" ]; then + echo "Removing $(find ${filesdir} -type d -print0 | grep -Ez '[^/]{30}$')" + find ${filesdir} -type d -print0 | grep -Ez '[^/]{30}$' | xargs -0 rm -rf + fi + if [ "${counter}" -ge "9" ]; then + rm -rf "${rootdir}/steamcmd" + check_steamcmd.sh + fi + + # Detects if unbuffer command is available. + if [ $(command -v unbuffer) ]; then + unbuffer=unbuffer + fi + + if [ "${counter}" -le "4" ]; then + if [ "${engine}" == "goldsource" ]; then + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" +quit |tee .install_serverfiles.sh.tmp + else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit |tee .install_serverfiles.sh.tmp + fi + elif [ "${counter}" -ge "5" ]; then + if [ "${engine}" == "goldsource" ]; then + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" -validate +quit |tee .install_serverfiles.sh.tmp + else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" -validate +quit |tee .install_serverfiles.sh.tmp + fi + fi + elif [ "${counter}" -ge "11" ]; then + fn_printfailurenl "SteamCMD did not complete the download, too many retrys" + break + fi + +done + +# Goldsource servers commonly fail to download all the server files required. +# Validating a few of times may reduce the chance of this issue. +if [ "${engine}" == "goldsource" ]; then + counter="0" + while [ "${counter}" -le "4" ]; do + counter=$((counter+1)) + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" -validate +quit |tee .install_serverfiles.sh.tmp + done +fi +rm -f .install_serverfiles.sh.tmp +} + +echo "" +echo "Installing ${gamename} Server" +echo "=================================" +sleep 1 +if [ -z "${appid}" ]; then + fn_install_server_files_steamcmd +fi + +if [ ! -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then + fn_install_server_files +fi + +if [ -z "${autoinstall}" ]; then + echo "" + echo "=================================" + while true; do + read -e -i "y" -p "Was the install successful? [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) install_retry.sh;; + * ) echo "Please answer yes or no.";; + esac + done +fi \ No newline at end of file