diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index 965fb934e..b9a1eca4b 100644 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -13,4 +13,6 @@ if [ "${gamename}" == "Teamspeak 3" ]; then update_ts3.sh elif [ "${engine}" == "goldsource" ]||[ "${forceupdate}" == "1" ]; then update_steamcmd.sh -fi \ No newline at end of file +fi + +core_exit.sh \ No newline at end of file diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 08bf9cd32..da2969356 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -6,9 +6,8 @@ lgsm_version="210516" # Description:Handles updating using steamCMD. -fn_steamcmd_dl(){ - cd "${rootdir}" - cd "steamcmd" +fn_update_steamcmd_dl(){ + cd "${rootdir}/steamcmd" # Detects if unbuffer command is available. if [ $(command -v stdbuf) ]; then @@ -83,7 +82,7 @@ fn_appmanifest_check(){ fi } -fn_logupdaterequest(){ +fn_update_request_log(){ # Checks for server update requests from server logs. fn_print_dots "Checking for update: Server logs" fn_script_log "Checking for update: Server logs" @@ -104,11 +103,13 @@ fn_logupdaterequest(){ unset updateonstart check_status.sh if [ "${status}" != "0" ]; then + exitbypass=1 command_stop.sh - update_dl.sh + fn_update_steamcmd_dl + exitbypass=1 command_start.sh else - update_dl.sh + fn_update_steamcmd_dl fi alert="update" alert.sh @@ -118,7 +119,7 @@ fn_logupdaterequest(){ fi } -fn_steamcmdcheck(){ +fn_update_steamcmd_check(){ fn_appmanifest_check # Checks for server update from SteamCMD fn_print_dots "Checking for update: SteamCMD" @@ -183,11 +184,11 @@ fn_steamcmdcheck(){ if [ "${status}" != "0" ]; then exitbypass=1 command_stop.sh - fn_steamcmd_dl + fn_update_steamcmd_dl exitbypass=1 command_start.sh else - fn_steamcmd_dl + fn_update_steamcmd_dl fi alert="update" alert.sh @@ -205,4 +206,21 @@ fn_steamcmdcheck(){ } -fn_steamcmdcheck \ No newline at end of file +if [ "${engine}" == "goldsource" ]||[ "${forceupdate}" == "1" ]; then + # Goldsource servers bypass checks as fn_update_steamcmd_check does not work for appid 90 servers. + # forceupdate bypasses checks + check_status.sh + if [ "${status}" != "0" ]; then + exitbypass=1 + command_stop.sh + fn_update_steamcmd_dl + exitbypass=1 + command_start.sh + else + fn_update_steamcmd_dl + fi +else + fn_update_request_log + fn_update_steamcmd_check +fi +core_exit.sh \ No newline at end of file diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh index 6d609e53d..a1ee4b913 100644 --- a/lgsm/functions/update_ts3.sh +++ b/lgsm/functions/update_ts3.sh @@ -12,137 +12,135 @@ fn_update_ts3_dl(){ } -fn_update_ts3_check(){ - # Checks for server update from teamspeak.com using a mirror dl.4players.de. - fn_print_dots "Checking for update: teamspeak.com" - fn_script_log_info "Checking for update: teamspeak.com" +# Checks for server update from teamspeak.com using a mirror dl.4players.de. +fn_print_dots "Checking for update: teamspeak.com" +fn_script_log_info "Checking for update: teamspeak.com" +sleep 1 + +# Gets currentbuild info +# Checks currentbuild info is available, if fails a server restart will be forced to generate logs. +if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then + fn_print_fail "Checking for update: teamspeak.com" sleep 1 - - # Gets currentbuild info - # Checks currentbuild info is available, if fails a server restart will be forced to generate logs. + fn_print_fail_nl "Checking for update: teamspeak.com: No logs with server version found" + fn_script_log_warn "Checking for update: teamspeak.com: No logs with server version found" + sleep 2 + fn_print_info_nl "Checking for update: teamspeak.com: Forcing server restart" + fn_script_log_warn "Checking for update: teamspeak.com: Forcing server restart" + sleep 2 + exitbypass=1 + command_stop.sh + exitbypass=1 + command_start.sh + sleep 1 + # Check again and exit on failure. if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then - fn_print_fail "Checking for update: teamspeak.com" - sleep 1 - fn_print_fail_nl "Checking for update: teamspeak.com: No logs with server version found" - fn_script_log_warn "Checking for update: teamspeak.com: No logs with server version found" - sleep 2 - fn_print_info_nl "Checking for update: teamspeak.com: Forcing server restart" - fn_script_log_warn "Checking for update: teamspeak.com: Forcing server restart" - sleep 2 - exitbypass=1 - command_stop.sh - exitbypass=1 - command_start.sh - sleep 1 - # Check again and exit on failure. - if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then - fn_print_fail_nl "Checking for update: teamspeak.com: Still No logs with server version found" - fn_script_log_fatal "Checking for update: teamspeak.com: Still No logs with server version found" - core_exit.sh - fi + fn_print_fail_nl "Checking for update: teamspeak.com: Still No logs with server version found" + fn_script_log_fatal "Checking for update: teamspeak.com: Still No logs with server version found" + core_exit.sh + fi +fi + +currentbuild=$(cat $(find ./* -name 'ts3server*_0.log' 2> /dev/null | sort | egrep -E -v '${rootdir}/.ts3version' | tail -1) | egrep -o 'TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | egrep -o '((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}') + +# Gets the teamspeak server architecture. +info_distro.sh +if [ "${arch}" == "x86_64" ]; then + ts3arch="amd64" +elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then + ts3arch="x86" +else + echo "" + fn_print_failure "unknown or unsupported architecture: ${arch}" + fn_script_log_fatal "unknown or unsupported architecture: ${arch}" + core_exit.sh +fi + +# Gets availablebuild info. + +# Grabs all version numbers but not in correct order. +wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | egrep -o '.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp + +# Sort version numbers +cat .ts3_version_numbers_unsorted.tmp | sort -r --version-sort -o .ts3_version_numbers_sorted.tmp + +# Finds directory with most recent server version. +while read ts3_version_number; do + wget --spider -q "http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" + if [ $? -eq 0 ]; then + availablebuild="${ts3_version_number}" + # Break while-loop, if the latest release could be found. + break fi +done < .ts3_version_numbers_sorted.tmp - currentbuild=$(cat $(find ./* -name 'ts3server*_0.log' 2> /dev/null | sort | egrep -E -v '${rootdir}/.ts3version' | tail -1) | egrep -o 'TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | egrep -o '((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}') +# Tidy up +rm -f ".ts3_version_numbers_unsorted.tmp" +rm -f ".ts3_version_numbers_sorted.tmp" - # Gets the teamspeak server architecture. - info_distro.sh - if [ "${arch}" == "x86_64" ]; then - ts3arch="amd64" - elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then - ts3arch="x86" - else - echo "" - fn_print_failure "unknown or unsupported architecture: ${arch}" - fn_script_log_fatal "unknown or unsupported architecture: ${arch}" - core_exit.sh - fi +# Checks availablebuild info is available +if [ -z "${availablebuild}" ]; then + fn_print_fail "Checking for update: teamspeak.com" + sleep 1 + fn_print_fail "Checking for update: teamspeak.com: Not returning version info" + fn_script_log_fatal "Failure! Checking for update: teamspeak.com: Not returning version info" + core_exit.sh +else + fn_print_ok "Checking for update: teamspeak.com" + fn_script_log_pass "Checking for update: teamspeak.com" + sleep 1 +fi - # Gets availablebuild info. - - # Grabs all version numbers but not in correct order. - wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | egrep -o '.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp - - # Sort version numbers - cat .ts3_version_numbers_unsorted.tmp | sort -r --version-sort -o .ts3_version_numbers_sorted.tmp - - # Finds directory with most recent server version. - while read ts3_version_number; do - wget --spider -q "http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" - if [ $? -eq 0 ]; then - availablebuild="${ts3_version_number}" - # Break while-loop, if the latest release could be found. - break - fi - done < .ts3_version_numbers_sorted.tmp - - # Tidy up - rm -f ".ts3_version_numbers_unsorted.tmp" - rm -f ".ts3_version_numbers_sorted.tmp" - - # Checks availablebuild info is available - if [ -z "${availablebuild}" ]; then - fn_print_fail "Checking for update: teamspeak.com" - sleep 1 - fn_print_fail "Checking for update: teamspeak.com: Not returning version info" - fn_script_log_fatal "Failure! Checking for update: teamspeak.com: Not returning version info" - core_exit.sh - else - fn_print_ok "Checking for update: teamspeak.com" - fn_script_log_pass "Checking for update: teamspeak.com" - sleep 1 - fi +# Removes dots so if can compare version numbers +currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]') +availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]') - # Removes dots so if can compare version numbers - currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]') - availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]') - - if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then - echo -e "\n" - echo -e "Update available:" - sleep 1 - echo -e " Current build: \e[0;31m${currentbuild} ${architecture}\e[0;39m" - echo -e " Available build: \e[0;32m${availablebuild} ${architecture}\e[0;39m" - echo -e "" - sleep 1 - echo "" - echo -en "Applying update.\r" - sleep 1 - echo -en "Applying update..\r" - sleep 1 - echo -en "Applying update...\r" - sleep 1 - echo -en "\n" - fn_script_log "Update available" - fn_script_log "Current build: ${currentbuild}" - fn_script_log "Available build: ${availablebuild}" - fn_script_log "${currentbuild} > ${availablebuild}" - - unset updateonstart - - check_status.sh - if [ "${status}" == "0" ]; then - fn_update_ts3_dl - exitbypass=1 - command_start.sh - exitbypass=1 - command_stop.sh - else - exitbypass=1 - command_stop.sh - fn_update_ts3_dl - exitbypass=1 - command_start.sh - fi - alert="update" - alert.sh +if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then + echo -e "\n" + echo -e "Update available:" + sleep 1 + echo -e " Current build: \e[0;31m${currentbuild} ${architecture}\e[0;39m" + echo -e " Available build: \e[0;32m${availablebuild} ${architecture}\e[0;39m" + echo -e "" + sleep 1 + echo "" + echo -en "Applying update.\r" + sleep 1 + echo -en "Applying update..\r" + sleep 1 + echo -en "Applying update...\r" + sleep 1 + echo -en "\n" + fn_script_log "Update available" + fn_script_log "Current build: ${currentbuild}" + fn_script_log "Available build: ${availablebuild}" + fn_script_log "${currentbuild} > ${availablebuild}" + + unset updateonstart + + check_status.sh + if [ "${status}" == "0" ]; then + fn_update_ts3_dl + exitbypass=1 + command_start.sh + exitbypass=1 + command_stop.sh else - echo -e "\n" - echo -e "No update available:" - echo -e " Current version: \e[0;32m${currentbuild}\e[0;39m" - echo -e " Available version: \e[0;32m${availablebuild}\e[0;39m" - echo -e "" - fn_print_ok_nl "No update available" - fn_script_log_info "Current build: ${currentbuild}" - fn_script_log_info "Available build: ${availablebuild}" + exitbypass=1 + command_stop.sh + fn_update_ts3_dl + exitbypass=1 + command_start.sh fi -} + alert="update" + alert.sh +else + echo -e "\n" + echo -e "No update available:" + echo -e " Current version: \e[0;32m${currentbuild}\e[0;39m" + echo -e " Available version: \e[0;32m${availablebuild}\e[0;39m" + echo -e "" + fn_print_ok_nl "No update available" + fn_script_log_info "Current build: ${currentbuild}" + fn_script_log_info "Available build: ${availablebuild}" +fi