|
@@ -7,116 +7,48 @@
|
|
|
|
|
|
|
|
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
|
|
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
|
|
|
|
|
|
|
|
-fn_update_ts3_dl() {
|
|
|
|
|
- ts3latestdata=$(curl -s "https://www.${remotelocation}/versions/server.json" | jq '.linux')
|
|
|
|
|
- if [ "${ts3arch}" == "amd64" ]; then
|
|
|
|
|
- remotebuildurl=$(echo -e "${ts3latestdata}" | jq -r '.x86_64.mirrors."teamspeak.com"')
|
|
|
|
|
- remotehash=$(echo -e "${ts3latestdata}" | jq -r '.x86_64.checksum')
|
|
|
|
|
- elif [ "${ts3arch}" == "x86" ]; then
|
|
|
|
|
- remotebuildurl=$(echo -e "${ts3latestdata}" | jq -r '.x86.mirrors."teamspeak.com"')
|
|
|
|
|
- remotehash=$(echo -e "${ts3latestdata}" | jq -r '.x86.checksum')
|
|
|
|
|
- fi
|
|
|
|
|
- remotefile=$(basename "${remotebuildurl}")
|
|
|
|
|
- fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotefile}" "" "norun" "noforce" "${remotehash}"
|
|
|
|
|
- fn_dl_extract "${tmpdir}" "${remotefile}" "${tmpdir}"
|
|
|
|
|
- echo -e "copying to ${serverfiles}...\c"
|
|
|
|
|
- cp -R "${tmpdir}/teamspeak3-server_linux_${ts3arch}/"* "${serverfiles}"
|
|
|
|
|
- local exitcode=$?
|
|
|
|
|
- if [ "${exitcode}" == "0" ]; then
|
|
|
|
|
- fn_print_ok_eol_nl
|
|
|
|
|
- fn_script_log_pass "Copying to ${serverfiles}"
|
|
|
|
|
- fn_clear_tmp
|
|
|
|
|
- else
|
|
|
|
|
- fn_print_fail_eol_nl
|
|
|
|
|
- fn_script_log_fatal "Copying to ${serverfiles}"
|
|
|
|
|
- fn_clear_tmp
|
|
|
|
|
- core_exit.sh
|
|
|
|
|
- fi
|
|
|
|
|
|
|
+fn_update_dl() {
|
|
|
|
|
+ # Download and extract files to serverfiles
|
|
|
|
|
+ fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "${remotebuildhash}"
|
|
|
|
|
+ fn_dl_extract "${tmpdir}" "${remotebuildfilename}" "${serverfiles}" "teamspeak3-server_linux_${ts3arch}"
|
|
|
|
|
+ fn_clear_tmp
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-fn_update_ts3_localbuild() {
|
|
|
|
|
|
|
+fn_update_localbuild() {
|
|
|
# Gets local build info.
|
|
# Gets local build info.
|
|
|
fn_print_dots "Checking local build: ${remotelocation}"
|
|
fn_print_dots "Checking local build: ${remotelocation}"
|
|
|
- # Uses log file to gather info.
|
|
|
|
|
- # Gives time for log file to generate.
|
|
|
|
|
- requirerestart=1
|
|
|
|
|
- if [ ! -d "${serverfiles}/logs" ] || [ -z "$(find "${serverfiles}/logs/"* -name 'ts3server*_0.log' 2> /dev/null)" ]; then
|
|
|
|
|
- fn_print_error "Checking local build: ${remotelocation}"
|
|
|
|
|
- fn_print_error_nl "Checking local build: ${remotelocation}: no log files containing version info"
|
|
|
|
|
- fn_print_info_nl "Checking local build: ${remotelocation}: forcing server restart"
|
|
|
|
|
- fn_script_log_error "No log files containing version info"
|
|
|
|
|
- fn_script_log_info "Forcing server restart"
|
|
|
|
|
- exitbypass=1
|
|
|
|
|
- command_stop.sh
|
|
|
|
|
- exitbypass=1
|
|
|
|
|
- command_start.sh
|
|
|
|
|
- fn_firstcommand_reset
|
|
|
|
|
- totalseconds=0
|
|
|
|
|
- # Check again, allow time to generate logs.
|
|
|
|
|
- while [ ! -d "${serverfiles}/logs" ] || [ -z "$(find "${serverfiles}/logs/"* -name 'ts3server*_0.log' 2> /dev/null)" ]; do
|
|
|
|
|
- sleep 1
|
|
|
|
|
- fn_print_info "Checking local build: ${remotelocation}: waiting for log file: ${totalseconds}"
|
|
|
|
|
- if [ -v "${loopignore}" ]; then
|
|
|
|
|
- loopignore=1
|
|
|
|
|
- fn_script_log_info "Waiting for log file to generate"
|
|
|
|
|
- fi
|
|
|
|
|
-
|
|
|
|
|
- if [ "${totalseconds}" -gt "120" ]; then
|
|
|
|
|
- localbuild="0"
|
|
|
|
|
- fn_print_error "Checking local build: ${remotelocation}: waiting for log file: missing log file"
|
|
|
|
|
- fn_script_log_error "Missing log file"
|
|
|
|
|
- fn_script_log_error "Set localbuild to 0"
|
|
|
|
|
- fi
|
|
|
|
|
-
|
|
|
|
|
- totalseconds=$((totalseconds + 1))
|
|
|
|
|
- done
|
|
|
|
|
- fi
|
|
|
|
|
-
|
|
|
|
|
- if [ -z "${localbuild}" ]; then
|
|
|
|
|
- localbuild=$(cat "$(find ./* -name "ts3server*_0.log" 2> /dev/null | sort | tail -1)" | grep -Eo "TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" | grep -Eo "((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" | tail -1)
|
|
|
|
|
- fi
|
|
|
|
|
-
|
|
|
|
|
- if [ -z "${localbuild}" ]; then
|
|
|
|
|
- # Gives time for var to generate.
|
|
|
|
|
- totalseconds=0
|
|
|
|
|
- for seconds in {1..120}; do
|
|
|
|
|
- fn_print_info "Checking local build: ${remotelocation}: waiting for local build: ${totalseconds}"
|
|
|
|
|
- if [ -z "${loopignore}" ]; then
|
|
|
|
|
- loopignore=1
|
|
|
|
|
- fn_script_log_info "Waiting for local build to generate"
|
|
|
|
|
- fi
|
|
|
|
|
- localbuild=$(cat "$(find ./* -name "ts3server*_0.log" 2> /dev/null | sort | tail -1)" | grep -Eo "TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" | grep -Eo "((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" | tail -1)
|
|
|
|
|
- if [ "${localbuild}" ] || [ "${seconds}" == "120" ]; then
|
|
|
|
|
- break
|
|
|
|
|
- fi
|
|
|
|
|
- sleep 1
|
|
|
|
|
- totalseconds=$((totalseconds + 1))
|
|
|
|
|
- done
|
|
|
|
|
- fi
|
|
|
|
|
-
|
|
|
|
|
|
|
+ # Uses log file to get local build.
|
|
|
|
|
+ localbuild=$(grep -Eo "TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" "$(find ./* -name "ts3server*_0.log" 2> /dev/null | sort | tail -1)" | grep -Eo "((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" | tail -1)
|
|
|
if [ -z "${localbuild}" ]; then
|
|
if [ -z "${localbuild}" ]; then
|
|
|
- localbuild="0"
|
|
|
|
|
- fn_print_error "Checking local build: ${remotelocation}: waiting for local build: missing local build info"
|
|
|
|
|
|
|
+ fn_print_error "Checking local build: ${remotelocation}: missing local build info"
|
|
|
fn_script_log_error "Missing local build info"
|
|
fn_script_log_error "Missing local build info"
|
|
|
fn_script_log_error "Set localbuild to 0"
|
|
fn_script_log_error "Set localbuild to 0"
|
|
|
|
|
+ localbuild="0"
|
|
|
else
|
|
else
|
|
|
fn_print_ok "Checking local build: ${remotelocation}"
|
|
fn_print_ok "Checking local build: ${remotelocation}"
|
|
|
fn_script_log_pass "Checking local build"
|
|
fn_script_log_pass "Checking local build"
|
|
|
fi
|
|
fi
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-fn_update_ts3_remotebuild() {
|
|
|
|
|
- # Gets remote build info.
|
|
|
|
|
- ts3latestdata=$(curl -s "https://www.${remotelocation}/versions/server.json" | jq '.linux')
|
|
|
|
|
|
|
+fn_update_remotebuild() {
|
|
|
|
|
+ # Get remote build info.
|
|
|
|
|
+ apiurl="https://www.teamspeak.com/versions/server.json"
|
|
|
|
|
+ remotebuildresponse=$(curl -s "${apiurl}")
|
|
|
|
|
+
|
|
|
if [ "${ts3arch}" == "amd64" ]; then
|
|
if [ "${ts3arch}" == "amd64" ]; then
|
|
|
- remotebuild=$(echo -e "${ts3latestdata}" | jq -r '.x86_64.version')
|
|
|
|
|
|
|
+ remotebuildurl=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86_64.mirrors."teamspeak.com"')
|
|
|
|
|
+ remotebuildhash=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86_64.checksum')
|
|
|
elif [ "${ts3arch}" == "x86" ]; then
|
|
elif [ "${ts3arch}" == "x86" ]; then
|
|
|
- remotebuild=$(echo -e "${ts3latestdata}" | jq -r '.x86.version')
|
|
|
|
|
|
|
+ remotebuildurl=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86.mirrors."teamspeak.com"')
|
|
|
|
|
+ remotebuildhash=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86.checksum')
|
|
|
fi
|
|
fi
|
|
|
|
|
+ remotebuildfilename=$(basename "${remotebuildurl}")
|
|
|
|
|
+ remotebuildversion=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86_64.version')
|
|
|
|
|
+
|
|
|
if [ "${firstcommandname}" != "INSTALL" ]; then
|
|
if [ "${firstcommandname}" != "INSTALL" ]; then
|
|
|
fn_print_dots "Checking remote build: ${remotelocation}"
|
|
fn_print_dots "Checking remote build: ${remotelocation}"
|
|
|
- # Checks if remotebuild variable has been set.
|
|
|
|
|
- if [ -z "${remotebuild}" ] || [ "${remotebuild}" == "null" ]; then
|
|
|
|
|
|
|
+ # Checks if remotebuildversion variable has been set.
|
|
|
|
|
+ if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then
|
|
|
fn_print_fail "Checking remote build: ${remotelocation}"
|
|
fn_print_fail "Checking remote build: ${remotelocation}"
|
|
|
fn_script_log_fatal "Checking remote build"
|
|
fn_script_log_fatal "Checking remote build"
|
|
|
core_exit.sh
|
|
core_exit.sh
|
|
@@ -126,7 +58,7 @@ fn_update_ts3_remotebuild() {
|
|
|
fi
|
|
fi
|
|
|
else
|
|
else
|
|
|
# Checks if remotebuild variable has been set.
|
|
# Checks if remotebuild variable has been set.
|
|
|
- if [ -z "${remotebuild}" ] || [ "${remotebuild}" == "null" ]; then
|
|
|
|
|
|
|
+ if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then
|
|
|
fn_print_failure "Unable to get remote build"
|
|
fn_print_failure "Unable to get remote build"
|
|
|
fn_script_log_fatal "Unable to get remote build"
|
|
fn_script_log_fatal "Unable to get remote build"
|
|
|
core_exit.sh
|
|
core_exit.sh
|
|
@@ -134,34 +66,45 @@ fn_update_ts3_remotebuild() {
|
|
|
fi
|
|
fi
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-fn_update_ts3_compare() {
|
|
|
|
|
- # Removes dots so if statement can compare version numbers.
|
|
|
|
|
|
|
+fn_update_compare() {
|
|
|
fn_print_dots "Checking for update: ${remotelocation}"
|
|
fn_print_dots "Checking for update: ${remotelocation}"
|
|
|
- localbuilddigit=$(echo -e "${localbuild}" | tr -cd '[:digit:]')
|
|
|
|
|
- remotebuilddigit=$(echo -e "${remotebuild}" | tr -cd '[:digit:]')
|
|
|
|
|
- if [ "${localbuilddigit}" -ne "${remotebuilddigit}" ] || [ "${forceupdate}" == "1" ]; then
|
|
|
|
|
|
|
+ if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then
|
|
|
fn_print_ok_nl "Checking for update: ${remotelocation}"
|
|
fn_print_ok_nl "Checking for update: ${remotelocation}"
|
|
|
echo -en "\n"
|
|
echo -en "\n"
|
|
|
echo -e "Update available"
|
|
echo -e "Update available"
|
|
|
echo -e "* Local build: ${red}${localbuild}${default}"
|
|
echo -e "* Local build: ${red}${localbuild}${default}"
|
|
|
- echo -e "* Remote build: ${green}${remotebuild}${default}"
|
|
|
|
|
|
|
+ echo -e "* Remote build: ${green}${remotebuildversion}${default}"
|
|
|
|
|
+ if [ -n "${branch}" ]; then
|
|
|
|
|
+ echo -e "* Branch: ${branch}"
|
|
|
|
|
+ fi
|
|
|
|
|
+ if [ -f "${rootdir}/.dev-debug" ]; then
|
|
|
|
|
+ echo -e "Remote build info"
|
|
|
|
|
+ echo -e "* apiurl: ${apiurl}"
|
|
|
|
|
+ echo -e "* remotebuildfilename: ${remotebuildfilename}"
|
|
|
|
|
+ echo -e "* remotebuildurl: ${remotebuildurl}"
|
|
|
|
|
+ echo -e "* remotebuildversion: ${remotebuildversion}"
|
|
|
|
|
+ fi
|
|
|
|
|
+ echo -en "\n"
|
|
|
fn_script_log_info "Update available"
|
|
fn_script_log_info "Update available"
|
|
|
fn_script_log_info "Local build: ${localbuild}"
|
|
fn_script_log_info "Local build: ${localbuild}"
|
|
|
- fn_script_log_info "Remote build: ${remotebuild}"
|
|
|
|
|
- fn_script_log_info "${localbuild} > ${remotebuild}"
|
|
|
|
|
|
|
+ fn_script_log_info "Remote build: ${remotebuildversion}"
|
|
|
|
|
+ if [ -n "${branch}" ]; then
|
|
|
|
|
+ fn_script_log_info "Branch: ${branch}"
|
|
|
|
|
+ fi
|
|
|
|
|
+ fn_script_log_info "${localbuild} > ${remotebuildversion}"
|
|
|
|
|
|
|
|
if [ "${commandname}" == "UPDATE" ]; then
|
|
if [ "${commandname}" == "UPDATE" ]; then
|
|
|
unset updateonstart
|
|
unset updateonstart
|
|
|
check_status.sh
|
|
check_status.sh
|
|
|
# If server stopped.
|
|
# If server stopped.
|
|
|
if [ "${status}" == "0" ]; then
|
|
if [ "${status}" == "0" ]; then
|
|
|
- exitbypass=1
|
|
|
|
|
- fn_update_ts3_dl
|
|
|
|
|
- if [ "${requirerestart}" == "1" ]; then
|
|
|
|
|
|
|
+ fn_update_dl
|
|
|
|
|
+ if [ "${localbuild}" == "0" ]; then
|
|
|
exitbypass=1
|
|
exitbypass=1
|
|
|
command_start.sh
|
|
command_start.sh
|
|
|
fn_firstcommand_reset
|
|
fn_firstcommand_reset
|
|
|
exitbypass=1
|
|
exitbypass=1
|
|
|
|
|
+ sleep 5
|
|
|
command_stop.sh
|
|
command_stop.sh
|
|
|
fn_firstcommand_reset
|
|
fn_firstcommand_reset
|
|
|
fi
|
|
fi
|
|
@@ -172,7 +115,7 @@ fn_update_ts3_compare() {
|
|
|
command_stop.sh
|
|
command_stop.sh
|
|
|
fn_firstcommand_reset
|
|
fn_firstcommand_reset
|
|
|
exitbypass=1
|
|
exitbypass=1
|
|
|
- fn_update_ts3_dl
|
|
|
|
|
|
|
+ fn_update_dl
|
|
|
exitbypass=1
|
|
exitbypass=1
|
|
|
command_start.sh
|
|
command_start.sh
|
|
|
fn_firstcommand_reset
|
|
fn_firstcommand_reset
|
|
@@ -189,11 +132,24 @@ fn_update_ts3_compare() {
|
|
|
echo -en "\n"
|
|
echo -en "\n"
|
|
|
echo -e "No update available"
|
|
echo -e "No update available"
|
|
|
echo -e "* Local build: ${green}${localbuild}${default}"
|
|
echo -e "* Local build: ${green}${localbuild}${default}"
|
|
|
- echo -e "* Remote build: ${green}${remotebuild}${default}"
|
|
|
|
|
|
|
+ echo -e "* Remote build: ${green}${remotebuildversion}${default}"
|
|
|
|
|
+ if [ -n "${branch}" ]; then
|
|
|
|
|
+ echo -e "* Branch: ${branch}"
|
|
|
|
|
+ fi
|
|
|
echo -en "\n"
|
|
echo -en "\n"
|
|
|
fn_script_log_info "No update available"
|
|
fn_script_log_info "No update available"
|
|
|
fn_script_log_info "Local build: ${localbuild}"
|
|
fn_script_log_info "Local build: ${localbuild}"
|
|
|
- fn_script_log_info "Remote build: ${remotebuild}"
|
|
|
|
|
|
|
+ fn_script_log_info "Remote build: ${remotebuildversion}"
|
|
|
|
|
+ if [ -n "${branch}" ]; then
|
|
|
|
|
+ fn_script_log_info "Branch: ${branch}"
|
|
|
|
|
+ fi
|
|
|
|
|
+ if [ -f "${rootdir}/.dev-debug" ]; then
|
|
|
|
|
+ echo -e "Remote build info"
|
|
|
|
|
+ echo -e "* apiurl: ${apiurl}"
|
|
|
|
|
+ echo -e "* remotebuildfilename: ${remotebuildfilename}"
|
|
|
|
|
+ echo -e "* remotebuildurl: ${remotebuildurl}"
|
|
|
|
|
+ echo -e "* remotebuildversion: ${remotebuildversion}"
|
|
|
|
|
+ fi
|
|
|
fi
|
|
fi
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -213,13 +169,13 @@ fi
|
|
|
remotelocation="teamspeak.com"
|
|
remotelocation="teamspeak.com"
|
|
|
|
|
|
|
|
if [ "${firstcommandname}" == "INSTALL" ]; then
|
|
if [ "${firstcommandname}" == "INSTALL" ]; then
|
|
|
- fn_update_ts3_remotebuild
|
|
|
|
|
- fn_update_ts3_dl
|
|
|
|
|
|
|
+ fn_update_remotebuild
|
|
|
|
|
+ fn_update_dl
|
|
|
else
|
|
else
|
|
|
fn_print_dots "Checking for update"
|
|
fn_print_dots "Checking for update"
|
|
|
fn_print_dots "Checking for update: ${remotelocation}"
|
|
fn_print_dots "Checking for update: ${remotelocation}"
|
|
|
fn_script_log_info "Checking for update: ${remotelocation}"
|
|
fn_script_log_info "Checking for update: ${remotelocation}"
|
|
|
- fn_update_ts3_localbuild
|
|
|
|
|
- fn_update_ts3_remotebuild
|
|
|
|
|
- fn_update_ts3_compare
|
|
|
|
|
|
|
+ fn_update_localbuild
|
|
|
|
|
+ fn_update_remotebuild
|
|
|
|
|
+ fn_update_compare
|
|
|
fi
|
|
fi
|