diff --git a/lgsm/functions/update_mumble.sh b/lgsm/functions/update_mumble.sh index 46cc8ab79..612746221 100644 --- a/lgsm/functions/update_mumble.sh +++ b/lgsm/functions/update_mumble.sh @@ -9,162 +9,147 @@ local commandname="UPDATE" local commandaction="Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -fn_update_mumble_arch(){ -# Mumble is x86 only for now -mumblearch="x86" -} - -fn_update_mumble_availablebuild(){ -# Gets latest build info. -fn_print_info_nl "Checking latest build from github.com" -fn_script_log "Checking latest build from github.com" -availablebuild=$(curl -s https://api.github.com/repos/mumble-voip/mumble/releases/latest | grep 'murmur-static_x86.*\.bz2"' | tail -1 | awk -F"/" '{ print $8 }') -sleep 1 - -# Checks if availablebuild variable has been set -if [ -z "${availablebuild}" ]; then - fn_print_fail "Checking latest build from github.com" - sleep 1 - fn_print_fail "Checking latest build from github.com: Not returning version info" - fn_script_log_fatal "Checking latest build from github.com: Not returning version info" - core_exit.sh -else - fn_print_ok_nl "Checked latest build from github.com" - fn_script_log_pass "Checked latest build from github.com" - sleep 1 -fi +fn_update_mumble_dl(){ + fn_fetch_file "https://github.com/mumble-voip/mumble/releases/download/${availablebuild}/murmur-static_${mumblearch}-${availablebuild}.tar.bz2" "${lgsmdir}/tmp" "murmur-static_${mumblearch}-${availablebuild}.tar.bz2" + fn_dl_extract "${lgsmdir}/tmp" "murmur-static_${mumblearch}-${availablebuild}.tar.bz2" "${lgsmdir}/tmp" + echo -e "copying to ${filesdir}...\c" + fn_script_log "Copying to ${filesdir}" + cp -R "${lgsmdir}/tmp/murmur-static_${mumblearch}-${availablebuild}/"* "${filesdir}" + rm -R "${lgsmdir}/tmp" + local exitcode=$? + if [ ${exitcode} -eq 0 ]; then + fn_print_ok_eol_nl + else + fn_print_fail_eol_nl + fi } fn_update_mumble_currentbuild(){ -# Gets current build info -fn_print_info "Checking installed server build" -sleep 1 -# Checks if current build info is available. If it fails, then a server restart will be forced to generate logs. -if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then - fn_print_info_nl "No current log found, can't retrieve current server build" - fn_script_log_info "No current log found, can't retrieve current server build" - sleep 1 - fn_print_info_nl "Forcing server restart" - fn_script_log_info "Forcing server restart" - sleep 1 - check_status.sh - if [ "${status}" != "0" ]; then + # Gets current build info + # Checks if current build info is available. If it fails, then a server restart will be forced to generate logs. + if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then + fn_print_error "Checking for update: GitHub" + sleep 1 + fn_print_error_nl "Checking for update: GitHub: No logs with server version found" + fn_script_log_error "Checking for update: GitHub: No logs with server version found" + sleep 1 + fn_print_info_nl "Checking for update: GitHub: Forcing server restart" + fn_script_log_info "Checking for update: GitHub: Forcing server restart" + sleep 1 exitbypass=1 command_stop.sh + exitbypass=1 + command_start.sh + sleep 1 + # Check again and exit on failure. + if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then + fn_print_fail_nl "Checking for update: GitHub: Still No logs with server version found" + fn_script_log_fatal "Checking for update: GitHub: Still No logs with server version found" + core_exit.sh + fi fi - exitbypass=1 - command_start.sh - exitbypass=1 - command_stopt.sh - sleep 1 - # Check again and exit on failure. - if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then - fn_print_fail_nl "Still no logs found, cannot retrieve server version" - fn_script_log_fatal "Still no logs found, cannot retrieve server version" - core_exit.sh - else - fn_print_ok_nl "Logs found" - fn_script_log "Logs found" - sleep 1 - fi -fi - -# Get current build from logs -currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | egrep 'Murmur ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | awk '{print $4}') -if [ -z "${currentbuild}" ]; then - fn_print_info_nl "Can't find current build version in logs" - fn_script_log_error "Can't find current build version in logs" - sleep 1 - fn_print_info_nl "Forcing server restart" - fn_script_log_info "Forcing server restart" - exitbypass=1 - command_stop.sh - exitbypass=1 - command_start.sh + # Get current build from logs currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | egrep 'Murmur ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | awk '{print $4}') if [ -z "${currentbuild}" ]; then - fn_print_fail_nl "Sorry, current build version still not found" - fn_script_log_fatal "Sorry, current build version still not found" + fn_print_error_nl "Checking for update: GitHub: Current build version not found" + fn_script_log_error "Checking for update: GitHub: Current build version not found" + sleep 1 + fn_print_info_nl "Checking for update: GitHub: Forcing server restart" + fn_script_log_info "Checking for update: GitHub: Forcing server restart" + exitbypass=1 + command_stop.sh + exitbypass=1 + command_start.sh + currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | egrep 'Murmur ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | awk '{print $4}') + if [ -z "${currentbuild}" ]; then + fn_print_fail_nl "Checking for update: GitHub: Current build version still not found" + fn_script_log_fatal "Checking for update: GitHub: Current build version still not found" + core_exit.sh + fi + fi +} + +fn_update_mumble_arch(){ + # Mumble is x86 only for now + mumblearch="x86" +} + +fn_update_mumble_availablebuild(){ + # Gets latest build info. + availablebuild=$(curl -s https://api.github.com/repos/mumble-voip/mumble/releases/latest | grep 'murmur-static_x86.*\.bz2"' | tail -1 | awk -F"/" '{ print $8 }') + sleep 1 + + # Checks if availablebuild variable has been set + if [ -z "${availablebuild}" ]; then + fn_print_fail "Checking for update: GitHub" + sleep 1 + fn_print_fail "Checking for update: GitHub: Not returning version info" + fn_script_log_fatal "Failure! Checking for update: GitHub: Not returning version info" core_exit.sh + else + fn_print_ok_nl "Checking for update: GitHub" + fn_script_log_pass "Checking for update: GitHub" + sleep 1 fi -fi } fn_update_mumble_compare(){ -# 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: ${red}${currentbuild} ${mumblearch}${default}" - echo -e " Available build: ${green}${availablebuild} ${mumblearch}${default}" - 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}" + if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then + echo -e "\n" + echo -e "Update available:" + sleep 1 + echo -e " Current build: ${red}${currentbuild} ${mumblearch}${default}" + echo -e " Available build: ${green}${availablebuild} ${mumblearch}${default}" + 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 + unset updateonstart - check_status.sh - if [ "${status}" == "0" ]; then - fn_update_mumble_dl - exitbypass=1 - command_start.sh - exitbypass=1 - command_stop.sh + check_status.sh + if [ "${status}" == "0" ]; then + fn_update_mumble_dl + exitbypass=1 + command_start.sh + exitbypass=1 + command_stop.sh + else + exitbypass=1 + command_stop.sh + fn_update_mumble_dl + exitbypass=1 + command_start.sh + fi + alert="update" + alert.sh else - exitbypass=1 - command_stop.sh - fn_update_mumble_dl - exitbypass=1 - command_start.sh + echo -e "\n" + echo -e "No update available:" + echo -e " Current version: ${green}${currentbuild}${default}" + echo -e " Available version: ${green}${availablebuild}${default}" + echo -e "" + fn_print_ok_nl "No update available" + fn_script_log_info "Current build: ${currentbuild}" + fn_script_log_info "Available build: ${availablebuild}" fi - alert="update" - alert.sh -else - echo -e "\n" - echo -e "No update available:" - echo -e " Current version: ${green}${currentbuild}${default}" - echo -e " Available version: ${green}${availablebuild}${default}" - echo -e "" - fn_print_ok_nl "No update available" - fn_script_log_info "Current build: ${currentbuild}" - fn_script_log_info "Available build: ${availablebuild}" -fi } -fn_update_mumble_dl(){ -mumblebuildname="murmur-static_${mumblearch}-${availablebuild}" -if [ ! -d "${lgsmdir}/tmp" ]; then - mkdir "${lgsmdir}/tmp" -fi -fn_fetch_file "https://github.com/mumble-voip/mumble/releases/download/${availablebuild}/${mumblebuildname}.tar.bz2" "${lgsmdir}/tmp" "${mumblebuildname}.tar.bz2" -fn_dl_extract "${lgsmdir}/tmp" "${mumblebuildname}.tar.bz2" "${lgsmdir}/tmp" -echo -e "copying to ${filesdir}...\c" -fn_script_log "Copying to ${filesdir}" -cp -R "${lgsmdir}/tmp/${mumblebuildname}/"* "${filesdir}" -rm -R "${lgsmdir}/tmp" -local exitcode=$? -if [ ${exitcode} -eq 0 ]; then - fn_print_ok_eol_nl -else - fn_print_fail_eol_nl -fi -} fn_update_mumble_arch if [ "${installer}" == "1" ]; then