Skip to content

Commit

Permalink
feat(core_dl): add more hashing methods (#3280)
Browse files Browse the repository at this point in the history
  • Loading branch information
h3o66 committed Feb 19, 2021
1 parent 1aa07bb commit ce1fe29
Show file tree
Hide file tree
Showing 21 changed files with 110 additions and 89 deletions.
2 changes: 1 addition & 1 deletion lgsm/functions/command_dev_query_raw.sh
Expand Up @@ -52,7 +52,7 @@ for queryip in "${queryips[@]}"; do
echo -e "./query_gsquery.py -a \"${queryip}\" -p \"${queryport}\" -e \"${querytype}\""
echo -e ""
if [ ! -f "${functionsdir}/query_gsquery.py" ]; then
fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nomd5"
fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nohash"
fi
"${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}"
done
Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/command_install_resources_mta.sh
Expand Up @@ -14,7 +14,7 @@ fn_install_resources(){
echo -e ""
echo -e "Installing Default Resources"
echo -e "================================="
fn_fetch_file "http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip" "" "" "" "${tmpdir}" "mtasa-resources-latest.zip" "nochmodx" "norun" "noforce" "nomd5"
fn_fetch_file "http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip" "" "" "" "${tmpdir}" "mtasa-resources-latest.zip" "nochmodx" "norun" "noforce" "nohash"
fn_dl_extract "${tmpdir}" "mtasa-resources-latest.zip" "${resourcesdir}"
echo -e "Default Resources Installed."
}
Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/command_monitor.sh
Expand Up @@ -87,7 +87,7 @@ fn_monitor_check_queryport(){

fn_query_gsquery(){
if [ ! -f "${functionsdir}/query_gsquery.py" ]; then
fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nomd5"
fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nohash"
fi
"${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}" > /dev/null 2>&1
querystatus="$?"
Expand Down
4 changes: 2 additions & 2 deletions lgsm/functions/command_update_linuxgsm.sh
Expand Up @@ -58,7 +58,7 @@ if [ "${tmp_script_diff}" != "" ]; then
fn_print_update_eol_nl
fn_script_log_update "Checking ${remotereponame} linuxgsm.sh"
rm -f "${tmpdir:?}/linuxgsm.sh"
fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "nochmodx" "norun" "noforcedl" "nomd5"
fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "nochmodx" "norun" "noforcedl" "nohash"
else
fn_print_ok_eol_nl
fn_script_log_pass "Checking ${remotereponame} linuxgsm.sh"
Expand Down Expand Up @@ -138,7 +138,7 @@ if [ "${config_file_diff}" != "" ]; then
fn_print_update_eol_nl
fn_script_log_update "Checking ${remotereponame} config _default.cfg"
rm -f "${configdirdefault:?}/config-lgsm/${gameservername:?}/_default.cfg"
fn_fetch_file_github "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "nochmodx" "norun" "noforce" "nomd5"
fn_fetch_file_github "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "nochmodx" "norun" "noforce" "nohash"
alert="config"
alert.sh
else
Expand Down
75 changes: 48 additions & 27 deletions lgsm/functions/core_dl.sh
Expand Up @@ -11,10 +11,10 @@
# chmodx: Optional, set to "chmodx" to make file executable using chmod +x
# run: Optional, set run to execute the file after download
# forcedl: Optional, force re-download of file even if exists
# md5: Optional, set an md5 sum and will compare it against the file.
# hash: Optional, set an hash sum and will compare it against the file.
#
# Downloads can be defined in code like so:
# fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
# fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}"
# fn_fetch_file "http://example.com/file.tar.bz2" "/some/dir" "file.tar.bz2" "chmodx" "run" "forcedl" "10cd7353aa9d758a075c600a6dd193fd"

functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
Expand Down Expand Up @@ -150,25 +150,46 @@ fn_clear_tmp(){
fi
}

fn_dl_md5(){
# Runs MD5 Check if available.
if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then
echo -en "verifying ${local_filename} with MD5..."
fn_dl_hash(){
# Runs Hash Check if available.
if [ "${hash}" != "0" ]&&[ "${hash}" != "nohash" ]&&[ "${hash}" != "nomd5" ]; then
# MD5
if [ "${#hash}" == "32" ]; then
hashbin="md5sum"
hashtype="MD5"
# SHA1
elif [ "${#hash}" == "40" ]; then
hashbin="sha1sum"
hashtype="SHA1"
# SHA256
elif [ "${#hash}" == "64" ]; then
hashbin="sha256sum"
hashtype="SHA256"
# SHA512
elif [ "${#hash}" == "128" ]; then
hashbin="sha512sum"
hashtype="SHA512"
else
fn_script_log_error "hash lengh not known for hash type"
fn_print_error_nl "hash lengh not known for hash type"
core_exit.sh
fi
echo -en "verifying ${local_filename} with ${hashtype}..."
fn_sleep_time
md5sumcmd=$(md5sum "${local_filedir}/${local_filename}"|awk '{print $1;}')
if [ "${md5sumcmd}" != "${md5}" ]; then
hashsumcmd=$(${hashbin} "${local_filedir}/${local_filename}" | awk '{print $1}')
if [ "${hashsumcmd}" != "${hash}" ]; then
fn_print_fail_eol_nl
echo -e "${local_filename} returned MD5 checksum: ${md5sumcmd}"
echo -e "expected MD5 checksum: ${md5}"
fn_script_log_fatal "Verifying ${local_filename} with MD5"
fn_script_log_info "${local_filename} returned MD5 checksum: ${md5sumcmd}"
fn_script_log_info "Expected MD5 checksum: ${md5}"
echo -e "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}"
echo -e "expected ${hashtype} checksum: ${hash}"
fn_script_log_fatal "Verifying ${local_filename} with ${hashtype}"
fn_script_log_info "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}"
fn_script_log_info "Expected ${hashtype} checksum: ${hash}"
core_exit.sh
else
fn_print_ok_eol_nl
fn_script_log_pass "Verifying ${local_filename} with MD5"
fn_script_log_info "${local_filename} returned MD5 checksum: ${md5sumcmd}"
fn_script_log_info "Expected MD5 checksum: ${md5}"
fn_script_log_pass "Verifying ${local_filename} with ${hashtype}"
fn_script_log_info "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}"
fn_script_log_info "Expected ${hashtype} checksum: ${hash}"
fi
fi
}
Expand Down Expand Up @@ -235,7 +256,7 @@ fn_fetch_file(){
chmodx="${7:-0}"
run="${8:-0}"
forcedl="${9:-0}"
md5="${10:-0}"
hash="${10:-0}"

# Download file if missing or download forced.
if [ ! -f "${local_filedir}/${local_filename}" ]||[ "${forcedl}" == "forcedl" ]; then
Expand Down Expand Up @@ -322,7 +343,7 @@ fn_fetch_file(){
fi

if [ -f "${local_filedir}/${local_filename}" ]; then
fn_dl_md5
fn_dl_hash
# Execute file if run is set.
if [ "${run}" == "run" ]; then
# shellcheck source=/dev/null
Expand All @@ -344,7 +365,7 @@ fn_fetch_file(){
# chmodx: Optional, set to "chmodx" to make file executable using chmod +x
# run: Optional, set run to execute the file after download
# forcedl: Optional, force re-download of file even if exists
# md5: Optional, set an md5 sum and will compare it against the file.
# hash: Optional, set an hash sum and will compare it against the file.

# Fetches files from the Git repo.
fn_fetch_file_github(){
Expand All @@ -369,9 +390,9 @@ fn_fetch_file_github(){
chmodx="${4:-0}"
run="${5:-0}"
forcedl="${6:-0}"
md5="${7:-0}"
hash="${7:-0}"
# Passes vars to the file download function.
fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}"
}

# Fetches config files from the Git repo.
Expand All @@ -393,9 +414,9 @@ fn_fetch_config(){
chmodx="nochmodx"
run="norun"
forcedl="noforce"
md5="nomd5"
hash="nohash"
# Passes vars to the file download function.
fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}"
}

# Fetches modules from the Git repo during first download.
Expand All @@ -417,9 +438,9 @@ fn_fetch_function(){
chmodx="chmodx"
run="run"
forcedl="noforce"
md5="nomd5"
hash="nohash"
# Passes vars to the file download function.
fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}"
}

# Fetches modules from the Git repo during update-lgsm.
Expand All @@ -441,9 +462,9 @@ fn_update_function(){
chmodx="chmodx"
run="norun"
forcedl="noforce"
md5="nomd5"
hash="nohash"
# Passes vars to the file download function.
fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}"

}

Expand Down
12 changes: 6 additions & 6 deletions lgsm/functions/core_functions.sh
Expand Up @@ -15,27 +15,27 @@ modulesversion="v21.1.3"
core_dl.sh(){
functionfile="${FUNCNAME[0]}"
if [ "$(type fn_fetch_core_dl 2>/dev/null)" ]; then
fn_fetch_core_dl "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5"
fn_fetch_core_dl "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash"
else
fn_bootstrap_fetch_file_github "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5"
fn_bootstrap_fetch_file_github "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash"
fi
}

core_messages.sh(){
functionfile="${FUNCNAME[0]}"
if [ "$(type fn_fetch_core_dl 2>/dev/null)" ]; then
fn_fetch_core_dl "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5"
fn_fetch_core_dl "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash"
else
fn_bootstrap_fetch_file_github "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5"
fn_bootstrap_fetch_file_github "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash"
fi
}

core_legacy.sh(){
functionfile="${FUNCNAME[0]}"
if [ "$(type fn_fetch_core_dl 2>/dev/null)" ]; then
fn_fetch_core_dl "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5"
fn_fetch_core_dl "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash"
else
fn_bootstrap_fetch_file_github "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5"
fn_bootstrap_fetch_file_github "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash"
fi
}

Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/core_steamcmd.sh
Expand Up @@ -14,7 +14,7 @@ fn_install_steamcmd(){
if [ ! -d "${steamcmddir}" ]; then
mkdir -p "${steamcmddir}"
fi
fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "" "norun" "noforce" "nomd5"
fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "" "norun" "noforce" "nohash"
fn_dl_extract "${tmpdir}" "steamcmd_linux.tar.gz" "${steamcmddir}"
chmod +x "${steamcmddir}/steamcmd.sh"
}
Expand Down
4 changes: 2 additions & 2 deletions lgsm/functions/info_stats.sh
Expand Up @@ -23,10 +23,10 @@ fi
if [ ! -f "${datadir}/uuid-${selfname}.txt" ]||[ ! -f "${datadir}/uuid-install.txt" ]; then
# download dictionary words
if [ ! -f "${datadir}/name-left.csv" ]; then
fn_fetch_file_github "lgsm/data" "name-left.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5"
fn_fetch_file_github "lgsm/data" "name-left.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash"
fi
if [ ! -f "${datadir}/name-right.csv" ]; then
fn_fetch_file_github "lgsm/data" "name-right.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5"
fn_fetch_file_github "lgsm/data" "name-right.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash"
fi

# generate instance uuid
Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/install_config.sh
Expand Up @@ -26,7 +26,7 @@ fn_fetch_default_config(){
mkdir -p "${lgsmdir}/config-default/config-game"
githuburl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master"
for config in "${array_configs[@]}"; do
fn_fetch_file "${githuburl}/${gamedirname}/${config}" "${remote_fileurl_backup}" "GitHub" "Bitbucket" "${lgsmdir}/config-default/config-game" "${config}" "nochmodx" "norun" "forcedl" "nomd5"
fn_fetch_file "${githuburl}/${gamedirname}/${config}" "${remote_fileurl_backup}" "GitHub" "Bitbucket" "${lgsmdir}/config-default/config-game" "${config}" "nochmodx" "norun" "forcedl" "nohash"
done
}

Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/install_modules.sh
Expand Up @@ -11,7 +11,7 @@ echo -e ""
echo -e "${lightyellow}Downloading LinuxGSM Modules${default}"
echo -e "================================="

fn_fetch_file "https://github.com/GameServerManagers/LinuxGSM/archive/master.tar.gz" "${tmpdir}" "master.tar.gz" "nochmodx" "norun" "noforce" "nomd5"
fn_fetch_file "https://github.com/GameServerManagers/LinuxGSM/archive/master.tar.gz" "${tmpdir}" "master.tar.gz" "nochmodx" "norun" "noforce" "nohash"
fn_dl_extract "${tmpdir}" "master.tar.gz" "${tmpdir}"
cp "${tmpdir}/LinuxGSM-master/lgsm/functions"/*.sh "${functionsdir}"
cp "${tmpdir}/LinuxGSM-master/lgsm/functions"/*.py "${functionsdir}"
Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/update_factorio.sh
Expand Up @@ -8,7 +8,7 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

fn_update_factorio_dl(){
fn_fetch_file "https://factorio.com/get-download/${downloadbranch}/headless/${factorioarch}" "" "" "" "${tmpdir}" "factorio_headless_${factorioarch}-${remotebuild}.tar.xz" "" "norun" "noforce" "nomd5"
fn_fetch_file "https://factorio.com/get-download/${downloadbranch}/headless/${factorioarch}" "" "" "" "${tmpdir}" "factorio_headless_${factorioarch}-${remotebuild}.tar.xz" "" "norun" "noforce" "nohash"
fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${remotebuild}.tar.xz" "${tmpdir}"
echo -e "copying to ${serverfiles}...\c"
cp -R "${tmpdir}/factorio/"* "${serverfiles}"
Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/update_jediknight2.sh
Expand Up @@ -8,7 +8,7 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

fn_update_jk2_dl(){
fn_fetch_file "https://github.com/mvdevs/jk2mv/releases/download/${remotebuild}/jk2mv-v${remotebuild}-dedicated.zip" "" "" "" "${tmpdir}" "jk2mv-${remotebuild}-dedicated.zip" "" "norun" "noforce" "nomd5"
fn_fetch_file "https://github.com/mvdevs/jk2mv/releases/download/${remotebuild}/jk2mv-v${remotebuild}-dedicated.zip" "" "" "" "${tmpdir}" "jk2mv-${remotebuild}-dedicated.zip" "" "norun" "noforce" "nohash"
fn_dl_extract "${tmpdir}" "jk2mv-${remotebuild}-dedicated.zip" "${tmpdir}/jk2mv-v${remotebuild}-dedicated"
echo -e "copying to ${serverfiles}...\c"
cp -R "${tmpdir}/jk2mv-v${remotebuild}-dedicated/linux-amd64/jk2mvded"* "${serverfiles}/GameData"
Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/update_minecraft.sh
Expand Up @@ -13,7 +13,7 @@ fn_update_minecraft_dl(){
# Generate link to server.jar
remotebuildurl=$(curl -s "${remotebuildlink}" | jq -r '.downloads.server.url')

fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "minecraft_server.${remotebuild}.jar" "" "norun" "noforce" "nomd5"
fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "minecraft_server.${remotebuild}.jar" "" "norun" "noforce" "nohash"
echo -e "copying to ${serverfiles}...\c"
cp "${tmpdir}/minecraft_server.${remotebuild}.jar" "${serverfiles}/minecraft_server.jar"
local exitcode=$?
Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/update_mta.sh
Expand Up @@ -8,7 +8,7 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

fn_update_mta_dl(){
fn_fetch_file "http://linux.mtasa.com/dl/multitheftauto_linux_x64.tar.gz" "" "" "" "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "" "norun" "noforce" "nomd5"
fn_fetch_file "http://linux.mtasa.com/dl/multitheftauto_linux_x64.tar.gz" "" "" "" "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "" "norun" "noforce" "nohash"
mkdir "${tmpdir}/multitheftauto_linux_x64"
fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "${tmpdir}/multitheftauto_linux_x64"
echo -e "copying to ${serverfiles}...\c"
Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/update_mumble.sh
Expand Up @@ -8,7 +8,7 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

fn_update_mumble_dl(){
fn_fetch_file "https://github.com/mumble-voip/mumble/releases/download/${remotebuild}/murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "" "" "" "${tmpdir}" "murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "" "norun" "noforce" "nomd5"
fn_fetch_file "https://github.com/mumble-voip/mumble/releases/download/${remotebuild}/murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "" "" "" "${tmpdir}" "murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "" "norun" "noforce" "nohash"
fn_dl_extract "${tmpdir}" "murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "${tmpdir}"
echo -e "copying to ${serverfiles}...\c"
cp -R "${tmpdir}/murmur-static_${mumblearch}-${remotebuild}/"* "${serverfiles}"
Expand Down
2 changes: 1 addition & 1 deletion lgsm/functions/update_ts3.sh
Expand Up @@ -13,7 +13,7 @@ fn_update_ts3_dl(){
elif [ "${ts3arch}" == "x86" ]; then
remotebuildurl=$(curl -s 'https://www.teamspeak.com/versions/server.json' | jq -r '.linux.x86.mirrors."teamspeak.com"')
fi
fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "teamspeak3-server_linux_${ts3arch}-${remotebuild}.tar.bz2" "" "norun" "noforce" "nomd5"
fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "teamspeak3-server_linux_${ts3arch}-${remotebuild}.tar.bz2" "" "norun" "noforce" "nohash"
fn_dl_extract "${tmpdir}" "teamspeak3-server_linux_${ts3arch}-${remotebuild}.tar.bz2" "${tmpdir}"
echo -e "copying to ${serverfiles}...\c"
cp -R "${tmpdir}/teamspeak3-server_linux_${ts3arch}/"* "${serverfiles}"
Expand Down

0 comments on commit ce1fe29

Please sign in to comment.