From d59bd57d44e820b355b4280756213b2a3962ba01 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 5 Feb 2016 02:23:34 +0100 Subject: [PATCH 001/643] fix ts3 update --- functions/install_ts3.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/install_ts3.sh b/functions/install_ts3.sh index f90f91073..27598ac56 100644 --- a/functions/install_ts3.sh +++ b/functions/install_ts3.sh @@ -65,7 +65,7 @@ else exit $? fi echo -e "copying to ${filesdir}...\c" -cp -R "${rootdir}/teamspeak3-server_linux-${ts3arch}/"* "${filesdir}" 2> ".${servicename}-cp-error.tmp" +cp -R "${rootdir}/teamspeak3-server_linux_${ts3arch}/"* "${filesdir}" 2> ".${servicename}-cp-error.tmp" local status=$? if [ ${status} -eq 0 ]; then echo "OK" @@ -77,4 +77,4 @@ else exit $? fi rm -f "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" -rm -rf "${rootdir}/teamspeak3-server_linux-${ts3arch}" +rm -rf "${rootdir}/teamspeak3-server_linux_${ts3arch}" From 60a70250d61c4dcd431017995349d49d9698d552 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 10:52:23 +0000 Subject: [PATCH 002/643] New download manager core_dl will handle all downloads for LGSM allowing a consistent download experience --- functions/core_dl.sh | 29 +++++++++++++++++++++++++++++ functions/core_functions.sh | 8 ++++++++ 2 files changed, 37 insertions(+) create mode 100644 functions/core_dl.sh diff --git a/functions/core_dl.sh b/functions/core_dl.sh new file mode 100644 index 000000000..1ae0edfbf --- /dev/null +++ b/functions/core_dl.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# LGSM core_dl.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="050216" + +# Description: Deals with all downloads for LGSM. + +fn_curl_dl(){ +curl_filename=$1 +curl_filepath=$2 +curl_url=$3 +echo "curl_filename $curl_filename" +echo "curl_url ${curl_url}" +echo "curl_filepath ${curl_filepath}" + +echo -ne "Downloading ${mm_file_latest}...\c" + +curl_dl=$(curl --fail -o "${curl_filepath}" "${curl_url}" ) +exitcode=$? +if [ $? -ne 0 ]; then + fn_printfaileol + echo "${curl_dl}" + echo -e "${url}\n" + exit ${exitcode} +else + fn_printokeol +fi +} \ No newline at end of file diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 7b0f148cd..f31e447a6 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -32,6 +32,11 @@ functionfile="${FUNCNAME}" fn_runfunction } +core_dl.sh(){ +functionfile="${FUNCNAME}" +fn_runfunction +} + # Command @@ -400,3 +405,6 @@ fn_runfunction # Calls on-screen messages core_messages.sh + +#Calls file downloader +core_dl.sh From 12e8dd1fc2747cef9255de6bfee4ab9a2a77caba Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 10:54:08 +0000 Subject: [PATCH 003/643] date --- functions/core_functions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index f31e447a6..a975fd46e 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -2,7 +2,7 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="170116" +lgsm_version="030216" # Description: Defines all functions to allow download and execution of functions using fn_runfunction. # This function is called first before any other function. Without this file other functions would not load. From cecee81c3007934828f03476860ab523e95debbc Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 11:34:27 +0000 Subject: [PATCH 004/643] added md5 checker --- functions/core_dl.sh | 83 +++++++++++++++++++++++++++++++++----------- 1 file changed, 63 insertions(+), 20 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 1ae0edfbf..88df26654 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -6,24 +6,67 @@ lgsm_version="050216" # Description: Deals with all downloads for LGSM. -fn_curl_dl(){ -curl_filename=$1 -curl_filepath=$2 -curl_url=$3 -echo "curl_filename $curl_filename" -echo "curl_url ${curl_url}" -echo "curl_filepath ${curl_filepath}" - -echo -ne "Downloading ${mm_file_latest}...\c" - -curl_dl=$(curl --fail -o "${curl_filepath}" "${curl_url}" ) -exitcode=$? -if [ $? -ne 0 ]; then - fn_printfaileol - echo "${curl_dl}" - echo -e "${url}\n" - exit ${exitcode} +# Downloads can be defined in code like so +# fn_dl "dl_filename" "dl_filepath" "dl_url" "dl_md5" +# fn_dl "file.tar.bz2" "/home/gameserver" "http://example.com/file.tar/bz2" "10cd7353aa9d758a075c600a6dd193fd" + +fn_dl_md5(){ +# Runs MD5 Check if available +if [ -n "${dl_md5}" ]; then + echo -ne "verifying ${dl_filename} with MD5...\c" + local md5check=$(md5sum "${dl_filepath}/${dl_filename}"|awk '{print $1;}') + if [ "${md5check}" != "${dl_md5}" ]; then + fn_printfaileol + echo "${dl_filename} MD5 checksum: ${md5check}" + echo -e "expected MD5 checksum: ${dl_md5}" + while true; do + read -e -i "y" -p "Retry download? [Y/n]" yn + case $yn in + [Yy]* ) retry_dl=1; fn_dl;; + [Nn]* ) echo Exiting; exit 1;; + * ) echo "Please answer yes or no.";; + esac + done + else + fn_printokeol + fi +fi +} + +fn_dl(){ +# defines variables from other script file +dl_filename=$1 +dl_filepath=$2 +dl_url=$3 +dl_md5=$4 + +if [ ! -f "${dl_filepath}/${dl_filename}" ]||[ -n "${retry_dl}" ]; then + echo -ne "downloading ${dl_filename}...\c" + + local dl=$(curl --fail -o "${dl_filepath}" "${dl_url}") + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_printfaileol + echo "${curl_dl}" + echo -e "${url}\n" + exit ${exitcode} + else + fn_printokeol + fi +else + echo -ne "${dl_filename} already exists...\c" + fn_dl_md5 + while true; do + read -e -i "n" -p "Download again? [y/N]" yn + case $yn in + [Yy]* ) fn_dl; retry_dl=1;; + [Nn]* ) break;; + * ) echo "Please answer yes or no.";; + esac + done else - fn_printokeol -fi -} \ No newline at end of file + + +fn_dl_md5 +} + From 2162b357233bf51b1c00a03d57dc8e3ec93a084a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 11:34:37 +0000 Subject: [PATCH 005/643] using ut99 as test --- functions/install_dl_ut99.sh | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/functions/install_dl_ut99.sh b/functions/install_dl_ut99.sh index c053ca18e..f2de71fea 100644 --- a/functions/install_dl_ut99.sh +++ b/functions/install_dl_ut99.sh @@ -2,34 +2,17 @@ # LGSM install_dl_ut99.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="050216" echo "" echo "Downloading Server Files" echo "=================================" sleep 1 -cd "${filesdir}" -if [ ! -f ut-server-436.tar.gz ]; then - wget http://gameservermanagers.com/files/ut99/ut-server-436.tar.gz -else - echo "ut-server-436.tar.gz already downloaded!" -fi -echo "Running MD5 checksum to verify the file" -sleep 1 -echo "MD5 checksum: 10cd7353aa9d758a075c600a6dd193fd" -md5check=$(md5sum ut-server-436.tar.gz|awk '{print $1;}') -echo "File returned: ${md5check}" -if [ "${md5check}" != "10cd7353aa9d758a075c600a6dd193fd" ]; then - echo "MD5 checksum: FAILED!" - read -p "Retry download? [y/N]" yn - case $yn in - [Yy]* ) rm -fv ut-server-436.tar.gz; fn_filesdl;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; - esac -else - echo "MD5 checksum: PASSED" -fi +fn_dl "ut-server-436.tar.gz" "${filesdir}" "http://gameservermanagers.com/files/ut99/ut-server-436.tar.gz" "10cd7353aa9d758a075c600a6dd193fd" + + + + if [ ! -f UTPGPatch451.tar.bz2 ]; then wget http://gameservermanagers.com/files/ut99/UTPGPatch451.tar.bz2 else From efd17f045c7dc9629351265e95f6f6cbfe2bab33 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 11:36:30 +0000 Subject: [PATCH 006/643] else for fi --- functions/core_dl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 88df26654..3192e45a0 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -63,8 +63,8 @@ else [Nn]* ) break;; * ) echo "Please answer yes or no.";; esac - done -else + done +fi fn_dl_md5 From 3be4b933e81b252f8c2518ead0983cef156078e4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 11:38:33 +0000 Subject: [PATCH 007/643] update functions bypasses systemdir check --- functions/check.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/check.sh b/functions/check.sh index ca50777cc..0d919b8ab 100644 --- a/functions/check.sh +++ b/functions/check.sh @@ -2,7 +2,7 @@ # LGSM fn_check function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="170116" +lgsm_version="050216" # Description: Overall function for managing checks. # Runs checks that will either halt on or fix an issue. @@ -21,7 +21,7 @@ array_contains () { check_root.sh -if [ "${function_selfname}" != "command_install.sh" ]; then +if [ "${function_selfname}" != "command_install.sh" ]||[ "${function_selfname}" != "update_functions.sh" ]; then check_systemdir.sh fi From 3b7afb9fea37fc2d719683af49945892f38fe83b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 11:44:58 +0000 Subject: [PATCH 008/643] Changed to and instead of or --- functions/check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/check.sh b/functions/check.sh index 0d919b8ab..101544b55 100644 --- a/functions/check.sh +++ b/functions/check.sh @@ -21,7 +21,7 @@ array_contains () { check_root.sh -if [ "${function_selfname}" != "command_install.sh" ]||[ "${function_selfname}" != "update_functions.sh" ]; then +if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname}" != "update_functions.sh" ]; then check_systemdir.sh fi From 54efa40e654db87478c1bd9c260e69e2578017ad Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 11:45:41 +0000 Subject: [PATCH 009/643] changed to and instead of or --- functions/check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/check.sh b/functions/check.sh index 0d919b8ab..101544b55 100644 --- a/functions/check.sh +++ b/functions/check.sh @@ -21,7 +21,7 @@ array_contains () { check_root.sh -if [ "${function_selfname}" != "command_install.sh" ]||[ "${function_selfname}" != "update_functions.sh" ]; then +if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname}" != "update_functions.sh" ]; then check_systemdir.sh fi From 63961792fcae6a76829f7b3c4832280e86f2c48a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 11:48:25 +0000 Subject: [PATCH 010/643] filename --- functions/core_dl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 3192e45a0..d5029fdc9 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -43,7 +43,7 @@ dl_md5=$4 if [ ! -f "${dl_filepath}/${dl_filename}" ]||[ -n "${retry_dl}" ]; then echo -ne "downloading ${dl_filename}...\c" - local dl=$(curl --fail -o "${dl_filepath}" "${dl_url}") + local dl=$(curl --fail -o "${dl_filepath}/${dl_filename}" "${dl_url}") local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_printfaileol From 0d6dbbaccdf830f1efec39fa352e6a6f31608467 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 11:55:43 +0000 Subject: [PATCH 011/643] error is now displayed correctly --- functions/core_dl.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index d5029fdc9..c6a05ecf1 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -43,11 +43,11 @@ dl_md5=$4 if [ ! -f "${dl_filepath}/${dl_filename}" ]||[ -n "${retry_dl}" ]; then echo -ne "downloading ${dl_filename}...\c" - local dl=$(curl --fail -o "${dl_filepath}/${dl_filename}" "${dl_url}") - local exitcode=$? + dl=$(curl --fail -o "${dl_filepath}/${dl_filename}" "${dl_url}" 2>&1) + exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_printfaileol - echo "${curl_dl}" + echo "${dl}" echo -e "${url}\n" exit ${exitcode} else From be5cf54ab91980ac33a41f73f1f24258cf5feb62 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 12:11:59 +0000 Subject: [PATCH 012/643] echo commented old code --- functions/install_dl_ut99.sh | 48 +++++++++++++++++------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/functions/install_dl_ut99.sh b/functions/install_dl_ut99.sh index f2de71fea..820970d03 100644 --- a/functions/install_dl_ut99.sh +++ b/functions/install_dl_ut99.sh @@ -8,30 +8,28 @@ echo "" echo "Downloading Server Files" echo "=================================" sleep 1 +echo "" fn_dl "ut-server-436.tar.gz" "${filesdir}" "http://gameservermanagers.com/files/ut99/ut-server-436.tar.gz" "10cd7353aa9d758a075c600a6dd193fd" - - - -if [ ! -f UTPGPatch451.tar.bz2 ]; then - wget http://gameservermanagers.com/files/ut99/UTPGPatch451.tar.bz2 -else - echo "UTPGPatch451.tar.bz2 already downloaded!" -fi -echo "Running MD5 checksum to verify the file" -sleep 1 -echo "MD5 checksum: 77a735a78b1eb819042338859900b83b" -md5check=$(md5sum UTPGPatch451.tar.bz2|awk '{print $1;}') -echo "File returned: ${md5check}" -if [ "${md5check}" != "77a735a78b1eb819042338859900b83b" ]; then - echo "MD5 checksum: FAILED!" - read -p "Retry download? [y/N]" yn - case $yn in - [Yy]* ) rm -fv UTPGPatch451.tar.bz2; fn_filesdl;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; - esac -else - echo "MD5 checksum: PASSED" -fi -echo "" \ No newline at end of file +#if [ ! -f UTPGPatch451.tar.bz2 ]; then +# wget http://gameservermanagers.com/files/ut99/UTPGPatch451.tar.bz2 +#else +# echo "UTPGPatch451.tar.bz2 already downloaded!" +#fi +#echo "Running MD5 checksum to verify the file" +#sleep 1 +#echo "MD5 checksum: 77a735a78b1eb819042338859900b83b" +#md5check=$(md5sum UTPGPatch451.tar.bz2|awk '{print $1;}') +#echo "File returned: ${md5check}" +#if [ "${md5check}" != "77a735a78b1eb819042338859900b83b" ]; then +# echo "MD5 checksum: FAILED!" +# read -p "Retry download? [y/N]" yn +# case $yn in +# [Yy]* ) rm -fv UTPGPatch451.tar.bz2; fn_filesdl;; +# [Nn]* ) echo Exiting; exit;; +# * ) echo "Please answer yes or no.";; +# esac +#else +# echo "MD5 checksum: PASSED" +#fi +#echo "" \ No newline at end of file From d5d4bee45ced0809330cd6217c455816d7ee1821 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 5 Feb 2016 12:12:58 +0000 Subject: [PATCH 013/643] adjusting display --- functions/core_dl.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index c6a05ecf1..1d90acab7 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -41,14 +41,13 @@ dl_url=$3 dl_md5=$4 if [ ! -f "${dl_filepath}/${dl_filename}" ]||[ -n "${retry_dl}" ]; then - echo -ne "downloading ${dl_filename}...\c" - - dl=$(curl --fail -o "${dl_filepath}/${dl_filename}" "${dl_url}" 2>&1) + echo -e "downloading ${dl_filename}..." + dl=$(curl --progress-bar --fail -o "${dl_filepath}/${dl_filename}" "${dl_url}") exitcode=$? + echo -ne "downloading ${dl_filename}...\c" if [ ${exitcode} -ne 0 ]; then fn_printfaileol - echo "${dl}" - echo -e "${url}\n" + echo -e "${dl_url}\n" exit ${exitcode} else fn_printokeol From 965bbfe9f2079bd95a76260d91ca97144ca67de6 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 5 Feb 2016 16:49:44 +0100 Subject: [PATCH 014/643] Updated wrong server architecture method Now matching install method --- functions/update_check.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/functions/update_check.sh b/functions/update_check.sh index ece46fb88..6ae3dbd9b 100644 --- a/functions/update_check.sh +++ b/functions/update_check.sh @@ -208,7 +208,14 @@ 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 -ts3arch=$(ls $(find ${filesdir}/ -name 'ts3server_*_*' 2> /dev/null | grep -v 'ts3server_minimal_runscript.sh' | sort | tail -1) | egrep -o '(amd64|x86)' | tail -1) +if [ "${arch}" == "x86_64" ]; then + ts3arch="amd64" +elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then + ts3arch="x86" +else + fn_printfailure "${arch} is an unsupported architecture" + exit 1 +fi # Gets availablebuild info From 6adbeef4236482c33a086b9b3fb4cafc3c18c116 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 5 Feb 2016 16:59:27 +0100 Subject: [PATCH 015/643] Reverted --- functions/update_check.sh | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/functions/update_check.sh b/functions/update_check.sh index 6ae3dbd9b..ece46fb88 100644 --- a/functions/update_check.sh +++ b/functions/update_check.sh @@ -208,14 +208,7 @@ 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 -if [ "${arch}" == "x86_64" ]; then - ts3arch="amd64" -elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then - ts3arch="x86" -else - fn_printfailure "${arch} is an unsupported architecture" - exit 1 -fi +ts3arch=$(ls $(find ${filesdir}/ -name 'ts3server_*_*' 2> /dev/null | grep -v 'ts3server_minimal_runscript.sh' | sort | tail -1) | egrep -o '(amd64|x86)' | tail -1) # Gets availablebuild info From 24108fc62582a41c18cecc3ded895566e54c8f55 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 5 Feb 2016 17:08:29 +0100 Subject: [PATCH 016/643] get arch the same way as installer --- functions/update_check.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/functions/update_check.sh b/functions/update_check.sh index ece46fb88..d51e16d09 100644 --- a/functions/update_check.sh +++ b/functions/update_check.sh @@ -2,7 +2,7 @@ # LGSM update_check.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="020216" +lgsm_version="050216" # Description: Checks if a server update is available. @@ -208,8 +208,17 @@ 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 -ts3arch=$(ls $(find ${filesdir}/ -name 'ts3server_*_*' 2> /dev/null | grep -v 'ts3server_minimal_runscript.sh' | sort | tail -1) | egrep -o '(amd64|x86)' | tail -1) - +info_distro.sh +if [ "${arch}" == "x86_64" ]; then + ts3arch="amd64" +elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then + ts3arch="x86" +else + echo "" + fn_printfailure "${arch} is an unsupported architecture" + exit 1 +fi + # Gets availablebuild info # Grabs all version numbers but not in correct order From c846baa68e248c2ba9dbc28674740f51ab4e0b1a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 6 Feb 2016 08:22:39 +0000 Subject: [PATCH 017/643] More changes --- functions/core_dl.sh | 4 ++-- functions/install_dl_ut99.sh | 26 +------------------------- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 1d90acab7..b509d4f82 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -41,7 +41,7 @@ dl_url=$3 dl_md5=$4 if [ ! -f "${dl_filepath}/${dl_filename}" ]||[ -n "${retry_dl}" ]; then - echo -e "downloading ${dl_filename}..." + echo -ne "downloading ${dl_filename}..." dl=$(curl --progress-bar --fail -o "${dl_filepath}/${dl_filename}" "${dl_url}") exitcode=$? echo -ne "downloading ${dl_filename}...\c" @@ -53,7 +53,7 @@ if [ ! -f "${dl_filepath}/${dl_filename}" ]||[ -n "${retry_dl}" ]; then fn_printokeol fi else - echo -ne "${dl_filename} already exists...\c" + echo -e "${dl_filename} already exists...\c" fn_dl_md5 while true; do read -e -i "n" -p "Download again? [y/N]" yn diff --git a/functions/install_dl_ut99.sh b/functions/install_dl_ut99.sh index 820970d03..fa7d64d6d 100644 --- a/functions/install_dl_ut99.sh +++ b/functions/install_dl_ut99.sh @@ -8,28 +8,4 @@ echo "" echo "Downloading Server Files" echo "=================================" sleep 1 -echo "" -fn_dl "ut-server-436.tar.gz" "${filesdir}" "http://gameservermanagers.com/files/ut99/ut-server-436.tar.gz" "10cd7353aa9d758a075c600a6dd193fd" - -#if [ ! -f UTPGPatch451.tar.bz2 ]; then -# wget http://gameservermanagers.com/files/ut99/UTPGPatch451.tar.bz2 -#else -# echo "UTPGPatch451.tar.bz2 already downloaded!" -#fi -#echo "Running MD5 checksum to verify the file" -#sleep 1 -#echo "MD5 checksum: 77a735a78b1eb819042338859900b83b" -#md5check=$(md5sum UTPGPatch451.tar.bz2|awk '{print $1;}') -#echo "File returned: ${md5check}" -#if [ "${md5check}" != "77a735a78b1eb819042338859900b83b" ]; then -# echo "MD5 checksum: FAILED!" -# read -p "Retry download? [y/N]" yn -# case $yn in -# [Yy]* ) rm -fv UTPGPatch451.tar.bz2; fn_filesdl;; -# [Nn]* ) echo Exiting; exit;; -# * ) echo "Please answer yes or no.";; -# esac -#else -# echo "MD5 checksum: PASSED" -#fi -#echo "" \ No newline at end of file +fn_dl "ut-server-451-complete.tar.bz2" "${filesdir}" "http://gameservermanagers.com/files/ut99/ut-server-451-complete.tar.bz2" "42a8c9806e4fce10a56830caca83ce63" From e05a42daae1ae0b4af1fe351a7224b061bac4918 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 6 Feb 2016 14:39:51 +0000 Subject: [PATCH 018/643] Added unset updateonstart to resolve updater looping updateonstart was causing the updater to loop if on. update now removes the updateonstart var to prevent it from looping --- functions/update_check.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/functions/update_check.sh b/functions/update_check.sh index d51e16d09..773c88b25 100644 --- a/functions/update_check.sh +++ b/functions/update_check.sh @@ -2,7 +2,7 @@ # LGSM update_check.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="050216" +lgsm_version="060216" # Description: Checks if a server update is available. @@ -89,6 +89,7 @@ if [ "${requestrestart}" -ge "1" ]; then sleep 1 echo -ne "\n" tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") + unset updateonstart if [ "${tmuxwc}" -eq 1 ]; then command_stop.sh update_dl.sh @@ -156,6 +157,7 @@ if [ "${currentbuild}" != "${availablebuild}" ]; then fn_scriptlog "${currentbuild} > ${availablebuild}" tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") + unset updateonstart if [ "${tmuxwc}" -eq 1 ]; then command_stop.sh update_dl.sh @@ -283,6 +285,7 @@ if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then fn_scriptlog "Current build: ${currentbuild}" fn_scriptlog "Available build: ${availablebuild}" fn_scriptlog "${currentbuild} > ${availablebuild}" + unset updateonstart info_ts3status.sh if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then update_dl.sh From 339a5198ce8f2fb0f1c285440857b073b9fb30a2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 6 Feb 2016 18:59:21 +0000 Subject: [PATCH 019/643] fix issue #676 no longer trys to install lib32gcc1 if 32 bit --- functions/check_deps.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/functions/check_deps.sh b/functions/check_deps.sh index 1e2e99fee..3f9312024 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -2,7 +2,7 @@ # LGSM check_deps.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="310116" +lgsm_version="060216" # Description: Checks that the requires dependencies are installed for LGSM. @@ -118,9 +118,13 @@ if [ -n "$(command -v dpkg-query)" ]; then array_deps_required+=( tmux ) fi - # All servers excelts ts3 & mumble require libstdc++6,lib32gcc1 + # All servers except ts3 & mumble require libstdc++6, lib32gcc1 if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then - array_deps_required+=( lib32gcc1 libstdc++6:i386 ) + if [ "${arch}" == "x86_64" ]; then + array_deps_required+=( lib32gcc1 libstdc++6:i386 ) + else + array_deps_required+=( libstdc++6:i386 ) + fi fi # Game Specific requirements @@ -164,7 +168,7 @@ elif [ -n "$(command -v yum)" ]; then array_deps_required+=( tmux ) fi - # All servers excelts ts3 & mumble require libstdc++6,lib32gcc1 + # All servers excelts ts3 & mumble require glibc.i686 libstdc++.i686 if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then array_deps_required+=( glibc.i686 libstdc++.i686 ) fi From 9e856b9d90b6e54eb37c5140ab994cbf67805b95 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 7 Feb 2016 22:20:30 +0000 Subject: [PATCH 020/643] Added GSLT for blackmesa --- BlackMesa/bmdmserver | 7 ++++++- BrainBread2/bb2server | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 7601f826a..d31b067fc 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -31,9 +31,14 @@ clientport="27005" ip="0.0.0.0" updateonstart="off" +# Optional: Game Server Login Token +# GSLT can be used for running a public server. +# More info: http://gameservermanagers.com/gslt +gslt="" + # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ -parms="-game bms -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" +parms="-game bms -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } #### Advanced Variables #### diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index a78fdbc5a..df17a46f9 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -31,8 +31,8 @@ clientport="27005" ip="0.0.0.0" updateonstart="off" -# Required: Game Server Login Token -# GSLT is required for running a public server. +# Optional: Game Server Login Token +# GSLT can be used for running a public server. # More info: http://gameservermanagers.com/gslt gslt="" From 61b5aacc74b50fef4321e3fd32515f983503bd1f Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 11:37:03 +0100 Subject: [PATCH 021/643] Added variables for additional logs --- functions/logs.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/functions/logs.sh b/functions/logs.sh index ecca143c0..317af4255 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -2,17 +2,31 @@ # LGSM logs.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="100215" # Description: Acts as a log rotater, removing old logs. local modulename="Log Manager" +# Check if logfile variable and file exist, create logfile if it doesn't exist if [ -n "${consolelog}" ]; then if [ ! -e "${consolelog}" ]; then touch "${consolelog}" fi fi + +# Set source log directory +if [ -z "${systemdir}" && "${engine}" == "source" ]; then + srcdslogdir="${systemdir}/logs" + # Set addons directories + sourcemodlogdir="${systemdir}/addons/sourcemod/logs" + # Set gmod addons directories + if [ "${gamename}" == "Garry's Mod" ]; then + ulxlogdir="${systemdir}/data/ulx_logs" + darkrplogdir="${systemdir}/data/darkrp_logs" + fi +fi + # log manager will active if finds logs older than ${logdays} if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then fn_printdots "Starting" From 1bb6844da4fbea769abb6f8afa66c12af4fc37fc Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 12:55:07 +0100 Subject: [PATCH 022/643] Added comments --- functions/logs.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/functions/logs.sh b/functions/logs.sh index 317af4255..68b66989b 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -39,24 +39,32 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then fn_scriptlog "Removing logs older than ${logdays} days" sleep 1 echo -en "\n" + # Retrocompatibility, for logs directly in /log folder + # Find game logfiles older than ${logdays} and write that list to the current script log if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then find "${gamelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" fi + # Find script logfiles older than ${logdays} and write that list to the current script log find "${scriptlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" + # Find console logfiles older than ${logdays} and write that list to the current script log if [ -n "${consolelog}" ]; then find "${consolelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" fi + # Retrocompatibility, for logs directly in /log folder + # Count how many script logfiles will be removed if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then gamecount=$(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) fi + # Count how many script logfiles will be removed scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) echo "${consolelog}" + # Count how many console logfiles will be removed if [ -n "${consolelog}" ]; then consolecount=$(find "${consolelogdir}"/ -type f -mtime +${logdays}|wc -l) else consolecount=0 fi - + # Count total amount of files to remove count=$((${scriptcount} + ${consolecount})) if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then count=$((${scriptcount} + ${consolecount} + ${gamecount})) @@ -64,7 +72,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then count=$((${scriptcount} + ${consolecount})) fi - + # Removing logfiles if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then find "${gamelogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; fi From f25bc42f6373f8b66711b97cafc8a4cdaacf5798 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 13:00:14 +0100 Subject: [PATCH 023/643] Fix gamecount targetting wrong folder Gamecount should target gamelogdir, not scriptlogdir, as it seems to be for retrocompatibility only, and according to this (line 44) : if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then find "${gamelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" fi --- functions/logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/logs.sh b/functions/logs.sh index 68b66989b..885fe7722 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -53,7 +53,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then # Retrocompatibility, for logs directly in /log folder # Count how many script logfiles will be removed if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then - gamecount=$(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) + gamecount=$(find "${gamelogdir}"/ -type f -mtime +${logdays}|wc -l) fi # Count how many script logfiles will be removed scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) From eb67a375ad9100162643dc9b9a175548957be7df Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 13:11:51 +0100 Subject: [PATCH 024/643] Simplifying counting Why make it simple when you can make it harder ! > Removing conditional functions for additions, by setting all variables to 0 before starting counting. > Removing "else, set to 0", as 0 is now the default state --- functions/logs.sh | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/functions/logs.sh b/functions/logs.sh index 885fe7722..75ad64347 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -50,6 +50,9 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then if [ -n "${consolelog}" ]; then find "${consolelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" fi + # Counting + # Setting up variables + scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" # Retrocompatibility, for logs directly in /log folder # Count how many script logfiles will be removed if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then @@ -58,19 +61,12 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then # Count how many script logfiles will be removed scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) echo "${consolelog}" - # Count how many console logfiles will be removed + # Count how many console logfiles will be removed, if those logs exist if [ -n "${consolelog}" ]; then consolecount=$(find "${consolelogdir}"/ -type f -mtime +${logdays}|wc -l) - else - consolecount=0 fi # Count total amount of files to remove - count=$((${scriptcount} + ${consolecount})) - if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then - count=$((${scriptcount} + ${consolecount} + ${gamecount})) - else - count=$((${scriptcount} + ${consolecount})) - fi + count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount})) # Removing logfiles if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then From f91b736ec7d4970aef6a8e83b0831b30aa0c30d0 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 14:10:10 +0100 Subject: [PATCH 025/643] Merging all in one, adding new logs support Merging logging, counting, and removing logfiles in one place, to avoid some redundant if statements Also, understanding the code and supporting new logs should be easier. Adding srcds / sm / ulx / darkrp logs support --- functions/logs.sh | 74 ++++++++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/functions/logs.sh b/functions/logs.sh index 75ad64347..9833b7db0 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -15,7 +15,7 @@ if [ -n "${consolelog}" ]; then fi fi -# Set source log directory +# Set source logs directories if [ -z "${systemdir}" && "${engine}" == "source" ]; then srcdslogdir="${systemdir}/logs" # Set addons directories @@ -27,7 +27,10 @@ if [ -z "${systemdir}" && "${engine}" == "source" ]; then fi fi -# log manager will active if finds logs older than ${logdays} +# Setting up counting variables +scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" + +# Log manager will start the cleanup if it finds logs older than ${logdays} if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then fn_printdots "Starting" sleep 1 @@ -39,43 +42,54 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then fn_scriptlog "Removing logs older than ${logdays} days" sleep 1 echo -en "\n" - # Retrocompatibility, for logs directly in /log folder - # Find game logfiles older than ${logdays} and write that list to the current script log - if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then - find "${gamelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - fi - # Find script logfiles older than ${logdays} and write that list to the current script log + # Logging logfiles to be removed according to ${logdays}, counting and removing them + # Script logfiles find "${scriptlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - # Find console logfiles older than ${logdays} and write that list to the current script log - if [ -n "${consolelog}" ]; then - find "${consolelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - fi - # Counting - # Setting up variables - scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" + scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) + find "${scriptlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; # Retrocompatibility, for logs directly in /log folder - # Count how many script logfiles will be removed if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then + find "${gamelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" gamecount=$(find "${gamelogdir}"/ -type f -mtime +${logdays}|wc -l) - fi - # Count how many script logfiles will be removed - scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) - echo "${consolelog}" - # Count how many console logfiles will be removed, if those logs exist - if [ -n "${consolelog}" ]; then - consolecount=$(find "${consolelogdir}"/ -type f -mtime +${logdays}|wc -l) - fi - # Count total amount of files to remove - count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount})) - - # Removing logfiles - if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then find "${gamelogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; fi - find "${scriptlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + # Console logfiles if [ -n "${consolelog}" ]; then + find "${consolelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" + consolecount=$(find "${consolelogdir}"/ -type f -mtime +${logdays}|wc -l) find "${consolelogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; fi + # SRCDS logfiles + if [ "${engine}" == "source" ]; then + if [ -d "${srcdslogdir}" ]; then + find "${srcdslogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" + srcdscount=$(find "${srcdslogdir}"/ -type f -mtime +${logdays}|wc -l) + find "${srcdslogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + fi + # SourceMod logfiles + if [ -d "${sourcemodlogdir}" ]; then + find "${sourcemodlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" + smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +${logdays}|wc -l) + find "${sourcemodlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + fi + # ULX logfiles + if [ "${gamename}" == "Garry's Mod" ] + if [ -d "${ulxlogdir}" ]; then + find "${ulxlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" + ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +${logdays}|wc -l) + find "${ulxlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + fi + if [ -d "${darkrplogdir}" ]; then + find "${darkrplogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" + darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +${logdays}|wc -l) + find "${darkrplogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + fi + fi + fi + + # Count total amount of files removed + count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount})) + # Job done fn_printok "Removed ${count} log files" fn_scriptlog "Removed ${count} log files" sleep 1 From 65d58f6d7d1ed6c965c14989a99deb853f0a301f Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 14:48:43 +0100 Subject: [PATCH 026/643] correcting syntax --- functions/logs.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/logs.sh b/functions/logs.sh index 9833b7db0..d295fd72f 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -16,7 +16,7 @@ if [ -n "${consolelog}" ]; then fi # Set source logs directories -if [ -z "${systemdir}" && "${engine}" == "source" ]; then +if [ -z "${systemdir}" ]&&[ "${engine}" == "source" ]; then srcdslogdir="${systemdir}/logs" # Set addons directories sourcemodlogdir="${systemdir}/addons/sourcemod/logs" @@ -73,7 +73,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then find "${sourcemodlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; fi # ULX logfiles - if [ "${gamename}" == "Garry's Mod" ] + if [ "${gamename}" == "Garry's Mod" ]; then if [ -d "${ulxlogdir}" ]; then find "${ulxlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +${logdays}|wc -l) From 37f4acbf90f382e39bd3971c3bf1b13796055e5a Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 15:06:06 +0100 Subject: [PATCH 027/643] Removing double SRCDS, improving comments and removing useless check for creating folders variables --- functions/logs.sh | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/functions/logs.sh b/functions/logs.sh index d295fd72f..680f3ecc0 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -15,17 +15,10 @@ if [ -n "${consolelog}" ]; then fi fi -# Set source logs directories -if [ -z "${systemdir}" ]&&[ "${engine}" == "source" ]; then - srcdslogdir="${systemdir}/logs" - # Set addons directories - sourcemodlogdir="${systemdir}/addons/sourcemod/logs" - # Set gmod addons directories - if [ "${gamename}" == "Garry's Mod" ]; then - ulxlogdir="${systemdir}/data/ulx_logs" - darkrplogdir="${systemdir}/data/darkrp_logs" - fi -fi +# Set addon logs directories +sourcemodlogdir="${systemdir}/addons/sourcemod/logs" +ulxlogdir="${systemdir}/data/ulx_logs" +darkrplogdir="${systemdir}/data/darkrp_logs" # Setting up counting variables scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" @@ -47,7 +40,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then find "${scriptlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) find "${scriptlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; - # Retrocompatibility, for logs directly in /log folder + # SRCDS and unreal logfiles if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then find "${gamelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" gamecount=$(find "${gamelogdir}"/ -type f -mtime +${logdays}|wc -l) @@ -59,26 +52,23 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then consolecount=$(find "${consolelogdir}"/ -type f -mtime +${logdays}|wc -l) find "${consolelogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; fi - # SRCDS logfiles + # Source addons logfiles if [ "${engine}" == "source" ]; then - if [ -d "${srcdslogdir}" ]; then - find "${srcdslogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - srcdscount=$(find "${srcdslogdir}"/ -type f -mtime +${logdays}|wc -l) - find "${srcdslogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; - fi # SourceMod logfiles if [ -d "${sourcemodlogdir}" ]; then find "${sourcemodlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +${logdays}|wc -l) find "${sourcemodlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; fi - # ULX logfiles + # Garry's Mod logfiles if [ "${gamename}" == "Garry's Mod" ]; then + # ULX logfiles if [ -d "${ulxlogdir}" ]; then find "${ulxlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +${logdays}|wc -l) find "${ulxlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; fi + # DarkRP logfiles if [ -d "${darkrplogdir}" ]; then find "${darkrplogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +${logdays}|wc -l) @@ -86,7 +76,6 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then fi fi fi - # Count total amount of files removed count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount})) # Job done From bb552e1d0747576dbb3801699c087145e997a049 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 15:14:49 +0100 Subject: [PATCH 028/643] Moving variable initialization inside if function --- functions/logs.sh | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/functions/logs.sh b/functions/logs.sh index 680f3ecc0..8e04d5a15 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -15,17 +15,15 @@ if [ -n "${consolelog}" ]; then fi fi -# Set addon logs directories -sourcemodlogdir="${systemdir}/addons/sourcemod/logs" -ulxlogdir="${systemdir}/data/ulx_logs" -darkrplogdir="${systemdir}/data/darkrp_logs" - -# Setting up counting variables -scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" - # Log manager will start the cleanup if it finds logs older than ${logdays} if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then fn_printdots "Starting" + # Set addon logs directories + sourcemodlogdir="${systemdir}/addons/sourcemod/logs" + ulxlogdir="${systemdir}/data/ulx_logs" + darkrplogdir="${systemdir}/data/darkrp_logs" + # Setting up counting variables + scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" sleep 1 fn_printok "Starting" fn_scriptlog "Starting" From c7f26352e92156502711c0ff343e5d82243529d7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 10 Feb 2016 14:28:56 +0000 Subject: [PATCH 029/643] Adding Codename CURE --- CodenameCURE/cfg/lgsm-default.cfg | 101 ++++++++++++++++++++++ CodenameCURE/cssserver | 138 ++++++++++++++++++++++++++++++ functions/install_config.sh | 6 ++ 3 files changed, 245 insertions(+) create mode 100644 CodenameCURE/cfg/lgsm-default.cfg create mode 100644 CodenameCURE/cssserver diff --git a/CodenameCURE/cfg/lgsm-default.cfg b/CodenameCURE/cfg/lgsm-default.cfg new file mode 100644 index 000000000..e4cce5e6f --- /dev/null +++ b/CodenameCURE/cfg/lgsm-default.cfg @@ -0,0 +1,101 @@ +// **************************************************************************** +// * +// CodenameCURE - server.cfg * +// Version 100216 * +// * +// **************************************************************************** + +// ............................. Basic Settings ............................. // + +// Hostname for server. +hostname "<hostname>" + +// RCON - remote console password. +rcon_password "<rconpassword>" + +// Server password - for private servers. +sv_password "" + +// Contact email for server sysop. +sv_contact "email@example.com" + +// LAN Mode - If set the server will not show on the internet. +// Default: sv_lan 0 +sv_lan 0 + +// ............................... Map Cycles ............................... // +// info: There are several predefined mapcycles available that are listed below. +// You can also create your own custom mapcycle. + +// "mapcycle.txt" - all maps +// "mapcycle_objective.txt" - objective maps only +// "mapcycle_survival.txt" - survival maps only +// +mapcyclefile "mapcycle.txt" + +// ........................ Game Specific Commands ........................ // +// info: any commands that only apply to this game. + +// Difficulty +// 0 - Easy +// 1 - Average +// 2 - Skilled +// 3 - Insane +sv_difficulty "1" + +// ............................. Communication ............................. // + +// Enable communication over voice via microphone. +// Default: sv_voiceenable 1 +sv_voiceenable 1 + +// Players can hear all other players, no team restrictions. +// Default: sv_alltalk 0 +sv_alltalk 1 + +// ............................. Fast Download .............................. // +// info: Allows custom maps to be downloaded to the client. + +// Allows clients to download custom maps and textures etc. from the server at 20 kbps. +// Default: sv_allowdownload 1 +sv_allowdownload 1 + +// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. +// Example: +// server location: maps/custommap.bsp +// web server location: http://example.com/custom/maps/custommap.bsp +// sv_downloadurl "http://example.com/custom" +// Default: sv_downloadurl "" +sv_downloadurl "" + +// ................................ Ban List ............................... // + +// personal banlist based on user IDs. +exec banned_user.cfg + +// personal banlist based on user IPs. +exec banned_ip.cfg + +writeid +writeip + +// ............................. Server Logging ............................. // + +//Enables logging to file, console, and udp < on | off >. +log on + +// Log server bans in the server logs. +// Default: sv_logbans 1 +sv_logbans 1 + +// Echo log information to the console. +// Default: sv_logecho 1 +sv_logecho 1 + +// Log server information in the log file. +// Default: sv_logfile 1 +sv_logfile 1 + +// Log server information to only one file. +// Default: sv_log_onefile 0 +sv_log_onefile 0 diff --git a/CodenameCURE/cssserver b/CodenameCURE/cssserver new file mode 100644 index 000000000..e55ea14bd --- /dev/null +++ b/CodenameCURE/cssserver @@ -0,0 +1,138 @@ +#!/bin/bash +# Codename CURE +# Server Management Script +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="271215" + +#### Variables #### + +# Notification Email +# (on|off) +emailnotification="off" +email="email@example.com" + +# Steam login +steamuser="anonymous" +steampass="" + +# Start Variables +defaultmap="cbe_bunker" +maxplayers="6" +port="27015" +sourcetvport="27058" +clientport="27005" +ip="0.0.0.0" +updateonstart="off" + +# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +fn_parms(){ +parms="-game cure -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" +} + +#### Advanced Variables #### + +# Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="dgibbs64" +githubrepo="linuxgsm" +githubbranch="master" + +# Steam +appid="383410" + +# Server Details +servicename="cc-server" +gamename="Codename Cure" +engine="source" + +# Directories +rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" +selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +lockselfname=".${servicename}.lock" +filesdir="${rootdir}/serverfiles" +systemdir="${filesdir}/cure" +executabledir="${filesdir}" +executable="./srcds_run" +servercfg="${servicename}.cfg" +servercfgdir="${systemdir}/cfg" +servercfgfullpath="${servercfgdir}/${servercfg}" +servercfgdefault="${servercfgdir}/lgsm-default.cfg" +backupdir="${rootdir}/backups" + +# Logging +logdays="7" +gamelogdir="${systemdir}/logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" + +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" + +##### Script ##### +# Do not edit + +fn_getgithubfile(){ +filename=$1 +exec=$2 +fileurl=${3:-$filename} +filepath="${rootdir}/${filename}" +filedir=$(dirname "${filepath}") +# If the function file is missing, then download +if [ ! -f "${filepath}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir "${filedir}" + fi + githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" + echo -e " fetching ${filename}...\c" + if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then + : + else + echo -e "\e[0;31mFAIL\e[0m\n" + echo "Curl is not installed!" + echo -e "" + exit + fi + curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curl}" + echo -e "${githuburl}\n" + exit + else + echo -e "\e[0;32mOK\e[0m" + fi + if [ "${exec}" ]; then + chmod +x "${filepath}" + fi +fi +if [ "${exec}" ]; then + source "${filepath}" +fi +} + +fn_runfunction(){ + fn_getgithubfile "functions/${functionfile}" 1 +} + +core_functions.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_runfunction +} + +core_functions.sh + +getopt=$1 +core_getopt.sh diff --git a/functions/install_config.sh b/functions/install_config.sh index f3420e9ac..4cd6948b5 100644 --- a/functions/install_config.sh +++ b/functions/install_config.sh @@ -180,6 +180,12 @@ elif [ "${gamename}" == "Blade Symphony" ]; then wget -N /dev/null ${githuburl}/BladeSymphony/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 fn_goldsourceconfig +elif [ "${gamename}" == "Codename CURE" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/Codename CURE/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig + elif [ "${gamename}" == "Counter Strike 1.6" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/CounterStrike/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq From 80b54428c9de0449271a73cfec816e5fb2bc64a2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 10 Feb 2016 14:31:20 +0000 Subject: [PATCH 030/643] Corrected name --- CodenameCURE/cssserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CodenameCURE/cssserver b/CodenameCURE/cssserver index e55ea14bd..d903e57c9 100644 --- a/CodenameCURE/cssserver +++ b/CodenameCURE/cssserver @@ -50,7 +50,7 @@ appid="383410" # Server Details servicename="cc-server" -gamename="Codename Cure" +gamename="Codename CURE" engine="source" # Directories From ff0e8a013e8ca58d4dc508cff6532729cfa5c0c5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 10 Feb 2016 14:33:11 +0000 Subject: [PATCH 031/643] corrected URL --- functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/install_config.sh b/functions/install_config.sh index 4cd6948b5..913bf26f0 100644 --- a/functions/install_config.sh +++ b/functions/install_config.sh @@ -182,7 +182,7 @@ elif [ "${gamename}" == "Blade Symphony" ]; then fn_goldsourceconfig elif [ "${gamename}" == "Codename CURE" ]; then echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/Codename CURE/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + wget -N /dev/null ${githuburl}/CodenameCURE/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 fn_sourceconfig From 1efb5db26a57a03b2a2a41d3f102d6e8583d85b1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 10 Feb 2016 14:38:26 +0000 Subject: [PATCH 032/643] ports --- CodenameCURE/cssserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CodenameCURE/cssserver b/CodenameCURE/cssserver index d903e57c9..a80d57b2d 100644 --- a/CodenameCURE/cssserver +++ b/CodenameCURE/cssserver @@ -26,7 +26,7 @@ steampass="" defaultmap="cbe_bunker" maxplayers="6" port="27015" -sourcetvport="27058" +sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" From afff99e3fce0cf6639ebfc45f6ee791046966588 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 10 Feb 2016 14:45:52 +0000 Subject: [PATCH 033/643] Updated config --- CodenameCURE/cfg/lgsm-default.cfg | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/CodenameCURE/cfg/lgsm-default.cfg b/CodenameCURE/cfg/lgsm-default.cfg index e4cce5e6f..296c28ec8 100644 --- a/CodenameCURE/cfg/lgsm-default.cfg +++ b/CodenameCURE/cfg/lgsm-default.cfg @@ -28,9 +28,6 @@ sv_lan 0 // You can also create your own custom mapcycle. // "mapcycle.txt" - all maps -// "mapcycle_objective.txt" - objective maps only -// "mapcycle_survival.txt" - survival maps only -// mapcyclefile "mapcycle.txt" // ........................ Game Specific Commands ........................ // @@ -43,6 +40,13 @@ mapcyclefile "mapcycle.txt" // 3 - Insane sv_difficulty "1" +// Server tags - Tags show up on the in-game server browser. This helps +// users filter servers. +// vanilla - he server runs the default settings. +// custom - the server runs custom gameplay settings or mods. +// example: sv_tags "custom, fastdl" +sv_tags "" + // ............................. Communication ............................. // // Enable communication over voice via microphone. From 2bde7897a7222add099f9294033c63cd9964de0a Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 15:54:06 +0100 Subject: [PATCH 034/643] Adding legacy server log dir support --- functions/logs.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/functions/logs.sh b/functions/logs.sh index 8e04d5a15..8b8952a0d 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -22,8 +22,9 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then sourcemodlogdir="${systemdir}/addons/sourcemod/logs" ulxlogdir="${systemdir}/data/ulx_logs" darkrplogdir="${systemdir}/data/darkrp_logs" + legacyserverlogdir="${rootdir}/log/server" # Setting up counting variables - scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" + scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" ; legacycount="0" sleep 1 fn_printok "Starting" fn_scriptlog "Starting" @@ -74,8 +75,19 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then fi fi fi + # Legacy support + if [ -d "${legacyserverlogdir}" ]; then + find "${legacyserverlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" + legacycount=$(find "${legacyserverlogdir}"/ -type f -mtime +${logdays}|wc -l) + find "${legacyserverlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + # Remove folder if empty + if [ ! "$(ls -A "${legacyserverlogdir}"" ]; then + rm -rf "${legacyserverlogdir}" + fi + fi + # Count total amount of files removed - count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount})) + count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount} + ${legacycount})) # Job done fn_printok "Removed ${count} log files" fn_scriptlog "Removed ${count} log files" From 443018125af355edc86d4d6239f8916d853eb207 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 10 Feb 2016 15:07:38 +0000 Subject: [PATCH 035/643] missing then --- functions/command_dev_detect_deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_dev_detect_deps.sh b/functions/command_dev_detect_deps.sh index f6d1da766..06bf99599 100644 --- a/functions/command_dev_detect_deps.sh +++ b/functions/command_dev_detect_deps.sh @@ -37,7 +37,7 @@ fi if [ "$(command -v eu-readelf)" ]; then readelf=eu-readelf -elif [ "$(command -v readelf)" ]; +elif [ "$(command -v readelf)" ]; then readelf=readelf else echo "readelf/eu-readelf not installed" From 6b9ae31587f6b3c7459fbcef6a88ce338105f0d7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 10 Feb 2016 15:23:17 +0000 Subject: [PATCH 036/643] renamed server --- CodenameCURE/{cssserver => ccserver} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CodenameCURE/{cssserver => ccserver} (100%) diff --git a/CodenameCURE/cssserver b/CodenameCURE/ccserver similarity index 100% rename from CodenameCURE/cssserver rename to CodenameCURE/ccserver From 9a2bbfd572146718bced4b652878e2f424821c74 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 16:23:44 +0100 Subject: [PATCH 037/643] Closing parenthesis, works better. --- functions/logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/logs.sh b/functions/logs.sh index 8b8952a0d..86b366848 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -81,7 +81,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then legacycount=$(find "${legacyserverlogdir}"/ -type f -mtime +${logdays}|wc -l) find "${legacyserverlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; # Remove folder if empty - if [ ! "$(ls -A "${legacyserverlogdir}"" ]; then + if [ ! "$(ls -A "${legacyserverlogdir}")" ]; then rm -rf "${legacyserverlogdir}" fi fi From fce7a6a957deb9a66237e838cc824d180a16f03d Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Wed, 10 Feb 2016 16:28:24 +0100 Subject: [PATCH 038/643] Added myself as a contributor :) --- functions/logs.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/logs.sh b/functions/logs.sh index 86b366848..83c80437d 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -1,6 +1,7 @@ #!/bin/bash # LGSM logs.sh function # Author: Daniel Gibbs +# Contributor: UltimateByte # Website: http://gameservermanagers.com lgsm_version="100215" From 74b26af7d35bb4a5b86d3acec81198bb47e6cc78 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 10 Feb 2016 15:55:50 +0000 Subject: [PATCH 039/643] Double quote to prevent globbing and word splitting. https://github.com/koalaman/shellcheck/wiki/SC2086 --- functions/logs.sh | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/functions/logs.sh b/functions/logs.sh index 83c80437d..a294c4d35 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -16,8 +16,8 @@ if [ -n "${consolelog}" ]; then fi fi -# Log manager will start the cleanup if it finds logs older than ${logdays} -if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then +# Log manager will start the cleanup if it finds logs older than "${logdays}" +if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then fn_printdots "Starting" # Set addon logs directories sourcemodlogdir="${systemdir}/addons/sourcemod/logs" @@ -31,56 +31,56 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) -ne "0" ]; then fn_scriptlog "Starting" sleep 1 echo -en "\n" - fn_printinfo "Removing logs older than ${logdays} days" - fn_scriptlog "Removing logs older than ${logdays} days" + fn_printinfo "Removing logs older than "${logdays}" days" + fn_scriptlog "Removing logs older than "${logdays}" days" sleep 1 echo -en "\n" - # Logging logfiles to be removed according to ${logdays}, counting and removing them + # Logging logfiles to be removed according to "${logdays}", counting and removing them # Script logfiles - find "${scriptlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +${logdays}|wc -l) - find "${scriptlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${scriptlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; # SRCDS and unreal logfiles if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then - find "${gamelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - gamecount=$(find "${gamelogdir}"/ -type f -mtime +${logdays}|wc -l) - find "${gamelogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + find "${gamelogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + gamecount=$(find "${gamelogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${gamelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi # Console logfiles if [ -n "${consolelog}" ]; then - find "${consolelogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - consolecount=$(find "${consolelogdir}"/ -type f -mtime +${logdays}|wc -l) - find "${consolelogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + find "${consolelogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi # Source addons logfiles if [ "${engine}" == "source" ]; then # SourceMod logfiles if [ -d "${sourcemodlogdir}" ]; then - find "${sourcemodlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +${logdays}|wc -l) - find "${sourcemodlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${sourcemodlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi # Garry's Mod logfiles if [ "${gamename}" == "Garry's Mod" ]; then # ULX logfiles if [ -d "${ulxlogdir}" ]; then - find "${ulxlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +${logdays}|wc -l) - find "${ulxlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + find "${ulxlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${ulxlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi # DarkRP logfiles if [ -d "${darkrplogdir}" ]; then - find "${darkrplogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +${logdays}|wc -l) - find "${darkrplogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + find "${darkrplogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${darkrplogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi fi fi # Legacy support if [ -d "${legacyserverlogdir}" ]; then - find "${legacyserverlogdir}"/ -type f -mtime +${logdays}|tee >> "${scriptlog}" - legacycount=$(find "${legacyserverlogdir}"/ -type f -mtime +${logdays}|wc -l) - find "${legacyserverlogdir}"/ -mtime +${logdays} -type f -exec rm -f {} \; + find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + legacycount=$(find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${legacyserverlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; # Remove folder if empty if [ ! "$(ls -A "${legacyserverlogdir}")" ]; then rm -rf "${legacyserverlogdir}" From 8a325cf07859c2aa8e31cd5562ae0ae840789086 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Sun, 14 Feb 2016 17:21:05 +0100 Subject: [PATCH 040/643] Fixing ts3 update checking Simplifying TS3 update checking using "sort" as its best to sort version numbers without the need of removing dots and outputting the file himself. Magic command is : cat .ts3_version_numbers_unsorted.tmp | sort -r --version-sort -o .ts3_version_numbers_sorted.tmp --- functions/update_check.sh | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/functions/update_check.sh b/functions/update_check.sh index 773c88b25..4c631657e 100644 --- a/functions/update_check.sh +++ b/functions/update_check.sh @@ -226,11 +226,8 @@ fi # 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 href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp -# Replaces dots with spaces to split up the number. e.g 3 0 12 1 is 3.0.12.1 this allows correct sorting - cat .ts3_version_numbers_unsorted.tmp | tr "." " " > .ts3_version_numbers_digit.tmp -# Sorts versions in to correct order -# merges 2 files and orders by each column in order allowing these version numbers to be sorted in order -paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp | awk '{print $1,$2,$3,$4 " " $0;}'| sort -k1rn -k2rn -k3rn -k4rn | awk '{print $NF}' > .ts3_version_numbers.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 @@ -240,12 +237,11 @@ while read ts3_version_number; do # Break while-loop, if the latest release could be found break fi -done < .ts3_version_numbers.tmp +done < .ts3_version_numbers_sorted.tmp -# tidy up -rm -f ".ts3_version_numbers_digit.tmp" +# Tidy up rm -f ".ts3_version_numbers_unsorted.tmp" -rm -f ".ts3_version_numbers.tmp" +rm -f ".ts3_version_numbers_sorted.tmp" # Checks availablebuild info is available if [ -z "${availablebuild}" ]; then From 18df7ec459055e1f0de3976886efe719f628679e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 16 Feb 2016 19:45:53 +0000 Subject: [PATCH 041/643] Upload to test --- JustCause2/jc2server | 75 ++++++++++++++------------- functions/core_dl.sh | 120 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 144 insertions(+), 51 deletions(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 5435a3121..05034cfde 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -4,7 +4,7 @@ # Author: Daniel Gibbs # Website: http://gameservermanagers.com if [ -f ".dev-debug" ]; then - exec 5>dev-debug.log + run 5>dev-debug.log BASH_XTRACEFD="5" set -x fi @@ -36,7 +36,7 @@ parms="" # from a different repo and/or branch. githubuser="dgibbs64" githubrepo="linuxgsm" -githubbranch="master" +githubbranch="dlmanage" # Steam appid="261140" @@ -51,6 +51,8 @@ rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" filesdir="${rootdir}/serverfiles" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" systemdir="${filesdir}" executabledir="${filesdir}" executable="./Jcmp-Server" @@ -76,55 +78,56 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" exit fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" - fi -fi -if [ "${exec}" ]; then - source "${filepath}" + chmod +x "${filedir}/${filename}" fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 -} - -core_functions.sh(){ +core_dl.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 diff --git a/functions/core_dl.sh b/functions/core_dl.sh index b509d4f82..4f786eea3 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -12,28 +12,28 @@ lgsm_version="050216" fn_dl_md5(){ # Runs MD5 Check if available -if [ -n "${dl_md5}" ]; then - echo -ne "verifying ${dl_filename} with MD5...\c" - local md5check=$(md5sum "${dl_filepath}/${dl_filename}"|awk '{print $1;}') +if [ -n "${md5}" ]; then + echo -ne "verifying ${filename} with MD5...\c" + local md5check=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') if [ "${md5check}" != "${dl_md5}" ]; then fn_printfaileol - echo "${dl_filename} MD5 checksum: ${md5check}" - echo -e "expected MD5 checksum: ${dl_md5}" - while true; do - read -e -i "y" -p "Retry download? [Y/n]" yn - case $yn in - [Yy]* ) retry_dl=1; fn_dl;; - [Nn]* ) echo Exiting; exit 1;; - * ) echo "Please answer yes or no.";; - esac - done + echo "${filename} MD5 checksum: ${md5check}" + echo "expected MD5 checksum: ${dl_md5}" + fn_scriptlog "failed to verify ${filename} with MD5" + fn_scriptlog "${filename} MD5 checksum: ${md5check}" + fn_scriptlog "expected MD5 checksum: ${dl_md5}" + exit 1 else fn_printokeol + fn_scriptlog "verifyed ${filename} with MD5" + fn_scriptlog "${filename} MD5 checksum: ${md5check}" + fn_scriptlog "expected MD5 checksum: ${dl_md5}" fi fi } -fn_dl(){ + +fn_dl_file(){ # defines variables from other script file dl_filename=$1 dl_filepath=$2 @@ -65,7 +65,97 @@ else done fi - fn_dl_md5 } + + +# Downloads file using curl and run it if required +fn_dl_file(){ +fileurl="${1}" +filedir="${2}" +filename="${3}" +run=${4:-0} +force=${5:-0} +md5=${6} +# If the file is missing or forced, then download +if [ ! -f "${filedir}" ] || [ "${force}" == "1" ] || [ "${force}" == "yes" ]; then + if [ ! -d "${filedir}" ]; then + mkdir -p "${filedir}" + fi + + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + curlcmd=${curlcmd} + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + # if larger file shows progress bar + if [ "${filename}" == *".tar"* ]; then + curlfetch=$(${curlcmd} --progress-bar -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) + else + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) + fi + if [ $? -ne 0 ]; then + fn_printfaileol + echo "${curlfetch}" + echo -e "${fileurl}\n" + fn_scriptlog "failed to download ${filedir}/${filename}" + fn_scriptlog "${curlfetch}" + fn_scriptlog -e "${fileurl}\n" + sleep 1 + echo "Removing failed ${filename}..." + rm -f "${filedir}/${filename}" + if [ $? -ne 0 ]; then + fn_printfaileol + else + fn_printokeol + fi + exit 1 + else + fn_printokeol + fn_scriptlog "downloaded ${filedir}/${filename}" + fi + else + echo -e "fn_printfaileol" + echo "Curl is not installed!" + echo -e "" + exit 1 + fi + fn_dl_md5 + + # make file executable if run is set + if [ "${run}" == "run" ]; then + chmod +x "${filedir}/${filename}" + fi +fi +# run file if run is set +if [ "${run}" == "run" ]; then + source "${filedir}/${filename}" +fi +} + + +# fn_fetch_file_github +# Parameters: +# github_file_url_dir: The directory the file is located in teh GitHub repo +# github_file_url_name: name of file +# filepath: location file to be saved +# run: Optional, set to 1 to make file executable +# force: force download of file even if exists +fn_fetch_file_github(){ +github_file_url_dir=${1} +github_file_url_name=${2} +filepath=${3} +filename="${github_file_url_name}" +run=${4:-0} +force=${5:-0} +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +echo -e " fetching ${filename}...\c" +fn_fetch_file "${githuburl}" "${filepath}" "${filename}" "${run}" "${force}" +} \ No newline at end of file From eee9851ded3228b7917d8de3d23d4d9e42e59aed Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 16 Feb 2016 20:41:37 +0000 Subject: [PATCH 042/643] Getting functions downloader working --- JustCause2/jc2server | 12 ++- functions/core_dl.sh | 43 ++++++----- functions/core_functions.sh | 149 +++++++++++++++++++----------------- 3 files changed, 108 insertions(+), 96 deletions(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 05034cfde..cedf158b8 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="160316" #### Variables #### @@ -106,7 +106,7 @@ if [ ! -f "${filedir}/${filename}" ]; then echo -e "\e[0;31mFAIL\e[0m\n" echo "${curlfetch}" echo -e "${githuburl}\n" - exit + exit 1 else echo -e "\e[0;32mOK\e[0m" fi @@ -114,7 +114,7 @@ if [ ! -f "${filedir}/${filename}" ]; then echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit + exit 1 fi chmod +x "${filedir}/${filename}" fi @@ -127,6 +127,12 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +core_functions.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + core_dl.sh core_functions.sh diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 4f786eea3..04c14cee3 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -71,25 +71,25 @@ fn_dl_md5 # Downloads file using curl and run it if required -fn_dl_file(){ -fileurl="${1}" -filedir="${2}" -filename="${3}" +# fn_fetch_file "fileurl" "filedir" "filename" "run" "force" "md5" +fn_fetch_file(){ +fileurl=${1} +filedir=${2} +filename=${3} run=${4:-0} force=${5:-0} md5=${6} -# If the file is missing or forced, then download -if [ ! -f "${filedir}" ] || [ "${force}" == "1" ] || [ "${force}" == "yes" ]; then +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then mkdir -p "${filedir}" fi - + echo -e " fetching ${filename}...\c" # Check curl exists and use available path curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" for curlcmd in ${curlpaths} do if [ -x "${curlcmd}" ]; then - curlcmd=${curlcmd} break fi done @@ -105,24 +105,12 @@ if [ ! -f "${filedir}" ] || [ "${force}" == "1" ] || [ "${force}" == "yes" ]; th fn_printfaileol echo "${curlfetch}" echo -e "${fileurl}\n" - fn_scriptlog "failed to download ${filedir}/${filename}" - fn_scriptlog "${curlfetch}" - fn_scriptlog -e "${fileurl}\n" - sleep 1 - echo "Removing failed ${filename}..." - rm -f "${filedir}/${filename}" - if [ $? -ne 0 ]; then - fn_printfaileol - else - fn_printokeol - fi exit 1 else fn_printokeol - fn_scriptlog "downloaded ${filedir}/${filename}" fi else - echo -e "fn_printfaileol" + fn_printfaileol echo "Curl is not installed!" echo -e "" exit 1 @@ -158,4 +146,17 @@ force=${5:-0} githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" echo -e " fetching ${filename}...\c" fn_fetch_file "${githuburl}" "${filepath}" "${filename}" "${run}" "${force}" +} + + + +# Fetches functions +fn_fetch_function(){ +github_file_url_dir="functions" # github dir containing the file +github_file_url_name="${functionfile}" # name of the github file +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +filedir="${functionsdir}" # local dir that will contain the file +filename="${github_file_url_name}" # name of the local file +run="run" +fn_fetch_file "${githuburl}" "${filedir}" "${filename}" "${run}" } \ No newline at end of file diff --git a/functions/core_functions.sh b/functions/core_functions.sh index a975fd46e..c54dd3c19 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -2,97 +2,102 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="030216" +lgsm_version="160216" -# Description: Defines all functions to allow download and execution of functions using fn_runfunction. +# Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. #Legacy functions fn_functions(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fn_getopt(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } # Core +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + core_getopt.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } core_messages.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } core_dl.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } - # Command command_console.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_debug.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_details.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_email_test.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_backup.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_monitor.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_start.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_stop.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_validate.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_install.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_ts3_server_pass.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fn_restart(){ @@ -108,52 +113,52 @@ command_start.sh check.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } check_config.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } check_deps.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } check_ip.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } check_logs.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } check_root.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } check_steamcmd.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } check_steamuser.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } check_systemdir.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } check_tmux.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } @@ -161,12 +166,12 @@ fn_runfunction compress_unreal2_maps.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } compress_ut99_maps.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } @@ -174,12 +179,12 @@ fn_runfunction command_dev_debug.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_dev_detect_deps.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } @@ -187,52 +192,52 @@ fn_runfunction fix.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_arma3.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_csgo.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_dst.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_ins.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_steamcmd.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_glibc.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_ro.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_kf.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_ut2k4.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } @@ -240,22 +245,22 @@ fn_runfunction info_config.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } info_distro.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } info_glibc.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } info_ts3status.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } @@ -263,14 +268,14 @@ fn_runfunction email.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } # Logs logs.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } @@ -278,7 +283,7 @@ fn_runfunction monitor_gsquery.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } @@ -286,22 +291,22 @@ fn_runfunction update_check.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } update_functions.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } update_dl.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } update_functions.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } @@ -316,91 +321,91 @@ command_install.sh install_complete.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_config.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_gsquery.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_gslt.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_header.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_logs.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_retry.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_serverdir.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_serverfiles.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_steamcmd.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_ts3.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_ts3db.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_ut2k4.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_dl_ut2k4.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_ut2k4_key.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_ut99.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } install_dl_ut99.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } fix_ut99.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } # Calls on-screen messages From ea45e1adc0757211bd3f038974669f7f45905f6b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 16 Feb 2016 22:24:49 +0000 Subject: [PATCH 043/643] turned in to functions --- functions/check_steamcmd.sh | 103 ++++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 47 deletions(-) diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index a47081b8a..5c5c3db83 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -4,60 +4,69 @@ # Website: http://gameservermanagers.com lgsm_version="281215" -# Description: Downloads SteamCMD on install and checks if missing before running functions that require SteamCMD +# Description: Checks SteamCMD is installed and correct. -if [ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 2004" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Teamspeak 3" ]; then - : # These servers do not require SteamCMD. Check is skipped. -else - # Checks steamuser is setup. - if [ "${steamuser}" == "username" ]; then +fn_install_steamcmd(){ +echo "Installing steamCMD..." +if [ ! -d "${steamcmddir}" ]; then + mkdir -v "${steamcmddir}" +fi +fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "${steamcmddir}" "steamcmd_linux.tar.gz" +tar --verbose -zxf "${steamcmddir}/steamcmd_linux.tar.gz" -C "${steamcmddir}" +rm -v "${steamcmddir}/steamcmd_linux.tar.gz" +chmod +x "${steamcmddir}/steamcmd.sh" +} + + +fn_check_steamcmd_user(){ +# Checks steamuser is setup. +if [ "${steamuser}" == "username" ]; then fn_printfailnl "Steam login not set. Update steamuser." echo " * Change steamuser=\"username\" to a valid steam login." - if [ -d ${scriptlogdir} ]; then + if [ -d "${scriptlogdir}" ]; then fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login." exit 1 fi +fi +# Anonymous user is set if steamuser is missing +if [ -z "${steamuser}" ]; then + fn_printwarnnl "Steam login not set. Using anonymous login." + if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "Steam login not set. Using anonymous login." fi - if [ -z "${steamuser}" ]; then - fn_printwarnnl "Steam login not set. Using anonymous login." - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "Steam login not set. Using anonymous login." - fi - steamuser="anonymous" - steampass="" - sleep 2 - fi - # Checks if SteamCMD exists when starting or updating a server. - # Re-installs if missing. - steamcmddir="${rootdir}/steamcmd" - if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then - fn_printwarnnl "SteamCMD is missing" - fn_scriptlog "SteamCMD is missing" - sleep 1 - if [ ! -d "${steamcmddir}" ]; then - mkdir -v "${steamcmddir}" - fi - curl=$(curl --fail -o "${steamcmddir}/steamcmd_linux.tar.gz" "http://media.steampowered.com/client/steamcmd_linux.tar.gz" 2>&1) - exitcode=$? - echo -e "downloading steamcmd_linux.tar.gz...\c" - if [ $exitcode -eq 0 ]; then - fn_printokeol - else - fn_printfaileol - echo "${curl}" - echo -e "${githuburl}\n" - exit $exitcode - fi - tar --verbose -zxf "${steamcmddir}/steamcmd_linux.tar.gz" -C "${steamcmddir}" - rm -v "${steamcmddir}/steamcmd_linux.tar.gz" - chmod +x "${steamcmddir}/steamcmd.sh" + steamuser="anonymous" + steampass="" + sleep 2 +fi +} + +fn_check_steamcmd_sh(){ +# Checks if SteamCMD exists when starting or updating a server. +# Re-installs if missing. +steamcmddir="${rootdir}/steamcmd" +if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then + fn_printwarnnl "SteamCMD is missing" + fn_scriptlog "SteamCMD is missing" + sleep 1 + fn_install_steamcmd +fi +} + +fn_check_steamcmd_guard(){ +if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then + # Checks that steamcmd is working correctly and will prompt Steam Guard if required. + "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit + if [ $? -ne 0 ]; then + fn_printfailurenl "Error running SteamCMD" fi - if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then - # Checks that steamcmd is working correctly and will prompt Steam Guard if required. - "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit - if [ $? -ne 0 ]; then - fn_printfailurenl "Error running SteamCMD" - fi - fi +fi +} + +if [ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 2004" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Teamspeak 3" ]; then + : # These servers do not require SteamCMD. Check is skipped. +else + fn_check_steamcmd_user + fn_check_steamcmd_sh + fn_check_steamcmd_guard fi From ec05d52a0f92dfe81225f22323f580b8df79e80d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 16 Feb 2016 22:25:13 +0000 Subject: [PATCH 044/643] date --- functions/check_steamcmd.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index 5c5c3db83..8e5f83544 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -2,7 +2,7 @@ # LGSM check_steamcmd.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="281215" +lgsm_version="160316" # Description: Checks SteamCMD is installed and correct. From ebbd32387abc40a519623efa020df8eb332ffaa2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 16 Feb 2016 22:27:24 +0000 Subject: [PATCH 045/643] fixes issues #646 --- functions/check_steamcmd.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index a47081b8a..7bb6d8140 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -33,7 +33,9 @@ else steamcmddir="${rootdir}/steamcmd" if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then fn_printwarnnl "SteamCMD is missing" - fn_scriptlog "SteamCMD is missing" + if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "SteamCMD is missing" + fi sleep 1 if [ ! -d "${steamcmddir}" ]; then mkdir -v "${steamcmddir}" From 3d7ac4ed4e9576cbd15ae4fa995c066f00351ab2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 17 Feb 2016 21:50:47 +0000 Subject: [PATCH 046/643] Added steamcmd check to start debug --- functions/check.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/check.sh b/functions/check.sh index 101544b55..fa6b47306 100644 --- a/functions/check.sh +++ b/functions/check.sh @@ -2,7 +2,7 @@ # LGSM fn_check function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="050216" +lgsm_version="170216" # Description: Overall function for managing checks. # Runs checks that will either halt on or fix an issue. @@ -49,7 +49,7 @@ do fi done -local allowed_commands_array=( update_check.sh command_validate.sh ) +local allowed_commands_array=( update_check.sh command_debug.sh command_start.sh command_validate.sh ) for allowed_command in "${allowed_commands_array[@]}" do if [ "${allowed_command}" == "${function_selfname}" ]; then From 752365a1c62ba2316d47558d62edca47dcbcba90 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 17 Feb 2016 23:02:28 +0000 Subject: [PATCH 047/643] added a trap plus more fine tuning --- functions/core_dl.sh | 61 ++++++++++++++++---------------------------- 1 file changed, 22 insertions(+), 39 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 04c14cee3..d2a0c2372 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -10,6 +10,7 @@ lgsm_version="050216" # fn_dl "dl_filename" "dl_filepath" "dl_url" "dl_md5" # fn_dl "file.tar.bz2" "/home/gameserver" "http://example.com/file.tar/bz2" "10cd7353aa9d758a075c600a6dd193fd" + fn_dl_md5(){ # Runs MD5 Check if available if [ -n "${md5}" ]; then @@ -32,43 +33,19 @@ if [ -n "${md5}" ]; then fi } - -fn_dl_file(){ -# defines variables from other script file -dl_filename=$1 -dl_filepath=$2 -dl_url=$3 -dl_md5=$4 - -if [ ! -f "${dl_filepath}/${dl_filename}" ]||[ -n "${retry_dl}" ]; then - echo -ne "downloading ${dl_filename}..." - dl=$(curl --progress-bar --fail -o "${dl_filepath}/${dl_filename}" "${dl_url}") - exitcode=$? - echo -ne "downloading ${dl_filename}...\c" - if [ ${exitcode} -ne 0 ]; then - fn_printfaileol - echo -e "${dl_url}\n" - exit ${exitcode} - else - fn_printokeol - fi -else - echo -e "${dl_filename} already exists...\c" - fn_dl_md5 - while true; do - read -e -i "n" -p "Download again? [y/N]" yn - case $yn in - [Yy]* ) fn_dl; retry_dl=1;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac - done -fi - -fn_dl_md5 +fn_dl_extract(){ +# extracts archives +: } - +# trap to remove file download if canceled before completed +fn_fetch_trap() { + echo "" + fn_printinfomationnl "Cancelling download" + sleep 1 + fn_printinfomation "Removing ${filename}" + rm -f "${filedir}/${filename}" +} # Downloads file using curl and run it if required # fn_fetch_file "fileurl" "filedir" "filename" "run" "force" "md5" @@ -79,12 +56,13 @@ filename=${3} run=${4:-0} force=${5:-0} md5=${6} + # If the file is missing, then download if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then mkdir -p "${filedir}" fi - echo -e " fetching ${filename}...\c" + echo -ne " fetching ${filename}...\c" # Check curl exists and use available path curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" for curlcmd in ${curlpaths} @@ -95,9 +73,12 @@ if [ ! -f "${filedir}/${filename}" ]; then done # If curl exists download file if [ "$(basename ${curlcmd})" == "curl" ]; then + # trap to remove part downloaded files + trap fn_fetch_trap EXIT + # if larger file shows progress bar - if [ "${filename}" == *".tar"* ]; then - curlfetch=$(${curlcmd} --progress-bar -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) + if [[ $filename == *"tar"* ]]; then + curlfetch=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") else curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) fi @@ -108,7 +89,9 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else fn_printokeol - fi + fi + # remove trap + trap - SIGINT SIGQUIT SIGTSTP else fn_printfaileol echo "Curl is not installed!" From 79b0389642a2164876b372a35965a0db10cf4ab8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 17 Feb 2016 23:02:54 +0000 Subject: [PATCH 048/643] looks better during install --- functions/check_steamcmd.sh | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index 8e5f83544..4c65ec557 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -8,14 +8,15 @@ lgsm_version="160316" fn_install_steamcmd(){ -echo "Installing steamCMD..." +echo "Installing steamCMD" if [ ! -d "${steamcmddir}" ]; then mkdir -v "${steamcmddir}" fi fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "${steamcmddir}" "steamcmd_linux.tar.gz" tar --verbose -zxf "${steamcmddir}/steamcmd_linux.tar.gz" -C "${steamcmddir}" rm -v "${steamcmddir}/steamcmd_linux.tar.gz" -chmod +x "${steamcmddir}/steamcmd.sh" +chmod +x "${steamcmddir}/steamcmd.sh" +echo "" } @@ -43,13 +44,20 @@ fi fn_check_steamcmd_sh(){ # Checks if SteamCMD exists when starting or updating a server. -# Re-installs if missing. +# Installs if missing. steamcmddir="${rootdir}/steamcmd" if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then - fn_printwarnnl "SteamCMD is missing" - fn_scriptlog "SteamCMD is missing" - sleep 1 - fn_install_steamcmd + if [ "${function_selfname}" == "command_install.sh" ]; then + fn_install_steamcmd + else + fn_printwarnnl "SteamCMD is missing" + fn_scriptlog "SteamCMD is missing" + sleep 1 + fn_install_steamcmd + fi +elif [ "${function_selfname}" == "command_install.sh" ]; then + fn_printinfomation "SteamCMD is already installed..." + fn_printokeol fi } From ca1e4e1af68e9cc8f10edbfda623008e79c70a12 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 17 Feb 2016 23:08:37 +0000 Subject: [PATCH 049/643] check SteamCMD now using functions split this file in to smaller functions and improved the look for the installer --- functions/check_steamcmd.sh | 121 ++++++++++++++++++++++-------------- 1 file changed, 73 insertions(+), 48 deletions(-) diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index 7bb6d8140..cd8ab4f39 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -2,64 +2,89 @@ # LGSM check_steamcmd.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="281215" +lgsm_version="160316" -# Description: Downloads SteamCMD on install and checks if missing before running functions that require SteamCMD +# Description: Checks SteamCMD is installed and correct. -if [ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 2004" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Teamspeak 3" ]; then - : # These servers do not require SteamCMD. Check is skipped. +fn_install_steamcmd(){ +echo "Installing steamCMD" +if [ ! -d "${steamcmddir}" ]; then + mkdir -v "${steamcmddir}" +fi +curl=$(curl --fail -o "${steamcmddir}/steamcmd_linux.tar.gz" "http://media.steampowered.com/client/steamcmd_linux.tar.gz" 2>&1) +exitcode=$? +echo -e "downloading steamcmd_linux.tar.gz...\c" +if [ $exitcode -eq 0 ]; then + fn_printokeol else - # Checks steamuser is setup. - if [ "${steamuser}" == "username" ]; then + fn_printfaileol + echo "${curl}" + echo -e "${githuburl}\n" + exit $exitcode +fi +tar --verbose -zxf "${steamcmddir}/steamcmd_linux.tar.gz" -C "${steamcmddir}" +rm -v "${steamcmddir}/steamcmd_linux.tar.gz" +chmod +x "${steamcmddir}/steamcmd.sh" +echo "" +} + + +fn_check_steamcmd_user(){ +# Checks steamuser is setup. +if [ "${steamuser}" == "username" ]; then fn_printfailnl "Steam login not set. Update steamuser." echo " * Change steamuser=\"username\" to a valid steam login." - if [ -d ${scriptlogdir} ]; then + if [ -d "${scriptlogdir}" ]; then fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login." exit 1 fi +fi +# Anonymous user is set if steamuser is missing +if [ -z "${steamuser}" ]; then + fn_printwarnnl "Steam login not set. Using anonymous login." + if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "Steam login not set. Using anonymous login." fi - if [ -z "${steamuser}" ]; then - fn_printwarnnl "Steam login not set. Using anonymous login." - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "Steam login not set. Using anonymous login." - fi - steamuser="anonymous" - steampass="" - sleep 2 - fi - # Checks if SteamCMD exists when starting or updating a server. - # Re-installs if missing. - steamcmddir="${rootdir}/steamcmd" - if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then + steamuser="anonymous" + steampass="" + sleep 2 +fi +} + +fn_check_steamcmd_sh(){ +# Checks if SteamCMD exists when starting or updating a server. +# Installs if missing. +steamcmddir="${rootdir}/steamcmd" +if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then + if [ "${function_selfname}" == "command_install.sh" ]; then + fn_install_steamcmd + else fn_printwarnnl "SteamCMD is missing" - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "SteamCMD is missing" - fi + fn_scriptlog "SteamCMD is missing" sleep 1 - if [ ! -d "${steamcmddir}" ]; then - mkdir -v "${steamcmddir}" - fi - curl=$(curl --fail -o "${steamcmddir}/steamcmd_linux.tar.gz" "http://media.steampowered.com/client/steamcmd_linux.tar.gz" 2>&1) - exitcode=$? - echo -e "downloading steamcmd_linux.tar.gz...\c" - if [ $exitcode -eq 0 ]; then - fn_printokeol - else - fn_printfaileol - echo "${curl}" - echo -e "${githuburl}\n" - exit $exitcode - fi - tar --verbose -zxf "${steamcmddir}/steamcmd_linux.tar.gz" -C "${steamcmddir}" - rm -v "${steamcmddir}/steamcmd_linux.tar.gz" - chmod +x "${steamcmddir}/steamcmd.sh" - fi - if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then - # Checks that steamcmd is working correctly and will prompt Steam Guard if required. - "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit - if [ $? -ne 0 ]; then - fn_printfailurenl "Error running SteamCMD" - fi - fi + fn_install_steamcmd + fi +elif [ "${function_selfname}" == "command_install.sh" ]; then + fn_printinfomation "SteamCMD is already installed..." + fn_printokeol fi +} + +fn_check_steamcmd_guard(){ +if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then + # Checks that steamcmd is working correctly and will prompt Steam Guard if required. + "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit + if [ $? -ne 0 ]; then + fn_printfailurenl "Error running SteamCMD" + fi +fi +} + +if [ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 2004" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Teamspeak 3" ]; then + : # These servers do not require SteamCMD. Check is skipped. +else + fn_check_steamcmd_user + fn_check_steamcmd_sh + fn_check_steamcmd_guard +fi \ No newline at end of file From 64686921ddc3239acb4eb992fb3c22dd03ee1fc0 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Thu, 18 Feb 2016 13:43:52 +0100 Subject: [PATCH 050/643] Support for exim and sendmail mail servers Fixes #695, displayed error if another mail client was installed. Should fix it for any mail server that makes a /usr/bin/mailx file, displaying a nice package check if exim or sendmail (very popular) are installed :) --- functions/check_deps.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/functions/check_deps.sh b/functions/check_deps.sh index 3f9312024..7c16f7192 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -40,10 +40,16 @@ fi fn_deps_email(){ # Adds postfix to required dependencies if email notification is enabled if [ "${emailnotification}" == "on" ]; then - if [ -n "$(command -v dpkg-query)" ]; then - array_deps_required+=( mailutils postfix ) - elif [ -n "$(command -v yum)" ]; then - array_deps_required+=( mailx postfix ) + if [ -d /etc/exim4 ]; then + array_deps_required+=( exim4 ) + elif [ -d /etc/sendmail ]; then + array_deps_required+=( sendmail ) + elif [ ! -f /usr/bin/mailx ]; then + if [ -n "$(command -v dpkg-query)" ]; then + array_deps_required+=( mailutils postfix ) + elif [ -n "$(command -v yum)" ]; then + array_deps_required+=( mailx postfix ) + fi fi fi } @@ -201,4 +207,4 @@ elif [ -n "$(command -v yum)" ]; then fi fn_deps_email fn_check_loop -fi \ No newline at end of file +fi From 1b294aad6947b255775b534d8dfa49100b8c91e5 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 00:40:37 +0100 Subject: [PATCH 051/643] Removing mailx detection so it can add required packages check anyways --- functions/check_deps.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/functions/check_deps.sh b/functions/check_deps.sh index 7c16f7192..37236aad0 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -44,12 +44,10 @@ if [ "${emailnotification}" == "on" ]; then array_deps_required+=( exim4 ) elif [ -d /etc/sendmail ]; then array_deps_required+=( sendmail ) - elif [ ! -f /usr/bin/mailx ]; then - if [ -n "$(command -v dpkg-query)" ]; then - array_deps_required+=( mailutils postfix ) - elif [ -n "$(command -v yum)" ]; then - array_deps_required+=( mailx postfix ) - fi + elif [ -n "$(command -v dpkg-query)" ]; then + array_deps_required+=( mailutils postfix ) + elif [ -n "$(command -v yum)" ]; then + array_deps_required+=( mailx postfix ) fi fi } From a7c5886cec730814013e1fe0ab3cac027916804b Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 01:01:20 +0100 Subject: [PATCH 052/643] Version number --- functions/check_deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/check_deps.sh b/functions/check_deps.sh index 37236aad0..f6538bd63 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -2,7 +2,7 @@ # LGSM check_deps.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="060216" +lgsm_version="190216" # Description: Checks that the requires dependencies are installed for LGSM. From d58b83bb4aabf028399b427f3b71d7932543ef0e Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 01:37:44 +0100 Subject: [PATCH 053/643] Added fastdl folder --- GarrysMod/gmodserver | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 363eb01c8..4e62e63a5 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="190216" #### Variables #### @@ -70,6 +70,7 @@ selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/garrysmod" +addonsdir="${systemdir}/addons" executabledir="${filesdir}" executable="./srcds_run" servercfg="${servicename}.cfg" From 490dbc55fbf25a684f5d7ab20946cae4caa025bc Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 01:39:37 +0100 Subject: [PATCH 054/643] Fastdl creator --- functions/command_fastdl.sh | 209 ++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 functions/command_fastdl.sh diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh new file mode 100644 index 000000000..1c25c310e --- /dev/null +++ b/functions/command_fastdl.sh @@ -0,0 +1,209 @@ +#!/bin/bash +# LGSM command_fastdl function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: http://gameservermanagers.com +lgsm_version="190216" + +# Description: Creates a FastDL folder + +local modulename="FastDL Creator" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh + +# Directories +fastdldir="${rootdir}/fastdl" +# Server lua autorun dir, used to autorun lua on client connect to the server +luasvautorundir="${systemdir}/lua/audoturn/server" +luafastdlfile="lgsm_cl_force_fastdl.lua" +luafastdlfullpath="${luasvautorundir}/${luafastdlfile}" + +fn_fastdl_init(){ +# User confirmation for starting process +echo "Generate a FastDL Folder ?" +while true; do + read -p "Continue? [y/N]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) exit;; + * ) echo "Please answer yes or no.";; + esac +done +# Create FastDL folder if it doesn't exit +if [ ! -d "${fastdldir}" ]; then + echo "Creating FastDL directory" + mkdir -v "${fastdldir}" + sleep 1 +else + echo "Updating FastDL..." +fi +# Ask for lua resource add file use +echo "Do you wish to use a lua file to force clients to download FastDL content ?" +echo "It can be necessary for addons devs that forgot about registering their files to be downloaded through FastDL" +while true; do + read -p "Continue? [y/n]" yn + case $yn in + [Yy]* ) luaressource="on"; break;; + [Nn]* ) luaressource="off"; return 1;; + * ) echo "Please answer yes or no.";; + esac +done +} + +fn_gmod_fastdl(){ +# Copy all needed files for fastDL +echo "Gathering all needed FastDL files..." +sleep 1 + +cd "${systemdir}" + +# Map Files +echo "Copying map files" +sleep 1 +find . -name '*.bsp' | cpio -updm "${fastdldir}" +echo "Done" +sleep 1 + +# Materials +echo "Copying Materials" +sleep 1 +find . -name '*.vtf' | cpio -updm "${fastdldir}" +find . -name '*.vmt' | cpio -updm "${fastdldir}" +echo "Done" +sleep 1 + +# Models +echo "Copying Models" +sleep 1 +find . -name '*.vtx' | cpio -updm "${fastdldir}" +find . -name '*.vvd' | cpio -updm "${fastdldir}" +find . -name '*.mdl' | cpio -updm "${fastdldir}" +find . -name '*.phy' | cpio -updm "${fastdldir}" +echo "Done" +sleep 1 + +# Particles +echo "Copying Particles" +sleep 1 +find . -name '*.pcf' | cpio -updm "${fastdldir}" +echo "Done" +sleep 1 + +# Sounds +echo "Copying Sounds" +sleep 1 +find . -name '*.wav' | cpio -updm "${fastdldir}" +find . -name '*.mp3' | cpio -updm "${fastdldir}" +find . -name '*.ogg' | cpio -updm "${fastdldir}" +echo "Done" +sleep 1 + +# Resources (mostly fonts) +echo "Copying fonts and png" +sleep 1 +find . -name '*.otf' | cpio -updm "${fastdldir}" +find . -name '*.ttf' | cpio -updm "${fastdldir}" +find . -name '*.png' | cpio -updm "${fastdldir}" +echo "Done" +sleep 1 + +# Going back to scriptfolder to avoid mistakes +cd ${rootdir} + +# Correct addons folder structure +if [ -d "${fastdldir}/addons" ]; then + echo "Possible FastDL files found into addons" + echo "Moving those files to their correct folder" + sleep 2 + cp -Rf ${fastdldir}/addons/*/* "${fastdldir}" + rm -R "${fastdldir}/addons" + echo "Done" + sleep 1 +fi + +# Correct content that may be into a lua folder by mistake like some darkrpmodification addons +if [ -d "${fastdldir}/lua" ]; then + echo "Some FastDL files (often addons in darkrpmodifications) may be in the wrong folder" + sleep 1 + echo "Copying those files to their hopefully correct locations" + sleep 1 + cp -Rf "${fastdldir}/lua/"* "${fastdldir}" + echo "Done" + sleep 1 +fi +} + + +# bzip2 compression +fn_check_bzip2(){ +# Returns true if not installed +if [ -z "$(command -v bzip2)" ]; then + bzip2installed="0" + echo "WARNING bzip2 packed is not installed !" + sleep 2 + echo "You can't compress your FastDL files !" + sleep 2 + echo "Loading time won't be as good as possible for your players." + sleep 2 + echo "It's advised that your install bzip2 and re-run the fastdl command." + sleep 3 +else + bzip2installed="1" +fi +} + +fn_fastdl_bzip2(){ +echo "Do you want to compress files using bzip2 for even faster client download ?" +echo "It may take a while..." + while true; do + read -p "Continue? [y/N]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) exit;; + * ) echo "Please answer yes or no.";; + esac + done + +echo "Compressing files using bzip2..." +sleep 2 + +# bzip2 all files that are not already compressed (keeping original files) +find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -k \{\} \; +echo "bzip2 compression done" +sleep 1 +} + +# Function to implement +fn_lua_fastdl(){ +if [ luaressource="off" == "on" ]; then + if [ -f "${luafastdlfullpath}" ]; then + echo "Removing " +} + +fn_fastdl_completed(){ +echo "----------------------------------" +echo "Congratulations, it's done" +echo "Now you should configure your HTTP server to target the fastdl folder that was created" +echo "Or copy files to an external server" +echo "Don't forget to change your sv_downloadurl accordingly in ${servercfgfullpath}" +if [ "$bzip2installed" == "0" ]; then +echo "By the way, you'd better install bzip2 an re-run this command" +fi +echo "----------------------------------" +exit +} + +# Game checking +# Garry's Mod +if [ "${gamename}" == "Garry's Mod" ]; then + fn_fastdl_init + fn_gmod_fastdl + fn_check_bzip2 + if [ "${bzip2installed}" == "1" ]; then + fn_fastdl_bzip2 + fi + fn_lua_fastdl + fn_fastdl_completed + exit +fi From 1859394bbfebe2516559a286e0abc40543ab6eb6 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 01:41:17 +0100 Subject: [PATCH 055/643] Added fastdl command --- functions/core_functions.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 7b0f148cd..a17a1b898 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -2,7 +2,7 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="170116" +lgsm_version="190216" # Description: Defines all functions to allow download and execution of functions using fn_runfunction. # This function is called first before any other function. Without this file other functions would not load. @@ -85,6 +85,11 @@ functionfile="${FUNCNAME}" fn_runfunction } +command_fastdl.sh(){ +functionfile="${FUNCNAME}" +fn_runfunction +} + command_ts3_server_pass.sh(){ functionfile="${FUNCNAME}" fn_runfunction From ec6ab23409c9d39104e716e391f3ef7e6c25f823 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 01:45:00 +0100 Subject: [PATCH 056/643] Added gmod getopt specific + fastdl --- functions/core_getopt.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index 95196d0ef..c5b6916c3 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -206,6 +206,8 @@ case "$getopt" in fn_autoinstall;; dd|depsdetect) command_dev_detect_deps.sh;; + fd|fastdl) + command_fastdl.sh;; *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" @@ -414,6 +416,8 @@ if [ "${gamename}" == "Mumble" ]; then fn_getopt_mumble elif [ "${gamename}" == "Teamspeak 3" ]; then fn_getopt_teamspeak3 +elif [ "${gamename}" == "Garry's Mod" ]; then + fn_getopt_gmodserver elif [ "${engine}" == "unreal2" ]; then if [ "${gamename}" == "Unreal Tournament 2004" ]; then fn_getopt_ut2k4 @@ -424,4 +428,4 @@ elif [ "${engine}" == "unreal" ]; then fn_getopt_unreal else fn_getopt_generic -fi \ No newline at end of file +fi From 4a49c05a5fff922cc50343fdcd9d712d5bdecbe2 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 02:36:05 +0100 Subject: [PATCH 057/643] lua file resource generator and tweaks --- functions/command_fastdl.sh | 44 +++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 1c25c310e..5d9cd5ae3 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -13,7 +13,8 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh # Directories -fastdldir="${rootdir}/fastdl" +webdir="${rootdir}/www" +fastdldir="${webdir}/fastdl" # Server lua autorun dir, used to autorun lua on client connect to the server luasvautorundir="${systemdir}/lua/audoturn/server" luafastdlfile="lgsm_cl_force_fastdl.lua" @@ -31,6 +32,10 @@ while true; do esac done # Create FastDL folder if it doesn't exit +if [ ! -d "${webdir}" ]; then + echo "Creating www directory" + mkdir -v "${webdir}" + sleep 1 if [ ! -d "${fastdldir}" ]; then echo "Creating FastDL directory" mkdir -v "${fastdldir}" @@ -39,13 +44,13 @@ else echo "Updating FastDL..." fi # Ask for lua resource add file use -echo "Do you wish to use a lua file to force clients to download FastDL content ?" -echo "It can be necessary for addons devs that forgot about registering their files to be downloaded through FastDL" +echo "Do you wish to generate a lua file to force clients to download all FastDL content ?" +echo "It is useful for many addons where devs didn't register their files to be downloaded through FastDL." while true; do read -p "Continue? [y/n]" yn case $yn in [Yy]* ) luaressource="on"; break;; - [Nn]* ) luaressource="off"; return 1;; + [Nn]* ) luaressource="off"; return 0;; * ) echo "Please answer yes or no.";; esac done @@ -174,19 +179,40 @@ echo "bzip2 compression done" sleep 1 } -# Function to implement +# Generate lua file that will force download any file into the FastDL folder fn_lua_fastdl(){ -if [ luaressource="off" == "on" ]; then +# Remove lua file if luaressource is turned off +if [ ${luaressource} == "off" ]; then if [ -f "${luafastdlfullpath}" ]; then - echo "Removing " + echo "Removing download enforcer" + sleep 1 + rm -R "${luafastdlfullpath}" + fi +fi +if [ ${luaressource == "on" ]; then + if [ -f "${luafastdlfullpath}" ]; then + echo "Removing old download enforcer" + sleep 1 + rm "${luafastdlfullpath}" + fi + echo "Generating new download enforcer" + sleep 1 + find "${fastdldir}" \( -name "." ! -name "*.bz2" \) -printf '%P\n' | while read line; do + echo "resource.AddFile("\""${line}"\"")" >> "${luafastdlfullpath}" + done + echo "Download enforcer generated" + sleep 1 +fi } fn_fastdl_completed(){ echo "----------------------------------" echo "Congratulations, it's done" -echo "Now you should configure your HTTP server to target the fastdl folder that was created" +echo "Now you should configure your HTTP server to target the fastdl folder that was created in ${fastdldir}" echo "Or copy files to an external server" echo "Don't forget to change your sv_downloadurl accordingly in ${servercfgfullpath}" +echo "You may want to use the www folder to host a loadingurl too," +echo "for that purpose, just make a loadingurl folder next to the fastdl folder and put your loadingurl in it" if [ "$bzip2installed" == "0" ]; then echo "By the way, you'd better install bzip2 an re-run this command" fi @@ -203,7 +229,7 @@ if [ "${gamename}" == "Garry's Mod" ]; then if [ "${bzip2installed}" == "1" ]; then fn_fastdl_bzip2 fi - fn_lua_fastdl + fn_lua_fastdl fn_fastdl_completed exit fi From 53777c59ecebde52e2c3dd8ecea90045bd2a2cd6 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 02:41:08 +0100 Subject: [PATCH 058/643] missing fi --- functions/command_fastdl.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 5d9cd5ae3..5769d7beb 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -36,6 +36,7 @@ if [ ! -d "${webdir}" ]; then echo "Creating www directory" mkdir -v "${webdir}" sleep 1 +fi if [ ! -d "${fastdldir}" ]; then echo "Creating FastDL directory" mkdir -v "${fastdldir}" From fde1c3a9abfab3db29deec8d48f5b3f38095bffb Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 02:43:05 +0100 Subject: [PATCH 059/643] fixed syntax --- functions/command_fastdl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 5769d7beb..8eef409cf 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -183,14 +183,14 @@ sleep 1 # Generate lua file that will force download any file into the FastDL folder fn_lua_fastdl(){ # Remove lua file if luaressource is turned off -if [ ${luaressource} == "off" ]; then +if [ "${luaressource}" == "off" ]; then if [ -f "${luafastdlfullpath}" ]; then echo "Removing download enforcer" sleep 1 rm -R "${luafastdlfullpath}" fi fi -if [ ${luaressource == "on" ]; then +if [ "${luaressource}"" == "on" ]; then if [ -f "${luafastdlfullpath}" ]; then echo "Removing old download enforcer" sleep 1 From c875598a5ade6a26bf42ad077a27ef774826d5fb Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 02:45:20 +0100 Subject: [PATCH 060/643] double quotes and stuff --- functions/command_fastdl.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 8eef409cf..4ba97046e 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -115,14 +115,14 @@ echo "Done" sleep 1 # Going back to scriptfolder to avoid mistakes -cd ${rootdir} +cd "${rootdir}" # Correct addons folder structure if [ -d "${fastdldir}/addons" ]; then echo "Possible FastDL files found into addons" echo "Moving those files to their correct folder" sleep 2 - cp -Rf ${fastdldir}/addons/*/* "${fastdldir}" + cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" rm -R "${fastdldir}/addons" echo "Done" sleep 1 @@ -190,7 +190,7 @@ if [ "${luaressource}" == "off" ]; then rm -R "${luafastdlfullpath}" fi fi -if [ "${luaressource}"" == "on" ]; then +if [ "${luaressource}" == "on" ]; then if [ -f "${luafastdlfullpath}" ]; then echo "Removing old download enforcer" sleep 1 From 4695b10cfd116d1001a54cca89e0c8a3ed02a754 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 02:51:01 +0100 Subject: [PATCH 061/643] exit/return fixes --- functions/command_fastdl.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 4ba97046e..1182bdd18 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -31,7 +31,7 @@ while true; do * ) echo "Please answer yes or no.";; esac done -# Create FastDL folder if it doesn't exit +# Create FastDL folder if it doesn't exist if [ ! -d "${webdir}" ]; then echo "Creating www directory" mkdir -v "${webdir}" @@ -166,7 +166,7 @@ echo "It may take a while..." read -p "Continue? [y/N]" yn case $yn in [Yy]* ) break;; - [Nn]* ) exit;; + [Nn]* ) return 0;; * ) echo "Please answer yes or no.";; esac done @@ -218,7 +218,6 @@ if [ "$bzip2installed" == "0" ]; then echo "By the way, you'd better install bzip2 an re-run this command" fi echo "----------------------------------" -exit } # Game checking From 298caab68f92e9e4311d11a04b89647b5f15bb2d Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 03:58:26 +0100 Subject: [PATCH 062/643] many improvements to test --- functions/command_fastdl.sh | 168 +++++++++++++++++++++++------------- 1 file changed, 106 insertions(+), 62 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 1182bdd18..5a8166910 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -15,14 +15,17 @@ check.sh # Directories webdir="${rootdir}/www" fastdldir="${webdir}/fastdl" +addonsdir="${systemdir}/addons" # Server lua autorun dir, used to autorun lua on client connect to the server luasvautorundir="${systemdir}/lua/audoturn/server" luafastdlfile="lgsm_cl_force_fastdl.lua" luafastdlfullpath="${luasvautorundir}/${luafastdlfile}" fn_fastdl_init(){ -# User confirmation for starting process -echo "Generate a FastDL Folder ?" +# User confirmation +fn_printdots "Welcome to LGSM's FastDL generator" +fn_scriptlog "Started FastDL creation" +sleep 1 while true; do read -p "Continue? [y/N]" yn case $yn in @@ -31,24 +34,62 @@ while true; do * ) echo "Please answer yes or no.";; esac done -# Create FastDL folder if it doesn't exist +fn_scriptlog "Initiating FastDL creation" + +# Check and create folders if [ ! -d "${webdir}" ]; then - echo "Creating www directory" + fn_printinfo "Creating www directory..." + sleep 0.5 mkdir -v "${webdir}" sleep 1 + fn_scriptlog "FastDL created ${webdir}" fi if [ ! -d "${fastdldir}" ]; then - echo "Creating FastDL directory" + newfastdl=1 + fn_printinfo "Creating FastDL directory..." + sleep 0.5 mkdir -v "${fastdldir}" sleep 1 + fn_scriptlog "FastDL created ${fastdldir}" else - echo "Updating FastDL..." + newfastdl=0 fi -# Ask for lua resource add file use -echo "Do you wish to generate a lua file to force clients to download all FastDL content ?" +} + +fn_fastdl_config(){ +fn_printinfo "Configuration..." +fn_scriptlog "Configuration" +sleep 2 +if [ ${newfastdl} == 1 ]; then + fn_printinfo "Do you wish to clear old FastDL files?" + echo "(Useful if some files changed)" + while true; do + read -p "Clear old FastDL? [y/n]" yn + case $yn in + [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; break;; + [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled" break;; + * ) echo "Please answer yes or no.";; + esac + done +fi +echo "Compress files using bzip2 for faster client download?" +echo "(It may take a while)" +while true; do + read -p "Use bzip2? [y/n]" yn + case $yn in + [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; break;; + [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled" break;; + * ) echo "Please answer yes or no.";; + esac +done +} + +fn_fastdl_gmod_config(){ +# Ask for download enforcer using lua addfile resource generator +echo "Do you wish to force clients to downloading the whole FastDL content?" echo "It is useful for many addons where devs didn't register their files to be downloaded through FastDL." while true; do - read -p "Continue? [y/n]" yn + read -p "Use download enforcer? [y/n]" yn case $yn in [Yy]* ) luaressource="on"; break;; [Nn]* ) luaressource="off"; return 0;; @@ -57,73 +98,83 @@ while true; do done } +fn_clearoldfastdl(){ +if [ clearoldfastdl == "on" ] + fn_printinfo "Clearing existing FastDL folder" + fn_scriptlog "Clearing existing FastDL folder" + sleep 1 + rm -R "${fastdldir}"/* +} + fn_gmod_fastdl(){ # Copy all needed files for fastDL -echo "Gathering all needed FastDL files..." +fn_printdots "Gathering all needed FastDL files..." sleep 1 -cd "${systemdir}" - # Map Files -echo "Copying map files" +fn_printdots "Copying map files..." +fn_scriptlog "Copying map files" sleep 1 -find . -name '*.bsp' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.bsp' | cpio -updm "${fastdldir}" echo "Done" sleep 1 # Materials -echo "Copying Materials" +fn_printdots "Copying materials" +fn_scriptlog "Copying materials" sleep 1 -find . -name '*.vtf' | cpio -updm "${fastdldir}" -find . -name '*.vmt' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.vtf' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.vmt' | cpio -updm "${fastdldir}" echo "Done" sleep 1 # Models -echo "Copying Models" +fn_printdots "Copying models" +fn_scriptlog "Copying models" sleep 1 -find . -name '*.vtx' | cpio -updm "${fastdldir}" -find . -name '*.vvd' | cpio -updm "${fastdldir}" -find . -name '*.mdl' | cpio -updm "${fastdldir}" -find . -name '*.phy' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.vtx' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.vvd' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.mdl' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.phy' | cpio -updm "${fastdldir}" echo "Done" sleep 1 # Particles -echo "Copying Particles" +fn_printdots "Copying particles" +fn_scriptlog "Copying particles" sleep 1 -find . -name '*.pcf' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.pcf' | cpio -updm "${fastdldir}" echo "Done" sleep 1 # Sounds -echo "Copying Sounds" +fn_printdots "Copying sounds" +fn_scriptlog "Copying sounds" sleep 1 -find . -name '*.wav' | cpio -updm "${fastdldir}" -find . -name '*.mp3' | cpio -updm "${fastdldir}" -find . -name '*.ogg' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.wav' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.mp3' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.ogg' | cpio -updm "${fastdldir}" echo "Done" sleep 1 # Resources (mostly fonts) -echo "Copying fonts and png" +fn_printdots "Copying fonts and png" +fn_scriptlog "Copying fonts and png" sleep 1 -find . -name '*.otf' | cpio -updm "${fastdldir}" -find . -name '*.ttf' | cpio -updm "${fastdldir}" -find . -name '*.png' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.otf' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.ttf' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.png' | cpio -updm "${fastdldir}" echo "Done" sleep 1 -# Going back to scriptfolder to avoid mistakes -cd "${rootdir}" - # Correct addons folder structure if [ -d "${fastdldir}/addons" ]; then echo "Possible FastDL files found into addons" - echo "Moving those files to their correct folder" + echo "Copying those files to their correct folder" sleep 2 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" - rm -R "${fastdldir}/addons" +# As we're not sure about the correct file structure, duplicate instead of remove +# rm -R "${fastdldir}/addons" echo "Done" sleep 1 fi @@ -146,38 +197,27 @@ fn_check_bzip2(){ # Returns true if not installed if [ -z "$(command -v bzip2)" ]; then bzip2installed="0" - echo "WARNING bzip2 packed is not installed !" - sleep 2 - echo "You can't compress your FastDL files !" + fn_printinfo "bzip2 is not installed !" + fn_scriptlog "bzip2 is not installed" + echo "We advise using it" + echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl#bzip2-compression" sleep 2 - echo "Loading time won't be as good as possible for your players." - sleep 2 - echo "It's advised that your install bzip2 and re-run the fastdl command." - sleep 3 else bzip2installed="1" fi } fn_fastdl_bzip2(){ -echo "Do you want to compress files using bzip2 for even faster client download ?" -echo "It may take a while..." - while true; do - read -p "Continue? [y/N]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) return 0;; - * ) echo "Please answer yes or no.";; - esac - done -echo "Compressing files using bzip2..." -sleep 2 - -# bzip2 all files that are not already compressed (keeping original files) -find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -k \{\} \; -echo "bzip2 compression done" -sleep 1 +if [ bzip2enable == "on" ]; then + fn_printinfo "Compressing files using bzip2..." + fn_scriptlog "Compressing files using bzip2..." + sleep 2 + # bzip2 all files that are not already compressed (keeping original files) + find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -k \{\} \; + fn_printinfo "bzip2 compression done" + fn_scriptlog "bzip2 compression done" + sleep 1 } # Generate lua file that will force download any file into the FastDL folder @@ -218,14 +258,18 @@ if [ "$bzip2installed" == "0" ]; then echo "By the way, you'd better install bzip2 an re-run this command" fi echo "----------------------------------" +echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl" } # Game checking # Garry's Mod if [ "${gamename}" == "Garry's Mod" ]; then + fn_check_bzip2 fn_fastdl_init + fn_fastdl_config + fn_fastdl_gmod_config + fn_clearoldfastdl fn_gmod_fastdl - fn_check_bzip2 if [ "${bzip2installed}" == "1" ]; then fn_fastdl_bzip2 fi From e7beeb76ac31891cea13b3bbcfe1f90506fe587e Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 04:07:28 +0100 Subject: [PATCH 063/643] missing fis and then and more fixes --- functions/command_fastdl.sh | 66 +++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 5a8166910..fd410400c 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -21,6 +21,20 @@ luasvautorundir="${systemdir}/lua/audoturn/server" luafastdlfile="lgsm_cl_force_fastdl.lua" luafastdlfullpath="${luasvautorundir}/${luafastdlfile}" +fn_check_bzip2(){ +# Returns true if not installed +if [ -z "$(command -v bzip2)" ]; then + bzip2installed="0" + fn_printinfo "bzip2 is not installed !" + fn_scriptlog "bzip2 is not installed" + echo "We advise using it" + echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl#bzip2-compression" + sleep 2 +else + bzip2installed="1" +fi +} + fn_fastdl_init(){ # User confirmation fn_printdots "Welcome to LGSM's FastDL generator" @@ -72,20 +86,22 @@ if [ ${newfastdl} == 1 ]; then esac done fi -echo "Compress files using bzip2 for faster client download?" -echo "(It may take a while)" -while true; do - read -p "Use bzip2? [y/n]" yn - case $yn in - [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; break;; - [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled" break;; - * ) echo "Please answer yes or no.";; - esac -done +if [ ${bzip2installed} == 1 ]; then + echo "Compress files using bzip2 for faster client download?" + echo "(It may take a while)" + while true; do + read -p "Use bzip2? [y/n]" yn + case $yn in + [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; break;; + [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled" break;; + * ) echo "Please answer yes or no.";; + esac + done +fi } fn_fastdl_gmod_config(){ -# Ask for download enforcer using lua addfile resource generator +# Prompt for download enforcer, that is using a .lua addfile resource generator echo "Do you wish to force clients to downloading the whole FastDL content?" echo "It is useful for many addons where devs didn't register their files to be downloaded through FastDL." while true; do @@ -98,12 +114,13 @@ while true; do done } -fn_clearoldfastdl(){ -if [ clearoldfastdl == "on" ] +fn_clear_old_fastdl(){ +if [ clearoldfastdl == "on" ]; then fn_printinfo "Clearing existing FastDL folder" fn_scriptlog "Clearing existing FastDL folder" sleep 1 - rm -R "${fastdldir}"/* + rm -R "${fastdldir}"/* +fi } fn_gmod_fastdl(){ @@ -191,25 +208,9 @@ if [ -d "${fastdldir}/lua" ]; then fi } - -# bzip2 compression -fn_check_bzip2(){ -# Returns true if not installed -if [ -z "$(command -v bzip2)" ]; then - bzip2installed="0" - fn_printinfo "bzip2 is not installed !" - fn_scriptlog "bzip2 is not installed" - echo "We advise using it" - echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl#bzip2-compression" - sleep 2 -else - bzip2installed="1" -fi -} - fn_fastdl_bzip2(){ -if [ bzip2enable == "on" ]; then +if [ ${bzip2enable} == "on" ]; then fn_printinfo "Compressing files using bzip2..." fn_scriptlog "Compressing files using bzip2..." sleep 2 @@ -218,6 +219,7 @@ if [ bzip2enable == "on" ]; then fn_printinfo "bzip2 compression done" fn_scriptlog "bzip2 compression done" sleep 1 +fi } # Generate lua file that will force download any file into the FastDL folder @@ -268,7 +270,7 @@ if [ "${gamename}" == "Garry's Mod" ]; then fn_fastdl_init fn_fastdl_config fn_fastdl_gmod_config - fn_clearoldfastdl + fn_clear_old_fastdl fn_gmod_fastdl if [ "${bzip2installed}" == "1" ]; then fn_fastdl_bzip2 From 7f28e93a25edbd0307a423f2cb27e5fcbeba594b Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 04:17:43 +0100 Subject: [PATCH 064/643] test user interface --- functions/command_fastdl.sh | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index fd410400c..f78fe3a23 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -37,7 +37,8 @@ fi fn_fastdl_init(){ # User confirmation -fn_printdots "Welcome to LGSM's FastDL generator" +fn_printok "Welcome to LGSM's FastDL generator" +echo -en "\n" fn_scriptlog "Started FastDL creation" sleep 1 while true; do @@ -52,7 +53,7 @@ fn_scriptlog "Initiating FastDL creation" # Check and create folders if [ ! -d "${webdir}" ]; then - fn_printinfo "Creating www directory..." + fn_printdots "Creating www directory..." sleep 0.5 mkdir -v "${webdir}" sleep 1 @@ -60,11 +61,13 @@ if [ ! -d "${webdir}" ]; then fi if [ ! -d "${fastdldir}" ]; then newfastdl=1 - fn_printinfo "Creating FastDL directory..." + fn_printdots "Creating FastDL directory..." sleep 0.5 mkdir -v "${fastdldir}" sleep 1 fn_scriptlog "FastDL created ${fastdldir}" + fn_printok "Folders created" + echo -en "\n" else newfastdl=0 fi @@ -73,27 +76,29 @@ fi fn_fastdl_config(){ fn_printinfo "Configuration..." fn_scriptlog "Configuration" +echo -en "\n" sleep 2 if [ ${newfastdl} == 1 ]; then - fn_printinfo "Do you wish to clear old FastDL files?" - echo "(Useful if some files changed)" + fn_printdots "Enable clearing old FastDL files? (Useful if some files changed)" while true; do read -p "Clear old FastDL? [y/n]" yn case $yn in - [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; break;; - [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled" break;; + [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_printok "Enabled"; break;; + [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_printok "Disabled"; break;; * ) echo "Please answer yes or no.";; esac done + echo -en "\n" fi if [ ${bzip2installed} == 1 ]; then - echo "Compress files using bzip2 for faster client download?" - echo "(It may take a while)" + fn_printdots "Enable file compressiong using bzip2?" + echo -en "\n" + echo "It may take a while but is advised for faster client download" while true; do read -p "Use bzip2? [y/n]" yn case $yn in - [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; break;; - [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled" break;; + [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "Enabled"; break;; + [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "Disabled;" break;; * ) echo "Please answer yes or no.";; esac done From 306e5c0041120c16959148e00fb8ba9709e2aeb7 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 04:31:00 +0100 Subject: [PATCH 065/643] correct printok --- functions/command_fastdl.sh | 59 +++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index f78fe3a23..35c99c77b 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -74,34 +74,37 @@ fi } fn_fastdl_config(){ -fn_printinfo "Configuration..." +fn_printinfo "Entering configuration" fn_scriptlog "Configuration" echo -en "\n" sleep 2 if [ ${newfastdl} == 1 ]; then - fn_printdots "Enable clearing old FastDL files? (Useful if some files changed)" + fn_printdots "Enable clearing old FastDL files?" + sleep 1 while true; do read -p "Clear old FastDL? [y/n]" yn case $yn in - [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_printok "Enabled"; break;; - [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_printok "Disabled"; break;; + [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_printok "Clearing Enabled"; break;; + [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_printok "Clearing Disabled"; break;; * ) echo "Please answer yes or no.";; esac done + sleep 1 echo -en "\n" fi if [ ${bzip2installed} == 1 ]; then - fn_printdots "Enable file compressiong using bzip2?" - echo -en "\n" - echo "It may take a while but is advised for faster client download" + fn_printdots "Enable file compression using bzip2?" + sleep 1 while true; do read -p "Use bzip2? [y/n]" yn case $yn in - [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "Enabled"; break;; - [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "Disabled;" break;; + [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "bzip2 Enabled"; break;; + [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled;" break;; * ) echo "Please answer yes or no.";; esac done + sleep 1 + echo -en "\n" fi } @@ -112,10 +115,12 @@ echo "It is useful for many addons where devs didn't register their files to be while true; do read -p "Use download enforcer? [y/n]" yn case $yn in - [Yy]* ) luaressource="on"; break;; - [Nn]* ) luaressource="off"; return 0;; + [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_printok "DL enforcer Enabled"; break;; + [Nn]* ) luaressource="off"; "DL enforcer Disabled"; fn_printok "DL enforcer Disabled"; break;; * ) echo "Please answer yes or no.";; esac + sleep1 + echo -en "\n" done } @@ -125,12 +130,16 @@ if [ clearoldfastdl == "on" ]; then fn_scriptlog "Clearing existing FastDL folder" sleep 1 rm -R "${fastdldir}"/* + fn_printok "Old FastDL folder cleared" + fn_scriptlog "Old FastDL folder cleared" + echo -en "\n" fi } fn_gmod_fastdl(){ # Copy all needed files for fastDL fn_printdots "Gathering all needed FastDL files..." +echo -en "\n" sleep 1 # Map Files @@ -138,7 +147,8 @@ fn_printdots "Copying map files..." fn_scriptlog "Copying map files" sleep 1 find "${addonsdir}" -name '*.bsp' | cpio -updm "${fastdldir}" -echo "Done" +fn_printok +echo -en "\n" sleep 1 # Materials @@ -147,7 +157,8 @@ fn_scriptlog "Copying materials" sleep 1 find "${addonsdir}" -name '*.vtf' | cpio -updm "${fastdldir}" find "${addonsdir}" -name '*.vmt' | cpio -updm "${fastdldir}" -echo "Done" +fn_printok +echo -en "\n" sleep 1 # Models @@ -158,7 +169,8 @@ find "${addonsdir}" -name '*.vtx' | cpio -updm "${fastdldir}" find "${addonsdir}" -name '*.vvd' | cpio -updm "${fastdldir}" find "${addonsdir}" -name '*.mdl' | cpio -updm "${fastdldir}" find "${addonsdir}" -name '*.phy' | cpio -updm "${fastdldir}" -echo "Done" +fn_printok +echo -en "\n" sleep 1 # Particles @@ -166,7 +178,8 @@ fn_printdots "Copying particles" fn_scriptlog "Copying particles" sleep 1 find "${addonsdir}" -name '*.pcf' | cpio -updm "${fastdldir}" -echo "Done" +fn_printok +echo -en "\n" sleep 1 # Sounds @@ -176,7 +189,8 @@ sleep 1 find "${addonsdir}" -name '*.wav' | cpio -updm "${fastdldir}" find "${addonsdir}" -name '*.mp3' | cpio -updm "${fastdldir}" find "${addonsdir}" -name '*.ogg' | cpio -updm "${fastdldir}" -echo "Done" +fn_printok +echo -en "\n" sleep 1 # Resources (mostly fonts) @@ -186,7 +200,8 @@ sleep 1 find "${addonsdir}" -name '*.otf' | cpio -updm "${fastdldir}" find "${addonsdir}" -name '*.ttf' | cpio -updm "${fastdldir}" find "${addonsdir}" -name '*.png' | cpio -updm "${fastdldir}" -echo "Done" +fn_printok +echo -en "\n" sleep 1 # Correct addons folder structure @@ -197,18 +212,18 @@ if [ -d "${fastdldir}/addons" ]; then cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" # As we're not sure about the correct file structure, duplicate instead of remove # rm -R "${fastdldir}/addons" - echo "Done" + fn_printok + echo -en "\n" sleep 1 fi # Correct content that may be into a lua folder by mistake like some darkrpmodification addons if [ -d "${fastdldir}/lua" ]; then - echo "Some FastDL files (often addons in darkrpmodifications) may be in the wrong folder" - sleep 1 - echo "Copying those files to their hopefully correct locations" + fn_printdots "Stupid filestructure fix" sleep 1 cp -Rf "${fastdldir}/lua/"* "${fastdldir}" - echo "Done" + fn_printok + echo -en "\n" sleep 1 fi } From 079dde953d86defce6018205142eafe40e8dae4d Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 04:34:46 +0100 Subject: [PATCH 066/643] test fix prompt --- functions/command_fastdl.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 35c99c77b..7b589be5c 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -27,6 +27,8 @@ if [ -z "$(command -v bzip2)" ]; then bzip2installed="0" fn_printinfo "bzip2 is not installed !" fn_scriptlog "bzip2 is not installed" + echo -en "\n" + sleep 1 echo "We advise using it" echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl#bzip2-compression" sleep 2 @@ -80,6 +82,7 @@ echo -en "\n" sleep 2 if [ ${newfastdl} == 1 ]; then fn_printdots "Enable clearing old FastDL files?" + echo "" sleep 1 while true; do read -p "Clear old FastDL? [y/n]" yn From 38fece3b0b09db0656a143e15788057a69cd1adc Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 04:37:02 +0100 Subject: [PATCH 067/643] test fix prompt 2 --- functions/command_fastdl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 7b589be5c..f52b041e2 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -96,10 +96,10 @@ if [ ${newfastdl} == 1 ]; then echo -en "\n" fi if [ ${bzip2installed} == 1 ]; then - fn_printdots "Enable file compression using bzip2?" + fn_printdots sleep 1 while true; do - read -p "Use bzip2? [y/n]" yn + read -p "Enable file compression using bzip2?? [Y/n]" Yn case $yn in [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "bzip2 Enabled"; break;; [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled;" break;; From 687153d889806f689afce4057fa6f3d8514ffec6 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 04:43:35 +0100 Subject: [PATCH 068/643] fix newfastDL + user iface --- functions/command_fastdl.sh | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index f52b041e2..2dc3cd033 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -7,7 +7,7 @@ lgsm_version="190216" # Description: Creates a FastDL folder -local modulename="FastDL Creator" +local modulename="FastDL" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh @@ -57,7 +57,7 @@ fn_scriptlog "Initiating FastDL creation" if [ ! -d "${webdir}" ]; then fn_printdots "Creating www directory..." sleep 0.5 - mkdir -v "${webdir}" + mkdir "${webdir}" sleep 1 fn_scriptlog "FastDL created ${webdir}" fi @@ -65,7 +65,7 @@ if [ ! -d "${fastdldir}" ]; then newfastdl=1 fn_printdots "Creating FastDL directory..." sleep 0.5 - mkdir -v "${fastdldir}" + mkdir "${fastdldir}" sleep 1 fn_scriptlog "FastDL created ${fastdldir}" fn_printok "Folders created" @@ -80,12 +80,10 @@ fn_printinfo "Entering configuration" fn_scriptlog "Configuration" echo -en "\n" sleep 2 -if [ ${newfastdl} == 1 ]; then - fn_printdots "Enable clearing old FastDL files?" - echo "" - sleep 1 +if [ ${newfastdl} == 0 ]; then + fn_printdots while true; do - read -p "Clear old FastDL? [y/n]" yn + read -p "Clear old FastDL files? [y/n]" yn case $yn in [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_printok "Clearing Enabled"; break;; [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_printok "Clearing Disabled"; break;; @@ -113,13 +111,12 @@ fi fn_fastdl_gmod_config(){ # Prompt for download enforcer, that is using a .lua addfile resource generator -echo "Do you wish to force clients to downloading the whole FastDL content?" -echo "It is useful for many addons where devs didn't register their files to be downloaded through FastDL." +fn_printdots while true; do - read -p "Use download enforcer? [y/n]" yn + read -p "Use client download enforcer? [y/n]" yn case $yn in - [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_printok "DL enforcer Enabled"; break;; - [Nn]* ) luaressource="off"; "DL enforcer Disabled"; fn_printok "DL enforcer Disabled"; break;; + [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_printok "Enforcer Enabled"; break;; + [Nn]* ) luaressource="off"; "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; * ) echo "Please answer yes or no.";; esac sleep1 From 8329b07f1f8445e066ac434b23c7ae54c7d7e90f Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 04:44:02 +0100 Subject: [PATCH 069/643] double ? --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 2dc3cd033..76027fb80 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -97,7 +97,7 @@ if [ ${bzip2installed} == 1 ]; then fn_printdots sleep 1 while true; do - read -p "Enable file compression using bzip2?? [Y/n]" Yn + read -p "Enable file compression using bzip2? [Y/n]" Yn case $yn in [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "bzip2 Enabled"; break;; [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled;" break;; From 0b6b6ea6244dbb6fa5d33e6a1aa6ca63cd6d2023 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 04:53:43 +0100 Subject: [PATCH 070/643] > /dev/null 2>&1 --- functions/command_fastdl.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 76027fb80..b8c1fa033 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -146,7 +146,7 @@ sleep 1 fn_printdots "Copying map files..." fn_scriptlog "Copying map files" sleep 1 -find "${addonsdir}" -name '*.bsp' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.bsp' | cpio -updm "${fastdldir}" > /dev/null 2>&1 fn_printok echo -en "\n" sleep 1 @@ -155,8 +155,8 @@ sleep 1 fn_printdots "Copying materials" fn_scriptlog "Copying materials" sleep 1 -find "${addonsdir}" -name '*.vtf' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.vmt' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.vtf' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.vmt' | cpio -updm "${fastdldir}" > /dev/null 2>&1 fn_printok echo -en "\n" sleep 1 @@ -165,10 +165,10 @@ sleep 1 fn_printdots "Copying models" fn_scriptlog "Copying models" sleep 1 -find "${addonsdir}" -name '*.vtx' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.vvd' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.mdl' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.phy' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.vtx' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.vvd' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.mdl' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.phy' | cpio -updm "${fastdldir}" > /dev/null 2>&1 fn_printok echo -en "\n" sleep 1 @@ -177,7 +177,7 @@ sleep 1 fn_printdots "Copying particles" fn_scriptlog "Copying particles" sleep 1 -find "${addonsdir}" -name '*.pcf' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.pcf' | cpio -updm "${fastdldir}" > /dev/null 2>&1 fn_printok echo -en "\n" sleep 1 @@ -186,9 +186,9 @@ sleep 1 fn_printdots "Copying sounds" fn_scriptlog "Copying sounds" sleep 1 -find "${addonsdir}" -name '*.wav' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.mp3' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.ogg' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.wav' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.mp3' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.ogg' | cpio -updm "${fastdldir}" > /dev/null 2>&1 fn_printok echo -en "\n" sleep 1 @@ -197,9 +197,9 @@ sleep 1 fn_printdots "Copying fonts and png" fn_scriptlog "Copying fonts and png" sleep 1 -find "${addonsdir}" -name '*.otf' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.ttf' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.png' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.otf' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.ttf' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.png' | cpio -updm "${fastdldir}" > /dev/null 2>&1 fn_printok echo -en "\n" sleep 1 @@ -235,7 +235,7 @@ if [ ${bzip2enable} == "on" ]; then fn_scriptlog "Compressing files using bzip2..." sleep 2 # bzip2 all files that are not already compressed (keeping original files) - find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -k \{\} \; + find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -k \{\} \; > /dev/null 2>&1 fn_printinfo "bzip2 compression done" fn_scriptlog "bzip2 compression done" sleep 1 From 1381bfca5ad3d735178b0f8d8caf40eb4862d8a8 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 04:57:14 +0100 Subject: [PATCH 071/643] /dev/null wrong idea, test --warning=none --- functions/command_fastdl.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index b8c1fa033..becdc3427 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -146,7 +146,7 @@ sleep 1 fn_printdots "Copying map files..." fn_scriptlog "Copying map files" sleep 1 -find "${addonsdir}" -name '*.bsp' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.bsp' | cpio -updm --warning=none "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -155,8 +155,8 @@ sleep 1 fn_printdots "Copying materials" fn_scriptlog "Copying materials" sleep 1 -find "${addonsdir}" -name '*.vtf' | cpio -updm "${fastdldir}" > /dev/null 2>&1 -find "${addonsdir}" -name '*.vmt' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.vtf' | cpio -updm --warning=none "${fastdldir}" +find "${addonsdir}" -name '*.vmt' | cpio -updm --warning=none "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -165,10 +165,10 @@ sleep 1 fn_printdots "Copying models" fn_scriptlog "Copying models" sleep 1 -find "${addonsdir}" -name '*.vtx' | cpio -updm "${fastdldir}" > /dev/null 2>&1 -find "${addonsdir}" -name '*.vvd' | cpio -updm "${fastdldir}" > /dev/null 2>&1 -find "${addonsdir}" -name '*.mdl' | cpio -updm "${fastdldir}" > /dev/null 2>&1 -find "${addonsdir}" -name '*.phy' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.vtx' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.vvd' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.mdl' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.phy' | cpio -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -177,7 +177,7 @@ sleep 1 fn_printdots "Copying particles" fn_scriptlog "Copying particles" sleep 1 -find "${addonsdir}" -name '*.pcf' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.pcf' | cpio -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -186,9 +186,9 @@ sleep 1 fn_printdots "Copying sounds" fn_scriptlog "Copying sounds" sleep 1 -find "${addonsdir}" -name '*.wav' | cpio -updm "${fastdldir}" > /dev/null 2>&1 -find "${addonsdir}" -name '*.mp3' | cpio -updm "${fastdldir}" > /dev/null 2>&1 -find "${addonsdir}" -name '*.ogg' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.wav' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.mp3' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.ogg' | cpio -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -197,9 +197,9 @@ sleep 1 fn_printdots "Copying fonts and png" fn_scriptlog "Copying fonts and png" sleep 1 -find "${addonsdir}" -name '*.otf' | cpio -updm "${fastdldir}" > /dev/null 2>&1 -find "${addonsdir}" -name '*.ttf' | cpio -updm "${fastdldir}" > /dev/null 2>&1 -find "${addonsdir}" -name '*.png' | cpio -updm "${fastdldir}" > /dev/null 2>&1 +find "${addonsdir}" -name '*.otf' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.ttf' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.png' | cpio -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -235,7 +235,7 @@ if [ ${bzip2enable} == "on" ]; then fn_scriptlog "Compressing files using bzip2..." sleep 2 # bzip2 all files that are not already compressed (keeping original files) - find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -k \{\} \; > /dev/null 2>&1 + find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -k \{\} \; fn_printinfo "bzip2 compression done" fn_scriptlog "bzip2 compression done" sleep 1 From b3a9c506aef31b8e92630da42ac50ba4eca42fea Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 05:01:55 +0100 Subject: [PATCH 072/643] quiet cpio --- functions/command_fastdl.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index becdc3427..432402760 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -146,7 +146,7 @@ sleep 1 fn_printdots "Copying map files..." fn_scriptlog "Copying map files" sleep 1 -find "${addonsdir}" -name '*.bsp' | cpio -updm --warning=none "${fastdldir}" +find "${addonsdir}" -name '*.bsp' | cpio --quiet -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -155,8 +155,8 @@ sleep 1 fn_printdots "Copying materials" fn_scriptlog "Copying materials" sleep 1 -find "${addonsdir}" -name '*.vtf' | cpio -updm --warning=none "${fastdldir}" -find "${addonsdir}" -name '*.vmt' | cpio -updm --warning=none "${fastdldir}" +find "${addonsdir}" -name '*.vtf' | cpio --quiet -updm "${fastdldir}" +find "${addonsdir}" -name '*.vmt' | cpio --quiet -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -165,10 +165,10 @@ sleep 1 fn_printdots "Copying models" fn_scriptlog "Copying models" sleep 1 -find "${addonsdir}" -name '*.vtx' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.vvd' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.mdl' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.phy' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.vtx' | cpio --quiet -updm "${fastdldir}" +find "${addonsdir}" -name '*.vvd' | cpio --quiet -updm "${fastdldir}" +find "${addonsdir}" -name '*.mdl' | cpio --quiet -updm "${fastdldir}" +find "${addonsdir}" -name '*.phy' | cpio --quiet -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -177,7 +177,7 @@ sleep 1 fn_printdots "Copying particles" fn_scriptlog "Copying particles" sleep 1 -find "${addonsdir}" -name '*.pcf' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.pcf' | cpio --quiet -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -186,9 +186,9 @@ sleep 1 fn_printdots "Copying sounds" fn_scriptlog "Copying sounds" sleep 1 -find "${addonsdir}" -name '*.wav' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.mp3' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.ogg' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.wav' | cpio --quiet -updm "${fastdldir}" +find "${addonsdir}" -name '*.mp3' | cpio --quiet -updm "${fastdldir}" +find "${addonsdir}" -name '*.ogg' | cpio --quiet -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 @@ -197,9 +197,9 @@ sleep 1 fn_printdots "Copying fonts and png" fn_scriptlog "Copying fonts and png" sleep 1 -find "${addonsdir}" -name '*.otf' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.ttf' | cpio -updm "${fastdldir}" -find "${addonsdir}" -name '*.png' | cpio -updm "${fastdldir}" +find "${addonsdir}" -name '*.otf' | cpio --quiet -updm "${fastdldir}" +find "${addonsdir}" -name '*.ttf' | cpio --quiet -updm "${fastdldir}" +find "${addonsdir}" -name '*.png' | cpio --quiet -updm "${fastdldir}" fn_printok echo -en "\n" sleep 1 From cd2b8efa19ac7c9650efdd4416d3246bb66ba7d6 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 05:05:29 +0100 Subject: [PATCH 073/643] fix variable --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 432402760..44d276d5a 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -125,7 +125,7 @@ done } fn_clear_old_fastdl(){ -if [ clearoldfastdl == "on" ]; then +if [ ${clearoldfastdl} == "on" ]; then fn_printinfo "Clearing existing FastDL folder" fn_scriptlog "Clearing existing FastDL folder" sleep 1 From 07294450a2cdb9e8c127de1e7e634c4fff20840c Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 05:42:26 +0100 Subject: [PATCH 074/643] better display & comments / silent bzip2 --- functions/command_fastdl.sh | 90 ++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 44d276d5a..69d91ae56 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -62,6 +62,7 @@ if [ ! -d "${webdir}" ]; then fn_scriptlog "FastDL created ${webdir}" fi if [ ! -d "${fastdldir}" ]; then + # No folder, won't ask for removing old ones newfastdl=1 fn_printdots "Creating FastDL directory..." sleep 0.5 @@ -71,19 +72,22 @@ if [ ! -d "${fastdldir}" ]; then fn_printok "Folders created" echo -en "\n" else + # Used to prompt for removing old files newfastdl=0 fi } fn_fastdl_config(){ +# Global settings for FastDL creation fn_printinfo "Entering configuration" fn_scriptlog "Configuration" echo -en "\n" sleep 2 +# Prompt for clearing old files if folder was already here if [ ${newfastdl} == 0 ]; then fn_printdots while true; do - read -p "Clear old FastDL files? [y/n]" yn + read -p "Clear old FastDL files? [y/N]" yN case $yn in [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_printok "Clearing Enabled"; break;; [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_printok "Clearing Disabled"; break;; @@ -93,9 +97,9 @@ if [ ${newfastdl} == 0 ]; then sleep 1 echo -en "\n" fi +# Prompt for using bzip2 if it's installed if [ ${bzip2installed} == 1 ]; then fn_printdots - sleep 1 while true; do read -p "Enable file compression using bzip2? [Y/n]" Yn case $yn in @@ -113,7 +117,7 @@ fn_fastdl_gmod_config(){ # Prompt for download enforcer, that is using a .lua addfile resource generator fn_printdots while true; do - read -p "Use client download enforcer? [y/n]" yn + read -p "Use client download enforcer? [Y/n]" Yn case $yn in [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_printok "Enforcer Enabled"; break;; [Nn]* ) luaressource="off"; "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; @@ -125,6 +129,7 @@ done } fn_clear_old_fastdl(){ +# Clearing old FastDL if user answered yes if [ ${clearoldfastdl} == "on" ]; then fn_printinfo "Clearing existing FastDL folder" fn_scriptlog "Clearing existing FastDL folder" @@ -138,7 +143,7 @@ fi fn_gmod_fastdl(){ # Copy all needed files for fastDL -fn_printdots "Gathering all needed FastDL files..." +fn_printdots "Gathering all needed files..." echo -en "\n" sleep 1 @@ -147,95 +152,97 @@ fn_printdots "Copying map files..." fn_scriptlog "Copying map files" sleep 1 find "${addonsdir}" -name '*.bsp' | cpio --quiet -updm "${fastdldir}" -fn_printok +fn_printok "Map files copied" echo -en "\n" sleep 1 # Materials -fn_printdots "Copying materials" +fn_printdots "Copying materials..." fn_scriptlog "Copying materials" sleep 1 find "${addonsdir}" -name '*.vtf' | cpio --quiet -updm "${fastdldir}" find "${addonsdir}" -name '*.vmt' | cpio --quiet -updm "${fastdldir}" -fn_printok +fn_printok "Materials copied" echo -en "\n" sleep 1 # Models -fn_printdots "Copying models" +fn_printdots "Copying models..." fn_scriptlog "Copying models" sleep 1 find "${addonsdir}" -name '*.vtx' | cpio --quiet -updm "${fastdldir}" find "${addonsdir}" -name '*.vvd' | cpio --quiet -updm "${fastdldir}" find "${addonsdir}" -name '*.mdl' | cpio --quiet -updm "${fastdldir}" find "${addonsdir}" -name '*.phy' | cpio --quiet -updm "${fastdldir}" -fn_printok +fn_printok "Models copied" echo -en "\n" sleep 1 # Particles -fn_printdots "Copying particles" +fn_printdots "Copying particles..." fn_scriptlog "Copying particles" sleep 1 find "${addonsdir}" -name '*.pcf' | cpio --quiet -updm "${fastdldir}" -fn_printok +fn_printok "Particles copied" echo -en "\n" sleep 1 # Sounds -fn_printdots "Copying sounds" +fn_printdots "Copying sounds..." fn_scriptlog "Copying sounds" sleep 1 find "${addonsdir}" -name '*.wav' | cpio --quiet -updm "${fastdldir}" find "${addonsdir}" -name '*.mp3' | cpio --quiet -updm "${fastdldir}" find "${addonsdir}" -name '*.ogg' | cpio --quiet -updm "${fastdldir}" -fn_printok +fn_printok "Sounds copied" echo -en "\n" sleep 1 # Resources (mostly fonts) -fn_printdots "Copying fonts and png" +fn_printdots "Copying fonts and png..." fn_scriptlog "Copying fonts and png" sleep 1 find "${addonsdir}" -name '*.otf' | cpio --quiet -updm "${fastdldir}" find "${addonsdir}" -name '*.ttf' | cpio --quiet -updm "${fastdldir}" find "${addonsdir}" -name '*.png' | cpio --quiet -updm "${fastdldir}" -fn_printok +fn_printok "Fonts and png copied" echo -en "\n" sleep 1 # Correct addons folder structure if [ -d "${fastdldir}/addons" ]; then - echo "Possible FastDL files found into addons" + fn_printinfo "Correcting file structure" + fn_scriptlog "Correcting file structure" + sleep 2 echo "Copying those files to their correct folder" sleep 2 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" -# As we're not sure about the correct file structure, duplicate instead of remove -# rm -R "${fastdldir}/addons" - fn_printok + # As we're not sure about the correct file structure, duplicate instead of remove + # rm -R "${fastdldir}/addons" + fn_printok "Corrected file structure" echo -en "\n" sleep 1 fi # Correct content that may be into a lua folder by mistake like some darkrpmodification addons if [ -d "${fastdldir}/lua" ]; then - fn_printdots "Stupid filestructure fix" + fn_printdots "Stupid file structure fix" sleep 1 cp -Rf "${fastdldir}/lua/"* "${fastdldir}" - fn_printok + fn_printok "Stupid file structure fixed" echo -en "\n" sleep 1 fi } fn_fastdl_bzip2(){ - +# Compressing using bzip2 if user said yes if [ ${bzip2enable} == "on" ]; then fn_printinfo "Compressing files using bzip2..." fn_scriptlog "Compressing files using bzip2..." sleep 2 # bzip2 all files that are not already compressed (keeping original files) - find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -k \{\} \; + find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -qk \{\} \; fn_printinfo "bzip2 compression done" fn_scriptlog "bzip2 compression done" sleep 1 @@ -244,7 +251,7 @@ fi # Generate lua file that will force download any file into the FastDL folder fn_lua_fastdl(){ -# Remove lua file if luaressource is turned off +# Remove lua file if luaressource is turned off and file exists if [ "${luaressource}" == "off" ]; then if [ -f "${luafastdlfullpath}" ]; then echo "Removing download enforcer" @@ -252,38 +259,43 @@ if [ "${luaressource}" == "off" ]; then rm -R "${luafastdlfullpath}" fi fi +# Remove old lua file and generate a new one if user said yes if [ "${luaressource}" == "on" ]; then if [ -f "${luafastdlfullpath}" ]; then - echo "Removing old download enforcer" + fn_printdots "Removing old download enforcer" sleep 1 rm "${luafastdlfullpath}" + fn_printok "Removed old download enforcer" + fn_scriptlog "Removed old download inforcer" + echo -en "\n" + sleep 1 fi - echo "Generating new download enforcer" + fn_printdots "Generating new download enforcer" + fn_scriptlog "Generating new download enforcer" sleep 1 + # Read all filenames and put them into a lua file at the right path find "${fastdldir}" \( -name "." ! -name "*.bz2" \) -printf '%P\n' | while read line; do echo "resource.AddFile("\""${line}"\"")" >> "${luafastdlfullpath}" done - echo "Download enforcer generated" + fn_printok "Download enforcer generated" + fn_scriptlog "Download enforcer generated" + echo -en "\n" sleep 1 fi } fn_fastdl_completed(){ -echo "----------------------------------" -echo "Congratulations, it's done" -echo "Now you should configure your HTTP server to target the fastdl folder that was created in ${fastdldir}" -echo "Or copy files to an external server" -echo "Don't forget to change your sv_downloadurl accordingly in ${servercfgfullpath}" -echo "You may want to use the www folder to host a loadingurl too," -echo "for that purpose, just make a loadingurl folder next to the fastdl folder and put your loadingurl in it" +# Finished message +fn_printok "Congratulations, it's done" +fn_scriptlog "FastDL job done" +echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl" +echo -en "\n" if [ "$bzip2installed" == "0" ]; then echo "By the way, you'd better install bzip2 an re-run this command" fi -echo "----------------------------------" -echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl" } -# Game checking +# Game checking and functions running # Garry's Mod if [ "${gamename}" == "Garry's Mod" ]; then fn_check_bzip2 @@ -292,10 +304,8 @@ if [ "${gamename}" == "Garry's Mod" ]; then fn_fastdl_gmod_config fn_clear_old_fastdl fn_gmod_fastdl - if [ "${bzip2installed}" == "1" ]; then - fn_fastdl_bzip2 - fi fn_lua_fastdl + fn_fastdl_bzip2 fn_fastdl_completed exit fi From 433c99ad64dd934f214792c8bf81e919cafb6cca Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:03:04 +0100 Subject: [PATCH 075/643] two main fixes & improved user experience --- functions/command_fastdl.sh | 72 ++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 69d91ae56..1f9941add 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -146,12 +146,13 @@ fn_gmod_fastdl(){ fn_printdots "Gathering all needed files..." echo -en "\n" sleep 1 - +# No choice to cd to the directory, as find can't then display relative folder +cd "${addonsdir}" # Map Files fn_printdots "Copying map files..." fn_scriptlog "Copying map files" sleep 1 -find "${addonsdir}" -name '*.bsp' | cpio --quiet -updm "${fastdldir}" +find . -name '*.bsp' | cpio --quiet -updm "${fastdldir}" fn_printok "Map files copied" echo -en "\n" sleep 1 @@ -160,8 +161,8 @@ sleep 1 fn_printdots "Copying materials..." fn_scriptlog "Copying materials" sleep 1 -find "${addonsdir}" -name '*.vtf' | cpio --quiet -updm "${fastdldir}" -find "${addonsdir}" -name '*.vmt' | cpio --quiet -updm "${fastdldir}" +find . -name '*.vtf' | cpio --quiet -updm "${fastdldir}" +find . -name '*.vmt' | cpio --quiet -updm "${fastdldir}" fn_printok "Materials copied" echo -en "\n" sleep 1 @@ -170,10 +171,10 @@ sleep 1 fn_printdots "Copying models..." fn_scriptlog "Copying models" sleep 1 -find "${addonsdir}" -name '*.vtx' | cpio --quiet -updm "${fastdldir}" -find "${addonsdir}" -name '*.vvd' | cpio --quiet -updm "${fastdldir}" -find "${addonsdir}" -name '*.mdl' | cpio --quiet -updm "${fastdldir}" -find "${addonsdir}" -name '*.phy' | cpio --quiet -updm "${fastdldir}" +find . -name '*.vtx' | cpio --quiet -updm "${fastdldir}" +find . -name '*.vvd' | cpio --quiet -updm "${fastdldir}" +find . -name '*.mdl' | cpio --quiet -updm "${fastdldir}" +find . -name '*.phy' | cpio --quiet -updm "${fastdldir}" fn_printok "Models copied" echo -en "\n" sleep 1 @@ -182,7 +183,7 @@ sleep 1 fn_printdots "Copying particles..." fn_scriptlog "Copying particles" sleep 1 -find "${addonsdir}" -name '*.pcf' | cpio --quiet -updm "${fastdldir}" +find . -name '*.pcf' | cpio --quiet -updm "${fastdldir}" fn_printok "Particles copied" echo -en "\n" sleep 1 @@ -191,9 +192,9 @@ sleep 1 fn_printdots "Copying sounds..." fn_scriptlog "Copying sounds" sleep 1 -find "${addonsdir}" -name '*.wav' | cpio --quiet -updm "${fastdldir}" -find "${addonsdir}" -name '*.mp3' | cpio --quiet -updm "${fastdldir}" -find "${addonsdir}" -name '*.ogg' | cpio --quiet -updm "${fastdldir}" +find . -name '*.wav' | cpio --quiet -updm "${fastdldir}" +find . -name '*.mp3' | cpio --quiet -updm "${fastdldir}" +find . -name '*.ogg' | cpio --quiet -updm "${fastdldir}" fn_printok "Sounds copied" echo -en "\n" sleep 1 @@ -202,12 +203,14 @@ sleep 1 fn_printdots "Copying fonts and png..." fn_scriptlog "Copying fonts and png" sleep 1 -find "${addonsdir}" -name '*.otf' | cpio --quiet -updm "${fastdldir}" -find "${addonsdir}" -name '*.ttf' | cpio --quiet -updm "${fastdldir}" -find "${addonsdir}" -name '*.png' | cpio --quiet -updm "${fastdldir}" +find . -name '*.otf' | cpio --quiet -updm "${fastdldir}" +find . -name '*.ttf' | cpio --quiet -updm "${fastdldir}" +find . -name '*.png' | cpio --quiet -updm "${fastdldir}" fn_printok "Fonts and png copied" echo -en "\n" sleep 1 +# Going back to rootdir in order to prevent crap from happening +cd "${rootdir}" # Correct addons folder structure if [ -d "${fastdldir}/addons" ]; then @@ -231,21 +234,7 @@ if [ -d "${fastdldir}/lua" ]; then cp -Rf "${fastdldir}/lua/"* "${fastdldir}" fn_printok "Stupid file structure fixed" echo -en "\n" - sleep 1 -fi -} - -fn_fastdl_bzip2(){ -# Compressing using bzip2 if user said yes -if [ ${bzip2enable} == "on" ]; then - fn_printinfo "Compressing files using bzip2..." - fn_scriptlog "Compressing files using bzip2..." sleep 2 - # bzip2 all files that are not already compressed (keeping original files) - find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -qk \{\} \; - fn_printinfo "bzip2 compression done" - fn_scriptlog "bzip2 compression done" - sleep 1 fi } @@ -254,9 +243,13 @@ fn_lua_fastdl(){ # Remove lua file if luaressource is turned off and file exists if [ "${luaressource}" == "off" ]; then if [ -f "${luafastdlfullpath}" ]; then - echo "Removing download enforcer" + fn_printdots "Removing download enforcer" sleep 1 rm -R "${luafastdlfullpath}" + fn_printok "Removed download enforcer" + fn_scriptlog "Removed old download inforcer" + echo -en "\n" + sleep 2 fi fi # Remove old lua file and generate a new one if user said yes @@ -266,7 +259,7 @@ if [ "${luaressource}" == "on" ]; then sleep 1 rm "${luafastdlfullpath}" fn_printok "Removed old download enforcer" - fn_scriptlog "Removed old download inforcer" + fn_scriptlog "Removed old download enforcer" echo -en "\n" sleep 1 fi @@ -275,11 +268,26 @@ if [ "${luaressource}" == "on" ]; then sleep 1 # Read all filenames and put them into a lua file at the right path find "${fastdldir}" \( -name "." ! -name "*.bz2" \) -printf '%P\n' | while read line; do - echo "resource.AddFile("\""${line}"\"")" >> "${luafastdlfullpath}" + echo "resource.AddFile("\""${line}"\"")" >> ${luafastdlfullpath} done fn_printok "Download enforcer generated" fn_scriptlog "Download enforcer generated" echo -en "\n" + echo "" + sleep 2 +fi +} + +fn_fastdl_bzip2(){ +# Compressing using bzip2 if user said yes +if [ ${bzip2enable} == "on" ]; then + fn_printdots "Compressing files using bzip2..." + fn_scriptlog "Compressing files using bzip2..." + sleep 2 + # bzip2 all files that are not already compressed (keeping original files) + find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -qk \{\} \; + fn_printinfo "bzip2 compression done" + fn_scriptlog "bzip2 compression done" sleep 1 fi } From 1242f0729ab84b4c859c5aa5b703b0c6c3530f6e Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:11:22 +0100 Subject: [PATCH 076/643] improved user experience --- functions/command_fastdl.sh | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 1f9941add..c22a8f9f1 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -55,21 +55,25 @@ fn_scriptlog "Initiating FastDL creation" # Check and create folders if [ ! -d "${webdir}" ]; then - fn_printdots "Creating www directory..." - sleep 0.5 - mkdir "${webdir}" + fn_printinfo "Creating FastDL directories..." + echo -en "\n" sleep 1 + fn_printdots "Creating ${webdir} directory." + mkdir "${webdir}" + fn_printok fn_scriptlog "FastDL created ${webdir}" + sleep 1 + echo -en "\n" fi if [ ! -d "${fastdldir}" ]; then # No folder, won't ask for removing old ones newfastdl=1 fn_printdots "Creating FastDL directory..." - sleep 0.5 - mkdir "${fastdldir}" sleep 1 + mkdir "${fastdldir}" fn_scriptlog "FastDL created ${fastdldir}" fn_printok "Folders created" + sleep 1 echo -en "\n" else # Used to prompt for removing old files @@ -81,8 +85,8 @@ fn_fastdl_config(){ # Global settings for FastDL creation fn_printinfo "Entering configuration" fn_scriptlog "Configuration" -echo -en "\n" sleep 2 +echo -en "\n" # Prompt for clearing old files if folder was already here if [ ${newfastdl} == 0 ]; then fn_printdots @@ -123,7 +127,7 @@ while true; do [Nn]* ) luaressource="off"; "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; * ) echo "Please answer yes or no.";; esac - sleep1 + sleep 1 echo -en "\n" done } @@ -137,6 +141,7 @@ if [ ${clearoldfastdl} == "on" ]; then rm -R "${fastdldir}"/* fn_printok "Old FastDL folder cleared" fn_scriptlog "Old FastDL folder cleared" + sleep 1 echo -en "\n" fi } @@ -296,10 +301,10 @@ fn_fastdl_completed(){ # Finished message fn_printok "Congratulations, it's done" fn_scriptlog "FastDL job done" -echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl" echo -en "\n" +echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl" if [ "$bzip2installed" == "0" ]; then -echo "By the way, you'd better install bzip2 an re-run this command" +echo "By the way, you'd better install bzip2 an re-run this command !" fi } From fac14231876f55f4b811ed41e4694139cb5c312f Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:20:41 +0100 Subject: [PATCH 077/643] user experience + major fix --- functions/command_fastdl.sh | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index c22a8f9f1..350bddcf4 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -152,15 +152,15 @@ fn_printdots "Gathering all needed files..." echo -en "\n" sleep 1 # No choice to cd to the directory, as find can't then display relative folder -cd "${addonsdir}" +cd "${systemdir}" # Map Files fn_printdots "Copying map files..." fn_scriptlog "Copying map files" sleep 1 find . -name '*.bsp' | cpio --quiet -updm "${fastdldir}" fn_printok "Map files copied" -echo -en "\n" sleep 1 +echo -en "\n" # Materials fn_printdots "Copying materials..." @@ -169,8 +169,8 @@ sleep 1 find . -name '*.vtf' | cpio --quiet -updm "${fastdldir}" find . -name '*.vmt' | cpio --quiet -updm "${fastdldir}" fn_printok "Materials copied" -echo -en "\n" sleep 1 +echo -en "\n" # Models fn_printdots "Copying models..." @@ -181,8 +181,8 @@ find . -name '*.vvd' | cpio --quiet -updm "${fastdldir}" find . -name '*.mdl' | cpio --quiet -updm "${fastdldir}" find . -name '*.phy' | cpio --quiet -updm "${fastdldir}" fn_printok "Models copied" -echo -en "\n" sleep 1 +echo -en "\n" # Particles fn_printdots "Copying particles..." @@ -190,8 +190,8 @@ fn_scriptlog "Copying particles" sleep 1 find . -name '*.pcf' | cpio --quiet -updm "${fastdldir}" fn_printok "Particles copied" -echo -en "\n" sleep 1 +echo -en "\n" # Sounds fn_printdots "Copying sounds..." @@ -201,8 +201,8 @@ find . -name '*.wav' | cpio --quiet -updm "${fastdldir}" find . -name '*.mp3' | cpio --quiet -updm "${fastdldir}" find . -name '*.ogg' | cpio --quiet -updm "${fastdldir}" fn_printok "Sounds copied" -echo -en "\n" sleep 1 +echo -en "\n" # Resources (mostly fonts) fn_printdots "Copying fonts and png..." @@ -212,22 +212,20 @@ find . -name '*.otf' | cpio --quiet -updm "${fastdldir}" find . -name '*.ttf' | cpio --quiet -updm "${fastdldir}" find . -name '*.png' | cpio --quiet -updm "${fastdldir}" fn_printok "Fonts and png copied" -echo -en "\n" sleep 1 -# Going back to rootdir in order to prevent crap from happening +echo -en "\n" + +# Going back to rootdir in order to prevent mistakes cd "${rootdir}" -# Correct addons folder structure +# Correct addons folder structure for FastDL if [ -d "${fastdldir}/addons" ]; then - fn_printinfo "Correcting file structure" - fn_scriptlog "Correcting file structure" - sleep 2 - echo "Copying those files to their correct folder" + fn_printinfo "Adjusting addons' file structure" + fn_scriptlog "Adjusting addon's file structure" sleep 2 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" - # As we're not sure about the correct file structure, duplicate instead of remove - # rm -R "${fastdldir}/addons" - fn_printok "Corrected file structure" + rm -R "${fastdldir}/addons" + fn_printok "Adjusted addon's file structure" echo -en "\n" sleep 1 fi @@ -306,6 +304,7 @@ echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl if [ "$bzip2installed" == "0" ]; then echo "By the way, you'd better install bzip2 an re-run this command !" fi +echo "Credits : UltimateByte" } # Game checking and functions running From 196aef4dd3584541e2a6c01c44cedc1a8ba77b2b Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:27:00 +0100 Subject: [PATCH 078/643] updated darkrp and user exp --- functions/command_fastdl.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 350bddcf4..9b8ebde86 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -40,9 +40,9 @@ fi fn_fastdl_init(){ # User confirmation fn_printok "Welcome to LGSM's FastDL generator" +sleep 1 echo -en "\n" fn_scriptlog "Started FastDL creation" -sleep 1 while true; do read -p "Continue? [y/N]" yn case $yn in @@ -224,7 +224,7 @@ if [ -d "${fastdldir}/addons" ]; then fn_scriptlog "Adjusting addon's file structure" sleep 2 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" - rm -R "${fastdldir}/addons" +#Don't remove yet rm -R "${fastdldir}/addons" fn_printok "Adjusted addon's file structure" echo -en "\n" sleep 1 @@ -232,12 +232,15 @@ fi # Correct content that may be into a lua folder by mistake like some darkrpmodification addons if [ -d "${fastdldir}/lua" ]; then - fn_printdots "Stupid file structure fix" - sleep 1 + fn_printwarn "Typical DarkRP shit detected" + sleep 2 + echo -en "\n" + fn_printdots "Fixing DarkRP file structure..." + sleep 2 cp -Rf "${fastdldir}/lua/"* "${fastdldir}" fn_printok "Stupid file structure fixed" - echo -en "\n" sleep 2 + echo -en "\n" fi } From 77178ed1a87839f6085027c024882bbacd6e087d Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:31:09 +0100 Subject: [PATCH 079/643] user experience... --- functions/command_fastdl.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 9b8ebde86..1fb3f4393 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -147,12 +147,19 @@ fi } fn_gmod_fastdl(){ -# Copy all needed files for fastDL -fn_printdots "Gathering all needed files..." +# Copy all needed files for FastDL +echo "" +fn_printinfo "Starting..." +fn_scriptlog "Starting FastFL job" +sleep 2 echo -en "\n" +fn_printdots "Gathering all needed files..." sleep 1 +echo -en "\n" + # No choice to cd to the directory, as find can't then display relative folder cd "${systemdir}" + # Map Files fn_printdots "Copying map files..." fn_scriptlog "Copying map files" From acc948a077ce34604368288482c48a92663c7a50 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:34:24 +0100 Subject: [PATCH 080/643] user experience again --- functions/command_fastdl.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 1fb3f4393..cd75d15af 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -307,10 +307,12 @@ fi fn_fastdl_completed(){ # Finished message -fn_printok "Congratulations, it's done" +fn_printok "Congratulations, it's done !" fn_scriptlog "FastDL job done" +sleep 2 +echo -en "\n" +fn_printinfo "Need more doc ? See https://github.com/dgibbs64/linuxgsm/wiki/Fastdl" echo -en "\n" -echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl" if [ "$bzip2installed" == "0" ]; then echo "By the way, you'd better install bzip2 an re-run this command !" fi From 53113c865d261629f6d8ab5167b2d5f5a168f0d4 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:35:55 +0100 Subject: [PATCH 081/643] user experience again --- functions/command_fastdl.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index cd75d15af..2091ab3e7 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -58,9 +58,10 @@ if [ ! -d "${webdir}" ]; then fn_printinfo "Creating FastDL directories..." echo -en "\n" sleep 1 - fn_printdots "Creating ${webdir} directory." + fn_printdots "Creating ${webdir} directory" + sleep 1 mkdir "${webdir}" - fn_printok + fn_printok "Created ${webdir} directory" fn_scriptlog "FastDL created ${webdir}" sleep 1 echo -en "\n" From 4f83029df1f639fd46aae7f29219ba9d6aa94c2a Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:38:16 +0100 Subject: [PATCH 082/643] user experience --- functions/command_fastdl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 2091ab3e7..8cdc0d231 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -69,11 +69,11 @@ fi if [ ! -d "${fastdldir}" ]; then # No folder, won't ask for removing old ones newfastdl=1 - fn_printdots "Creating FastDL directory..." + fn_printdots "Creating FastDL ${fastdldir} directory" sleep 1 mkdir "${fastdldir}" fn_scriptlog "FastDL created ${fastdldir}" - fn_printok "Folders created" + fn_printok "Created ${fastdldir} directory" sleep 1 echo -en "\n" else From bd28d8fe6effa98e1c5a6bf4c1b76d9e2f3c4afe Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:43:15 +0100 Subject: [PATCH 083/643] appearance --- functions/command_fastdl.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 8cdc0d231..079fa37d6 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -55,25 +55,26 @@ fn_scriptlog "Initiating FastDL creation" # Check and create folders if [ ! -d "${webdir}" ]; then - fn_printinfo "Creating FastDL directories..." + echo "" + fn_printinfo "Creating FastDL directories" echo -en "\n" sleep 1 - fn_printdots "Creating ${webdir} directory" + fn_printdots "Creating www directory" sleep 1 mkdir "${webdir}" - fn_printok "Created ${webdir} directory" - fn_scriptlog "FastDL created ${webdir}" + fn_printok "Created www directory" + fn_scriptlog "FastDL created www directory" sleep 1 echo -en "\n" fi if [ ! -d "${fastdldir}" ]; then # No folder, won't ask for removing old ones newfastdl=1 - fn_printdots "Creating FastDL ${fastdldir} directory" + fn_printdots "Creating FastDL fastdl directory" sleep 1 mkdir "${fastdldir}" - fn_scriptlog "FastDL created ${fastdldir}" - fn_printok "Created ${fastdldir} directory" + fn_printok "Created fastdl directory" + fn_scriptlog "FastDL created fastdl directory" sleep 1 echo -en "\n" else From 52b9e0dfe329bc83d41b99c83b952b51787b11a0 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:45:14 +0100 Subject: [PATCH 084/643] fixed shitty syntax --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 079fa37d6..583c5c55d 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -110,7 +110,7 @@ if [ ${bzip2installed} == 1 ]; then read -p "Enable file compression using bzip2? [Y/n]" Yn case $yn in [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "bzip2 Enabled"; break;; - [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled;" break;; + [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled"; break;; * ) echo "Please answer yes or no.";; esac done From 4fc0176160e2f361f966fd772e51cd28453ab8e0 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:58:48 +0100 Subject: [PATCH 085/643] fixed prompts --- functions/command_fastdl.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 583c5c55d..6826ce97a 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -44,7 +44,7 @@ sleep 1 echo -en "\n" fn_scriptlog "Started FastDL creation" while true; do - read -p "Continue? [y/N]" yn + read -e -i "y" -p "Continue? [Y/n]" yn case $yn in [Yy]* ) break;; [Nn]* ) exit;; @@ -93,7 +93,7 @@ echo -en "\n" if [ ${newfastdl} == 0 ]; then fn_printdots while true; do - read -p "Clear old FastDL files? [y/N]" yN + read -e -i "y" -p "Clear old FastDL files? [Y/n]" yn case $yn in [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_printok "Clearing Enabled"; break;; [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_printok "Clearing Disabled"; break;; @@ -107,7 +107,7 @@ fi if [ ${bzip2installed} == 1 ]; then fn_printdots while true; do - read -p "Enable file compression using bzip2? [Y/n]" Yn + read -e -i "y"-p "Enable file compression using bzip2? [Y/n]" yn case $yn in [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "bzip2 Enabled"; break;; [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled"; break;; @@ -123,7 +123,7 @@ fn_fastdl_gmod_config(){ # Prompt for download enforcer, that is using a .lua addfile resource generator fn_printdots while true; do - read -p "Use client download enforcer? [Y/n]" Yn + read -e -i "y" -p "Use client download enforcer? [Y/n]" yn case $yn in [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_printok "Enforcer Enabled"; break;; [Nn]* ) luaressource="off"; "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; From 62b05cf3d1f4ae6c39825a025b940766ec81ac90 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 06:59:46 +0100 Subject: [PATCH 086/643] missing space --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 6826ce97a..bf377cb68 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -107,7 +107,7 @@ fi if [ ${bzip2installed} == 1 ]; then fn_printdots while true; do - read -e -i "y"-p "Enable file compression using bzip2? [Y/n]" yn + read -e -i "y" -p "Enable file compression using bzip2? [Y/n]" yn case $yn in [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "bzip2 Enabled"; break;; [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled"; break;; From dfad528cfbd765e62c35097003362b5864e9fe76 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:06:48 +0100 Subject: [PATCH 087/643] Don't try to empty an empty folder please --- functions/command_fastdl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index bf377cb68..f9d6332e7 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -77,8 +77,8 @@ if [ ! -d "${fastdldir}" ]; then fn_scriptlog "FastDL created fastdl directory" sleep 1 echo -en "\n" -else - # Used to prompt for removing old files +# Used to prompt for removing old files if folder is not empty +elif [ "$(ls -A ${fastdldir)" ]; then newfastdl=0 fi } From d2cd659391dfb84120be3d170ebaeed0d857f38f Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:15:19 +0100 Subject: [PATCH 088/643] syntax --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index f9d6332e7..ae98990cf 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -78,7 +78,7 @@ if [ ! -d "${fastdldir}" ]; then sleep 1 echo -en "\n" # Used to prompt for removing old files if folder is not empty -elif [ "$(ls -A ${fastdldir)" ]; then +elif [ "$(ls -A "${fastdldir}")" ]; then newfastdl=0 fi } From 0ecb6b037b5b8e48b62cf490b77937abccf23d45 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:23:00 +0100 Subject: [PATCH 089/643] test check unexisting variable --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index ae98990cf..c0afb2612 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -90,7 +90,7 @@ fn_scriptlog "Configuration" sleep 2 echo -en "\n" # Prompt for clearing old files if folder was already here -if [ ${newfastdl} == 0 ]; then +if [ -z "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then fn_printdots while true; do read -e -i "y" -p "Clear old FastDL files? [Y/n]" yn From 6c7d52fc681fb3caf76fae11644f6701e1e81527 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:25:55 +0100 Subject: [PATCH 090/643] missing set variable --- functions/command_fastdl.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index c0afb2612..8cd58a700 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -80,6 +80,7 @@ if [ ! -d "${fastdldir}" ]; then # Used to prompt for removing old files if folder is not empty elif [ "$(ls -A "${fastdldir}")" ]; then newfastdl=0 + clearoldfastdl="off" fi } From f36e422e432075b94e65a3c24cc5d264dbdfa7ca Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:31:21 +0100 Subject: [PATCH 091/643] safety fix + syntax --- functions/command_fastdl.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 8cd58a700..3be952bd7 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -137,11 +137,11 @@ done fn_clear_old_fastdl(){ # Clearing old FastDL if user answered yes -if [ ${clearoldfastdl} == "on" ]; then +if [ "${clearoldfastdl}" == "on" ]; then fn_printinfo "Clearing existing FastDL folder" fn_scriptlog "Clearing existing FastDL folder" sleep 1 - rm -R "${fastdldir}"/* + rm -R "${fastdldir:?}"/* fn_printok "Old FastDL folder cleared" fn_scriptlog "Old FastDL folder cleared" sleep 1 @@ -234,7 +234,7 @@ if [ -d "${fastdldir}/addons" ]; then fn_scriptlog "Adjusting addon's file structure" sleep 2 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" -#Don't remove yet rm -R "${fastdldir}/addons" +#Don't remove yet rm -R "${fastdldir:?}/addons" fn_printok "Adjusted addon's file structure" echo -en "\n" sleep 1 @@ -261,7 +261,7 @@ if [ "${luaressource}" == "off" ]; then if [ -f "${luafastdlfullpath}" ]; then fn_printdots "Removing download enforcer" sleep 1 - rm -R "${luafastdlfullpath}" + rm -R "${luafastdlfullpath:?}" fn_printok "Removed download enforcer" fn_scriptlog "Removed old download inforcer" echo -en "\n" From 213a0d93aec3284a5b6f57127e46eb9f22f16364 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:34:32 +0100 Subject: [PATCH 092/643] updated darkrp message --- functions/command_fastdl.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 3be952bd7..cff4689eb 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -242,13 +242,10 @@ fi # Correct content that may be into a lua folder by mistake like some darkrpmodification addons if [ -d "${fastdldir}/lua" ]; then - fn_printwarn "Typical DarkRP shit detected" - sleep 2 - echo -en "\n" - fn_printdots "Fixing DarkRP file structure..." + fn_printdots "Typical DarkRP shit detected, fixing" sleep 2 cp -Rf "${fastdldir}/lua/"* "${fastdldir}" - fn_printok "Stupid file structure fixed" + fn_printok "Stupid DarkRP file structure fixed" sleep 2 echo -en "\n" fi From 1eaacbb1e97d9a4cc9c51b041318b1f7793f6525 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:43:55 +0100 Subject: [PATCH 093/643] fix lua generator, hopefully --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index cff4689eb..9680b7297 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -280,7 +280,7 @@ if [ "${luaressource}" == "on" ]; then fn_scriptlog "Generating new download enforcer" sleep 1 # Read all filenames and put them into a lua file at the right path - find "${fastdldir}" \( -name "." ! -name "*.bz2" \) -printf '%P\n' | while read line; do + find "${fastdldir}" \( -name "*.*" ! -name "*.bz2" \) -printf '%P\n' | while read line; do echo "resource.AddFile("\""${line}"\"")" >> ${luafastdlfullpath} done fn_printok "Download enforcer generated" From 93db23892c755d4184d73535f8a118ad7c4ae774 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:49:24 +0100 Subject: [PATCH 094/643] touch lua file before --- functions/command_fastdl.sh | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 9680b7297..97c0bc32e 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -13,13 +13,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh # Directories -webdir="${rootdir}/www" -fastdldir="${webdir}/fastdl" -addonsdir="${systemdir}/addons" -# Server lua autorun dir, used to autorun lua on client connect to the server -luasvautorundir="${systemdir}/lua/audoturn/server" -luafastdlfile="lgsm_cl_force_fastdl.lua" -luafastdlfullpath="${luasvautorundir}/${luafastdlfile}" +luafastdlfullpath fn_check_bzip2(){ # Returns true if not installed @@ -279,6 +273,8 @@ if [ "${luaressource}" == "on" ]; then fn_printdots "Generating new download enforcer" fn_scriptlog "Generating new download enforcer" sleep 1 + # Create the lua file + touch "${luafastdlfullpath}" # Read all filenames and put them into a lua file at the right path find "${fastdldir}" \( -name "*.*" ! -name "*.bz2" \) -printf '%P\n' | while read line; do echo "resource.AddFile("\""${line}"\"")" >> ${luafastdlfullpath} From 5a881f5352682bb8eaa046af117ff40cbbec874b Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:52:23 +0100 Subject: [PATCH 095/643] putting back directories... --- functions/command_fastdl.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 97c0bc32e..bed50584b 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -13,7 +13,13 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh # Directories -luafastdlfullpath +webdir="${rootdir}/www" +fastdldir="${webdir}/fastdl" +addonsdir="${systemdir}/addons" +# Server lua autorun dir, used to autorun lua on client connect to the server +luasvautorundir="${systemdir}/lua/audoturn/server" +luafastdlfile="lgsm_cl_force_fastdl.lua" +luafastdlfullpath="${luasvautorundir}/${luafastdlfile}" fn_check_bzip2(){ # Returns true if not installed From 969bb25c92da149f732e2b51fa76ed7bdeedff01 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:56:43 +0100 Subject: [PATCH 096/643] clearoldfastdl fix --- functions/command_fastdl.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index bed50584b..da2ee537b 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -77,10 +77,9 @@ if [ ! -d "${fastdldir}" ]; then fn_scriptlog "FastDL created fastdl directory" sleep 1 echo -en "\n" -# Used to prompt for removing old files if folder is not empty + clearoldfastdl="off" # Nothing to clear elif [ "$(ls -A "${fastdldir}")" ]; then newfastdl=0 - clearoldfastdl="off" fi } From b3a43c07a61ab9a6ddf84cbdef790e6ae5a6024b Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 07:59:42 +0100 Subject: [PATCH 097/643] audoturn... sure ! --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index da2ee537b..af29c101e 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -17,7 +17,7 @@ webdir="${rootdir}/www" fastdldir="${webdir}/fastdl" addonsdir="${systemdir}/addons" # Server lua autorun dir, used to autorun lua on client connect to the server -luasvautorundir="${systemdir}/lua/audoturn/server" +luasvautorundir="${systemdir}/lua/autorun/server" luafastdlfile="lgsm_cl_force_fastdl.lua" luafastdlfullpath="${luasvautorundir}/${luafastdlfile}" From e45588398e6148d543eb7df6f63a1b3f6adac6ba Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 08:03:52 +0100 Subject: [PATCH 098/643] "touch" not needed + adjusting AddFile --- functions/command_fastdl.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index af29c101e..425a9e7f7 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -278,11 +278,9 @@ if [ "${luaressource}" == "on" ]; then fn_printdots "Generating new download enforcer" fn_scriptlog "Generating new download enforcer" sleep 1 - # Create the lua file - touch "${luafastdlfullpath}" # Read all filenames and put them into a lua file at the right path find "${fastdldir}" \( -name "*.*" ! -name "*.bz2" \) -printf '%P\n' | while read line; do - echo "resource.AddFile("\""${line}"\"")" >> ${luafastdlfullpath} + echo "resource.AddFile( "\""${line}"\"" )" >> ${luafastdlfullpath} done fn_printok "Download enforcer generated" fn_scriptlog "Download enforcer generated" @@ -312,6 +310,7 @@ fn_printok "Congratulations, it's done !" fn_scriptlog "FastDL job done" sleep 2 echo -en "\n" +echo "" fn_printinfo "Need more doc ? See https://github.com/dgibbs64/linuxgsm/wiki/Fastdl" echo -en "\n" if [ "$bzip2installed" == "0" ]; then From 18707efe0af154d9f98ee874a574ed1143e7bcc1 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 08:41:08 +0100 Subject: [PATCH 099/643] proper check for fastdl --- functions/command_fastdl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 425a9e7f7..f313c04d9 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -70,7 +70,7 @@ fi if [ ! -d "${fastdldir}" ]; then # No folder, won't ask for removing old ones newfastdl=1 - fn_printdots "Creating FastDL fastdl directory" + fn_printdots "Creating fastdl directory" sleep 1 mkdir "${fastdldir}" fn_printok "Created fastdl directory" @@ -90,7 +90,7 @@ fn_scriptlog "Configuration" sleep 2 echo -en "\n" # Prompt for clearing old files if folder was already here -if [ -z "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then +if [ -d "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then fn_printdots while true; do read -e -i "y" -p "Clear old FastDL files? [Y/n]" yn From 9733ab6fcb7bebb23d6367d40d554dd82d55083d Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 08:59:30 +0100 Subject: [PATCH 100/643] not -d ! -n ! --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index f313c04d9..969e8e289 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -90,7 +90,7 @@ fn_scriptlog "Configuration" sleep 2 echo -en "\n" # Prompt for clearing old files if folder was already here -if [ -d "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then +if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then fn_printdots while true; do read -e -i "y" -p "Clear old FastDL files? [Y/n]" yn From 29442a057050bad5384c60d7203103686ff9867b Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 10:06:07 +0100 Subject: [PATCH 101/643] Better find ! Better display ! --- functions/command_fastdl.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 969e8e289..10fc68a4f 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -279,7 +279,7 @@ if [ "${luaressource}" == "on" ]; then fn_scriptlog "Generating new download enforcer" sleep 1 # Read all filenames and put them into a lua file at the right path - find "${fastdldir}" \( -name "*.*" ! -name "*.bz2" \) -printf '%P\n' | while read line; do + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -printf '%P\n' | while read line; do echo "resource.AddFile( "\""${line}"\"" )" >> ${luafastdlfullpath} done fn_printok "Download enforcer generated" @@ -293,12 +293,13 @@ fi fn_fastdl_bzip2(){ # Compressing using bzip2 if user said yes if [ ${bzip2enable} == "on" ]; then + fn_printinfo "Have a break, this step could take a while..." fn_printdots "Compressing files using bzip2..." fn_scriptlog "Compressing files using bzip2..." sleep 2 # bzip2 all files that are not already compressed (keeping original files) - find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -qk \{\} \; - fn_printinfo "bzip2 compression done" + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; + fn_printok "bzip2 compression done" fn_scriptlog "bzip2 compression done" sleep 1 fi @@ -306,6 +307,7 @@ fi fn_fastdl_completed(){ # Finished message +echo "" fn_printok "Congratulations, it's done !" fn_scriptlog "FastDL job done" sleep 2 From c9550f02efdf089f65fefcb6216d667fade113ea Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 10:16:37 +0100 Subject: [PATCH 102/643] more spacing, less sleep --- functions/command_fastdl.sh | 46 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 10fc68a4f..ea899db90 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -60,7 +60,7 @@ if [ ! -d "${webdir}" ]; then echo -en "\n" sleep 1 fn_printdots "Creating www directory" - sleep 1 + sleep 0.5 mkdir "${webdir}" fn_printok "Created www directory" fn_scriptlog "FastDL created www directory" @@ -71,7 +71,7 @@ if [ ! -d "${fastdldir}" ]; then # No folder, won't ask for removing old ones newfastdl=1 fn_printdots "Creating fastdl directory" - sleep 1 + sleep 0.5 mkdir "${fastdldir}" fn_printok "Created fastdl directory" fn_scriptlog "FastDL created fastdl directory" @@ -100,7 +100,6 @@ if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then * ) echo "Please answer yes or no.";; esac done - sleep 1 echo -en "\n" fi # Prompt for using bzip2 if it's installed @@ -114,7 +113,6 @@ if [ ${bzip2installed} == 1 ]; then * ) echo "Please answer yes or no.";; esac done - sleep 1 echo -en "\n" fi } @@ -129,7 +127,6 @@ while true; do [Nn]* ) luaressource="off"; "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; * ) echo "Please answer yes or no.";; esac - sleep 1 echo -en "\n" done } @@ -139,7 +136,7 @@ fn_clear_old_fastdl(){ if [ "${clearoldfastdl}" == "on" ]; then fn_printinfo "Clearing existing FastDL folder" fn_scriptlog "Clearing existing FastDL folder" - sleep 1 + sleep 0.5 rm -R "${fastdldir:?}"/* fn_printok "Old FastDL folder cleared" fn_scriptlog "Old FastDL folder cleared" @@ -151,11 +148,8 @@ fi fn_gmod_fastdl(){ # Copy all needed files for FastDL echo "" -fn_printinfo "Starting..." -fn_scriptlog "Starting FastFL job" -sleep 2 -echo -en "\n" -fn_printdots "Gathering all needed files..." +fn_printdots "Starting gathering all needed files" +fn_scriptlog "Starting gathering all needed files" sleep 1 echo -en "\n" @@ -165,20 +159,20 @@ cd "${systemdir}" # Map Files fn_printdots "Copying map files..." fn_scriptlog "Copying map files" -sleep 1 +sleep 0.5 find . -name '*.bsp' | cpio --quiet -updm "${fastdldir}" fn_printok "Map files copied" -sleep 1 +sleep 0.5 echo -en "\n" # Materials fn_printdots "Copying materials..." fn_scriptlog "Copying materials" -sleep 1 +sleep 0.5 find . -name '*.vtf' | cpio --quiet -updm "${fastdldir}" find . -name '*.vmt' | cpio --quiet -updm "${fastdldir}" fn_printok "Materials copied" -sleep 1 +sleep 0.5 echo -en "\n" # Models @@ -190,27 +184,27 @@ find . -name '*.vvd' | cpio --quiet -updm "${fastdldir}" find . -name '*.mdl' | cpio --quiet -updm "${fastdldir}" find . -name '*.phy' | cpio --quiet -updm "${fastdldir}" fn_printok "Models copied" -sleep 1 +sleep 0.5 echo -en "\n" # Particles fn_printdots "Copying particles..." fn_scriptlog "Copying particles" -sleep 1 +sleep 0.5 find . -name '*.pcf' | cpio --quiet -updm "${fastdldir}" fn_printok "Particles copied" -sleep 1 +sleep 0.5 echo -en "\n" # Sounds fn_printdots "Copying sounds..." fn_scriptlog "Copying sounds" -sleep 1 +sleep 0.5 find . -name '*.wav' | cpio --quiet -updm "${fastdldir}" find . -name '*.mp3' | cpio --quiet -updm "${fastdldir}" find . -name '*.ogg' | cpio --quiet -updm "${fastdldir}" fn_printok "Sounds copied" -sleep 1 +sleep 0.5 echo -en "\n" # Resources (mostly fonts) @@ -221,7 +215,7 @@ find . -name '*.otf' | cpio --quiet -updm "${fastdldir}" find . -name '*.ttf' | cpio --quiet -updm "${fastdldir}" find . -name '*.png' | cpio --quiet -updm "${fastdldir}" fn_printok "Fonts and png copied" -sleep 1 +sleep 0.5 echo -en "\n" # Going back to rootdir in order to prevent mistakes @@ -231,12 +225,12 @@ cd "${rootdir}" if [ -d "${fastdldir}/addons" ]; then fn_printinfo "Adjusting addons' file structure" fn_scriptlog "Adjusting addon's file structure" - sleep 2 + sleep 1 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" #Don't remove yet rm -R "${fastdldir:?}/addons" fn_printok "Adjusted addon's file structure" - echo -en "\n" sleep 1 + echo -en "\n" fi # Correct content that may be into a lua folder by mistake like some darkrpmodification addons @@ -253,6 +247,7 @@ fi # Generate lua file that will force download any file into the FastDL folder fn_lua_fastdl(){ # Remove lua file if luaressource is turned off and file exists +echo "" if [ "${luaressource}" == "off" ]; then if [ -f "${luafastdlfullpath}" ]; then fn_printdots "Removing download enforcer" @@ -292,16 +287,19 @@ fi fn_fastdl_bzip2(){ # Compressing using bzip2 if user said yes +echo "" if [ ${bzip2enable} == "on" ]; then fn_printinfo "Have a break, this step could take a while..." + echo -en "\n" + echo "" fn_printdots "Compressing files using bzip2..." fn_scriptlog "Compressing files using bzip2..." - sleep 2 # bzip2 all files that are not already compressed (keeping original files) find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; fn_printok "bzip2 compression done" fn_scriptlog "bzip2 compression done" sleep 1 + echo -en "\n" fi } From 1ce0fbbd6efa25c93e74939cc2758f78c22ce61e Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 12:57:00 +0100 Subject: [PATCH 103/643] Missing scriptlog --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index ea899db90..ab9230035 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -124,7 +124,7 @@ while true; do read -e -i "y" -p "Use client download enforcer? [Y/n]" yn case $yn in [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_printok "Enforcer Enabled"; break;; - [Nn]* ) luaressource="off"; "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; + [Nn]* ) luaressource="off"; fn_scriptlog "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; * ) echo "Please answer yes or no.";; esac echo -en "\n" From 58873551bd915b5c0a41629394eb6e1d6efbf01a Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Fri, 19 Feb 2016 12:59:26 +0100 Subject: [PATCH 104/643] wrong place of echo -en "\n" --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index ab9230035..77e02be45 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -127,8 +127,8 @@ while true; do [Nn]* ) luaressource="off"; fn_scriptlog "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; * ) echo "Please answer yes or no.";; esac - echo -en "\n" done +echo -en "\n" } fn_clear_old_fastdl(){ From 7bf99a05eb96a8b4043e3a1bb5e378ad4bbb7109 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 19:05:19 +0000 Subject: [PATCH 105/643] Removed tmux check on stop as preventing debug mode --- functions/check.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/check.sh b/functions/check.sh index 101544b55..1af79f5dd 100644 --- a/functions/check.sh +++ b/functions/check.sh @@ -2,7 +2,7 @@ # LGSM fn_check function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="050216" +lgsm_version="190216" # Description: Overall function for managing checks. # Runs checks that will either halt on or fix an issue. @@ -61,7 +61,7 @@ do fi done -local allowed_commands_array=( command_console.sh command_start.sh command_stop.sh ) +local allowed_commands_array=( command_console.sh command_start.sh ) for allowed_command in "${allowed_commands_array[@]}" do if [ "${allowed_command}" == "${function_selfname}" ]; then From 36d49088442fd34fb46895df6765a232211c63cd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 19:25:31 +0000 Subject: [PATCH 106/643] Added Quake Live --- functions/info_glibc.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/functions/info_glibc.sh b/functions/info_glibc.sh index 4181d011d..fbef22478 100644 --- a/functions/info_glibc.sh +++ b/functions/info_glibc.sh @@ -2,7 +2,7 @@ # LGSM info_glibc.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="100116" +lgsm_version="190216" # Description: stores details on servers Glibc requirements. @@ -27,6 +27,9 @@ elif [ "${gamename}" == "Insurgency" ]; then elif [ "${gamename}" == "No More Room in Hell" ]; then glibcrequired="2.15" glibcfix="yes" +elif [ "${gamename}" == "Quake Live" ]; then + glibcrequired="2.15" + glibcfix="no" elif [ "${engine}" == "avalanche" ]; then glibcrequired="2.13" glibcfix="yes" From 2383511efa695c28e240052f6a47e3cde85c2bfe Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 19:46:07 +0000 Subject: [PATCH 107/643] Added idtech3 --- GameServerQuery/gsquery.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/GameServerQuery/gsquery.py b/GameServerQuery/gsquery.py index a1380a5a7..b132038e3 100644 --- a/GameServerQuery/gsquery.py +++ b/GameServerQuery/gsquery.py @@ -3,7 +3,7 @@ # Game Server Query # Author: Anonymous & Daniel Gibbs # # Website: http://gameservermanagers.com -# Version: 030515 +# Version: 190216 import optparse import socket @@ -19,14 +19,16 @@ class GameServer: # if self.option.engine == 'source': self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - if self.option.engine == 'goldsource': + elif self.option.engine == 'goldsource': self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - if self.option.engine == 'spark': + elif self.option.engine == 'spark': self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - if self.option.engine == 'realvirtuality': + elif self.option.engine == 'realvirtuality': self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - if self.option.engine == 'unity3d': + elif self.option.engine == 'unity3d': self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' + elif self.option.engine == 'idtech3': + self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' elif self.option.engine == 'unreal': self.query_prompt_string = '\x5C\x69\x6E\x66\x6F\x5C' elif self.option.engine == 'unreal2': @@ -101,7 +103,7 @@ if __name__ == '__main__': action = 'store', dest = 'engine', default = False, - help = 'Engine type: avalanche, goldsource, realvirtuality, spark, source, unity3d, unreal, unreal2.' + help = 'Engine type: avalanche, goldsource, idtech3, realvirtuality, spark, source, unity3d, unreal, unreal2.' ) parser.add_option( '-v', '--verbose', From 3fe27aea73824b9083352af05b05609a4a8c65af Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 19:48:22 +0000 Subject: [PATCH 108/643] added idtech3 --- functions/install_gsquery.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/install_gsquery.sh b/functions/install_gsquery.sh index a113ea829..5ed3950d8 100644 --- a/functions/install_gsquery.sh +++ b/functions/install_gsquery.sh @@ -2,7 +2,7 @@ # LGSM install_gsquery.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="190216" fn_dlgsquery(){ cd "${rootdir}" @@ -11,7 +11,7 @@ wget -N /dev/null "http://gameservermanagers.com/dl/gsquery.py" 2>&1 | grep -F " chmod +x gsquery.py } -if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Hurtworld" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then +if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "idtech3" ][ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Hurtworld" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then echo "" echo "GameServerQuery" echo "============================" From 4e6181f7ea3f179f491cce310ab7d13be6d21492 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 19:49:58 +0000 Subject: [PATCH 109/643] missed || --- functions/install_gsquery.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/install_gsquery.sh b/functions/install_gsquery.sh index 5ed3950d8..1f2f16bdc 100644 --- a/functions/install_gsquery.sh +++ b/functions/install_gsquery.sh @@ -11,7 +11,7 @@ wget -N /dev/null "http://gameservermanagers.com/dl/gsquery.py" 2>&1 | grep -F " chmod +x gsquery.py } -if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "idtech3" ][ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Hurtworld" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then +if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Hurtworld" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then echo "" echo "GameServerQuery" echo "============================" From 9a35c063291c43c4e3c9464565874d6395cbdd8a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 19:52:32 +0000 Subject: [PATCH 110/643] added idtech3 --- functions/command_monitor.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_monitor.sh b/functions/command_monitor.sh index f253abc54..2d98683a3 100644 --- a/functions/command_monitor.sh +++ b/functions/command_monitor.sh @@ -80,7 +80,7 @@ if [ "${updatecheck}" = "0" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "$ sleep 1 echo -en "\n" - if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then + if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then monitor_gsquery.sh fi exit $? From 15963835541359846a48205fc54e3eb62cc89f4a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 20:27:08 +0000 Subject: [PATCH 111/643] Getting Quake live monitor and details working --- QuakeLive/qlserver | 4 ++-- functions/command_details.sh | 27 ++++++++++++++++++++++ functions/info_config.sh | 45 ++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 2 deletions(-) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index ca7742e26..f1029e370 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -26,8 +26,8 @@ steampass="" # Start Variables gameport="27960" rconport="28960" -rcon_password='ch@ng3me' -stats_password='ch@ng3me' +rconpassword="ch@ng3me" +statspassword="ch@ng3me" mappool='mappool.txt' ip="0.0.0.0" updateonstart="off" diff --git a/functions/command_details.sh b/functions/command_details.sh index 0084f20e5..32fc35de8 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -306,6 +306,31 @@ fi fn_details_statusbottom } +fn_details_id3tech(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep run_server" +echo -e "" +if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then + echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." + echo -e "" +fi +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Rcon: Query\tINBOUND\t${rconport}\tudp" + echo -e "> Stats: Master traffic\tINBOUND\t${statsport}\tudp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + + fn_details_seriousengine35(){ echo -e "" echo -e "\e[92mPorts\e[0m" @@ -603,6 +628,8 @@ elif [ "${engine}" == "dontstarve" ]; then fn_details_dontstarve elif [ "${engine}" == "projectzomboid" ]; then fn_details_projectzomboid +elif [ "${engine}" == "idtech3" ]; then + fn_details_idtech3 elif [ "${engine}" == "realvirtuality" ]; then fn_details_realvirtuality elif [ "${engine}" == "seriousengine35" ]; then diff --git a/functions/info_config.sh b/functions/info_config.sh index 60d2d77e0..4556a2dac 100644 --- a/functions/info_config.sh +++ b/functions/info_config.sh @@ -154,6 +154,51 @@ elif [ "${engine}" == "projectzomboid" ]; then port="0" fi + +# Quake Live +elif [ "${engine}" == "idtech3" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "set sv_hostname " "${servercfgfullpath}" | sed 's/set sv_hostname //g' | tr -d '=\"; ') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # rcon password + rconpassword="${rconpassword}" + if [ -f "${servercfgfullpath}" ]; then + if [ ! -n "${rconpassword}" ]; then + rconpassword="NOT SET" + fi + else + rconpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "set sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="NOT SET" + fi + else + slots="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + port="${gameport}" + if [ ! -n "${port}" ]; then + port="0" + fi + + # rcon port + if [ ! -n "${rconport}" ]; then + rconport="0" + fi + # ARMA 3 elif [ "${engine}" == "realvirtuality" ]; then From 7a5276bede73af7fdc24bd7ac2911825c7536413 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 20:28:14 +0000 Subject: [PATCH 112/643] corrected spelling --- functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_details.sh b/functions/command_details.sh index 32fc35de8..1b9b270ad 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -306,7 +306,7 @@ fi fn_details_statusbottom } -fn_details_id3tech(){ +fn_details_idtech3(){ echo -e "" echo -e "\e[92mPorts\e[0m" printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = From fd929b4cad9f9692649adf7a8e51a3bf4db1219d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 20:31:14 +0000 Subject: [PATCH 113/643] Stats port now displaying --- QuakeLive/qlserver | 3 ++- functions/command_details.sh | 6 +++--- functions/info_config.sh | 5 +++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index f1029e370..c7252347f 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -27,6 +27,7 @@ steampass="" gameport="27960" rconport="28960" rconpassword="ch@ng3me" +statsport="${gameport}" statspassword="ch@ng3me" mappool='mappool.txt' ip="0.0.0.0" @@ -35,7 +36,7 @@ updateonstart="off" # Install/Config Guide : https://steamcommunity.com/sharedfiles/filedetails/?id=542966946 # Console Commands : http://www.regurge.at/ql/ fn_parms(){ - parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${gameport} +set fs_homepath ${filesdir}/${gameport} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rcon_password} +set zmq_stats_enable 1 +set zmq_stats_password ${stats_password} +set zmq_stats_port ${gameport} +set sv_mapPoolFile ${mappool} +exec ${servercfg} " + parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${gameport} +set fs_homepath ${filesdir}/${gameport} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rcon_password} +set zmq_stats_enable 1 +set zmq_stats_password ${stats_password} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg} " } #### Advanced Variables #### diff --git a/functions/command_details.sh b/functions/command_details.sh index 1b9b270ad..eb4afebd6 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -314,7 +314,7 @@ echo -e "Change ports by editing the parameters in" echo -e "${servercfgfullpath}." echo -e "" echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep run_server" +echo -e "netstat -atunp | grep qzeroded" echo -e "" if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." @@ -323,8 +323,8 @@ fi { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Rcon: Query\tINBOUND\t${rconport}\tudp" - echo -e "> Stats: Master traffic\tINBOUND\t${statsport}\tudp" + echo -e "> Rcon\tINBOUND\t${rconport}\tudp" + echo -e "> Stats\tINBOUND\t${statsport}\tudp" } | column -s $'\t' -t fn_details_statusbottom diff --git a/functions/info_config.sh b/functions/info_config.sh index 4556a2dac..64467503a 100644 --- a/functions/info_config.sh +++ b/functions/info_config.sh @@ -199,6 +199,11 @@ elif [ "${engine}" == "idtech3" ]; then rconport="0" fi + # Stats port + if [ ! -n "${statsport}" ]; then + statsport="0" + fi + # ARMA 3 elif [ "${engine}" == "realvirtuality" ]; then From 0e7343b93384f9f82bb3fcfa0309833bce662b13 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 20:38:37 +0000 Subject: [PATCH 114/643] server password working --- functions/info_config.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/functions/info_config.sh b/functions/info_config.sh index 64467503a..884cdbe57 100644 --- a/functions/info_config.sh +++ b/functions/info_config.sh @@ -168,6 +168,16 @@ elif [ "${engine}" == "idtech3" ]; then servername="\e[0;31mUNAVAILABLE\e[0m" fi + # server password + if [ -f "${servercfgfullpath}" ]; then + serverpassword=$(grep "set g_password" "${servercfgfullpath}" | grep -v "//" | sed -e 's/set g_password//g' | tr -d '=\"; ') + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + # rcon password rconpassword="${rconpassword}" if [ -f "${servercfgfullpath}" ]; then From 9b9b96ab3b338a84e958891bfc4c6b72870c52a7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 20:39:49 +0000 Subject: [PATCH 115/643] Got server password working --- functions/info_config.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/functions/info_config.sh b/functions/info_config.sh index 884cdbe57..9bb5cde98 100644 --- a/functions/info_config.sh +++ b/functions/info_config.sh @@ -2,7 +2,7 @@ # LGSM info_config.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="060116" +lgsm_version="190216" # Description: Gets specific details from config files. @@ -170,7 +170,8 @@ elif [ "${engine}" == "idtech3" ]; then # server password if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "set g_password" "${servercfgfullpath}" | grep -v "//" | sed -e 's/set g_password//g' | tr -d '=\"; ') + + serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/set g_password//g' | tr -d '=\"; '| cut -f1 -d "/") if [ ! -n "${serverpassword}" ]; then serverpassword="NOT SET" fi From ee0d87ad556c66f35f9f32e4233177a0f5c5e247 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 20:40:58 +0000 Subject: [PATCH 116/643] corrected passwords --- QuakeLive/qlserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index c7252347f..57ab6bda6 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="190216" #### Variables #### arch="x64" @@ -36,7 +36,7 @@ updateonstart="off" # Install/Config Guide : https://steamcommunity.com/sharedfiles/filedetails/?id=542966946 # Console Commands : http://www.regurge.at/ql/ fn_parms(){ - parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${gameport} +set fs_homepath ${filesdir}/${gameport} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rcon_password} +set zmq_stats_enable 1 +set zmq_stats_password ${stats_password} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg} " + parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${gameport} +set fs_homepath ${filesdir}/${gameport} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rconpassword} +set zmq_stats_enable 1 +set zmq_stats_password ${statspassword} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg} " } #### Advanced Variables #### From 934a6744902dad3f4b2a4677ca255d0f47056219 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 20:45:05 +0000 Subject: [PATCH 117/643] Fixed error being reported --- functions/command_details.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_details.sh b/functions/command_details.sh index eb4afebd6..6de82eb8e 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -2,7 +2,7 @@ # LGSM command_details.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="060116" +lgsm_version="190316" # Description: Displays server infomation. @@ -316,7 +316,7 @@ echo -e "" echo -e "Useful port diagnostic command:" echo -e "netstat -atunp | grep qzeroded" echo -e "" -if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then +if [ -z "${port}" ]||[ -z "${rconport}" ]||[ -z "${statsport}" ]; then echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." echo -e "" fi From a9e3345fe74eb7c1bfc208a84e226704793f962c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 23:19:29 +0000 Subject: [PATCH 118/643] Fixed trap --- functions/core_dl.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index d2a0c2372..1a54b8714 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -38,7 +38,7 @@ fn_dl_extract(){ : } -# trap to remove file download if canceled before completed +# Trap to remove file download if canceled before completed fn_fetch_trap() { echo "" fn_printinfomationnl "Cancelling download" @@ -74,7 +74,7 @@ if [ ! -f "${filedir}/${filename}" ]; then # If curl exists download file if [ "$(basename ${curlcmd})" == "curl" ]; then # trap to remove part downloaded files - trap fn_fetch_trap EXIT + trap fn_fetch_trap INT # if larger file shows progress bar if [[ $filename == *"tar"* ]]; then @@ -91,7 +91,7 @@ if [ ! -f "${filedir}/${filename}" ]; then fn_printokeol fi # remove trap - trap - SIGINT SIGQUIT SIGTSTP + trap - INT else fn_printfaileol echo "Curl is not installed!" From 6648ac9170e44eea249a79c5919cc51bb9273ad5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 23:24:47 +0000 Subject: [PATCH 119/643] Altered header to link contributors page on Github --- functions/install_header.sh | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/functions/install_header.sh b/functions/install_header.sh index 1ee637c77..e78987561 100644 --- a/functions/install_header.sh +++ b/functions/install_header.sh @@ -2,19 +2,13 @@ # LGSM install_header.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="190216" clear echo "=================================" echo "${gamename}" echo "Linux Game Server Manager" echo "by Daniel Gibbs" -if [ "${gamename}" == "ARMA 3" ]; then - echo "contributions by Scarsz" -elif [ "${gamename}" == "Left 4 Dead" ]; then - echo "contributions by Summit Singh Thakur" -elif [ "${gamename}" == "Teeworlds" ]; then - echo "contributions by Bryce Van Dyk (SingingTree)" -fi echo "http://gameservermanagers.com" -echo "=================================" \ No newline at end of file +echo "Contributors: http://gameservermanagers.com/contib" +echo "=================================" From 72bbe93ecfd07427906255ab7646cfa11a825b68 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 19 Feb 2016 23:25:45 +0000 Subject: [PATCH 120/643] Moved logs creation to allow logging on install --- functions/command_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_install.sh b/functions/command_install.sh index 791cb160d..7f5753e3b 100644 --- a/functions/command_install.sh +++ b/functions/command_install.sh @@ -9,6 +9,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh install_header.sh install_serverdir.sh +install_logs.sh check_deps.sh # Download and install if [ "${gamename}" == "Unreal Tournament 2004" ]; then @@ -27,7 +28,6 @@ fi # Configuration fix.sh -install_logs.sh install_gsquery.sh install_config.sh if [ "${gamename}" == "Counter Strike: Global Offensive" ]||[ "${gamename}" == "Team Fortress 2" ]||[ "${gamename}" == "BrainBread 2" ]; then From 988b52dbe8d44a2b04afe3d9f137d591a9b7ff0a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 00:46:51 +0000 Subject: [PATCH 121/643] Removed redundant function --- functions/check_steamuser.sh | 23 ----------------------- functions/core_functions.sh | 5 ----- 2 files changed, 28 deletions(-) delete mode 100644 functions/check_steamuser.sh diff --git a/functions/check_steamuser.sh b/functions/check_steamuser.sh deleted file mode 100644 index a807dc70e..000000000 --- a/functions/check_steamuser.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# LGSM check_steamuser.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -if [ "${steamuser}" == "username" ]; then - fn_printfailnl "Steam login not set. Update steamuser." - echo " * Change steamuser=\"username\" to a valid steam login." - if [ -d ${scriptlogdir} ]; then - fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login." - exit 1 - fi -fi -if [ -z "${steamuser}" ]; then - fn_printwarnnl "Steam login not set. Using anonymous login." - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "Steam login not set. Using anonymous login." - fi - steamuser="anonymous" - steampass="" - sleep 2 -fi diff --git a/functions/core_functions.sh b/functions/core_functions.sh index c54dd3c19..551e543db 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -146,11 +146,6 @@ functionfile="${FUNCNAME}" fn_fetch_function } -check_steamuser.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - check_systemdir.sh(){ functionfile="${FUNCNAME}" fn_fetch_function From 7cf9f88210e5aa063a9472d8365e8c74a0e31efd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 00:49:20 +0000 Subject: [PATCH 122/643] adding extraction feature --- functions/check_steamcmd.sh | 6 ++---- functions/core_dl.sh | 40 ++++++++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index 4c65ec557..d62d5e249 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -12,11 +12,9 @@ echo "Installing steamCMD" if [ ! -d "${steamcmddir}" ]; then mkdir -v "${steamcmddir}" fi -fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "${steamcmddir}" "steamcmd_linux.tar.gz" -tar --verbose -zxf "${steamcmddir}/steamcmd_linux.tar.gz" -C "${steamcmddir}" -rm -v "${steamcmddir}/steamcmd_linux.tar.gz" +fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" +fn_dl_extract "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" "${steamcmddir}" chmod +x "${steamcmddir}/steamcmd.sh" -echo "" } diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 1a54b8714..e2b1c61b6 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -34,8 +34,26 @@ fi } fn_dl_extract(){ +filedir=${1} +filename=${2} +extractdir=${3} # extracts archives -: +echo -ne "extracting ${filename}..." +mime=$(file -b --mime-type "${filedir}/${filename}") + +if [ "${mime}" == "application/gzip" ]; then + tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}") +elif [ "${mime}" == "application/x-bzip2" ]; then + tarcmd=$(tar -jxf "${filedir}/${filename}" -C "${extractdir}") +fi +local exitcode=$? +if [ ${exitcode} -ne 0 ]; then + fn_printfaileol + echo "${tarcmd}" + exit ${exitcode} +else + fn_printokeol +fi } # Trap to remove file download if canceled before completed @@ -62,7 +80,7 @@ if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then mkdir -p "${filedir}" fi - echo -ne " fetching ${filename}...\c" + # Check curl exists and use available path curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" for curlcmd in ${curlpaths} @@ -78,15 +96,20 @@ if [ ! -f "${filedir}/${filename}" ]; then # if larger file shows progress bar if [[ $filename == *"tar"* ]]; then - curlfetch=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") - else - curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) + echo -ne "downloading ${filename}..." + sleep 1 + curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") + echo -ne "downloading ${filename}..." + else + echo -ne " fetching ${filename}...\c" + curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) fi - if [ $? -ne 0 ]; then + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then fn_printfaileol - echo "${curlfetch}" + echo "${curlcmd}" echo -e "${fileurl}\n" - exit 1 + exit ${exitcode} else fn_printokeol fi @@ -99,7 +122,6 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 fi fn_dl_md5 - # make file executable if run is set if [ "${run}" == "run" ]; then chmod +x "${filedir}/${filename}" From 55fff7a689988ebfde137f569397a9cffaf7670c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 00:53:30 +0000 Subject: [PATCH 123/643] removed echo --- functions/check_steamcmd.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index d62d5e249..ff713b85f 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -8,7 +8,6 @@ lgsm_version="160316" fn_install_steamcmd(){ -echo "Installing steamCMD" if [ ! -d "${steamcmddir}" ]; then mkdir -v "${steamcmddir}" fi From 6dc71d61480f8cc36593adf53f357ecc77ad7d5b Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Sat, 20 Feb 2016 12:05:43 +0100 Subject: [PATCH 124/643] Update core_getopt.sh --- functions/core_getopt.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index c5b6916c3..c9c875656 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -230,6 +230,7 @@ case "$getopt" in echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." echo -e "\e[34minstall\t\e[0mInstall the server." echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + echo -e "\e[34mfastdl\t\e[0mGenerates or update a FastDL folder for your server." } | column -s $'\t' -t esac exit From 7a58d80d9ec276002ed97ccd49ef05aa9b83cf3e Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Sat, 20 Feb 2016 12:41:55 +0100 Subject: [PATCH 125/643] check using mailx Keeping displaying the presence of exim4, sendmail, postfix, mailutils, and mailx in the right case. --- functions/check_deps.sh | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/functions/check_deps.sh b/functions/check_deps.sh index f6538bd63..88f8fb773 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -40,15 +40,23 @@ fi fn_deps_email(){ # Adds postfix to required dependencies if email notification is enabled if [ "${emailnotification}" == "on" ]; then - if [ -d /etc/exim4 ]; then - array_deps_required+=( exim4 ) - elif [ -d /etc/sendmail ]; then - array_deps_required+=( sendmail ) - elif [ -n "$(command -v dpkg-query)" ]; then - array_deps_required+=( mailutils postfix ) - elif [ -n "$(command -v yum)" ]; then - array_deps_required+=( mailx postfix ) - fi + if [ -f /usr/bin/mailx ]; then + if [ -d /etc/exim4 ]; then + array_deps_required+=( exim4 ) + elif [ -d /etc/sendmail ]; then + array_deps_required+=( sendmail ) + elif [ -n "$(command -v dpkg-query)" ]; then + array_deps_required+=( mailutils postfix ) + elif [ -n "$(command -v yum)" ]; then + array_deps_required+=( mailx postfix ) + fi + else + if [ -n "$(command -v dpkg-query)" ]; then + array_deps_required+=( mailutils postfix ) + elif [ -n "$(command -v yum)" ]; then + array_deps_required+=( mailx postfix ) + fi + fi fi } From 6afee9f422f229e5cc5436dd403db48dfe12e0cf Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 16:43:49 +0000 Subject: [PATCH 126/643] Moving install ut99 to new system --- functions/install_dl_ut99.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functions/install_dl_ut99.sh b/functions/install_dl_ut99.sh index fa7d64d6d..8a9157c55 100644 --- a/functions/install_dl_ut99.sh +++ b/functions/install_dl_ut99.sh @@ -8,4 +8,5 @@ echo "" echo "Downloading Server Files" echo "=================================" sleep 1 -fn_dl "ut-server-451-complete.tar.bz2" "${filesdir}" "http://gameservermanagers.com/files/ut99/ut-server-451-complete.tar.bz2" "42a8c9806e4fce10a56830caca83ce63" +fn_fetch_file "http://gameservermanagers.com/files/ut-server-451-complete.tar.bz2" "${lgsmdir}/tmp" "ut-server-451-complete.tar.bz2" "norun" "noforce" "42a8c9806e4fce10a56830caca83ce63" +fn_dl_extract "${lgsmdir}/tmp" "ut-server-451-complete.tar.bz2" "${filesdir}" \ No newline at end of file From 05dce64eb7bc166ee8f7395de05da8a47759d46b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 17:55:31 +0000 Subject: [PATCH 127/643] Update MD5 Check --- functions/core_dl.sh | 19 ++++++++++--------- functions/install_dl_ut99.sh | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index e2b1c61b6..f1a416638 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -14,21 +14,22 @@ lgsm_version="050216" fn_dl_md5(){ # Runs MD5 Check if available if [ -n "${md5}" ]; then - echo -ne "verifying ${filename} with MD5...\c" - local md5check=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') - if [ "${md5check}" != "${dl_md5}" ]; then + echo -ne "verifying ${filename} with MD5..." + sleep 1 + local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') + if [ "${md5sumcmd}" != "${md5}" ]; then fn_printfaileol - echo "${filename} MD5 checksum: ${md5check}" - echo "expected MD5 checksum: ${dl_md5}" + echo "${filename} returned MD5 checksum: ${md5sumcmd}" + echo "expected MD5 checksum: ${md5}" fn_scriptlog "failed to verify ${filename} with MD5" - fn_scriptlog "${filename} MD5 checksum: ${md5check}" - fn_scriptlog "expected MD5 checksum: ${dl_md5}" + fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" + fn_scriptlog "expected MD5 checksum: ${md5}" exit 1 else fn_printokeol fn_scriptlog "verifyed ${filename} with MD5" - fn_scriptlog "${filename} MD5 checksum: ${md5check}" - fn_scriptlog "expected MD5 checksum: ${dl_md5}" + fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" + fn_scriptlog "expected MD5 checksum: ${md5}" fi fi } diff --git a/functions/install_dl_ut99.sh b/functions/install_dl_ut99.sh index 8a9157c55..7d8b2fd23 100644 --- a/functions/install_dl_ut99.sh +++ b/functions/install_dl_ut99.sh @@ -8,5 +8,5 @@ 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" "42a8c9806e4fce10a56830caca83ce63" +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 From f732744910401a035a1e7d047a824c45f50f04ed Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 17:56:16 +0000 Subject: [PATCH 128/643] Altered how source is run --- functions/core_dl.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index f1a416638..91c9d02c4 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -122,16 +122,19 @@ if [ ! -f "${filedir}/${filename}" ]; then echo -e "" exit 1 fi - fn_dl_md5 # make file executable if run is set if [ "${run}" == "run" ]; then chmod +x "${filedir}/${filename}" - fi -fi -# run file if run is set -if [ "${run}" == "run" ]; then - source "${filedir}/${filename}" + fi fi + +if [ -f "${filedir}/${filename}" ]; then + fn_dl_md5 + # run file if run is set + if [ "${run}" == "run" ]; then + source "${filedir}/${filename}" + fi +fi } From bc254d39a8c2adb14801c789af9aa543eb908a70 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 18:01:23 +0000 Subject: [PATCH 129/643] Updated ut99 to use new download system --- UnrealTournament99/ut99server | 91 +++++++++++++++++++---------------- 1 file changed, 50 insertions(+), 41 deletions(-) diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index a1dd53887..8fe315593 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="121215" +version="200216" #### Variables #### @@ -28,6 +28,13 @@ parms="server ${defaultmap}.unr ini=${servercfgfullpath}" #### Advanced Variables #### +# Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="dgibbs64" +githubrepo="linuxgsm" +githubbranch="master" + # Server Details servicename="ut99-server" gamename="Unreal Tournament 99" @@ -38,6 +45,8 @@ rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" filesdir="${rootdir}/serverfiles" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" systemdir="${filesdir}/System" executabledir="${systemdir}" executable="./ucc-bin" @@ -60,66 +69,66 @@ emaillog="${scriptlogdir}/${servicename}-email.log" scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="dgibbs64" -githubrepo="linuxgsm" -githubbranch="master" - ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file From 15f99b7076708c92ad21dc80dcc3aa9dcc173991 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 18:21:15 +0000 Subject: [PATCH 130/643] Merging ut99server files in to install_server_files --- functions/command_install.sh | 5 +- functions/install_dl_ut99.sh | 12 ---- functions/install_server_files.sh | 109 ++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+), 15 deletions(-) delete mode 100644 functions/install_dl_ut99.sh create mode 100644 functions/install_server_files.sh 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 From 61258600c1fdc296315ade01cce003f9aa393777 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 18:24:12 +0000 Subject: [PATCH 131/643] renamed serverfiles to server_files --- functions/core_functions.sh | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 551e543db..4fbbd25e7 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -353,7 +353,7 @@ install_serverdir.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } -install_serverfiles.sh(){ +install_server_files.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } @@ -388,16 +388,6 @@ functionfile="${FUNCNAME}" fn_fetch_function } -install_ut99.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_dl_ut99.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - fix_ut99.sh(){ functionfile="${FUNCNAME}" fn_fetch_function From a422f3c08208594fc2216dedba97c0e9f6545ab1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 20 Feb 2016 18:29:03 +0000 Subject: [PATCH 132/643] corrected if --- functions/install_server_files.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh index d0af67112..be0576e3f 100644 --- a/functions/install_server_files.sh +++ b/functions/install_server_files.sh @@ -87,11 +87,11 @@ echo "" echo "Installing ${gamename} Server" echo "=================================" sleep 1 -if [ -z "${appid}" ]; then +if [ -n "${appid}" ]; then fn_install_server_files_steamcmd fi -if [ ! -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then +if [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then fn_install_server_files fi From 52ac61aea124d60ab26182e112fff18e7409bb6c Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Sat, 20 Feb 2016 22:09:56 +0100 Subject: [PATCH 133/643] Updated wiki address --- functions/command_fastdl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 77e02be45..63b7e2b6d 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -30,7 +30,7 @@ if [ -z "$(command -v bzip2)" ]; then echo -en "\n" sleep 1 echo "We advise using it" - echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/Fastdl#bzip2-compression" + echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/FastDL#bzip2-compression" sleep 2 else bzip2installed="1" @@ -311,7 +311,7 @@ fn_scriptlog "FastDL job done" sleep 2 echo -en "\n" echo "" -fn_printinfo "Need more doc ? See https://github.com/dgibbs64/linuxgsm/wiki/Fastdl" +fn_printinfo "Need more doc ? See https://github.com/dgibbs64/linuxgsm/wiki/FastDL" echo -en "\n" if [ "$bzip2installed" == "0" ]; then echo "By the way, you'd better install bzip2 an re-run this command !" From 0effc04d65ac1e57ed5fdecbeadcff2e462338e0 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Sun, 21 Feb 2016 12:18:19 +0100 Subject: [PATCH 134/643] Version, Will travis work ? --- functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_fastdl.sh b/functions/command_fastdl.sh index 63b7e2b6d..a509a14ae 100644 --- a/functions/command_fastdl.sh +++ b/functions/command_fastdl.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: http://gameservermanagers.com -lgsm_version="190216" +lgsm_version="210216" # Description: Creates a FastDL folder From 8b7cc0e2d070b4a81c404ef47ff4f837aca4c3dd Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Sun, 21 Feb 2016 23:56:17 +0100 Subject: [PATCH 135/643] Create rustserver --- Rust/rustserver | 147 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 Rust/rustserver diff --git a/Rust/rustserver b/Rust/rustserver new file mode 100644 index 000000000..35a95c9be --- /dev/null +++ b/Rust/rustserver @@ -0,0 +1,147 @@ +#!/bin/bash +# Rust +# Server Management Script +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: http://gameservermanagers.com +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="210215" + +#### Variables #### + +# Notification Email +# (on|off) +emailnotification="off" +email="email@example.com" + +# Steam login (not required) +steamuser="anonymous" +steampass="" + +# Server settings +servername="Hurtworld LGSM Server" +ip="0.0.0.0" +port="28015" +queryport="28016" +maxplayers="20" +map="" #Optional rust_island_2013 +creativemode="0" #Free Build +logfile="gamelog.txt" + +# Adding admins using STEAMID64 +# Example : addadmin 012345678901234567; addadmin 987654321098765432 +admins="" + +# Advanced +# Rollback server state (remove after start command) +loadsave="" +# Use unstable 64 bit server executable (O/1) +x64mode="0" + +# https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server +fn_parms(){ +parms="-batchmode -hostname ${servername} -map ${map} -queryport ${queryport} -maxplayers ${maxplayers} -datadir \"serverdata\"" +} + +#### Advanced Variables #### + +# Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="dgibbs64" +githubrepo="linuxgsm" +githubbranch="master" + +# Steam +appid="258550" + +# Server Details +servicename="rust-server" +gamename="Rust" +engine="unity3d" + +# Directories +rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" +selfname=$(basename $(readlink -f "${BASH_SOURCE[0]}")) +lockselfname=".${servicename}.lock" +filesdir="${rootdir}/serverfiles" +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./RustDedicated" +backupdir="${rootdir}/backups" + +# Logging +logdays="7" +gamelogdir="${rootdir}/log/server" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" + +gamelog="${gamelogdir}/${servicename}-game.log" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" + +##### Script ##### +# Do not edit + +fn_getgithubfile(){ +filename=$1 +exec=$2 +fileurl=${3:-$filename} +filepath="${rootdir}/${filename}" +filedir=$(dirname "${filepath}") +# If the function file is missing, then download +if [ ! -f "${filepath}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir "${filedir}" + fi + githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" + echo -e " fetching ${filename}...\c" + if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then + : + else + echo -e "\e[0;31mFAIL\e[0m\n" + echo "Curl is not installed!" + echo -e "" + exit + fi + curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo " ${curl}"|grep "curl:" + echo -e "${githuburl}\n" + exit + else + echo -e "\e[0;32mOK\e[0m" + fi + if [ "${exec}" ]; then + chmod +x "${filepath}" + fi +fi +if [ "${exec}" ]; then + source "${filepath}" +fi +} + +fn_runfunction(){ + fn_getgithubfile "functions/${functionfile}" 1 +} + +core_functions.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_runfunction +} + +core_functions.sh + +getopt=$1 +core_getopt.sh From 1079c19bfd9f8a07164aa3bb4443bff53caac517 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 00:30:31 +0100 Subject: [PATCH 136/643] Start parms v1 --- Rust/rustserver | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 35a95c9be..da2c5c7f8 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -31,21 +31,15 @@ queryport="28016" maxplayers="20" map="" #Optional rust_island_2013 creativemode="0" #Free Build -logfile="gamelog.txt" - -# Adding admins using STEAMID64 -# Example : addadmin 012345678901234567; addadmin 987654321098765432 -admins="" +# logfile="gamelog.txt" # Advanced # Rollback server state (remove after start command) loadsave="" -# Use unstable 64 bit server executable (O/1) -x64mode="0" # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode -hostname ${servername} -map ${map} -queryport ${queryport} -maxplayers ${maxplayers} -datadir \"serverdata\"" +parms="-batchmode -ip ${ip} -port ${port} -hostname ${servername} -map ${map} -queryport ${queryport} -maxplayers ${maxplayers} -datadir \"serverdata/\"" } #### Advanced Variables #### From c96b4c9262959fcac1f7d9e9b6996f02390b7b5c Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 14:04:11 +0100 Subject: [PATCH 137/643] Parms V2 Safe mode for now, with the syntax as it should be according to Unity usual commands --- Rust/rustserver | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index da2c5c7f8..740e1166e 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -24,22 +24,22 @@ steamuser="anonymous" steampass="" # Server settings -servername="Hurtworld LGSM Server" +servername="Rust LGSM Server" ip="0.0.0.0" -port="28015" -queryport="28016" -maxplayers="20" -map="" #Optional rust_island_2013 -creativemode="0" #Free Build -# logfile="gamelog.txt" +port="28015" #+server.port +rconport="28016" #+rcon.port +maxplayers="40" #+max.players +map="" #Optional +server.map "Procedural Map" or TestLevel # Advanced -# Rollback server state (remove after start command) -loadsave="" +worldsize="4000" #+server.worldsize default 4000 +saveinterval="600" #+server.saveinterval default 600 +logfile="\"gamelog.txt\"" # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode -ip ${ip} -port ${port} -hostname ${servername} -map ${map} -queryport ${queryport} -maxplayers ${maxplayers} -datadir \"serverdata/\"" +parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.-maxplayers ${maxplayers} -datadir \"serverdata/\" -logfile ${logfile}" + } #### Advanced Variables #### @@ -49,7 +49,7 @@ parms="-batchmode -ip ${ip} -port ${port} -hostname ${servername} -map ${map} -q # from a different repo and/or branch. githubuser="dgibbs64" githubrepo="linuxgsm" -githubbranch="master" +githubbranch="rust" # Steam appid="258550" From 642e79068dcbb54d6d2d466ed0a8dcbdcbda396d Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 14:12:43 +0100 Subject: [PATCH 138/643] removing a "-" --- Rust/rustserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index 740e1166e..4fedd73b6 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -38,7 +38,7 @@ logfile="\"gamelog.txt\"" # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.-maxplayers ${maxplayers} -datadir \"serverdata/\" -logfile ${logfile}" +parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} -datadir \"serverdata/\" -logfile ${logfile}" } From 608561582b6c631bcbfcd442e19a2d445d5bd28a Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 14:58:05 +0100 Subject: [PATCH 139/643] More start options --- Rust/rustserver | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 4fedd73b6..c9eec6fc8 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -32,13 +32,13 @@ maxplayers="40" #+max.players map="" #Optional +server.map "Procedural Map" or TestLevel # Advanced -worldsize="4000" #+server.worldsize default 4000 -saveinterval="600" #+server.saveinterval default 600 +worldsize="4000" #+server.worldsize default 4000 +saveinterval="600" #+server.saveinterval default 600 (seconds) logfile="\"gamelog.txt\"" # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} -datadir \"serverdata/\" -logfile ${logfile}" +parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} -datadir \"serverdata/\" -logfile ${logfile}" } From 0057536196259b21c19ae2bbdb32489cdf44f2fd Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 14:59:36 +0100 Subject: [PATCH 140/643] added rconport --- Rust/rustserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index c9eec6fc8..f31251ad9 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -38,7 +38,7 @@ logfile="\"gamelog.txt\"" # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} -datadir \"serverdata/\" -logfile ${logfile}" +parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.port ${rconport} -datadir \"serverdata/\" -logfile ${logfile}" } From 4b2894cc17a3cbacf41ae7d4c2c545a5e2b70254 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 15:00:14 +0100 Subject: [PATCH 141/643] Update rustserver --- Rust/rustserver | 1 - 1 file changed, 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index f31251ad9..003fcca06 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -39,7 +39,6 @@ logfile="\"gamelog.txt\"" # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.port ${rconport} -datadir \"serverdata/\" -logfile ${logfile}" - } #### Advanced Variables #### From 6b89e412a15f21f1559e7cc79f78b1fe0569a8f1 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 15:47:41 +0100 Subject: [PATCH 142/643] New start parms --- Rust/rustserver | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 003fcca06..d4737e38d 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -28,17 +28,18 @@ servername="Rust LGSM Server" ip="0.0.0.0" port="28015" #+server.port rconport="28016" #+rcon.port +rconpassword="" #+rcon.password maxplayers="40" #+max.players map="" #Optional +server.map "Procedural Map" or TestLevel # Advanced worldsize="4000" #+server.worldsize default 4000 -saveinterval="600" #+server.saveinterval default 600 (seconds) +saveinterval="300" #+server.saveinterval in seconds logfile="\"gamelog.txt\"" # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.port ${rconport} -datadir \"serverdata/\" -logfile ${logfile}" +parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -datadir \"serverdata/\" -logfile ${logfile}" } #### Advanced Variables #### From 3c7a732aab1ecbac40b8af83bb924ef3a40b3bbf Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 15:48:07 +0100 Subject: [PATCH 143/643] Server config --- Rust/cfg/server.cfg | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Rust/cfg/server.cfg diff --git a/Rust/cfg/server.cfg b/Rust/cfg/server.cfg new file mode 100644 index 000000000..91d7a32d9 --- /dev/null +++ b/Rust/cfg/server.cfg @@ -0,0 +1,48 @@ +# This file does not include all possible commands but it includes the most common/useful ones. +# If you want to see all possible comands, in the server console type: find . + +# Before some variables are a # symbol. This means it is disabled. Remove the # symbol to enable them. + +######################################### +# Important Settings You Need To Change # +######################################### + +# A text description of your server. For a new line add: \n +server.description "LGSM Server\nRust support : UltimateByte" + +# A URL to the image which shows up on the server details screen (dimensions are 512x256). +server.headerimage "https://github.com/dgibbs64/linuxgsm/raw/master/images/logo/lgsm-full-light.png" + +# The URL to your servers website. +server.url "http://gameservermanagers.com/" + +#################################### +# Optional Settings You Can Change # +#################################### + +# A value of false makes text chat location based only (players need to be close to each other). +# Values: true, false +#server.globalchat true + +# Controls if player vs player damage is allowed. If your server is primarily for building, you'll want to set this to false +# Values: true, false +#server.pve false + +# Controls fall damage. +# Values: true, false +#falldamage.enabled true + +# Helicopter bullet accuracy. Higher numbers are less accurate. +#heli.bulletAccuracy 2 + +################################################ +# Settings That Will Lag Server Is Set Too Low # +################################################ + +# Changes how often resources respawn. +#spawn.min_rate 0.1 +#spawn.max_rate 1 + +# Changes how close resources spawn to each other. +#spawn.min_density 0.1 +#spawn.max_density 1 From 4c6ac92fc99ff6a47f64a99937db642996170873 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 20:37:01 +0100 Subject: [PATCH 144/643] added cfg files and folders for check --- Rust/rustserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Rust/rustserver b/Rust/rustserver index d4737e38d..6a8829928 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -67,6 +67,9 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" executable="./RustDedicated" +serveridentitydir="${systemdir}/server/${servicename}" +servercfg="server.cfg" +servercfgdir="${serveridentitydir}/cfg" backupdir="${rootdir}/backups" # Logging From ef98defb1f2e9d26b2e829a9e412b365a9627fcc Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 20:42:15 +0100 Subject: [PATCH 145/643] servercfgfullpath --- Rust/rustserver | 1 + 1 file changed, 1 insertion(+) diff --git a/Rust/rustserver b/Rust/rustserver index 6a8829928..faa536b3f 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -70,6 +70,7 @@ executable="./RustDedicated" serveridentitydir="${systemdir}/server/${servicename}" servercfg="server.cfg" servercfgdir="${serveridentitydir}/cfg" +servercfgfullpath="${servercfgdir}/${servercfg}" backupdir="${rootdir}/backups" # Logging From 8dbadeabf5731ae44fa486e29a1a19574f094f9c Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 21:16:12 +0100 Subject: [PATCH 146/643] Rename server.cfg to lgsm-default.cfg --- Rust/cfg/{server.cfg => lgsm-default.cfg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Rust/cfg/{server.cfg => lgsm-default.cfg} (100%) diff --git a/Rust/cfg/server.cfg b/Rust/cfg/lgsm-default.cfg similarity index 100% rename from Rust/cfg/server.cfg rename to Rust/cfg/lgsm-default.cfg From 8f5fc4c9645e33876e650f8a7dc4a651e46e76e6 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 21:38:26 +0100 Subject: [PATCH 147/643] Default rcon + defaultcfg --- Rust/rustserver | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index faa536b3f..fb028a71d 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -28,7 +28,7 @@ servername="Rust LGSM Server" ip="0.0.0.0" port="28015" #+server.port rconport="28016" #+rcon.port -rconpassword="" #+rcon.password +rconpassword="CHANGE_ME" #+rcon.password maxplayers="40" #+max.players map="" #Optional +server.map "Procedural Map" or TestLevel @@ -71,6 +71,7 @@ serveridentitydir="${systemdir}/server/${servicename}" servercfg="server.cfg" servercfgdir="${serveridentitydir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" +servercfgdefault="{servercfgdir}/lgsm-default.cfg" backupdir="${rootdir}/backups" # Logging From 46260987e3ebb6cf84a9850fc81cee8a492dc36b Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 21:44:11 +0100 Subject: [PATCH 148/643] added rust default config --- functions/install_config.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/functions/install_config.sh b/functions/install_config.sh index 913bf26f0..41ccf8cc8 100644 --- a/functions/install_config.sh +++ b/functions/install_config.sh @@ -2,7 +2,7 @@ # LGSM install_config.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="100116" +lgsm_version="220216" fn_defaultconfig(){ echo "creating ${servercfg} config file." @@ -297,6 +297,11 @@ elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then wget -N /dev/null ${githuburl}/SeriousSam3BFE/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 fn_serious3config +elif [ "${gamename}" == "Rust" ]; then + echo -e "downloading server.cfg...\c" + wget -N /dev/null ${githuburl}/Rust/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig elif [ "${gamename}" == "Sven Co-op" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/SvenCoop/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq From 107d63723d0c1335cbc33eb1fd268f7c67758530 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 21:59:25 +0100 Subject: [PATCH 149/643] added rust --- functions/monitor_gsquery.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/functions/monitor_gsquery.sh b/functions/monitor_gsquery.sh index 55e2e9fc2..1bc93176e 100644 --- a/functions/monitor_gsquery.sh +++ b/functions/monitor_gsquery.sh @@ -23,6 +23,9 @@ if [ -f "${rootdir}/gsquery.py" ]; then elif [ "${gamename}" == "Hurtworld" ]; then gameport="${port}" port="${queryport}" + elif [ "${gamename}" == "Rust" ]; then + gameport="${port}" + port="${rconport}" fi fn_printinfo "Detected gsquery.py" fn_scriptlog "Detected gsquery.py" From b9e4a10fc6e853c529118d24a9d8b1603e15c9e5 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 22:24:39 +0100 Subject: [PATCH 150/643] nothing to add for Rust --- functions/monitor_gsquery.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/functions/monitor_gsquery.sh b/functions/monitor_gsquery.sh index 1bc93176e..55e2e9fc2 100644 --- a/functions/monitor_gsquery.sh +++ b/functions/monitor_gsquery.sh @@ -23,9 +23,6 @@ if [ -f "${rootdir}/gsquery.py" ]; then elif [ "${gamename}" == "Hurtworld" ]; then gameport="${port}" port="${queryport}" - elif [ "${gamename}" == "Rust" ]; then - gameport="${port}" - port="${rconport}" fi fn_printinfo "Detected gsquery.py" fn_scriptlog "Detected gsquery.py" From c4ef273d6a8cee1f4e26c6624067a98e62de8c29 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 22:40:13 +0100 Subject: [PATCH 151/643] added rust --- functions/command_details.sh | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/functions/command_details.sh b/functions/command_details.sh index 6de82eb8e..a8ee48931 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -537,6 +537,27 @@ echo -e "" fn_details_statusbottom } +fn_details_rust(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "rustserver script" +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep Rust" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${rconport}\ttcp" + +} | column -s $'\t' -t +echo -e "" + +fn_details_statusbottom +} + fn_details_unreal(){ echo -e "" echo -e "\e[92mPorts\e[0m" @@ -615,7 +636,7 @@ fn_details_disk fn_details_gameserver fn_details_backup # Some game servers do not have parms. -if [ "${gamename}" != "Teamspeak 3" ]||[ "${engine}" != "avalanche" ]||[ "${engine}" != "dontstarve" ]||[ "${engine}" == "projectzomboid" ]; then +if [ "${gamename}" != "Teamspeak 3" ]||[ "${engine}" != "avalanche" ]||[ "${engine}" != "dontstarve" ]||[ "${engine}" != "projectzomboid" ]; then fn_parms fn_details_commandlineparms fi @@ -654,6 +675,8 @@ elif [ "${gamename}" == "7 Days To Die" ]; then fn_details_sdtd elif [ "${gamename}" == "Teamspeak 3" ]; then fn_details_teamspeak3 +elif [ "${gamename}" == "Rust" ]; then + fn_details_rust else fn_printerrornl "Unable to detect server engine." fi From d2e25b1e31bf5788f5d1049979603ecb961032da Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 22:59:18 +0100 Subject: [PATCH 152/643] $ --- Rust/rustserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index fb028a71d..29bafa846 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -71,7 +71,7 @@ serveridentitydir="${systemdir}/server/${servicename}" servercfg="server.cfg" servercfgdir="${serveridentitydir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -servercfgdefault="{servercfgdir}/lgsm-default.cfg" +servercfgdefault="${servercfgdir}/lgsm-default.cfg" backupdir="${rootdir}/backups" # Logging From bc4f0f6934dbe582a119a7d1647261a70c090123 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 23:36:01 +0100 Subject: [PATCH 153/643] better gamelog naming --- Rust/rustserver | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 29bafa846..07fedc5bd 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210215" +version="230215" #### Variables #### @@ -26,20 +26,19 @@ steampass="" # Server settings servername="Rust LGSM Server" ip="0.0.0.0" -port="28015" #+server.port -rconport="28016" #+rcon.port -rconpassword="CHANGE_ME" #+rcon.password -maxplayers="40" #+max.players -map="" #Optional +server.map "Procedural Map" or TestLevel +port="28015" +rconport="28016" +rconpassword="CHANGE_ME" #Don't let it blank but change it +maxplayers="50" #+max.players # Advanced +map="" #Optional +server.map "Procedural Map" or TestLevel worldsize="4000" #+server.worldsize default 4000 saveinterval="300" #+server.saveinterval in seconds -logfile="\"gamelog.txt\"" # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -datadir \"serverdata/\" -logfile ${logfile}" +parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -datadir \"serverdata/\" -logfile ${gamelogfile}" } #### Advanced Variables #### @@ -84,6 +83,7 @@ gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" +gamelogfile="\"gamelog-$(date '+%Y-%m-%d-%H-%M-%S').log\"" scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" From 7dcc8cb26b2e2915d86f2747639a108967e986c2 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 23:55:06 +0100 Subject: [PATCH 154/643] moving logfiles for games with bad log management --- functions/logs.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/functions/logs.sh b/functions/logs.sh index a294c4d35..78c95fa97 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -16,6 +16,17 @@ if [ -n "${consolelog}" ]; then fi fi +# For games not displaying a console, and having logs into their game folder +if [ -n ${gamelogfile} ]; then + if [ -n $(find ${systemdir} -name gamelog*.log ) ]; then + fn_printinfo "Moving game logs to ${gamelogdir}" + fn_scriptlog "Moving game logs to ${gamelogdir}" + echo -en "\n" + sleep1 + mv "${systemdir}"/gamelog*.log "${gamelogdir}" + fi +fi + # Log manager will start the cleanup if it finds logs older than "${logdays}" if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then fn_printdots "Starting" From 5643546d19ec83919afeab582865e89433565471 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Mon, 22 Feb 2016 23:55:51 +0100 Subject: [PATCH 155/643] space --- functions/logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/logs.sh b/functions/logs.sh index 78c95fa97..a047921a9 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -22,7 +22,7 @@ if [ -n ${gamelogfile} ]; then fn_printinfo "Moving game logs to ${gamelogdir}" fn_scriptlog "Moving game logs to ${gamelogdir}" echo -en "\n" - sleep1 + sleep 1 mv "${systemdir}"/gamelog*.log "${gamelogdir}" fi fi From 25d1300861261681d46b686b1048205390918208 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Tue, 23 Feb 2016 00:13:54 +0100 Subject: [PATCH 156/643] added ip settings & cleaning comments --- Rust/rustserver | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 07fedc5bd..0644a4aea 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -24,21 +24,21 @@ steamuser="anonymous" steampass="" # Server settings +# More settings available after install in serverfiles/server/rust-server/server.cfg servername="Rust LGSM Server" ip="0.0.0.0" port="28015" rconport="28016" -rconpassword="CHANGE_ME" #Don't let it blank but change it -maxplayers="50" #+max.players +rconpassword="CHANGE_ME" # Don't let it blank but change it +maxplayers="50" # Advanced -map="" #Optional +server.map "Procedural Map" or TestLevel -worldsize="4000" #+server.worldsize default 4000 -saveinterval="300" #+server.saveinterval in seconds +worldsize="4000" # default 4000; min : 2000 max : 8000 +saveinterval="300" # Auto-save in seconds # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -datadir \"serverdata/\" -logfile ${gamelogfile}" +parms="-batchmode +server.ip ${ip} +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -datadir \"serverdata/\" -logfile ${gamelogfile}" } #### Advanced Variables #### From 1383ba46ab1589fdf14fc71ce3907e0d50768c36 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Tue, 23 Feb 2016 00:21:12 +0100 Subject: [PATCH 157/643] added port/tickrate/comments --- Rust/rustserver | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index 0644a4aea..c722be79c 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -35,10 +35,11 @@ maxplayers="50" # Advanced worldsize="4000" # default 4000; min : 2000 max : 8000 saveinterval="300" # Auto-save in seconds +tickrate="30" # default 30; min acceptable 15 , max 100 or 128 # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.ip ${ip} +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -datadir \"serverdata/\" -logfile ${gamelogfile}" +parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -datadir \"serverdata/\" -logfile ${gamelogfile}" } #### Advanced Variables #### From 53fdcfd2814e9aa4466a912a9aa9ffb753908324 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Tue, 23 Feb 2016 00:42:16 +0100 Subject: [PATCH 158/643] Version number --- functions/logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/logs.sh b/functions/logs.sh index a047921a9..be1ae119d 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: http://gameservermanagers.com -lgsm_version="100215" +lgsm_version="230216" # Description: Acts as a log rotater, removing old logs. From e4c76d516ef91fcd731a8b24b2da4e0ca1b05c56 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Tue, 23 Feb 2016 00:42:32 +0100 Subject: [PATCH 159/643] version number --- functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_details.sh b/functions/command_details.sh index a8ee48931..db6973416 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -2,7 +2,7 @@ # LGSM command_details.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="190316" +lgsm_version="230216" # Description: Displays server infomation. From 8a596c635d2032a28698b792839dfe36ac731d7e Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Tue, 23 Feb 2016 00:52:50 +0100 Subject: [PATCH 160/643] Fix port info --- functions/command_details.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_details.sh b/functions/command_details.sh index db6973416..32965eb2e 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -549,8 +549,8 @@ echo -e "netstat -atunp | grep Rust" echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${rconport}\ttcp" + echo -e "> Game/Query\tINBOUND\t${port}\tudp" + echo -e "> RCON\tINBOUND\t${rconport}\ttcp" } | column -s $'\t' -t echo -e "" From 5b5d01394fb9bd11971b1a8b4ff4720e5946de3a Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Tue, 23 Feb 2016 01:00:45 +0100 Subject: [PATCH 161/643] Double quotes --- functions/logs.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/logs.sh b/functions/logs.sh index be1ae119d..ec21d3241 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -17,8 +17,8 @@ if [ -n "${consolelog}" ]; then fi # For games not displaying a console, and having logs into their game folder -if [ -n ${gamelogfile} ]; then - if [ -n $(find ${systemdir} -name gamelog*.log ) ]; then +if [ -n "${gamelogfile}" ]; then + if [ -n "$(find "${systemdir}" -name gamelog*.log)" ]; then fn_printinfo "Moving game logs to ${gamelogdir}" fn_scriptlog "Moving game logs to ${gamelogdir}" echo -en "\n" From eff90db5f19c7d06cfbdc66b097b494c70408bb8 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Tue, 23 Feb 2016 01:09:01 +0100 Subject: [PATCH 162/643] double quotes --- functions/logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/logs.sh b/functions/logs.sh index ec21d3241..68e3d0dcf 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -18,7 +18,7 @@ fi # For games not displaying a console, and having logs into their game folder if [ -n "${gamelogfile}" ]; then - if [ -n "$(find "${systemdir}" -name gamelog*.log)" ]; then + if [ -n "$(find "${systemdir}" -name "gamelog*.log")" ]; then fn_printinfo "Moving game logs to ${gamelogdir}" fn_scriptlog "Moving game logs to ${gamelogdir}" echo -en "\n" From bc56bbf86afdc28e981c9ca5e195c84c4024b062 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Tue, 23 Feb 2016 10:11:56 +0100 Subject: [PATCH 163/643] Removed unused -datadir --- Rust/rustserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index c722be79c..16c7f9ee5 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -39,7 +39,7 @@ tickrate="30" # default 30; min acceptable 15 , max 100 or 128 # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -datadir \"serverdata/\" -logfile ${gamelogfile}" +parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" } #### Advanced Variables #### From e7a8bd2acdc9b29f634b48045f1293758707ba69 Mon Sep 17 00:00:00 2001 From: lrob <robin.labadie@gmail.com> Date: Tue, 23 Feb 2016 11:20:50 +0100 Subject: [PATCH 164/643] Credits to Wulf from Oxidemod --- Rust/rustserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index 16c7f9ee5..7e7457a44 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -2,7 +2,7 @@ # Rust # Server Management Script # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributor: UltimateByte (LGSM adaptation), Wulf (Information) # Website: http://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log From cdc859d394eac612215611b69cc7da6d8f58ad30 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 23 Feb 2016 21:51:16 +0000 Subject: [PATCH 165/643] Changed to master --- Rust/rustserver | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 7e7457a44..e7832b2be 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -25,11 +25,11 @@ steampass="" # Server settings # More settings available after install in serverfiles/server/rust-server/server.cfg -servername="Rust LGSM Server" +servername="Rust" ip="0.0.0.0" port="28015" rconport="28016" -rconpassword="CHANGE_ME" # Don't let it blank but change it +rconpassword="CHANGE_ME" maxplayers="50" # Advanced @@ -49,7 +49,7 @@ parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickr # from a different repo and/or branch. githubuser="dgibbs64" githubrepo="linuxgsm" -githubbranch="rust" +githubbranch="master" # Steam appid="258550" From d6eaa8f7962487bd67cdc97dfb7caab39310d504 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 23 Feb 2016 21:51:25 +0000 Subject: [PATCH 166/643] altered default password --- QuakeLive/qlserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 57ab6bda6..3e8246d3d 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -26,9 +26,9 @@ steampass="" # Start Variables gameport="27960" rconport="28960" -rconpassword="ch@ng3me" +rconpassword="CHANGE_ME" statsport="${gameport}" -statspassword="ch@ng3me" +statspassword="CHANGE_ME" mappool='mappool.txt' ip="0.0.0.0" updateonstart="off" From e5fc167ac67e1cfddfab71ae4f58c24bad5e2f96 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 24 Feb 2016 17:24:59 +0000 Subject: [PATCH 167/643] Added new images --- images/screens/DST_menu.png | Bin 0 -> 351350 bytes images/screens/DST_title.png | Bin 0 -> 333784 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/screens/DST_menu.png create mode 100644 images/screens/DST_title.png diff --git a/images/screens/DST_menu.png b/images/screens/DST_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..5b307f5aae8df8cf515a73582c1e9222d3910bad GIT binary patch literal 351350 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�Ju~d*4z$l{$g%Ak2 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 literal 0 HcmV?d00001 diff --git a/images/screens/DST_title.png b/images/screens/DST_title.png new file mode 100644 index 0000000000000000000000000000000000000000..b189898f9492f193e10c99cedaccec8a4379c99a GIT binary patch literal 333784 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%0Du5{)>>_z+!&7sfH0p| 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 N002ovPDHLkV1f(<UIhRE literal 0 HcmV?d00001 From 51ca1a27feebea79c376f3b2a1964d192e7490d7 Mon Sep 17 00:00:00 2001 From: Manuel Scoppettuolo <WSG-ViViV@users.noreply.github.com> Date: Fri, 26 Feb 2016 00:58:14 +0100 Subject: [PATCH 168/643] Update on start variable --- Rust/rustserver | 1 + 1 file changed, 1 insertion(+) diff --git a/Rust/rustserver b/Rust/rustserver index e7832b2be..c1f2980cd 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -27,6 +27,7 @@ steampass="" # More settings available after install in serverfiles/server/rust-server/server.cfg servername="Rust" ip="0.0.0.0" +updateonstart="off" port="28015" rconport="28016" rconpassword="CHANGE_ME" From ff5be5c68f6016a9ba9442b21f3c4deeaddfd722 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 10:20:46 +0000 Subject: [PATCH 169/643] Added auto install to unreal games --- functions/core_getopt.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index 95196d0ef..92c8897ab 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -259,6 +259,8 @@ case "$getopt" in command_dev_debug.sh;; i|install) command_install.sh;; + ai|auto-install) + fn_autoinstall;; mc|map-compressor) compress_ut99_maps.sh;; dd|depsdetect) @@ -382,6 +384,8 @@ case "$getopt" in command_dev_debug.sh;; i|install) command_install.sh;; + ai|auto-install) + fn_autoinstall;; mc|map-compressor) compress_unreal2_maps.sh;; dd|depsdetect) From a3a0d78b44d953f2c81af6325ea93ef2ccce49b4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 10:21:40 +0000 Subject: [PATCH 170/643] Auto install descriptions --- functions/core_getopt.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index 92c8897ab..ed3bd1369 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -283,6 +283,7 @@ case "$getopt" in echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." echo -e "\e[34minstall\t\e[0mInstall the server." + echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." } | column -s $'\t' -t esac @@ -408,6 +409,7 @@ case "$getopt" in echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." echo -e "\e[34minstall\t\e[0mInstall the server." + echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." } | column -s $'\t' -t esac From b21c1eeac0fadb4620f3e33c84e2d87873d487cd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 10:29:13 +0000 Subject: [PATCH 171/643] Moved gsquery to functions --- {GameServerQuery => functions}/gsquery.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {GameServerQuery => functions}/gsquery.py (100%) diff --git a/GameServerQuery/gsquery.py b/functions/gsquery.py similarity index 100% rename from GameServerQuery/gsquery.py rename to functions/gsquery.py From 85e93ad0736e99d7e0d21885253d9bd611b4cb40 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 10:56:52 +0000 Subject: [PATCH 172/643] Added gsquery.py to functions --- functions/core_functions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 4fbbd25e7..fdc5f9565 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -281,6 +281,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +gsquery.py(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + # Update From 33ed3562ab0d74ae8ae6d0c06dbbeb0f1b5e4650 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 11:37:10 +0000 Subject: [PATCH 173/643] Code tidy --- functions/info_config.sh | 46 ++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/functions/info_config.sh b/functions/info_config.sh index 60d2d77e0..6e9f1412b 100644 --- a/functions/info_config.sh +++ b/functions/info_config.sh @@ -197,29 +197,29 @@ elif [ "${engine}" == "realvirtuality" ]; then slots="\e[0;31mUNAVAILABLE\e[0m" fi - # port - if [ "${port}" != "" ]; then - port=${port} - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # query port - if [ "${port}" != "" ]; then - queryport=$((port+1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - - # master port - if [ "${port}" != "" ]; then - masterport=$((port+2)) - fi - if [ ! -n "${masterport}" ]; then - masterport="0" - fi + # port + if [ "${port}" != "" ]; then + port=${port} + fi + if [ ! -n "${port}" ]; then + port="0" + fi + + # query port + if [ "${port}" != "" ]; then + queryport=$((port+1)) + fi + if [ ! -n "${queryport}" ]; then + queryport="0" + fi + + # master port + if [ "${port}" != "" ]; then + masterport=$((port+2)) + fi + if [ ! -n "${masterport}" ]; then + masterport="0" + fi # Serious Sam elif [ "${engine}" == "seriousengine35" ]; then From 911d649f43efab38be1d627664f38d7dc0fbd803 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 13:13:00 +0000 Subject: [PATCH 174/643] Added excecutecmd to allow cmds to not execute --- functions/core_dl.sh | 27 +++++++++++++++------------ functions/core_functions.sh | 6 ------ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 91c9d02c4..2ad1f3b67 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -67,14 +67,15 @@ fn_fetch_trap() { } # Downloads file using curl and run it if required -# fn_fetch_file "fileurl" "filedir" "filename" "run" "force" "md5" +# fn_fetch_file "fileurl" "filedir" "filename" "executecmd" "run" "force" "md5" fn_fetch_file(){ fileurl=${1} filedir=${2} filename=${3} -run=${4:-0} -force=${5:-0} -md5=${6} +executecmd=${4:-0} +run=${5:-0} +force=${6:-0} +md5=${7} # If the file is missing, then download if [ ! -f "${filedir}/${filename}" ]; then @@ -122,8 +123,8 @@ if [ ! -f "${filedir}/${filename}" ]; then echo -e "" exit 1 fi - # make file executable if run is set - if [ "${run}" == "run" ]; then + # make file executecmd if executecmd is set + if [ "${executecmd}" == "executecmd" ]; then chmod +x "${filedir}/${filename}" fi fi @@ -143,18 +144,19 @@ fi # github_file_url_dir: The directory the file is located in teh GitHub repo # github_file_url_name: name of file # filepath: location file to be saved -# run: Optional, set to 1 to make file executable +# executecmd: set to "executecmd" to make file executecmd +# run: Optional, set to run to execute the file # force: force download of file even if exists fn_fetch_file_github(){ github_file_url_dir=${1} github_file_url_name=${2} filepath=${3} filename="${github_file_url_name}" -run=${4:-0} -force=${5:-0} +executecmd=${4:-0} +run=${5:-0} +force=${6:-0} githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -echo -e " fetching ${filename}...\c" -fn_fetch_file "${githuburl}" "${filepath}" "${filename}" "${run}" "${force}" +fn_fetch_file "${githuburl}" "${filepath}" "${filename}" "${executecmd}" "${run}" "${force}" } @@ -166,6 +168,7 @@ github_file_url_name="${functionfile}" # name of the github file githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" filedir="${functionsdir}" # local dir that will contain the file filename="${github_file_url_name}" # name of the local file +executecmd="executecmd" run="run" -fn_fetch_file "${githuburl}" "${filedir}" "${filename}" "${run}" +fn_fetch_file "${githuburl}" "${filedir}" "${filename}" "${executecmd}" "${run}" } \ No newline at end of file diff --git a/functions/core_functions.sh b/functions/core_functions.sh index fdc5f9565..0ef2cc095 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -281,12 +281,6 @@ functionfile="${FUNCNAME}" fn_fetch_function } -gsquery.py(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - # Update update_check.sh(){ From 1e2ec54367a5f3fa368ad281e5bf128bc0e7b2e0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 18:49:49 +0000 Subject: [PATCH 175/643] Added fn_printokeolnl and fn_printfaileolnl --- functions/core_messages.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/functions/core_messages.sh b/functions/core_messages.sh index 939e73889..c8b3fb7f0 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -2,7 +2,7 @@ # LGSM fn_messages function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="380216" # Description: Defines on-screen messages such as [ OK ] and how script logs look. @@ -139,10 +139,18 @@ fn_printinfomationnl(){ # FAIL for end of line fn_printokeol(){ + echo -en "\e[0;32mOK\e[0m" +} + +fn_printokeolnl(){ echo -e "\e[0;32mOK\e[0m" } # FAIL for end of line fn_printfaileol(){ + echo -en "\e[0;31mFAIL\e[0m\n" +} + +fn_printfaileolnl(){ echo -e "\e[0;31mFAIL\e[0m\n" } \ No newline at end of file From 5d687b023dde4653b1f4f564635edef5fff8edfe Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 19:00:47 +0000 Subject: [PATCH 176/643] Major update to monitor_gsquery.sh * Now loops for 60 seconds checking 4 times for if fails * gsquery .py moved to functions dir * uses new core_dl feature so gsquery is auto installed * removed old code * added colors --- functions/monitor_gsquery.sh | 157 +++++++++++++++++------------------ 1 file changed, 77 insertions(+), 80 deletions(-) diff --git a/functions/monitor_gsquery.sh b/functions/monitor_gsquery.sh index 55e2e9fc2..c714d64ee 100644 --- a/functions/monitor_gsquery.sh +++ b/functions/monitor_gsquery.sh @@ -4,94 +4,91 @@ # Website: http://gameservermanagers.com lgsm_version="271215" -# Description: uses gsquery.py to directly query the server. -# Detects if the server has frozen. +# Description: uses gsquery.py to query the server port. +# Detects if the server has frozen with the proccess still running. local modulename="Monitor" -if [ -f "${rootdir}/gsquery.py" ]; then - if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then - gameport=$(grep Port= "${servercfgfullpath}"|grep -v Master|grep -v LAN|grep -v Proxy|grep -v Listen|tr -d '\r'|tr -cd '[:digit:]') - port=$((${gameport} + 1)) - elif [ "${engine}" == "spark" ]; then - port=$((${port} + 1)) - elif [ "${engine}" == "realvirtuality" ]; then - queryport=$(grep -s steamqueryport= "${servercfgfullpath}"|grep -v //|tr -d '\r'|tr -cd '[:digit:]') - port=${queryport} - elif [ "${gamename}" == "7 Days To Die" ]; then - gameport=$(grep ServerPort "${servercfgfullpath}"|tr -cd '[:digit:]') - port=$((${gameport} + 1)) - elif [ "${gamename}" == "Hurtworld" ]; then - gameport="${port}" - port="${queryport}" - fi - fn_printinfo "Detected gsquery.py" - fn_scriptlog "Detected gsquery.py" - sleep 1 - fn_printdots "Querying port: ${ip}:${port} : QUERYING" - fn_scriptlog "Querying port: ${ip}:${port} : QUERYING" - sleep 1 - serverquery=$("${rootdir}/gsquery.py" -a ${ip} -p ${port} -e ${engine} 2>&1) + +# Downloads gsquery.py if missing +if [ ! -f "${functionsdir}/gsquery.py" ]; then + fn_fetch_file_github "functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" +fi + +info_config.sh + +if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then + port=$((${port} + 1)) +elif [ "${engine}" == "spark" ]; then + port=$((${port} + 1)) +fi + +if [ -z "${queryport}" ]; then + port="${queryport}" +fi + + +fn_printinfo "Querying port: gsquery.py enabled" +fn_scriptlog "gsquery.py enabled" +sleep 1 +fn_printdots "Querying port: ${ip}:${port}: 0/1 : " +fn_printqueryingeol +fn_scriptlog "Querying port: ${ip}:${port}: 1 : QUERYING" +sleep 1 + + +# Will query up to 4 times every 15 seconds. +# Servers changing map can return a failure. +# Will Wait up to 60 seconds to confirm server is down giving server time to change map. +queryattempt=0 +totalseconds=0 +for i in {1..4}; do + gsquerycmd=$("${functionsdir}"/gsquery.py -a ${ip} -p 1 -e ${engine} 2>&1) exitcode=$? - if [ "${exitcode}" == "1" ]||[ "${exitcode}" == "2" ]||[ "${exitcode}" == "3" ]||[ "${exitcode}" == "4" ]; then - fn_printfail "Querying port: ${ip}:${port} : ${serverquery}" - fn_scriptlog "Querying port: ${ip}:${port} : ${serverquery}" + + if [ "${exitcode}" == "0" ]; then + # Server OK + fn_printok "Querying port: ${ip}:${port}: " + fn_printokeol + fn_scriptlog "Querying port: ${ip}:${port}: OK" sleep 1 - echo -en "\n" - if [ -z "${secondquery}" ]; then - if [ "${engine}" == "unreal2" ]; then - # unreal 2: Map change can take around 60 seconds - fn_printinfo "Waiting 60 seconds to re-query" - fn_scriptlog "Waiting 60 seconds to re-query" - sleep 60 - else - fn_printinfo "Waiting 30 seconds to re-query" - fn_scriptlog "Waiting 30 seconds to re-query" - sleep 30 - fi - secondquery=1 - monitor_gsquery.sh - fi + exit + else + # Server failed query + queryattempt=$((queryattempt + 1)) + fn_scriptlog "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : ${gsquerycmd}" + seconds=0 + # Seconds counter + while [ true ]; do + fn_printfail "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : \e[0;31m${gsquerycmd}\e[0m" + seconds=$((seconds + 1)) + totalseconds=$((totalseconds + 1)) + sleep 1 + if [ "${seconds}" == "15" ]; then + fn_printdots "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : " + fn_printqueryingeol + fn_scriptlog "Querying port: ${ip}:${port}: ${queryattempt} : QUERYING" + sleep 1 + break + fi + done + fi + + if [ "${queryattempt}" == "4" ]; then + # Server failed query 4 times confirmed failure + fn_printfail "Querying port: ${ip}:${port}: " + fn_printfaileol + fn_scriptlog "Querying port: ${ip}:${port}: ${gsquerycmd}" + fn_scriptlog "Querying port: ${ip}:${port}: FAIL" + sleep 1 + + # Send email notification if enabled if [ "${emailnotification}" = "on" ]; then info_config.sh subject="${servicename} Monitor - Starting ${servername}" - failurereason="Failed to query ${servicename}: ${serverquery}" + failurereason="Failed to query ${servicename}: ${gsquerycmd}" actiontaken="restarted ${servicename}" email.sh fi fn_restart - exit 1 - elif [ "${exitcode}" == "0" ]; then - fn_printok "Querying port: ${ip}:${port} : OK" - fn_scriptlog "Querying port: ${ip}:${port} : OK" - sleep 1 - echo -en "\n" - exit - elif [ "${exitcode}" == "126" ]; then - fn_printfail "Querying port: ${ip}:${port} : ERROR: ${rootdir}/gsquery.py: Permission denied" - fn_scriptlog "Querying port: ${ip}:${port} : ERROR: ${rootdir}/gsquery.py: Permission denied" - sleep 1 - echo -en "\n" - echo "Attempting to resolve automatically" - chmod +x -v "${rootdir}/gsquery.py" - if [ $? -eq 0 ]; then - monitor_gsquery.sh - else - fn_printfailure "Unable to resolve automatically. Please manually fix permissions.\n" - owner=$(ls -al ${rootdir}/gsquery.py|awk '{ print $3 }') - echo "As user ${owner} or root run the following command." - whoami=$(whoami) - echo -en "\nchown ${whoami}:${whoami} ${rootdir}/gsquery.py\n\n" - exit 1 - fi - else - fn_printfail "Querying port: ${ip}:${port} : UNKNOWN ERROR" - fn_scriptlog "Querying port: ${ip}:${port} : UNKNOWN ERROR" - sleep 1 - echo -en "\n" - ${rootdir}/gsquery.py -a ${ip} -p ${port} -e ${engine} - exit 1 - fi -else - fn_printfailnl "Could not find ${rootdir}/gsquery.py" - fn_scriptlog "Could not find ${rootdir}/gsquery.py" -fi + fi +done \ No newline at end of file From d1491d598489736b2cdf4d33536d8891ea5ceae3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 19:00:58 +0000 Subject: [PATCH 177/643] Added fn_printqueryingeol --- functions/core_messages.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/functions/core_messages.sh b/functions/core_messages.sh index c8b3fb7f0..88a0a8127 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -153,4 +153,13 @@ fn_printfaileol(){ fn_printfaileolnl(){ echo -e "\e[0;31mFAIL\e[0m\n" +} + +# QUERYING for end of line +fn_printqueryingeol(){ + echo -en "\e[0;31mQUERYING\e[0m\n" +} + +fn_printqueryingeolnl(){ + echo -e "\e[0;31mQUERYING\e[0m\n" } \ No newline at end of file From 20fd5936fb36f9ca2a5c3d5b0fb091a4a21031a9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 19:01:37 +0000 Subject: [PATCH 178/643] Minor tidy --- functions/info_config.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/functions/info_config.sh b/functions/info_config.sh index 6e9f1412b..3fe13fc0e 100644 --- a/functions/info_config.sh +++ b/functions/info_config.sh @@ -207,7 +207,7 @@ elif [ "${engine}" == "realvirtuality" ]; then # query port if [ "${port}" != "" ]; then - queryport=$((port+1)) + queryport=$((port + 1)) fi if [ ! -n "${queryport}" ]; then queryport="0" @@ -215,7 +215,7 @@ elif [ "${engine}" == "realvirtuality" ]; then # master port if [ "${port}" != "" ]; then - masterport=$((port+2)) + masterport=$((port + 2)) fi if [ ! -n "${masterport}" ]; then masterport="0" @@ -274,7 +274,7 @@ elif [ "${engine}" == "seriousengine35" ]; then # query port if [ -f "${servercfgfullpath}" ]; then - queryport=$((${port} + 1)) + queryport=$((port + 1)) fi if [ ! -n "${queryport}" ]; then queryport="0" From 7a13b5f669dad176877ec3aea20824aa766fc8ad Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 19:02:52 +0000 Subject: [PATCH 179/643] Removed gsquery installed --- functions/command_install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/functions/command_install.sh b/functions/command_install.sh index a68a5cc62..bd61e4930 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="200216" +lgsm_version="260216" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" @@ -27,7 +27,6 @@ fi # Configuration fix.sh -install_gsquery.sh install_config.sh if [ "${gamename}" == "Counter Strike: Global Offensive" ]||[ "${gamename}" == "Team Fortress 2" ]||[ "${gamename}" == "BrainBread 2" ]; then install_gslt.sh From cec75582c30c5d10d3a86e1189d49bb86331c784 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 19:06:29 +0000 Subject: [PATCH 180/643] Updated fn_printokeol to fn_printokeolnl --- functions/check_steamcmd.sh | 2 +- functions/core_dl.sh | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index ff713b85f..760b0b835 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -54,7 +54,7 @@ if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then fi elif [ "${function_selfname}" == "command_install.sh" ]; then fn_printinfomation "SteamCMD is already installed..." - fn_printokeol + fn_printokeolnl fi } diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 2ad1f3b67..9d2b95fff 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -18,7 +18,7 @@ if [ -n "${md5}" ]; then sleep 1 local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') if [ "${md5sumcmd}" != "${md5}" ]; then - fn_printfaileol + fn_printfaileolnl echo "${filename} returned MD5 checksum: ${md5sumcmd}" echo "expected MD5 checksum: ${md5}" fn_scriptlog "failed to verify ${filename} with MD5" @@ -26,7 +26,7 @@ if [ -n "${md5}" ]; then fn_scriptlog "expected MD5 checksum: ${md5}" exit 1 else - fn_printokeol + fn_printokeolnl fn_scriptlog "verifyed ${filename} with MD5" fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" fn_scriptlog "expected MD5 checksum: ${md5}" @@ -49,11 +49,11 @@ elif [ "${mime}" == "application/x-bzip2" ]; then fi local exitcode=$? if [ ${exitcode} -ne 0 ]; then - fn_printfaileol + fn_printfaileolnl echo "${tarcmd}" exit ${exitcode} else - fn_printokeol + fn_printokeolnl fi } @@ -108,17 +108,17 @@ if [ ! -f "${filedir}/${filename}" ]; then fi local exitcode=$? if [ ${exitcode} -ne 0 ]; then - fn_printfaileol + fn_printfaileolnl echo "${curlcmd}" echo -e "${fileurl}\n" exit ${exitcode} else - fn_printokeol + fn_printokeolnl fi # remove trap trap - INT else - fn_printfaileol + fn_printfaileolnl echo "Curl is not installed!" echo -e "" exit 1 From 5de4021e75acdb9c36befdf21ef826ba07f290e8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 19:06:44 +0000 Subject: [PATCH 181/643] Removed install_gsquery.sh --- functions/install_gsquery.sh | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 functions/install_gsquery.sh diff --git a/functions/install_gsquery.sh b/functions/install_gsquery.sh deleted file mode 100644 index a113ea829..000000000 --- a/functions/install_gsquery.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# LGSM install_gsquery.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -fn_dlgsquery(){ -cd "${rootdir}" -echo -e "downloading gsquery.py...\c" -wget -N /dev/null "http://gameservermanagers.com/dl/gsquery.py" 2>&1 | grep -F "HTTP" | grep -v "Moved Permanently" | cut -c45- | uniq -chmod +x gsquery.py -} - -if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Hurtworld" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then - echo "" - echo "GameServerQuery" - echo "============================" - if [ -z ${autoinstall} ]; then - while true; do - read -e -i "y" -p "Do you want to install GameServerQuery? [Y/n]" yn - case $yn in - [Yy]* ) fn_dlgsquery;break;; - [Nn]* ) echo ""; echo "Not installing GameServerQuery.";break;; - * ) echo "Please answer yes or no.";; - esac - done - else - fn_dlgsquery - fi -fi From 59a40f71d16c84edec366e7815920a5aa76ccad3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 20:27:09 +0000 Subject: [PATCH 182/643] Corrected variable --- functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/install_config.sh b/functions/install_config.sh index 913bf26f0..257e29fd7 100644 --- a/functions/install_config.sh +++ b/functions/install_config.sh @@ -103,7 +103,7 @@ echo "" } fn_ut99config(){ -echo "${defaultcfg} > ${servercfgfullpath}" +echo "${servercfgdefault} > ${servercfgfullpath}" tr -d '\r' < "${servercfgdefault}" > "${servercfgfullpath}" sleep 1 echo "" From 457bc70edb7121f1b562f6ff0691c09801771f40 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 20:27:58 +0000 Subject: [PATCH 183/643] Added gamelogdir --- UnrealTournament99/ut99server | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 8fe315593..36d31750a 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="200216" +version="260216" #### Variables #### @@ -59,6 +59,7 @@ backupdir="${rootdir}/backups" # Logging logdays="7" +gamelogdir="${systemdir}/Logs/" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" From 5b4e0d77116fb28b256b04e875adeebfc2feb8f7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 22:38:16 +0000 Subject: [PATCH 184/643] Updated glibc requirements --- functions/fix_glibc.sh | 2 +- functions/info_glibc.sh | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/functions/fix_glibc.sh b/functions/fix_glibc.sh index 0270788ab..83422f12b 100644 --- a/functions/fix_glibc.sh +++ b/functions/fix_glibc.sh @@ -93,7 +93,7 @@ elif [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt 21 wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/librt.so.1 wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libpthread.so.0 elif [ "${gamename}" == "Left 4 Dead" ]; then - glibcversion="2.07" + glibcversion="2.3.6" fn_glibcfixmsg cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/bin/libstdc++.so.6" # Natural Selection 2 diff --git a/functions/info_glibc.sh b/functions/info_glibc.sh index 4181d011d..c1442593e 100644 --- a/functions/info_glibc.sh +++ b/functions/info_glibc.sh @@ -2,7 +2,7 @@ # LGSM info_glibc.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="100116" +lgsm_version="260216" # Description: stores details on servers Glibc requirements. @@ -43,7 +43,7 @@ elif [ "${engine}" == "seriousengine35" ]; then glibcrequired="2.13" glibcfix="yes" elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - glibcrequired="2.07" + glibcrequired="2.3.6" glibcfix="no" elif [ "${engine}" == "spark" ]; then glibcrequired="2.15" @@ -51,6 +51,12 @@ elif [ "${engine}" == "spark" ]; then elif [ "${engine}" == "starbound" ]; then glibcrequired="2.12" glibcfix="no" +elif [ "${engine}" == "unreal" ]; then + glibcrequired="2.1" + glibcfix="no" +elif [ "${engine}" == "unreal2" ]; then + glibcrequired="2.4" + glibcfix="no" elif [ "${engine}" == "unreal4" ]; then glibcrequired="2.14" glibcfix="no" From 020d8ee689fd3a72b7bd0912e6b286e5e593f7b4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 22:42:23 +0000 Subject: [PATCH 185/643] moved lgsmdir --- JustCause2/jc2server | 2 +- UnrealTournament99/ut99server | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index cedf158b8..2d4010e71 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -50,9 +50,9 @@ engine="avalanche" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" -filesdir="${rootdir}/serverfiles" lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" +filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" executable="./Jcmp-Server" diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 36d31750a..36704e0b2 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -44,9 +44,9 @@ engine="unreal" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" -filesdir="${rootdir}/serverfiles" lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" +filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/System" executabledir="${systemdir}" executable="./ucc-bin" From de4b2914005e27a03d33f03e81ca619186750e01 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 26 Feb 2016 22:42:37 +0000 Subject: [PATCH 186/643] updated for core_dl --- UnrealTournament2004/ut2k4server | 75 ++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index d74310b30..444e16871 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -35,6 +35,8 @@ engine="unreal2" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/System" executabledir="${systemdir}" @@ -71,56 +73,63 @@ githubbranch="master" ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file From 7809ae0320c8c9244f1409170cc351aae5db0924 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 10:53:55 +0000 Subject: [PATCH 187/643] Updated urls --- functions/install_server_files.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh index be0576e3f..32d6dff7a 100644 --- a/functions/install_server_files.sh +++ b/functions/install_server_files.sh @@ -2,23 +2,20 @@ # LGSM install_server_files.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="050216" +lgsm_version="270216" 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" + fileurl="http://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; run="norun"; force="noforce"; md5="e623fdff5ed600a9bfccab852e18d34d" +elif [ "${gamename}" == "Unreal Tournament 2004" ]; then + fileurl="http://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.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}" From d3f7be4919e76e761bf5e72d8e4d5056f0949ed0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 11:05:33 +0000 Subject: [PATCH 188/643] fixed progress bar showing for some .sh files --- functions/core_dl.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 9d2b95fff..d6fc8cd04 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -95,9 +95,8 @@ if [ ! -f "${filedir}/${filename}" ]; then if [ "$(basename ${curlcmd})" == "curl" ]; then # trap to remove part downloaded files trap fn_fetch_trap INT - # if larger file shows progress bar - if [[ $filename == *"tar"* ]]; then + if [ ${filename##*.} == "bz2" ]; then echo -ne "downloading ${filename}..." sleep 1 curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") From 3c09d25d031afb675833908c235fd7bc71c478ed Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 11:11:56 +0000 Subject: [PATCH 189/643] Renamed files --- functions/command_install.sh | 4 ++-- functions/{install_serverdir.sh => install_server_dir.sh} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename functions/{install_serverdir.sh => install_server_dir.sh} (100%) diff --git a/functions/command_install.sh b/functions/command_install.sh index bd61e4930..7dd44ffa0 100644 --- a/functions/command_install.sh +++ b/functions/command_install.sh @@ -8,7 +8,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh install_header.sh -install_serverdir.sh +install_server_dir.sh install_logs.sh check_deps.sh # Download and install @@ -22,7 +22,7 @@ elif [ "${gamename}" == "Teamspeak 3" ]; then install_ts3.sh elif [ ! -z "${appid}" ]; then install_steamcmd.sh - install_serverfiles.sh + install_server_files.sh fi # Configuration diff --git a/functions/install_serverdir.sh b/functions/install_server_dir.sh similarity index 100% rename from functions/install_serverdir.sh rename to functions/install_server_dir.sh From e90e6bf9d2ad51d64544a20c25ad1adb64bddc27 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 11:12:52 +0000 Subject: [PATCH 190/643] Updated functions function --- functions/update_functions.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/update_functions.sh b/functions/update_functions.sh index 196b90f75..e205dd901 100644 --- a/functions/update_functions.sh +++ b/functions/update_functions.sh @@ -2,7 +2,7 @@ # LGSM update_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="230116" +lgsm_version="270216" # Description: Deletes the functions dir to allow re-downloading of functions from GitHub. @@ -12,7 +12,7 @@ fn_printdots "Updating functions" fn_scriptlog "Updating functions" sleep 1 echo -ne "\n" -rm -rfv "${rootdir}/functions/"* +rm -rfv "${functionsdir}/"* exitcode=$? if [ "${exitcode}" == "0" ]; then fn_printok "Updating functions" From 3b6431ab6e37a3d898000311a96e24e25795ef38 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 11:14:01 +0000 Subject: [PATCH 191/643] renamed function --- functions/core_functions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 0ef2cc095..5d6464444 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -348,7 +348,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } -install_serverdir.sh(){ +install_server_dir.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } From de924018bcbda2f61e8eab053c8a17f7941c52aa Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 11:36:25 +0000 Subject: [PATCH 192/643] Converted to using exit codes for steamcmd errors --- functions/install_server_files.sh | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh index 32d6dff7a..103fecf3a 100644 --- a/functions/install_server_files.sh +++ b/functions/install_server_files.sh @@ -17,10 +17,8 @@ fn_dl_extract "${filedir}" "${filename}" "${filesdir}" } 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 +while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; do counter=$((counter+1)) cd "${rootdir}/steamcmd" if [ "${counter}" -le "10" ]; then @@ -50,15 +48,19 @@ while [ "${counter}" == "0" ]||[ "$(grep -wc 0x402 .install_serverfiles.sh.tmp)" 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 + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" +quit + local exitcode=$? else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit |tee .install_serverfiles.sh.tmp + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit + local exitcode=$? 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 + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" -validate +quit + local exitcode=$? else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" -validate +quit |tee .install_serverfiles.sh.tmp + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" -validate +quit + local exitcode=$? fi fi elif [ "${counter}" -ge "11" ]; then @@ -74,10 +76,10 @@ 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 + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" -validate +quit + local exitcode=$? done fi -rm -f .install_serverfiles.sh.tmp } echo "" From 20ea49c65f6554ba12398c6363b8f37126db9cea Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 11:38:08 +0000 Subject: [PATCH 193/643] tidy --- functions/install_server_files.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh index 103fecf3a..112a7fe4b 100644 --- a/functions/install_server_files.sh +++ b/functions/install_server_files.sh @@ -4,7 +4,6 @@ # Website: http://gameservermanagers.com lgsm_version="270216" - fn_install_server_files(){ if [ "${gamename}" == "Unreal Tournament 99" ]; then fileurl="http://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; run="norun"; force="noforce"; md5="e623fdff5ed600a9bfccab852e18d34d" @@ -67,7 +66,6 @@ while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; do 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. From 2e70c72476ce4af4601890940986213ce84c5c47 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 11:56:25 +0000 Subject: [PATCH 194/643] Renamed function --- functions/{check_systemdir.sh => check_system_dir.sh} | 2 +- functions/core_functions.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename functions/{check_systemdir.sh => check_system_dir.sh} (89%) diff --git a/functions/check_systemdir.sh b/functions/check_system_dir.sh similarity index 89% rename from functions/check_systemdir.sh rename to functions/check_system_dir.sh index c1f65a0d7..ecada4e09 100644 --- a/functions/check_systemdir.sh +++ b/functions/check_system_dir.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_systemdir.sh function +# LGSM check_system_dir.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="271215" diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 5d6464444..eb1096828 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -146,7 +146,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } -check_systemdir.sh(){ +check_system_dir.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } From 2ed6a60db2bd61acdb28e0851e90052d11e11c11 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 11:56:36 +0000 Subject: [PATCH 195/643] renamed function --- functions/check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/check.sh b/functions/check.sh index fa6b47306..dd64d9ef1 100644 --- a/functions/check.sh +++ b/functions/check.sh @@ -22,7 +22,7 @@ array_contains () { check_root.sh if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname}" != "update_functions.sh" ]; then - check_systemdir.sh + check_system_dir.sh fi local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh update_check.sh command_validate.sh update_functions.sh command_email_test.sh ) From 8160e36804700f83f0eca4b7ca6ed60d53433d80 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 11:57:21 +0000 Subject: [PATCH 196/643] prevent from deleting everything if no var --- functions/update_functions.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/functions/update_functions.sh b/functions/update_functions.sh index e205dd901..970dc9773 100644 --- a/functions/update_functions.sh +++ b/functions/update_functions.sh @@ -12,8 +12,17 @@ fn_printdots "Updating functions" fn_scriptlog "Updating functions" sleep 1 echo -ne "\n" -rm -rfv "${functionsdir}/"* -exitcode=$? +if [ -d "${rootdir}/functions/" ]; then + rm -rfv "${rootdir}/functions/" + exitcode=$? +elif [ -z "${functionsdir}" ]; then + rm -rfv "${functionsdir}/"* + exitcode=$? +else + fn_printfail "Updating functions" + fn_scriptlog "Failure! Updating functions" +fi + if [ "${exitcode}" == "0" ]; then fn_printok "Updating functions" fn_scriptlog "Success! Updating functions" From 017360f18355e746c8ab82a4d8ea23ce4af4c09c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 15:12:27 +0000 Subject: [PATCH 197/643] No longer required --- functions/install_serverfiles.sh | 87 -------------------------------- 1 file changed, 87 deletions(-) delete mode 100644 functions/install_serverfiles.sh diff --git a/functions/install_serverfiles.sh b/functions/install_serverfiles.sh deleted file mode 100644 index 24677da9c..000000000 --- a/functions/install_serverfiles.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/bash -# LGSM finstall_serverfiles.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -fn_steaminstallcommand(){ -check.sh -counter="0" -while [ "${counter}" == "0" ]||[ "$(grep -wc 0x402 .finstall_serverfiles.sh.tmp)" -ge "1" ]||[ "$(grep -wc 0x406 .finstall_serverfiles.sh.tmp)" -ge "1" ]||[ "$(grep -wc 0x6 .finstall_serverfiles.sh.tmp)" -ge "1" ]||[ "$(grep -wc 0x106 .finstall_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 .finstall_serverfiles.sh.tmp - else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit |tee .finstall_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 .finstall_serverfiles.sh.tmp - else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" -validate +quit |tee .finstall_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 .finstall_serverfiles.sh.tmp - done -fi -rm -f .finstall_serverfiles.sh.tmp -} - -echo "" -echo "Installing ${gamename} Server" -echo "=================================" -sleep 1 -mkdir -pv "${filesdir}" -fn_steaminstallcommand -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 From 1502542fc89bab20bd76a40680a94965ab9026ff Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 15:15:10 +0000 Subject: [PATCH 198/643] Changed ut2004 to new system --- functions/command_install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/functions/command_install.sh b/functions/command_install.sh index 7dd44ffa0..e933b2598 100644 --- a/functions/command_install.sh +++ b/functions/command_install.sh @@ -13,8 +13,7 @@ install_logs.sh check_deps.sh # Download and install if [ "${gamename}" == "Unreal Tournament 2004" ]; then - install_dl_ut2k4.sh - install_ut2k4.sh + install_server_files.sh install_ut2k4_key.sh elif [ "${gamename}" == "Unreal Tournament 99" ]; then install_server_files.sh From 867fb3b911c01fc30c0c9abfd01fc2ba441871ac Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 15:45:59 +0000 Subject: [PATCH 199/643] Altered header to link to github contrib page --- functions/install_header.sh | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/functions/install_header.sh b/functions/install_header.sh index 1ee637c77..ae8ab9240 100644 --- a/functions/install_header.sh +++ b/functions/install_header.sh @@ -9,12 +9,6 @@ echo "=================================" echo "${gamename}" echo "Linux Game Server Manager" echo "by Daniel Gibbs" -if [ "${gamename}" == "ARMA 3" ]; then - echo "contributions by Scarsz" -elif [ "${gamename}" == "Left 4 Dead" ]; then - echo "contributions by Summit Singh Thakur" -elif [ "${gamename}" == "Teeworlds" ]; then - echo "contributions by Bryce Van Dyk (SingingTree)" -fi +echo "Contributors: http://goo.gl/qLmitD" echo "http://gameservermanagers.com" echo "=================================" \ No newline at end of file From 15413e23669bd6abb058d8242e721b747d7e4452 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 15:46:15 +0000 Subject: [PATCH 200/643] added ut2l4 server cd-key option --- functions/core_getopt.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index ed3bd1369..47cd5f748 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -386,7 +386,9 @@ case "$getopt" in i|install) command_install.sh;; ai|auto-install) - fn_autoinstall;; + fn_autoinstall;; + sck|server-cd-key) + install_ut2k4_key.sh;; mc|map-compressor) compress_unreal2_maps.sh;; dd|depsdetect) @@ -410,6 +412,7 @@ case "$getopt" in echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." echo -e "\e[34minstall\t\e[0mInstall the server." echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + echo -e "\e[34mserver-cd-key\t\e[0mAdd your server cd key" echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." } | column -s $'\t' -t esac From ddb475fa2e75ebe4c1c61094e5066ecbebdbf417 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 15:49:15 +0000 Subject: [PATCH 201/643] Added auto-install mode --- functions/install_ut2k4_key.sh | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/functions/install_ut2k4_key.sh b/functions/install_ut2k4_key.sh index 35a9599f6..34dcab124 100644 --- a/functions/install_ut2k4_key.sh +++ b/functions/install_ut2k4_key.sh @@ -4,6 +4,7 @@ # Website: http://gameservermanagers.com lgsm_version="271215" + echo "" echo "Enter ${gamename} CD Key" echo "=================================" @@ -12,8 +13,14 @@ echo "To get your server listed on the Master Server list" echo "you must get a free CD key. Get a key here:" echo "http://www.unrealtournament.com/ut2004server/cdkey.php" echo "" -echo "Once you have the key enter it below" -echo -n "KEY: " -read CODE -echo ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey" +if [ -z "${autoinstall}" ]; then + echo "Once you have the key enter it below" + echo -n "KEY: " + read CODE + echo ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey" + +else + echo "You can add your key using the following command" + echo "./${selfname} server-cd-key" +fi echo "" \ No newline at end of file From bceae77c2483b0cf5cc81d8d5182044c381939c1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 15:51:38 +0000 Subject: [PATCH 202/643] corrected if and renamed function --- ...te_functions.sh => command_update_functions.sh} | 2 +- functions/core_getopt.sh | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) rename functions/{update_functions.sh => command_update_functions.sh} (94%) diff --git a/functions/update_functions.sh b/functions/command_update_functions.sh similarity index 94% rename from functions/update_functions.sh rename to functions/command_update_functions.sh index 970dc9773..7cc1c4cb2 100644 --- a/functions/update_functions.sh +++ b/functions/command_update_functions.sh @@ -15,7 +15,7 @@ echo -ne "\n" if [ -d "${rootdir}/functions/" ]; then rm -rfv "${rootdir}/functions/" exitcode=$? -elif [ -z "${functionsdir}" ]; then +elif [ -n "${functionsdir}" ]; then rm -rfv "${functionsdir}/"* exitcode=$? else diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index 47cd5f748..899b6257a 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -20,7 +20,7 @@ case "$getopt" in forceupdate=1; update_check.sh;; uf|update-functions) - update_functions.sh;; + command_update_functions.sh;; v|validate) command_validate.sh;; m|monitor) @@ -81,7 +81,7 @@ case "$getopt" in u|update) update_check.sh;; uf|update-functions) - update_functions.sh;; + command_update_functions.sh;; m|monitor) command_monitor.sh;; et|email-test) @@ -133,7 +133,7 @@ case "$getopt" in r|restart) fn_restart;; uf|update-functions) - update_functions.sh;; + command_update_functions.sh;; m|monitor) command_monitor.sh;; et|email-test) @@ -183,7 +183,7 @@ case "$getopt" in forceupdate=1; update_check.sh;; uf|update-functions) - update_functions.sh;; + command_update_functions.sh;; v|validate) command_validate.sh;; m|monitor) @@ -242,7 +242,7 @@ case "$getopt" in r|restart) fn_restart;; uf|update-functions) - update_functions.sh;; + command_update_functions.sh;; m|monitor) command_monitor.sh;; et|email-test) @@ -305,7 +305,7 @@ case "$getopt" in forceupdate=1; update_check.sh;; uf|update-functions) - update_functions.sh;; + command_update_functions.sh;; v|validate) command_validate.sh;; m|monitor) @@ -368,7 +368,7 @@ case "$getopt" in r|restart) fn_restart;; uf|update-functions) - update_functions.sh;; + command_update_functions.sh;; m|monitor) command_monitor.sh;; et|email-test) From 2037faa487aa6951d710c777758dec49699e8f9b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 19:36:23 +0000 Subject: [PATCH 203/643] tee tidy --- functions/command_validate.sh | 4 ++-- functions/fix_ut99.sh | 2 +- functions/logs.sh | 14 +++++++------- functions/update_dl.sh | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/functions/command_validate.sh b/functions/command_validate.sh index b6dc36819..40e23c01e 100644 --- a/functions/command_validate.sh +++ b/functions/command_validate.sh @@ -29,9 +29,9 @@ if [ $(command -v unbuffer) ]; then fi if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" +app_update "${appid}" validate +quit|tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" validate +quit|tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" fi fix.sh diff --git a/functions/fix_ut99.sh b/functions/fix_ut99.sh index d4ceca37f..aceb37128 100644 --- a/functions/fix_ut99.sh +++ b/functions/fix_ut99.sh @@ -12,7 +12,7 @@ echo "UpdateMinutes=1" echo "MasterServerAddress=unreal.epicgames.com" echo "MasterServerPort=27900" echo "Region=0" -}|tee -a "${servercfgfullpath}" > /dev/null 2>&1 +}| tee -a "${servercfgfullpath}" > /dev/null 2>&1 sleep 1 echo "removing dead gamespy.com master server." sed -i '/master0.gamespy.com/d' "${servercfgfullpath}" diff --git a/functions/logs.sh b/functions/logs.sh index a294c4d35..54c9a9836 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -37,18 +37,18 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th echo -en "\n" # Logging logfiles to be removed according to "${logdays}", counting and removing them # Script logfiles - find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + find "${scriptlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) find "${scriptlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; # SRCDS and unreal logfiles if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then - find "${gamelogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + find "${gamelogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" gamecount=$(find "${gamelogdir}"/ -type f -mtime +"${logdays}"|wc -l) find "${gamelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi # Console logfiles if [ -n "${consolelog}" ]; then - find "${consolelogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + find "${consolelogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}"|wc -l) find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi @@ -56,7 +56,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th if [ "${engine}" == "source" ]; then # SourceMod logfiles if [ -d "${sourcemodlogdir}" ]; then - find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"|wc -l) find "${sourcemodlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi @@ -64,13 +64,13 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th if [ "${gamename}" == "Garry's Mod" ]; then # ULX logfiles if [ -d "${ulxlogdir}" ]; then - find "${ulxlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + find "${ulxlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +"${logdays}"|wc -l) find "${ulxlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi # DarkRP logfiles if [ -d "${darkrplogdir}" ]; then - find "${darkrplogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + find "${darkrplogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +"${logdays}"|wc -l) find "${darkrplogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi @@ -78,7 +78,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th fi # Legacy support if [ -d "${legacyserverlogdir}" ]; then - find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}" + find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" legacycount=$(find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"|wc -l) find "${legacyserverlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; # Remove folder if empty diff --git a/functions/update_dl.sh b/functions/update_dl.sh index a80caa6d8..0c07fc31a 100644 --- a/functions/update_dl.sh +++ b/functions/update_dl.sh @@ -19,9 +19,9 @@ if [ $(command -v unbuffer) ]; then fi 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 -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" +quit| tee -a "${scriptlog}" else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit|tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit| tee -a "${scriptlog}" fi fix.sh From 0dbeb0789cdac77f1d685630f66b0bc609ee3d0e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 19:36:49 +0000 Subject: [PATCH 204/643] Added script logging and removed unzip dep --- functions/check_deps.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/functions/check_deps.sh b/functions/check_deps.sh index 3f9312024..d562369a8 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -53,6 +53,7 @@ if [ "${#array_deps_missing[@]}" != "0" ]; then fn_printdots "Checking dependencies" sleep 2 fn_printwarn "Checking dependencies: Dependency missing: \e[0;31m${array_deps_missing[@]}\e[0m" + fn_scriptlog "Checking dependencies: Dependency missing: \e[0;31m${array_deps_missing[@]}\e[0m" sleep 1 echo -e "" sudo -n true > /dev/null 2>&1 @@ -73,6 +74,7 @@ if [ "${#array_deps_missing[@]}" != "0" ]; then else echo "" fn_printinfomationnl "$(whoami) does not have sudo access. manually install dependencies" + fn_scriptlog "$(whoami) does not have sudo access. manually install dependencies" echo "" if [ -n "$(command -v dpkg-query)" ]; then echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" @@ -147,7 +149,7 @@ if [ -n "$(command -v dpkg-query)" ]; then elif [ "${executable}" == "./ucc-bin" ]; then #UT2K4 if [ -f "${executabledir}/ut2004-bin" ]; then - array_deps_required+=( libsdl1.2debian libstdc++5:i386 bzip2 unzip ) + array_deps_required+=( libsdl1.2debian libstdc++5:i386 bzip2 ) #UT99 else array_deps_required+=( libsdl1.2debian bzip2 ) @@ -193,7 +195,7 @@ elif [ -n "$(command -v yum)" ]; then elif [ "${executable}" == "./ucc-bin" ]; then #UT2K4 if [ -f "${executabledir}/ut2004-bin" ]; then - array_deps_required+=( compat-libstdc++-33.i686 SDL.i686 bzip2 unzip ) + array_deps_required+=( compat-libstdc++-33.i686 SDL.i686 bzip2 ) #UT99 else array_deps_required+=( SDL.i686 bzip2 ) From 4c0eaa3144e0e37504d644b040250e4c6be67b10 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 19:49:10 +0000 Subject: [PATCH 205/643] No longer required --- functions/install_dl_ut2k4.sh | 54 ----------------------------------- functions/install_ut2k4.sh | 42 --------------------------- functions/install_ut99.sh | 42 --------------------------- 3 files changed, 138 deletions(-) delete mode 100644 functions/install_dl_ut2k4.sh delete mode 100644 functions/install_ut2k4.sh delete mode 100644 functions/install_ut99.sh diff --git a/functions/install_dl_ut2k4.sh b/functions/install_dl_ut2k4.sh deleted file mode 100644 index 687867e74..000000000 --- a/functions/install_dl_ut2k4.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -# LGSM install_dl_ut2k4.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -echo "" -echo "Downloading Server Files" -echo "=================================" -sleep 1 -cd "${filesdir}" -if [ ! -f dedicatedserver3339-bonuspack.zip ]; then - wget http://gameservermanagers.com/files/ut2004/dedicatedserver3339-bonuspack.zip -else - echo "dedicatedserver3339-bonuspack.zip already downloaded!" -fi -echo "Running MD5 checksum to verify the file" -sleep 1 -echo "MD5 checksum: d3f28c5245c4c02802d48e4f0ffd3e34" -md5check=$(md5sum dedicatedserver3339-bonuspack.zip|awk '{print $1;}') -echo "File returned: ${md5check}" -if [ "${md5check}" != "d3f28c5245c4c02802d48e4f0ffd3e34" ]; then - echo "MD5 checksum: FAILED!" - read -p "Retry download? [y/N]" yn - case $yn in - [Yy]* ) rm -fv dedicatedserver3339-bonuspack.zip; install_dl_ut2k4.sh;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; - esac -else - echo "MD5 checksum: PASSED" -fi -if [ ! -f ut2004-lnxpatch3369-2.tar.bz2 ]; then - wget http://gameservermanagers.com/files/ut2004/ut2004-lnxpatch3369-2.tar.bz2 -else - echo "ut2004-lnxpatch3369-2.tar.bz2 already downloaded!" -fi -echo "Running MD5 checksum to verify the file" -sleep 1 -echo "MD5 checksum: 0fa447e05fe5a38e0e32adf171be405e" -md5check=$(md5sum ut2004-lnxpatch3369-2.tar.bz2|awk '{print $1;}') -echo "File returned: ${md5check}" -if [ "${md5check}" != "0fa447e05fe5a38e0e32adf171be405e" ]; then - echo "MD5 checksum: FAILED!" - read -p "Retry download? [y/N]" yn - case $yn in - [Yy]* ) rm -fv ut2004-lnxpatch3369-2.tar.bz2; install_dl_ut2k4.sh;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; - esac -else - echo "MD5 checksum: PASSED" -fi -echo "" \ No newline at end of file diff --git a/functions/install_ut2k4.sh b/functions/install_ut2k4.sh deleted file mode 100644 index 44d78b885..000000000 --- a/functions/install_ut2k4.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# LGSM install_ut2k4.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -echo "" -echo "Installing ${gamename} Server" -echo "=================================" -sleep 1 -cd "${filesdir}" -echo "Extracting dedicatedserver3339-bonuspack.zip" -sleep 1 -unzip dedicatedserver3339-bonuspack.zip -echo "Extracting ut2004-lnxpatch3369-2.tar.bz2" -sleep 1 -tar -xvjf ut2004-lnxpatch3369-2.tar.bz2 UT2004-Patch/ --strip-components=1 -while true; do - read -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 -while true; do - read -p "Remove ut2004-lnxpatch3369-2.tar.bz2? [y/N]" yn - case $yn in - [Yy]* ) rm -fv ut2004-lnxpatch3369-2.tar.bz2; break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac -done -while true; do - read -p "Remove dedicatedserver3339-bonuspack.zip? [y/N]" yn - case $yn in - [Yy]* ) rm -fv dedicatedserver3339-bonuspack.zip; break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac -done -echo "" \ No newline at end of file diff --git a/functions/install_ut99.sh b/functions/install_ut99.sh deleted file mode 100644 index 32b49f7a1..000000000 --- a/functions/install_ut99.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# LGSM install_ut99.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -echo "" -echo "Installing ${gamename} Server" -echo "=================================" -sleep 1 -cd "${filesdir}" -echo "Extracting ut-server-436.tar.gz" -sleep 1 -tar -zxvf ut-server-436.tar.gz ut-server/ --strip-components=1 -echo "Extracting UTPGPatch451.tar.bz2" -sleep 1 -tar -jxvf UTPGPatch451.tar.bz2 -while true; do - read -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 -while true; do - read -p "Remove ut-server-436.tar.gz? [y/N]" yn - case $yn in - [Yy]* ) rm -fv ut-server-436.tar.gz; break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac -done -while true; do - read -p "Remove UTPGPatch451.tar.bz2? [y/N]" yn - case $yn in - [Yy]* ) rm -fv UTPGPatch451.tar.bz2; break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac -done -echo "" \ No newline at end of file From 19b9e779d9e9a22736d556723f1e2b7eece098bd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 19:49:47 +0000 Subject: [PATCH 206/643] Added logging --- functions/install_complete.sh | 1 + functions/install_logs.sh | 5 +++-- functions/install_server_files.sh | 2 ++ functions/install_ut2k4_key.sh | 3 ++- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/functions/install_complete.sh b/functions/install_complete.sh index a782b4f7a..b6fab789d 100644 --- a/functions/install_complete.sh +++ b/functions/install_complete.sh @@ -12,6 +12,7 @@ if [ "${gamename}" == "Don't Starve Together" ]; then fi echo "=================================" echo "Install Complete!" +fn_scriptlog "Install Complete!" echo "" echo "To start server type:" echo "./${selfname} start" diff --git a/functions/install_logs.sh b/functions/install_logs.sh index 6496ad647..c90aadb36 100644 --- a/functions/install_logs.sh +++ b/functions/install_logs.sh @@ -2,7 +2,7 @@ # LGSM install_logs.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="270216" if [ "${checklogs}" != "1" ]; then echo "" @@ -44,4 +44,5 @@ if [ -d "${rootdir}/Steam/logs" ]; then ln -nfsv "${rootdir}/Steam/logs" "${rootdir}/log/steamcmd" fi fi -sleep 1 \ No newline at end of file +sleep 1 +fn_scriptlog "Logs installed" \ No newline at end of file diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh index 112a7fe4b..8f152db84 100644 --- a/functions/install_server_files.sh +++ b/functions/install_server_files.sh @@ -29,6 +29,7 @@ while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; do if [ "${counter}" -ge "2" ]; then fn_printwarningnl "SteamCMD did not complete the download, retrying: Attempt ${counter}:" + fn_scriptlog "SteamCMD did not complete the download, retrying: Attempt ${counter}:" fi if [ "${counter}" -ge "7" ]; then @@ -64,6 +65,7 @@ while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; do fi elif [ "${counter}" -ge "11" ]; then fn_printfailurenl "SteamCMD did not complete the download, too many retrys" + fn_scriptlog "SteamCMD did not complete the download, too many retrys" break fi done diff --git a/functions/install_ut2k4_key.sh b/functions/install_ut2k4_key.sh index 34dcab124..f582f4c16 100644 --- a/functions/install_ut2k4_key.sh +++ b/functions/install_ut2k4_key.sh @@ -18,7 +18,8 @@ if [ -z "${autoinstall}" ]; then echo -n "KEY: " read CODE echo ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey" - + if [ -f "${systemdir}/cdkey" ]; then + fn_scriptlog "UT2K4 Server CD Key created" else echo "You can add your key using the following command" echo "./${selfname} server-cd-key" From 364856e81916f711b79170a177161de78d1340d0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 19:50:03 +0000 Subject: [PATCH 207/643] Optimised function --- functions/install_gslt.sh | 53 +++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/functions/install_gslt.sh b/functions/install_gslt.sh index 5919fac33..b7649eade 100644 --- a/functions/install_gslt.sh +++ b/functions/install_gslt.sh @@ -2,41 +2,34 @@ # LGSM install_gslt.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="270216" # Description: Configures GSLT. -if [ -z "${autoinstall}" ]; then - echo "" - echo "Game Server Login Token" - echo "============================" - sleep 1 - if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then - echo "GSLT is required to run a public ${gamename} server" - else - echo "GSLT is an optional feature for ${gamename} server" - fi +echo "" +echo "Game Server Login Token" +echo "============================" +sleep 1 +if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then + echo "GSLT is required to run a public ${gamename} server" + fn_scriptlog "GSLT is required to run a public ${gamename} server" +else + echo "GSLT is an optional feature for ${gamename} server" + fn_scriptlog "GSLT is an optional feature for ${gamename} server" +fi - echo "Get more info and a token here:" - echo "http://gameservermanagers.com/gslt" - echo "" +echo "Get more info and a token here:" +echo "http://gameservermanagers.com/gslt" +fn_scriptlog "Get more info and a token here:" +fn_scriptlog "http://gameservermanagers.com/gslt" +echo "" +if [ -z "${autoinstall}" ]; then echo "Enter token below (Can be blank)." echo -n "GSLT TOKEN: " read token sed -i -e "s/gslt=\"\"/gslt=\"${token}\"/g" "${rootdir}/${selfname}" - sleep 1 - echo "The GSLT can be changed by editing ${selfname}." - echo "" -else - if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then - fn_printinfomationnl "GSLT is required to run a public ${gamename} server" - else - fn_printinfomationnl "GSLT is an optional feature for ${gamename} server" - fi - echo "Get more info and a token here:" - echo "http://gameservermanagers.com/gslt" - echo "" - sleep 1 - echo "The GSLT can be changed by editing ${selfname}." - sleep 1 -fi \ No newline at end of file +fi +sleep 1 +echo "The GSLT can be changed by editing ${selfname}." +fn_scriptlog "The GSLT can be changed by editing ${selfname}." +echo "" \ No newline at end of file From f924b10dc3059d5aa0da5aa288f73d03dc7ac420 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 19:51:50 +0000 Subject: [PATCH 208/643] removed legacy functions dir --- functions/command_update_functions.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/functions/command_update_functions.sh b/functions/command_update_functions.sh index 7cc1c4cb2..3c530e4a0 100644 --- a/functions/command_update_functions.sh +++ b/functions/command_update_functions.sh @@ -12,10 +12,14 @@ fn_printdots "Updating functions" fn_scriptlog "Updating functions" sleep 1 echo -ne "\n" + +# Removed legecy functions dir if [ -d "${rootdir}/functions/" ]; then rm -rfv "${rootdir}/functions/" exitcode=$? -elif [ -n "${functionsdir}" ]; then +fi + +if [ -n "${functionsdir}" ]; then rm -rfv "${functionsdir}/"* exitcode=$? else From bc0fc9d1ccdc63cfac00627616dc73f16469d5fb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 19:55:32 +0000 Subject: [PATCH 209/643] Corrected update_functions name --- functions/check.sh | 4 ++-- functions/core_functions.sh | 4 ++-- functions/fn_update_functions | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/functions/check.sh b/functions/check.sh index dd64d9ef1..0c2fbe7bf 100644 --- a/functions/check.sh +++ b/functions/check.sh @@ -21,11 +21,11 @@ array_contains () { check_root.sh -if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname}" != "update_functions.sh" ]; then +if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname}" != "command_update_functions.sh" ]; then check_system_dir.sh fi -local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh update_check.sh command_validate.sh update_functions.sh command_email_test.sh ) +local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh update_check.sh command_validate.sh command_update_functions.sh command_email_test.sh ) for allowed_command in "${allowed_commands_array[@]}" do if [ "${allowed_command}" == "${function_selfname}" ]; then diff --git a/functions/core_functions.sh b/functions/core_functions.sh index eb1096828..5fbcc44d6 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -288,7 +288,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } -update_functions.sh(){ +command_update_functions.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } @@ -298,7 +298,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } -update_functions.sh(){ +fn_update_functions.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } diff --git a/functions/fn_update_functions b/functions/fn_update_functions index 2de9afd6d..bf4e5446d 100644 --- a/functions/fn_update_functions +++ b/functions/fn_update_functions @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM update_functions.sh function +# LGSM command_update_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="230116" From 91c88c0632bbc95c48e2527d754b2771382591cf Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 21:57:53 +0000 Subject: [PATCH 210/643] tidy --- functions/fn_update_functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/fn_update_functions b/functions/fn_update_functions index bf4e5446d..414649f6a 100644 --- a/functions/fn_update_functions +++ b/functions/fn_update_functions @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_update_functions.sh function +# LGSM fn_update_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="230116" From 78be6b86913c380f6b243ceb8edbc7ef3a2a2650 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 21:58:58 +0000 Subject: [PATCH 211/643] Added code for legacy servers to allow them to work --- functions/core_functions.sh | 52 +++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 5fbcc44d6..b0813243d 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -2,12 +2,12 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="160216" +lgsm_version="270216" # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. -#Legacy functions +# Code/functions for legacy lgsm scripts fn_functions(){ functionfile="${FUNCNAME}" @@ -19,6 +19,54 @@ functionfile="${FUNCNAME}" fn_fetch_function } +# fn_fetch_core_dl also placed here to allow legecy scripts to still download core functions +if [ -n "${lgsmdir}" ]; then + lgsmdir="${rootdir}/lgsm" + functionsdir="${lgsmdir}/functions" +fi + +fn_fetch_core_dl(){ +github_file_url_dir="functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir -p "${filedir}" + fi + echo -e " fetching ${filename}...\c" + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else + echo -e "\e[0;31mFAIL\e[0m\n" + echo "Curl is not installed!" + echo -e "" + exit 1 + fi + chmod +x "${filedir}/${filename}" +fi +source "${filedir}/${filename}" +} + # Core From ee76be76cf89891e8506780845c727284714cb88 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 21:59:26 +0000 Subject: [PATCH 212/643] Added message explaining multiple dl attempts --- functions/install_server_files.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh index 8f152db84..b09cc0ba2 100644 --- a/functions/install_server_files.sh +++ b/functions/install_server_files.sh @@ -28,8 +28,8 @@ while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; do # Attempt 11: Failure if [ "${counter}" -ge "2" ]; then - fn_printwarningnl "SteamCMD did not complete the download, retrying: Attempt ${counter}:" - fn_scriptlog "SteamCMD did not complete the download, retrying: Attempt ${counter}:" + fn_printwarningnl "SteamCMD did not complete the download, retrying: Attempt ${counter}" + fn_scriptlog "SteamCMD did not complete the download, retrying: Attempt ${counter}" fi if [ "${counter}" -ge "7" ]; then @@ -73,6 +73,7 @@ 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 + fn_printinfomationnl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue." counter="0" while [ "${counter}" -le "4" ]; do counter=$((counter+1)) From 3a5086c82146974fe8e6fb9339b7d40a40de490b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 27 Feb 2016 22:03:21 +0000 Subject: [PATCH 213/643] corrected if --- functions/core_functions.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index b0813243d..c0490ffcb 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -7,7 +7,7 @@ lgsm_version="270216" # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. -# Code/functions for legacy lgsm scripts +# Code/functions for legacy servers fn_functions(){ functionfile="${FUNCNAME}" @@ -19,8 +19,8 @@ functionfile="${FUNCNAME}" fn_fetch_function } -# fn_fetch_core_dl also placed here to allow legecy scripts to still download core functions -if [ -n "${lgsmdir}" ]; then +# fn_fetch_core_dl also placed here to allow legecy servers to still download core functions +if [ -z "${lgsmdir}" ]; then lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" fi From d2a8fcec5f2daa927242f48f1c287e106716873f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sun, 28 Feb 2016 10:34:27 +0100 Subject: [PATCH 214/643] conditional server.seed and comments rework --- Rust/rustserver | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index c1f2980cd..6497c0480 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -34,15 +34,25 @@ rconpassword="CHANGE_ME" maxplayers="50" # Advanced -worldsize="4000" # default 4000; min : 2000 max : 8000 +seed="" # default random; range : -2147483647 to 2147483647 ; used to change or reproduce a procedural map +worldsize="4000" # default 4000; range : 2000 to 8000 ; map size in meters saveinterval="300" # Auto-save in seconds -tickrate="30" # default 30; min acceptable 15 , max 100 or 128 +tickrate="30" # default 30; range : 15 to 100 # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" +parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" } +# Specific to Rust +if [ -n ${seed} ]; then + # If set, then add to start parms + conditionalseed="+server.seed ${seed}" +else + # Keep randomness of the number if not set + conditionalseed="" +fi + #### Advanced Variables #### # Github Branch Select From 190fa025323849cab7f7823f5208f7fc0037c285 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:10:33 +0000 Subject: [PATCH 215/643] code tidy --- functions/core_dl.sh | 83 ++++++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index d6fc8cd04..31143eb34 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -6,10 +6,17 @@ lgsm_version="050216" # Description: Deals with all downloads for LGSM. -# Downloads can be defined in code like so -# fn_dl "dl_filename" "dl_filepath" "dl_url" "dl_md5" -# fn_dl "file.tar.bz2" "/home/gameserver" "http://example.com/file.tar/bz2" "10cd7353aa9d758a075c600a6dd193fd" - +# fileurl: The URL of the file: http://example.com/dl/File.tar.bz2 +# filedir: location the file is to be saved: /home/server/lgsm/tmp +# filename: name of file (this can be different from the url name): file.tar.bz2 +# executecmd: Optional, set to "executecmd" to make file executable using chmod +x +# run: Optional, set to run to execute the file +# force: Optional, force re-download of file even if exists +# md5: Optional, Checks file against an md5 sum +# +# Downloads can be defined in code like so: +# fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" +# fn_fetch_file "http://example.com/file.tar.bz2" "/some/dir" "file.tar.bz2" "executecmd" "run" "force" "10cd7353aa9d758a075c600a6dd193fd" fn_dl_md5(){ # Runs MD5 Check if available @@ -34,12 +41,17 @@ if [ -n "${md5}" ]; then fi } +# Extracts bzip2 or gzip files +# Extracts can be defined in code like so: +# fn_dl_extract "${filedir}" "${filename}" "${extractdir}" +# fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles" fn_dl_extract(){ filedir=${1} filename=${2} extractdir=${3} # extracts archives echo -ne "extracting ${filename}..." +fn_scriptlog "extracting download" mime=$(file -b --mime-type "${filedir}/${filename}") if [ "${mime}" == "application/gzip" ]; then @@ -50,7 +62,8 @@ fi local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_printfaileolnl - echo "${tarcmd}" + fn_scriptlog "extracting download: FAIL" + echo "${tarcmd}" | tee -a "${scriptlog}" exit ${exitcode} else fn_printokeolnl @@ -60,14 +73,14 @@ fi # Trap to remove file download if canceled before completed fn_fetch_trap() { echo "" - fn_printinfomationnl "Cancelling download" + fn_printinfomationnl "cancelling download" + fn_scriptlog "canceling download" sleep 1 - fn_printinfomation "Removing ${filename}" - rm -f "${filedir}/${filename}" + fn_printinfomation "removing ${filename}" + fn_scriptlog "removing ${filename}" + rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" } -# Downloads file using curl and run it if required -# fn_fetch_file "fileurl" "filedir" "filename" "executecmd" "run" "force" "md5" fn_fetch_file(){ fileurl=${1} filedir=${2} @@ -98,27 +111,32 @@ if [ ! -f "${filedir}/${filename}" ]; then # if larger file shows progress bar if [ ${filename##*.} == "bz2" ]; then echo -ne "downloading ${filename}..." + fn_scriptlog "downloading ${filename}" sleep 1 curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") echo -ne "downloading ${filename}..." else echo -ne " fetching ${filename}...\c" + fn_scriptlog "fetching ${filename}" curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) fi local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_printfaileolnl - echo "${curlcmd}" - echo -e "${fileurl}\n" + fn_scriptlog "downloading ${filename}: FAIL" + echo "${curlcmd}" | tee -a "${scriptlog}" + echo -e "${fileurl}\n" | tee -a "${scriptlog}" exit ${exitcode} else fn_printokeolnl + fn_scriptlog "downloading ${filename}: OK" fi # remove trap trap - INT else fn_printfaileolnl echo "Curl is not installed!" + fn_scriptlog "Curl is not installed!" echo -e "" exit 1 fi @@ -138,36 +156,43 @@ fi } -# fn_fetch_file_github -# Parameters: -# github_file_url_dir: The directory the file is located in teh GitHub repo -# github_file_url_name: name of file -# filepath: location file to be saved + +# fileurl: The directory the file is located in teh GitHub repo +# filedir: name of file +# filename: location file to be saved # executecmd: set to "executecmd" to make file executecmd # run: Optional, set to run to execute the file # force: force download of file even if exists +# md5: Checks fail against an md5 sum + + +# Fetches files from the github repo fn_fetch_file_github(){ -github_file_url_dir=${1} -github_file_url_name=${2} -filepath=${3} -filename="${github_file_url_name}" -executecmd=${4:-0} -run=${5:-0} -force=${6:-0} +github_file_url_dir="${1}" +github_file_url_name="${2}" githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -fn_fetch_file "${githuburl}" "${filepath}" "${filename}" "${executecmd}" "${run}" "${force}" +fileurl="${githuburl}" +filedir="${3}" +filename="${github_file_url_name}" +executecmd="${4:-0}" +run="${5:-0}" +force="${6:-0}" +md5="${7:-0}" +fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" } - # Fetches functions fn_fetch_function(){ github_file_url_dir="functions" # github dir containing the file github_file_url_name="${functionfile}" # name of the github file githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -filedir="${functionsdir}" # local dir that will contain the file -filename="${github_file_url_name}" # name of the local file +fileurl="${githuburl}" +filedir="${functionsdir}" +filename="${github_file_url_name}" executecmd="executecmd" run="run" -fn_fetch_file "${githuburl}" "${filedir}" "${filename}" "${executecmd}" "${run}" +force="noforce" +md5="" +fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" } \ No newline at end of file From 0a5c682d717c8708c79ca6baaf54e3a7e745e760 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:10:47 +0000 Subject: [PATCH 216/643] corrected if best practice --- functions/command_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_install.sh b/functions/command_install.sh index e933b2598..fb4682d53 100644 --- a/functions/command_install.sh +++ b/functions/command_install.sh @@ -19,7 +19,7 @@ elif [ "${gamename}" == "Unreal Tournament 99" ]; then install_server_files.sh elif [ "${gamename}" == "Teamspeak 3" ]; then install_ts3.sh -elif [ ! -z "${appid}" ]; then +elif [ -n "${appid}" ]; then install_steamcmd.sh install_server_files.sh fi From 2d31f4795c34d208a83b302cca2c40f1e23a508e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:15:22 +0000 Subject: [PATCH 217/643] scriptlog will no longer be used if not installed --- functions/core_dl.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 31143eb34..5ba80c58e 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -111,32 +111,39 @@ if [ ! -f "${filedir}/${filename}" ]; then # if larger file shows progress bar if [ ${filename##*.} == "bz2" ]; then echo -ne "downloading ${filename}..." - fn_scriptlog "downloading ${filename}" + if [ -z "${scriptlog}" ]; then + fn_scriptlog "downloading ${filename}" + fi sleep 1 curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") echo -ne "downloading ${filename}..." else echo -ne " fetching ${filename}...\c" - fn_scriptlog "fetching ${filename}" + if [ -z "${scriptlog}" ]; then + fn_scriptlog "fetching ${filename}" + fi curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) fi local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_printfaileolnl - fn_scriptlog "downloading ${filename}: FAIL" + if [ -z "${scriptlog}" ]; then + fn_scriptlog "downloading ${filename}: FAIL" + fi echo "${curlcmd}" | tee -a "${scriptlog}" echo -e "${fileurl}\n" | tee -a "${scriptlog}" exit ${exitcode} else fn_printokeolnl - fn_scriptlog "downloading ${filename}: OK" + if [ -z "${scriptlog}" ]; then + fn_scriptlog "downloading ${filename}: OK" + fi fi # remove trap trap - INT else fn_printfaileolnl echo "Curl is not installed!" - fn_scriptlog "Curl is not installed!" echo -e "" exit 1 fi From b038d38589cfdb8f2c2da23bf8b59a56152a50fb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:16:50 +0000 Subject: [PATCH 218/643] alterred to use -f --- functions/core_dl.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 5ba80c58e..7b2860f7e 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -111,7 +111,7 @@ if [ ! -f "${filedir}/${filename}" ]; then # if larger file shows progress bar if [ ${filename##*.} == "bz2" ]; then echo -ne "downloading ${filename}..." - if [ -z "${scriptlog}" ]; then + if [ -f "${scriptlog}" ]; then fn_scriptlog "downloading ${filename}" fi sleep 1 @@ -119,7 +119,7 @@ if [ ! -f "${filedir}/${filename}" ]; then echo -ne "downloading ${filename}..." else echo -ne " fetching ${filename}...\c" - if [ -z "${scriptlog}" ]; then + if [ -f "${scriptlog}" ]; then fn_scriptlog "fetching ${filename}" fi curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) @@ -127,7 +127,7 @@ if [ ! -f "${filedir}/${filename}" ]; then local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_printfaileolnl - if [ -z "${scriptlog}" ]; then + if [ -f "${scriptlog}" ]; then fn_scriptlog "downloading ${filename}: FAIL" fi echo "${curlcmd}" | tee -a "${scriptlog}" @@ -135,7 +135,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit ${exitcode} else fn_printokeolnl - if [ -z "${scriptlog}" ]; then + if [ -f "${scriptlog}" ]; then fn_scriptlog "downloading ${filename}: OK" fi fi From 013332bfb1f1cae229218f32d975686efef9516a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:26:10 +0000 Subject: [PATCH 219/643] Update trap messages --- functions/core_dl.sh | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 7b2860f7e..856253592 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -73,12 +73,12 @@ fi # Trap to remove file download if canceled before completed fn_fetch_trap() { echo "" - fn_printinfomationnl "cancelling download" - fn_scriptlog "canceling download" + fn_printinfomationnl "downloading ${filename}: CANCELED" + fn_scriptlog "downloading ${filename}: CANCELED" sleep 1 - fn_printinfomation "removing ${filename}" - fn_scriptlog "removing ${filename}" + fn_printinfomation "downloading ${filename}: REMOVED" rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" + fn_scriptlog "downloading ${filename}: REMOVED" } fn_fetch_file(){ @@ -111,17 +111,11 @@ if [ ! -f "${filedir}/${filename}" ]; then # if larger file shows progress bar if [ ${filename##*.} == "bz2" ]; then echo -ne "downloading ${filename}..." - if [ -f "${scriptlog}" ]; then - fn_scriptlog "downloading ${filename}" - fi sleep 1 curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") echo -ne "downloading ${filename}..." else echo -ne " fetching ${filename}...\c" - if [ -f "${scriptlog}" ]; then - fn_scriptlog "fetching ${filename}" - fi curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) fi local exitcode=$? From 9ea653ac84ad9c0191da2e773a9340e131de0d1b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:36:01 +0000 Subject: [PATCH 220/643] added exit to trap --- functions/core_dl.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 856253592..9d2a52233 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -79,6 +79,7 @@ fn_fetch_trap() { fn_printinfomation "downloading ${filename}: REMOVED" rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" fn_scriptlog "downloading ${filename}: REMOVED" + exit } fn_fetch_file(){ From 6d1819e05fd0950511a57cb2b7eca990e419bb85 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:41:38 +0000 Subject: [PATCH 221/643] Added CANCELED and REMOVED eol --- functions/core_messages.sh | 18 ++++++++++++++++++ functions/install_logs.sh | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/functions/core_messages.sh b/functions/core_messages.sh index 88a0a8127..8d4f87ebe 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -162,4 +162,22 @@ fn_printqueryingeol(){ fn_printqueryingeolnl(){ echo -e "\e[0;31mQUERYING\e[0m\n" +} + +# CANCELED for end of line +fn_printcanceledeol(){ + echo -en "\e[0;31mQUERYING\e[0m\n" +} + +fn_printcanceledeolnl(){ + echo -e "\e[0;31mQUERYING\e[0m\n" +} + +# REMOVED for end of line +fn_printremovedeol(){ + echo -en "\e[0;31mQUERYING\e[0m\n" +} + +fn_printremovedeolnl(){ + echo -e "\e[0;31mQUERYING\e[0m\n" } \ No newline at end of file diff --git a/functions/install_logs.sh b/functions/install_logs.sh index c90aadb36..2722ef19b 100644 --- a/functions/install_logs.sh +++ b/functions/install_logs.sh @@ -45,4 +45,4 @@ if [ -d "${rootdir}/Steam/logs" ]; then fi fi sleep 1 -fn_scriptlog "Logs installed" \ No newline at end of file +fn_scriptlog "logs installed" \ No newline at end of file From 83a5a22a6e8dc41cd7e1972d3df45544fa318a55 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:42:18 +0000 Subject: [PATCH 222/643] added canceled and removed --- functions/core_messages.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/functions/core_messages.sh b/functions/core_messages.sh index 8d4f87ebe..56251e6db 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -166,18 +166,18 @@ fn_printqueryingeolnl(){ # CANCELED for end of line fn_printcanceledeol(){ - echo -en "\e[0;31mQUERYING\e[0m\n" + echo -en "\e[0;31mCANCELED\e[0m\n" } fn_printcanceledeolnl(){ - echo -e "\e[0;31mQUERYING\e[0m\n" + echo -e "\e[0;31mCANCELED\e[0m\n" } # REMOVED for end of line fn_printremovedeol(){ - echo -en "\e[0;31mQUERYING\e[0m\n" + echo -en "\e[0;31mREMOVED\e[0m\n" } fn_printremovedeolnl(){ - echo -e "\e[0;31mQUERYING\e[0m\n" + echo -e "\e[0;31mREMOVED\e[0m\n" } \ No newline at end of file From fedd6394e60d3d92211ab7d4b336aaf31163ef89 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:44:47 +0000 Subject: [PATCH 223/643] Updated trap messages --- functions/core_dl.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 9d2a52233..fae71b735 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -73,11 +73,13 @@ fi # Trap to remove file download if canceled before completed fn_fetch_trap() { echo "" - fn_printinfomationnl "downloading ${filename}: CANCELED" + echo -ne "downloading ${filename}: " + fn_printcanceledeol fn_scriptlog "downloading ${filename}: CANCELED" sleep 1 - fn_printinfomation "downloading ${filename}: REMOVED" rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" + echo -ne "downloading ${filename}: " + fn_printremovedeol fn_scriptlog "downloading ${filename}: REMOVED" exit } From 931cf2855f94783dd30232a6810f662057ae3e89 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 13:51:01 +0000 Subject: [PATCH 224/643] updated md5sums --- functions/install_server_files.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh index b09cc0ba2..b99bb9692 100644 --- a/functions/install_server_files.sh +++ b/functions/install_server_files.sh @@ -6,12 +6,11 @@ lgsm_version="270216" fn_install_server_files(){ if [ "${gamename}" == "Unreal Tournament 99" ]; then - fileurl="http://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; run="norun"; force="noforce"; md5="e623fdff5ed600a9bfccab852e18d34d" + fileurl="http://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" elif [ "${gamename}" == "Unreal Tournament 2004" ]; then - fileurl="http://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; run="norun"; force="noforce"; md5="e623fdff5ed600a9bfccab852e18d34d" + fileurl="http://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" fi - -fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${run}" "${force}" "${md5}" +fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" } From d9f9e76ad974b07b30ac5a57467e1c6c08a38075 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 14:47:40 +0000 Subject: [PATCH 225/643] Added module name to all install functions --- functions/command_install.sh | 1 + functions/core_dl.sh | 4 ++-- functions/install_complete.sh | 2 ++ functions/install_config.sh | 2 ++ functions/install_gslt.sh | 2 ++ functions/install_header.sh | 2 ++ functions/install_logs.sh | 2 ++ functions/install_retry.sh | 2 ++ functions/install_server_dir.sh | 2 ++ functions/install_server_files.sh | 2 ++ functions/install_steamcmd.sh | 2 ++ functions/install_ts3.sh | 2 ++ functions/install_ts3db.sh | 2 ++ functions/install_ut2k4_key.sh | 1 + 14 files changed, 26 insertions(+), 2 deletions(-) diff --git a/functions/command_install.sh b/functions/command_install.sh index fb4682d53..9c7eb7180 100644 --- a/functions/command_install.sh +++ b/functions/command_install.sh @@ -4,6 +4,7 @@ # Website: http://gameservermanagers.com lgsm_version="260216" +local modulename="Install" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh diff --git a/functions/core_dl.sh b/functions/core_dl.sh index fae71b735..597a97150 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -28,13 +28,13 @@ if [ -n "${md5}" ]; then fn_printfaileolnl echo "${filename} returned MD5 checksum: ${md5sumcmd}" echo "expected MD5 checksum: ${md5}" - fn_scriptlog "failed to verify ${filename} with MD5" + fn_scriptlog "verifying ${filename} with MD5: FAIL" fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" fn_scriptlog "expected MD5 checksum: ${md5}" exit 1 else fn_printokeolnl - fn_scriptlog "verifyed ${filename} with MD5" + fn_scriptlog "verifying ${filename} with MD5: OK" fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" fn_scriptlog "expected MD5 checksum: ${md5}" fi diff --git a/functions/install_complete.sh b/functions/install_complete.sh index b6fab789d..5ea9a127b 100644 --- a/functions/install_complete.sh +++ b/functions/install_complete.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="271215" +local modulename="Install" + if [ "${gamename}" == "Don't Starve Together" ]; then echo "" echo "An Authentication Token is required to run this server!" diff --git a/functions/install_config.sh b/functions/install_config.sh index 257e29fd7..a47be1157 100644 --- a/functions/install_config.sh +++ b/functions/install_config.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="100116" +local modulename="Install" + fn_defaultconfig(){ echo "creating ${servercfg} config file." cp -v "${servercfgdefault}" "${servercfgfullpath}" diff --git a/functions/install_gslt.sh b/functions/install_gslt.sh index b7649eade..5bd309f28 100644 --- a/functions/install_gslt.sh +++ b/functions/install_gslt.sh @@ -6,6 +6,8 @@ lgsm_version="270216" # Description: Configures GSLT. +local modulename="Install" + echo "" echo "Game Server Login Token" echo "============================" diff --git a/functions/install_header.sh b/functions/install_header.sh index ae8ab9240..2f48fdc9c 100644 --- a/functions/install_header.sh +++ b/functions/install_header.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="271215" +local modulename="Install" + clear echo "=================================" echo "${gamename}" diff --git a/functions/install_logs.sh b/functions/install_logs.sh index 2722ef19b..a1687d962 100644 --- a/functions/install_logs.sh +++ b/functions/install_logs.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="270216" +local modulename="Install" + if [ "${checklogs}" != "1" ]; then echo "" echo "Creating log directorys" diff --git a/functions/install_retry.sh b/functions/install_retry.sh index 2e7697af5..7f04ac9ed 100644 --- a/functions/install_retry.sh +++ b/functions/install_retry.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="271215" +local modulename="Install" + while true; do read -e -i "y" -p "Retry install? [Y/n]" yn case $yn in diff --git a/functions/install_server_dir.sh b/functions/install_server_dir.sh index 2c664e8e3..1a4f54b77 100644 --- a/functions/install_server_dir.sh +++ b/functions/install_server_dir.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="271215" +local modulename="Install" + echo "" echo "Server Directory" echo "=================================" diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh index b99bb9692..f345c09f1 100644 --- a/functions/install_server_files.sh +++ b/functions/install_server_files.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="270216" +local modulename="Install" + fn_install_server_files(){ if [ "${gamename}" == "Unreal Tournament 99" ]; then fileurl="http://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" diff --git a/functions/install_steamcmd.sh b/functions/install_steamcmd.sh index 1f744e7f6..de371bbd8 100644 --- a/functions/install_steamcmd.sh +++ b/functions/install_steamcmd.sh @@ -6,6 +6,8 @@ lgsm_version="271215" # Description: Downloads SteamCMD on install. +local modulename="Install" + echo "" echo "Installing SteamCMD" echo "=================================" diff --git a/functions/install_ts3.sh b/functions/install_ts3.sh index 27598ac56..3a2acc224 100644 --- a/functions/install_ts3.sh +++ b/functions/install_ts3.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="271215" +local modulename="Install" + info_distro.sh # Gets the teamspeak server architecture if [ "${arch}" == "x86_64" ]; then diff --git a/functions/install_ts3db.sh b/functions/install_ts3db.sh index 57c87b97d..90f5b0329 100644 --- a/functions/install_ts3db.sh +++ b/functions/install_ts3db.sh @@ -5,6 +5,8 @@ # Website: http://gameservermanagers.com lgsm_version="271215" +local modulename="Install" + fn_install_ts3db_mariadb(){ echo "" echo "checking if libmariadb2 is installed" diff --git a/functions/install_ut2k4_key.sh b/functions/install_ut2k4_key.sh index f582f4c16..53b603de1 100644 --- a/functions/install_ut2k4_key.sh +++ b/functions/install_ut2k4_key.sh @@ -4,6 +4,7 @@ # Website: http://gameservermanagers.com lgsm_version="271215" +local modulename="Install" echo "" echo "Enter ${gamename} CD Key" From 664c35413cd1d346a2fe55c6a22d797b02b62133 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 14:55:53 +0000 Subject: [PATCH 226/643] Fixed gsquery.py download --- functions/core_dl.sh | 4 ++-- functions/monitor_gsquery.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 597a97150..8275d5770 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -20,7 +20,7 @@ lgsm_version="050216" fn_dl_md5(){ # Runs MD5 Check if available -if [ -n "${md5}" ]; then +if [ -n "${md5}" ]||[ "${md5}" == "nomd5" ]; then echo -ne "verifying ${filename} with MD5..." sleep 1 local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') @@ -181,7 +181,7 @@ filename="${github_file_url_name}" executecmd="${4:-0}" run="${5:-0}" force="${6:-0}" -md5="${7:-0}" +md5="${7}" fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" } diff --git a/functions/monitor_gsquery.sh b/functions/monitor_gsquery.sh index c714d64ee..5fa63b32e 100644 --- a/functions/monitor_gsquery.sh +++ b/functions/monitor_gsquery.sh @@ -11,7 +11,7 @@ local modulename="Monitor" # Downloads gsquery.py if missing if [ ! -f "${functionsdir}/gsquery.py" ]; then - fn_fetch_file_github "functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" + fn_fetch_file_github "functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" "nomd5" fi info_config.sh From ece19b33550a2632b43e3a9aee1ed0a3a98eebd4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 16:01:33 +0000 Subject: [PATCH 227/643] Updated messages func names Update al messages function names to make is easier to read --- functions/check_config.sh | 2 +- functions/check_deps.sh | 8 +-- functions/check_ip.sh | 2 +- functions/check_logs.sh | 4 +- functions/check_root.sh | 2 +- functions/check_steamcmd.sh | 12 ++--- functions/check_system_dir.sh | 2 +- functions/check_tmux.sh | 2 +- functions/command_backup.sh | 4 +- functions/command_console.sh | 8 +-- functions/command_debug.sh | 8 +-- functions/command_details.sh | 2 +- functions/command_dev_debug.sh | 4 +- functions/command_email_test.sh | 2 +- functions/command_monitor.sh | 26 +++++----- functions/command_start.sh | 20 ++++---- functions/command_stop.sh | 38 +++++++------- functions/command_ts3_server_pass.sh | 10 ++-- functions/command_update_functions.sh | 8 +-- functions/command_validate.sh | 6 +-- functions/core_dl.sh | 18 +++---- functions/core_messages.sh | 73 ++++++++++++++------------- functions/email.sh | 4 +- functions/fix_arma3.sh | 8 +-- functions/fix_csgo.sh | 8 +-- functions/fix_dst.sh | 8 +-- functions/fix_glibc.sh | 4 +- functions/fix_steamcmd.sh | 8 +-- functions/fn_update_functions | 6 +-- functions/install_server_dir.sh | 2 +- functions/install_server_files.sh | 6 +-- functions/install_ts3.sh | 6 +-- functions/install_ts3db.sh | 2 +- functions/logs.sh | 8 +-- functions/monitor_gsquery.sh | 20 ++++---- functions/update_check.sh | 54 ++++++++++---------- functions/update_dl.sh | 4 +- tests/tests_jc2server.sh | 12 ++--- tests/tests_ts3server.sh | 6 +-- 39 files changed, 215 insertions(+), 212 deletions(-) diff --git a/functions/check_config.sh b/functions/check_config.sh index 24d32318f..c329cca95 100644 --- a/functions/check_config.sh +++ b/functions/check_config.sh @@ -8,7 +8,7 @@ lgsm_version="060116" if [ ! -e "${servercfgfullpath}" ]; then if [ "${gamename}" != "Hurtworld" ]; then - fn_printwarnnl "Config file missing!" + fn_print_warn_nl "Config file missing!" echo "${servercfgfullpath}" fn_scriptlog "Configuration file missing!" fn_scriptlog "${servercfgfullpath}" diff --git a/functions/check_deps.sh b/functions/check_deps.sh index d562369a8..3cd5d32ce 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -50,15 +50,15 @@ fi fn_found_missing_deps(){ if [ "${#array_deps_missing[@]}" != "0" ]; then - fn_printdots "Checking dependencies" + fn_print_dots "Checking dependencies" sleep 2 - fn_printwarn "Checking dependencies: Dependency missing: \e[0;31m${array_deps_missing[@]}\e[0m" + fn_print_warn "Checking dependencies: Dependency missing: \e[0;31m${array_deps_missing[@]}\e[0m" fn_scriptlog "Checking dependencies: Dependency missing: \e[0;31m${array_deps_missing[@]}\e[0m" sleep 1 echo -e "" sudo -n true > /dev/null 2>&1 if [ $? -eq 0 ]; then - fn_printinfonl "Attempting to install missing dependencies automatically" + fn_print_info_nl "Attempting to install missing dependencies automatically" echo -en ".\r" sleep 1 echo -en "..\r" @@ -73,7 +73,7 @@ if [ "${#array_deps_missing[@]}" != "0" ]; then fi else echo "" - fn_printinfomationnl "$(whoami) does not have sudo access. manually install dependencies" + fn_print_infomation_nl "$(whoami) does not have sudo access. manually install dependencies" fn_scriptlog "$(whoami) does not have sudo access. manually install dependencies" echo "" if [ -n "$(command -v dpkg-query)" ]; then diff --git a/functions/check_ip.sh b/functions/check_ip.sh index 3e7e86cd3..c4b5be149 100644 --- a/functions/check_ip.sh +++ b/functions/check_ip.sh @@ -20,7 +20,7 @@ else if [ "${ip}" == "0.0.0.0" ]||[ "${ip}" == "" ]; then if [ "${getipwc}" -ge "2" ]; then - fn_printwarn "Multiple active network interfaces found.\n\n" + fn_print_warn "Multiple active network interfaces found.\n\n" echo -en "Manually specify the IP you want to use within the ${selfname} script.\n" echo -en "Set ip=\"0.0.0.0\" to one of the following:\n" echo -en "${getip}\n" diff --git a/functions/check_logs.sh b/functions/check_logs.sh index 92ed2cad1..f390eeab4 100644 --- a/functions/check_logs.sh +++ b/functions/check_logs.sh @@ -8,9 +8,9 @@ lgsm_version="271215" # Create dir's for the script and console logs if [ ! -d "${scriptlogdir}" ]; then - fn_printdots "Checking for log files" + fn_print_dots "Checking for log files" sleep 1 - fn_printinfo "Checking for log files: Creating log files" + fn_print_info "Checking for log files: Creating log files" echo -en "\n" checklogs=1 install_logs.sh diff --git a/functions/check_root.sh b/functions/check_root.sh index 8f2e5ed54..1a37cef57 100644 --- a/functions/check_root.sh +++ b/functions/check_root.sh @@ -5,7 +5,7 @@ lgsm_version="271215" if [ $(whoami) = "root" ]; then - fn_printfailnl "Do NOT run this script as root!" + fn_print_fail_nl "Do NOT run this script as root!" if [ -d "${scriptlogdir}" ]; then fn_scriptlog "${selfname} attempted to run as root." fi diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index 760b0b835..4039c4ef8 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -20,7 +20,7 @@ chmod +x "${steamcmddir}/steamcmd.sh" fn_check_steamcmd_user(){ # Checks steamuser is setup. if [ "${steamuser}" == "username" ]; then - fn_printfailnl "Steam login not set. Update steamuser." + fn_print_fail_nl "Steam login not set. Update steamuser." echo " * Change steamuser=\"username\" to a valid steam login." if [ -d "${scriptlogdir}" ]; then fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login." @@ -29,7 +29,7 @@ if [ "${steamuser}" == "username" ]; then fi # Anonymous user is set if steamuser is missing if [ -z "${steamuser}" ]; then - fn_printwarnnl "Steam login not set. Using anonymous login." + fn_print_warn_nl "Steam login not set. Using anonymous login." if [ -d "${scriptlogdir}" ]; then fn_scriptlog "Steam login not set. Using anonymous login." fi @@ -47,14 +47,14 @@ if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then if [ "${function_selfname}" == "command_install.sh" ]; then fn_install_steamcmd else - fn_printwarnnl "SteamCMD is missing" + fn_print_warn_nl "SteamCMD is missing" fn_scriptlog "SteamCMD is missing" sleep 1 fn_install_steamcmd fi elif [ "${function_selfname}" == "command_install.sh" ]; then - fn_printinfomation "SteamCMD is already installed..." - fn_printokeolnl + fn_print_infomation "SteamCMD is already installed..." + fn_print_ok_eol_nl fi } @@ -63,7 +63,7 @@ if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" = # Checks that steamcmd is working correctly and will prompt Steam Guard if required. "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit if [ $? -ne 0 ]; then - fn_printfailurenl "Error running SteamCMD" + fn_print_failure_nl "Error running SteamCMD" fi fi } diff --git a/functions/check_system_dir.sh b/functions/check_system_dir.sh index ecada4e09..d5d57e75b 100644 --- a/functions/check_system_dir.sh +++ b/functions/check_system_dir.sh @@ -5,7 +5,7 @@ lgsm_version="271215" if [ ! -d "${systemdir}" ]; then - fn_printfailnl "Cannot access ${systemdir}: No such directory" + fn_print_fail_nl "Cannot access ${systemdir}: No such directory" if [ -d "${scriptlogdir}" ]; then fn_scriptlog "Cannot access ${systemdir}: No such directory." fi diff --git a/functions/check_tmux.sh b/functions/check_tmux.sh index ac142ebe4..49f43dd21 100644 --- a/functions/check_tmux.sh +++ b/functions/check_tmux.sh @@ -9,7 +9,7 @@ lgsm_version="271215" if [ "$(command -v tmux)" ]||[ "$(which tmux >/dev/null 2>&1)" ]||[ -f "/usr/bin/tmux" ]||[ -f "/bin/tmux" ]; then : else - fn_printfailnl "Tmux not installed" + fn_print_fail_nl "Tmux not installed" sleep 1 fn_scriptlog "Tmux is not installed" echo " * Tmux is required to run this server." diff --git a/functions/command_backup.sh b/functions/command_backup.sh index 5f923ad07..d8d52f4bc 100644 --- a/functions/command_backup.sh +++ b/functions/command_backup.sh @@ -30,7 +30,7 @@ done tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") if [ "${tmuxwc}" -eq 1 ]; then echo "" - fn_printwarningnl "${servicename} is currently running." + fn_print_warning_nl "${servicename} is currently running." sleep 1 while true; do read -p "Stop ${servicename} while running the backup? [y/N]" yn @@ -59,6 +59,6 @@ echo "Backup created: ${backupdir}/${backupname}.tar.gz" fn_scriptlog "Created: ${backupdir}/${backupname}.tar.gz" sleep 1 echo "" -fn_printcompletenl "Complete." +fn_print_complete_nl "Complete." fn_scriptlog "Complete" echo "" diff --git a/functions/command_console.sh b/functions/command_console.sh index 4eab4d6eb..f7f2c1323 100644 --- a/functions/command_console.sh +++ b/functions/command_console.sh @@ -15,7 +15,7 @@ echo "${gamename} Console" echo "============================" echo "" echo "Press \"CTRL+b d\" to exit console." -fn_printwarningnl "Do NOT press CTRL+c to exit." +fn_print_warning_nl "Do NOT press CTRL+c to exit." echo "" while true; do read -e -i "y" -p "Continue? [y/N]" yn @@ -25,16 +25,16 @@ while true; do * ) echo "Please answer yes or no.";; esac done -fn_printdots "Starting" +fn_print_dots "Starting" sleep 1 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") if [ "${tmuxwc}" -eq 1 ]; then - fn_printoknl "Starting" + fn_print_ok_nl "Starting" fn_scriptlog "accessed" sleep 1 tmux attach-session -t ${servicename} else - fn_printfailnl "Server not running" + fn_print_fail_nl "Server not running" fn_scriptlog "Failed to access: Server not running" sleep 1 while true; do diff --git a/functions/command_debug.sh b/functions/command_debug.sh index 097ddf289..7c9aca38b 100644 --- a/functions/command_debug.sh +++ b/functions/command_debug.sh @@ -31,7 +31,7 @@ fi echo "" echo -e "Use for identifying server issues only!" echo -e "Press CTRL+c to drop out of debug mode." -fn_printwarningnl "If ${servicename} is already running it will be stopped." +fn_print_warning_nl "If ${servicename} is already running it will be stopped." echo "" while true; do read -e -i "y" -p "Continue? [Y/n]" yn @@ -42,13 +42,13 @@ while true; do esac done fn_scriptlog "Starting debug" -fn_printinfonl "Stopping any running servers" +fn_print_info_nl "Stopping any running servers" fn_scriptlog "Stopping any running servers" sleep 1 command_stop.sh -fn_printdots "Starting debug" +fn_print_dots "Starting debug" sleep 1 -fn_printok "Starting debug" +fn_print_ok "Starting debug" fn_scriptlog "Started debug" sleep 1 echo -en "\n" diff --git a/functions/command_details.sh b/functions/command_details.sh index 0084f20e5..177575fe8 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -628,5 +628,5 @@ elif [ "${gamename}" == "7 Days To Die" ]; then elif [ "${gamename}" == "Teamspeak 3" ]; then fn_details_teamspeak3 else - fn_printerrornl "Unable to detect server engine." + fn_print_error_nl "Unable to detect server engine." fi diff --git a/functions/command_dev_debug.sh b/functions/command_dev_debug.sh index e2c9d9cc5..1855f5919 100644 --- a/functions/command_dev_debug.sh +++ b/functions/command_dev_debug.sh @@ -8,8 +8,8 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" if [ -f ".dev-debug" ]; then rm .dev-debug - fn_printoknl "Disabled dev-debug" + fn_print_ok_nl "Disabled dev-debug" else date > .dev-debug - fn_printoknl "Enabled dev-debug" + fn_print_ok_nl "Enabled dev-debug" fi \ No newline at end of file diff --git a/functions/command_email_test.sh b/functions/command_email_test.sh index b24ff3b01..26a0b6a42 100644 --- a/functions/command_email_test.sh +++ b/functions/command_email_test.sh @@ -17,6 +17,6 @@ if [ "${emailnotification}" = "on" ]; then actiontaken="Sent test email...hello is this thing on?" email.sh else - fn_printfailnl "Notifications not enabled" + fn_print_fail_nl "Notifications not enabled" fn_scriptlog "Notifications not enabled" fi \ No newline at end of file diff --git a/functions/command_monitor.sh b/functions/command_monitor.sh index f253abc54..e09b6236c 100644 --- a/functions/command_monitor.sh +++ b/functions/command_monitor.sh @@ -13,33 +13,33 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_monitor_teamspeak3(){ check.sh logs.sh -fn_printdots "${servername}" +fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 if [ ! -f "${rootdir}/${lockselfname}" ]; then - fn_printinfo "Disabled: No lock file found" + fn_print_info "Disabled: No lock file found" fn_scriptlog "Disabled: No lock file found" sleep 1 echo -en "\n" echo "To enable monitor run ./${selfname} start" exit 1 fi -fn_printdots "Checking session: CHECKING" +fn_print_dots "Checking session: CHECKING" fn_scriptlog "Checking session: CHECKING" sleep 1 info_ts3status.sh if [ "${ts3status}" = "Server is running" ]; then - fn_printok "Checking session: OK" + fn_print_ok "Checking session: OK" fn_scriptlog "Checking session: OK" sleep 1 sleep 0.5 echo -en "\n" exit else - fn_printfail "Checking session: FAIL" + fn_print_fail "Checking session: FAIL" fn_scriptlog "Checking session: FAIL" sleep 1 - fn_printfail "Checking session: FAIL: ${ts3status}" + fn_print_fail "Checking session: FAIL: ${ts3status}" fn_scriptlog "Checking session: FAIL: ${ts3status}" failurereason="${ts3status}" if [ "${emailnotification}" = "on" ]; then @@ -56,11 +56,11 @@ fn_restart fn_monitor_tmux(){ check.sh info_config.sh -fn_printdots "${servername}" +fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 if [ ! -f "${rootdir}/${lockselfname}" ]; then - fn_printinfo "Disabled: No lock file found" + fn_print_info "Disabled: No lock file found" fn_scriptlog "Disabled: No lock file found" sleep 1 echo -en "\n" @@ -70,12 +70,12 @@ fi updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 2004" ]; then - fn_printdots "Checking session: CHECKING" + fn_print_dots "Checking session: CHECKING" fn_scriptlog "Checking session: CHECKING" sleep 1 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") if [ "${tmuxwc}" -eq 1 ]; then - fn_printok "Checking session: OK" + fn_print_ok "Checking session: OK" fn_scriptlog "Checking session: OK" sleep 1 echo -en "\n" @@ -85,7 +85,7 @@ if [ "${updatecheck}" = "0" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "$ fi exit $? else - fn_printfail "Checking session: FAIL" + fn_print_fail "Checking session: FAIL" fn_scriptlog "Checking session: FAIL" sleep 1 echo -en "\n" @@ -99,10 +99,10 @@ if [ "${updatecheck}" = "0" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "$ command_start.sh fi else - fn_printinfonl "SteamCMD is currently checking for updates" + fn_print_info_nl "SteamCMD is currently checking for updates" fn_scriptlog "SteamCMD is currently checking for updates" sleep 1 - fn_printinfonl "When update is complete ${servicename} will start" + fn_print_info_nl "When update is complete ${servicename} will start" fn_scriptlog "When update is complete ${servicename} will start" sleep 1 fi diff --git a/functions/command_start.sh b/functions/command_start.sh index 309a8078f..fd30a17bb 100644 --- a/functions/command_start.sh +++ b/functions/command_start.sh @@ -21,7 +21,7 @@ if [ "${ts3status}" != "Server is running" ]; then fi if [ ! -e "${servercfgfullpath}" ]; then - fn_printwarn "${servercfgfullpath} is missing" + fn_print_warn "${servercfgfullpath} is missing" fn_scriptlog "${servercfgfullpath} is missing" sleep 2 echo -en "\n" @@ -39,12 +39,12 @@ fi logs.sh -fn_printdots "${servername}" +fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 if [ "${ts3status}" == "Server is running" ]; then - fn_printinfo "${servername} is already running" + fn_print_info "${servername} is already running" fn_scriptlog "${servername} is already running" sleep 1 echo -en "\n" @@ -63,12 +63,12 @@ fi sleep 1 info_ts3status.sh if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - fn_printfailnl "Unable to start ${servername}" + fn_print_fail_nl "Unable to start ${servername}" fn_scriptlog "Unable to start ${servername}" echo -e " Check log files: ${rootdir}/log" exit 1 else - fn_printok "${servername}" + fn_print_ok "${servername}" fn_scriptlog "Started ${servername}" fi sleep 0.5 @@ -90,7 +90,7 @@ if [ "${tmuxwc}" -eq 0 ]; then fi fi -fn_printdots "${servername}" +fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 @@ -104,7 +104,7 @@ if [ "${tmuxwc}" -eq 0 ]; then fi if [ "${tmuxwc}" -eq 1 ]; then - fn_printinfo "${servername} is already running" + fn_print_info "${servername} is already running" fn_scriptlog "${servername} is already running" sleep 1 echo -en "\n" @@ -132,11 +132,11 @@ sleep 1 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") # If the server fails to start if [ "${tmuxwc}" -eq 0 ]; then - fn_printfailnl "Unable to start ${servername}" + fn_print_fail_nl "Unable to start ${servername}" fn_scriptlog "Unable to start ${servername}" sleep 1 if [ -s "${scriptlogdir}/.${servicename}-tmux-error.tmp" ]; then - fn_printfailnl "Unable to start ${servername}: Tmux error:" + fn_print_fail_nl "Unable to start ${servername}: Tmux error:" fn_scriptlog "Tmux error" sleep 1 echo -en "\n" @@ -180,7 +180,7 @@ if [ "${tmuxwc}" -eq 0 ]; then fi exit 1 else - fn_printok "${servername}" + fn_print_ok "${servername}" fn_scriptlog "Started ${servername}" fi rm "${scriptlogdir}/.${servicename}-tmux-error.tmp" diff --git a/functions/command_stop.sh b/functions/command_stop.sh index 98d21c9a5..d5d589beb 100644 --- a/functions/command_stop.sh +++ b/functions/command_stop.sh @@ -31,16 +31,16 @@ sdtd_telnet(){ fn_stop_teamspeak3(){ check.sh -fn_printdots "${servername}" +fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 info_ts3status.sh if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - fn_printfail "${servername} is already stopped" + fn_print_fail "${servername} is already stopped" fn_scriptlog "${servername} is already stopped" else ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 - fn_printok "${servername}" + fn_print_ok "${servername}" fn_scriptlog "Stopped ${servername}" fi # Remove lock file @@ -52,14 +52,14 @@ echo -en "\n" fn_stop_tmux(){ check.sh info_config.sh -fn_printdots "${servername}" +fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 if [ "${gamename}" == "7 Days To Die" ] ; then # if game is 7 Days To Die, we need special, graceful shutdown via telnet connection. # Set below variable to be called for expect to operate correctly.. - fn_printdots "Attempting graceful shutdown via telnet" + fn_print_dots "Attempting graceful shutdown via telnet" fn_scriptlog "Attempting graceful shutdown via telnet" sleep 1 telnetip=127.0.0.1 @@ -69,11 +69,11 @@ if [ "${gamename}" == "7 Days To Die" ] ; then refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") if [ -n "${refused}" ]; then telnetip=${ip} - fn_printwarn "Attempting graceful shutdown via telnet: localhost failed" + fn_print_warn "Attempting graceful shutdown via telnet: localhost failed" fn_scriptlog "Warning! Attempting graceful shutdown failed using localhost" sleep 5 echo -en "\n" - fn_printdots "Attempting graceful shutdown via telnet: using ${telnetip}" + fn_print_dots "Attempting graceful shutdown via telnet: using ${telnetip}" fn_scriptlog "Attempting graceful shutdown via telnet using ${telnetip}" sdtd_telnet sleep 1 @@ -82,14 +82,14 @@ if [ "${gamename}" == "7 Days To Die" ] ; then refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") completed=$(echo -en "\n ${sdtdshutdown}"| grep "Completed.") if [ -n "${refused}" ]; then - fn_printfail "Attempting graceful shutdown via telnet" + fn_print_fail "Attempting graceful shutdown via telnet" fn_scriptlog "Attempting graceful shutdown failed" fn_scriptlog "${refused}" elif [ -n "${completed}" ]; then - fn_printok "Attempting graceful shutdown via telnet" + fn_print_ok "Attempting graceful shutdown via telnet" fn_scriptlog "Attempting graceful shutdown succeeded" else - fn_printfail "Attempting graceful shutdown via telnet: Unknown error" + fn_print_fail "Attempting graceful shutdown via telnet: Unknown error" fn_scriptlog "Attempting graceful shutdown failed" fn_scriptlog "Unknown error" fi @@ -99,29 +99,29 @@ if [ "${gamename}" == "7 Days To Die" ] ; then echo -en "\n ${sdtdshutdown}" echo -en "\n\n" sleep 1 - fn_printdots "${servername}" + fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 5 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") if [ "${pid}" == "0" ]; then - fn_printok "${servername} is already stopped using graceful shutdown" + fn_print_ok "${servername} is already stopped using graceful shutdown" fn_scriptlog "${servername} is already stopped using graceful shutdown" else tmux kill-session -t "${servicename}" - fn_printok "${servername}" + fn_print_ok "${servername}" fn_scriptlog "Stopped ${servername}" fi else pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") if [ "${pid}" == "0" ]; then - fn_printfail "${servername} is already stopped" + fn_print_fail "${servername} is already stopped" fn_scriptlog "${servername} is already stopped" else if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then sleep 1 - fn_printdots "Attempting graceful shutdown" + fn_print_dots "Attempting graceful shutdown" fn_scriptlog "Attempting graceful shutdown" tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 counter=0 @@ -130,19 +130,19 @@ else sleep 1 let counter=counter+1 if [ "${counter}" -gt "1" ]; then - fn_printdots "Attempting graceful shutdown: ${counter}" + fn_print_dots "Attempting graceful shutdown: ${counter}" fi done pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") if [ "${pid}" == "0" ]; then - fn_printok "Attempting graceful shutdown" + fn_print_ok "Attempting graceful shutdown" else - fn_printfail "Attempting graceful shutdown" + fn_print_fail "Attempting graceful shutdown" fi fi tmux kill-session -t "${servicename}" > /dev/null 2>&1 - fn_printok "${servername}" + fn_print_ok "${servername}" fn_scriptlog "Stopped ${servername}" fi fi diff --git a/functions/command_ts3_server_pass.sh b/functions/command_ts3_server_pass.sh index 3cd0f0b1f..eba76523a 100644 --- a/functions/command_ts3_server_pass.sh +++ b/functions/command_ts3_server_pass.sh @@ -17,8 +17,8 @@ echo "${gamename} ServerAdmin Password Change" echo "============================" echo "" echo "Press \"CTRL+b d\" to exit console." -fn_printinfomationnl "You are about to change the ${gamename} ServerAdmin password." -fn_printwarningnl "${gamename} will restart during this process." +fn_print_infomation_nl "You are about to change the ${gamename} ServerAdmin password." +fn_print_warning_nl "${gamename} will restart during this process." echo "" while true; do read -e -i "y" -p "Continue? [y/N]" yn @@ -34,18 +34,18 @@ read -p "Enter new password : " newpassword fn_serveradmin_password_set(){ -fn_printinfonl "Applying new password" +fn_print_info_nl "Applying new password" fn_scriptlog "Applying new password" sleep 1 # Stop any running server command_stop.sh # Start server in "new password mode" ts3serverpass="1" -fn_printinfonl "Starting server with new password" +fn_print_info_nl "Starting server with new password" command_start.sh # Stop server in "new password mode" command_stop.sh -fn_printoknl "Password applied" +fn_print_ok_nl "Password applied" fn_scriptlog "New ServerAdmin password applied" sleep 1 } diff --git a/functions/command_update_functions.sh b/functions/command_update_functions.sh index 3c530e4a0..9c0ac4b90 100644 --- a/functions/command_update_functions.sh +++ b/functions/command_update_functions.sh @@ -8,7 +8,7 @@ lgsm_version="270216" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh -fn_printdots "Updating functions" +fn_print_dots "Updating functions" fn_scriptlog "Updating functions" sleep 1 echo -ne "\n" @@ -23,15 +23,15 @@ if [ -n "${functionsdir}" ]; then rm -rfv "${functionsdir}/"* exitcode=$? else - fn_printfail "Updating functions" + fn_print_fail "Updating functions" fn_scriptlog "Failure! Updating functions" fi if [ "${exitcode}" == "0" ]; then - fn_printok "Updating functions" + fn_print_ok "Updating functions" fn_scriptlog "Success! Updating functions" else - fn_printfail "Updating functions" + fn_print_fail "Updating functions" fn_scriptlog "Failure! Updating functions" fi echo -ne "\n" \ No newline at end of file diff --git a/functions/command_validate.sh b/functions/command_validate.sh index 40e23c01e..59c03b6ff 100644 --- a/functions/command_validate.sh +++ b/functions/command_validate.sh @@ -10,15 +10,15 @@ local modulename="Validate" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_validation(){ -fn_printwarn "Validating may overwrite some customised files." +fn_print_warn "Validating may overwrite some customised files." sleep 1 echo -en "\n" echo -en "https://developer.valvesoftware.com/wiki/SteamCMD#Validate" sleep 5 echo -en "\n" -fn_printdots "Checking server files" +fn_print_dots "Checking server files" sleep 1 -fn_printok "Checking server files" +fn_print_ok "Checking server files" fn_scriptlog "Checking server files" sleep 1 diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 8275d5770..cf3a2d777 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -25,7 +25,7 @@ if [ -n "${md5}" ]||[ "${md5}" == "nomd5" ]; then sleep 1 local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') if [ "${md5sumcmd}" != "${md5}" ]; then - fn_printfaileolnl + fn_print_fail_eol_nl echo "${filename} returned MD5 checksum: ${md5sumcmd}" echo "expected MD5 checksum: ${md5}" fn_scriptlog "verifying ${filename} with MD5: FAIL" @@ -33,7 +33,7 @@ if [ -n "${md5}" ]||[ "${md5}" == "nomd5" ]; then fn_scriptlog "expected MD5 checksum: ${md5}" exit 1 else - fn_printokeolnl + fn_print_ok_eol_nl fn_scriptlog "verifying ${filename} with MD5: OK" fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" fn_scriptlog "expected MD5 checksum: ${md5}" @@ -61,12 +61,12 @@ elif [ "${mime}" == "application/x-bzip2" ]; then fi local exitcode=$? if [ ${exitcode} -ne 0 ]; then - fn_printfaileolnl + fn_print_fail_eol_nl fn_scriptlog "extracting download: FAIL" echo "${tarcmd}" | tee -a "${scriptlog}" exit ${exitcode} else - fn_printokeolnl + fn_print_ok_eol_nl fi } @@ -74,12 +74,12 @@ fi fn_fetch_trap() { echo "" echo -ne "downloading ${filename}: " - fn_printcanceledeol + fn_print_canceled_eol fn_scriptlog "downloading ${filename}: CANCELED" sleep 1 rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" echo -ne "downloading ${filename}: " - fn_printremovedeol + fn_print_removed_eol fn_scriptlog "downloading ${filename}: REMOVED" exit } @@ -123,7 +123,7 @@ if [ ! -f "${filedir}/${filename}" ]; then fi local exitcode=$? if [ ${exitcode} -ne 0 ]; then - fn_printfaileolnl + fn_print_fail_eol_nl if [ -f "${scriptlog}" ]; then fn_scriptlog "downloading ${filename}: FAIL" fi @@ -131,7 +131,7 @@ if [ ! -f "${filedir}/${filename}" ]; then echo -e "${fileurl}\n" | tee -a "${scriptlog}" exit ${exitcode} else - fn_printokeolnl + fn_print_ok_eol_nl if [ -f "${scriptlog}" ]; then fn_scriptlog "downloading ${filename}: OK" fi @@ -139,7 +139,7 @@ if [ ! -f "${filedir}/${filename}" ]; then # remove trap trap - INT else - fn_printfaileolnl + fn_print_fail_eol_nl echo "Curl is not installed!" echo -e "" exit 1 diff --git a/functions/core_messages.sh b/functions/core_messages.sh index 56251e6db..6581d2f17 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -6,6 +6,9 @@ lgsm_version="380216" # Description: Defines on-screen messages such as [ OK ] and how script logs look. +# nl: new line: message is following by a new line +# eol: end of line: message is placed at the end of the current line + # Date and servicename for log files. fn_scriptlog(){ if [ -n "${modulename}" ]; then @@ -16,7 +19,7 @@ fn_scriptlog(){ } # [ FAIL ] -fn_printfail(){ +fn_print_fail(){ if [ -n "${modulename}" ]; then echo -en "\r\033[K[\e[0;31m FAIL \e[0m] ${modulename} ${servicename}: $@" else @@ -24,7 +27,7 @@ fn_printfail(){ fi } -fn_printfailnl(){ +fn_print_fail_nl(){ if [ -n "${modulename}" ]; then echo -e "\r\033[K[\e[0;31m FAIL \e[0m] ${modulename} ${servicename}: $@" else @@ -33,7 +36,7 @@ fn_printfailnl(){ } # [ OK ] -fn_printok(){ +fn_print_ok(){ if [ -n "${modulename}" ]; then echo -en "\r\033[K[\e[0;32m OK \e[0m] ${modulename} ${servicename}: $@" else @@ -41,7 +44,7 @@ fn_printok(){ fi } -fn_printoknl(){ +fn_print_ok_nl(){ if [ -n "${modulename}" ]; then echo -e "\r\033[K[\e[0;32m OK \e[0m] ${modulename} ${servicename}: $@" else @@ -50,7 +53,7 @@ fn_printoknl(){ } # [ INFO ] -fn_printinfo(){ +fn_print_info(){ if [ -n "${modulename}" ]; then echo -en "\r\033[K[\e[0;36m INFO \e[0m] ${modulename} ${servicename}: $@" else @@ -58,7 +61,7 @@ fn_printinfo(){ fi } -fn_printinfonl(){ +fn_print_info_nl(){ if [ -n "${modulename}" ]; then echo -e "\r\033[K[\e[0;36m INFO \e[0m] ${modulename} ${servicename}: $@" else @@ -67,7 +70,7 @@ fn_printinfonl(){ } # [ WARN ] -fn_printwarn(){ +fn_print_warn(){ if [ -n "${modulename}" ]; then echo -en "\r\033[K[\e[1;33m WARN \e[0m] ${modulename} ${servicename}: $@" else @@ -75,7 +78,7 @@ fn_printwarn(){ fi } -fn_printwarnnl(){ +fn_print_warn_nl(){ if [ -n "${modulename}" ]; then echo -e "\r\033[K[\e[1;33m WARN \e[0m] ${modulename} ${servicename}: $@" else @@ -84,7 +87,7 @@ fn_printwarnnl(){ } # [ .... ] -fn_printdots(){ +fn_print_dots(){ if [ -n "${modulename}" ]; then echo -en "\r\033[K[ .... ] ${modulename} ${servicename}: $@" else @@ -93,91 +96,91 @@ fn_printdots(){ } # Complete! -fn_printcomplete(){ +fn_print_complete(){ echo -en "\e[0;32mComplete!\e[0m $@" } -fn_printcompletenl(){ +fn_print_complete_nl(){ echo -e "\e[0;32mComplete!\e[0m $@" } # Warning! -fn_printwarning(){ +fn_print_warning(){ echo -en "\e[0;33mWarning!\e[0m $@" } -fn_printwarningnl(){ +fn_print_warning_nl(){ echo -e "\e[0;33mWarning!\e[0m $@" } # Failure! -fn_printfailure(){ +fn_print_failure(){ echo -en "\e[0;31mFailure!\e[0m $@" } -fn_printfailurenl(){ +fn_print_failure_nl(){ echo -e "\e[0;31mFailure!\e[0m $@" } # Error! -fn_printerror(){ +fn_print_error(){ echo -en "\e[0;31mError!\e[0m $@" } -fn_printerrornl(){ +fn_print_error_nl(){ echo -e "\e[0;31mError!\e[0m $@" } # Info! -fn_printinfomation(){ - echo -en "\e[0;36mInfo!\e[0m $@" +fn_print_infomation(){ + echo -en "\e[0;36mInfomation!\e[0m $@" } -fn_printinfomationnl(){ - echo -e "\e[0;36mInfo!\e[0m $@" +fn_print_infomation_nl(){ + echo -e "\e[0;36mInfomation!\e[0m $@" } # FAIL for end of line -fn_printokeol(){ +fn_print_ok_eol(){ echo -en "\e[0;32mOK\e[0m" } -fn_printokeolnl(){ +fn_print_ok_eol_nl(){ echo -e "\e[0;32mOK\e[0m" } # FAIL for end of line -fn_printfaileol(){ +fn_print_fail_eol(){ echo -en "\e[0;31mFAIL\e[0m\n" } -fn_printfaileolnl(){ +fn_print_fail_eol_nl(){ echo -e "\e[0;31mFAIL\e[0m\n" } # QUERYING for end of line -fn_printqueryingeol(){ - echo -en "\e[0;31mQUERYING\e[0m\n" +fn_print_querying_eol(){ + echo -en "\e[0;36mQUERYING\e[0m\n" } -fn_printqueryingeolnl(){ - echo -e "\e[0;31mQUERYING\e[0m\n" +fn_print_querying_eol_nl(){ + echo -e "\e[0;36mQUERYING\e[0m\n" } # CANCELED for end of line -fn_printcanceledeol(){ - echo -en "\e[0;31mCANCELED\e[0m\n" +fn_print_canceled_eol(){ + echo -en "\e[0;33mCANCELED\e[0m\n" } -fn_printcanceledeolnl(){ - echo -e "\e[0;31mCANCELED\e[0m\n" +fn_print_canceled_eol_nl(){ + echo -e "\e[0;33mCANCELED\e[0m\n" } # REMOVED for end of line -fn_printremovedeol(){ +fn_print_removed_eol(){ echo -en "\e[0;31mREMOVED\e[0m\n" } -fn_printremovedeolnl(){ +fn_print_removed_eol_nl(){ echo -e "\e[0;31mREMOVED\e[0m\n" } \ No newline at end of file diff --git a/functions/email.sh b/functions/email.sh index 93d259d80..66d5acba7 100644 --- a/functions/email.sh +++ b/functions/email.sh @@ -7,7 +7,7 @@ lgsm_version="020216" # Description: Sends email notification if monitor picks up a failure. local modulename="Email" -fn_printdots "Sending notification to ${email}" +fn_print_dots "Sending notification to ${email}" info_distro.sh info_config.sh check_ip.sh @@ -64,7 +64,7 @@ if [ ! -z "${gamelogdir}" ]; then tail "${gamelogdir}"/* | grep -v "==>" | sed '/^$/d' | tail -25 >> "${emaillog}" fi mail -s "${subject}" ${email} < "${emaillog}" -fn_printok "Sending notification to ${email}" +fn_print_ok "Sending notification to ${email}" fn_scriptlog "Sent notification to ${email}" sleep 1 echo -en "\n" diff --git a/functions/fix_arma3.sh b/functions/fix_arma3.sh index b0a1317de..b076fe065 100644 --- a/functions/fix_arma3.sh +++ b/functions/fix_arma3.sh @@ -7,19 +7,19 @@ lgsm_version="301215" # Fixes line 63: 20150 Segmentation fault (core dumped) #488 fn_msg_start(){ - fn_printdots "Applying ${fixname} fix: ${gamename}" + fn_print_dots "Applying ${fixname} fix: ${gamename}" sleep 1 - fn_printinfo "Applying ${fixname} fix: ${gamename}" + fn_print_info "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Applying ${fixname} fix: ${gamename}" sleep 1 } fn_msg_end(){ if [ $? -ne 0 ]; then - fn_printfailnl "Applying ${fixname} fix: ${gamename}" + fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" else - fn_printoknl "Applying ${fixname} fix: ${gamename}" + fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" fi } diff --git a/functions/fix_csgo.sh b/functions/fix_csgo.sh index 4227d36eb..33fd7c169 100644 --- a/functions/fix_csgo.sh +++ b/functions/fix_csgo.sh @@ -7,19 +7,19 @@ lgsm_version="301215" # Description: Resolves various issues with csgo. fn_msg_start(){ - fn_printdots "Applying ${fixname} fix: ${gamename}" + fn_print_dots "Applying ${fixname} fix: ${gamename}" sleep 1 - fn_printinfo "Applying ${fixname} fix: ${gamename}" + fn_print_info "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Applying ${fixname} fix: ${gamename}" sleep 1 } fn_msg_end(){ if [ $? -ne 0 ]; then - fn_printfailnl "Applying ${fixname} fix: ${gamename}" + fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" else - fn_printoknl "Applying ${fixname} fix: ${gamename}" + fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" fi } diff --git a/functions/fix_dst.sh b/functions/fix_dst.sh index 7a0028504..b860f6d09 100644 --- a/functions/fix_dst.sh +++ b/functions/fix_dst.sh @@ -7,19 +7,19 @@ lgsm_version="020116" # Fixes line 63: 20150 Segmentation fault (core dumped) #488 fn_msg_start(){ - fn_printdots "Applying ${fixname} fix: ${gamename}" + fn_print_dots "Applying ${fixname} fix: ${gamename}" sleep 1 - fn_printinfo "Applying ${fixname} fix: ${gamename}" + fn_print_info "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Applying ${fixname} fix: ${gamename}" sleep 1 } fn_msg_end(){ if [ $? -ne 0 ]; then - fn_printfailnl "Applying ${fixname} fix: ${gamename}" + fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" else - fn_printoknl "Applying ${fixname} fix: ${gamename}" + fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" fi } diff --git a/functions/fix_glibc.sh b/functions/fix_glibc.sh index 83422f12b..c46a1b5a0 100644 --- a/functions/fix_glibc.sh +++ b/functions/fix_glibc.sh @@ -9,7 +9,7 @@ echo "" echo "GLIBC Fix required" echo "============================" sleep 1 -fn_printwarningnl "${gamename} requires GLIBC_${glibcversion} or above" +fn_print_warning_nl "${gamename} requires GLIBC_${glibcversion} or above" sleep 1 echo "" echo -e "Currently installed:\e[0;31m GLIBC_$(ldd --version |grep ldd|awk '{print $NF}')\e[0;39m" @@ -34,7 +34,7 @@ echo -en "\n" # if ldd command not detected if [ -z $(command -v ldd) ]; then echo "" - fn_printfailurenl "GLIBC is not detected" + fn_print_failure_nl "GLIBC is not detected" sleep 1 echo "Install GLIBC and retry installation." sleep 1 diff --git a/functions/fix_steamcmd.sh b/functions/fix_steamcmd.sh index 862b4736f..a05f783c4 100644 --- a/functions/fix_steamcmd.sh +++ b/functions/fix_steamcmd.sh @@ -7,19 +7,19 @@ lgsm_version="010116" # Description: fixes various issues related to steamCMD. fn_msg_start(){ - fn_printdots "Applying ${fixname} fix: ${gamename}" + fn_print_dots "Applying ${fixname} fix: ${gamename}" sleep 1 - fn_printinfo "Applying ${fixname} fix: ${gamename}" + fn_print_info "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Applying ${fixname} fix: ${gamename}" sleep 1 } fn_msg_end(){ if [ $? -ne 0 ]; then - fn_printfailnl "Applying ${fixname} fix: ${gamename}" + fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" else - fn_printoknl "Applying ${fixname} fix: ${gamename}" + fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" fi } diff --git a/functions/fn_update_functions b/functions/fn_update_functions index 414649f6a..5fbb28975 100644 --- a/functions/fn_update_functions +++ b/functions/fn_update_functions @@ -6,17 +6,17 @@ lgsm_version="230116" # Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub. -fn_printdots "Updating functions" +fn_print_dots "Updating functions" fn_scriptlog "Updating functions" sleep 1 echo -ne "\n" rm -rfv "${rootdir}/functions/"* exitcode=$? if [ "${exitcode}" == "0" ]; then - fn_printok "Updating functions" + fn_print_ok "Updating functions" fn_scriptlog "Success! Updating functions" else - fn_printfail "Updating functions" + fn_print_fail "Updating functions" fn_scriptlog "Failure! Updating functions" fi echo -ne "\n" \ No newline at end of file diff --git a/functions/install_server_dir.sh b/functions/install_server_dir.sh index 1a4f54b77..ab73ecfd2 100644 --- a/functions/install_server_dir.sh +++ b/functions/install_server_dir.sh @@ -14,7 +14,7 @@ echo "" pwd echo "" if [ -d "${filesdir}" ]; then - fn_printwarningnl "A server is already installed here." + fn_print_warning_nl "A server is already installed here." fi if [ -z "${autoinstall}" ]; then while true; do diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh index f345c09f1..d6655689b 100644 --- a/functions/install_server_files.sh +++ b/functions/install_server_files.sh @@ -29,7 +29,7 @@ while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; do # Attempt 11: Failure if [ "${counter}" -ge "2" ]; then - fn_printwarningnl "SteamCMD did not complete the download, retrying: Attempt ${counter}" + fn_print_warning_nl "SteamCMD did not complete the download, retrying: Attempt ${counter}" fn_scriptlog "SteamCMD did not complete the download, retrying: Attempt ${counter}" fi @@ -65,7 +65,7 @@ while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; do fi fi elif [ "${counter}" -ge "11" ]; then - fn_printfailurenl "SteamCMD did not complete the download, too many retrys" + fn_print_failure_nl "SteamCMD did not complete the download, too many retrys" fn_scriptlog "SteamCMD did not complete the download, too many retrys" break fi @@ -74,7 +74,7 @@ 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 - fn_printinfomationnl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue." + fn_print_infomation_nl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue." counter="0" while [ "${counter}" -le "4" ]; do counter=$((counter+1)) diff --git a/functions/install_ts3.sh b/functions/install_ts3.sh index 3a2acc224..5cf2f0f85 100644 --- a/functions/install_ts3.sh +++ b/functions/install_ts3.sh @@ -13,7 +13,7 @@ if [ "${arch}" == "x86_64" ]; then elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then ts3arch="x86" else - fn_printfailure "${arch} is an unsupported architecture" + fn_print_failure "${arch} is an unsupported architecture" exit 1 fi @@ -43,9 +43,9 @@ rm -f ".ts3_version_numbers.tmp" # Checks availablebuild info is available if [ -z "${availablebuild}" ]; then - fn_printfail "Checking for update: teamspeak.com" + fn_print_fail "Checking for update: teamspeak.com" sleep 1 - fn_printfail "Checking for update: teamspeak.com: Not returning version info" + fn_print_fail "Checking for update: teamspeak.com: Not returning version info" sleep 2 exit 1 fi diff --git a/functions/install_ts3db.sh b/functions/install_ts3db.sh index 90f5b0329..61e2db7d4 100644 --- a/functions/install_ts3db.sh +++ b/functions/install_ts3db.sh @@ -55,7 +55,7 @@ if [ -z "${autoinstall}" ]; then esac done else -fn_printwarningnl "./${selfname} auto-install is uses sqlite. For MariaDB/MySQL use ./${selfname} install" +fn_print_warning_nl "./${selfname} auto-install is uses sqlite. For MariaDB/MySQL use ./${selfname} install" fi ## Get privilege key diff --git a/functions/logs.sh b/functions/logs.sh index 54c9a9836..79d4de462 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -18,7 +18,7 @@ fi # Log manager will start the cleanup if it finds logs older than "${logdays}" if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then - fn_printdots "Starting" + fn_print_dots "Starting" # Set addon logs directories sourcemodlogdir="${systemdir}/addons/sourcemod/logs" ulxlogdir="${systemdir}/data/ulx_logs" @@ -27,11 +27,11 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th # Setting up counting variables scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" ; legacycount="0" sleep 1 - fn_printok "Starting" + fn_print_ok "Starting" fn_scriptlog "Starting" sleep 1 echo -en "\n" - fn_printinfo "Removing logs older than "${logdays}" days" + fn_print_info "Removing logs older than "${logdays}" days" fn_scriptlog "Removing logs older than "${logdays}" days" sleep 1 echo -en "\n" @@ -90,7 +90,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th # Count total amount of files removed count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount} + ${legacycount})) # Job done - fn_printok "Removed ${count} log files" + fn_print_ok "Removed ${count} log files" fn_scriptlog "Removed ${count} log files" sleep 1 echo -en "\n" diff --git a/functions/monitor_gsquery.sh b/functions/monitor_gsquery.sh index 5fa63b32e..7a57aa694 100644 --- a/functions/monitor_gsquery.sh +++ b/functions/monitor_gsquery.sh @@ -27,11 +27,11 @@ if [ -z "${queryport}" ]; then fi -fn_printinfo "Querying port: gsquery.py enabled" +fn_print_info "Querying port: gsquery.py enabled" fn_scriptlog "gsquery.py enabled" sleep 1 -fn_printdots "Querying port: ${ip}:${port}: 0/1 : " -fn_printqueryingeol +fn_print_dots "Querying port: ${ip}:${port}: 0/1 : " +fn_print_querying_eol fn_scriptlog "Querying port: ${ip}:${port}: 1 : QUERYING" sleep 1 @@ -47,8 +47,8 @@ for i in {1..4}; do if [ "${exitcode}" == "0" ]; then # Server OK - fn_printok "Querying port: ${ip}:${port}: " - fn_printokeol + fn_print_ok "Querying port: ${ip}:${port}: " + fn_print_ok_eol fn_scriptlog "Querying port: ${ip}:${port}: OK" sleep 1 exit @@ -59,13 +59,13 @@ for i in {1..4}; do seconds=0 # Seconds counter while [ true ]; do - fn_printfail "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : \e[0;31m${gsquerycmd}\e[0m" + fn_print_fail "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : \e[0;31m${gsquerycmd}\e[0m" seconds=$((seconds + 1)) totalseconds=$((totalseconds + 1)) sleep 1 if [ "${seconds}" == "15" ]; then - fn_printdots "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : " - fn_printqueryingeol + fn_print_dots "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : " + fn_print_querying_eol fn_scriptlog "Querying port: ${ip}:${port}: ${queryattempt} : QUERYING" sleep 1 break @@ -75,8 +75,8 @@ for i in {1..4}; do if [ "${queryattempt}" == "4" ]; then # Server failed query 4 times confirmed failure - fn_printfail "Querying port: ${ip}:${port}: " - fn_printfaileol + fn_print_fail "Querying port: ${ip}:${port}: " + fn_print_fail_eol fn_scriptlog "Querying port: ${ip}:${port}: ${gsquerycmd}" fn_scriptlog "Querying port: ${ip}:${port}: FAIL" sleep 1 diff --git a/functions/update_check.sh b/functions/update_check.sh index 773c88b25..4342e7237 100644 --- a/functions/update_check.sh +++ b/functions/update_check.sh @@ -22,10 +22,10 @@ fn_appmanifestinfo # This is an error is corrected below if required. if [ "${appmanifestfilewc}" -ge "2" ]; then sleep 1 - fn_printwarn "Multiple appmanifest_${appid}.acf files found" + fn_print_warn "Multiple appmanifest_${appid}.acf files found" fn_scriptlog "Warning! Multiple appmanifest_${appid}.acf files found" sleep 2 - fn_printdots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files" + fn_print_dots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files" sleep 1 for appfile in ${appmanifestfile}; do rm "${appfile}" @@ -33,7 +33,7 @@ if [ "${appmanifestfilewc}" -ge "2" ]; then appmanifestfilewc1="${appmanifestfilewc}" fn_appmanifestinfo if [ "${appmanifestfilewc}" -ge "2" ]; then - fn_printfail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" + fn_print_fail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" fn_scriptlog "Failure! Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" sleep 1 echo "" @@ -44,10 +44,10 @@ if [ "${appmanifestfilewc}" -ge "2" ]; then exit 1 else sleep 1 - fn_printok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" + fn_print_ok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" fn_scriptlog "Success! Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" sleep 1 - fn_printinfonl "Forcing update to correct issue" + fn_print_info_nl "Forcing update to correct issue" fn_scriptlog "Forcing update to correct issue" sleep 1 update_dl.sh @@ -55,15 +55,15 @@ if [ "${appmanifestfilewc}" -ge "2" ]; then fi elif [ "${appmanifestfilewc}" -eq "0" ]; then if [ "${forceupdate}" == "1" ]; then - fn_printfail "Still no appmanifest_${appid}.acf found: Unable to update" + fn_print_fail "Still no appmanifest_${appid}.acf found: Unable to update" fn_scriptlog "Warning! Still no appmanifest_${appid}.acf found: Unable to update" exit 1 fi forceupdate=1 - fn_printwarn "No appmanifest_${appid}.acf found" + fn_print_warn "No appmanifest_${appid}.acf found" fn_scriptlog "Warning! No appmanifest_${appid}.acf found" sleep 2 - fn_printinfonl "Forcing update to correct issue" + fn_print_info_nl "Forcing update to correct issue" fn_scriptlog "Forcing update to correct issue" sleep 1 update_dl.sh @@ -73,12 +73,12 @@ fi fn_logupdaterequest(){ # Checks for server update requests from server logs. -fn_printdots "Checking for update: Server logs" +fn_print_dots "Checking for update: Server logs" fn_scriptlog "Checking for update: Server logs" sleep 1 requestrestart=$(grep -Ec "MasterRequestRestart" "${consolelog}") if [ "${requestrestart}" -ge "1" ]; then - fn_printoknl "Checking for update: Server logs: Update requested" + fn_print_ok_nl "Checking for update: Server logs: Update requested" sleep 1 echo "" echo -ne "Applying update.\r" @@ -98,7 +98,7 @@ if [ "${requestrestart}" -ge "1" ]; then update_dl.sh fi else - fn_printok "Checking for update: Server logs: No update requested" + fn_print_ok "Checking for update: Server logs: No update requested" sleep 1 fi } @@ -106,7 +106,7 @@ fi fn_steamcmdcheck(){ fn_appmanifestcheck # Checks for server update from SteamCMD -fn_printdots "Checking for update: SteamCMD" +fn_print_dots "Checking for update: SteamCMD" fn_scriptlog "Checking for update: SteamCMD" sleep 1 @@ -122,14 +122,14 @@ if [ -f "${HOME}/Steam/appcache/appinfo.vdf" ]; then fi availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) if [ -z "${availablebuild}" ]; then - fn_printfail "Checking for update: SteamCMD" + fn_print_fail "Checking for update: SteamCMD" fn_scriptlog "Failure! Checking for update: SteamCMD" sleep 1 - fn_printfailnl "Checking for update: SteamCMD: Not returning version info" + fn_print_fail_nl "Checking for update: SteamCMD: Not returning version info" fn_scriptlog "Failure! Checking for update: SteamCMD: Not returning version info" exit 1 else - fn_printok "Checking for update: SteamCMD" + fn_print_ok "Checking for update: SteamCMD" fn_scriptlog "Success! Checking for update: SteamCMD" sleep 1 fi @@ -172,7 +172,7 @@ else echo -e " Available version: \e[0;32m${availablebuild}\e[0;39m" echo -e " https://steamdb.info/app/${appid}/" echo -e "" - fn_printoknl "No update available" + fn_print_ok_nl "No update available" fn_scriptlog "Current build: ${currentbuild}" fn_scriptlog "Available build: ${availablebuild}" fi @@ -182,19 +182,19 @@ fi fn_teamspeak3_check(){ # Checks for server update from teamspeak.com using a mirror dl.4players.de -fn_printdots "Checking for update: teamspeak.com" +fn_print_dots "Checking for update: teamspeak.com" fn_scriptlog "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_printfail "Checking for update: teamspeak.com" + fn_print_fail "Checking for update: teamspeak.com" sleep 1 - fn_printfailnl "Checking for update: teamspeak.com: No logs with server version found" + fn_print_fail_nl "Checking for update: teamspeak.com: No logs with server version found" fn_scriptlog "Failure! Checking for update: teamspeak.com: No logs with server version found" sleep 2 - fn_printinfonl "Checking for update: teamspeak.com: Forcing server restart" + fn_print_info_nl "Checking for update: teamspeak.com: Forcing server restart" fn_scriptlog "Checking for update: teamspeak.com: Forcing server restart" sleep 2 command_stop.sh @@ -202,7 +202,7 @@ if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then sleep 2 # If still failing will exit if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then - fn_printfailnl "Checking for update: teamspeak.com: Still No logs with server version found" + fn_print_fail_nl "Checking for update: teamspeak.com: Still No logs with server version found" fn_scriptlog "Failure! Checking for update: teamspeak.com: Still No logs with server version found" exit 1 fi @@ -217,7 +217,7 @@ elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then ts3arch="x86" else echo "" - fn_printfailure "${arch} is an unsupported architecture" + fn_print_failure "${arch} is an unsupported architecture" exit 1 fi @@ -249,15 +249,15 @@ rm -f ".ts3_version_numbers.tmp" # Checks availablebuild info is available if [ -z "${availablebuild}" ]; then - fn_printfail "Checking for update: teamspeak.com" + fn_print_fail "Checking for update: teamspeak.com" fn_scriptlog "Checking for update: teamspeak.com" sleep 1 - fn_printfail "Checking for update: teamspeak.com: Not returning version info" + fn_print_fail "Checking for update: teamspeak.com: Not returning version info" fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info" sleep 2 exit 1 else - fn_printok "Checking for update: teamspeak.com" + fn_print_ok "Checking for update: teamspeak.com" fn_scriptlog "Success! Checking for update: teamspeak.com" sleep 1 fi @@ -303,14 +303,14 @@ else 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_printoknl "No update available" + fn_print_ok_nl "No update available" fn_scriptlog "Current build: ${currentbuild}" fn_scriptlog "Available build: ${availablebuild}" fi } check.sh -fn_printdots "Checking for update" +fn_print_dots "Checking for update" if [ "${gamename}" == "Teamspeak 3" ]; then fn_teamspeak3_check elif [ "${engine}" == "goldsource" ]||[ "${forceupdate}" == "1" ]; then diff --git a/functions/update_dl.sh b/functions/update_dl.sh index 0c07fc31a..f23bd2c64 100644 --- a/functions/update_dl.sh +++ b/functions/update_dl.sh @@ -71,9 +71,9 @@ rm -rf "${rootdir}/teamspeak3-server_linux_${ts3arch}" check.sh info_config.sh -fn_printdots "Updating ${servername}" +fn_print_dots "Updating ${servername}" sleep 1 -fn_printoknl "Updating ${servername}" +fn_print_ok_nl "Updating ${servername}" fn_scriptlog "Updating ${servername}" sleep 1 if [ "${gamename}" == "Teamspeak 3" ]; then diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 61b326506..0fce4904c 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -325,7 +325,7 @@ echo "Description:" echo "change the buildid tricking SteamCMD to update." requiredstatus="OFFLINE" fn_setstatus -fn_printinfonl "changed buildid to 0." +fn_print_info_nl "changed buildid to 0." sed -i 's/[0-9]\+/0/' ${filesdir}/steamapps/appmanifest_${appid}.acf update_check.sh echo "" @@ -338,7 +338,7 @@ echo "Description:" echo "change the buildid tricking SteamCMD to update server while already running." requiredstatus="ONLINE" fn_setstatus -fn_printinfonl "changed buildid to 0." +fn_print_info_nl "changed buildid to 0." sed -i 's/[0-9]\+/0/' ${filesdir}/steamapps/appmanifest_${appid}.acf update_check.sh echo "" @@ -351,7 +351,7 @@ echo "Description:" echo "removing appmanifest file will cause script to repair." requiredstatus="OFFLINE" fn_setstatus -fn_printinfonl "removed appmanifest_${appid}.acf." +fn_print_info_nl "removed appmanifest_${appid}.acf." rm --verbose "${filesdir}/steamapps/appmanifest_${appid}.acf" update_check.sh echo "" @@ -433,7 +433,7 @@ echo "Description:" echo "run monitor while server is offline with no lockfile." requiredstatus="OFFLINE" fn_setstatus -fn_printinfonl "creating lockfile." +fn_print_info_nl "creating lockfile." date > "${rootdir}/${lockselfname}" (command_monitor.sh) echo "" @@ -449,7 +449,7 @@ fn_setstatus sed -i 's/[0-9]\+/0/' "${servercfgfullpath}" (command_monitor.sh) echo "" -fn_printinfonl "Reseting ${servercfg}." +fn_print_info_nl "Reseting ${servercfg}." install_config.sh echo "" echo "Test complete!" @@ -478,7 +478,7 @@ echo "" requiredstatus="OFFLINE" fn_setstatus sleep 1 -fn_printinfo "Tidying up directories." +fn_print_info "Tidying up directories." sleep 1 rm -rfv ${serverfiles} echo "END" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index b3207c368..cd7c94f23 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -345,7 +345,7 @@ echo "Description:" echo "run monitor while server is offline with no lockfile." requiredstatus="OFFLINE" fn_setstatus -fn_printinfonl "creating lockfile." +fn_print_info_nl "creating lockfile." date > "${rootdir}/${lockselfname}" (command_monitor.sh) echo "" @@ -361,7 +361,7 @@ fn_setstatus sed -i 's/[0-9]\+/0/' "${servercfgfullpath}" (command_monitor.sh) echo "" -fn_printinfonl "Reseting ${servercfg}." +fn_print_info_nl "Reseting ${servercfg}." install_config.sh echo "" echo "Test complete!" @@ -390,7 +390,7 @@ echo "" requiredstatus="OFFLINE" fn_setstatus sleep 1 -fn_printinfo "Tidying up directories." +fn_print_info "Tidying up directories." sleep 1 rm -rfv ${serverfiles} echo "END" \ No newline at end of file From 661e579dbe2894ce8be8878ee70537274c4ad9a4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 16:05:19 +0000 Subject: [PATCH 228/643] Corrected if --- functions/core_dl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index cf3a2d777..959161a27 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -20,7 +20,7 @@ lgsm_version="050216" fn_dl_md5(){ # Runs MD5 Check if available -if [ -n "${md5}" ]||[ "${md5}" == "nomd5" ]; then +if [ -n "${md5}" ]||[ "${md5}" != "nomd5" ]; then echo -ne "verifying ${filename} with MD5..." sleep 1 local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') From 66f72ebad5348ca9450ef43d4c57baf7ec63ca29 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 16:05:26 +0000 Subject: [PATCH 229/643] Updated notes --- functions/core_messages.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functions/core_messages.sh b/functions/core_messages.sh index 6581d2f17..acc7ffa5f 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -9,7 +9,8 @@ lgsm_version="380216" # nl: new line: message is following by a new line # eol: end of line: message is placed at the end of the current line -# Date and servicename for log files. +# Date, servicename & module details displayed in log files. +# e.g Feb 28 14:56:58 ut99-server: Monitor: fn_scriptlog(){ if [ -n "${modulename}" ]; then echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${modulename}: ${1}" >> "${scriptlog}" From a7f6289efa263e9ae013c71630394efc1135abc9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 16:18:05 +0000 Subject: [PATCH 230/643] Fixed md5 checker --- functions/core_dl.sh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 959161a27..45f46e1c6 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -20,7 +20,7 @@ lgsm_version="050216" fn_dl_md5(){ # Runs MD5 Check if available -if [ -n "${md5}" ]||[ "${md5}" != "nomd5" ]; then +if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then echo -ne "verifying ${filename} with MD5..." sleep 1 local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') @@ -46,9 +46,9 @@ fi # fn_dl_extract "${filedir}" "${filename}" "${extractdir}" # fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles" fn_dl_extract(){ -filedir=${1} -filename=${2} -extractdir=${3} +filedir="${1}" +filename="${2}" +extractdir="${3}" # extracts archives echo -ne "extracting ${filename}..." fn_scriptlog "extracting download" @@ -85,13 +85,13 @@ fn_fetch_trap() { } fn_fetch_file(){ -fileurl=${1} -filedir=${2} -filename=${3} -executecmd=${4:-0} -run=${5:-0} -force=${6:-0} -md5=${7} +fileurl="${1}" +filedir="${2}" +filename="${3}" +executecmd="${4:-0}" +run="${5:-0}" +force="${6:-0}" +md5="${7:-0}" # If the file is missing, then download if [ ! -f "${filedir}/${filename}" ]; then @@ -181,7 +181,7 @@ filename="${github_file_url_name}" executecmd="${4:-0}" run="${5:-0}" force="${6:-0}" -md5="${7}" +md5="${7:-0}" fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" } @@ -197,6 +197,6 @@ filename="${github_file_url_name}" executecmd="executecmd" run="run" force="noforce" -md5="" +md5="nomd5" fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" } \ No newline at end of file From 2c1627b6cdfd732f65aa9822c596d8fd5a9a1488 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 16:18:14 +0000 Subject: [PATCH 231/643] minor edit --- functions/monitor_gsquery.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/monitor_gsquery.sh b/functions/monitor_gsquery.sh index 7a57aa694..b82496601 100644 --- a/functions/monitor_gsquery.sh +++ b/functions/monitor_gsquery.sh @@ -55,7 +55,7 @@ for i in {1..4}; do else # Server failed query queryattempt=$((queryattempt + 1)) - fn_scriptlog "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : ${gsquerycmd}" + fn_scriptlog "Querying port: ${ip}:${port}: ${queryattempt} : ${gsquerycmd}" seconds=0 # Seconds counter while [ true ]; do From c2382c73a09985d3b2f59beceebec799b33a44d7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 16:40:27 +0000 Subject: [PATCH 232/643] Correcting more messages --- functions/core_messages.sh | 16 ++++++------- functions/monitor_gsquery.sh | 46 ++++++++++++++++++------------------ 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/functions/core_messages.sh b/functions/core_messages.sh index acc7ffa5f..eeaac4170 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -152,36 +152,36 @@ fn_print_ok_eol_nl(){ # FAIL for end of line fn_print_fail_eol(){ - echo -en "\e[0;31mFAIL\e[0m\n" + echo -en "\e[0;31mFAIL\e[0m" } fn_print_fail_eol_nl(){ - echo -e "\e[0;31mFAIL\e[0m\n" + echo -e "\e[0;31mFAIL\e[0m" } # QUERYING for end of line fn_print_querying_eol(){ - echo -en "\e[0;36mQUERYING\e[0m\n" + echo -en "\e[0;36mQUERYING\e[0m" } fn_print_querying_eol_nl(){ - echo -e "\e[0;36mQUERYING\e[0m\n" + echo -e "\e[0;36mQUERYING\e[0m" } # CANCELED for end of line fn_print_canceled_eol(){ - echo -en "\e[0;33mCANCELED\e[0m\n" + echo -en "\e[0;33mCANCELED\e[0m" } fn_print_canceled_eol_nl(){ - echo -e "\e[0;33mCANCELED\e[0m\n" + echo -e "\e[0;33mCANCELED\e[0m" } # REMOVED for end of line fn_print_removed_eol(){ - echo -en "\e[0;31mREMOVED\e[0m\n" + echo -en "\e[0;31mREMOVED\e[0m" } fn_print_removed_eol_nl(){ - echo -e "\e[0;31mREMOVED\e[0m\n" + echo -e "\e[0;31mREMOVED\e[0m" } \ No newline at end of file diff --git a/functions/monitor_gsquery.sh b/functions/monitor_gsquery.sh index b82496601..95e72a670 100644 --- a/functions/monitor_gsquery.sh +++ b/functions/monitor_gsquery.sh @@ -26,59 +26,59 @@ if [ -z "${queryport}" ]; then port="${queryport}" fi - +queryattempt=1 +totalseconds=0 fn_print_info "Querying port: gsquery.py enabled" fn_scriptlog "gsquery.py enabled" sleep 1 -fn_print_dots "Querying port: ${ip}:${port}: 0/1 : " +fn_print_dots "Querying port: ${ip}:${port} :${totalseconds}/${queryattempt} : " fn_print_querying_eol -fn_scriptlog "Querying port: ${ip}:${port}: 1 : QUERYING" +fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : QUERYING" sleep 1 # Will query up to 4 times every 15 seconds. # Servers changing map can return a failure. # Will Wait up to 60 seconds to confirm server is down giving server time to change map. -queryattempt=0 -totalseconds=0 + for i in {1..4}; do gsquerycmd=$("${functionsdir}"/gsquery.py -a ${ip} -p 1 -e ${engine} 2>&1) exitcode=$? if [ "${exitcode}" == "0" ]; then # Server OK - fn_print_ok "Querying port: ${ip}:${port}: " + fn_print_ok "Querying port: ${ip}:${port} : " fn_print_ok_eol - fn_scriptlog "Querying port: ${ip}:${port}: OK" + fn_scriptlog "Querying port: ${ip}:${port} : OK" sleep 1 exit else # Server failed query - queryattempt=$((queryattempt + 1)) - fn_scriptlog "Querying port: ${ip}:${port}: ${queryattempt} : ${gsquerycmd}" + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : ${gsquerycmd}" seconds=0 # Seconds counter while [ true ]; do - fn_print_fail "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : \e[0;31m${gsquerycmd}\e[0m" - seconds=$((seconds + 1)) - totalseconds=$((totalseconds + 1)) - sleep 1 - if [ "${seconds}" == "15" ]; then - fn_print_dots "Querying port: ${ip}:${port}: ${totalseconds}/${queryattempt} : " - fn_print_querying_eol - fn_scriptlog "Querying port: ${ip}:${port}: ${queryattempt} : QUERYING" + fn_print_fail "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : \e[0;31m${gsquerycmd}\e[0m" + seconds=$((seconds + 1)) + totalseconds=$((totalseconds + 1)) + sleep 1 + if [ "${seconds}" == "15" ]; then + queryattempt=$((queryattempt + 1)) + fn_print_dots "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : " + fn_print_querying_eol + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : QUERYING" sleep 1 - break - fi + break + fi done fi if [ "${queryattempt}" == "4" ]; then # Server failed query 4 times confirmed failure - fn_print_fail "Querying port: ${ip}:${port}: " + fn_print_fail "Querying port: ${ip}:${port} : " fn_print_fail_eol - fn_scriptlog "Querying port: ${ip}:${port}: ${gsquerycmd}" - fn_scriptlog "Querying port: ${ip}:${port}: FAIL" + fn_scriptlog "Querying port: ${ip}:${port} : ${gsquerycmd}" + fn_scriptlog "Querying port: ${ip}:${port} : FAIL" sleep 1 # Send email notification if enabled @@ -90,5 +90,5 @@ for i in {1..4}; do email.sh fi fn_restart - fi + fi done \ No newline at end of file From 9f5425bda724e16a7688822c2f7780cb7ff6f15e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 21:51:36 +0000 Subject: [PATCH 233/643] Fixed looping issues --- functions/monitor_gsquery.sh | 137 +++++++++++++++++------------------ 1 file changed, 68 insertions(+), 69 deletions(-) diff --git a/functions/monitor_gsquery.sh b/functions/monitor_gsquery.sh index 95e72a670..058351770 100644 --- a/functions/monitor_gsquery.sh +++ b/functions/monitor_gsquery.sh @@ -2,93 +2,92 @@ # LGSM monitor_gsquery.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="270216" # Description: uses gsquery.py to query the server port. # Detects if the server has frozen with the proccess still running. local modulename="Monitor" -# Downloads gsquery.py if missing -if [ ! -f "${functionsdir}/gsquery.py" ]; then - fn_fetch_file_github "functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" "nomd5" -fi +# Forces legecy servers to use gsquery as vat gsquery is not present in legecy +if [ -z "${gsquery}" ]; then + gsquery="yes" +fi -info_config.sh +if [ "${gsquery}" == "yes" ]; then -if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then - port=$((${port} + 1)) -elif [ "${engine}" == "spark" ]; then - port=$((${port} + 1)) -fi + # Downloads gsquery.py if missing + if [ ! -f "${functionsdir}/gsquery.py" ]; then + fn_fetch_file_github "functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" "nomd5" + fi -if [ -z "${queryport}" ]; then - port="${queryport}" -fi + info_config.sh -queryattempt=1 -totalseconds=0 -fn_print_info "Querying port: gsquery.py enabled" -fn_scriptlog "gsquery.py enabled" -sleep 1 -fn_print_dots "Querying port: ${ip}:${port} :${totalseconds}/${queryattempt} : " -fn_print_querying_eol -fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : QUERYING" -sleep 1 + if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then + port=$((port + 1)) + elif [ "${engine}" == "spark" ]; then + port=$((port + 1)) + fi + if [ -z "${queryport}" ]; then + port="${queryport}" + fi -# Will query up to 4 times every 15 seconds. -# Servers changing map can return a failure. -# Will Wait up to 60 seconds to confirm server is down giving server time to change map. + fn_print_info "Querying port: gsquery.py enabled" + fn_scriptlog "Querying port: gsquery.py enabled" + sleep 1 -for i in {1..4}; do - gsquerycmd=$("${functionsdir}"/gsquery.py -a ${ip} -p 1 -e ${engine} 2>&1) - exitcode=$? + # Will query up to 4 times every 15 seconds. + # Servers changing map can return a failure. + # Will Wait up to 60 seconds to confirm server is down giving server time to change map. + totalseconds=0 + for queryattempt in {1..5}; do + fn_print_dots "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : " + fn_print_querying_eol + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : QUERYING" + + gsquerycmd=$("${functionsdir}"/gsquery.py -a "${ip}" -p 1 -e "${engine}" 2>&1) + exitcode=$? - if [ "${exitcode}" == "0" ]; then - # Server OK - fn_print_ok "Querying port: ${ip}:${port} : " - fn_print_ok_eol - fn_scriptlog "Querying port: ${ip}:${port} : OK" sleep 1 - exit - else - # Server failed query - fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : ${gsquerycmd}" - seconds=0 - # Seconds counter - while [ true ]; do - fn_print_fail "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : \e[0;31m${gsquerycmd}\e[0m" - seconds=$((seconds + 1)) - totalseconds=$((totalseconds + 1)) + if [ "${exitcode}" == "0" ]; then + # Server OK + fn_print_ok "Querying port: ${ip}:${port} : ${queryattempt} : " + fn_print_ok_eol + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : OK" sleep 1 - if [ "${seconds}" == "15" ]; then - queryattempt=$((queryattempt + 1)) - fn_print_dots "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : " - fn_print_querying_eol - fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : QUERYING" + exit + else + # Server failed query + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : ${gsquerycmd}" + + if [ "${queryattempt}" == "5" ]; then + # Server failed query 4 times confirmed failure + fn_print_fail "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : " + fn_print_fail_eol_nl + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : FAIL" sleep 1 + + # Send email notification if enabled + if [ "${emailnotification}" == "on" ]; then + subject="${servicename} Monitor - Starting ${servername}" + failurereason="Failed to query ${servicename}: ${gsquerycmd}" + actiontaken="restarted ${servicename}" + email.sh + fi + fn_restart break fi - done - fi - if [ "${queryattempt}" == "4" ]; then - # Server failed query 4 times confirmed failure - fn_print_fail "Querying port: ${ip}:${port} : " - fn_print_fail_eol - fn_scriptlog "Querying port: ${ip}:${port} : ${gsquerycmd}" - fn_scriptlog "Querying port: ${ip}:${port} : FAIL" - sleep 1 - - # Send email notification if enabled - if [ "${emailnotification}" = "on" ]; then - info_config.sh - subject="${servicename} Monitor - Starting ${servername}" - failurereason="Failed to query ${servicename}: ${gsquerycmd}" - actiontaken="restarted ${servicename}" - email.sh + # Seconds counter + for seconds in {1..15}; do + fn_print_fail "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : \e[0;31m${gsquerycmd}\e[0m" + totalseconds=$((totalseconds + 1)) + sleep 1 + if [ "${seconds}" == "15" ]; then + break + fi + done fi - fn_restart - fi -done \ No newline at end of file + done +fi \ No newline at end of file From 248518c3c51b6c79e22dd7f5c600bbaae644fe90 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 28 Feb 2016 22:40:56 +0000 Subject: [PATCH 234/643] repaired ut99 fix --- functions/command_install.sh | 2 +- functions/fix_ut99.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/functions/command_install.sh b/functions/command_install.sh index 9c7eb7180..77cf2d359 100644 --- a/functions/command_install.sh +++ b/functions/command_install.sh @@ -26,11 +26,11 @@ elif [ -n "${appid}" ]; then fi # Configuration -fix.sh install_config.sh if [ "${gamename}" == "Counter Strike: Global Offensive" ]||[ "${gamename}" == "Team Fortress 2" ]||[ "${gamename}" == "BrainBread 2" ]; then install_gslt.sh elif [ "${gamename}" == "Teamspeak 3" ]; then install_ts3db.sh fi +fix.sh install_complete.sh diff --git a/functions/fix_ut99.sh b/functions/fix_ut99.sh index aceb37128..f7792fb44 100644 --- a/functions/fix_ut99.sh +++ b/functions/fix_ut99.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="271215" - +echo "${servercfgfullpath}" echo "enabling UdpServerUplink." { echo "[IpServer.UdpServerUplink]" @@ -21,5 +21,5 @@ echo "removing dead mplayer.com master server." sed -i '/master.mplayer.com/d' "${servercfgfullpath}" sleep 1 echo "inserting qtracker.com master server." -sed -i '66i\ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.qtracker.com MasterServerPort=27900' "${servercfgfullpath}" +sed -i '65i\ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.qtracker.com MasterServerPort=27900' "${servercfgfullpath}" echo "" \ No newline at end of file From 1ebb1139a3fc3299b255ca5bf03df7cf16f39fd1 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Mon, 29 Feb 2016 07:36:33 +0100 Subject: [PATCH 235/643] Needed double quotes to work --- Rust/rustserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index 6497c0480..8d98109f0 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -45,7 +45,7 @@ parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickr } # Specific to Rust -if [ -n ${seed} ]; then +if [ -n "${seed}" ]; then # If set, then add to start parms conditionalseed="+server.seed ${seed}" else From 995a4c584d738a414c5ef5f2bec870084fd72126 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 1 Mar 2016 19:23:58 +0000 Subject: [PATCH 236/643] Optimised fixes removed un-needed code --- functions/fix.sh | 23 ++++++++++++++++++-- functions/fix_arma3.sh | 26 +++------------------- functions/fix_csgo.sh | 44 +++++++++++--------------------------- functions/fix_dst.sh | 28 ++++-------------------- functions/fix_ro.sh | 4 ++-- functions/fix_steamcmd.sh | 45 +++++++++++---------------------------- functions/fix_ut2k4.sh | 15 +++++-------- 7 files changed, 61 insertions(+), 124 deletions(-) diff --git a/functions/fix.sh b/functions/fix.sh index 931f4acbe..86e397ee6 100644 --- a/functions/fix.sh +++ b/functions/fix.sh @@ -2,11 +2,31 @@ # LGSM fix.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="020116" +lgsm_version="010316" # Description: Overall function for managing fixes. # Runs functions that will fix an issue. +# Messages that are displayed for some fixes +fn_fix_msg_start(){ + fn_print_dots "Applying ${fixname} fix: ${gamename}" + sleep 1 + fn_print_info "Applying ${fixname} fix: ${gamename}" + fn_scriptlog "Applying ${fixname} fix: ${gamename}" + sleep 1 +} + +fn_fix_msg_end(){ + if [ $? -ne 0 ]; then + fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" + fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" + else + fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" + fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" + fi +} + + # Fixes that are run on start if [ "${function_selfname}" != "command_install.sh" ]; then if [ ! -z "${appid}" ]; then @@ -14,7 +34,6 @@ if [ "${function_selfname}" != "command_install.sh" ]; then fi if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then - startfix=1 fix_csgo.sh elif [ "${gamename}" == "Don't Starve Together" ]; then fix_dst.sh diff --git a/functions/fix_arma3.sh b/functions/fix_arma3.sh index b076fe065..ffc607ed6 100644 --- a/functions/fix_arma3.sh +++ b/functions/fix_arma3.sh @@ -4,30 +4,10 @@ # Website: http://gameservermanagers.com lgsm_version="301215" -# Fixes line 63: 20150 Segmentation fault (core dumped) #488 - -fn_msg_start(){ - fn_print_dots "Applying ${fixname} fix: ${gamename}" - sleep 1 - fn_print_info "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Applying ${fixname} fix: ${gamename}" - sleep 1 -} - -fn_msg_end(){ - if [ $? -ne 0 ]; then - fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" - else - fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" - fi -} - # Fixes: server not always creating steam_appid.txt file. if [ ! -d "${rootdir}/.local/share/Arma\ 3" ]; then - local fixname="20150 Segmentation fault (core dumped)" - fn_msg_start + fixname="20150 Segmentation fault (core dumped)" + fn_fix_msg_start mkdir -p "${rootdir}/.local/share/Arma\ 3" - fn_msg_end + fn_fix_msg_end fi \ No newline at end of file diff --git a/functions/fix_csgo.sh b/functions/fix_csgo.sh index 33fd7c169..f968640ce 100644 --- a/functions/fix_csgo.sh +++ b/functions/fix_csgo.sh @@ -2,60 +2,42 @@ # LGSM fix_csgo.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="301215" +lgsm_version="010316" # Description: Resolves various issues with csgo. -fn_msg_start(){ - fn_print_dots "Applying ${fixname} fix: ${gamename}" - sleep 1 - fn_print_info "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Applying ${fixname} fix: ${gamename}" - sleep 1 -} - -fn_msg_end(){ - if [ $? -ne 0 ]; then - fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" - else - fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" - fi -} - # Fixes: server not always creating steam_appid.txt file. if [ ! -f "${filesdir}/steam_appid.txt" ]; then - local fixname="730 steam_appid.txt" - fn_msg_start + fixname="730 steam_appid.txt" + fn_fix_msg_start echo -n "730" >> "${filesdir}/steam_appid.txt" - fn_msg_end + fn_fix_msg_end fi # Fixes: Error parsing BotProfile.db - unknown attribute 'Rank'". if ! grep -q "//Rank" "${systemdir}/botprofile.db" > /dev/null 2>&1; then - local fixname="botprofile.db" - fn_msg_start + fixname="botprofile.db" + fn_fix_msg_start sed -i 's/\tRank/\t\/\/Rank/g' "${systemdir}/botprofile.db" > /dev/null 2>&1 - fn_msg_end + fn_fix_msg_end fi # Fixes: Unknown command "cl_bobamt_vert". if ! grep -q "//exec default" "${servercfgdir}/valve.rc" > /dev/null 2>&1 || ! grep -q "//exec joystick" "${servercfgdir}/valve.rc" > /dev/null 2>&1; then - local fixname="valve.rc" - fn_msg_start + fixname="valve.rc" + fn_fix_msg_start sed -i 's/exec default.cfg/\/\/exec default.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1 sed -i 's/exec joystick.cfg/\/\/exec joystick.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1 - fn_msg_end + fn_fix_msg_end fi # Fixes: workshop map issue. # http://forums.steampowered.com/forums/showthread.php?t=3170366. if [ -f "${systemdir}/subscribed_collection_ids.txt" ]||[ -f "${systemdir}/subscribed_file_ids.txt" ]||[ -f "${systemdir}/ugc_collection_cache.txt" ]; then - local fixname="workshop map" - fn_msg_start + fixname="workshop map" + fn_fix_msg_start rm -f "${systemdir}/subscribed_collection_ids.txt" rm -f "${systemdir}/subscribed_file_ids.txt" rm -f "${systemdir}/ugc_collection_cache.txt" - fn_msg_end + fn_fix_msg_end fi \ No newline at end of file diff --git a/functions/fix_dst.sh b/functions/fix_dst.sh index b860f6d09..feec27b14 100644 --- a/functions/fix_dst.sh +++ b/functions/fix_dst.sh @@ -2,33 +2,13 @@ # LGSM fix_dst.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="020116" - -# Fixes line 63: 20150 Segmentation fault (core dumped) #488 - -fn_msg_start(){ - fn_print_dots "Applying ${fixname} fix: ${gamename}" - sleep 1 - fn_print_info "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Applying ${fixname} fix: ${gamename}" - sleep 1 -} - -fn_msg_end(){ - if [ $? -ne 0 ]; then - fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" - else - fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" - fi -} +lgsm_version="010316" # Fixes: ./dontstarve_dedicated_server_nullrenderer: ./lib32/libcurl-gnutls.so.4: no version information available (required by ./dontstarve_dedicated_server_nullrenderer) # Issue only occures on CentOS as libcurl-gnutls.so.4 is called libcurl.so.4 on CentOS. if [ -f "/etc/redhat-release" ] && [ ! -f "${filesdir}/bin/lib32/libcurl-gnutls.so.4" ]; then - local fixname="libcurl-gnutls.so.4 missing" - fn_msg_start + fixname="libcurl-gnutls.so.4 missing" + fn_fix_msg_start ln -s "/usr/lib/libcurl.so.4" "${filesdir}/bin/lib32/libcurl-gnutls.so.4" - fn_msg_end + fn_fix_msg_end fi \ No newline at end of file diff --git a/functions/fix_ro.sh b/functions/fix_ro.sh index d3d0ac0e2..a7c703e1a 100644 --- a/functions/fix_ro.sh +++ b/functions/fix_ro.sh @@ -2,14 +2,14 @@ # LGSM fix_ro.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="010316" echo "Applying WebAdmin ROOst.css fix." echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" sed -i 's/none}/none;/g' "${filesdir}/Web/ServerAdmin/ROOst.css" sed -i 's/underline}/underline;/g' "${filesdir}/Web/ServerAdmin/ROOst.css" sleep 1 -echo "Applying WebAdmin CharSet fix." +echo "Applying WebAdmin CharSet fix." echo "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1" sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/uweb.int" sleep 1 diff --git a/functions/fix_steamcmd.sh b/functions/fix_steamcmd.sh index a05f783c4..46f52e4c8 100644 --- a/functions/fix_steamcmd.sh +++ b/functions/fix_steamcmd.sh @@ -2,60 +2,41 @@ # LGSM fix_steamcmd.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="010116" +lgsm_version="010316" # Description: fixes various issues related to steamCMD. -fn_msg_start(){ - fn_print_dots "Applying ${fixname} fix: ${gamename}" - sleep 1 - fn_print_info "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Applying ${fixname} fix: ${gamename}" - sleep 1 -} - -fn_msg_end(){ - if [ $? -ne 0 ]; then - fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" - else - fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" - fi -} - - # Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so. if [ ! -f "${HOME}/.steam/sdk32/steamclient.so" ]; then - local fixname="steamclient.so general" - fn_msg_start + fixname="steamclient.so general" + fn_fix_msg_start mkdir -pv "${HOME}/.steam/sdk32" >> "${scriptlog}" cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so" >> "${scriptlog}" - fn_msg_end + fn_fix_msg_end fi if [ "${gamename}" == "Serious Sam 3: BFE" ]; then # Fixes: .steam/bin32/libsteam.so: cannot open shared object file: No such file or directory if [ ! -f "${HOME}/.steam/bin32/libsteam.so" ]; then - local fixname="libsteam.so" - fn_msg_start + fixname="libsteam.so" + fn_fix_msg_start mkdir -pv "${HOME}/.steam/bin32" >> "${scriptlog}" cp -v "${filesdir}/Bin/libsteam.so" "${HOME}/.steam/bin32/libsteam.so" >> "${scriptlog}" - fn_msg_end + fn_fix_msg_end fi elif [ "${gamename}" == "Hurtworld" ]; then # Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so. if [ ! -f "${filesdir}/Hurtworld_Data/Plugins/x86/steamclient.so" ]; then - local fixname="steamclient.so x86" - fn_msg_start + fixname="steamclient.so x86" + fn_fix_msg_start cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${filesdir}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${scriptlog}" - fn_msg_end + fn_fix_msg_end fi if [ ! -f "${filesdir}/Hurtworld_Data/Plugins/x86_64/steamclient.so" ]; then - local fixname="steamclient.so x86_64" - fn_msg_start + fixname="steamclient.so x86_64" + fn_fix_msg_start cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${filesdir}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${scriptlog}" - fn_msg_end + fn_fix_msg_end fi fi diff --git a/functions/fix_ut2k4.sh b/functions/fix_ut2k4.sh index b9ec4ad8a..eff67a12c 100644 --- a/functions/fix_ut2k4.sh +++ b/functions/fix_ut2k4.sh @@ -2,7 +2,7 @@ # LGSM fix_ut2k4.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="010316" echo "applying WebAdmin ut2003.css fix." echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" @@ -13,15 +13,10 @@ echo "applying WebAdmin CharSet fix." echo "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1" sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int" sleep 1 -echo "" -echo -en "forcing server restart.\r" -sleep 0.5 -echo -en "forcing server restart..\r" -sleep 0.5 -echo -en "forcing server restart...\r" -sleep 0.5 -echo -en "\n" -sleep 0.5 +echo "applying server name fix." +sleep 1 +echo "forcing server restart..." +sleep 1 command_start.sh sleep 5 command_stop.sh From 5d6cf92630dcc8f75865e4b8332ba3092f4a18d3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 1 Mar 2016 19:32:34 +0000 Subject: [PATCH 237/643] Code tidy --- functions/check.sh | 17 +++-------------- functions/command_install.sh | 3 +++ functions/email.sh | 4 ++-- functions/fix.sh | 2 +- functions/fix_dst.sh | 2 ++ functions/fix_ro.sh | 2 ++ functions/fix_steamcmd.sh | 1 - functions/fix_ut2k4.sh | 2 ++ 8 files changed, 15 insertions(+), 18 deletions(-) diff --git a/functions/check.sh b/functions/check.sh index 0c2fbe7bf..3450794b9 100644 --- a/functions/check.sh +++ b/functions/check.sh @@ -7,17 +7,8 @@ lgsm_version="170216" # Description: Overall function for managing checks. # Runs checks that will either halt on or fix an issue. -array_contains () { - local seeking=$1; shift - local in=1 - for element; do - if [ ${element} == ${seeking} ]; then - in=0 - break - fi - done - return $in -} +# Every command that requires checks just references check.sh +# check.sh selects which checks to run by using arrays check_root.sh @@ -53,9 +44,7 @@ local allowed_commands_array=( update_check.sh command_debug.sh command_start.sh for allowed_command in "${allowed_commands_array[@]}" do if [ "${allowed_command}" == "${function_selfname}" ]; then - if [ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 2004" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Teamspeak 3" ]; then - : # These servers do not require SteamCMD. Check is skipped. - else + if [ -n "${appid}" ]; then check_steamcmd.sh fi fi diff --git a/functions/command_install.sh b/functions/command_install.sh index 77cf2d359..e14e4482e 100644 --- a/functions/command_install.sh +++ b/functions/command_install.sh @@ -4,6 +4,9 @@ # Website: http://gameservermanagers.com lgsm_version="260216" +# Description: Overall function for the installer. + + local modulename="Install" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" diff --git a/functions/email.sh b/functions/email.sh index 66d5acba7..51b097dd9 100644 --- a/functions/email.sh +++ b/functions/email.sh @@ -55,11 +55,11 @@ fn_parms }| sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee "${scriptlogdir}/${servicename}-email.log" > /dev/null 2>&1 echo -e "\n\n Script log\n===================" >> "${emaillog}" tail -25 "${scriptlog}" >> "${emaillog}" -if [ ! -z "${consolelog}" ]; then +if [ -n "${consolelog}" ]; then echo -e "\n\n Console log\n====================" >> "${emaillog}" tail -25 "${consolelog}" | awk '{ sub("\r$", ""); print }' >> "${emaillog}" fi -if [ ! -z "${gamelogdir}" ]; then +if [ -n "${gamelogdir}" ]; then echo -e "\n\n Server log\n====================" >> "${emaillog}" tail "${gamelogdir}"/* | grep -v "==>" | sed '/^$/d' | tail -25 >> "${emaillog}" fi diff --git a/functions/fix.sh b/functions/fix.sh index 86e397ee6..e4723e649 100644 --- a/functions/fix.sh +++ b/functions/fix.sh @@ -29,7 +29,7 @@ fn_fix_msg_end(){ # Fixes that are run on start if [ "${function_selfname}" != "command_install.sh" ]; then - if [ ! -z "${appid}" ]; then + if [ -n "${appid}" ]; then fix_steamcmd.sh fi diff --git a/functions/fix_dst.sh b/functions/fix_dst.sh index feec27b14..5dadf4b78 100644 --- a/functions/fix_dst.sh +++ b/functions/fix_dst.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="010316" +# Description: Resolves various issues with Dont Starve together. + # Fixes: ./dontstarve_dedicated_server_nullrenderer: ./lib32/libcurl-gnutls.so.4: no version information available (required by ./dontstarve_dedicated_server_nullrenderer) # Issue only occures on CentOS as libcurl-gnutls.so.4 is called libcurl.so.4 on CentOS. if [ -f "/etc/redhat-release" ] && [ ! -f "${filesdir}/bin/lib32/libcurl-gnutls.so.4" ]; then diff --git a/functions/fix_ro.sh b/functions/fix_ro.sh index a7c703e1a..18ceeb433 100644 --- a/functions/fix_ro.sh +++ b/functions/fix_ro.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="010316" +# Description: Resolves various issues with red orchestra. + echo "Applying WebAdmin ROOst.css fix." echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" sed -i 's/none}/none;/g' "${filesdir}/Web/ServerAdmin/ROOst.css" diff --git a/functions/fix_steamcmd.sh b/functions/fix_steamcmd.sh index 46f52e4c8..86feb9e2c 100644 --- a/functions/fix_steamcmd.sh +++ b/functions/fix_steamcmd.sh @@ -26,7 +26,6 @@ if [ "${gamename}" == "Serious Sam 3: BFE" ]; then fi elif [ "${gamename}" == "Hurtworld" ]; then # Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so. - if [ ! -f "${filesdir}/Hurtworld_Data/Plugins/x86/steamclient.so" ]; then fixname="steamclient.so x86" fn_fix_msg_start diff --git a/functions/fix_ut2k4.sh b/functions/fix_ut2k4.sh index eff67a12c..363aa5d56 100644 --- a/functions/fix_ut2k4.sh +++ b/functions/fix_ut2k4.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="010316" +# Description: Resolves various issues with unreal tournament 2004. + echo "applying WebAdmin ut2003.css fix." echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" sed -i 's/none}/none;/g' "${filesdir}/Web/ServerAdmin/ut2003.css" From 3b6e66a5ae8f7348af3023a63e59f13d4691a978 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 1 Mar 2016 19:37:59 +0000 Subject: [PATCH 238/643] Code tidy --- functions/check_ip.sh | 4 +--- functions/command_dev_debug.sh | 2 ++ functions/command_install.sh | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/functions/check_ip.sh b/functions/check_ip.sh index c4b5be149..2a5ae5794 100644 --- a/functions/check_ip.sh +++ b/functions/check_ip.sh @@ -7,9 +7,7 @@ lgsm_version="271215" # Description: Automatically identifies the server interface IP. # If multiple interfaces are detected the user will need to manualy set using ip="0.0.0.0". -if [ "${gamename}" == "Teamspeak 3" ]; then - : -else +if [ "${gamename}" != "Teamspeak 3" ]; then if [ ! -f "/bin/ip" ]; then ipcommand="/sbin/ip" else diff --git a/functions/command_dev_debug.sh b/functions/command_dev_debug.sh index 1855f5919..46bae900d 100644 --- a/functions/command_dev_debug.sh +++ b/functions/command_dev_debug.sh @@ -4,6 +4,8 @@ # Website: http://gameservermanagers.com lgsm_version="281215" +# Description: Dev only: enables debuging log to be saved to dev-debug.log. + function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" if [ -f ".dev-debug" ]; then diff --git a/functions/command_install.sh b/functions/command_install.sh index e14e4482e..877896380 100644 --- a/functions/command_install.sh +++ b/functions/command_install.sh @@ -6,7 +6,6 @@ lgsm_version="260216" # Description: Overall function for the installer. - local modulename="Install" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" From 9d3bbf3a9a547548d059ae3d4952fd784ef2853d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 1 Mar 2016 19:58:43 +0000 Subject: [PATCH 239/643] Fixed 7 Days to Die deps not working --- functions/check_deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/check_deps.sh b/functions/check_deps.sh index 3cd5d32ce..535a15330 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -135,7 +135,7 @@ if [ -n "$(command -v dpkg-query)" ]; then if [ "${engine}" == "spark" ]; then array_deps_required+=( speex:i386 libtbb2 ) # 7 Days to Die - elif [ "${executable}" == "./7DaysToDie.sh" ]; then + elif [ "${gamename}" == "7 Days To Die" ]; then array_deps_required+=( telnet expect ) # No More Room in Hell elif [ "${gamename}" == "No More Room in Hell" ]; then From 2fe511007f008025cc1cacd4edd5a21b0c9d625c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 1 Mar 2016 20:14:59 +0000 Subject: [PATCH 240/643] Fixed issue #696 --- functions/info_config.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/info_config.sh b/functions/info_config.sh index 3fe13fc0e..91b8ab67a 100644 --- a/functions/info_config.sh +++ b/functions/info_config.sh @@ -2,7 +2,7 @@ # LGSM info_config.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="060116" +lgsm_version="010316" # Description: Gets specific details from config files. @@ -513,7 +513,7 @@ elif [ "${gamename}" == "7 Days To Die" ]; then # telnet password if [ -f "${servercfgfullpath}" ]; then - telnetpass=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") if [ ! -n "${telnetpass}" ]; then telnetpass="NOT SET" fi From a34adda0065c4d2dd382f42bac2d695976dc4d28 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 1 Mar 2016 20:19:19 +0000 Subject: [PATCH 241/643] Update info_config.sh Fixes issue #696 --- functions/info_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/info_config.sh b/functions/info_config.sh index 9bb5cde98..7737cac80 100644 --- a/functions/info_config.sh +++ b/functions/info_config.sh @@ -574,7 +574,7 @@ elif [ "${gamename}" == "7 Days To Die" ]; then # telnet password if [ -f "${servercfgfullpath}" ]; then - telnetpass=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") if [ ! -n "${telnetpass}" ]; then telnetpass="NOT SET" fi From 54895153bc296dcf44fa3f2a01bbb8afce300622 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 2 Mar 2016 21:39:53 +0000 Subject: [PATCH 242/643] improvements to stop command improvements to graceful shutdown using functions more for easy reading --- functions/command_stop.sh | 295 ++++++++++++++++++++++---------------- 1 file changed, 169 insertions(+), 126 deletions(-) diff --git a/functions/command_stop.sh b/functions/command_stop.sh index d5d589beb..9d75fbc5a 100644 --- a/functions/command_stop.sh +++ b/functions/command_stop.sh @@ -9,40 +9,146 @@ lgsm_version="271215" local modulename="Stopping" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -sdtd_telnet(){ - sdtdshutdown=$( expect -c ' - proc abort {} { - puts "Timeout or EOF\n" - exit 1 - } - spawn telnet '"${telnetip}"' '"${telnetport}"' - expect { - "password:" { send "'"${telnetpass}"'\r" } - default abort - } - expect { - "session." { send "shutdown\r" } - default abort - } - expect { eof } - puts "Completed.\n" - ') +# Attempts Graceful of source using rcon 'quit' command. +fn_stop_graceful_source(){ +fn_print_dots "Graceful: rcon quit" +fn_scriptlog "Graceful: rcon quit" +# sends quit +tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 +# waits up to 30 seconds giving the server time to shutdown gracefuly +for seconds in {1..30}; do + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + fn_print_ok_nl "Graceful: rcon quit: ${seconds}" + fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" + break + fi + sleep 1 + fn_print_dots "Graceful: rcon quit: ${seconds}" +done +if [ "${pid}" != "0" ]; then + fn_print_fail_nl "Graceful: rcon quit" + fn_scriptlog "Graceful: rcon quit: FAIL" +fi +sleep 1 +} + +# Attempts Graceful of goldsource using rcon 'quit' command. +# Goldsource 'quit' command restarts rather than shutsdown +# this function will only wait 3 seconds then force a tmux shutdown. +# preventing the server from coming back online. +fn_stop_graceful_goldsource(){ +fn_print_dots "Graceful: rcon quit" +fn_scriptlog "Graceful: rcon quit" +# sends quit +tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 +# waits 3 seconds as goldsource servers restart with the quit command +for seconds in {1..3}; do + sleep 1 + fn_print_dots "Graceful: rcon quit: ${seconds}" +done +fn_print_ok_nl "Graceful: rcon quit: ${seconds}" +sleep 1 +} + +# Attempts Graceful of 7 Days To Die using telnet. +fn_stop_telnet_sdtd(){ +sdtdshutdown=$( expect -c ' +proc abort {} { + puts "Timeout or EOF\n" + exit 1 +} +spawn telnet '"${telnetip}"' '"${telnetport}"' +expect { + "password:" { send "'"${telnetpass}"'\r" } + default abort +} +expect { + "session." { send "shutdown\r" } + default abort +} +expect { eof } +puts "Completed.\n" +') +} + +fn_stop_graceful_sdtd(){ +# Gets server IP. +info_config.sh + +fn_print_dots "Graceful: telnet" +fn_scriptlog "Graceful: telnet" +sleep 1 + +# uses localhost on first attempt. +telnetip=127.0.0.1 +fn_print_dots "Graceful: telnet: ${telnetip}" +fn_scriptlog "Graceful: telnet: ${telnetip}" +fn_stop_telnet_sdtd +sleep 1 + +# falls back to the server ip if localhost fails. +refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") +if [ -n "${refused}" ]; then + fn_print_warn_nl "Graceful: telnet: localhost: " + fn_print_fail_eol + fn_scriptlog "Graceful: telnet: localhost: FAIL" + sleep 1 + + telnetip=${ip} + fn_print_dots "Graceful: telnet: ${telnetip}" + fn_scriptlog "Graceful: telnet: ${telnetip}" + fn_stop_telnet_sdtd + refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") + + fn_print_warnnl "Graceful: telnet: ${telnetip}: " + fn_print_fail_eol + fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" + sleep 1 +fi + +# Checks if attempts have worked. +completed=$(echo -en "\n ${sdtdshutdown}"| grep "Completed.") +if [ -n "${completed}" ]; then + fn_print_ok_nl "Graceful: telnet: " + fn_print_ok_eol + fn_scriptlog "Graceful: telnet: OK" +elif [ -n "${refused}" ]; then + fn_print_fail_nl "Graceful: telnet: " + fn_print_fail_eol + fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" + echo -en "\n\n" | tee -a "${scriptlog}" + echo -en "Telnet output:" | tee -a "${scriptlog}" + echo -en "\n ${sdtdshutdown}" | tee -a "${scriptlog}" + echo -en "\n\n" | tee -a "${scriptlog}" +else + fn_print_fail_nl "Graceful: telnet: Unknown error" + fn_scriptlog "Graceful: telnet: Unknown error" + echo -en "\n\n" | tee -a "${scriptlog}" + echo -en "Telnet output:" | tee -a "${scriptlog}" + echo -en "\n ${sdtdshutdown}" | tee -a "${scriptlog}" + echo -en "\n\n" | tee -a "${scriptlog}" +fi +} + +fn_stop_graceful_select(){ +if [ "${gamename}" == "7 Days to Die" ]; then + fn_stop_graceful_sdtd +elif [ "${engine}" == "source" ]; then + fn_stop_graceful_source +elif [ "${engine}" == "goldsource" ]; then + fn_stop_graceful_goldsource +else + fn_stop_tmux } fn_stop_teamspeak3(){ -check.sh fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 -info_ts3status.sh -if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - fn_print_fail "${servername} is already stopped" - fn_scriptlog "${servername} is already stopped" -else - ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 - fn_print_ok "${servername}" - fn_scriptlog "Stopped ${servername}" -fi +${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 +fn_print_ok "${servername}" +fn_scriptlog "Stopped ${servername}" # Remove lock file rm -f "${rootdir}/${lockselfname}" sleep 1 @@ -50,110 +156,47 @@ echo -en "\n" } fn_stop_tmux(){ -check.sh -info_config.sh fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 - -if [ "${gamename}" == "7 Days To Die" ] ; then - # if game is 7 Days To Die, we need special, graceful shutdown via telnet connection. - # Set below variable to be called for expect to operate correctly.. - fn_print_dots "Attempting graceful shutdown via telnet" - fn_scriptlog "Attempting graceful shutdown via telnet" - sleep 1 - telnetip=127.0.0.1 - sdtd_telnet - - # If failed using localhost will use servers ip - refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") - if [ -n "${refused}" ]; then - telnetip=${ip} - fn_print_warn "Attempting graceful shutdown via telnet: localhost failed" - fn_scriptlog "Warning! Attempting graceful shutdown failed using localhost" - sleep 5 - echo -en "\n" - fn_print_dots "Attempting graceful shutdown via telnet: using ${telnetip}" - fn_scriptlog "Attempting graceful shutdown via telnet using ${telnetip}" - sdtd_telnet - sleep 1 - fi - - refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") - completed=$(echo -en "\n ${sdtdshutdown}"| grep "Completed.") - if [ -n "${refused}" ]; then - fn_print_fail "Attempting graceful shutdown via telnet" - fn_scriptlog "Attempting graceful shutdown failed" - fn_scriptlog "${refused}" - elif [ -n "${completed}" ]; then - fn_print_ok "Attempting graceful shutdown via telnet" - fn_scriptlog "Attempting graceful shutdown succeeded" - else - fn_print_fail "Attempting graceful shutdown via telnet: Unknown error" - fn_scriptlog "Attempting graceful shutdown failed" - fn_scriptlog "Unknown error" - fi - sleep 1 - echo -en "\n\n" - echo -en "Telnet output:" - echo -en "\n ${sdtdshutdown}" - echo -en "\n\n" - sleep 1 - fn_print_dots "${servername}" - fn_scriptlog "${servername}" - sleep 5 - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_print_ok "${servername} is already stopped using graceful shutdown" - fn_scriptlog "${servername} is already stopped using graceful shutdown" - else - tmux kill-session -t "${servicename}" - fn_print_ok "${servername}" - fn_scriptlog "Stopped ${servername}" - fi - +# Kill tmux session +tmux kill-session -t "${servicename}" > /dev/null 2>&1 +pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") +if [ "${pid}" == "0" ]; then + fn_print_ok_nl "${servername}" + fn_scriptlog "Stopped ${servername}" + sleep 1 + # Remove lock file + rm -f "${rootdir}/${lockselfname}" else - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_print_fail "${servername} is already stopped" - fn_scriptlog "${servername} is already stopped" - else - - if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - sleep 1 - fn_print_dots "Attempting graceful shutdown" - fn_scriptlog "Attempting graceful shutdown" - tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 - counter=0 - while [ "${pid}" != "0" -a $counter -lt 30 ]; do - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - sleep 1 - let counter=counter+1 - if [ "${counter}" -gt "1" ]; then - fn_print_dots "Attempting graceful shutdown: ${counter}" - fi - done - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_print_ok "Attempting graceful shutdown" - else - fn_print_fail "Attempting graceful shutdown" - fi - fi - - tmux kill-session -t "${servicename}" > /dev/null 2>&1 - fn_print_ok "${servername}" - fn_scriptlog "Stopped ${servername}" - fi + fn_print_fail_nl "Unable to stop${servername}" + fn_scriptlog "Unable to stop${servername}" fi - # Remove lock file - rm -f "${rootdir}/${lockselfname}" - sleep 1 - echo -en "\n" + } +# checks if the server is already stopped before trying to stop. +fn_stop_pre_check(){ if [ "${gamename}" == "Teamspeak 3" ]; then - fn_stop_teamspeak3 + info_ts3status.sh + if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + fn_print_ok_nl "${servername} is already stopped" + fn_scriptlog "${servername} is already stopped" + else + fn_stop_teamspeak3 + fi else - fn_stop_tmux -fi \ No newline at end of file + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + fn_print_ok_nl "${servername} is already stopped" + fn_scriptlog "${servername} is already stopped" + else + fn_stop_graceful_select + fi +fi +} + + + +check.sh +fn_stop_pre_check \ No newline at end of file From 7e732a2f6f5adea61cb4f89938993f1360283d85 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 2 Mar 2016 21:41:28 +0000 Subject: [PATCH 243/643] missing fi --- functions/command_stop.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/functions/command_stop.sh b/functions/command_stop.sh index 9d75fbc5a..a91bed79d 100644 --- a/functions/command_stop.sh +++ b/functions/command_stop.sh @@ -139,7 +139,8 @@ elif [ "${engine}" == "source" ]; then elif [ "${engine}" == "goldsource" ]; then fn_stop_graceful_goldsource else - fn_stop_tmux + fn_stop_tmux +fi } fn_stop_teamspeak3(){ @@ -196,7 +197,5 @@ else fi } - - check.sh fn_stop_pre_check \ No newline at end of file From c2cf00f74679e03ed610006b20ea0cc6a2316dd3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 2 Mar 2016 21:49:20 +0000 Subject: [PATCH 244/643] added tmux_stop --- functions/command_stop.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/functions/command_stop.sh b/functions/command_stop.sh index a91bed79d..a127ebc4b 100644 --- a/functions/command_stop.sh +++ b/functions/command_stop.sh @@ -29,6 +29,7 @@ done if [ "${pid}" != "0" ]; then fn_print_fail_nl "Graceful: rcon quit" fn_scriptlog "Graceful: rcon quit: FAIL" + fn_stop_tmux fi sleep 1 } @@ -49,6 +50,7 @@ for seconds in {1..3}; do done fn_print_ok_nl "Graceful: rcon quit: ${seconds}" sleep 1 +fn_stop_tmux } # Attempts Graceful of 7 Days To Die using telnet. From cbb5bbe170062db001149a8ca1057ca95b33a5e4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 2 Mar 2016 22:12:24 +0000 Subject: [PATCH 245/643] all nl messages will act the same most nl messages already waited 1 second before new line. however all should now do this giving a more consistent feel --- functions/check_logs.sh | 3 +-- functions/command_debug.sh | 4 +--- functions/command_start.sh | 6 +---- functions/command_stop.sh | 11 +++++---- functions/command_validate.sh | 4 +--- functions/core_messages.sh | 44 ++++++++++++++++++++++++----------- functions/email.sh | 6 ++--- functions/logs.sh | 12 +++------- 8 files changed, 46 insertions(+), 44 deletions(-) diff --git a/functions/check_logs.sh b/functions/check_logs.sh index f390eeab4..9b4f41324 100644 --- a/functions/check_logs.sh +++ b/functions/check_logs.sh @@ -10,8 +10,7 @@ lgsm_version="271215" if [ ! -d "${scriptlogdir}" ]; then fn_print_dots "Checking for log files" sleep 1 - fn_print_info "Checking for log files: Creating log files" - echo -en "\n" + fn_print_info_nl "Checking for log files: Creating log files" checklogs=1 install_logs.sh fi diff --git a/functions/command_debug.sh b/functions/command_debug.sh index 7c9aca38b..baa93aec0 100644 --- a/functions/command_debug.sh +++ b/functions/command_debug.sh @@ -48,10 +48,8 @@ sleep 1 command_stop.sh fn_print_dots "Starting debug" sleep 1 -fn_print_ok "Starting debug" +fn_print_ok_nl "Starting debug" fn_scriptlog "Started debug" -sleep 1 -echo -en "\n" cd "${executabledir}" fix.sh if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then diff --git a/functions/command_start.sh b/functions/command_start.sh index fd30a17bb..e1e324caf 100644 --- a/functions/command_start.sh +++ b/functions/command_start.sh @@ -104,10 +104,8 @@ if [ "${tmuxwc}" -eq 0 ]; then fi if [ "${tmuxwc}" -eq 1 ]; then - fn_print_info "${servername} is already running" + fn_print_info_nl "${servername} is already running" fn_scriptlog "${servername} is already running" - sleep 1 - echo -en "\n" exit fi @@ -138,8 +136,6 @@ if [ "${tmuxwc}" -eq 0 ]; then if [ -s "${scriptlogdir}/.${servicename}-tmux-error.tmp" ]; then fn_print_fail_nl "Unable to start ${servername}: Tmux error:" fn_scriptlog "Tmux error" - sleep 1 - echo -en "\n" echo "" echo "Command" echo "=================================" diff --git a/functions/command_stop.sh b/functions/command_stop.sh index a127ebc4b..3e6a7e398 100644 --- a/functions/command_stop.sh +++ b/functions/command_stop.sh @@ -150,17 +150,15 @@ fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 -fn_print_ok "${servername}" -fn_scriptlog "Stopped ${servername}" # Remove lock file rm -f "${rootdir}/${lockselfname}" -sleep 1 -echo -en "\n" +fn_print_ok_nl "${servername}" +fn_scriptlog "Stopped ${servername}" } fn_stop_tmux(){ fn_print_dots "${servername}" -fn_scriptlog "${servername}" +fn_scriptlog "tmux kill-session: ${servername}" sleep 1 # Kill tmux session tmux kill-session -t "${servicename}" > /dev/null 2>&1 @@ -200,4 +198,7 @@ fi } check.sh +fn_print_dots "${servername}" +fn_scriptlog "${servername}" +sleep 1 fn_stop_pre_check \ No newline at end of file diff --git a/functions/command_validate.sh b/functions/command_validate.sh index 59c03b6ff..f4c46c071 100644 --- a/functions/command_validate.sh +++ b/functions/command_validate.sh @@ -10,9 +10,7 @@ local modulename="Validate" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_validation(){ -fn_print_warn "Validating may overwrite some customised files." -sleep 1 -echo -en "\n" +fn_print_warn_nl "Validating may overwrite some customised files." echo -en "https://developer.valvesoftware.com/wiki/SteamCMD#Validate" sleep 5 echo -en "\n" diff --git a/functions/core_messages.sh b/functions/core_messages.sh index eeaac4170..2cbcd08f7 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -30,10 +30,12 @@ fn_print_fail(){ fn_print_fail_nl(){ if [ -n "${modulename}" ]; then - echo -e "\r\033[K[\e[0;31m FAIL \e[0m] ${modulename} ${servicename}: $@" + echo -en "\r\033[K[\e[0;31m FAIL \e[0m] ${modulename} ${servicename}: $@" else - echo -e "\r\033[K[\e[0;31m FAIL \e[0m] $@" + echo -en "\r\033[K[\e[0;31m FAIL \e[0m] $@" fi + sleep 1 + echo -en "\n" } # [ OK ] @@ -47,10 +49,12 @@ fn_print_ok(){ fn_print_ok_nl(){ if [ -n "${modulename}" ]; then - echo -e "\r\033[K[\e[0;32m OK \e[0m] ${modulename} ${servicename}: $@" + echo -en "\r\033[K[\e[0;32m OK \e[0m] ${modulename} ${servicename}: $@" else - echo -e "\r\033[K[\e[0;32m OK \e[0m] $@" + echo -en "\r\033[K[\e[0;32m OK \e[0m] $@" fi + sleep 1 + echo -en "\n" } # [ INFO ] @@ -64,10 +68,12 @@ fn_print_info(){ fn_print_info_nl(){ if [ -n "${modulename}" ]; then - echo -e "\r\033[K[\e[0;36m INFO \e[0m] ${modulename} ${servicename}: $@" + echo -en "\r\033[K[\e[0;36m INFO \e[0m] ${modulename} ${servicename}: $@" else - echo -e "\r\033[K[\e[0;36m INFO \e[0m] $@" + echo -en "\r\033[K[\e[0;36m INFO \e[0m] $@" fi + sleep 1 + echo -en "\n" } # [ WARN ] @@ -81,10 +87,12 @@ fn_print_warn(){ fn_print_warn_nl(){ if [ -n "${modulename}" ]; then - echo -e "\r\033[K[\e[1;33m WARN \e[0m] ${modulename} ${servicename}: $@" + echo -en "\r\033[K[\e[1;33m WARN \e[0m] ${modulename} ${servicename}: $@" else - echo -e "\r\033[K[\e[1;33m WARN \e[0m] $@" + echo -en "\r\033[K[\e[1;33m WARN \e[0m] $@" fi + sleep 1 + echo -en "\n" } # [ .... ] @@ -120,7 +128,9 @@ fn_print_failure(){ } fn_print_failure_nl(){ - echo -e "\e[0;31mFailure!\e[0m $@" + echo -en "\e[0;31mFailure!\e[0m $@" + sleep 1 + echo -en "\n" } # Error! @@ -129,7 +139,9 @@ fn_print_error(){ } fn_print_error_nl(){ - echo -e "\e[0;31mError!\e[0m $@" + echo -en "\e[0;31mError!\e[0m $@" + sleep 1 + echo -en "\n" } # Info! @@ -138,7 +150,9 @@ fn_print_infomation(){ } fn_print_infomation_nl(){ - echo -e "\e[0;36mInfomation!\e[0m $@" + echo -en "\e[0;36mInfomation!\e[0m $@" + sleep 1 + echo -en "\n" } # FAIL for end of line @@ -147,7 +161,9 @@ fn_print_ok_eol(){ } fn_print_ok_eol_nl(){ - echo -e "\e[0;32mOK\e[0m" + echo -en "\e[0;32mOK\e[0m" + sleep 1 + echo -en "\n" } # FAIL for end of line @@ -156,7 +172,9 @@ fn_print_fail_eol(){ } fn_print_fail_eol_nl(){ - echo -e "\e[0;31mFAIL\e[0m" + echo -en "\e[0;31mFAIL\e[0m" + sleep 1 + echo -en "\n" } # QUERYING for end of line diff --git a/functions/email.sh b/functions/email.sh index 51b097dd9..174ed3ff6 100644 --- a/functions/email.sh +++ b/functions/email.sh @@ -64,7 +64,5 @@ if [ -n "${gamelogdir}" ]; then tail "${gamelogdir}"/* | grep -v "==>" | sed '/^$/d' | tail -25 >> "${emaillog}" fi mail -s "${subject}" ${email} < "${emaillog}" -fn_print_ok "Sending notification to ${email}" -fn_scriptlog "Sent notification to ${email}" -sleep 1 -echo -en "\n" +fn_print_ok_nl "Sending notification to ${email}" +fn_scriptlog "Sent notification to ${email}" \ No newline at end of file diff --git a/functions/logs.sh b/functions/logs.sh index 79d4de462..cb7bd805b 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -27,14 +27,10 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th # Setting up counting variables scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" ; legacycount="0" sleep 1 - fn_print_ok "Starting" + fn_print_ok_nl "Starting" fn_scriptlog "Starting" - sleep 1 - echo -en "\n" - fn_print_info "Removing logs older than "${logdays}" days" + fn_print_info_nl "Removing logs older than "${logdays}" days" fn_scriptlog "Removing logs older than "${logdays}" days" - sleep 1 - echo -en "\n" # Logging logfiles to be removed according to "${logdays}", counting and removing them # Script logfiles find "${scriptlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" @@ -90,8 +86,6 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th # Count total amount of files removed count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount} + ${legacycount})) # Job done - fn_print_ok "Removed ${count} log files" + fn_print_ok_nl "Removed ${count} log files" fn_scriptlog "Removed ${count} log files" - sleep 1 - echo -en "\n" fi From e8fc3ffcb93162d381c425dc1399ecd0928ff0c4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 2 Mar 2016 22:15:30 +0000 Subject: [PATCH 246/643] removed sleep from eol --- functions/core_messages.sh | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/functions/core_messages.sh b/functions/core_messages.sh index 2cbcd08f7..d8b77305f 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -129,8 +129,6 @@ fn_print_failure(){ fn_print_failure_nl(){ echo -en "\e[0;31mFailure!\e[0m $@" - sleep 1 - echo -en "\n" } # Error! @@ -140,8 +138,6 @@ fn_print_error(){ fn_print_error_nl(){ echo -en "\e[0;31mError!\e[0m $@" - sleep 1 - echo -en "\n" } # Info! @@ -151,8 +147,6 @@ fn_print_infomation(){ fn_print_infomation_nl(){ echo -en "\e[0;36mInfomation!\e[0m $@" - sleep 1 - echo -en "\n" } # FAIL for end of line @@ -162,8 +156,6 @@ fn_print_ok_eol(){ fn_print_ok_eol_nl(){ echo -en "\e[0;32mOK\e[0m" - sleep 1 - echo -en "\n" } # FAIL for end of line @@ -173,8 +165,6 @@ fn_print_fail_eol(){ fn_print_fail_eol_nl(){ echo -en "\e[0;31mFAIL\e[0m" - sleep 1 - echo -en "\n" } # QUERYING for end of line From 45529e47eed777543217fa1d3616a8cc119d5b4e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 2 Mar 2016 22:16:45 +0000 Subject: [PATCH 247/643] nl in trap --- functions/core_dl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 45f46e1c6..98e6ebee4 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -74,12 +74,12 @@ fi fn_fetch_trap() { echo "" echo -ne "downloading ${filename}: " - fn_print_canceled_eol + fn_print_canceled_eol_nl fn_scriptlog "downloading ${filename}: CANCELED" sleep 1 rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" echo -ne "downloading ${filename}: " - fn_print_removed_eol + fn_print_removed_eol_nl fn_scriptlog "downloading ${filename}: REMOVED" exit } From 40395338399b1c341e2d10daedb2103fe8d12096 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 2 Mar 2016 22:18:56 +0000 Subject: [PATCH 248/643] returned -n to messages --- functions/core_messages.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/functions/core_messages.sh b/functions/core_messages.sh index d8b77305f..f6977f6e8 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -128,7 +128,7 @@ fn_print_failure(){ } fn_print_failure_nl(){ - echo -en "\e[0;31mFailure!\e[0m $@" + echo -e "\e[0;31mFailure!\e[0m $@" } # Error! @@ -137,7 +137,7 @@ fn_print_error(){ } fn_print_error_nl(){ - echo -en "\e[0;31mError!\e[0m $@" + echo -e "\e[0;31mError!\e[0m $@" } # Info! @@ -146,7 +146,7 @@ fn_print_infomation(){ } fn_print_infomation_nl(){ - echo -en "\e[0;36mInfomation!\e[0m $@" + echo -e "\e[0;36mInfomation!\e[0m $@" } # FAIL for end of line @@ -155,7 +155,7 @@ fn_print_ok_eol(){ } fn_print_ok_eol_nl(){ - echo -en "\e[0;32mOK\e[0m" + echo -e "\e[0;32mOK\e[0m" } # FAIL for end of line @@ -164,7 +164,7 @@ fn_print_fail_eol(){ } fn_print_fail_eol_nl(){ - echo -en "\e[0;31mFAIL\e[0m" + echo -e "\e[0;31mFAIL\e[0m" } # QUERYING for end of line From 4dc0f80d934067394ab852d2d6ee0cff007c7245 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 3 Mar 2016 23:00:18 +0000 Subject: [PATCH 249/643] Fixed 7 days to die bug --- functions/check_deps.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/functions/check_deps.sh b/functions/check_deps.sh index 535a15330..f433e7298 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -52,8 +52,8 @@ fn_found_missing_deps(){ if [ "${#array_deps_missing[@]}" != "0" ]; then fn_print_dots "Checking dependencies" sleep 2 - fn_print_warn "Checking dependencies: Dependency missing: \e[0;31m${array_deps_missing[@]}\e[0m" - fn_scriptlog "Checking dependencies: Dependency missing: \e[0;31m${array_deps_missing[@]}\e[0m" + fn_print_warn "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" + fn_scriptlog "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" sleep 1 echo -e "" sudo -n true > /dev/null 2>&1 @@ -181,7 +181,7 @@ elif [ -n "$(command -v yum)" ]; then if [ "${engine}" == "spark" ]; then array_deps_required+=( speex.i686 tbb.i686 ) # 7 Days to Die - elif [ "${executable}" == "./7DaysToDie.sh" ]; then + elif [ "${gamename}" == "7 Days To Die" ]; then array_deps_required+=( telnet expect ) # No More Room in Hell elif [ "${gamename}" == "No More Room in Hell" ]; then From 77c5692bd85d4dcee4864cf945d44b2cf720b0e3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 4 Mar 2016 00:34:34 +0000 Subject: [PATCH 250/643] Getting sdtd graceful working better --- functions/command_stop.sh | 313 ++++++++++++++++++++------------------ 1 file changed, 164 insertions(+), 149 deletions(-) diff --git a/functions/command_stop.sh b/functions/command_stop.sh index 3e6a7e398..69b799839 100644 --- a/functions/command_stop.sh +++ b/functions/command_stop.sh @@ -11,27 +11,29 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" # Attempts Graceful of source using rcon 'quit' command. fn_stop_graceful_source(){ -fn_print_dots "Graceful: rcon quit" -fn_scriptlog "Graceful: rcon quit" -# sends quit -tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 -# waits up to 30 seconds giving the server time to shutdown gracefuly -for seconds in {1..30}; do - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_print_ok_nl "Graceful: rcon quit: ${seconds}" - fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" - break + fn_print_dots "Graceful: rcon quit" + fn_scriptlog "Graceful: rcon quit" + # sends quit + tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 + # waits up to 30 seconds giving the server time to shutdown gracefuly + for seconds in {1..30}; do + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + fn_print_ok "Graceful: rcon quit: ${seconds}: " + fn_print_ok_eol_nl + fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" + break + fi + sleep 1 + fn_print_dots "Graceful: rcon quit: ${seconds}" + done + if [ "${pid}" != "0" ]; then + fn_print_fail "Graceful: rcon quit" + fn_print_fail_eol_nl + fn_scriptlog "Graceful: rcon quit: FAIL" + fn_stop_tmux fi sleep 1 - fn_print_dots "Graceful: rcon quit: ${seconds}" -done -if [ "${pid}" != "0" ]; then - fn_print_fail_nl "Graceful: rcon quit" - fn_scriptlog "Graceful: rcon quit: FAIL" - fn_stop_tmux -fi -sleep 1 } # Attempts Graceful of goldsource using rcon 'quit' command. @@ -39,162 +41,175 @@ sleep 1 # this function will only wait 3 seconds then force a tmux shutdown. # preventing the server from coming back online. fn_stop_graceful_goldsource(){ -fn_print_dots "Graceful: rcon quit" -fn_scriptlog "Graceful: rcon quit" -# sends quit -tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 -# waits 3 seconds as goldsource servers restart with the quit command -for seconds in {1..3}; do + fn_print_dots "Graceful: rcon quit" + fn_scriptlog "Graceful: rcon quit" + # sends quit + tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 + # waits 3 seconds as goldsource servers restart with the quit command + for seconds in {1..3}; do + sleep 1 + fn_print_dots "Graceful: rcon quit: ${seconds}" + done + fn_print_ok "Graceful: rcon quit: ${seconds}: " + fn_print_ok_eol_nl + fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" sleep 1 - fn_print_dots "Graceful: rcon quit: ${seconds}" -done -fn_print_ok_nl "Graceful: rcon quit: ${seconds}" -sleep 1 -fn_stop_tmux + fn_stop_tmux } # Attempts Graceful of 7 Days To Die using telnet. fn_stop_telnet_sdtd(){ -sdtdshutdown=$( expect -c ' -proc abort {} { - puts "Timeout or EOF\n" - exit 1 -} -spawn telnet '"${telnetip}"' '"${telnetport}"' -expect { - "password:" { send "'"${telnetpass}"'\r" } - default abort -} -expect { - "session." { send "shutdown\r" } - default abort -} -expect { eof } -puts "Completed.\n" -') + sdtd_telnet_shutdown=$( expect -c ' + proc abort {} { + puts "Timeout or EOF\n" + exit 1 + } + spawn telnet '"${telnetip}"' '"${telnetport}"' + expect { + "password:" { send "'"${telnetpass}"'\r" } + default abort + } + expect { + "session." { send "shutdown\r" } + default abort + } + expect { eof } + puts "Completed.\n" + ') + } fn_stop_graceful_sdtd(){ -# Gets server IP. -info_config.sh - -fn_print_dots "Graceful: telnet" -fn_scriptlog "Graceful: telnet" -sleep 1 + # Gets server IP. + info_config.sh -# uses localhost on first attempt. -telnetip=127.0.0.1 -fn_print_dots "Graceful: telnet: ${telnetip}" -fn_scriptlog "Graceful: telnet: ${telnetip}" -fn_stop_telnet_sdtd -sleep 1 - -# falls back to the server ip if localhost fails. -refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") -if [ -n "${refused}" ]; then - fn_print_warn_nl "Graceful: telnet: localhost: " - fn_print_fail_eol - fn_scriptlog "Graceful: telnet: localhost: FAIL" + fn_print_dots "Graceful: telnet" + fn_scriptlog "Graceful: telnet" sleep 1 - - telnetip=${ip} - fn_print_dots "Graceful: telnet: ${telnetip}" - fn_scriptlog "Graceful: telnet: ${telnetip}" - fn_stop_telnet_sdtd - refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") - - fn_print_warnnl "Graceful: telnet: ${telnetip}: " - fn_print_fail_eol - fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" - sleep 1 -fi - -# Checks if attempts have worked. -completed=$(echo -en "\n ${sdtdshutdown}"| grep "Completed.") -if [ -n "${completed}" ]; then - fn_print_ok_nl "Graceful: telnet: " - fn_print_ok_eol - fn_scriptlog "Graceful: telnet: OK" -elif [ -n "${refused}" ]; then - fn_print_fail_nl "Graceful: telnet: " - fn_print_fail_eol - fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" - echo -en "\n\n" | tee -a "${scriptlog}" - echo -en "Telnet output:" | tee -a "${scriptlog}" - echo -en "\n ${sdtdshutdown}" | tee -a "${scriptlog}" - echo -en "\n\n" | tee -a "${scriptlog}" -else - fn_print_fail_nl "Graceful: telnet: Unknown error" - fn_scriptlog "Graceful: telnet: Unknown error" - echo -en "\n\n" | tee -a "${scriptlog}" - echo -en "Telnet output:" | tee -a "${scriptlog}" - echo -en "\n ${sdtdshutdown}" | tee -a "${scriptlog}" - echo -en "\n\n" | tee -a "${scriptlog}" -fi + if [ "${telnetenabled}" == "false" ]; then + fn_print_info_nl "Graceful: telnet: DISABLED: Enable in ${servercfg}" + elif [ "$(command -v expect)" ]||[ "$(which expect >/dev/null 2>&1)" ]; then + # Tries to shutdown with both localhost and server IP. + for telnetip in 127.0.0.1 ${ip}; do + fn_print_dots "Graceful: telnet: ${telnetip}" + fn_scriptlog "Graceful: telnet: ${telnetip}" + sleep 1 + fn_stop_telnet_sdtd + completed=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Completed.") + refused=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Timeout or EOF") + if [ -n "${refused}" ]; then + fn_print_warn "Graceful: telnet: ${telnetip}: " + fn_print_fail_eol_nl + fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" + sleep 1 + elif [ -n "${completed}" ]; then + break + fi + done + + # If telnet was successful will use telnet again to check the connection has closed + # This confirms that the tmux session can now be killed. + if [ -n "${completed}" ]; then + for seconds in {1..30}; do + fn_stop_telnet_sdtd + refused=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Timeout or EOF") + if [ -n "${refused}" ]; then + fn_print_ok "Graceful: telnet: ${telnetip}: " + fn_print_ok_eol_nl + fn_scriptlog "Graceful: telnet: ${telnetip}: ${seconds} seconds" + break + fi + sleep 1 + fn_print_dots "Graceful: rcon quit: ${seconds}" + done + # If telnet failed will go straight to tmux shutdown. + # If cannot shutdown correctly world save may be lost + else + if [ -n "${refused}" ]; then + fn_print_fail "Graceful: telnet: " + fn_print_fail_eol_nl + fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" + else + fn_print_fail_nl "Graceful: telnet: Unknown error" + fn_scriptlog "Graceful: telnet: Unknown error" + fi + echo -en "\n\n" | tee -a "${scriptlog}" + echo -en "Telnet output:" | tee -a "${scriptlog}" + echo -en "\n ${sdtd_telnet_shutdown}" | tee -a "${scriptlog}" + echo -en "\n\n" | tee -a "${scriptlog}" + fi + else + fn_print_dots "Graceful: telnet: " + fn_scriptlog "Graceful: telnet: " + fn_print_fail "Graceful: telnet: expect not installed: " + fn_print_fail_eol_nl + fn_scriptlog "Graceful: telnet: expect not installed: FAIL" + fi + sleep 1 + fn_stop_tmux } fn_stop_graceful_select(){ -if [ "${gamename}" == "7 Days to Die" ]; then - fn_stop_graceful_sdtd -elif [ "${engine}" == "source" ]; then - fn_stop_graceful_source -elif [ "${engine}" == "goldsource" ]; then - fn_stop_graceful_goldsource -else - fn_stop_tmux -fi + if [ "${gamename}" == "7 Days To Die" ]; then + fn_stop_graceful_sdtd + elif [ "${engine}" == "source" ]; then + fn_stop_graceful_source + elif [ "${engine}" == "goldsource" ]; then + fn_stop_graceful_goldsource + else + fn_stop_tmux + fi } fn_stop_teamspeak3(){ -fn_print_dots "${servername}" -fn_scriptlog "${servername}" -sleep 1 -${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 -# Remove lock file -rm -f "${rootdir}/${lockselfname}" -fn_print_ok_nl "${servername}" -fn_scriptlog "Stopped ${servername}" -} - -fn_stop_tmux(){ -fn_print_dots "${servername}" -fn_scriptlog "tmux kill-session: ${servername}" -sleep 1 -# Kill tmux session -tmux kill-session -t "${servicename}" > /dev/null 2>&1 -pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") -if [ "${pid}" == "0" ]; then - fn_print_ok_nl "${servername}" - fn_scriptlog "Stopped ${servername}" + fn_print_dots "${servername}" + fn_scriptlog "${servername}" sleep 1 + ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 # Remove lock file rm -f "${rootdir}/${lockselfname}" -else - fn_print_fail_nl "Unable to stop${servername}" - fn_scriptlog "Unable to stop${servername}" -fi + fn_print_ok_nl "${servername}" + fn_scriptlog "Stopped ${servername}" + } + fn_stop_tmux(){ + fn_print_dots "${servername}" + fn_scriptlog "tmux kill-session: ${servername}" + sleep 1 + # Kill tmux session + tmux kill-session -t "${servicename}" > /dev/null 2>&1 + sleep 0.5 + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + # Remove lock file + rm -f "${rootdir}/${lockselfname}" + fn_print_ok_nl "${servername}" + fn_scriptlog "Stopped ${servername}" + else + fn_print_fail_nl "Unable to stop${servername}" + fn_scriptlog "Unable to stop${servername}" + fi } # checks if the server is already stopped before trying to stop. fn_stop_pre_check(){ -if [ "${gamename}" == "Teamspeak 3" ]; then - info_ts3status.sh - if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - fn_print_ok_nl "${servername} is already stopped" - fn_scriptlog "${servername} is already stopped" - else - fn_stop_teamspeak3 - fi -else - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_print_ok_nl "${servername} is already stopped" - fn_scriptlog "${servername} is already stopped" + if [ "${gamename}" == "Teamspeak 3" ]; then + info_ts3status.sh + if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + fn_print_ok_nl "${servername} is already stopped" + fn_scriptlog "${servername} is already stopped" + else + fn_stop_teamspeak3 + fi else - fn_stop_graceful_select + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + fn_print_ok_nl "${servername} is already stopped" + fn_scriptlog "${servername} is already stopped" + else + fn_stop_graceful_select + fi fi -fi } check.sh From b82d0082f6f623a02d5fa0a0ca29645f63becd43 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 5 Mar 2016 12:51:27 +0000 Subject: [PATCH 251/643] Moved info_config.sh to the correct place --- functions/command_stop.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/functions/command_stop.sh b/functions/command_stop.sh index 69b799839..ba8400879 100644 --- a/functions/command_stop.sh +++ b/functions/command_stop.sh @@ -80,9 +80,6 @@ fn_stop_telnet_sdtd(){ } fn_stop_graceful_sdtd(){ - # Gets server IP. - info_config.sh - fn_print_dots "Graceful: telnet" fn_scriptlog "Graceful: telnet" sleep 1 @@ -133,7 +130,7 @@ fn_stop_graceful_sdtd(){ fn_print_fail_nl "Graceful: telnet: Unknown error" fn_scriptlog "Graceful: telnet: Unknown error" fi - echo -en "\n\n" | tee -a "${scriptlog}" + echo -en "\n" | tee -a "${scriptlog}" echo -en "Telnet output:" | tee -a "${scriptlog}" echo -en "\n ${sdtd_telnet_shutdown}" | tee -a "${scriptlog}" echo -en "\n\n" | tee -a "${scriptlog}" @@ -213,6 +210,7 @@ fn_stop_pre_check(){ } check.sh +info_config.sh fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 From 4e8920e421ae9394cf56aad61fc7f28be8442e90 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 5 Mar 2016 12:51:43 +0000 Subject: [PATCH 252/643] updated monitor function --- functions/command_monitor.sh | 156 +++++++++++++++++------------------ 1 file changed, 75 insertions(+), 81 deletions(-) diff --git a/functions/command_monitor.sh b/functions/command_monitor.sh index e09b6236c..900945603 100644 --- a/functions/command_monitor.sh +++ b/functions/command_monitor.sh @@ -10,104 +10,98 @@ lgsm_version="271215" local modulename="Monitor" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -fn_monitor_teamspeak3(){ -check.sh -logs.sh -fn_print_dots "${servername}" -fn_scriptlog "${servername}" -sleep 1 -if [ ! -f "${rootdir}/${lockselfname}" ]; then - fn_print_info "Disabled: No lock file found" - fn_scriptlog "Disabled: No lock file found" - sleep 1 - echo -en "\n" - echo "To enable monitor run ./${selfname} start" - exit 1 -fi -fn_print_dots "Checking session: CHECKING" -fn_scriptlog "Checking session: CHECKING" -sleep 1 -info_ts3status.sh -if [ "${ts3status}" = "Server is running" ]; then - fn_print_ok "Checking session: OK" - fn_scriptlog "Checking session: OK" - sleep 1 - sleep 0.5 - echo -en "\n" - exit -else - fn_print_fail "Checking session: FAIL" - fn_scriptlog "Checking session: FAIL" - sleep 1 - fn_print_fail "Checking session: FAIL: ${ts3status}" - fn_scriptlog "Checking session: FAIL: ${ts3status}" - failurereason="${ts3status}" - if [ "${emailnotification}" = "on" ]; then - subject="${servicename} Monitor - Restarting ${servername}" - actiontaken="restarted ${servername}" - email.sh +fn_monitor_check_lockfile(){ + # Monitor does not run it lockfile is not found + if [ ! -f "${rootdir}/${lockselfname}" ]; then + fn_print_info_nl "Disabled: No lock file found" + fn_scriptlog "Disabled: No lock file found" + echo "To enable monitor run ./${selfname} start" + exit 1 fi -fi -sleep 0.5 -echo -en "\n" -fn_restart } -fn_monitor_tmux(){ -check.sh -info_config.sh -fn_print_dots "${servername}" -fn_scriptlog "${servername}" -sleep 1 -if [ ! -f "${rootdir}/${lockselfname}" ]; then - fn_print_info "Disabled: No lock file found" - fn_scriptlog "Disabled: No lock file found" - sleep 1 - echo -en "\n" - echo "To enable monitor run ./${selfname} start" - exit 1 -fi +fn_monitor_check_update(){ + # Monitor will not check if update is running. + updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) + if [ "${updatecheck}" >= "0" ]; then + fn_print_info_nl "SteamCMD is currently checking for updates" + fn_scriptlog "SteamCMD is currently checking for updates" + sleep 1 + exit + fi +} -updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) -if [ "${updatecheck}" = "0" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 2004" ]; then +fn_monitor_msg_checking(){ fn_print_dots "Checking session: CHECKING" fn_scriptlog "Checking session: CHECKING" + sleep 1 +} + +fn_monitor_email_notification(){ + # Email will be sent if enabled + if [ "${emailnotification}" = "on" ]; then + subject="${servicename} Monitor - Starting ${servername}" + failurereason="${servicename} process not running" + actiontaken="${servicename} has been restarted" + email.sh + fi +} + +fn_monitor_teamspeak3(){ + info_ts3status.sh + if [ "${ts3status}" = "Server is running" ]; then + fn_print_ok "Checking session: " + fn_print_ok_eol_nl + fn_scriptlog "Checking session: OK" + exit + else + fn_print_fail "Checking session: ${ts3status}: " + fn_print_fail_eol_nl + fn_scriptlog "Checking session: ${ts3status}: FAIL" + failurereason="${ts3status}" + fn_monitor_email_notification + fi + fn_scriptlog "Monitor is starting ${servername}" sleep 1 - tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") - if [ "${tmuxwc}" -eq 1 ]; then + fn_restart +} + +fn_monitor_tmux(){ + # checks that tmux session is running + tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${tmuxwc}" == "1" ]; then fn_print_ok "Checking session: OK" + fn_print_ok_eol_nl fn_scriptlog "Checking session: OK" - sleep 1 - echo -en "\n" - - if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then - monitor_gsquery.sh - fi - exit $? + # runs gsquery check on game with specific engines. + local allowed_engines_array=( avalanche goldsource realvirtuality source spark unity3d unreal unreal2 ) + for allowed_engine in "${allowed_engines_array[@]}" + do + if [ "${allowed_engine}" == "${function_selfname}" ]; then + monitor_gsquery.sh + fi + done + exit else fn_print_fail "Checking session: FAIL" + fn_print_fail_eol_nl fn_scriptlog "Checking session: FAIL" - sleep 1 - echo -en "\n" - if [ "${emailnotification}" = "on" ]; then - subject="${servicename} Monitor - Starting ${servername}" - failurereason="${servicename} process not running" - actiontaken="${servicename} has been restarted" - email.sh - fi + fn_monitor_email_notification fn_scriptlog "Monitor is starting ${servername}" + sleep 1 command_start.sh fi -else - fn_print_info_nl "SteamCMD is currently checking for updates" - fn_scriptlog "SteamCMD is currently checking for updates" - sleep 1 - fn_print_info_nl "When update is complete ${servicename} will start" - fn_scriptlog "When update is complete ${servicename} will start" - sleep 1 -fi } +check.sh +logs.sh +info_config.sh +fn_print_dots "${servername}" +fn_scriptlog "${servername}" +sleep 1 +fn_monitor_check_lockfile +fn_monitor_check_update +fn_monitor_msg_checking if [ "${gamename}" == "Teamspeak 3" ]; then fn_monitor_teamspeak3 else From 43043ab1c3143d82a05e13e71ae52084b5ae1b20 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 5 Mar 2016 12:51:53 +0000 Subject: [PATCH 253/643] Fixed minor issue --- functions/core_functions.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index c0490ffcb..6c867b7e6 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -151,7 +151,9 @@ fn_fetch_function fn_restart(){ local modulename="Restarting" info_config.sh -fn_scriptlog "${servername}" +if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "${servername}" +fi command_stop.sh command_start.sh } From fb97f609ee5f134a37613bcdf86ba01d67ad6fcd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 5 Mar 2016 12:52:34 +0000 Subject: [PATCH 254/643] sd2dserver now bypasses sd2d start script --- 7DaysToDie/sdtdserver | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index b3112820c..6a4bd3d39 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -28,7 +28,7 @@ updateonstart="off" # http://7daystodie.gamepedia.com/Server fn_parms(){ -parms="-configfile=${servercfgfullpath} -dedicated" +parms="-logfile ${gamelogdir}/output_log__`date +%Y-%m-%d__%H-%M-%S`.txt -quit -batchmode -nographics -dedicated -configfile=${servercfgfullpath}" } #### Advanced Variables #### @@ -52,10 +52,12 @@ engine="unity3d" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" -executable="./startserver.sh" +executable="./7DaysToDieServer.x86" servercfg="${servicename}.xml" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" From 7bd6fb9af1f19de52c3f048a6fe816bb4373ffe9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 5 Mar 2016 12:53:46 +0000 Subject: [PATCH 255/643] no longer a requirement for symbolic link the game log dir is set in parms --- functions/install_logs.sh | 7 ------- 1 file changed, 7 deletions(-) diff --git a/functions/install_logs.sh b/functions/install_logs.sh index a1687d962..9f86f7129 100644 --- a/functions/install_logs.sh +++ b/functions/install_logs.sh @@ -33,13 +33,6 @@ if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" = mkdir -pv "${gamelogdir}" fi -# If a server is 7 Days to Die. -if [ "${gamename}" == "7 Days To Die" ]; then - if [ ! -h "${gamelogdir}/output_log.txt" ]; then - ln -nfsv "${filesdir}/7DaysToDie_Data/output_log.txt" "${gamelogdir}/output_log.txt" - fi -fi - # If server uses SteamCMD create a symbolic link to the Steam logs. if [ -d "${rootdir}/Steam/logs" ]; then if [ ! -h "${rootdir}/log/steamcmd" ]; then From d78ba978a3fab450219f7c706ed4c1b1883ae36c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 5 Mar 2016 15:50:56 +0000 Subject: [PATCH 256/643] tab --- functions/check_steamcmd.sh | 100 +++++++++++++++++------------------ functions/command_monitor.sh | 2 +- 2 files changed, 49 insertions(+), 53 deletions(-) diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh index 4039c4ef8..db1c7969a 100644 --- a/functions/check_steamcmd.sh +++ b/functions/check_steamcmd.sh @@ -8,70 +8,66 @@ lgsm_version="160316" fn_install_steamcmd(){ -if [ ! -d "${steamcmddir}" ]; then - mkdir -v "${steamcmddir}" -fi -fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" -fn_dl_extract "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" "${steamcmddir}" -chmod +x "${steamcmddir}/steamcmd.sh" + if [ ! -d "${steamcmddir}" ]; then + mkdir -v "${steamcmddir}" + fi + fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" + fn_dl_extract "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" "${steamcmddir}" + chmod +x "${steamcmddir}/steamcmd.sh" } fn_check_steamcmd_user(){ -# Checks steamuser is setup. -if [ "${steamuser}" == "username" ]; then - fn_print_fail_nl "Steam login not set. Update steamuser." - echo " * Change steamuser=\"username\" to a valid steam login." - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login." - exit 1 - fi -fi -# Anonymous user is set if steamuser is missing -if [ -z "${steamuser}" ]; then - fn_print_warn_nl "Steam login not set. Using anonymous login." - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "Steam login not set. Using anonymous login." + # Checks steamuser is setup. + if [ "${steamuser}" == "username" ]; then + fn_print_fail_nl "Steam login not set. Update steamuser." + echo " * Change steamuser=\"username\" to a valid steam login." + if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login." + exit 1 + fi fi - steamuser="anonymous" - steampass="" - sleep 2 -fi + # Anonymous user is set if steamuser is missing + if [ -z "${steamuser}" ]; then + fn_print_warn_nl "Steam login not set. Using anonymous login." + if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "Steam login not set. Using anonymous login." + fi + steamuser="anonymous" + steampass="" + sleep 2 + fi } fn_check_steamcmd_sh(){ -# Checks if SteamCMD exists when starting or updating a server. -# Installs if missing. -steamcmddir="${rootdir}/steamcmd" -if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then - if [ "${function_selfname}" == "command_install.sh" ]; then - fn_install_steamcmd - else - fn_print_warn_nl "SteamCMD is missing" - fn_scriptlog "SteamCMD is missing" - sleep 1 - fn_install_steamcmd + # Checks if SteamCMD exists when starting or updating a server. + # Installs if missing. + steamcmddir="${rootdir}/steamcmd" + if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then + if [ "${function_selfname}" == "command_install.sh" ]; then + fn_install_steamcmd + else + fn_print_warn_nl "SteamCMD is missing" + fn_scriptlog "SteamCMD is missing" + sleep 1 + fn_install_steamcmd + fi + elif [ "${function_selfname}" == "command_install.sh" ]; then + fn_print_infomation "SteamCMD is already installed..." + fn_print_ok_eol_nl fi -elif [ "${function_selfname}" == "command_install.sh" ]; then - fn_print_infomation "SteamCMD is already installed..." - fn_print_ok_eol_nl -fi } fn_check_steamcmd_guard(){ -if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then - # Checks that steamcmd is working correctly and will prompt Steam Guard if required. - "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit - if [ $? -ne 0 ]; then - fn_print_failure_nl "Error running SteamCMD" + if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then + # Checks that steamcmd is working correctly and will prompt Steam Guard if required. + "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit + if [ $? -ne 0 ]; then + fn_print_failure_nl "Error running SteamCMD" + fi fi -fi } -if [ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 2004" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Teamspeak 3" ]; then - : # These servers do not require SteamCMD. Check is skipped. -else - fn_check_steamcmd_user - fn_check_steamcmd_sh - fn_check_steamcmd_guard -fi +fn_check_steamcmd_user +fn_check_steamcmd_sh +fn_check_steamcmd_guard diff --git a/functions/command_monitor.sh b/functions/command_monitor.sh index 900945603..93c78dcdc 100644 --- a/functions/command_monitor.sh +++ b/functions/command_monitor.sh @@ -15,7 +15,7 @@ fn_monitor_check_lockfile(){ if [ ! -f "${rootdir}/${lockselfname}" ]; then fn_print_info_nl "Disabled: No lock file found" fn_scriptlog "Disabled: No lock file found" - echo "To enable monitor run ./${selfname} start" + echo " * To enable monitor run ./${selfname} start" exit 1 fi } From bad55355a2cf82de0ab8a208355863b58934e3c9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 5 Mar 2016 15:58:58 +0000 Subject: [PATCH 257/643] tab funtions --- functions/check_deps.sh | 140 ++++++++++++++++++++-------------------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/functions/check_deps.sh b/functions/check_deps.sh index f433e7298..71e5236e2 100644 --- a/functions/check_deps.sh +++ b/functions/check_deps.sh @@ -8,85 +8,85 @@ lgsm_version="060216" fn_deps_detector(){ -# Checks if dependency is missing -if [ -n "$(command -v dpkg-query)" ]; then - dpkg-query -W -f='${Status}' ${deptocheck} 2>/dev/null| grep -q -P '^install ok installed$' - depstatus=$? -elif [ -n "$(command -v yum)" ]; then - yum -q list installed ${deptocheck} > /dev/null 2>&1 - depstatus=$? -fi -if [ "${depstatus}" == "0" ]; then - missingdep=0 - if [ "${function_selfname}" == "command_install.sh" ]; then - echo -e "\e[0;32m${deptocheck}\e[0m" - sleep 0.5 - fi -else - # if missing dependency is found - missingdep=1 - if [ "${function_selfname}" == "command_install.sh" ]; then - echo -e "\e[0;31m${deptocheck}\e[0m" - sleep 0.5 - fi -fi - -# Missing dependencies are added to array_deps_missing -if [ "${missingdep}" == "1" ]; then - array_deps_missing+=("${deptocheck}") -fi -} - -fn_deps_email(){ -# Adds postfix to required dependencies if email notification is enabled -if [ "${emailnotification}" == "on" ]; then + # Checks if dependency is missing if [ -n "$(command -v dpkg-query)" ]; then - array_deps_required+=( mailutils postfix ) + dpkg-query -W -f='${Status}' ${deptocheck} 2>/dev/null| grep -q -P '^install ok installed$' + depstatus=$? elif [ -n "$(command -v yum)" ]; then - array_deps_required+=( mailx postfix ) + yum -q list installed ${deptocheck} > /dev/null 2>&1 + depstatus=$? fi -fi + if [ "${depstatus}" == "0" ]; then + missingdep=0 + if [ "${function_selfname}" == "command_install.sh" ]; then + echo -e "\e[0;32m${deptocheck}\e[0m" + sleep 0.5 + fi + else + # if missing dependency is found + missingdep=1 + if [ "${function_selfname}" == "command_install.sh" ]; then + echo -e "\e[0;31m${deptocheck}\e[0m" + sleep 0.5 + fi + fi + + # Missing dependencies are added to array_deps_missing + if [ "${missingdep}" == "1" ]; then + array_deps_missing+=("${deptocheck}") + fi } -fn_found_missing_deps(){ -if [ "${#array_deps_missing[@]}" != "0" ]; then - fn_print_dots "Checking dependencies" - sleep 2 - fn_print_warn "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" - fn_scriptlog "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" - sleep 1 - echo -e "" - sudo -n true > /dev/null 2>&1 - if [ $? -eq 0 ]; then - fn_print_info_nl "Attempting to install missing dependencies automatically" - echo -en ".\r" - sleep 1 - echo -en "..\r" - sleep 1 - echo -en "...\r" - sleep 1 - echo -en " \r" - if [ -n "$(command -v dpkg-query)" ]; then - echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" - elif [ -n "$(command -v yum)" ]; then - echo "yum install ${array_deps_missing[@]}" - fi - else - echo "" - fn_print_infomation_nl "$(whoami) does not have sudo access. manually install dependencies" - fn_scriptlog "$(whoami) does not have sudo access. manually install dependencies" - echo "" +fn_deps_email(){ + # Adds postfix to required dependencies if email notification is enabled + if [ "${emailnotification}" == "on" ]; then if [ -n "$(command -v dpkg-query)" ]; then - echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" + array_deps_required+=( mailutils postfix ) elif [ -n "$(command -v yum)" ]; then - echo "yum install ${array_deps_missing[@]}" + array_deps_required+=( mailx postfix ) fi - echo "" - fi - if [ "${function_selfname}" == "command_install.sh" ]; then - sleep 5 fi -fi +} + +fn_found_missing_deps(){ + if [ "${#array_deps_missing[@]}" != "0" ]; then + fn_print_dots "Checking dependencies" + sleep 2 + fn_print_warn "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" + fn_scriptlog "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" + sleep 1 + echo -e "" + sudo -n true > /dev/null 2>&1 + if [ $? -eq 0 ]; then + fn_print_info_nl "Attempting to install missing dependencies automatically" + echo -en ".\r" + sleep 1 + echo -en "..\r" + sleep 1 + echo -en "...\r" + sleep 1 + echo -en " \r" + if [ -n "$(command -v dpkg-query)" ]; then + echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" + elif [ -n "$(command -v yum)" ]; then + echo "yum install ${array_deps_missing[@]}" + fi + else + echo "" + fn_print_infomation_nl "$(whoami) does not have sudo access. manually install dependencies" + fn_scriptlog "$(whoami) does not have sudo access. manually install dependencies" + echo "" + if [ -n "$(command -v dpkg-query)" ]; then + echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" + elif [ -n "$(command -v yum)" ]; then + echo "yum install ${array_deps_missing[@]}" + fi + echo "" + fi + if [ "${function_selfname}" == "command_install.sh" ]; then + sleep 5 + fi + fi } fn_check_loop(){ From d99a7e2b43153bcd12913aa93f1c8809eb1e62a0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 6 Mar 2016 16:54:51 +0000 Subject: [PATCH 258/643] Updated function --- functions/command_monitor.sh | 2 +- functions/command_start.sh | 114 ++++++++++++++++------------------- functions/core_messages.sh | 2 +- 3 files changed, 55 insertions(+), 63 deletions(-) diff --git a/functions/command_monitor.sh b/functions/command_monitor.sh index 93c78dcdc..3dfea8adf 100644 --- a/functions/command_monitor.sh +++ b/functions/command_monitor.sh @@ -83,7 +83,7 @@ fn_monitor_tmux(){ done exit else - fn_print_fail "Checking session: FAIL" + fn_print_fail "Checking session: " fn_print_fail_eol_nl fn_scriptlog "Checking session: FAIL" fn_monitor_email_notification diff --git a/functions/command_start.sh b/functions/command_start.sh index e1e324caf..e9fa5d0d0 100644 --- a/functions/command_start.sh +++ b/functions/command_start.sh @@ -10,69 +10,63 @@ local modulename="Starting" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_start_teamspeak3(){ -check.sh -info_ts3status.sh + check.sh + info_ts3status.sh + + if [ "${ts3status}" != "Server is running" ]; then + # Will check for updates is updateonstart is yes + if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then + update_check.sh + fi + fi -if [ "${ts3status}" != "Server is running" ]; then - # Will check for updates is updateonstart is yes - if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then - update_check.sh - fi -fi + if [ ! -e "${servercfgfullpath}" ]; then + fn_print_warn_nl "${servercfgfullpath} is missing" + fn_scriptlog "${servercfgfullpath} is missing" + echo " * Creating blank ${servercfg}" + fn_scriptlog "Creating blank ${servercfg}" + sleep 2 + echo " * ${servercfg} can remain blank by default." + fn_scriptlog "${servercfgfullpath} can remain blank by default." + sleep 2 + echo " * ${servercfg} is located in ${servercfgfullpath}." + fn_scriptlog "${servercfg} is located in ${servercfgfullpath}." + sleep 5 + touch "${servercfgfullpath}" + fi -if [ ! -e "${servercfgfullpath}" ]; then - fn_print_warn "${servercfgfullpath} is missing" - fn_scriptlog "${servercfgfullpath} is missing" - sleep 2 - echo -en "\n" - echo " * Creating blank ${servercfg}" - fn_scriptlog "Creating blank ${servercfg}" - sleep 2 - echo " * ${servercfg} can remain blank by default." - fn_scriptlog "${servercfgfullpath} can remain blank by default." - sleep 2 - echo " * ${servercfg} is located in ${servercfgfullpath}." - fn_scriptlog "${servercfg} is located in ${servercfgfullpath}." - sleep 5 - touch "${servercfgfullpath}" -fi + logs.sh -logs.sh + fn_print_dots "${servername}" + fn_scriptlog "${servername}" + sleep 1 -fn_print_dots "${servername}" -fn_scriptlog "${servername}" -sleep 1 + if [ "${ts3status}" == "Server is running" ]; then + fn_print_info_nl "${servername} is already running" + fn_scriptlog "${servername} is already running" + exit + fi -if [ "${ts3status}" == "Server is running" ]; then - fn_print_info "${servername} is already running" - fn_scriptlog "${servername} is already running" + mv "${scriptlog}" "${scriptlogdate}" + # Create lock file + date > "${rootdir}/${lockselfname}" + cd "${executabledir}" + if [ "${ts3serverpass}" == "1" ];then + ./ts3server_startscript.sh start serveradmin_password="${newpassword}" + else + ./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1 + fi sleep 1 - echo -en "\n" - exit -fi - -mv "${scriptlog}" "${scriptlogdate}" -# Create lock file -date > "${rootdir}/${lockselfname}" -cd "${executabledir}" -if [ "${ts3serverpass}" == "1" ];then - ./ts3server_startscript.sh start serveradmin_password="${newpassword}" -else - ./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1 -fi -sleep 1 -info_ts3status.sh -if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - fn_print_fail_nl "Unable to start ${servername}" - fn_scriptlog "Unable to start ${servername}" - echo -e " Check log files: ${rootdir}/log" - exit 1 -else - fn_print_ok "${servername}" - fn_scriptlog "Started ${servername}" -fi -sleep 0.5 -echo -en "\n" + info_ts3status.sh + if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + fn_print_fail_nl "Unable to start ${servername}" + fn_scriptlog "Unable to start ${servername}" + echo -e " Check log files: ${rootdir}/log" + exit 1 + else + fn_print_ok_nl "${servername}" + fn_scriptlog "Started ${servername}" + fi } fn_start_tmux(){ @@ -139,13 +133,11 @@ if [ "${tmuxwc}" -eq 0 ]; then echo "" echo "Command" echo "=================================" - echo "tmux new-session -d -s \"${servicename}\" \"${executable} ${parms}\"" - echo "tmux new-session -d -s \"${servicename}\" \"${executable} ${parms}\"" >> "${scriptlog}" + echo "tmux new-session -d -s \"${servicename}\" \"${executable} ${parms}\"" | tee -a "${scriptlog}" echo "" echo "Error" echo "=================================" - cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" - cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" >> "${scriptlog}" + cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" | tee -a "${scriptlog}" # Detected error http://gameservermanagers.com/issues if [ $(grep -c "Operation not permitted" "${scriptlogdir}/.${servicename}-tmux-error.tmp") ]; then diff --git a/functions/core_messages.sh b/functions/core_messages.sh index f6977f6e8..5e2b269f3 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -140,7 +140,7 @@ fn_print_error_nl(){ echo -e "\e[0;31mError!\e[0m $@" } -# Info! +# Infomation! fn_print_infomation(){ echo -en "\e[0;36mInfomation!\e[0m $@" } From 8153665d0fb4772e21ed295c64206df3206b28d9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 6 Mar 2016 17:27:50 +0000 Subject: [PATCH 259/643] run to exec --- JustCause2/jc2server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 2d4010e71..f92e74ebc 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -4,7 +4,7 @@ # Author: Daniel Gibbs # Website: http://gameservermanagers.com if [ -f ".dev-debug" ]; then - run 5>dev-debug.log + exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi From 5518bff62984eda198a44518d83bbfbc3246f070 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 6 Mar 2016 17:32:35 +0000 Subject: [PATCH 260/643] updated date --- functions/check_root.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/check_root.sh b/functions/check_root.sh index 8f2e5ed54..135c751cf 100644 --- a/functions/check_root.sh +++ b/functions/check_root.sh @@ -2,7 +2,7 @@ # LGSM check_root.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="060316" if [ $(whoami) = "root" ]; then fn_printfailnl "Do NOT run this script as root!" From a4ff32b29fab9e687f93e0778ad0092cbbc55ba4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 6 Mar 2016 17:39:06 +0000 Subject: [PATCH 261/643] Removed merge conflict --- functions/core_functions.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 878763b65..8e7b530c4 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -2,11 +2,7 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -<<<<<<< HEAD -lgsm_version="190216" -======= lgsm_version="270216" ->>>>>>> dlmanage # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. From 231febbebd5b8b3112a1246fd720adde41c89107 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 6 Mar 2016 17:52:44 +0000 Subject: [PATCH 262/643] removed path from curl check --- JustCause2/jc2server | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament99/ut99server | 2 +- functions/core_dl.sh | 2 +- functions/core_functions.sh | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index f92e74ebc..29666b60d 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -92,7 +92,7 @@ if [ ! -f "${filedir}/${filename}" ]; then fi echo -e " fetching ${filename}...\c" # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" for curlcmd in ${curlpaths} do if [ -x "${curlcmd}" ]; then diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 444e16871..5888477b3 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -87,7 +87,7 @@ if [ ! -f "${filedir}/${filename}" ]; then fi echo -e " fetching ${filename}...\c" # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" for curlcmd in ${curlpaths} do if [ -x "${curlcmd}" ]; then diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 36704e0b2..edd64523e 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -87,7 +87,7 @@ if [ ! -f "${filedir}/${filename}" ]; then fi echo -e " fetching ${filename}...\c" # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" for curlcmd in ${curlpaths} do if [ -x "${curlcmd}" ]; then diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 98e6ebee4..579fb2788 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -100,7 +100,7 @@ if [ ! -f "${filedir}/${filename}" ]; then fi # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" for curlcmd in ${curlpaths} do if [ -x "${curlcmd}" ]; then diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 8e7b530c4..ccea1f07d 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -38,7 +38,7 @@ if [ ! -f "${filedir}/${filename}" ]; then fi echo -e " fetching ${filename}...\c" # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl $(echo $PATH | sed "s/\([:]\|\$\)/\/curl /g")" + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" for curlcmd in ${curlpaths} do if [ -x "${curlcmd}" ]; then From 86ac8014b3995e7b0f0a87dd248b64e1052fdbed Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 6 Mar 2016 18:00:33 +0000 Subject: [PATCH 263/643] Fixed update check bug --- functions/command_monitor.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_monitor.sh b/functions/command_monitor.sh index 14e4c3c35..abe42cf38 100644 --- a/functions/command_monitor.sh +++ b/functions/command_monitor.sh @@ -23,7 +23,7 @@ fn_monitor_check_lockfile(){ fn_monitor_check_update(){ # Monitor will not check if update is running. updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) - if [ "${updatecheck}" >= "0" ]; then + if [ "${updatecheck}" != "0" ]; then fn_print_info_nl "SteamCMD is currently checking for updates" fn_scriptlog "SteamCMD is currently checking for updates" sleep 1 @@ -70,7 +70,7 @@ fn_monitor_tmux(){ # checks that tmux session is running tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") if [ "${tmuxwc}" == "1" ]; then - fn_print_ok "Checking session: OK" + fn_print_ok "Checking session" fn_print_ok_eol_nl fn_scriptlog "Checking session: OK" # runs gsquery check on game with specific engines. From 3b63636dee52d01b087ee2ba38897cb6224ffd12 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 6 Mar 2016 18:03:10 +0000 Subject: [PATCH 264/643] Added coloured checking message --- functions/command_monitor.sh | 7 ++++--- functions/core_messages.sh | 9 +++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/functions/command_monitor.sh b/functions/command_monitor.sh index abe42cf38..066d0dbdf 100644 --- a/functions/command_monitor.sh +++ b/functions/command_monitor.sh @@ -23,7 +23,7 @@ fn_monitor_check_lockfile(){ fn_monitor_check_update(){ # Monitor will not check if update is running. updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) - if [ "${updatecheck}" != "0" ]; then + if [ "${updatecheck}" >= "1" ]; then fn_print_info_nl "SteamCMD is currently checking for updates" fn_scriptlog "SteamCMD is currently checking for updates" sleep 1 @@ -32,7 +32,8 @@ fn_monitor_check_update(){ } fn_monitor_msg_checking(){ - fn_print_dots "Checking session: CHECKING" + fn_print_dots "Checking session: " + fn_print_checking_eol fn_scriptlog "Checking session: CHECKING" sleep 1 } @@ -70,7 +71,7 @@ fn_monitor_tmux(){ # checks that tmux session is running tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") if [ "${tmuxwc}" == "1" ]; then - fn_print_ok "Checking session" + fn_print_ok "Checking session: OK" fn_print_ok_eol_nl fn_scriptlog "Checking session: OK" # runs gsquery check on game with specific engines. diff --git a/functions/core_messages.sh b/functions/core_messages.sh index 5e2b269f3..54b245193 100644 --- a/functions/core_messages.sh +++ b/functions/core_messages.sh @@ -176,6 +176,15 @@ fn_print_querying_eol_nl(){ echo -e "\e[0;36mQUERYING\e[0m" } +# CHECKING for end of line +fn_print_checking_eol(){ + echo -en "\e[0;36mCHECKING\e[0m" +} + +fn_print_checking_eol_nl(){ + echo -e "\e[0;36mCHECKING\e[0m" +} + # CANCELED for end of line fn_print_canceled_eol(){ echo -en "\e[0;33mCANCELED\e[0m" From ff8efabf528c8f24af5a5fa61beb33b579a7db75 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sun, 6 Mar 2016 23:34:53 +0100 Subject: [PATCH 265/643] corrected check for fn_parms --- functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_details.sh b/functions/command_details.sh index 5fb446ddb..6ec515d00 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -636,7 +636,7 @@ fn_details_disk fn_details_gameserver fn_details_backup # Some game servers do not have parms. -if [ "${gamename}" != "Teamspeak 3" ]||[ "${engine}" != "avalanche" ]||[ "${engine}" != "dontstarve" ]||[ "${engine}" != "projectzomboid" ]; then +if [ "${gamename}" != "Teamspeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]; then fn_parms fn_details_commandlineparms fi From 19f978e33032d71d76fa5d6d138707334ba78c89 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sun, 6 Mar 2016 23:42:39 +0100 Subject: [PATCH 266/643] corrected check for fn_parms --- functions/command_details.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/functions/command_details.sh b/functions/command_details.sh index 32965eb2e..396cf487c 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -636,12 +636,11 @@ fn_details_disk fn_details_gameserver fn_details_backup # Some game servers do not have parms. -if [ "${gamename}" != "Teamspeak 3" ]||[ "${engine}" != "avalanche" ]||[ "${engine}" != "dontstarve" ]||[ "${engine}" != "projectzomboid" ]; then +if [ "${gamename}" != "Teamspeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]; then fn_parms fn_details_commandlineparms fi - # Display details depending on game or engine. if [ "${engine}" == "avalanche" ]; then fn_details_avalanche From a00cda5cb55b700099e5c54faca28c912e20d485 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 8 Mar 2016 22:25:00 +0100 Subject: [PATCH 267/643] Put back physiterations to 4, true default value I checked the default value, it's 4, not 2. A value of 2 is causing issue with physics while running complex builds' physics, a value of 4 fixes it. To check the default value, input gmod_physiterations into your gmod console gmod_physiterations "gmod_physiterations" = "2" (def. 4) --- GarrysMod/cfg/lgsm-default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GarrysMod/cfg/lgsm-default.cfg b/GarrysMod/cfg/lgsm-default.cfg index 2e61eb6a2..a1e2fd4d6 100644 --- a/GarrysMod/cfg/lgsm-default.cfg +++ b/GarrysMod/cfg/lgsm-default.cfg @@ -38,7 +38,7 @@ sv_allow_wait_command 0 sv_allow_voice_from_file 0 sv_turbophysics 0 sv_max_usercmd_future_ticks 12 -gmod_physiterations 2 +gmod_physiterations 4 sv_client_min_interp_ratio 1 sv_client_max_interp_ratio 2 think_limit 20 From 841a65b2f7105bc174674703101cb4a24d2d9a64 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 12 Mar 2016 23:46:45 +0000 Subject: [PATCH 268/643] moved functions to lgsm dir --- JustCause2/jc2server | 1 + {functions => lgsm/functions}/README.md | 0 lgsm/functions/check.sh | 67 ++ lgsm/functions/check_config.sh | 17 + lgsm/functions/check_deps.sh | 218 +++++ lgsm/functions/check_ip.sh | 33 + lgsm/functions/check_logs.sh | 16 + lgsm/functions/check_root.sh | 13 + lgsm/functions/check_steamcmd.sh | 73 ++ lgsm/functions/check_system_dir.sh | 13 + lgsm/functions/check_tmux.sh | 20 + lgsm/functions/command_backup.sh | 64 ++ lgsm/functions/command_console.sh | 48 + lgsm/functions/command_debug.sh | 59 ++ lgsm/functions/command_details.sh | 682 ++++++++++++++ lgsm/functions/command_dev_debug.sh | 17 + .../functions}/command_dev_detect_deps.sh | 0 lgsm/functions/command_email_test.sh | 22 + .../functions}/command_fastdl.sh | 0 lgsm/functions/command_install.sh | 38 + lgsm/functions/command_monitor.sh | 110 +++ lgsm/functions/command_start.sh | 182 ++++ lgsm/functions/command_stop.sh | 217 +++++ lgsm/functions/command_ts3_server_pass.sh | 62 ++ .../functions}/command_update.sh | 0 lgsm/functions/command_update_functions.sh | 37 + lgsm/functions/command_validate.sh | 47 + .../functions}/compress_unreal2_maps.sh | 0 .../functions}/compress_ut99_maps.sh | 0 lgsm/functions/core_dl.sh | 202 ++++ lgsm/functions/core_functions.sh | 454 +++++++++ lgsm/functions/core_getopt.sh | 441 +++++++++ lgsm/functions/core_messages.sh | 204 ++++ lgsm/functions/email.sh | 68 ++ lgsm/functions/fix.sh | 75 ++ lgsm/functions/fix_arma3.sh | 13 + lgsm/functions/fix_csgo.sh | 43 + lgsm/functions/fix_dst.sh | 16 + {functions => lgsm/functions}/fix_ins.sh | 0 {functions => lgsm/functions}/fix_kf.sh | 0 lgsm/functions/fix_ro.sh | 27 + lgsm/functions/fix_steamcmd.sh | 41 + lgsm/functions/fix_ut2k4.sh | 27 + lgsm/functions/fix_ut99.sh | 25 + {functions => lgsm/functions}/fn_functions | 0 {functions => lgsm/functions}/fn_getopt | 0 lgsm/functions/fn_update_functions | 22 + lgsm/functions/gsquery.py | 125 +++ lgsm/functions/info_config.sh | 868 ++++++++++++++++++ {functions => lgsm/functions}/info_distro.sh | 0 lgsm/functions/info_glibc.sh | 71 ++ .../functions}/info_ts3status.sh | 0 lgsm/functions/install_complete.sh | 21 + lgsm/functions/install_config.sh | 349 +++++++ lgsm/functions/install_gslt.sh | 37 + .../functions}/install_gsquery.sh | 0 lgsm/functions/install_header.sh | 16 + lgsm/functions/install_logs.sh | 43 + lgsm/functions/install_retry.sh | 16 + lgsm/functions/install_server_dir.sh | 32 + lgsm/functions/install_server_files.sh | 110 +++ lgsm/functions/install_steamcmd.sh | 15 + lgsm/functions/install_ts3.sh | 82 ++ lgsm/functions/install_ts3db.sh | 71 ++ lgsm/functions/install_ut2k4_key.sh | 28 + lgsm/functions/logs.sh | 102 ++ lgsm/functions/monitor_gsquery.sh | 93 ++ lgsm/functions/update_check.sh | 326 +++++++ lgsm/functions/update_dl.sh | 83 ++ 69 files changed, 6202 insertions(+) rename {functions => lgsm/functions}/README.md (100%) create mode 100644 lgsm/functions/check.sh create mode 100644 lgsm/functions/check_config.sh create mode 100644 lgsm/functions/check_deps.sh create mode 100644 lgsm/functions/check_ip.sh create mode 100644 lgsm/functions/check_logs.sh create mode 100644 lgsm/functions/check_root.sh create mode 100644 lgsm/functions/check_steamcmd.sh create mode 100644 lgsm/functions/check_system_dir.sh create mode 100644 lgsm/functions/check_tmux.sh create mode 100644 lgsm/functions/command_backup.sh create mode 100644 lgsm/functions/command_console.sh create mode 100644 lgsm/functions/command_debug.sh create mode 100644 lgsm/functions/command_details.sh create mode 100644 lgsm/functions/command_dev_debug.sh rename {functions => lgsm/functions}/command_dev_detect_deps.sh (100%) create mode 100644 lgsm/functions/command_email_test.sh rename {functions => lgsm/functions}/command_fastdl.sh (100%) create mode 100644 lgsm/functions/command_install.sh create mode 100644 lgsm/functions/command_monitor.sh create mode 100644 lgsm/functions/command_start.sh create mode 100644 lgsm/functions/command_stop.sh create mode 100644 lgsm/functions/command_ts3_server_pass.sh rename {functions => lgsm/functions}/command_update.sh (100%) create mode 100644 lgsm/functions/command_update_functions.sh create mode 100644 lgsm/functions/command_validate.sh rename {functions => lgsm/functions}/compress_unreal2_maps.sh (100%) rename {functions => lgsm/functions}/compress_ut99_maps.sh (100%) create mode 100644 lgsm/functions/core_dl.sh create mode 100644 lgsm/functions/core_functions.sh create mode 100644 lgsm/functions/core_getopt.sh create mode 100644 lgsm/functions/core_messages.sh create mode 100644 lgsm/functions/email.sh create mode 100644 lgsm/functions/fix.sh create mode 100644 lgsm/functions/fix_arma3.sh create mode 100644 lgsm/functions/fix_csgo.sh create mode 100644 lgsm/functions/fix_dst.sh rename {functions => lgsm/functions}/fix_ins.sh (100%) rename {functions => lgsm/functions}/fix_kf.sh (100%) create mode 100644 lgsm/functions/fix_ro.sh create mode 100644 lgsm/functions/fix_steamcmd.sh create mode 100644 lgsm/functions/fix_ut2k4.sh create mode 100644 lgsm/functions/fix_ut99.sh rename {functions => lgsm/functions}/fn_functions (100%) rename {functions => lgsm/functions}/fn_getopt (100%) create mode 100644 lgsm/functions/fn_update_functions create mode 100644 lgsm/functions/gsquery.py create mode 100644 lgsm/functions/info_config.sh rename {functions => lgsm/functions}/info_distro.sh (100%) create mode 100644 lgsm/functions/info_glibc.sh rename {functions => lgsm/functions}/info_ts3status.sh (100%) create mode 100644 lgsm/functions/install_complete.sh create mode 100644 lgsm/functions/install_config.sh create mode 100644 lgsm/functions/install_gslt.sh rename {functions => lgsm/functions}/install_gsquery.sh (100%) create mode 100644 lgsm/functions/install_header.sh create mode 100644 lgsm/functions/install_logs.sh create mode 100644 lgsm/functions/install_retry.sh create mode 100644 lgsm/functions/install_server_dir.sh create mode 100644 lgsm/functions/install_server_files.sh create mode 100644 lgsm/functions/install_steamcmd.sh create mode 100644 lgsm/functions/install_ts3.sh create mode 100644 lgsm/functions/install_ts3db.sh create mode 100644 lgsm/functions/install_ut2k4_key.sh create mode 100644 lgsm/functions/logs.sh create mode 100644 lgsm/functions/monitor_gsquery.sh create mode 100644 lgsm/functions/update_check.sh create mode 100644 lgsm/functions/update_dl.sh diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 29666b60d..ccf5e3c31 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -52,6 +52,7 @@ selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" +libdir="${lgsmdir}/lib" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" diff --git a/functions/README.md b/lgsm/functions/README.md similarity index 100% rename from functions/README.md rename to lgsm/functions/README.md diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh new file mode 100644 index 000000000..69f62f0ad --- /dev/null +++ b/lgsm/functions/check.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# LGSM fn_check function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="060316" + +# Description: Overall function for managing checks. +# Runs checks that will either halt on or fix an issue. + +# Every command that requires checks just references check.sh +# check.sh selects which checks to run by using arrays + +check_root.sh + +if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname}" != "command_update_functions.sh" ]; then + check_system_dir.sh +fi + +local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh update_check.sh command_validate.sh command_update_functions.sh command_email_test.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_logs.sh + fi +done + +local allowed_commands_array=( command_debug.sh command_start.sh command_stop.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_deps.sh + fi +done + +local allowed_commands_array=( command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_ip.sh + fi +done + +local allowed_commands_array=( update_check.sh command_debug.sh command_start.sh command_validate.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + if [ -n "${appid}" ]; then + check_steamcmd.sh + fi + fi +done + +local allowed_commands_array=( command_console.sh command_start.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_tmux.sh + fi +done + +local allowed_commands_array=( command_console.sh command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_config.sh + fi +done \ No newline at end of file diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh new file mode 100644 index 000000000..c329cca95 --- /dev/null +++ b/lgsm/functions/check_config.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# LGSM check_config.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="060116" + +# Description: If server config missing warn user. + +if [ ! -e "${servercfgfullpath}" ]; then + if [ "${gamename}" != "Hurtworld" ]; then + fn_print_warn_nl "Config file missing!" + echo "${servercfgfullpath}" + fn_scriptlog "Configuration file missing!" + fn_scriptlog "${servercfgfullpath}" + sleep 2 + fi +fi \ No newline at end of file diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh new file mode 100644 index 000000000..56c8c711c --- /dev/null +++ b/lgsm/functions/check_deps.sh @@ -0,0 +1,218 @@ +#!/bin/bash +# LGSM check_deps.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="060316" + +# Description: Checks that the requires dependencies are installed for LGSM. + + +fn_deps_detector(){ + # Checks if dependency is missing + if [ -n "$(command -v dpkg-query)" ]; then + dpkg-query -W -f='${Status}' ${deptocheck} 2>/dev/null| grep -q -P '^install ok installed$' + depstatus=$? + elif [ -n "$(command -v yum)" ]; then + yum -q list installed ${deptocheck} > /dev/null 2>&1 + depstatus=$? + fi + if [ "${depstatus}" == "0" ]; then + missingdep=0 + if [ "${function_selfname}" == "command_install.sh" ]; then + echo -e "\e[0;32m${deptocheck}\e[0m" + sleep 0.5 + fi + else + # if missing dependency is found + missingdep=1 + if [ "${function_selfname}" == "command_install.sh" ]; then + echo -e "\e[0;31m${deptocheck}\e[0m" + sleep 0.5 + fi + fi + + # Missing dependencies are added to array_deps_missing + if [ "${missingdep}" == "1" ]; then + array_deps_missing+=("${deptocheck}") + fi +} + +fn_deps_email(){ + # Adds postfix to required dependencies if email notification is enabled + if [ "${emailnotification}" == "on" ]; then + if [ -f /usr/bin/mailx ]; then + if [ -d /etc/exim4 ]; then + array_deps_required+=( exim4 ) + elif [ -d /etc/sendmail ]; then + array_deps_required+=( sendmail ) + elif [ -n "$(command -v dpkg-query)" ]; then + array_deps_required+=( mailutils postfix ) + elif [ -n "$(command -v yum)" ]; then + array_deps_required+=( mailx postfix ) + fi + else + if [ -n "$(command -v dpkg-query)" ]; then + array_deps_required+=( mailutils postfix ) + elif [ -n "$(command -v yum)" ]; then + array_deps_required+=( mailx postfix ) + fi + fi + fi +} + +fn_found_missing_deps(){ + if [ "${#array_deps_missing[@]}" != "0" ]; then + fn_print_dots "Checking dependencies" + sleep 2 + fn_print_warn "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" + fn_scriptlog "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" + sleep 1 + echo -e "" + sudo -n true > /dev/null 2>&1 + if [ $? -eq 0 ]; then + fn_print_info_nl "Attempting to install missing dependencies automatically" + echo -en ".\r" + sleep 1 + echo -en "..\r" + sleep 1 + echo -en "...\r" + sleep 1 + echo -en " \r" + if [ -n "$(command -v dpkg-query)" ]; then + echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" + elif [ -n "$(command -v yum)" ]; then + echo "yum install ${array_deps_missing[@]}" + fi + else + echo "" + fn_print_infomation_nl "$(whoami) does not have sudo access. Please manually install dependencies" + fn_scriptlog "$(whoami) does not have sudo access. Please manually install dependencies" + echo "" + if [ -n "$(command -v dpkg-query)" ]; then + echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" + elif [ -n "$(command -v yum)" ]; then + echo "yum install ${array_deps_missing[@]}" + fi + echo "" + fi + if [ "${function_selfname}" == "command_install.sh" ]; then + sleep 5 + fi + fi +} + +fn_check_loop(){ + # Loop though required depenencies + for deptocheck in "${array_deps_required[@]}" + do + fn_deps_detector + done + + # user to be informaed of any missing dependecies + fn_found_missing_deps +} + +if [ "${function_selfname}" == "command_install.sh" ]; then + echo "" + echo "Checking Dependecies" + echo "=================================" +fi + + +# Check will only run if using apt-get or yum +if [ -n "$(command -v dpkg-query)" ]; then + # Generate array of missing deps + array_deps_missing=() + + # LGSM requirement for curl + array_deps_required=( curl ca-certificates ) + + # All servers except ts3 require tmux + if [ "${executable}" != "./ts3server_startscript.sh" ]; then + array_deps_required+=( tmux ) + fi + + # All servers except ts3 & mumble require libstdc++6, lib32gcc1 + if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then + if [ "${arch}" == "x86_64" ]; then + array_deps_required+=( lib32gcc1 libstdc++6:i386 ) + else + array_deps_required+=( libstdc++6:i386 ) + fi + fi + + # Game Specific requirements + + # Spark + if [ "${engine}" == "spark" ]; then + array_deps_required+=( speex:i386 libtbb2 ) + # 7 Days to Die + elif [ "${gamename}" == "7 Days To Die" ]; then + array_deps_required+=( telnet expect ) + # No More Room in Hell + elif [ "${gamename}" == "No More Room in Hell" ]; then + array_deps_required+=( lib32tinfo5 ) + # Brainbread 2 and Don't Starve Together + elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then + array_deps_required+=( libcurl4-gnutls-dev:i386 ) + elif [ "${engine}" == "projectzomboid" ]; then + array_deps_required+=( openjdk-7-jre ) + # Unreal engine + elif [ "${executable}" == "./ucc-bin" ]; then + #UT2K4 + if [ -f "${executabledir}/ut2004-bin" ]; then + array_deps_required+=( libsdl1.2debian libstdc++5:i386 bzip2 ) + #UT99 + else + array_deps_required+=( libsdl1.2debian bzip2 ) + fi + fi + fn_deps_email + fn_check_loop + +elif [ -n "$(command -v yum)" ]; then + # Generate array of missing deps + array_deps_missing=() + + # LGSM requirement for curl + array_deps_required=( curl ) + + # All servers except ts3 require tmux + if [ "${executable}" != "./ts3server_startscript.sh" ]; then + array_deps_required+=( tmux ) + fi + + # All servers excelts ts3 & mumble require glibc.i686 libstdc++.i686 + if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then + array_deps_required+=( glibc.i686 libstdc++.i686 ) + fi + + # Game Specific requirements + + # Spark + if [ "${engine}" == "spark" ]; then + array_deps_required+=( speex.i686 tbb.i686 ) + # 7 Days to Die + elif [ "${gamename}" == "7 Days To Die" ]; then + array_deps_required+=( telnet expect ) + # No More Room in Hell + elif [ "${gamename}" == "No More Room in Hell" ]; then + array_deps_required+=( ncurses-libs.i686 ) + # Brainbread 2 and Don't Starve Together + elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then + array_deps_required+=( libcurl.i686 ) + elif [ "${engine}" == "projectzomboid" ]; then + array_deps_required+=( java-1.7.0-openjdk ) + # Unreal engine + elif [ "${executable}" == "./ucc-bin" ]; then + #UT2K4 + if [ -f "${executabledir}/ut2004-bin" ]; then + array_deps_required+=( compat-libstdc++-33.i686 SDL.i686 bzip2 ) + #UT99 + else + array_deps_required+=( SDL.i686 bzip2 ) + fi + fi + fn_deps_email + fn_check_loop +fi \ No newline at end of file diff --git a/lgsm/functions/check_ip.sh b/lgsm/functions/check_ip.sh new file mode 100644 index 000000000..2a5ae5794 --- /dev/null +++ b/lgsm/functions/check_ip.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# LGSM check_ip.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Automatically identifies the server interface IP. +# If multiple interfaces are detected the user will need to manualy set using ip="0.0.0.0". + +if [ "${gamename}" != "Teamspeak 3" ]; then + if [ ! -f "/bin/ip" ]; then + ipcommand="/sbin/ip" + else + ipcommand="ip" + fi + getip=$(${ipcommand} -o -4 addr|awk '{print $4}'|grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}'|grep -v 127.0.0) + getipwc=$(${ipcommand} -o -4 addr|awk '{print $4}'|grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}'|grep -vc 127.0.0) + + if [ "${ip}" == "0.0.0.0" ]||[ "${ip}" == "" ]; then + if [ "${getipwc}" -ge "2" ]; then + fn_print_warn "Multiple active network interfaces found.\n\n" + echo -en "Manually specify the IP you want to use within the ${selfname} script.\n" + echo -en "Set ip=\"0.0.0.0\" to one of the following:\n" + echo -en "${getip}\n" + echo -en "" + echo -en "http://gameservermanagers.com/network-interfaces\n" + echo -en "" + exit 1 + else + ip=${getip} + fi + fi +fi diff --git a/lgsm/functions/check_logs.sh b/lgsm/functions/check_logs.sh new file mode 100644 index 000000000..9b4f41324 --- /dev/null +++ b/lgsm/functions/check_logs.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# LGSM check_logs.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Checks that log files exist on server start + +# Create dir's for the script and console logs +if [ ! -d "${scriptlogdir}" ]; then + fn_print_dots "Checking for log files" + sleep 1 + fn_print_info_nl "Checking for log files: Creating log files" + checklogs=1 + install_logs.sh +fi diff --git a/lgsm/functions/check_root.sh b/lgsm/functions/check_root.sh new file mode 100644 index 000000000..01c89b629 --- /dev/null +++ b/lgsm/functions/check_root.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# LGSM check_root.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="060316" + +if [ $(whoami) = "root" ]; then + fn_print_fail_nl "Do NOT run this script as root!" + if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "${selfname} attempted to run as root." + fi + exit 1 +fi diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh new file mode 100644 index 000000000..81e0f31c4 --- /dev/null +++ b/lgsm/functions/check_steamcmd.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# LGSM check_steamcmd.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="160316" + +# Description: Checks SteamCMD is installed and correct. + + +fn_install_steamcmd(){ + if [ ! -d "${steamcmddir}" ]; then + mkdir -v "${steamcmddir}" + fi + fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" + fn_dl_extract "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" "${steamcmddir}" + chmod +x "${steamcmddir}/steamcmd.sh" +} + + +fn_check_steamcmd_user(){ + # Checks steamuser is setup. + if [ "${steamuser}" == "username" ]; then + fn_print_fail_nl "Steam login not set. Update steamuser." + echo " * Change steamuser=\"username\" to a valid steam login." + if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login." + exit 1 + fi + fi + # Anonymous user is set if steamuser is missing + if [ -z "${steamuser}" ]; then + fn_print_warn_nl "Steam login not set. Using anonymous login." + if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "Steam login not set. Using anonymous login." + fi + steamuser="anonymous" + steampass="" + sleep 2 + fi +} + +fn_check_steamcmd_sh(){ + # Checks if SteamCMD exists when starting or updating a server. + # Installs if missing. + steamcmddir="${rootdir}/steamcmd" + if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then + if [ "${function_selfname}" == "command_install.sh" ]; then + fn_install_steamcmd + else + fn_print_warn_nl "SteamCMD is missing" + fn_scriptlog "SteamCMD is missing" + sleep 1 + fn_install_steamcmd + fi + elif [ "${function_selfname}" == "command_install.sh" ]; then + fn_print_infomation "SteamCMD is already installed..." + fn_print_ok_eol_nl + fi +} + +fn_check_steamcmd_guard(){ + if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then + # Checks that steamcmd is working correctly and will prompt Steam Guard if required. + "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit + if [ $? -ne 0 ]; then + fn_print_failure_nl "Error running SteamCMD" + fi + fi +} + +fn_check_steamcmd_user +fn_check_steamcmd_sh +fn_check_steamcmd_guard \ No newline at end of file diff --git a/lgsm/functions/check_system_dir.sh b/lgsm/functions/check_system_dir.sh new file mode 100644 index 000000000..d5d57e75b --- /dev/null +++ b/lgsm/functions/check_system_dir.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# LGSM check_system_dir.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +if [ ! -d "${systemdir}" ]; then + fn_print_fail_nl "Cannot access ${systemdir}: No such directory" + if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "Cannot access ${systemdir}: No such directory." + fi + exit 1 +fi diff --git a/lgsm/functions/check_tmux.sh b/lgsm/functions/check_tmux.sh new file mode 100644 index 000000000..49f43dd21 --- /dev/null +++ b/lgsm/functions/check_tmux.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# LGSM check_tmux.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Checks if tmux is installed as too many users do not RTFM or know how to use Google. + +if [ "$(command -v tmux)" ]||[ "$(which tmux >/dev/null 2>&1)" ]||[ -f "/usr/bin/tmux" ]||[ -f "/bin/tmux" ]; then + : +else + fn_print_fail_nl "Tmux not installed" + sleep 1 + fn_scriptlog "Tmux is not installed" + echo " * Tmux is required to run this server." + # Suitable passive agressive message + echo " * Please see the the following link." + echo " * http://gameservermanagers.com/tmux-not-found" + exit 127 +fi diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh new file mode 100644 index 000000000..d8d52f4bc --- /dev/null +++ b/lgsm/functions/command_backup.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# LGSM command_backup.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Creates a .tar.gz file in the backup directory. + +local modulename="Backup" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh +backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" +echo "" +echo "${gamename} Backup" +echo "============================" +echo "" +echo "The following backup will be created:" +echo "" +echo "${backupdir}/${backupname}.tar.gz" +echo "" +while true; do + read -p "Continue? [y/N]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; return;; + * ) echo "Please answer yes or no.";; +esac +done +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") +if [ "${tmuxwc}" -eq 1 ]; then + echo "" + fn_print_warning_nl "${servicename} is currently running." + sleep 1 + while true; do + read -p "Stop ${servicename} while running the backup? [y/N]" yn + case $yn in + [Yy]* ) command_stop.sh; break;; + [Nn]* ) break;; + * ) echo "Please answer yes or no.";; + esac + done +fi +fn_scriptlog "Started" +echo -en "starting backup.\r" +sleep 1 +echo -en "starting backup..\r" +sleep 1 +echo -en "starting backup...\r" +sleep 1 +echo -en "\n" +cd "${rootdir}" +if [ ! -d "${backupdir}" ]; then + mkdir -v "${backupdir}" +fi +tar -cvzf "${backupdir}/${backupname}.tar.gz" --exclude "${backupdir}" ./* +echo "" +echo "Backup created: ${backupdir}/${backupname}.tar.gz" +fn_scriptlog "Created: ${backupdir}/${backupname}.tar.gz" +sleep 1 +echo "" +fn_print_complete_nl "Complete." +fn_scriptlog "Complete" +echo "" diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh new file mode 100644 index 000000000..f7f2c1323 --- /dev/null +++ b/lgsm/functions/command_console.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# LGSM command_console.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Gives access to the server tmux console. + +local modulename="Console" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh +echo "" +echo "${gamename} Console" +echo "============================" +echo "" +echo "Press \"CTRL+b d\" to exit console." +fn_print_warning_nl "Do NOT press CTRL+c to exit." +echo "" +while true; do + read -e -i "y" -p "Continue? [y/N]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; return;; + * ) echo "Please answer yes or no.";; +esac +done +fn_print_dots "Starting" +sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") +if [ "${tmuxwc}" -eq 1 ]; then + fn_print_ok_nl "Starting" + fn_scriptlog "accessed" + sleep 1 + tmux attach-session -t ${servicename} +else + fn_print_fail_nl "Server not running" + fn_scriptlog "Failed to access: Server not running" + sleep 1 + while true; do + read -p "Do you want to start the server? [y/N]" yn + case $yn in + [Yy]* ) command_start.sh; break;; + [Nn]* ) break;; + * ) echo "Please answer yes or no.";; + esac + done +fi diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh new file mode 100644 index 000000000..baa93aec0 --- /dev/null +++ b/lgsm/functions/command_debug.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# LGSM command_debug.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Runs the server without tmux. Runs direct from the terminal. + +local modulename="Debug" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh +fix.sh +info_distro.sh +fn_parms +echo "" +echo "${gamename} Debug" +echo "============================" +echo "" +echo -e "Distro: ${os}" +echo -e "Arch: ${arch}" +echo -e "Kernel: ${kernel}" +echo -e "Hostname: $HOSTNAME" +echo "" +echo "Start parameters:" +if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + echo "${executable} ${parms} -debug" +else + echo "${executable} ${parms}" +fi +echo "" +echo -e "Use for identifying server issues only!" +echo -e "Press CTRL+c to drop out of debug mode." +fn_print_warning_nl "If ${servicename} is already running it will be stopped." +echo "" +while true; do + read -e -i "y" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; return;; + * ) echo "Please answer yes or no.";; +esac +done +fn_scriptlog "Starting debug" +fn_print_info_nl "Stopping any running servers" +fn_scriptlog "Stopping any running servers" +sleep 1 +command_stop.sh +fn_print_dots "Starting debug" +sleep 1 +fn_print_ok_nl "Starting debug" +fn_scriptlog "Started debug" +cd "${executabledir}" +fix.sh +if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + ${executable} ${parms} -debug +else + ${executable} ${parms} +fi \ No newline at end of file diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh new file mode 100644 index 000000000..5fb446ddb --- /dev/null +++ b/lgsm/functions/command_details.sh @@ -0,0 +1,682 @@ +#!/bin/bash +# LGSM command_details.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="230216" + +# Description: Displays server infomation. + +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +# Standard Details +# This applies to all engines + +fn_details_os(){ +echo -e "" +echo -e "\e[93mDistro Details\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +{ + echo -e "\e[34mDistro:\t\e[0m${os}" + echo -e "\e[34mArch:\t\e[0m${arch}" + echo -e "\e[34mKernel:\t\e[0m${kernel}" + echo -e "\e[34mHostname:\t\e[0m$HOSTNAME" + echo -e "\e[34mtmux:\t\e[0m${tmuxv}" + echo -e "\e[34mGLIBC:\t\e[0m${glibcv}" +} | column -s $'\t' -t +} + +fn_details_performance(){ +echo -e "" +echo -e "\e[93mPerformance\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +{ + echo -e "\e[34mUptime:\t\e[0m${days}d, ${hours}h, ${minutes}m" + echo -e "\e[34mAvg Load:\t\e[0m${load}" +} | column -s $'\t' -t +echo -e "" +{ + echo -e "\e[34mMem:\t\e[34mtotal\t used\t free\e[0m" + echo -e "\e[34mPhysical:\t\e[0m${physmemtotal}\t${physmemused}\t${physmemfree}\e[0m" + echo -e "\e[34mSwap:\t\e[0m${swaptotal}\t${swapused}\t${swapfree}\e[0m" +} | column -s $'\t' -t +} + +fn_details_disk(){ +echo -e "" +echo -e "\e[93mStorage\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +{ + echo -e "\e[34mFilesystem:\t\e[0m${filesystem}" + echo -e "\e[34mTotal:\t\e[0m${totalspace}" + echo -e "\e[34mUsed:\t\e[0m${usedspace}" + echo -e "\e[34mAvailable:\t\e[0m${availspace}" + echo -e "\e[34mServerfiles:\t\e[0m${filesdirdu}" + if [ -d "${backupdir}" ]; then + echo -e "\e[34mBackups:\t\e[0m${backupdirdu}" + fi +} | column -s $'\t' -t +} + +fn_details_gameserver(){ +echo -e "" + +## server details +echo -e "\e[92m${gamename} Server Details\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +{ + # server name + echo -e "\e[34mServer name:\t\e[0m${servername}" + + # server ip + echo -e "\e[34mServer IP:\t\e[0m${ip}:${port}" + + # rcon password + if [ -n "${rconpassword}" ]; then + echo -e "\e[34mRCON password:\t\e[0m${rconpassword}" + fi + + # server password + if [ -n "${serverpassword}" ]; then + echo -e "\e[34mServer password:\t\e[0m${serverpassword}" + fi + + # admin password + if [ -n "${adminpassword}" ]; then + echo -e "\e[34mAdmin password:\t\e[0m${adminpassword}" + fi + + # slots + if [ -n "${slots}" ]; then + echo -e "\e[34mSlots:\t\e[0m${slots}" + fi + + # game mode + if [ -n "${gamemode}" ]; then + echo -e "\e[34mGame mode:\t\e[0m${gamemode}" + fi + + # game world + if [ -n "${gameworld}" ]; then + echo -e "\e[34mGame world:\t\e[0m${gameworld}" + fi + + # tick rate + if [ -n "${tickrate}" ]; then + echo -e "\e[34mTick rate:\t\e[0m${tickrate}" + fi + + # online status + if [ "${gamename}" == "Teamspeak 3" ]; then + info_ts3status.sh + if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + echo -e "\e[34mStatus:\t\e[0;31mOFFLINE\e[0m" + else + echo -e "\e[34mStatus:\t\e[0;32mONLINE\e[0m" + fi + else + pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + echo -e "\e[34mStatus:\t\e[0;31mOFFLINE\e[0m" + else + echo -e "\e[34mStatus:\t\e[0;32mONLINE\e[0m" + fi + fi + + # teamspeak dbplugin + if [ -n "${dbplugin}" ]; then + echo -e "\e[34mdbplugin:\t\e[0m${dbplugin}" + fi +} | column -s $'\t' -t +echo -e "" + +## script details +echo -e "\e[92m${selfname} Script Details\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +{ + # service name + echo -e "\e[34mService name:\t\e[0m${servicename}" + + # script version + if [ -n "${version}" ]; then + echo -e "\e[34m${selfname} version:\t\e[0m${version}" + fi + + # script user + echo -e "\e[34mUser:\t\e[0m$(whoami)" + + # GLIBC required + if [ -n "${glibcrequired}" ]; then + if [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then + if [ "${glibcfix}" == "yes" ]; then + echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)" + else + echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}\e[0m(\e[0;32mGLIBC version too old\e[0m)" + fi + else + echo -e "\e[34mGLIBC required:\t\e[0;32m${glibcrequired}\e[0m" + fi + fi + + # email notification + if [ -n "${emailnotification}" ]; then + echo -e "\e[34mEmail notification:\t\e[0m${emailnotification}" + fi + + # update on start + if [ -n "${updateonstart}" ]; then + echo -e "\e[34mUpdate on start:\t\e[0m${updateonstart}" + fi + + # script location + echo -e "\e[34mLocation:\t\e[0m${rootdir}" + + # config file location + if [ -n "${servercfgfullpath}" ]; then + echo -e "\e[34mConfig file:\t\e[0m${servercfgfullpath}" + fi + + # network config file location (ARMA 3) + if [ -n "${networkcfgfullpath}" ]; then + echo -e "\e[34mNetwork config file:\t\e[0m${networkcfgfullpath}" + fi +} | column -s $'\t' -t +} + +fn_details_backup(){ +echo -e "" +echo -e "\e[92mBackups\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then + echo -e "No Backups created" +else + { + echo -e "\e[34mNo. of backups:\t\e[0m${backupcount}" + echo -e "\e[34mLatest backup:\e[0m" + echo -e "\e[34m date:\t\e[0m${lastbackupdate}" + echo -e "\e[34m file:\t\e[0m${lastbackup}" + echo -e "\e[34m size:\t\e[0m${lastbackupsize}" + } | column -s $'\t' -t +fi +} + +fn_details_commandlineparms(){ +echo -e "" +echo -e "\e[92mCommand-line Parameters\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "${executable} ${parms}" +} + +fn_details_statusbottom(){ +echo -e "" +if [ "${gamename}" == "Teamspeak 3" ]; then + if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + echo -e "\e[34mStatus: \e[0;31mOFFLINE\e[0m" + else + echo -e "\e[34mStatus: \e[0;32mONLINE\e[0m" + fi +else + pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + echo -e "\e[34mStatus: \e[0;31mOFFLINE\e[0m" + else + echo -e "\e[34mStatus: \e[0;32mONLINE\e[0m" + fi +fi +echo -e "" +} + +# Engine Specific details + +fn_details_avalanche(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep Jcmp-Server" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_dontstarve(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep dontstarve" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_projectzomboid(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep java" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + + +fn_details_realvirtuality(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep arma3server" +echo -e "" +if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then + echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." + echo -e "" +fi +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" + echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_idtech3(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep qzeroded" +echo -e "" +if [ -z "${port}" ]||[ -z "${rconport}" ]||[ -z "${statsport}" ]; then + echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." + echo -e "" +fi +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Rcon\tINBOUND\t${rconport}\tudp" + echo -e "> Stats\tINBOUND\t${statsport}\tudp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + + +fn_details_seriousengine35(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep Sam3_Dedicate" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\ttcp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_source(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the command-line" +echo -e "parameters in ${selfname}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep srcds_linux" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\ttcp/udp" + if [ -n "${sourcetvport}" ]; then + echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp" + fi + echo -e "< Client\tOUTBOUND\t${clientport}\tudp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_spark(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the command-line" +echo -e "parameters in ${selfname}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep server_linux3" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" +} | column -s $'\t' -t +echo -e "" +echo -e "\e[92m${servername} WebAdmin\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +{ + echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}/index.html" + echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}" + echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_starbound(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the command-line" +echo -e "parameters in ${selfname}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep starbound" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\ttcp" + echo -e "> Query\tINBOUND\t${queryport}\ttcp" + echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" +} | column -s $'\t' -t + +fn_details_statusbottom + +} + +fn_details_teamspeak3(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep ts3server" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Voice\tINBOUND\t${port}\tudp" + echo -e "> ServerQuery\tINBOUND\t${queryport}\ttcp" + echo -e "> File transfer\tINBOUND\t${fileport}\ttcp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_teeworlds(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the command-line" +echo -e "parameters in ${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep teeworlds_srv" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\ttcp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_terraria(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the command-line" +echo -e "parameters in ${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep terraia" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\ttcp" + echo -e "> Query\tINBOUND\t${queryport}\ttcp" + echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_sdtd(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep 7DaysToDie" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" + echo -e "> Telnet\tINBOUND\t${telnetport}\ttcp" +} | column -s $'\t' -t +echo -e "" +echo -e "\e[92m${servername} WebAdmin\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +{ + echo -e "\e[34mWebAdmin enabled:\t\e[0m${webadminenabled}" + echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}" + echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" +} | column -s $'\t' -t +echo -e "" +echo -e "\e[92m${servername} Telnet\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +{ + echo -e "\e[34mTelnet enabled:\t\e[0m${telnetenabled}" + echo -e "\e[34mTelnet address:\t\e[0m${ip} ${telnetport}" + echo -e "\e[34mTelnet password:\t\e[0m${telnetpass}" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_hurtworld(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "hwserver script" +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep Hurtworld" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + +} | column -s $'\t' -t +echo -e "" + +fn_details_statusbottom +} + +fn_details_rust(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "rustserver script" +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep Rust" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/Query\tINBOUND\t${port}\tudp" + echo -e "> RCON\tINBOUND\t${rconport}\ttcp" + +} | column -s $'\t' -t +echo -e "" + +fn_details_statusbottom +} + +fn_details_unreal(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep ucc-bin" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" + echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + if [ "${engine}" == "unreal" ]; then + echo -e "< UdpLink Port (random)\tOUTBOUND\t${udplinkport}+\tudp" + fi + if [ "${engine}" != "unreal" ] && [ "${appid}" != "223250" ]; then + echo -e "> GameSpy query\tINBOUND\t${gsqueryport}\tudp\tOldQueryPortNumber=${gsqueryport}" + fi + if [ "${appid}" == "215360" ]; then + echo -e "< Master server\tOUTBOUND\t28852\ttcp/udp" + else + echo -e "< Master server\tOUTBOUND\t28900/28902\ttcp/udp" + fi + if [ "${appid}" ]; then + if [ "${appid}" == "223250" ]; then + echo -e "< Steam\tOUTBOUND\t20610\tudp" + else + echo -e "< Steam\tOUTBOUND\t20660\tudp" + fi + fi + echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}" +} | column -s $'\t' -t +echo -e "" +echo -e "\e[92m${servername} WebAdmin\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +{ + echo -e "\e[34mWebAdmin enabled:\t\e[0m${webadminenabled}" + echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}" + echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}" + echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" +} | column -s $'\t' -t + +fn_details_statusbottom +} + +fn_details_ark(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "${servercfgfullpath}." +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep ShooterGame" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" + echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" + echo -e "> Query\tINBOUND\t${queryport}\tudp" +} | column -s $'\t' -t + +fn_details_statusbottom +} + + +# Run checks and gathers details to display. +check.sh +info_config.sh +info_distro.sh +info_glibc.sh +fn_details_os +fn_details_performance +fn_details_disk +fn_details_gameserver +fn_details_backup +# Some game servers do not have parms. +if [ "${gamename}" != "Teamspeak 3" ]||[ "${engine}" != "avalanche" ]||[ "${engine}" != "dontstarve" ]||[ "${engine}" != "projectzomboid" ]; then + fn_parms + fn_details_commandlineparms +fi + + +# Display details depending on game or engine. +if [ "${engine}" == "avalanche" ]; then + fn_details_avalanche +elif [ "${engine}" == "dontstarve" ]; then + fn_details_dontstarve +elif [ "${engine}" == "projectzomboid" ]; then + fn_details_projectzomboid +elif [ "${engine}" == "idtech3" ]; then + fn_details_idtech3 +elif [ "${engine}" == "realvirtuality" ]; then + fn_details_realvirtuality +elif [ "${engine}" == "seriousengine35" ]; then + fn_details_seriousengine35 +elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + fn_details_source +elif [ "${engine}" == "spark" ]; then + fn_details_spark +elif [ "${engine}" == "starbound" ]; then + fn_details_starbound +elif [ "${engine}" == "teeworlds" ]; then + fn_details_teeworlds +elif [ "${engine}" == "terraria" ]; then + fn_details_terraria +elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then + fn_details_unreal +elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then + fn_details_ark +elif [ "${gamename}" == "Hurtworld" ]; then + fn_details_hurtworld +elif [ "${gamename}" == "7 Days To Die" ]; then + fn_details_sdtd +elif [ "${gamename}" == "Teamspeak 3" ]; then + fn_details_teamspeak3 +elif [ "${gamename}" == "Rust" ]; then + fn_details_rust +else + fn_print_error_nl "Unable to detect server engine." +fi diff --git a/lgsm/functions/command_dev_debug.sh b/lgsm/functions/command_dev_debug.sh new file mode 100644 index 000000000..46bae900d --- /dev/null +++ b/lgsm/functions/command_dev_debug.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# LGSM dev_debug.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="281215" + +# Description: Dev only: enables debuging log to be saved to dev-debug.log. + +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +if [ -f ".dev-debug" ]; then + rm .dev-debug + fn_print_ok_nl "Disabled dev-debug" +else + date > .dev-debug + fn_print_ok_nl "Enabled dev-debug" +fi \ No newline at end of file diff --git a/functions/command_dev_detect_deps.sh b/lgsm/functions/command_dev_detect_deps.sh similarity index 100% rename from functions/command_dev_detect_deps.sh rename to lgsm/functions/command_dev_detect_deps.sh diff --git a/lgsm/functions/command_email_test.sh b/lgsm/functions/command_email_test.sh new file mode 100644 index 000000000..26a0b6a42 --- /dev/null +++ b/lgsm/functions/command_email_test.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# LGSM command_email_test.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Sends a test email notification. + +local modulename="Email" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +check.sh +info_config.sh +if [ "${emailnotification}" = "on" ]; then + fn_scriptlog "Sending test notification" + subject="${servicename} Email Test Notification - Testing ${servername}" + failurereason="Testing ${servicename} email notification" + actiontaken="Sent test email...hello is this thing on?" + email.sh +else + fn_print_fail_nl "Notifications not enabled" + fn_scriptlog "Notifications not enabled" +fi \ No newline at end of file diff --git a/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh similarity index 100% rename from functions/command_fastdl.sh rename to lgsm/functions/command_fastdl.sh diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh new file mode 100644 index 000000000..877896380 --- /dev/null +++ b/lgsm/functions/command_install.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# LGSM fn_install function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="260216" + +# Description: Overall function for the installer. + +local modulename="Install" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh +install_header.sh +install_server_dir.sh +install_logs.sh +check_deps.sh +# Download and install +if [ "${gamename}" == "Unreal Tournament 2004" ]; then + install_server_files.sh + install_ut2k4_key.sh +elif [ "${gamename}" == "Unreal Tournament 99" ]; then + install_server_files.sh +elif [ "${gamename}" == "Teamspeak 3" ]; then + install_ts3.sh +elif [ -n "${appid}" ]; then + install_steamcmd.sh + install_server_files.sh +fi + +# Configuration +install_config.sh +if [ "${gamename}" == "Counter Strike: Global Offensive" ]||[ "${gamename}" == "Team Fortress 2" ]||[ "${gamename}" == "BrainBread 2" ]; then + install_gslt.sh +elif [ "${gamename}" == "Teamspeak 3" ]; then + install_ts3db.sh +fi +fix.sh +install_complete.sh diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh new file mode 100644 index 000000000..066d0dbdf --- /dev/null +++ b/lgsm/functions/command_monitor.sh @@ -0,0 +1,110 @@ +#!/bin/bash +# LGSM command_monitor.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Monitors server by checking for running proccesses +# then passes to monitor_gsquery.sh. + +local modulename="Monitor" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +fn_monitor_check_lockfile(){ + # Monitor does not run it lockfile is not found + if [ ! -f "${rootdir}/${lockselfname}" ]; then + fn_print_info_nl "Disabled: No lock file found" + fn_scriptlog "Disabled: No lock file found" + echo " * To enable monitor run ./${selfname} start" + exit 1 + fi +} + +fn_monitor_check_update(){ + # Monitor will not check if update is running. + updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) + if [ "${updatecheck}" >= "1" ]; then + fn_print_info_nl "SteamCMD is currently checking for updates" + fn_scriptlog "SteamCMD is currently checking for updates" + sleep 1 + exit + fi +} + +fn_monitor_msg_checking(){ + fn_print_dots "Checking session: " + fn_print_checking_eol + fn_scriptlog "Checking session: CHECKING" + sleep 1 +} + +fn_monitor_email_notification(){ + # Email will be sent if enabled + if [ "${emailnotification}" = "on" ]; then + subject="${servicename} Monitor - Starting ${servername}" + failurereason="${servicename} process not running" + actiontaken="${servicename} has been restarted" + email.sh + fi +} + +fn_monitor_teamspeak3(){ + info_ts3status.sh + if [ "${ts3status}" = "Server is running" ]; then + fn_print_ok "Checking session: " + fn_print_ok_eol_nl + fn_scriptlog "Checking session: OK" + exit + else + fn_print_fail "Checking session: ${ts3status}: " + fn_print_fail_eol_nl + fn_scriptlog "Checking session: ${ts3status}: FAIL" + failurereason="${ts3status}" + fn_monitor_email_notification + fi + fn_scriptlog "Monitor is starting ${servername}" + sleep 1 + fn_restart +} + +fn_monitor_tmux(){ + # checks that tmux session is running + tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${tmuxwc}" == "1" ]; then + fn_print_ok "Checking session: OK" + fn_print_ok_eol_nl + fn_scriptlog "Checking session: OK" + # runs gsquery check on game with specific engines. + local allowed_engines_array=( avalanche goldsource realvirtuality source spark unity3d unreal unreal2 ) + for allowed_engine in "${allowed_engines_array[@]}" + do + if [ "${allowed_engine}" == "${function_selfname}" ]; then + monitor_gsquery.sh + fi + done + exit + else + fn_print_fail "Checking session: " + fn_print_fail_eol_nl + fn_scriptlog "Checking session: FAIL" + fn_monitor_email_notification + fn_scriptlog "Monitor is starting ${servername}" + sleep 1 + command_start.sh + fi +} + +check.sh +logs.sh +info_config.sh +fn_print_dots "${servername}" +fn_scriptlog "${servername}" +sleep 1 +fn_monitor_check_lockfile +fn_monitor_check_update +fn_monitor_msg_checking +if [ "${gamename}" == "Teamspeak 3" ]; then + fn_monitor_teamspeak3 +else + fn_monitor_tmux +fi \ No newline at end of file diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh new file mode 100644 index 000000000..e9fa5d0d0 --- /dev/null +++ b/lgsm/functions/command_start.sh @@ -0,0 +1,182 @@ +#!/bin/bash +# LGSM command_start.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="070116" + +# Description: Starts the server. + +local modulename="Starting" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +fn_start_teamspeak3(){ + check.sh + info_ts3status.sh + + if [ "${ts3status}" != "Server is running" ]; then + # Will check for updates is updateonstart is yes + if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then + update_check.sh + fi + fi + + if [ ! -e "${servercfgfullpath}" ]; then + fn_print_warn_nl "${servercfgfullpath} is missing" + fn_scriptlog "${servercfgfullpath} is missing" + echo " * Creating blank ${servercfg}" + fn_scriptlog "Creating blank ${servercfg}" + sleep 2 + echo " * ${servercfg} can remain blank by default." + fn_scriptlog "${servercfgfullpath} can remain blank by default." + sleep 2 + echo " * ${servercfg} is located in ${servercfgfullpath}." + fn_scriptlog "${servercfg} is located in ${servercfgfullpath}." + sleep 5 + touch "${servercfgfullpath}" + fi + + logs.sh + + fn_print_dots "${servername}" + fn_scriptlog "${servername}" + sleep 1 + + if [ "${ts3status}" == "Server is running" ]; then + fn_print_info_nl "${servername} is already running" + fn_scriptlog "${servername} is already running" + exit + fi + + mv "${scriptlog}" "${scriptlogdate}" + # Create lock file + date > "${rootdir}/${lockselfname}" + cd "${executabledir}" + if [ "${ts3serverpass}" == "1" ];then + ./ts3server_startscript.sh start serveradmin_password="${newpassword}" + else + ./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1 + fi + sleep 1 + info_ts3status.sh + if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + fn_print_fail_nl "Unable to start ${servername}" + fn_scriptlog "Unable to start ${servername}" + echo -e " Check log files: ${rootdir}/log" + exit 1 + else + fn_print_ok_nl "${servername}" + fn_scriptlog "Started ${servername}" + fi +} + +fn_start_tmux(){ +check.sh +fix.sh +info_config.sh +fn_parms +logs.sh + +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") +# Will check for updates if updateonstart is yes +if [ "${tmuxwc}" -eq 0 ]; then + if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then + update_check.sh + fi +fi + +fn_print_dots "${servername}" +fn_scriptlog "${servername}" +sleep 1 + +if [ "${tmuxwc}" -eq 0 ]; then + fn_scriptlog "Rotating log files" + if [ "${engine}" == "unreal2" ]; then + mv "${gamelog}" "${gamelogdate}" + fi + mv "${scriptlog}" "${scriptlogdate}" + mv "${consolelog}" "${consolelogdate}" +fi + +if [ "${tmuxwc}" -eq 1 ]; then + fn_print_info_nl "${servername} is already running" + fn_scriptlog "${servername} is already running" + exit +fi + +# Create lock file +date > "${rootdir}/${lockselfname}" +cd "${executabledir}" +tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp" +# tmux pipe-pane not supported in tmux versions < 1.6 +if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then + echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}" + echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" + echo "Currently installed: $(tmux -V)" >> "${consolelog}" +elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; then + echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}" + echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" + echo "Currently installed: $(tmux -V)" >> "${consolelog}" +else + touch "${consolelog}" + tmux pipe-pane -o -t "${servicename}" "exec cat >> '${consolelog}'" +fi +sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") +# If the server fails to start +if [ "${tmuxwc}" -eq 0 ]; then + fn_print_fail_nl "Unable to start ${servername}" + fn_scriptlog "Unable to start ${servername}" + sleep 1 + if [ -s "${scriptlogdir}/.${servicename}-tmux-error.tmp" ]; then + fn_print_fail_nl "Unable to start ${servername}: Tmux error:" + fn_scriptlog "Tmux error" + echo "" + echo "Command" + echo "=================================" + echo "tmux new-session -d -s \"${servicename}\" \"${executable} ${parms}\"" | tee -a "${scriptlog}" + echo "" + echo "Error" + echo "=================================" + cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" | tee -a "${scriptlog}" + + # Detected error http://gameservermanagers.com/issues + if [ $(grep -c "Operation not permitted" "${scriptlogdir}/.${servicename}-tmux-error.tmp") ]; then + echo "" + echo "Fix" + echo "=================================" + if [ ! $(grep "tty:" /etc/group|grep "$(whoami)") ]; then + echo "$(whoami) is not part of the tty group." + fn_scriptlog "$(whoami) is not part of the tty group." + group=$(grep tty /etc/group) + echo "" + echo " ${group}" + fn_scriptlog "${group}" + echo "" + echo "Run the following command with root privileges." + echo "" + echo " usermod -G tty $(whoami)" + echo "" + echo "http://gameservermanagers.com/tmux-op-perm" + fn_scriptlog "http://gameservermanagers.com/tmux-op-perm" + else + echo "No known fix currently. Please log an issue." + fn_scriptlog "No known fix currently. Please log an issue." + echo "http://gameservermanagers.com/issues" + fn_scriptlog "http://gameservermanagers.com/issues" + fi + fi + fi +exit 1 +else + fn_print_ok "${servername}" + fn_scriptlog "Started ${servername}" +fi +rm "${scriptlogdir}/.${servicename}-tmux-error.tmp" +echo -en "\n" +} + +if [ "${gamename}" == "Teamspeak 3" ]; then + fn_start_teamspeak3 +else + fn_start_tmux +fi diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh new file mode 100644 index 000000000..ba8400879 --- /dev/null +++ b/lgsm/functions/command_stop.sh @@ -0,0 +1,217 @@ +#!/bin/bash +# LGSM command_stop.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Stops the server. + +local modulename="Stopping" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +# Attempts Graceful of source using rcon 'quit' command. +fn_stop_graceful_source(){ + fn_print_dots "Graceful: rcon quit" + fn_scriptlog "Graceful: rcon quit" + # sends quit + tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 + # waits up to 30 seconds giving the server time to shutdown gracefuly + for seconds in {1..30}; do + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + fn_print_ok "Graceful: rcon quit: ${seconds}: " + fn_print_ok_eol_nl + fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" + break + fi + sleep 1 + fn_print_dots "Graceful: rcon quit: ${seconds}" + done + if [ "${pid}" != "0" ]; then + fn_print_fail "Graceful: rcon quit" + fn_print_fail_eol_nl + fn_scriptlog "Graceful: rcon quit: FAIL" + fn_stop_tmux + fi + sleep 1 +} + +# Attempts Graceful of goldsource using rcon 'quit' command. +# Goldsource 'quit' command restarts rather than shutsdown +# this function will only wait 3 seconds then force a tmux shutdown. +# preventing the server from coming back online. +fn_stop_graceful_goldsource(){ + fn_print_dots "Graceful: rcon quit" + fn_scriptlog "Graceful: rcon quit" + # sends quit + tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 + # waits 3 seconds as goldsource servers restart with the quit command + for seconds in {1..3}; do + sleep 1 + fn_print_dots "Graceful: rcon quit: ${seconds}" + done + fn_print_ok "Graceful: rcon quit: ${seconds}: " + fn_print_ok_eol_nl + fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" + sleep 1 + fn_stop_tmux +} + +# Attempts Graceful of 7 Days To Die using telnet. +fn_stop_telnet_sdtd(){ + sdtd_telnet_shutdown=$( expect -c ' + proc abort {} { + puts "Timeout or EOF\n" + exit 1 + } + spawn telnet '"${telnetip}"' '"${telnetport}"' + expect { + "password:" { send "'"${telnetpass}"'\r" } + default abort + } + expect { + "session." { send "shutdown\r" } + default abort + } + expect { eof } + puts "Completed.\n" + ') + +} + +fn_stop_graceful_sdtd(){ + fn_print_dots "Graceful: telnet" + fn_scriptlog "Graceful: telnet" + sleep 1 + if [ "${telnetenabled}" == "false" ]; then + fn_print_info_nl "Graceful: telnet: DISABLED: Enable in ${servercfg}" + elif [ "$(command -v expect)" ]||[ "$(which expect >/dev/null 2>&1)" ]; then + # Tries to shutdown with both localhost and server IP. + for telnetip in 127.0.0.1 ${ip}; do + fn_print_dots "Graceful: telnet: ${telnetip}" + fn_scriptlog "Graceful: telnet: ${telnetip}" + sleep 1 + fn_stop_telnet_sdtd + completed=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Completed.") + refused=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Timeout or EOF") + if [ -n "${refused}" ]; then + fn_print_warn "Graceful: telnet: ${telnetip}: " + fn_print_fail_eol_nl + fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" + sleep 1 + elif [ -n "${completed}" ]; then + break + fi + done + + # If telnet was successful will use telnet again to check the connection has closed + # This confirms that the tmux session can now be killed. + if [ -n "${completed}" ]; then + for seconds in {1..30}; do + fn_stop_telnet_sdtd + refused=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Timeout or EOF") + if [ -n "${refused}" ]; then + fn_print_ok "Graceful: telnet: ${telnetip}: " + fn_print_ok_eol_nl + fn_scriptlog "Graceful: telnet: ${telnetip}: ${seconds} seconds" + break + fi + sleep 1 + fn_print_dots "Graceful: rcon quit: ${seconds}" + done + # If telnet failed will go straight to tmux shutdown. + # If cannot shutdown correctly world save may be lost + else + if [ -n "${refused}" ]; then + fn_print_fail "Graceful: telnet: " + fn_print_fail_eol_nl + fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" + else + fn_print_fail_nl "Graceful: telnet: Unknown error" + fn_scriptlog "Graceful: telnet: Unknown error" + fi + echo -en "\n" | tee -a "${scriptlog}" + echo -en "Telnet output:" | tee -a "${scriptlog}" + echo -en "\n ${sdtd_telnet_shutdown}" | tee -a "${scriptlog}" + echo -en "\n\n" | tee -a "${scriptlog}" + fi + else + fn_print_dots "Graceful: telnet: " + fn_scriptlog "Graceful: telnet: " + fn_print_fail "Graceful: telnet: expect not installed: " + fn_print_fail_eol_nl + fn_scriptlog "Graceful: telnet: expect not installed: FAIL" + fi + sleep 1 + fn_stop_tmux +} + +fn_stop_graceful_select(){ + if [ "${gamename}" == "7 Days To Die" ]; then + fn_stop_graceful_sdtd + elif [ "${engine}" == "source" ]; then + fn_stop_graceful_source + elif [ "${engine}" == "goldsource" ]; then + fn_stop_graceful_goldsource + else + fn_stop_tmux + fi +} + +fn_stop_teamspeak3(){ + fn_print_dots "${servername}" + fn_scriptlog "${servername}" + sleep 1 + ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 + # Remove lock file + rm -f "${rootdir}/${lockselfname}" + fn_print_ok_nl "${servername}" + fn_scriptlog "Stopped ${servername}" + } + + fn_stop_tmux(){ + fn_print_dots "${servername}" + fn_scriptlog "tmux kill-session: ${servername}" + sleep 1 + # Kill tmux session + tmux kill-session -t "${servicename}" > /dev/null 2>&1 + sleep 0.5 + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + # Remove lock file + rm -f "${rootdir}/${lockselfname}" + fn_print_ok_nl "${servername}" + fn_scriptlog "Stopped ${servername}" + else + fn_print_fail_nl "Unable to stop${servername}" + fn_scriptlog "Unable to stop${servername}" + fi +} + +# checks if the server is already stopped before trying to stop. +fn_stop_pre_check(){ + if [ "${gamename}" == "Teamspeak 3" ]; then + info_ts3status.sh + if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + fn_print_ok_nl "${servername} is already stopped" + fn_scriptlog "${servername} is already stopped" + else + fn_stop_teamspeak3 + fi + else + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + fn_print_ok_nl "${servername} is already stopped" + fn_scriptlog "${servername} is already stopped" + else + fn_stop_graceful_select + fi + fi +} + +check.sh +info_config.sh +fn_print_dots "${servername}" +fn_scriptlog "${servername}" +sleep 1 +fn_stop_pre_check \ No newline at end of file diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh new file mode 100644 index 000000000..eba76523a --- /dev/null +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -0,0 +1,62 @@ +#!/bin/bash +# LGSM command_serveradmin_password.sh function +# Author: Daniel Gibbs +# Contributor : UltimateByte +# Website: http://gameservermanagers.com +lgsm_version="080116" + +# Description: Changes TS3 serveradmin password + +local modulename="Change password" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + + +fn_serveradmin_password_prompt(){ +echo "" +echo "${gamename} ServerAdmin Password Change" +echo "============================" +echo "" +echo "Press \"CTRL+b d\" to exit console." +fn_print_infomation_nl "You are about to change the ${gamename} ServerAdmin password." +fn_print_warning_nl "${gamename} will restart during this process." +echo "" +while true; do + read -e -i "y" -p "Continue? [y/N]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; return;; + * ) echo "Please answer yes or no.";; +esac +done +fn_scriptlog "Initiating ${gamename} ServerAdmin password change" +read -p "Enter new password : " newpassword +} + + +fn_serveradmin_password_set(){ +fn_print_info_nl "Applying new password" +fn_scriptlog "Applying new password" +sleep 1 +# Stop any running server +command_stop.sh +# Start server in "new password mode" +ts3serverpass="1" +fn_print_info_nl "Starting server with new password" +command_start.sh +# Stop server in "new password mode" +command_stop.sh +fn_print_ok_nl "Password applied" +fn_scriptlog "New ServerAdmin password applied" +sleep 1 +} + +# Running functions +check.sh +fn_serveradmin_password_prompt +info_ts3status.sh +if [ "${ts3status}" == "Server is running" ]; then + fn_serveradmin_password_set + command_start.sh +else + fn_serveradmin_password_set +fi \ No newline at end of file diff --git a/functions/command_update.sh b/lgsm/functions/command_update.sh similarity index 100% rename from functions/command_update.sh rename to lgsm/functions/command_update.sh diff --git a/lgsm/functions/command_update_functions.sh b/lgsm/functions/command_update_functions.sh new file mode 100644 index 000000000..9c0ac4b90 --- /dev/null +++ b/lgsm/functions/command_update_functions.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# LGSM update_functions.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="270216" + +# Description: Deletes the functions dir to allow re-downloading of functions from GitHub. + +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +check.sh +fn_print_dots "Updating functions" +fn_scriptlog "Updating functions" +sleep 1 +echo -ne "\n" + +# Removed legecy functions dir +if [ -d "${rootdir}/functions/" ]; then + rm -rfv "${rootdir}/functions/" + exitcode=$? +fi + +if [ -n "${functionsdir}" ]; then + rm -rfv "${functionsdir}/"* + exitcode=$? +else + fn_print_fail "Updating functions" + fn_scriptlog "Failure! Updating functions" +fi + +if [ "${exitcode}" == "0" ]; then + fn_print_ok "Updating functions" + fn_scriptlog "Success! Updating functions" +else + fn_print_fail "Updating functions" + fn_scriptlog "Failure! Updating functions" +fi +echo -ne "\n" \ No newline at end of file diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh new file mode 100644 index 000000000..f4c46c071 --- /dev/null +++ b/lgsm/functions/command_validate.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# LGSM command_validate.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Runs a server validation. + +local modulename="Validate" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +fn_validation(){ +fn_print_warn_nl "Validating may overwrite some customised files." +echo -en "https://developer.valvesoftware.com/wiki/SteamCMD#Validate" +sleep 5 +echo -en "\n" +fn_print_dots "Checking server files" +sleep 1 +fn_print_ok "Checking server files" +fn_scriptlog "Checking server files" +sleep 1 + +cd "${rootdir}/steamcmd" + +if [ $(command -v unbuffer) ]; then + unbuffer=unbuffer +fi + +if [ "${engine}" == "goldsource" ]; then + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" +else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" +fi + +fix.sh +fn_scriptlog "Checking complete" +} + +check.sh +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") +if [ "${tmuxwc}" -eq 1 ]; then + command_stop.sh + fn_validation + command_start.sh +else + fn_validation +fi diff --git a/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh similarity index 100% rename from functions/compress_unreal2_maps.sh rename to lgsm/functions/compress_unreal2_maps.sh diff --git a/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh similarity index 100% rename from functions/compress_ut99_maps.sh rename to lgsm/functions/compress_ut99_maps.sh diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh new file mode 100644 index 000000000..579fb2788 --- /dev/null +++ b/lgsm/functions/core_dl.sh @@ -0,0 +1,202 @@ +#!/bin/bash +# LGSM core_dl.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="050216" + +# Description: Deals with all downloads for LGSM. + +# fileurl: The URL of the file: http://example.com/dl/File.tar.bz2 +# filedir: location the file is to be saved: /home/server/lgsm/tmp +# filename: name of file (this can be different from the url name): file.tar.bz2 +# executecmd: Optional, set to "executecmd" to make file executable using chmod +x +# run: Optional, set to run to execute the file +# force: Optional, force re-download of file even if exists +# md5: Optional, Checks file against an md5 sum +# +# Downloads can be defined in code like so: +# fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" +# fn_fetch_file "http://example.com/file.tar.bz2" "/some/dir" "file.tar.bz2" "executecmd" "run" "force" "10cd7353aa9d758a075c600a6dd193fd" + +fn_dl_md5(){ +# Runs MD5 Check if available +if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then + echo -ne "verifying ${filename} with MD5..." + sleep 1 + local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') + if [ "${md5sumcmd}" != "${md5}" ]; then + fn_print_fail_eol_nl + echo "${filename} returned MD5 checksum: ${md5sumcmd}" + echo "expected MD5 checksum: ${md5}" + fn_scriptlog "verifying ${filename} with MD5: FAIL" + fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" + fn_scriptlog "expected MD5 checksum: ${md5}" + exit 1 + else + fn_print_ok_eol_nl + fn_scriptlog "verifying ${filename} with MD5: OK" + fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" + fn_scriptlog "expected MD5 checksum: ${md5}" + fi +fi +} + +# Extracts bzip2 or gzip files +# Extracts can be defined in code like so: +# fn_dl_extract "${filedir}" "${filename}" "${extractdir}" +# fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles" +fn_dl_extract(){ +filedir="${1}" +filename="${2}" +extractdir="${3}" +# extracts archives +echo -ne "extracting ${filename}..." +fn_scriptlog "extracting download" +mime=$(file -b --mime-type "${filedir}/${filename}") + +if [ "${mime}" == "application/gzip" ]; then + tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}") +elif [ "${mime}" == "application/x-bzip2" ]; then + tarcmd=$(tar -jxf "${filedir}/${filename}" -C "${extractdir}") +fi +local exitcode=$? +if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_scriptlog "extracting download: FAIL" + echo "${tarcmd}" | tee -a "${scriptlog}" + exit ${exitcode} +else + fn_print_ok_eol_nl +fi +} + +# Trap to remove file download if canceled before completed +fn_fetch_trap() { + echo "" + echo -ne "downloading ${filename}: " + fn_print_canceled_eol_nl + fn_scriptlog "downloading ${filename}: CANCELED" + sleep 1 + rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" + echo -ne "downloading ${filename}: " + fn_print_removed_eol_nl + fn_scriptlog "downloading ${filename}: REMOVED" + exit +} + +fn_fetch_file(){ +fileurl="${1}" +filedir="${2}" +filename="${3}" +executecmd="${4:-0}" +run="${5:-0}" +force="${6:-0}" +md5="${7:-0}" + +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir -p "${filedir}" + fi + + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + # trap to remove part downloaded files + trap fn_fetch_trap INT + # if larger file shows progress bar + if [ ${filename##*.} == "bz2" ]; then + echo -ne "downloading ${filename}..." + sleep 1 + curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") + echo -ne "downloading ${filename}..." + else + echo -ne " fetching ${filename}...\c" + curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) + fi + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + if [ -f "${scriptlog}" ]; then + fn_scriptlog "downloading ${filename}: FAIL" + fi + echo "${curlcmd}" | tee -a "${scriptlog}" + echo -e "${fileurl}\n" | tee -a "${scriptlog}" + exit ${exitcode} + else + fn_print_ok_eol_nl + if [ -f "${scriptlog}" ]; then + fn_scriptlog "downloading ${filename}: OK" + fi + fi + # remove trap + trap - INT + else + fn_print_fail_eol_nl + echo "Curl is not installed!" + echo -e "" + exit 1 + fi + # make file executecmd if executecmd is set + if [ "${executecmd}" == "executecmd" ]; then + chmod +x "${filedir}/${filename}" + fi +fi + +if [ -f "${filedir}/${filename}" ]; then + fn_dl_md5 + # run file if run is set + if [ "${run}" == "run" ]; then + source "${filedir}/${filename}" + fi +fi +} + + + +# fileurl: The directory the file is located in teh GitHub repo +# filedir: name of file +# filename: location file to be saved +# executecmd: set to "executecmd" to make file executecmd +# run: Optional, set to run to execute the file +# force: force download of file even if exists +# md5: Checks fail against an md5 sum + + +# Fetches files from the github repo +fn_fetch_file_github(){ +github_file_url_dir="${1}" +github_file_url_name="${2}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +fileurl="${githuburl}" +filedir="${3}" +filename="${github_file_url_name}" +executecmd="${4:-0}" +run="${5:-0}" +force="${6:-0}" +md5="${7:-0}" +fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" +} + + +# Fetches functions +fn_fetch_function(){ +github_file_url_dir="functions" # github dir containing the file +github_file_url_name="${functionfile}" # name of the github file +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +fileurl="${githuburl}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +executecmd="executecmd" +run="run" +force="noforce" +md5="nomd5" +fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" +} \ No newline at end of file diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh new file mode 100644 index 000000000..ccea1f07d --- /dev/null +++ b/lgsm/functions/core_functions.sh @@ -0,0 +1,454 @@ +#!/bin/bash +# LGSM core_functions.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="270216" + +# Description: Defines all functions to allow download and execution of functions using fn_fetch_function. +# This function is called first before any other function. Without this file other functions would not load. + +# Code/functions for legacy servers + +fn_functions(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fn_getopt(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +# fn_fetch_core_dl also placed here to allow legecy servers to still download core functions +if [ -z "${lgsmdir}" ]; then + lgsmdir="${rootdir}/lgsm" + functionsdir="${lgsmdir}/functions" +fi + +fn_fetch_core_dl(){ +github_file_url_dir="functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir -p "${filedir}" + fi + echo -e " fetching ${filename}...\c" + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else + echo -e "\e[0;31mFAIL\e[0m\n" + echo "Curl is not installed!" + echo -e "" + exit 1 + fi + chmod +x "${filedir}/${filename}" +fi +source "${filedir}/${filename}" +} + + +# Core + +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_getopt.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_messages.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_dl.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +# Command + +command_console.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_debug.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_details.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_email_test.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_backup.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_monitor.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_start.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_stop.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_validate.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_install.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_fastdl.sh(){ +functionfile="${FUNCNAME}" +fn_runfunction +} + +command_ts3_server_pass.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fn_restart(){ +local modulename="Restarting" +info_config.sh +if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "${servername}" +fi +command_stop.sh +command_start.sh +} + + +# Checks + +check.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_config.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_deps.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_ip.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_logs.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_root.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_steamcmd.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_system_dir.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_tmux.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Compress + +compress_unreal2_maps.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +compress_ut99_maps.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Dev + +command_dev_debug.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_dev_detect_deps.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Fix + +fix.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_arma3.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_csgo.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_dst.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_ins.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_steamcmd.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_glibc.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_ro.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_kf.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_ut2k4.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Info + +info_config.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +info_distro.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +info_glibc.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +info_ts3status.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Email + +email.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +# Logs + +logs.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Monitor + +monitor_gsquery.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +# Update + +update_check.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_update_functions.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +update_dl.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fn_update_functions.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# +## Installer functions +# + +fn_autoinstall(){ +autoinstall=1 +command_install.sh +} + +install_complete.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_config.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_gsquery.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_gslt.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_header.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_logs.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_retry.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_server_dir.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} +install_server_files.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_steamcmd.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_ts3.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_ts3db.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_ut2k4.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_dl_ut2k4.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_ut2k4_key.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_ut99.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +# Calls on-screen messages +core_messages.sh + +#Calls file downloader +core_dl.sh diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh new file mode 100644 index 000000000..e035f0c3c --- /dev/null +++ b/lgsm/functions/core_getopt.sh @@ -0,0 +1,441 @@ +#!/bin/bash +# LGSM core_getopt.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="070116" + +# Description: getopt arguments. + +fn_getopt_generic(){ +case "$getopt" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + fn_restart;; + u|update) + update_check.sh;; + fu|force-update|update-restart) + forceupdate=1; + update_check.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + et|email-test) + command_email_test.sh;; + d|details) + command_details.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|depsdetect) + command_dev_detect_deps.sh;; + *) + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "http://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "\e[93mCommands\e[0m" + { + echo -e "\e[34mstart\t\e[0mStart the server." + echo -e "\e[34mstop\t\e[0mStop the server." + echo -e "\e[34mrestart\t\e[0mRestart the server." + echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD." + echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD." + echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." + echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD." + echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." + echo -e "\e[34memail-test\t\e[0mSends test monitor email." + echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mCreate archive of the server." + echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mInstall the server." + echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + } | column -s $'\t' -t + esac +exit +} + +fn_getopt_teamspeak3(){ +case "$getopt" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + fn_restart;; + u|update) + update_check.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + et|email-test) + command_email_test.sh;; + d|details) + command_details.sh;; + b|backup) + command_backup.sh;; + pw|change-password) + command_ts3_server_pass.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|depsdetect) + command_dev_detect_deps.sh;; + *) + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "http://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "\e[93mCommands\e[0m" + { + echo -e "\e[34mstart\t\e[0mStart the server." + echo -e "\e[34mstop\t\e[0mStop the server." + echo -e "\e[34mrestart\t\e[0mRestart the server." + echo -e "\e[34mupdate\t\e[0mChecks and applies updates from teamspeak.com." + echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." + echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." + echo -e "\e[34memail-test\t\e[0mSends test monitor email." + echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." + echo -e "\e[34mchange-password\t\e[0mChanges TS3 serveradmin password." + echo -e "\e[34mbackup\t\e[0mCreate archive of the server." + echo -e "\e[34minstall\t\e[0mInstall the server." + echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + } | column -s $'\t' -t + esac +exit +} + +fn_getopt_mumble(){ +case "$getopt" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + fn_restart;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + et|email-test) + command_email_test.sh;; + b|backup) + command_backup.sh;; + dev|dev-debug) + command_dev_debug.sh;; + console) + command_console.sh;; + d|debug) + command_debug.sh;; + dd|depsdetect) + command_dev_detect_deps.sh;; + *) + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "http://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "\e[93mCommands\e[0m" + { + echo -e "\e[34mstart\t\e[0mStart the server." + echo -e "\e[34mstop\t\e[0mStop the server." + echo -e "\e[34mrestart\t\e[0mRestart the server." + echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." + echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." + echo -e "\e[34memail-test\t\e[0mSends test monitor email." + echo -e "\e[34mbackup\t\e[0mCreate archive of the server." + echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." + } | column -s $'\t' -t + esac +exit +} + +fn_getopt_gmodserver(){ +case "$getopt" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + fn_restart;; + u|update) + update_check.sh;; + fu|force-update|update-restart) + forceupdate=1; + update_check.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + et|email-test) + command_email_test.sh;; + d|details) + command_details.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|depsdetect) + command_dev_detect_deps.sh;; + fd|fastdl) + command_fastdl.sh;; + *) + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "http://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "\e[93mCommands\e[0m" + { + echo -e "\e[34mstart\t\e[0mStart the server." + echo -e "\e[34mstop\t\e[0mStop the server." + echo -e "\e[34mrestart\t\e[0mRestart the server." + echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD." + echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD." + echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." + echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD." + echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." + echo -e "\e[34memail-test\t\e[0mSends test monitor email." + echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mCreate archive of the server." + echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mInstall the server." + echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + echo -e "\e[34mfastdl\t\e[0mGenerates or update a FastDL folder for your server." + } | column -s $'\t' -t + esac +exit +} + +fn_getopt_unreal(){ +case "$getopt" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + fn_restart;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + et|email-test) + command_email_test.sh;; + d|details) + command_details.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + mc|map-compressor) + compress_ut99_maps.sh;; + dd|depsdetect) + command_dev_detect_deps.sh;; + *) + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "http://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "\e[93mCommands\e[0m" + { + echo -e "\e[34mstart\t\e[0mStart the server." + echo -e "\e[34mstop\t\e[0mStop the server." + echo -e "\e[34mrestart\t\e[0mRestart the server." + echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." + echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." + echo -e "\e[34memail-test\t\e[0mSends test monitor email." + echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mCreate archive of the server." + echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mInstall the server." + echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." + } | column -s $'\t' -t + esac +exit +} + + +fn_getopt_unreal2(){ +case "$getopt" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + fn_restart;; + u|update) + update_check.sh;; + fu|force-update|update-restart) + forceupdate=1; + update_check.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + et|email-test) + command_email_test.sh;; + d|details) + command_details.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|depsdetect) + command_dev_detect_deps.sh;; + mc|map-compressor) + compress_unreal2_maps.sh;; + *) + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "http://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "\e[93mCommands\e[0m" + { + echo -e "\e[34mstart\t\e[0mStart the server." + echo -e "\e[34mstop\t\e[0mStop the server." + echo -e "\e[34mrestart\t\e[0mRestart the server." + echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD." + echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD." + echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." + echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD." + echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." + echo -e "\e[34memail-test\t\e[0mSends test monitor email." + echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mCreate archive of the server." + echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mInstall the server." + echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." + } | column -s $'\t' -t + esac +exit +} + + +fn_getopt_ut2k4(){ +case "$getopt" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + fn_restart;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + et|email-test) + command_email_test.sh;; + d|details) + command_details.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + sck|server-cd-key) + install_ut2k4_key.sh;; + mc|map-compressor) + compress_unreal2_maps.sh;; + dd|depsdetect) + command_dev_detect_deps.sh;; + *) + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "http://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "\e[93mCommands\e[0m" + { + echo -e "\e[34mstart\t\e[0mStart the server." + echo -e "\e[34mstop\t\e[0mStop the server." + echo -e "\e[34mrestart\t\e[0mRestart the server." + echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." + echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." + echo -e "\e[34memail-test\t\e[0mSends test monitor email." + echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mCreate archive of the server." + echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mInstall the server." + echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + echo -e "\e[34mserver-cd-key\t\e[0mAdd your server cd key" + echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." + } | column -s $'\t' -t + esac +exit +} + +if [ "${gamename}" == "Mumble" ]; then + fn_getopt_mumble +elif [ "${gamename}" == "Teamspeak 3" ]; then + fn_getopt_teamspeak3 +elif [ "${gamename}" == "Garry's Mod" ]; then + fn_getopt_gmodserver +elif [ "${engine}" == "unreal2" ]; then + if [ "${gamename}" == "Unreal Tournament 2004" ]; then + fn_getopt_ut2k4 + else + fn_getopt_unreal2 + fi +elif [ "${engine}" == "unreal" ]; then + fn_getopt_unreal +else + fn_getopt_generic +fi diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh new file mode 100644 index 000000000..54b245193 --- /dev/null +++ b/lgsm/functions/core_messages.sh @@ -0,0 +1,204 @@ +#!/bin/bash +# LGSM fn_messages function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="380216" + +# Description: Defines on-screen messages such as [ OK ] and how script logs look. + +# nl: new line: message is following by a new line +# eol: end of line: message is placed at the end of the current line + +# Date, servicename & module details displayed in log files. +# e.g Feb 28 14:56:58 ut99-server: Monitor: +fn_scriptlog(){ + if [ -n "${modulename}" ]; then + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${modulename}: ${1}" >> "${scriptlog}" + else + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${1}" >> "${scriptlog}" + fi +} + +# [ FAIL ] +fn_print_fail(){ + if [ -n "${modulename}" ]; then + echo -en "\r\033[K[\e[0;31m FAIL \e[0m] ${modulename} ${servicename}: $@" + else + echo -en "\r\033[K[\e[0;31m FAIL \e[0m] $@" + fi +} + +fn_print_fail_nl(){ + if [ -n "${modulename}" ]; then + echo -en "\r\033[K[\e[0;31m FAIL \e[0m] ${modulename} ${servicename}: $@" + else + echo -en "\r\033[K[\e[0;31m FAIL \e[0m] $@" + fi + sleep 1 + echo -en "\n" +} + +# [ OK ] +fn_print_ok(){ + if [ -n "${modulename}" ]; then + echo -en "\r\033[K[\e[0;32m OK \e[0m] ${modulename} ${servicename}: $@" + else + echo -en "\r\033[K[\e[0;32m OK \e[0m] $@" + fi +} + +fn_print_ok_nl(){ + if [ -n "${modulename}" ]; then + echo -en "\r\033[K[\e[0;32m OK \e[0m] ${modulename} ${servicename}: $@" + else + echo -en "\r\033[K[\e[0;32m OK \e[0m] $@" + fi + sleep 1 + echo -en "\n" +} + +# [ INFO ] +fn_print_info(){ + if [ -n "${modulename}" ]; then + echo -en "\r\033[K[\e[0;36m INFO \e[0m] ${modulename} ${servicename}: $@" + else + echo -en "\r\033[K[\e[0;36m INFO \e[0m] $@" + fi +} + +fn_print_info_nl(){ + if [ -n "${modulename}" ]; then + echo -en "\r\033[K[\e[0;36m INFO \e[0m] ${modulename} ${servicename}: $@" + else + echo -en "\r\033[K[\e[0;36m INFO \e[0m] $@" + fi + sleep 1 + echo -en "\n" +} + +# [ WARN ] +fn_print_warn(){ + if [ -n "${modulename}" ]; then + echo -en "\r\033[K[\e[1;33m WARN \e[0m] ${modulename} ${servicename}: $@" + else + echo -en "\r\033[K[\e[1;33m WARN \e[0m] $@" + fi +} + +fn_print_warn_nl(){ + if [ -n "${modulename}" ]; then + echo -en "\r\033[K[\e[1;33m WARN \e[0m] ${modulename} ${servicename}: $@" + else + echo -en "\r\033[K[\e[1;33m WARN \e[0m] $@" + fi + sleep 1 + echo -en "\n" +} + +# [ .... ] +fn_print_dots(){ + if [ -n "${modulename}" ]; then + echo -en "\r\033[K[ .... ] ${modulename} ${servicename}: $@" + else + echo -en "\r\033[K[ .... ] $@" + fi +} + +# Complete! +fn_print_complete(){ + echo -en "\e[0;32mComplete!\e[0m $@" +} + +fn_print_complete_nl(){ + echo -e "\e[0;32mComplete!\e[0m $@" +} + +# Warning! +fn_print_warning(){ + echo -en "\e[0;33mWarning!\e[0m $@" +} + +fn_print_warning_nl(){ + echo -e "\e[0;33mWarning!\e[0m $@" +} + +# Failure! +fn_print_failure(){ + echo -en "\e[0;31mFailure!\e[0m $@" +} + +fn_print_failure_nl(){ + echo -e "\e[0;31mFailure!\e[0m $@" +} + +# Error! +fn_print_error(){ + echo -en "\e[0;31mError!\e[0m $@" +} + +fn_print_error_nl(){ + echo -e "\e[0;31mError!\e[0m $@" +} + +# Infomation! +fn_print_infomation(){ + echo -en "\e[0;36mInfomation!\e[0m $@" +} + +fn_print_infomation_nl(){ + echo -e "\e[0;36mInfomation!\e[0m $@" +} + +# FAIL for end of line +fn_print_ok_eol(){ + echo -en "\e[0;32mOK\e[0m" +} + +fn_print_ok_eol_nl(){ + echo -e "\e[0;32mOK\e[0m" +} + +# FAIL for end of line +fn_print_fail_eol(){ + echo -en "\e[0;31mFAIL\e[0m" +} + +fn_print_fail_eol_nl(){ + echo -e "\e[0;31mFAIL\e[0m" +} + +# QUERYING for end of line +fn_print_querying_eol(){ + echo -en "\e[0;36mQUERYING\e[0m" +} + +fn_print_querying_eol_nl(){ + echo -e "\e[0;36mQUERYING\e[0m" +} + +# CHECKING for end of line +fn_print_checking_eol(){ + echo -en "\e[0;36mCHECKING\e[0m" +} + +fn_print_checking_eol_nl(){ + echo -e "\e[0;36mCHECKING\e[0m" +} + +# CANCELED for end of line +fn_print_canceled_eol(){ + echo -en "\e[0;33mCANCELED\e[0m" +} + +fn_print_canceled_eol_nl(){ + echo -e "\e[0;33mCANCELED\e[0m" +} + +# REMOVED for end of line +fn_print_removed_eol(){ + echo -en "\e[0;31mREMOVED\e[0m" +} + +fn_print_removed_eol_nl(){ + echo -e "\e[0;31mREMOVED\e[0m" +} \ No newline at end of file diff --git a/lgsm/functions/email.sh b/lgsm/functions/email.sh new file mode 100644 index 000000000..174ed3ff6 --- /dev/null +++ b/lgsm/functions/email.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# LGSM email.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="020216" + +# Description: Sends email notification if monitor picks up a failure. + +local modulename="Email" +fn_print_dots "Sending notification to ${email}" +info_distro.sh +info_config.sh +check_ip.sh +fn_parms +{ + echo -e "========================================\n${servicename} details\n========================================" + echo -e "Service name: ${servicename}" + echo -e "Server name: ${servername}" + echo -e "Game name: ${gamename}" + echo -e "Server IP: ${ip}:${port}" + echo -e "Failure reason: ${failurereason}" + echo -e "Action Taken: ${actiontaken}\n" + echo -e "" + echo -e "========================================\nDistro Details\n========================================" + echo -e "Date: $(date)" + echo -e "Distro: ${os}" + echo -e "Arch: ${arch}" + echo -e "Kernel: ${kernel}" + echo -e "Hostname: $HOSTNAME" + echo -e "tmux: ${tmuxv}" + echo -e "GLIBC: ${glibcv}" + echo -e "" + echo -e "========================================\nPerformance\n========================================" + echo -e "Uptime: ${days}d, ${hours}h, ${minutes}m" + echo -e "Avg Load: ${load}" + echo -e "" + echo -e "Mem: total used free" + echo -e "Physical: ${physmemtotal} ${physmemused} ${physmemfree}" + echo -e "Swap: ${swaptotal}${swapused} ${swapfree}" + echo -e "" + echo -e "========================================\nStorage\n========================================" + echo -e "\e[34mFilesystem:\t\e[0m${filesystem}" + echo -e "\e[34mTotal:\t\e[0m${totalspace}" + echo -e "\e[34mUsed:\t\e[0m${usedspace}" + echo -e "\e[34mAvailable:\t\e[0m${availspace}" + echo -e "\e[34mServerfiles:\t\e[0m${filesdirdu}" + if [ -d "${backupdir}" ]; then + echo -e "\e[34mBackups:\t\e[0m${backupdirdu}" + fi + echo -e "" + echo -e "========================================\nCommand-line Parameters\n========================================" + echo -e "${executable} ${parms}" + echo -e "" + echo -e "========================================\nLogs\n========================================" +}| sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee "${scriptlogdir}/${servicename}-email.log" > /dev/null 2>&1 +echo -e "\n\n Script log\n===================" >> "${emaillog}" +tail -25 "${scriptlog}" >> "${emaillog}" +if [ -n "${consolelog}" ]; then + echo -e "\n\n Console log\n====================" >> "${emaillog}" + tail -25 "${consolelog}" | awk '{ sub("\r$", ""); print }' >> "${emaillog}" +fi +if [ -n "${gamelogdir}" ]; then + echo -e "\n\n Server log\n====================" >> "${emaillog}" + tail "${gamelogdir}"/* | grep -v "==>" | sed '/^$/d' | tail -25 >> "${emaillog}" +fi +mail -s "${subject}" ${email} < "${emaillog}" +fn_print_ok_nl "Sending notification to ${email}" +fn_scriptlog "Sent notification to ${email}" \ No newline at end of file diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh new file mode 100644 index 000000000..e4723e649 --- /dev/null +++ b/lgsm/functions/fix.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# LGSM fix.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="010316" + +# Description: Overall function for managing fixes. +# Runs functions that will fix an issue. + +# Messages that are displayed for some fixes +fn_fix_msg_start(){ + fn_print_dots "Applying ${fixname} fix: ${gamename}" + sleep 1 + fn_print_info "Applying ${fixname} fix: ${gamename}" + fn_scriptlog "Applying ${fixname} fix: ${gamename}" + sleep 1 +} + +fn_fix_msg_end(){ + if [ $? -ne 0 ]; then + fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" + fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" + else + fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" + fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" + fi +} + + +# Fixes that are run on start +if [ "${function_selfname}" != "command_install.sh" ]; then + if [ -n "${appid}" ]; then + fix_steamcmd.sh + fi + + if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then + fix_csgo.sh + elif [ "${gamename}" == "Don't Starve Together" ]; then + fix_dst.sh + elif [ "${gamename}" == "Insurgency" ]; then + fix_ins.sh + elif [ "${gamename}" == "ARMA 3" ]; then + fix_arma3.sh + fi +fi + +# Fixes that are run on install only. +if [ "${function_selfname}" == "command_install.sh" ]; then + fix_glibc.sh + if [ "${gamename}" == "Killing Floor" ]; then + echo "" + echo "Applying ${gamename} Server Fixes" + echo "=================================" + sleep 1 + fix_kf.sh + elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then + echo "" + echo "Applying ${gamename} Server Fixes" + echo "=================================" + sleep 1 + fix_ro.sh + elif [ "${gamename}" == "Unreal Tournament 2004" ]; then + echo "" + echo "Applying ${gamename} Server Fixes" + echo "=================================" + sleep 1 + fix_ut2k4.sh + elif [ "${gamename}" == "Unreal Tournament 99" ]; then + echo "" + echo "Applying ${gamename} Server Fixes" + echo "=================================" + sleep 1 + fix_ut99.sh + fi +fi diff --git a/lgsm/functions/fix_arma3.sh b/lgsm/functions/fix_arma3.sh new file mode 100644 index 000000000..ffc607ed6 --- /dev/null +++ b/lgsm/functions/fix_arma3.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# LGSM fix_arma3.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="301215" + +# Fixes: server not always creating steam_appid.txt file. +if [ ! -d "${rootdir}/.local/share/Arma\ 3" ]; then + fixname="20150 Segmentation fault (core dumped)" + fn_fix_msg_start + mkdir -p "${rootdir}/.local/share/Arma\ 3" + fn_fix_msg_end +fi \ No newline at end of file diff --git a/lgsm/functions/fix_csgo.sh b/lgsm/functions/fix_csgo.sh new file mode 100644 index 000000000..f968640ce --- /dev/null +++ b/lgsm/functions/fix_csgo.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# LGSM fix_csgo.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="010316" + +# Description: Resolves various issues with csgo. + +# Fixes: server not always creating steam_appid.txt file. +if [ ! -f "${filesdir}/steam_appid.txt" ]; then + fixname="730 steam_appid.txt" + fn_fix_msg_start + echo -n "730" >> "${filesdir}/steam_appid.txt" + fn_fix_msg_end +fi + +# Fixes: Error parsing BotProfile.db - unknown attribute 'Rank'". +if ! grep -q "//Rank" "${systemdir}/botprofile.db" > /dev/null 2>&1; then + fixname="botprofile.db" + fn_fix_msg_start + sed -i 's/\tRank/\t\/\/Rank/g' "${systemdir}/botprofile.db" > /dev/null 2>&1 + fn_fix_msg_end +fi + +# Fixes: Unknown command "cl_bobamt_vert". +if ! grep -q "//exec default" "${servercfgdir}/valve.rc" > /dev/null 2>&1 || ! grep -q "//exec joystick" "${servercfgdir}/valve.rc" > /dev/null 2>&1; then + fixname="valve.rc" + fn_fix_msg_start + sed -i 's/exec default.cfg/\/\/exec default.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1 + sed -i 's/exec joystick.cfg/\/\/exec joystick.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1 + fn_fix_msg_end +fi + +# Fixes: workshop map issue. +# http://forums.steampowered.com/forums/showthread.php?t=3170366. +if [ -f "${systemdir}/subscribed_collection_ids.txt" ]||[ -f "${systemdir}/subscribed_file_ids.txt" ]||[ -f "${systemdir}/ugc_collection_cache.txt" ]; then + fixname="workshop map" + fn_fix_msg_start + rm -f "${systemdir}/subscribed_collection_ids.txt" + rm -f "${systemdir}/subscribed_file_ids.txt" + rm -f "${systemdir}/ugc_collection_cache.txt" + fn_fix_msg_end +fi \ No newline at end of file diff --git a/lgsm/functions/fix_dst.sh b/lgsm/functions/fix_dst.sh new file mode 100644 index 000000000..5dadf4b78 --- /dev/null +++ b/lgsm/functions/fix_dst.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# LGSM fix_dst.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="010316" + +# Description: Resolves various issues with Dont Starve together. + +# Fixes: ./dontstarve_dedicated_server_nullrenderer: ./lib32/libcurl-gnutls.so.4: no version information available (required by ./dontstarve_dedicated_server_nullrenderer) +# Issue only occures on CentOS as libcurl-gnutls.so.4 is called libcurl.so.4 on CentOS. +if [ -f "/etc/redhat-release" ] && [ ! -f "${filesdir}/bin/lib32/libcurl-gnutls.so.4" ]; then + fixname="libcurl-gnutls.so.4 missing" + fn_fix_msg_start + ln -s "/usr/lib/libcurl.so.4" "${filesdir}/bin/lib32/libcurl-gnutls.so.4" + fn_fix_msg_end +fi \ No newline at end of file diff --git a/functions/fix_ins.sh b/lgsm/functions/fix_ins.sh similarity index 100% rename from functions/fix_ins.sh rename to lgsm/functions/fix_ins.sh diff --git a/functions/fix_kf.sh b/lgsm/functions/fix_kf.sh similarity index 100% rename from functions/fix_kf.sh rename to lgsm/functions/fix_kf.sh diff --git a/lgsm/functions/fix_ro.sh b/lgsm/functions/fix_ro.sh new file mode 100644 index 000000000..9364d3e01 --- /dev/null +++ b/lgsm/functions/fix_ro.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# LGSM fix_ro.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="010316" + +# Description: Resolves various issues with red orchestra. + +echo "Applying WebAdmin ROOst.css fix." +echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" +sed -i 's/none}/none;/g' "${filesdir}/Web/ServerAdmin/ROOst.css" +sed -i 's/underline}/underline;/g' "${filesdir}/Web/ServerAdmin/ROOst.css" +sleep 1 +echo "Applying WebAdmin CharSet fix." +echo "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1" +sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/uweb.int" +sleep 1 +echo "applying server name fix." +sleep 1 +echo "forcing server restart..." +sleep 1 +command_start.sh +sleep 5 +command_stop.sh +command_start.sh +sleep 5 +command_stop.sh \ No newline at end of file diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh new file mode 100644 index 000000000..86feb9e2c --- /dev/null +++ b/lgsm/functions/fix_steamcmd.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# LGSM fix_steamcmd.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="010316" + +# Description: fixes various issues related to steamCMD. + +# Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so. +if [ ! -f "${HOME}/.steam/sdk32/steamclient.so" ]; then + fixname="steamclient.so general" + fn_fix_msg_start + mkdir -pv "${HOME}/.steam/sdk32" >> "${scriptlog}" + cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so" >> "${scriptlog}" + fn_fix_msg_end +fi + +if [ "${gamename}" == "Serious Sam 3: BFE" ]; then + # Fixes: .steam/bin32/libsteam.so: cannot open shared object file: No such file or directory + if [ ! -f "${HOME}/.steam/bin32/libsteam.so" ]; then + fixname="libsteam.so" + fn_fix_msg_start + mkdir -pv "${HOME}/.steam/bin32" >> "${scriptlog}" + cp -v "${filesdir}/Bin/libsteam.so" "${HOME}/.steam/bin32/libsteam.so" >> "${scriptlog}" + fn_fix_msg_end + fi +elif [ "${gamename}" == "Hurtworld" ]; then + # Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so. + if [ ! -f "${filesdir}/Hurtworld_Data/Plugins/x86/steamclient.so" ]; then + fixname="steamclient.so x86" + fn_fix_msg_start + cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${filesdir}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${scriptlog}" + fn_fix_msg_end + fi + if [ ! -f "${filesdir}/Hurtworld_Data/Plugins/x86_64/steamclient.so" ]; then + fixname="steamclient.so x86_64" + fn_fix_msg_start + cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${filesdir}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${scriptlog}" + fn_fix_msg_end + fi +fi diff --git a/lgsm/functions/fix_ut2k4.sh b/lgsm/functions/fix_ut2k4.sh new file mode 100644 index 000000000..363aa5d56 --- /dev/null +++ b/lgsm/functions/fix_ut2k4.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# LGSM fix_ut2k4.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="010316" + +# Description: Resolves various issues with unreal tournament 2004. + +echo "applying WebAdmin ut2003.css fix." +echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" +sed -i 's/none}/none;/g' "${filesdir}/Web/ServerAdmin/ut2003.css" +sed -i 's/underline}/underline;/g' "${filesdir}/Web/ServerAdmin/ut2003.css" +sleep 1 +echo "applying WebAdmin CharSet fix." +echo "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1" +sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int" +sleep 1 +echo "applying server name fix." +sleep 1 +echo "forcing server restart..." +sleep 1 +command_start.sh +sleep 5 +command_stop.sh +command_start.sh +sleep 5 +command_stop.sh \ No newline at end of file diff --git a/lgsm/functions/fix_ut99.sh b/lgsm/functions/fix_ut99.sh new file mode 100644 index 000000000..f7792fb44 --- /dev/null +++ b/lgsm/functions/fix_ut99.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# LGSM fix_ut99.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" +echo "${servercfgfullpath}" +echo "enabling UdpServerUplink." +{ +echo "[IpServer.UdpServerUplink]" +echo "DoUplink=True" +echo "UpdateMinutes=1" +echo "MasterServerAddress=unreal.epicgames.com" +echo "MasterServerPort=27900" +echo "Region=0" +}| tee -a "${servercfgfullpath}" > /dev/null 2>&1 +sleep 1 +echo "removing dead gamespy.com master server." +sed -i '/master0.gamespy.com/d' "${servercfgfullpath}" +sleep 1 +echo "removing dead mplayer.com master server." +sed -i '/master.mplayer.com/d' "${servercfgfullpath}" +sleep 1 +echo "inserting qtracker.com master server." +sed -i '65i\ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.qtracker.com MasterServerPort=27900' "${servercfgfullpath}" +echo "" \ No newline at end of file diff --git a/functions/fn_functions b/lgsm/functions/fn_functions similarity index 100% rename from functions/fn_functions rename to lgsm/functions/fn_functions diff --git a/functions/fn_getopt b/lgsm/functions/fn_getopt similarity index 100% rename from functions/fn_getopt rename to lgsm/functions/fn_getopt diff --git a/lgsm/functions/fn_update_functions b/lgsm/functions/fn_update_functions new file mode 100644 index 000000000..5fbb28975 --- /dev/null +++ b/lgsm/functions/fn_update_functions @@ -0,0 +1,22 @@ +#!/bin/bash +# LGSM fn_update_functions.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="230116" + +# Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub. + +fn_print_dots "Updating functions" +fn_scriptlog "Updating functions" +sleep 1 +echo -ne "\n" +rm -rfv "${rootdir}/functions/"* +exitcode=$? +if [ "${exitcode}" == "0" ]; then + fn_print_ok "Updating functions" + fn_scriptlog "Success! Updating functions" +else + fn_print_fail "Updating functions" + fn_scriptlog "Failure! Updating functions" +fi +echo -ne "\n" \ No newline at end of file diff --git a/lgsm/functions/gsquery.py b/lgsm/functions/gsquery.py new file mode 100644 index 000000000..b132038e3 --- /dev/null +++ b/lgsm/functions/gsquery.py @@ -0,0 +1,125 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- +# Game Server Query +# Author: Anonymous & Daniel Gibbs +# # Website: http://gameservermanagers.com +# Version: 190216 + +import optparse +import socket +import sys + +class GameServer: + def __init__( self, options, arguments ): + self.option = options + self.argument = arguments + # + self.server_response_timeout = 5 + self.default_buffer_length = 1024 + # + if self.option.engine == 'source': + self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' + elif self.option.engine == 'goldsource': + self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' + elif self.option.engine == 'spark': + self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' + elif self.option.engine == 'realvirtuality': + self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' + elif self.option.engine == 'unity3d': + self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' + elif self.option.engine == 'idtech3': + self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' + elif self.option.engine == 'unreal': + self.query_prompt_string = '\x5C\x69\x6E\x66\x6F\x5C' + elif self.option.engine == 'unreal2': + self.query_prompt_string = '\x79\x00\x00\x00\x00' + elif self.option.engine == 'avalanche': + self.query_prompt_string = '\xFE\xFD\x09\x10\x20\x30\x40' + self.connected = False + self.response = None + self.sanity_checks() + + def fatal_error( self, error_message, error_code=1 ): + sys.stderr.write( 'ERROR: ' + str(error_message) + '\n' ) + sys.exit( error_code ) + + def exit_success( self, success_message='' ): + sys.stdout.write( 'OK: ' + str(success_message) + '\n' ) + sys.exit( 0 ) + + def responding( self ): + # Connect. + connection = socket.socket( socket.AF_INET, socket.SOCK_DGRAM ) + connection.settimeout( self.server_response_timeout ) + try: + self.connected = connection.connect( ( self.option.address, int(self.option.port) ) ) + except socket.timeout: + self.fatal_error( 'Request timed out', 1 ) + except: + self.fatal_error( 'Unable to connect', 1 ) + # Send. + connection.send( self.query_prompt_string ) + # Receive. + try: + self.response = connection.recv( self.default_buffer_length ) + except socket.error: + self.fatal_error( 'Unable to receive', 2 ) + connection.close() + # Response. + if self.response == None: + self.fatal_error( 'No response', 3 ) + if len( self.response ) < 10 : + sys.exit( 'Short response.', 3 ) + else: + self.exit_success( str( self.response ) ) + + def sanity_checks( self ): + if not self.option.address: + self.fatal_error( 'No IPv4 address supplied.', 4 ) + if not self.option.port: + self.fatal_error( 'No port supplied.', 4 ) + +if __name__ == '__main__': + parser = optparse.OptionParser( + usage = 'usage: python %prog [options]', + version = '%prog 0.0.1' + ) + parser.add_option( + '-a', '--address', + action = 'store', + dest = 'address', + default = False, + help = 'The IPv4 address of the server.' + ) + parser.add_option( + '-p', '--port', + action = 'store', + dest = 'port', + default = False, + help = 'The IPv4 port of the server.' + ) + parser.add_option( + '-e', '--engine', + action = 'store', + dest = 'engine', + default = False, + help = 'Engine type: avalanche, goldsource, idtech3, realvirtuality, spark, source, unity3d, unreal, unreal2.' + ) + parser.add_option( + '-v', '--verbose', + action = 'store_true', + dest = 'verbose', + default = False, + help = 'Display verbose output.' + ) + parser.add_option( + '-d', '--debug', + action = 'store_true', + dest = 'debug', + default = False, + help = 'Display debugging output.' + ) + options, arguments = parser.parse_args() + # + server = GameServer( options, arguments ) + server.responding() diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh new file mode 100644 index 000000000..d9d5d4dfb --- /dev/null +++ b/lgsm/functions/info_config.sh @@ -0,0 +1,868 @@ +#!/bin/bash +# LGSM info_config.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="010316" + +# Description: Gets specific details from config files. + +## Examples of filtering to get info from config files +# sed 's/foo//g' - remove foo +# tr -cd '[:digit:]' leave only digits +# tr -d '=\"; ' remove selected charectors =\"; +# grep -v "foo" filter out lines that contain foo + +## Just Cause 2 +if [ "${engine}" == "avalanche" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "Name" "${servercfgfullpath}" | sed 's/Name//g' | tr -d '=", \n') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # ip + if [ -f "${servercfgfullpath}" ]; then + # check if the ip exists in the config file. Failing this will fall back to the default. + configipcheck=$(grep "BindIP" "${servercfgfullpath}" | sed 's/BindIP//g' | tr -d '=", \n') + fi + if [ -n "${configipcheck}" ]; then + ip=$(grep "BindIP" "${servercfgfullpath}" | sed 's/BindIP//g' | tr -d '=", \n') + fi + + # server password + if [ -f "${servercfgfullpath}" ]; then + serverpassword=$(grep "Password" "${servercfgfullpath}" | sed 's/Password//g' | tr -d '=", \n') + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "MaxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="NOT SET" + fi + else + slots="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "BindPort" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="0" + fi + +## Dont Starve Together +elif [ "${engine}" == "dontstarve" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "default_server_name = " "${servercfgfullpath}" | sed 's/default_server_name = //g') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # server password + if [ -f "${servercfgfullpath}" ]; then + serverpassword=$(grep "server_password = " "${servercfgfullpath}" | grep -v "#" | sed 's/server_password = //g') + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="NOT SET" + fi + else + slots="\e[0;31mUNAVAILABLE\e[0m" + fi + + # game mode + if [ -f "${servercfgfullpath}" ]; then + gamemode=$(grep "game_mode = " "${servercfgfullpath}" | grep -v "#" | sed 's/game_mode = //g') + if [ ! -n "${gamemode}" ]; then + gamemode="NOT SET" + fi + else + gamemode="\e[0;31mUNAVAILABLE\e[0m" + fi + + # tickrate + if [ -f "${servercfgfullpath}" ]; then + tickrate=$(grep "tick_rate" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + if [ ! -n "${tickrate}" ]; then + tickrate="NOT SET" + fi + else + tickrate="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="0" + fi + +## Project Zomboid +elif [ "${engine}" == "projectzomboid" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "PublicName=" "${servercfgfullpath}" | sed 's/PublicName=//g' | tr -d '=", \n') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="NOT SET" + fi + else + slots="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "DefaultPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="0" + fi + + +# Quake Live +elif [ "${engine}" == "idtech3" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "set sv_hostname " "${servercfgfullpath}" | sed 's/set sv_hostname //g' | tr -d '=\"; ') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # server password + if [ -f "${servercfgfullpath}" ]; then + + serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/set g_password//g' | tr -d '=\"; '| cut -f1 -d "/") + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # rcon password + rconpassword="${rconpassword}" + if [ -f "${servercfgfullpath}" ]; then + if [ ! -n "${rconpassword}" ]; then + rconpassword="NOT SET" + fi + else + rconpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "set sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="NOT SET" + fi + else + slots="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + port="${gameport}" + if [ ! -n "${port}" ]; then + port="0" + fi + + # rcon port + if [ ! -n "${rconport}" ]; then + rconport="0" + fi + + # Stats port + if [ ! -n "${statsport}" ]; then + statsport="0" + fi + +# ARMA 3 +elif [ "${engine}" == "realvirtuality" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "hostname" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\<hostname\>//g' | tr -d '=\"; ') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # admin password + if [ -f "${servercfgfullpath}" ]; then + adminpassword=$(grep "passwordAdmin" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\passwordAdmin//g' | tr -d '=\"; ') + if [ ! -n "${adminpassword}" ]; then + adminpassword="NOT SET" + fi + else + adminpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # server password + if [ -f "${servercfgfullpath}" ]; then + serverpassword=$(grep "password =" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\password//g' | tr -d '=\"; ') + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="NOT SET" + fi + else + slots="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ "${port}" != "" ]; then + port=${port} + fi + if [ ! -n "${port}" ]; then + port="0" + fi + + # query port + if [ "${port}" != "" ]; then + queryport=$((port + 1)) + fi + if [ ! -n "${queryport}" ]; then + queryport="0" + fi + + # master port + if [ "${port}" != "" ]; then + masterport=$((port + 2)) + fi + if [ ! -n "${masterport}" ]; then + masterport="0" + fi + +# Serious Sam +elif [ "${engine}" == "seriousengine35" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "prj_strMultiplayerSessionName" "${servercfgfullpath}" | sed 's/prj_strMultiplayerSessionName = //g' | tr -d '=\"; ') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # rcon password + if [ -f "${servercfgfullpath}" ]; then + rconpassword=$(grep "rcts_strAdminPassword" "${servercfgfullpath}" | sed 's/rcts_strAdminPassword = //g' | tr -d '=\"; ') + if [ ! -n "${rconpassword}" ]; then + rconpassword="NOT SET" + fi + else + rconpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="NOT SET" + fi + else + slots="\e[0;31mUNAVAILABLE\e[0m" + fi + + # game mode + if [ -f "${servercfgfullpath}" ]; then + gamemode=$(grep "gam_idGameMode" "${servercfgfullpath}" | grep -v "#" | sed 's/gam_idGameMode//g' | tr -d '=\"; ') + if [ ! -n "${gamemode}" ]; then + gamemode="NOT SET" + fi + else + gamemode="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "prj_uwPort" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="0" + fi + + # query port + if [ -f "${servercfgfullpath}" ]; then + queryport=$((port + 1)) + fi + if [ ! -n "${queryport}" ]; then + queryport="0" + fi + +# Source Engine Games +elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "hostname" "${servercfgfullpath}" | sed 's/hostname //g' | sed 's/"//g') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # server password + if [ -f "${servercfgfullpath}" ]; then + serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed 's/sv_password //g' | sed 's/"//g') + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # rcon password + if [ -f "${servercfgfullpath}" ]; then + rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed 's/rcon_password //g' | sed 's/"//g') + if [ ! -n "${rconpassword}" ]; then + rconpassword="NOT SET" + fi + else + rconpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + +# Spark (NS2: Combat) +elif [ "${engine}" == "spark" ]; then + + # query port + if [ -f "${servercfgfullpath}" ]; then + queryport=$((port + 1)) + fi + if [ ! -n "${queryport}" ]; then + queryport="0" + fi + +# Teamspeak 3 +elif [ "${gamename}" == "Teamspeak 3" ]; then + + # ip + if [ -f "${servercfgfullpath}" ]; then + # check if the ip exists in the config file. Failing this will fall back to the default. + configipcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') + fi + if [ -n "${configipcheck}" ]; then + ip=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') + fi + + # dbplugin + if [ -f "${servercfgfullpath}" ]; then + dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/\dbplugin=//g') + if [ ! -n "${dbplugin}" ]; then + dbplugin="NOT SET" + fi + else + dbplugin="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="9987" + fi + + # query port + if [ -f "${servercfgfullpath}" ]; then + queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${queryport}" ]; then + queryport="10011" + fi + + # file port + if [ -f "${servercfgfullpath}" ]; then + fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${fileport}" ]; then + fileport="30033" + fi + +# Teeworlds +elif [ "${engine}" == "teeworlds" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') + if [ ! -n "${servername}" ]; then + servername="unnamed server" + fi + else + servername="unnamed server" + fi + + # server password + if [ -f "${servercfgfullpath}" ]; then + serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ') + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # rcon password + if [ -f "${servercfgfullpath}" ]; then + rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ') + if [ ! -n "${rconpassword}" ]; then + rconpassword="NOT SET" + fi + else + rconpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="8303" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="12" + fi + else + slots="12" + fi + +# Terraria +elif [ "${engine}" == "terraria" ]; then + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="0" + fi + +# 7 Day To Die (unity3d) +elif [ "${gamename}" == "7 Days To Die" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # server password + if [ -f "${servercfgfullpath}" ]; then + serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # webadmin enabled + if [ -f "${servercfgfullpath}" ]; then + webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + if [ ! -n "${webadminenabled}" ]; then + webadminenabled="NOT SET" + fi + else + webadminenabled="\e[0;31mUNAVAILABLE\e[0m" + fi + + # webadmin port + if [ -f "${servercfgfullpath}" ]; then + webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${webadminport}" ]; then + webadminport="0" + fi + + # webadmin enabled + if [ -f "${servercfgfullpath}" ]; then + webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + if [ ! -n "${webadminenabled}" ]; then + webadminenabled="NOT SET" + fi + else + webadminenabled="\e[0;31mUNAVAILABLE\e[0m" + fi + + # webadmin password + if [ -f "${servercfgfullpath}" ]; then + webadminpass=$(grep "ControlPanelPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + if [ ! -n "${webadminpass}" ]; then + webadminpass="NOT SET" + fi + else + webadminpass="\e[0;31mUNAVAILABLE\e[0m" + fi + + # telnet enabled + if [ -f "${servercfgfullpath}" ]; then + telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + if [ ! -n "${telnetenabled}" ]; then + telnetenabled="NOT SET" + fi + else + telnetenabled="\e[0;31mUNAVAILABLE\e[0m" + fi + + # telnet port + if [ -f "${servercfgfullpath}" ]; then + telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${telnetport}" ]; then + telnetport="0" + fi + + # telnet password + if [ -f "${servercfgfullpath}" ]; then + telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + if [ ! -n "${telnetpass}" ]; then + telnetpass="NOT SET" + fi + else + telnetpass="\e[0;31mUNAVAILABLE\e[0m" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="NOT SET" + fi + else + slots="\e[0;31mUNAVAILABLE\e[0m" + fi + + # game mode + if [ -f "${servercfgfullpath}" ]; then + gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + if [ ! -n "${gamemode}" ]; then + gamemode="NOT SET" + fi + else + gamemode="\e[0;31mUNAVAILABLE\e[0m" + fi + + # game world + if [ -f "${servercfgfullpath}" ]; then + gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + if [ ! -n "${gameworld}" ]; then + gameworld="NOT SET" + fi + else + gameworld="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="0" + fi + + # query port + if [ -f "${servercfgfullpath}" ]; then + queryport=$((port + 1)) + fi + if [ ! -n "${queryport}" ]; then + queryport="0" + fi + +# Hurtworld (unity3d) +elif [ "${gamename}" == "Hurtworld" ]; then + + # server name + if [ -n "${servername}" ]; then + servername="${servername}" + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # server password + # not available yet + + # slots + if [ -n "${maxplayers}" ]; then + slots="${maxplayers}" + else + slots="NOT SET" + fi + + # game world + if [ -n "${map}" ]; then + gameworld="${map}" + else + gameworld="NO MAP SET" + fi + + # port + if [ -n "${port}" ]; then + port="${port}" + else + port="0" + fi + + # query port + if [ -n "${queryport}" ]; then + queryport="${queryport}" + else + queryport="0" + fi + +# Unreal Tournament +elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "ServerName=" "${servercfgfullpath}" | sed 's/ServerName=//g') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # server password + if [ -f "${servercfgfullpath}" ]; then + serverpassword=$(grep "GamePassword=" "${servercfgfullpath}" | sed 's/GamePassword=//g') + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # admin password + if [ -f "${servercfgfullpath}" ]; then + adminpassword=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/AdminPassword=//g') + if [ ! -n "${adminpassword}" ]; then + adminpassword="NOT SET" + fi + else + adminpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "Port=" "${servercfgfullpath}" | grep -v "Master" | grep -v "LAN" | grep -v "Proxy" | grep -v "Listen" | tr -d '\r' | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="0" + fi + + # query port + if [ -f "${servercfgfullpath}" ]; then + queryport=$((port + 1)) + fi + if [ ! -n "${queryport}" ]; then + queryport="0" + fi + + # gamespy query port + if [ -f "${servercfgfullpath}" ]; then + gsqueryport=$(grep "OldQueryPortNumber=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') + fi + if [ ! -n "${gsqueryport}" ]; then + gsqueryport="0" + fi + + # query port + if [ -f "${servercfgfullpath}" ]; then + udplinkport=$((port + 2)) + fi + if [ ! -n "${udplinkport}" ]; then + udplinkport="0" + fi + + # webadmin enabled + if [ -f "${servercfgfullpath}" ]; then + webadminenabled=$(grep "bEnabled=" "${servercfgfullpath}" | sed 's/bEnabled=//g' | tr -d '\r') + if [ ! -n "${webadminenabled}" ]; then + webadminenabled="NOT SET" + fi + else + webadminenabled="\e[0;31mUNAVAILABLE\e[0m" + fi + + # webadmin port + if [ -f "${servercfgfullpath}" ]; then + webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') + fi + if [ ! -n "${webadminport}" ]; then + webadminport="0" + fi + + if [ "${engine}" == "unreal" ]; then + + # webadmin user + if [ -f "${servercfgfullpath}" ]; then + webadminuser=$(grep "AdminUsername=" "${servercfgfullpath}" | sed 's/\AdminUsername=//g') + if [ ! -n "${webadminuser}" ]; then + webadminuser="NOT SET" + fi + else + webadminuser="\e[0;31mUNAVAILABLE\e[0m" + fi + + # webadmin password + if [ -f "${servercfgfullpath}" ]; then + webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 2 | grep "AdminPassword=" | sed 's/\AdminPassword=//g') + if [ ! -n "${webadminpass}" ]; then + webadminpass="NOT SET" + fi + else + webadminpass="\e[0;31mUNAVAILABLE\e[0m" + fi + + else + + # webadmin user + if [ -f "${servercfgfullpath}" ]; then + webadminuser=$(grep "AdminName=" "${servercfgfullpath}" | sed 's/\AdminName=//g') + if [ ! -n "${webadminuser}" ]; then + webadminuser="NOT SET" + fi + else + webadminuser="\e[0;31mUNAVAILABLE\e[0m" + fi + + # webadmin password + if [ -f "${servercfgfullpath}" ]; then + webadminpass=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/\AdminPassword=//g') + if [ ! -n "${webadminpass}" ]; then + webadminpass="NOT SET" + fi + else + webadminpass="\e[0;31mUNAVAILABLE\e[0m" + fi + + fi + +# ARK: Survivaial Evolved +elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then + + # server name + if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "SessionName=" "${servercfgfullpath}" | sed 's/SessionName=//g') + if [ ! -n "${servername}" ]; then + servername="NOT SET" + fi + else + servername="\e[0;31mUNAVAILABLE\e[0m" + fi + + # server password + if [ -f "${servercfgfullpath}" ]; then + serverpassword=$(grep "ServerPassword=" "${servercfgfullpath}" | sed 's/ServerPassword=//g') + if [ ! -n "${serverpassword}" ]; then + serverpassword="NOT SET" + fi + else + serverpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # admin password + if [ -f "${servercfgfullpath}" ]; then + adminpassword=$(grep "ServerAdminPassword=" "${servercfgfullpath}" | sed 's/ServerAdminPassword=//g') + if [ ! -n "${adminpassword}" ]; then + adminpassword="NOT SET" + fi + else + adminpassword="\e[0;31mUNAVAILABLE\e[0m" + fi + + # slots + if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') + if [ ! -n "${slots}" ]; then + slots="NOT SET" + fi + else + slots="\e[0;31mUNAVAILABLE\e[0m" + fi + + # port + if [ -f "${servercfgfullpath}" ]; then + port=$(grep "Port=" "${servercfgfullpath}" | grep -v "RCONPort=" | grep -v "QueryPort=" | tr -cd '[:digit:]') + fi + if [ ! -n "${port}" ]; then + port="0" + fi + + # rcon port + if [ -f "${servercfgfullpath}" ]; then + rconport=$(grep "RCONPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${rconport}" ]; then + rconport="0" + fi + + # query port + if [ -f "${servercfgfullpath}" ]; then + queryport=$(grep "QueryPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') + fi + if [ ! -n "${queryport}" ]; then + queryport="0" + fi + +fi diff --git a/functions/info_distro.sh b/lgsm/functions/info_distro.sh similarity index 100% rename from functions/info_distro.sh rename to lgsm/functions/info_distro.sh diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh new file mode 100644 index 000000000..8b7b38cd4 --- /dev/null +++ b/lgsm/functions/info_glibc.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# LGSM info_glibc.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="260216" + +# Description: stores details on servers Glibc requirements. + +if [ "${gamename}" == "Blade Symphony" ]; then + glibc_required="2.15" + glibcfix="yes" +elif [ "${gamename}" == "BrainBread 2" ]; then + glibc_required="2.17" +elif [ "${gamename}" == "Double Action: Boogaloo" ]; then + glibc_required="2.15" + glibcfix="yes" +elif [ "${gamename}" == "Fistful of Frags" ]; then + glibc_required="2.15" + glibcfix="yes" +elif [ "${gamename}" == "Garry's Mod" ]; then + glibc_required="2.15" + glibcfix="yes" +elif [ "${gamename}" == "Insurgency" ]; then + glibc_required="2.15" + glibcfix="yes" +elif [ "${gamename}" == "No More Room in Hell" ]; then + glibc_required="2.15" + glibcfix="yes" +elif [ "${gamename}" == "Quake Live" ]; then + glibc_required="2.15" + glibcfix="no" +elif [ "${engine}" == "avalanche" ]; then + glibc_required="2.13" + glibcfix="yes" +elif [ "${engine}" == "dontstarve" ]; then + glibc_required="2.15" + glibcfix="no" +elif [ "${engine}" == "projectzomboid" ]; then + glibc_required="2.15" + glibcfix="yesno" +elif [ "${engine}" == "realvirtuality" ]; then + glibc_required="2.13" + glibcfix="yes" +elif [ "${engine}" == "seriousengine35" ]; then + glibc_required="2.13" + glibcfix="yes" +elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + glibc_required="2.3.6" + glibcfix="no" +elif [ "${engine}" == "spark" ]; then + glibc_required="2.15" + glibcfix="yes" +elif [ "${engine}" == "starbound" ]; then + glibc_required="2.12" + glibcfix="no" +elif [ "${engine}" == "unreal" ]; then + glibc_required="2.1" + glibcfix="no" +elif [ "${engine}" == "unreal2" ]; then + glibc_required="2.4" + glibcfix="no" +elif [ "${engine}" == "unreal4" ]; then + glibc_required="2.14" + glibcfix="no" +elif [ "${engine}" == "unity3d" ]; then + glibc_required="2.15" + glibcfix="no" +else + glibc_required="UNKNOWN" + glibcfix="no" +fi diff --git a/functions/info_ts3status.sh b/lgsm/functions/info_ts3status.sh similarity index 100% rename from functions/info_ts3status.sh rename to lgsm/functions/info_ts3status.sh diff --git a/lgsm/functions/install_complete.sh b/lgsm/functions/install_complete.sh new file mode 100644 index 000000000..5ea9a127b --- /dev/null +++ b/lgsm/functions/install_complete.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# LGSM install_complete.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +local modulename="Install" + +if [ "${gamename}" == "Don't Starve Together" ]; then + echo "" + echo "An Authentication Token is required to run this server!" + echo "Follow the instructions in this link to obtain this key" + echo " http://gameservermanagers.com/dst-auth-token" +fi +echo "=================================" +echo "Install Complete!" +fn_scriptlog "Install Complete!" +echo "" +echo "To start server type:" +echo "./${selfname} start" +echo "" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh new file mode 100644 index 000000000..75ca40618 --- /dev/null +++ b/lgsm/functions/install_config.sh @@ -0,0 +1,349 @@ +#!/bin/bash +# LGSM install_config.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="220216" + +local modulename="Install" + +fn_defaultconfig(){ + echo "creating ${servercfg} config file." + cp -v "${servercfgdefault}" "${servercfgfullpath}" + sleep 1 +} + +fn_userinputconfig(){ +# allow user to input server name and password +if [ -z "${autoinstall}" ]; then + echo "" + echo "Configuring ${gamename} Server" + echo "=================================" + sleep 1 + read -p "Enter server name: " servername + read -p "Enter rcon password: " rconpass +else + servername="${servicename}" + rconpass="rconpassword" +fi +echo "changing hostname." +sed -i "s/\"<hostname>\"/\"${servername}\"/g" "${servercfgfullpath}" +sleep 1 +echo "changing rconpassword." +sed -i "s/\"<rconpassword>\"/\"${rconpass}\"/g" "${servercfgfullpath}" +sleep 1 +} + +fn_arma3config(){ +fn_defaultconfig +echo "creating ${networkcfg} config file." +cp -v "${networkcfgdefault}" "${networkcfgfullpath}" +sleep 1 +echo "" +} + +fn_goldsourceconfig(){ +fn_defaultconfig + +# server.cfg redirects to ${servercfg} for added security +echo "creating server.cfg." +touch "server.cfg" +sleep 1 +echo "creating redirect." +echo "server.cfg > ${servercfg}." +echo "exec ${servercfg}" > "server.cfg" +sleep 1 + +# creating other files required +echo "creating listip.cfg." +touch "${systemdir}/listip.cfg" +sleep 1 +echo "creating banned.cfg." +touch "${systemdir}/banned.cfg" +sleep 1 + +fn_userinputconfig +echo "" +} + +fn_serious3config(){ +fn_defaultconfig +echo "" +echo "To edit ${gamename} server config use SS3 Server GUI 3 tool" +echo "http://mrag.nl/sgui3/" +sleep 1 +echo "" +} + +fn_sourceconfig(){ +fn_defaultconfig + +# server.cfg redirects to ${servercfg} for added security +echo "creating server.cfg." +touch "server.cfg" +sleep 1 +echo "creating redirect." +echo "server.cfg > ${servercfg}." +echo "exec ${servercfg}" > "server.cfg" +sleep 1 + +fn_userinputconfig +echo "" +} + +fn_teeworldsconfig(){ +fn_defaultconfig + +echo "adding logfile location to config." +sed -i "s@\"<logfile>\"@\"${gamelog}\"@g" "${servercfgfullpath}" +sleep 1 +echo "removing password holder." +sed -i "s/<password>//" "${servercfgfullpath}" +sleep 1 + +fn_userinputconfig +echo "" +} + +fn_ut99config(){ +echo "${servercfgdefault} > ${servercfgfullpath}" +tr -d '\r' < "${servercfgdefault}" > "${servercfgfullpath}" +sleep 1 +echo "" +echo "Configuring ${gamename} Server" +echo "=================================" +sleep 1 +echo "enabling WebAdmin." +sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" +sleep 1 +echo "setting WebAdmin port to 8076." +sed -i '467i\ListenPort=8076' "${servercfgfullpath}" +sleep 1 +echo "" +} + +fn_unreal2config(){ +fn_defaultconfig +echo "" +echo "Configuring ${gamename} Server" +echo "=================================" +sleep 1 +echo "setting WebAdmin username and password." +sed -i 's/AdminName=/AdminName=admin/g' "${servercfgfullpath}" +sed -i 's/AdminPassword=/AdminPassword=admin/g' "${servercfgfullpath}" +sleep 1 +echo "enabling WebAdmin." +sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" +if [ "${gamename}" == "Unreal Tournament 2004" ]; then + sleep 1 + echo "setting WebAdmin port to 8075." + sed -i 's/ListenPort=80/ListenPort=8075/g' "${servercfgfullpath}" +fi +sleep 1 +echo "" +} + +echo "" +if [ "${gamename}" != "Hurtworld" ]; then +echo "Creating Configs" +echo "=================================" +sleep 1 + mkdir -pv "${servercfgdir}" + cd "${servercfgdir}" + githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}" +fi + +if [ "${gamename}" == "7 Days To Die" ]; then + fn_defaultconfig +elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then + wget -N /dev/null ${githuburl}/ARKSurvivalEvolved/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + echo -e "downloading lgsm-default.ini...\c" + fn_defaultconfig +elif [ "${gamename}" == "ARMA 3" ]; then + echo -e "downloading lgsm-default.server.cfg...\c" + wget -N /dev/null ${githuburl}/Arma3/cfg/lgsm-default.server.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + echo -e "downloading lgsm-default.network.cfg...\c" + wget -N /dev/null ${githuburl}/Arma3/cfg/lgsm-default.network.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_arma3config +elif [ "${gamename}" == "BrainBread 2" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/BrainBread2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/BlackMesa/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Blade Symphony" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/BladeSymphony/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig +elif [ "${gamename}" == "Codename CURE" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CodenameCURE/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig + +elif [ "${gamename}" == "Counter Strike 1.6" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CounterStrike/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig +elif [ "${gamename}" == "Counter Strike: Condition Zero" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CounterStrikeConditionZero/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig +elif [ "${gamename}" == "Counter Strike: Global Offensive" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Counter Strike: Source" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CounterStrikeSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Day of Defeat" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/DayOfDefeat/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig +elif [ "${gamename}" == "Day of Defeat: Source" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/DayOfDefeatSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Don't Starve Together" ]; then + echo -e "downloading lgsm-default.ini...\c" + wget -N /dev/null ${githuburl}/DontStarveTogether/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig +elif [ "${gamename}" == "Double Action: Boogaloo" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/DoubleActionBoogaloo/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Fistful of Frags" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/FistfulOfFrags/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Garry's Mod" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/GarrysMod/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "GoldenEye: Source" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/GoldenEyeSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Half Life 2: Deathmatch" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/HalfLife2Deathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Half Life: Deathmatch" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/HalfLifeDeathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig +elif [ "${gamename}" == "Insurgency" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/Insurgency/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Just Cause 2" ]; then + fn_defaultconfig +elif [ "${gamename}" == "Killing Floor" ]; then + fn_unreal2config +elif [ "${gamename}" == "Left 4 Dead" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/Left4Dead/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Left 4 Dead 2" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/Left4Dead2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "No More Room in Hell" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/NoMoreRoomInHell/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Natural Selection 2" ]; then + echo -e "no configs required." + sleep 1 + echo "" +elif [ "${gamename}" == "Pirates, Vikings, and Knights II" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/PiratesVikingandKnightsII/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Quake Live" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/QuakeLive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig + fn_userinputconfig +elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then + fn_unreal2config +elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then + echo -e "downloading lgsm-default.ini...\c" + wget -N /dev/null ${githuburl}/SeriousSam3BFE/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_serious3config +elif [ "${gamename}" == "Rust" ]; then + echo -e "downloading server.cfg...\c" + wget -N /dev/null ${githuburl}/Rust/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig +elif [ "${gamename}" == "Sven Co-op" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/SvenCoop/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig +elif [ "${gamename}" == "Teamspeak 3" ]; then + echo -e "downloading lgsm-default.ini...\c" + wget -N /dev/null ${githuburl}/TeamSpeak3/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig +elif [ "${gamename}" == "Team Fortress 2" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/TeamFortress2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Team Fortress Classic" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/TeamFortressClassic/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig +elif [ "${gamename}" == "Teeworlds" ]; then + echo -e "downloading ctf.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/ctf.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + echo -e "downloading dm.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/dm.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + echo -e "downloading duel.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/duel.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + echo -e "downloading tdm.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/tdm.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_teeworldsconfig +elif [ "${gamename}" == "Terraria" ]; then + echo -e "downloading lgsm-default.txt...\c" + wget -N /dev/null ${githuburl}/Terraria/cfg/lgsm-default.txt 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig +elif [ "${gamename}" == "Unreal Tournament 2004" ]; then + fn_unreal2config +elif [ "${gamename}" == "Unreal Tournament 99" ]; then + fn_ut99config +fi diff --git a/lgsm/functions/install_gslt.sh b/lgsm/functions/install_gslt.sh new file mode 100644 index 000000000..5bd309f28 --- /dev/null +++ b/lgsm/functions/install_gslt.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# LGSM install_gslt.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="270216" + +# Description: Configures GSLT. + +local modulename="Install" + +echo "" +echo "Game Server Login Token" +echo "============================" +sleep 1 +if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then + echo "GSLT is required to run a public ${gamename} server" + fn_scriptlog "GSLT is required to run a public ${gamename} server" +else + echo "GSLT is an optional feature for ${gamename} server" + fn_scriptlog "GSLT is an optional feature for ${gamename} server" +fi + +echo "Get more info and a token here:" +echo "http://gameservermanagers.com/gslt" +fn_scriptlog "Get more info and a token here:" +fn_scriptlog "http://gameservermanagers.com/gslt" +echo "" +if [ -z "${autoinstall}" ]; then + echo "Enter token below (Can be blank)." + echo -n "GSLT TOKEN: " + read token + sed -i -e "s/gslt=\"\"/gslt=\"${token}\"/g" "${rootdir}/${selfname}" +fi +sleep 1 +echo "The GSLT can be changed by editing ${selfname}." +fn_scriptlog "The GSLT can be changed by editing ${selfname}." +echo "" \ No newline at end of file diff --git a/functions/install_gsquery.sh b/lgsm/functions/install_gsquery.sh similarity index 100% rename from functions/install_gsquery.sh rename to lgsm/functions/install_gsquery.sh diff --git a/lgsm/functions/install_header.sh b/lgsm/functions/install_header.sh new file mode 100644 index 000000000..da8b7bf6c --- /dev/null +++ b/lgsm/functions/install_header.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# LGSM install_header.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="190216" + +local modulename="Install" + +clear +echo "=================================" +echo "${gamename}" +echo "Linux Game Server Manager" +echo "by Daniel Gibbs" +echo "Contributors: http://goo.gl/qLmitD" +echo "http://gameservermanagers.com" +echo "=================================" diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh new file mode 100644 index 000000000..c7ea4b789 --- /dev/null +++ b/lgsm/functions/install_logs.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# LGSM install_logs.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="270216" + +local modulename="Install" + +if [ "${checklogs}" != "1" ]; then + echo "" + echo "Creating log directorys" + echo "=================================" +fi +sleep 1 +# Create dir's for the script and console logs +mkdir -v "${rootdir}/log" +mkdir -v "${scriptlogdir}" +touch "${scriptlog}" +if [ -n "${consolelogdir}" ]; then + mkdir -v "${consolelogdir}" + touch "${consolelog}" +fi + +# If a server is source or goldsource, Teamspeak 3, Starbound, Project Zomhoid create a symbolic link to the game server logs. +if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]||[ "${gamename}" == "Teamspeak 3" ]||[ "${engine}" == "starbound" ]||[ "${engine}" == "projectzomboid" ]; then + if [ ! -h "${rootdir}/log/server" ]; then + ln -nfsv "${gamelogdir}" "${rootdir}/log/server" + fi +fi + +# If a server is unreal2 or unity3d create a dir. +if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Teeworlds" ]||[ "${gamename}" == "seriousengine35" ]; then + mkdir -pv "${gamelogdir}" +fi + +# If server uses SteamCMD create a symbolic link to the Steam logs. +if [ -d "${rootdir}/Steam/logs" ]; then + if [ ! -h "${rootdir}/log/steamcmd" ]; then + ln -nfsv "${rootdir}/Steam/logs" "${rootdir}/log/steamcmd" + fi +fi +sleep 1 +fn_scriptlog "logs installed" \ No newline at end of file diff --git a/lgsm/functions/install_retry.sh b/lgsm/functions/install_retry.sh new file mode 100644 index 000000000..7f04ac9ed --- /dev/null +++ b/lgsm/functions/install_retry.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# LGSM install_retry.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +local modulename="Install" + +while true; do + read -e -i "y" -p "Retry install? [Y/n]" yn + case $yn in + [Yy]* ) command_install.sh; exit;; + [Nn]* ) echo Exiting; exit;; + * ) echo "Please answer yes or no.";; + esac +done \ No newline at end of file diff --git a/lgsm/functions/install_server_dir.sh b/lgsm/functions/install_server_dir.sh new file mode 100644 index 000000000..ab73ecfd2 --- /dev/null +++ b/lgsm/functions/install_server_dir.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# LGSM install_serverdir.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +local modulename="Install" + +echo "" +echo "Server Directory" +echo "=================================" +sleep 1 +echo "" +pwd +echo "" +if [ -d "${filesdir}" ]; then + fn_print_warning_nl "A server is already installed here." +fi +if [ -z "${autoinstall}" ]; then + while true; do + read -e -i "y" -p "Continue [y/N]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) exit;; + * ) echo "Please answer yes or no.";; + esac + done +fi +if [ ! -d "${filesdir}" ]; then + mkdir -v "${filesdir}" +fi +sleep 1 \ No newline at end of file diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh new file mode 100644 index 000000000..d6655689b --- /dev/null +++ b/lgsm/functions/install_server_files.sh @@ -0,0 +1,110 @@ +#!/bin/bash +# LGSM install_server_files.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="270216" + +local modulename="Install" + +fn_install_server_files(){ +if [ "${gamename}" == "Unreal Tournament 99" ]; then + fileurl="http://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" +elif [ "${gamename}" == "Unreal Tournament 2004" ]; then + fileurl="http://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" +fi +fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" +fn_dl_extract "${filedir}" "${filename}" "${filesdir}" +} + +fn_install_server_files_steamcmd(){ +counter="0" +while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; 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_print_warning_nl "SteamCMD did not complete the download, retrying: Attempt ${counter}" + fn_scriptlog "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 + local exitcode=$? + else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit + local exitcode=$? + 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 + local exitcode=$? + else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" -validate +quit + local exitcode=$? + fi + fi + elif [ "${counter}" -ge "11" ]; then + fn_print_failure_nl "SteamCMD did not complete the download, too many retrys" + fn_scriptlog "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 + fn_print_infomation_nl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue." + 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 + local exitcode=$? + done +fi +} + +echo "" +echo "Installing ${gamename} Server" +echo "=================================" +sleep 1 +if [ -n "${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 diff --git a/lgsm/functions/install_steamcmd.sh b/lgsm/functions/install_steamcmd.sh new file mode 100644 index 000000000..de371bbd8 --- /dev/null +++ b/lgsm/functions/install_steamcmd.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# LGSM install_steamcmd.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Downloads SteamCMD on install. + +local modulename="Install" + +echo "" +echo "Installing SteamCMD" +echo "=================================" +sleep 1 +check_steamcmd.sh diff --git a/lgsm/functions/install_ts3.sh b/lgsm/functions/install_ts3.sh new file mode 100644 index 000000000..5cf2f0f85 --- /dev/null +++ b/lgsm/functions/install_ts3.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# LGSM install_ts3.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +local modulename="Install" + +info_distro.sh +# Gets the teamspeak server architecture +if [ "${arch}" == "x86_64" ]; then + ts3arch="amd64" +elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then + ts3arch="x86" +else + fn_print_failure "${arch} is an unsupported architecture" + exit 1 +fi + +# 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 href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp + +# Replaces dots with spaces to split up the number. e.g 3 0 12 1 is 3.0.12.1 this allows correct sorting + cat .ts3_version_numbers_unsorted.tmp | tr "." " " > .ts3_version_numbers_digit.tmp +# Sorts versions in to correct order +# merges 2 files and orders by each column in order allowing these version numbers to be sorted in order +paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp | awk '{print $1,$2,$3,$4 " " $0;}'| sort -k1rn -k2rn -k3rn -k4rn | awk '{print $NF}' > .ts3_version_numbers.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.tmp + +# tidy up +rm -f ".ts3_version_numbers_digit.tmp" +rm -f ".ts3_version_numbers_unsorted.tmp" +rm -f ".ts3_version_numbers.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" + sleep 2 + exit 1 +fi + +cd "${rootdir}" +echo -e "downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" +wget -N /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 2>&1 | grep -F HTTP | cut -c45-| uniq +sleep 1 +echo -e "extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" +tar -xf "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" 2> ".${servicename}-tar-error.tmp" +local status=$? +if [ ${status} -eq 0 ]; then + echo "OK" +else + echo "FAIL - Exit status ${status}" + sleep 1 + cat ".${servicename}-tar-error.tmp" + rm ".${servicename}-tar-error.tmp" + exit $? +fi +echo -e "copying to ${filesdir}...\c" +cp -R "${rootdir}/teamspeak3-server_linux_${ts3arch}/"* "${filesdir}" 2> ".${servicename}-cp-error.tmp" +local status=$? +if [ ${status} -eq 0 ]; then + echo "OK" +else + echo "FAIL - Exit status ${status}" + sleep 1 + cat ".${servicename}-cp-error.tmp" + rm ".${servicename}-cp-error.tmp" + exit $? +fi +rm -f "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" +rm -rf "${rootdir}/teamspeak3-server_linux_${ts3arch}" diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh new file mode 100644 index 000000000..61e2db7d4 --- /dev/null +++ b/lgsm/functions/install_ts3db.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# LGSM fn_install_ts3_mariadb function +# Author: Daniel Gibbs +# Contributor: PhilPhonic +# Website: http://gameservermanagers.com +lgsm_version="271215" + +local modulename="Install" + +fn_install_ts3db_mariadb(){ + echo "" + echo "checking if libmariadb2 is installed" + echo "=================================" + sleep 1 + ldd ${filesdir}/libts3db_mariadb.so | grep "libmariadb.so.2 => not found" + if [ $? -eq 0 ]; then + echo "libmariadb2 not installed. Please install it first." + echo "exiting..." + exit + else + echo "libmariadb2 installed." + fi + echo "" + echo "Configuring ${gamename} Server for MariaDB/MySQL" + echo "=================================" + sleep 1 + read -p "Enter MariaDB hostname: " mariahostname + read -p "Enter MariaDB port: " mariaport + read -p "Enter MariaDB username: " mariausername + read -p "Enter MariaDB password: " mariapassword + read -p "Enter MariaDB database name: " mariadbname + echo "updating config." + echo "[config]" >> ${servercfgdir}/ts3db_mariadb.ini + echo "host='${mariahostname}'" >> ${servercfgdir}/ts3db_mariadb.ini + echo "port='${mariaport}'" >> ${servercfgdir}/ts3db_mariadb.ini + echo "username='${mariausername}'" >> ${servercfgdir}/ts3db_mariadb.ini + echo "password='${mariapassword}'" >> ${servercfgdir}/ts3db_mariadb.ini + echo "database='${mariadbname}'" >> ${servercfgdir}/ts3db_mariadb.ini + echo "socket=" >> ${servercfgdir}/ts3db_mariadb.ini + sed -i "s/dbplugin=ts3db_sqlite3/dbplugin=ts3db_mariadb/g" "${servercfgfullpath}" + sed -i "s/dbpluginparameter=/dbpluginparameter=ts3db_mariadb.ini/g" "${servercfgfullpath}" + sed -i "s/dbsqlcreatepath=create_sqlite\//dbsqlcreatepath=create_mariadb\//g" "${servercfgfullpath}" + echo "=================================" + sleep 1 +} + +if [ -z "${autoinstall}" ]; then + echo "" + while true; do + read -e -i "n" -p "Do you want to use MariaDB/MySQL instead of sqlite (Database Server including user and database already has to be set up!)? [y/N]" yn + case $yn in + [Yy]* ) fn_install_ts3db_mariadb && break;; + [Nn]* ) break;; + * ) echo "Please answer yes or no.";; + esac + done +else +fn_print_warning_nl "./${selfname} auto-install is uses sqlite. For MariaDB/MySQL use ./${selfname} install" +fi + +## Get privilege key +echo "" +echo "Getting privilege key" +echo "=================================" +sleep 1 +echo "IMPORANT! Save these details for later." +sleep 1 +cd "${executabledir}" +./ts3server_startscript.sh start inifile=ts3-server.ini +sleep 5 +./ts3server_startscript.sh stop diff --git a/lgsm/functions/install_ut2k4_key.sh b/lgsm/functions/install_ut2k4_key.sh new file mode 100644 index 000000000..53b603de1 --- /dev/null +++ b/lgsm/functions/install_ut2k4_key.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# LGSM install_ut2k4_key.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +local modulename="Install" + +echo "" +echo "Enter ${gamename} CD Key" +echo "=================================" +sleep 1 +echo "To get your server listed on the Master Server list" +echo "you must get a free CD key. Get a key here:" +echo "http://www.unrealtournament.com/ut2004server/cdkey.php" +echo "" +if [ -z "${autoinstall}" ]; then + echo "Once you have the key enter it below" + echo -n "KEY: " + read CODE + echo ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey" + if [ -f "${systemdir}/cdkey" ]; then + fn_scriptlog "UT2K4 Server CD Key created" +else + echo "You can add your key using the following command" + echo "./${selfname} server-cd-key" +fi +echo "" \ No newline at end of file diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh new file mode 100644 index 000000000..30de59ea7 --- /dev/null +++ b/lgsm/functions/logs.sh @@ -0,0 +1,102 @@ +#!/bin/bash +# LGSM logs.sh function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: http://gameservermanagers.com +lgsm_version="230216" + +# Description: Acts as a log rotater, removing old logs. + +local modulename="Log Manager" + +# Check if logfile variable and file exist, create logfile if it doesn't exist +if [ -n "${consolelog}" ]; then + if [ ! -e "${consolelog}" ]; then + touch "${consolelog}" + fi +fi + +# For games not displaying a console, and having logs into their game folder +if [ -n "${gamelogfile}" ]; then + if [ -n "$(find "${systemdir}" -name "gamelog*.log")" ]; then + fn_printinfo "Moving game logs to ${gamelogdir}" + fn_scriptlog "Moving game logs to ${gamelogdir}" + echo -en "\n" + sleep 1 + mv "${systemdir}"/gamelog*.log "${gamelogdir}" + fi +fi + +# Log manager will start the cleanup if it finds logs older than "${logdays}" +if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then + fn_print_dots "Starting" + # Set addon logs directories + sourcemodlogdir="${systemdir}/addons/sourcemod/logs" + ulxlogdir="${systemdir}/data/ulx_logs" + darkrplogdir="${systemdir}/data/darkrp_logs" + legacyserverlogdir="${rootdir}/log/server" + # Setting up counting variables + scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" ; legacycount="0" + sleep 1 + fn_print_ok_nl "Starting" + fn_scriptlog "Starting" + fn_print_info_nl "Removing logs older than "${logdays}" days" + fn_scriptlog "Removing logs older than "${logdays}" days" + # Logging logfiles to be removed according to "${logdays}", counting and removing them + # Script logfiles + find "${scriptlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" + scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${scriptlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; + # SRCDS and unreal logfiles + if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then + find "${gamelogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" + gamecount=$(find "${gamelogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${gamelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; + fi + # Console logfiles + if [ -n "${consolelog}" ]; then + find "${consolelogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" + consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; + fi + # Source addons logfiles + if [ "${engine}" == "source" ]; then + # SourceMod logfiles + if [ -d "${sourcemodlogdir}" ]; then + find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" + smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${sourcemodlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; + fi + # Garry's Mod logfiles + if [ "${gamename}" == "Garry's Mod" ]; then + # ULX logfiles + if [ -d "${ulxlogdir}" ]; then + find "${ulxlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" + ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${ulxlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; + fi + # DarkRP logfiles + if [ -d "${darkrplogdir}" ]; then + find "${darkrplogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" + darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${darkrplogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; + fi + fi + fi + # Legacy support + if [ -d "${legacyserverlogdir}" ]; then + find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" + legacycount=$(find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"|wc -l) + find "${legacyserverlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; + # Remove folder if empty + if [ ! "$(ls -A "${legacyserverlogdir}")" ]; then + rm -rf "${legacyserverlogdir}" + fi + fi + + # Count total amount of files removed + count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount} + ${legacycount})) + # Job done + fn_print_ok_nl "Removed ${count} log files" + fn_scriptlog "Removed ${count} log files" +fi diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh new file mode 100644 index 000000000..058351770 --- /dev/null +++ b/lgsm/functions/monitor_gsquery.sh @@ -0,0 +1,93 @@ +#!/bin/bash +# LGSM monitor_gsquery.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="270216" + +# Description: uses gsquery.py to query the server port. +# Detects if the server has frozen with the proccess still running. + +local modulename="Monitor" + +# Forces legecy servers to use gsquery as vat gsquery is not present in legecy +if [ -z "${gsquery}" ]; then + gsquery="yes" +fi + +if [ "${gsquery}" == "yes" ]; then + + # Downloads gsquery.py if missing + if [ ! -f "${functionsdir}/gsquery.py" ]; then + fn_fetch_file_github "functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" "nomd5" + fi + + info_config.sh + + if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then + port=$((port + 1)) + elif [ "${engine}" == "spark" ]; then + port=$((port + 1)) + fi + + if [ -z "${queryport}" ]; then + port="${queryport}" + fi + + fn_print_info "Querying port: gsquery.py enabled" + fn_scriptlog "Querying port: gsquery.py enabled" + sleep 1 + + # Will query up to 4 times every 15 seconds. + # Servers changing map can return a failure. + # Will Wait up to 60 seconds to confirm server is down giving server time to change map. + totalseconds=0 + for queryattempt in {1..5}; do + fn_print_dots "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : " + fn_print_querying_eol + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : QUERYING" + + gsquerycmd=$("${functionsdir}"/gsquery.py -a "${ip}" -p 1 -e "${engine}" 2>&1) + exitcode=$? + + sleep 1 + if [ "${exitcode}" == "0" ]; then + # Server OK + fn_print_ok "Querying port: ${ip}:${port} : ${queryattempt} : " + fn_print_ok_eol + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : OK" + sleep 1 + exit + else + # Server failed query + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : ${gsquerycmd}" + + if [ "${queryattempt}" == "5" ]; then + # Server failed query 4 times confirmed failure + fn_print_fail "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : " + fn_print_fail_eol_nl + fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : FAIL" + sleep 1 + + # Send email notification if enabled + if [ "${emailnotification}" == "on" ]; then + subject="${servicename} Monitor - Starting ${servername}" + failurereason="Failed to query ${servicename}: ${gsquerycmd}" + actiontaken="restarted ${servicename}" + email.sh + fi + fn_restart + break + fi + + # Seconds counter + for seconds in {1..15}; do + fn_print_fail "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : \e[0;31m${gsquerycmd}\e[0m" + totalseconds=$((totalseconds + 1)) + sleep 1 + if [ "${seconds}" == "15" ]; then + break + fi + done + fi + done +fi \ No newline at end of file diff --git a/lgsm/functions/update_check.sh b/lgsm/functions/update_check.sh new file mode 100644 index 000000000..579a84f4b --- /dev/null +++ b/lgsm/functions/update_check.sh @@ -0,0 +1,326 @@ +#!/bin/bash +# LGSM update_check.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="060216" + +# Description: Checks if a server update is available. + +local modulename="Update" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +### SteamCMD Update Checker ### + +fn_appmanifestinfo(){ + appmanifestfile=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf") + appmanifestfilewc=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf"|wc -l) +} + +fn_appmanifestcheck(){ +fn_appmanifestinfo +# Multiple or no matching appmanifest files may sometimes be available. +# This is an error is corrected below if required. +if [ "${appmanifestfilewc}" -ge "2" ]; then + sleep 1 + fn_print_warn "Multiple appmanifest_${appid}.acf files found" + fn_scriptlog "Warning! Multiple appmanifest_${appid}.acf files found" + sleep 2 + fn_print_dots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files" + sleep 1 + for appfile in ${appmanifestfile}; do + rm "${appfile}" + done + appmanifestfilewc1="${appmanifestfilewc}" + fn_appmanifestinfo + if [ "${appmanifestfilewc}" -ge "2" ]; then + fn_print_fail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" + fn_scriptlog "Failure! Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" + sleep 1 + echo "" + echo " Check user permissions" + for appfile in ${appmanifestfile}; do + echo " ${appfile}" + done + exit 1 + else + sleep 1 + fn_print_ok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" + fn_scriptlog "Success! Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" + sleep 1 + fn_print_info_nl "Forcing update to correct issue" + fn_scriptlog "Forcing update to correct issue" + sleep 1 + update_dl.sh + update_check.sh + fi +elif [ "${appmanifestfilewc}" -eq "0" ]; then + if [ "${forceupdate}" == "1" ]; then + fn_print_fail "Still no appmanifest_${appid}.acf found: Unable to update" + fn_scriptlog "Warning! Still no appmanifest_${appid}.acf found: Unable to update" + exit 1 + fi + forceupdate=1 + fn_print_warn "No appmanifest_${appid}.acf found" + fn_scriptlog "Warning! No appmanifest_${appid}.acf found" + sleep 2 + fn_print_info_nl "Forcing update to correct issue" + fn_scriptlog "Forcing update to correct issue" + sleep 1 + update_dl.sh + update_check.sh +fi +} + +fn_logupdaterequest(){ +# Checks for server update requests from server logs. +fn_print_dots "Checking for update: Server logs" +fn_scriptlog "Checking for update: Server logs" +sleep 1 +requestrestart=$(grep -Ec "MasterRequestRestart" "${consolelog}") +if [ "${requestrestart}" -ge "1" ]; then + fn_print_ok_nl "Checking for update: Server logs: Update requested" + sleep 1 + echo "" + echo -ne "Applying update.\r" + sleep 1 + echo -ne "Applying update..\r" + sleep 1 + echo -ne "Applying update...\r" + sleep 1 + echo -ne "\n" + tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") + unset updateonstart + if [ "${tmuxwc}" -eq 1 ]; then + command_stop.sh + update_dl.sh + command_start.sh + else + update_dl.sh + fi +else + fn_print_ok "Checking for update: Server logs: No update requested" + sleep 1 +fi +} + +fn_steamcmdcheck(){ +fn_appmanifestcheck +# Checks for server update from SteamCMD +fn_print_dots "Checking for update: SteamCMD" +fn_scriptlog "Checking for update: SteamCMD" +sleep 1 + +# Gets currentbuild +currentbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) + +# Removes appinfo.vdf as a fix for not always getting up to date version info from SteamCMD + +# Gets availablebuild info +cd "${rootdir}/steamcmd" +if [ -f "${HOME}/Steam/appcache/appinfo.vdf" ]; then + rm -f "${HOME}/Steam/appcache/appinfo.vdf" +fi +availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) +if [ -z "${availablebuild}" ]; then + fn_print_fail "Checking for update: SteamCMD" + fn_scriptlog "Failure! Checking for update: SteamCMD" + sleep 1 + fn_print_fail_nl "Checking for update: SteamCMD: Not returning version info" + fn_scriptlog "Failure! Checking for update: SteamCMD: Not returning version info" + exit 1 +else + fn_print_ok "Checking for update: SteamCMD" + fn_scriptlog "Success! Checking for update: SteamCMD" + sleep 1 +fi + +if [ "${currentbuild}" != "${availablebuild}" ]; then + echo -e "\n" + echo -e "Update available:" + sleep 1 + echo -e " Current build: \e[0;31m${currentbuild}\e[0;39m" + echo -e " Available build: \e[0;32m${availablebuild}\e[0;39m" + echo -e "" + echo -e " https://steamdb.info/app/${appid}/" + 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_scriptlog "Update available" + fn_scriptlog "Current build: ${currentbuild}" + fn_scriptlog "Available build: ${availablebuild}" + fn_scriptlog "${currentbuild} > ${availablebuild}" + + tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") + unset updateonstart + if [ "${tmuxwc}" -eq 1 ]; then + command_stop.sh + update_dl.sh + command_start.sh + else + update_dl.sh + fi +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 " https://steamdb.info/app/${appid}/" + echo -e "" + fn_print_ok_nl "No update available" + fn_scriptlog "Current build: ${currentbuild}" + fn_scriptlog "Available build: ${availablebuild}" +fi +} + +### END SteamCMD Update Checker ### + +fn_teamspeak3_check(){ +# Checks for server update from teamspeak.com using a mirror dl.4players.de +fn_print_dots "Checking for update: teamspeak.com" +fn_scriptlog "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 + fn_print_fail_nl "Checking for update: teamspeak.com: No logs with server version found" + fn_scriptlog "Failure! 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_scriptlog "Checking for update: teamspeak.com: Forcing server restart" + sleep 2 + command_stop.sh + command_start.sh + sleep 2 + # If still failing will exit + 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_scriptlog "Failure! Checking for update: teamspeak.com: Still No logs with server version found" + exit 1 + 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 "${arch} is an unsupported architecture" + exit 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 href=\".*\/\">.*\/<\/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" + fn_scriptlog "Checking for update: teamspeak.com" + sleep 1 + fn_print_fail "Checking for update: teamspeak.com: Not returning version info" + fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info" + sleep 2 + exit 1 +else + fn_print_ok "Checking for update: teamspeak.com" + fn_scriptlog "Success! 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:]') +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_scriptlog "Update available" + fn_scriptlog "Current build: ${currentbuild}" + fn_scriptlog "Available build: ${availablebuild}" + fn_scriptlog "${currentbuild} > ${availablebuild}" + unset updateonstart + info_ts3status.sh + if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + update_dl.sh + command_start.sh + sleep 5 + command_stop.sh + else + command_stop.sh + update_dl.sh + command_start.sh + fi +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_scriptlog "Current build: ${currentbuild}" + fn_scriptlog "Available build: ${availablebuild}" +fi +} + +check.sh +fn_print_dots "Checking for update" +if [ "${gamename}" == "Teamspeak 3" ]; then + fn_teamspeak3_check +elif [ "${engine}" == "goldsource" ]||[ "${forceupdate}" == "1" ]; then + # Goldsource servers bypass checks as fn_steamcmdcheck does not work for appid 90 servers. + # forceupdate bypasses checks + tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") + if [ "${tmuxwc}" -eq 1 ]; then + command_stop.sh + update_dl.sh + command_start.sh + else + update_dl.sh + fi +else + fn_logupdaterequest + fn_steamcmdcheck +fi diff --git a/lgsm/functions/update_dl.sh b/lgsm/functions/update_dl.sh new file mode 100644 index 000000000..f23bd2c64 --- /dev/null +++ b/lgsm/functions/update_dl.sh @@ -0,0 +1,83 @@ +#!/bin/bash +# LGSM update_dl.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="020216" + +# Description: Runs a server update. + +local modulename="Update" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +fn_steamcmd_dl(){ +cd "${rootdir}" +cd "steamcmd" + +# Detects if unbuffer command is available. +if [ $(command -v unbuffer) ]; then + unbuffer=unbuffer +fi + +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 -a "${scriptlog}" +else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit| tee -a "${scriptlog}" +fi + +fix.sh +} + +fn_teamspeak3_dl(){ +cd "${rootdir}" +echo -e "downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" +fn_scriptlog "Downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" +wget -N /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 2>&1 | grep -F HTTP | cut -c45-| uniq +sleep 1 +echo -e "extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" +fn_scriptlog "Extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" +tar -xf "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" 2> "${scriptlogdir}/.${servicename}-tar-error.tmp" +local status=$? +if [ ${status} -eq 0 ]; then + echo "OK" +else + echo "FAIL - Exit status ${status}" + fn_scriptlog "Failed to extract - Exit status ${status}" + sleep 1 + cat "${scriptlogdir}/.${servicename}-tar-error.tmp" + cat "${scriptlogdir}/.${servicename}-tar-error.tmp" >> "${scriptlog}" + rm "${scriptlogdir}/.${servicename}-tar-error.tmp" + fn_scriptlog "Failure! Unable to update" + exit ${status} +fi +echo -e "copying to ${filesdir}...\c" +fn_scriptlog "Copying to ${filesdir}" +cp -R "${rootdir}/teamspeak3-server_linux_${ts3arch}/"* "${filesdir}" 2> "${scriptlogdir}/.${servicename}-cp-error.tmp" +local status=$? +if [ ${status} -eq 0 ]; then + echo "OK" +else + echo "FAIL - Exit status ${status}" + fn_scriptlog "Failed to copy - Exit status ${status}" + sleep 1 + cat "${scriptlogdir}/.${servicename}-cp-error.tmp" + cat "${scriptlogdir}/.${servicename}-cp-error.tmp" >> "${scriptlog}" + rm "${scriptlogdir}/.${servicename}-cp-error.tmp" + fn_scriptlog "Failure! Unable to update" + exit ${status} +fi +rm -f teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 +rm -rf "${rootdir}/teamspeak3-server_linux_${ts3arch}" +} + +check.sh +info_config.sh +fn_print_dots "Updating ${servername}" +sleep 1 +fn_print_ok_nl "Updating ${servername}" +fn_scriptlog "Updating ${servername}" +sleep 1 +if [ "${gamename}" == "Teamspeak 3" ]; then + fn_teamspeak3_dl +else + fn_steamcmd_dl +fi From 97ee2d8d7ad7f7f42779742048cb432aab801ce7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 12 Mar 2016 23:47:41 +0000 Subject: [PATCH 269/643] Working on new glibc fixes --- lgsm/functions/fix_glibc.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 lgsm/functions/fix_glibc.sh diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh new file mode 100644 index 000000000..87b36db72 --- /dev/null +++ b/lgsm/functions/fix_glibc.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# LGSM fix_glibc.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="020116" + +info_glibc.sh + +if [ $(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1) != $glibc_required ]; then + echo "Version $(ldd --version | sed -n '1s/.* //p') is lower than $glibc_required" + if [ ${glibcfix} == "yes" ]; then + export LD_LIBRARY_PATH=:${filesdir}:${filesdir}/bin:{$LD_LIBRARY_PATH} + else + echo "no glibc fix available you need to upgrade bro!!" + fi +else + echo "GLIBC is OK no fix required" +fi \ No newline at end of file From c74e6e5ba9db5864f91cff1c4bf84601fd9fa7f7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 12 Mar 2016 23:47:55 +0000 Subject: [PATCH 270/643] adding glibc fix files --- lgsm/lib/ubuntu12.04/i386/libc.so.6 | Bin 0 -> 1730024 bytes lgsm/lib/ubuntu12.04/i386/libm.so.6 | Bin 0 -> 173576 bytes lgsm/lib/ubuntu12.04/i386/libstdc++.so.6 | Bin 0 -> 905712 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 lgsm/lib/ubuntu12.04/i386/libc.so.6 create mode 100644 lgsm/lib/ubuntu12.04/i386/libm.so.6 create mode 100644 lgsm/lib/ubuntu12.04/i386/libstdc++.so.6 diff --git a/lgsm/lib/ubuntu12.04/i386/libc.so.6 b/lgsm/lib/ubuntu12.04/i386/libc.so.6 new file mode 100644 index 0000000000000000000000000000000000000000..916329be756e318766e3a334bcea3dd59a24a7d4 GIT binary patch literal 1730024 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%0A7uZVc>A-??2 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%0A;wv|Y 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�E^{Bp_*KNr!av z^!OaQnH3DFpYDendff{iI5V(ZI*p8us2Ug!FS?x`4wc>eO;2VaO4nc^bz{WjW0>FU zJ>C<$p0>mhBW}F}ZR-x92{yr5S&Z-Palz!lGB`mCIPox==}H(v%2?F_Iuz*0!jqi{ z|LS`?>=j;w2NW?^?UbC^fv4mXIGFvX|AtnDk|i8KNxLPHHx;Axhoj;*kL&h_APC0~ zC;0pK=!=iK)>nbB{m0?2^v3OWb`NPD(iBJ5FY+vJYTw<e)L2U=0UHDH3<uNt+2Xw` zu+rnO`JoBXbTO;bEA)HL#h!-IlXQ^=J|s*hhxaKz4=wA}Kb6}bAjO3{bi~-m8Ofa$ z6(;J`h=>#(j5}4{i|!#}&Q-NgjeK#cg&K(h+(&cBST}8f`c$!mJ_RfFBdSu!<1K?T zsaqR{*CvjGrKO2AoHw%;Cwz(7Snt13nG=;ZaKXXMHp-knSHa_q{)QxG{v+_0D#nH; z_tXo7y}yR10f;wHAnY^;B=PxkQ2}ZbeW45K88-h+;Y}P6hMc+`b=B2v$|7{D5bxZd zlpR-aot2&wY5N{+Tin~GSck)t1yM{0!}SV|Q9W~q>X|QMm#Fq1XlTI>(KA<B3!8A~ zjWJ3}ycrH2qh}W6m9MtOZl<0<Am&f4J@`OQ>fKe=cBUegeh1>=B<)jr90OZcBbk zkNbQ>kI&VIJ$?>cJ&mHB<mTJI>C6NBqg=q~VNofa8@c&39D_>V@Yysa#|8YaxATgB zI65)sUvuOMFpxQlu*kY-Hk&mnLSFH=Lwg8%GlWi+0UwsY@Uy%n$6+(@ZuF#uRT+&2 z70No%Sum;$yp}6oMUCD5ZIEGHlVAQP%7xOyX&6S^Q*URdma==6Nwn7`LY<pCBlK8| zCm3Q!gkFTt<#dP8GJ>TCiaQ~6<1^hMG_N~^p4>e`|MB~7D3WO+vTNXx??90$XkFc{ zfnfw%Cf+|A#mqi|E||#N`~BD9Wo1ceduG+BZUoGJfEc`hW~99txq8XSvDL925Yh*< z2EXce$02m&(G;HGY*&-Pd80zOL-HIohBe01<mVU7tTxdf)^ANY{6l0x)vKMY&Tez| z8urq2P(KvD!@7g-s^1Z#BPDJC2n0CRm{oKdpNGpVMyKNr->%0Ib8k#x{7qP|6X7=A zxS82so2{`sxm*1^jz!=AG0;I})I)3yWZn*)>{x(DVBrQ?821N=T@q;K#?Ayf7-Q^? zKwmtedjh>3MqhUXIx2*$<BI<&Y6ZPTW*sLkF-zU7_`~j^NZ};+wNi{R?3Q*;h2y@< zfq&t39{7T;2i{CwV)gOSfm^9B(5nI4N<BajR>P2dnrrkG|8f2Z#SQ?zvV(}IL_hy6 z>>QBh7-6s6G6Z2BjT<$GKy1i1kEy0XX*7C6r^u;|?!GIn{v%7P*q8A420pOWk}tFq zN+n^%nY*40n24@QGgC6KjbN3bift?%IL64Evx9<*;!ZRVL**c1OJ>ubhesg&4g$4( z&a8m!XP^JgB%eIGJ92Mb8UPHOw*nL;_n1FyyG+A+JnC}tx4NAte|Fb$P9}dHzDN*Z z%O{(OPxcYq{0iN4htmlmh@Ej-j(Xn#r^nx+IDMHwC{7RKBbhX6nIpdF!YVw00fV}Y zr$SMdOK1W5XXE|1MIJn9A`iS<_9n|hcwSEI!9&;^(jAdIZwEYp<N<srk{%=D#d{LA zZ4mb`1%u5B%zJ6|qQX_V6^g?aC!oa~JwF<el@sPBRyR_*Af3K?HpNa`&_amSj`DA7 z2>{)4oAw(w{WfBcVil}|ktp$9Lopvl8#?Si;VK8nP9ZuME=7NmaYTin-++O4Ns{L} zok{Y#XR@p@qAAeA&WtS2A<2mWN$#oLIcxoC=*msYQ7T%};bMnLoq6<etQ^(31iE0U zuk{Z^t$-b?pHdciw^1{HxHZ5=U3lf<s@v%9U*aXC7Nq%CW!><`AF~Lk<IGJt<aFeN zXjX~2tF6j|@S3#-<<=Ve&9#o@YsnUCPHYyyeq=N6x8`&{@ApCHnpadepu<Sv8oXw$ z`*UigUd3boZm@dYF*d|vOoi)6qDrXI5PWrwNt7lM(9+vUo9FlB`RW}BXHq#p)<r@m z!kdp~XO=E!Wn0D*aSb5J@{O-P?SgOA5Lm-8a@XvCvoePG0;**fd1`Nj{ra0k1!sSz zr+zZ#%kTghP;}=qNX5wg9X&<&{BX)m$zP(*ezP&DrfPE86RxCSa-LW=3e1@?GZ3no zv0wHvR;f4brIxWTp$&u!t>F*jBd8G(5${ixuo#Ux!y#SZS`#y4gL4ZodZTE81>s(s z>eQL-$Xu)|11evIxI*!ji0U_nAfkb5Nw+#m*J<7*Z({y|jwd@wFD}CtL~Q#OebKlf z5$-)?mmYWUp|oWVegK^;p|)zwXsY#Gq*&O!@UEFEo}A#lrJmkSM)0&BXQkhj8u|Py zn<M@+8^4VMZN8rpnvfGg{_&z=WLwC__V|~gE%Om6%<?}o*xWH6kP10^Dgln?Uw<>v zKzEe7eMTJJ%{sP!69B4V!e&2rUCuU&-+-*5vhOhI1GYN>?SA_~qrqreneY#A<t6r3 zUH*73DN!}76ZLTWI(=c)-iJ5G(|orUGN-LsOG;|;*Oom8_4L~f(VWqw>mITL&_nhZ z%Nwn+a>1?XXV4huF4#$vY2$ptusj*zX*!Ym*6+6jV+{rOHJ?NmAol78!yT@|(}bRw zg?J%nJYfPe{1fRkmlKY3;lQ5O_}0UJ1c@M2Lw<22!Rn<NTD;jWG+ZqoT}Bq~R0v!@ z4-U5=YJoa+j&%u&Tyb4z(X<lf0x_YKDx(VAztRj>;q6BSK!y5~AUiod5Lm@QVlme7 zH%k-_FZs{E7=JX7L6){zB40j4v?_OF(Pnib_>ZG<08~_Vm1i~Z9LK?jH=%X0@ccQb z>b#Nj_659EL3J7ik!>QY@A~(!2o}p@ALn58GH4V2?xkqF+Y=Nqe+>90>t1Q<V)~m& z9iltsPQNgUaQf$<^<2lT90Uv;w|QhD2bJnM!8@?#gL8r=qmv#)Ek{>`uA75${uemN z*F`7ftjIfs9-beb)jyJ#ckH8>b6I9+?v{^ou(L0k_RoGIj7lxW@sx{$<0<4!T^vto z!Kq>LFJ1COZ_KGYGN?>h*+u2Z*_JI{2S@aVjt^Gj!FOdse?nP>=nmGB#oC3>dhY+A z$thuz<8Z|<E8{=%sAxAwg>MJriquo~q2Lxtr9p0ncA{E;7{d1y$?;oq-xYvogeM8F zPcRNDSJ%iao7b5Yyo*iDVAXZhQtvn-OC^YHOrQRrY}x1vy*#_Ta@OGJ8vujyOGy47 ze-P!D#>l9LFCa%@k>jVi=T2#O2){6q+fO`?W<>{`0|2vqN0xSrYZP_A4OI1A1Ppe| z0|9eUM8L@6RnL?WFl1R>2^c=_A!!9f!0?s=rr$RR7#}YB904-}*f9JX)bag|K$x)S zEYD9DkljmyMzi^#UsyHUwaQf~+)XOZN*r$zBSKSwe2=x!^z$2{i#q+MzlO7rtDF0a z@FpwrYEexkK?I_E$&4a8r*0EdoyuB_M?&e)oSpunhf!SF_C?f51-Yu1brfBF=60sn zOEI>9Ub_%ooG(!z-y7Olbn#^uqKl9H_u%Nro~kgSOIo8=YD8DreOb}PcY)}-8<hi~ zA`1iO%yEW4OQ1Q6qr?Fogses5=`zUTBkbp7gHqqY-T#}QR7CoqtuU&h(-$$Qs89TJ zK%7BPxO^B;AoeFw)`5;@zpr!z@plhY)vm-JeXd#UryixgnUT%8Dqv!>lbw%3cbmL3 zS!(=DoGL1CMI{;MUJSu_q`3(ExsYkfi|<<qXrre6`FPc(X`i~PGZ9_@#U_~Vj!g4{ zAyKB8?83C)Mx(VG)BcS=WwB0>4TZrW(12P&pE)%46HH|{G}dsvPScuqbC!Dr)Fnm3 zA5cKA>TvbV6Jyox8<j8%_rl%(V1n><MzRF;eMctgqkB3`(y>sGNn88p0G+!1Sxn$x zV5#ORHgYgF(4J)5`@=(nm5*(2lR`SO?fnY&)^ldQ1w1i())qN_2&QD4*YKA>C(+L+ zWDni8R4o#%#y=z74e6XTyEEym!g2_vu_NgWA><-2Wkc?4Q!e>~&?~e*V9nto@29$_ zrC<NCJ6d`TJU9R%hnBWs?A_2(5<PKRQg0ib<vl@UjLTbPkm|m=C2sN=%UfagNJ$mV z#-pjJ@F_IEq7Ed8^&}CT5sseO<I2w1`+8>xco5RTJ=sV#YPTB)1r!isv&BkDY_ond zJUPNB6zY(zfexe!#i56EqflIlXycslmO!n6u!)AU_rE)fa}mQ*E?C9NJo{x;E-QTi zR#7(?&qJTOINPoZu0F>VXJI!s$0&p00<8n~{1_HZjx+QB#^dT!OArNXUtlr|T|~i} z1vs=nb!vBU(AxSI2lTsPFOQaV(@PA!M12*t-4%Ru0b<_vTonCxn!Ra&TU9bR^Tzpm z#uhA}-gBQALVF89;5@OGk5}Sp!f!EY=6CbJSyl`<bGet78GUVE#HxTHdVMoJd3_(Q z?M(wQ$iZFJg>r+s1D8j;U&Q`1XGq`gB=%vVCHBXDiz9F(Tzd^_>v7fn0vOm3>qk4x z>?Lj8gtpL5B7pnPhk_6Y_kvB85CqO$CByKO*?1lY{ZkZ9uXCO#8O~SD&a)*Wc=4w5 zP)Qjsk{8z;7xNyx|Jhyb$@9=xu{4}28HIO%F+aw_z)jrFi#eB+6v#Ho2o9srv%mIn z$dFEg6F&#P)NWnv$<=;b?Pb9V0=C?H@ZZZ&<BQf?HLr-hsdA=^%yH=Atde2w)RIw| zVFL8SJut$#B_klkhojdr_n8cNjB1#V--7FOyE`nN?Bn)wCtQdFzdt~!QMh3<sN<rp zi+c8oO8*m-hVNkjNAcScP+oD3Ws`iF4}Sf7e5+U=IE~4tJ$oL{O~L^=v1Fi(?5#G8 z3<X>~kYg=JIK%KgR<yaTcX6_(+sn=`rmFNSu+1)dUoJhvk#y=U+L3=6raB-Jd(&AM z;S@l80T3`TbL6?4u}AV`@KZ5}^U~Weuo=m7a1PE)(rI@4C{7H5vSYK)bW_hv{Fwgb z<P?JI+1As59|L>zu&>)?zMu!;greX$cg}9w1aIO3yqL8}=LHQrp9f7}`Dbr2+w$xM z#0ad&sU^b%Bh%UP+>*keb?LXNq>{bvx*D^Dg6W1iC%Sl+?K$7GfAc;XBDL&;p81wF zmKB3fW9-1e6byJOW^IPO;;iM8&&0EDN9O@ZtP4Q=;t+$Nci0%Dcl>0woK5Uq9tZY7 zgLvX4LC&B<T*A)@O2h>k!(T(&`1S0+aD3njc$1LeAh6cQ5yy<PhU4%|xCKElwLr({ z5@p(P1&VlKPBHH`KAw-Z9@4fFq>(>>B7|aw;FyVm$hCpqxi<Kt5MgcLW;yd>vD)C@ z<i}cHRtm`-Uq2b&Z({!s#`h{L-A?1H5v+vcJ1}Q_@lNA={y+b#@lCinJ3f2UM9}>x zP}2m={glj+X9@kc7x8;nRhYhE!E_<gV(j*=W&;OSWi}9}#}WOCWpJsyOMk-=ouadP zO1eF{59S0tgX*f#^8|av#N|9U(aU@0ya8y?=3hkWJN5-~k?+_S%0+==Um_QUj(r&} zTAwU!Z+$$wo`(VO60|xT<0{UadnU)TVK>Gzw`6d7Tk^DEJl`~wW1tR@aH`8dSlx{$ zQzHWgR-DZkNiq5?!AJ(%D~2s!RJyIzCrk@AabdVAAvY|OV%%j`ok5^}OrV}9;bM?w z0<@tVsS_(^Fn*w7VyOTWqEZ(I76Bm2+=^#F^%32H#xn5puuNZG_rC_BqeT`00l*?) zuUG`^X2A-AXvC(yX)dDh3dK{5PQg7eW3kMiYx3n}b@lhaHHu5u4T^21qh=I#0&Zz? z*4QiNE?0RnZTjgDnU%o9S(y+2i^II&>!KJ?GXqoJN4{o34G^uIS5K<&p1H1h7dPk9 zJek4RoJRZ-=AX>t$%(i(rTxnNYAX95ncSnb->gM7b9=QPS)GrwfOt21i#N4re#O+1 zsn)_JtOoRW_OpfqppPk-^dfM{LeNA3dELX+(A*m!lg>Qn+_On<PGw0w`FQ5TYuQ~d zYfOf)(ffZXn4D)XVQZ-Qvp2s6m<Z78M>d>!jlxjaZ1u6AD$CiNX{1cVKt@WvM^G>G zH+hsi?r9?NDH-qMeBlp88HBnN;YUU4Oc&qyz(gnV`m-pWxBJt&c*}*QZ;!>>S&OC_ z=?%1Ju9!i5|9e+aY{4d)PmrJkFx5}s(#Y*Z+`XaX5x%N|aD`0#Y%b1eo!+y2jdkNM z0Hb@0yaie1_d=;5TfM1yJ3adagHe@1g_-RRzQBW#O1dC>4i@1ab`pQB)O0jrl{&AZ z{i4j8V|#Jti_lzA+dVyEPGf0v<BkKJ)umtbc%0?G_YCWL4?eUNIF=`lJi+v1;t~V{ zpA;bViwMYk!6OC}OK@nUs%NZLz7)_^v04=CSQk?W&Ff9fT_SUTPBWvsZD-WCv~yl= zJ9*uK-G<2dZ-Qq)ZaY2DPN(7+XXcS_X=e>1^h5NFX7qHI?OfPRJH*WmY$I7xXg^!> zEKra0WJLA2o*JKJo+1}C^aoN4%P^y`L{p_op5jxbF!o#n7F1GM&;)9bQ=sQwpHI4R z=)piI16(&BL~K{?)z3=z=QE)JS7=~C^ZEE{nf+$WzNDlm9;FU!;ld@u`mzwTk(R_> z$Pj>J`uHRHEuRP|InjWYfr?CN8e*@;obU4Nj1qN$XTM~~+q3U7DVE2x3Ksoy`+Obb z|JP9krhws#^hjog%+*nyz~zc1r%*kvLo3az?gNH0&`Fe*HY`}dWhtzuL&26rDc61L zd*CSpv#4>3_G(=v?X@oVQYE!00=%j;1$fUN*^{E>20RAV`POM_+=&Hd-P=^yxS_DL z(OJ{jeqd>v<8rw<vQ&L!SP9i%v2Ot1;LI^o$vmFiUL<l`ju%lNRpr`e2gHq?6UbXI z`@xx=r?KuesEhK$IrG4uKuS<C`vt%oP=NeFJ7Y2N@A121RT!(iV(^*Hnyk$x_Syr| z-cW5%Xt;~^irL<0yFnvJrU{k~;|oB+K7`ya%KTiK$ZQimW&ki+OcHqRuPVlphblu9 zPz(pPE93iATP#)fK)y7(Zu>f%<U(tl5Mx<7Z)4{2@i6h!AsE}t_I)5bW6rC`$2YgP zUlCuP+4>XUqVZC6>^dZY(se_cX7*4EtDpU1d+WOa>g3nnRNxFO!K@E}h)SUCB5=NZ zbT}|`FI!qZh%G_aU--|bjsO-+hYNQdA47+;Ef<wp5tZx}1<Unx-S+i?O_z`^-_CYv zZ=wQ$Dl{V#Gu`7Q&DQA?Dz45?9#GmKaXB;X<AvWQ<D0EV`&RGco<703I^P}x>4B=K zX0OO!4x{|C|Lz-W{UF;muQ(o*AjIfrrh7EohXl@dr%$N3JU=<T^fT$h$>jFpyzmqe znf@%fkLd(vhz!Yme`EXvK49<8W%(%5GAco$pfE33K5G%7D{bgd74U!{6Yi7=_zEXf z2FUL*iRyh@#t^7j1OWT6cy->FbUM6r3C8rF?3nCL!$401Gy9&($+-RBLQlmQVhIK{ z*j+4cgQE~Uuw_uJ2Ai-W+<6mbx`(raic9m82X#iMWu=8p&YR%&buP`f$0y=g9V6_M zDhshv=$YUOk_jN+)Scq=e?wnrgsD5LvUS^vn(9L_C*NUA=QuBdRLM|^fw>Z3P_)zk zMN0=b&=!tF^rUBH=3ESCOeJU=___<%t#{yJF)!Z6{42gbnM{0L_$Ba#P93g40`Q>V zs~T#4fUu)65<`Zh!Gk*^3?E^C66oZJPl*MDXfPJRlwb}}5^0%fm;C<$U+su5#5$Sq z3*hT`#n&ac7JU7T7sS^<Acq{L7<5*c`THc|ZTME;Z7u|4FQuxZa*=dkmq?;shjIo( zlvMVlkfz8*m8QgVl*s((;{O$f&Jc<!1iVF{DB+6#TWZ>f&_!V9u#145D#gwuT(|xX z)HIeCWLq8abJHorPvMsTYy4oH34TJn=-Mj**Afc)-Y@>Y#!ut1f}g$@X7O_bt_44X zcwz9vnKqn5K*z{LHc}rlQY*{PU?xn&=VulyfB6fV2`f-Wj89P&FT@?iHaRhWg<$YY zIYtdOK^B+!>x;-tVsFA8fRj?=B2}^m6@a;D9kwBu^x-6TQzh%Qh&{37EM;`5lGpGk zs3Jvwe<A$YD+tt?=crCVdopw9j|uVq0&yiQASj+w@#9?rH{-J<Q*bH3;TP^3sQ4wG zeeeh3Qp(R<16>Z{wFJDs*-GsL`vjkI>;sRhl^z8F;_hqj9Az#19lCT=i`9{5rJ7NU z0I4$%jf=0(fx_`_f4JU+L||$D{5k0)k-2XcRKMPKCSkYjcV(43K7Wzj_O+E7pMW)V zlMlG;ww+dLFmG=>18v)FyYN+B+}dqlS!sOOFy<}3p&fQ%Z-AuVZ%Ek_&)?OKZ*grf zez<g~rHX?QLyE#x1-Lj&!p5y~GQmPXh5O8mjTp_RF2C~QEok4pd-wLW2fa9`2LF<u zI*pBf;a_WN09jR|cXFOpwKmpZzujZVr{LQOHU(7|@WnC%;R1l84A*KqYn}wpKH?J~ z!F0*q?wkqJ_0KST4cx<K?rMLU)}-hD1DAkoF#SB^^I-|x_&UnL_+0oheyycb<Ly1B zmJG(>BA}rI?qQq||7SrX5Apx|0RM-ePvE~T-%5QCRgojoO7)eCJ@6G;x#(@B+5m*z z)(_`SWJV4^<~zJ{$CDfj-0=lryGw(1U%?i$zf8trPrM);#|vg0{xM`*OVKQ#z2v8O zPr2{8ON00QBkv#j8Qx>=@xCE=zYR?X^$XZOG3~j_gZFPl-oFHLFzx>>c)v9Aej?k~ z`p*ULZw=o^hj&jfyf1!+;k^xGY8Jk4YNZyTb8bc0+=@VULfpC*apT!DSS6Tbn3%?^ zoO$_m`j0}QfF8yqdglVI)(s5cNjG?l$Dl6G;Q*B5YtUqMfwy=&XxZN%PZpth`la8| zg+%%}gFqe0ceLX?TlOoO{L6_-(oJ@n9tp;AD68x(<FMOSR6pn~ZrhCx<RB5&M5ec+ zi=({B-PgL|QP@8i%iv5QAMaZZg0#H5^x?3~JGEc852=EOXDcp{{}%;^tU;M!*H&bn z$0I48dXKn~mzf7x4y6G5kS5Qb9l=!Q#-9SP4|n0KT=#}mSD|XA4!1*lhXl7M7|GeJ z@E9t1i~Hf3zn!+4;9+qU`NJpK`@wwwX7+v!-?wD%8+POV$>3h8ywDwA)REZ#8uY#K zeDwVi`xd-k!soCP$Yp2_lEq?1#V)>b3ry`jP;`-Jr@x`xB$oRSk|Gp9@C`z-83Em4 z6dI?Gc39?_v1IR+J`A1lGr)Gr+?%GNCuplx?vw)evce&6H15trw%DV<GGqhUol;ma zrO2|cB|L}m6KYcmoeWgnj$2R5t>;FMb5rqKSdc6v3Eo&x(mrJ%{EGI@uV)|YPM<NP z**&?yD@vmb3sE7<$7w+zO1u_-{Q<INj-P=!9ynx5p+5(NIBQWo{<gQefVPU=Voal4 zj0fWicfGcp8jrz0_eW{=W6H60RUGJP8A{%>AfDaod?)?T7vNpN+4T^~VB>YS<4xut zMciVJTj{I8JKPhtw~)nH=@jqA77!tK<FaPnxR{k%2&`>yArEj*DYVivh{S2Kt1^f~ zJLO%c2=Qz<%)a20SPf=0eJ^^z8+=#cE?gm>vs;C)dLR#s$2V4*N7Y^X77W#?zTX*p zZ>}18P?z>1+=8d0R;Y-&^=y0SwFORFV;gcEKf;!u8#m6a<CUB0W#%RypmITAmM}f# zS}r9jf?N~fE$LfOhY+`<?>1MiJfm#b+!MYldCt2Jc-LzijHMy~6ET*o)SE<19ft^A zpxB#suWJv+xQTqW-S}dknLp|Yhe-_hYDW%10_x5D_nG1|R=G!DH)r-bjkuF><P@5< zC^C_me8?o3!YA493I2b9x!LVsTQ~d=LvjW6F8yMu19<<;Yxv9>He1rqK>c!Ee!UG5 zjOmAYXSd<Yt0<ZN1MdW}-r_+QwIV?2LZTyzpGt$Dmh_bH>MUIGUrTzFdFIqD!j(5U z;m*gg^trfp<%!c~XNv8%Go1PwJezG<OH(~IL9Fz+#hy3|8-gMFz54T{!D7>3OS&Yy z8XjH^4zEUpS5w2Qs_<$?cvTi&O$e_h;)?%T(gVV0!*ErMscQc~_+*#1y_J3h6Xo{- z-rdEdX4fvkd~=;g<{E?tQqU<U-B_tTAyWKGkt;1B4d#-Ay}H;r!L64?EH1xn!Is3a zeE^vMEE?#x1igO#ol=71#3wE6dO=(DiRt!vBf(elNlF|c7DwjVs(5Tc{Ua!evCL<t z)9pyjM-Sorp#ot!9=(o7aa~>03K^i@*FAlPd<>2#r=<TOHXGbAg%xAKL-)nCgKu{x zm?>fmKJ)n$q9wHtHfyEU7eQ^3#sk=rUBb5U#E!6?*%`KKICT{^yIxkXmELD8fDzK; zNXe<}Mm>|g{&O(EUmU??#k{m-;MmBrYFAYO=q9p}A*&j9=0&&&0&P)LLPbZA&*Muv zxCdHN4XBf)+w45m)XUnz_e~+tT<-?ph|Z3C;$OA<f8e9~Il;`dp{ZEcGxOn?j-z*w ze7D2Q{2Y&T^cTyj9ML1q?x67YjKwY<1ueAh0^GX=d6+Ry)B|`POw{jjoikDM@E|%- z=i)w`C;_$Wi7M*^>ibCM+X2)qcw~quWT`jBz6vJ6s%5~V8HHQVQN&w>txqm;rw<4w z1paZEAaHg19WftHlRJLE(D6l(1xQu6Usn_2{{qC_0h~Yf2*9xgb8(!@MW5w$wfH;R z$~Gf8GXl6|GUJWb(o+kZH4T{__J(+EdLU}>E+KbC=B_99NAa+i{YhM&7ntY0Ytx%a zP;2DrM{>C)BR7RCQcpx%ORw6~X)}*wre>ZL+Jx80{NkiZM92t~PVse{dsSfoPew}Q zJM~|&@pOXaMuYdZCyOs`C_rErA0&FifE}H%YA>Zo4%-_&kmUwu%N6y8j~SG6Qj=r) za;0Zw)8*2;b&C9Cad!NR!0x;=y~=bAR-Xp`S_^T84pLHRzvTzWyF277Z*IvCy+j=g zxpf=|o|a3AY+GKDym#vE$9sHgl|S*81@#;jCAW3cr>t&^ltU);d=^W+Ax*Ljzs6qo zZ=$4*xA>|r6dUpXjUMKt7vYhYNP~&QkQG=?2mTP59_)I)Kx&Ee@RKaPcyzFm9B%`g z^7uTCoaIi@0%VW0n+htVsp>CWEs$mbG7VSz_6QcW5jsDL`q^!}lgB{r*6slbp5?#R z!XM(En+WrV3csZ(djTHBg<bkh(7s)nP!*=u!rO@fBT8L}(u)}0LjkTsV}>Dgj2t^8 z%N{C;)5Hee2t^8DcrP?5kMKsQQXVlo4<R?rq=goxF}xuuB7?4UkS5hRrZ8W$f8e<U z#9MsrQ2@syLWivK;RS2ozTRF{T#F?%I?<9QxnqP#`v;+wWupF4X!%(xh`jh6UU+tc zS{Y(Z{2c<uvs+<gQpNV{;a}ql8rzheaCqgEe78f%^GwM@P%_fRap=N9vQm)}ng9AR zB39*+n$mFqGyCrBUAsV7Bwgj|O1)az5k6<=+bgQC!6;o3Qr0O=@fM%CV<MftfSenV z+oiZQQYW*0EEK*5=<MeRQXWBf{OA7$WuTdZw?isJ$RQ|D@a)2Gu?|~A0jF=qbq=S$ z4-cZ8ejy7Bbr^o{Oe^&Bb2}S^&N@h$4<LR-$|z4M>P-=IE!whWd7fsad3wpNCw{Of zzr>B}@dip!R<33y90G|fVzot95%2_|?0RGsLv~oT*GVHPD=$K1;7s5JhZ{sL%e+K2 zng=W3pObglbrsA9yS5gNhOQfx2Fk-0K8Y^|yK=3o&1eT!?KK#sNTSfRKxlHdbE;G- zinLqp42exse?mu*8U1KGRSqsE*jo%?G>CDgZLm_UOo$)ihTFi`?En=EJgy+H@sqrO zliti+`2i1|T0)MM#T<+%T5R66uQ~NkptCO@^v1p>M!GbXMLj(wV>fWgWR~t1%mCOw zKQ%TV;6*?mBA}D*Vpi?N=sk)Lj-RHmh~x5><cLVc&D$cAof+B2)k4%|!F5{vy*r5K z7VG-$n2bm>e?>Fj(ImN>K;j?HE8&X&vc`!Ta|<>tg8R@@yg7ALHCo1g#5!aeySDGb z#7JE$^%>-tF{lbj+YF%7dxq<0yQ&R4C7Y{3^G>6)<N{o~OIXUA_E8VfX}F&>6?>&g z;0t)mytf<;P99*V*+M+t41q2cXubUf5M5l)7bD6=9?gDC*QgvSD#Ro#d>inEiCQ4N zlAr}-*-i8>H+o<rNI^|9R|cvq&5$f-E%VGpJgBiAb7J(?>VXSX`biHjqX%aRapac* zm&m)zYa(jhHcX~eY<<O*u^M}C>__E-8l3j#*pGkdrI!jEeX{Ut(E$V{iQhm!Al3t_ z-j1%k@jp;GJP{+=xEUt~(SkBfRb{=zd@pew67UG8z*f<?N=W$lS|GM@!vT$L2bvL5 zKO|+}#o-Bd6;>klWps*U0XiW|&f|FAaD>~mPIjl4cm;I?%bhMQxc0wcBa`DRn-?w_ zU&UEeWhRcKsKV3GWqVOA(@3|Bs93^zOP=A57sYE&Wo9jj1=8|((X#f``Ynm;^dUlQ zlZ|56&jzO5>4V+zC0Y+!hR(b@c{m<A1=qFSu5VlcUlGLgcE|h&HPb{IKXXC`>NK|w zho94K>v3%#Hh$wWj&1C_9=<s|?OjBu_hKT0=7I{9Op-&%O)Rt9dd~ZYoZL@dIDfd^ z)_dOMZ7cF;EvjDOE*7T&f^<FuU)GN|wT#2Uz|A;1lVYt8AJ21_$vci`sCn`?$8#5= zx&fWOGuWF_fNtM8q16!>^52W$_PrnYGGs!PPpI&Dw3u^x!s+Fo3sl4f=RPGbrq3CP zM|2CPvEzvK#X)WxSDC0jEGz4y+CV?}h9MyGOCkG7x5sUzR`7(8{1Xp@xR5sdonN9k z`+hJZx9%Y{io87TsDwLVgga`O<BcLNg{N3cW0muh`OF5n0p^@C8jjmvi(4l>7bRP| zU=IEVqP|Jfa<nE|D3IwbiL!&))RSA#R4657nPt|D;n5kg&ybeWyV+%jaxWtMEm}?) zfYa=Q{o(~#lvyQk-(7=7kyGMAK9qGHwEYw&EoO~vsufp||0C43=U%rVW~F!@+|Xm< zX}iI!*ea~p4V#hPplBJ;tga=~jp**)w0FsHT)AnVx@d!T<X@`_Rc7nxzT%34*rS4# z$-^jMqlh;Sdo2*c$m9bk{m%%Aa_HnquArN#KZthB7j6A?4X#y1&U%`t9>de5N-)lZ zq6kN*Oso9^*OQ4^Ec2h}$C;lZGhdgTd7R7P+*_&rD>aAR_wbuu_Y|4|rW%zz{EJAI zr%)eryr~2V8d^U}59IfOGDO%y&1fQSLd}Rb*}0?+aKr(DTy7D=haFKfnt+m7&1g98 zV%6WO8QpwT_nHxbvKH>bH(hfyBYnICaJz!j4w?~i<K}1r)B?VfX7m<0N9Y0bSAnGM z`WYNXpcx5bL^FaH2m&g=4Y6|JW@<)+%@u4$G$S7f>ZBRn&xY|Y)Qn!rYDO=qX2iy_ zsE=qycNGRR(6we{3FutC(2O1fsNYpHdgHT5kC{PV1WPtL(VaD;*;C`<wDR|2b*z$S zPtaA<8+63`mp+$O)08|;8zPDOJxGy)LRhSCZvET#wfNA3<8jck8yT4j=D&^H4#%xs zPvrNUk36w5D^~h(G@6C;dD)CzJQry){qwPyqZHIK`w|7%cp>3HTA3V4{XMF)Z%1Mj zWms9A-CFqH@OCZ(<nxDm#BceFXiI3uu9q3LQhhcF4m0C1X#cC$9LTT4yU0L(F1H~i zz$~4CJgGkS?y_QoV&Zs=#$ONa8>xI)Zd?1~Hn-A~kS+dIxt0Et3(voB8`yJ)mKl5Q zV|;!x(oa)vmB({$?~SzZ@v)|bW47kBP=hjRR>*u&FM*&u8Dq+7+|l{E4b^k!>#|_J z#NJAd$9$dGalXbQa<KD!`49^^^JOiZj*f#lqu7D)*v(Nu?kwJfIopyu!X}`@n3$#O z)RpPZ3B5G+Suc&z4uuX{zwe5^>a6K8z66e|9wH_5i!2o)Y^vWk-p_4R-;JA^U$bb5 z4FV<8lRc);70dZ~t`~fGq~QMiB!Z;GXZn7m);g*6!;ZDU2c=f3;i}=L7SHAdeQ_J8 zC3a|sTF|?sr%_hw9jLyh-ebHpFy4pjme|m4>J{S{v_kknq|O^s=kTx&deNcTR}~Jo zQXB9>@3)QKGe2x$6CayiS)?U)68<V?!WQ5rr25<wIP#_~Qs<bn)?5708Q{mF9Xm_7 z!k**yZt1%1+uS82K-*8aMYlqf_pAQcl>&}TT!nbiEc@>$?T(w_mZOMRx>l+OC63vX z-Hz_m0(OqW&Mct8=4^60#H+2&z}BUaB{V++R!6KPt8_e9RJO#1N5|rS4LT+F;Rs>0 zX70cVLh-JA4~r$z)Ce@ia;(jAztVEm&$Pbn$^Z;r%OSus9D`2A6@=HI^5?j2iScua zib|Yk1wTvPsWpK_jz*k}iaD5nIr#i`Osd&(j+zq0;@-fb%!Q^Zbte>7Oek_Z&WmO5 zPuRp-Q8mnA3=j8dreL2Y4%iexEA=1X$QDO05so9$s9rAjm)~MkzmxO98jcMpkmEOl zrtdY!+eDQrX!tHR+!D|7`Po<G@}FtSfBZK-!9=RZLbPAZfEaYG)MDg`%-Me+aQyLR zMu}+7R13<;+Z*u0AHug;W#jCBb>!Y_$-SQeD>D6=o)!eH&{yMsNHrDO2iyO7@a7Pp z%wLH&q!X@FzC9^;dkTb${~+Gp5A5<r33Hku%u`xo#i*i`;p5Pxv_dYyR(b@jtcJSl z&oq5-UGwe7rDlW&u#fTohqx~RkE%Muo(Tga5V=t!qDGAx6eK87szg$am_$H8P@wKx zmEyilz=b7vXMo%5XjG!D)v6U0t5&UmYk(jyfT#g+uLZ2jTp|^hLZC?g_x;Yf%S;lM z{{Qp*JP(<B?mf$QzVAEVb~gQ$)$wc6{rV2e_SRo1>-hCq_iGNncGX{x(qC=&>k<6A ziBQvir8PS|&!Ot`HA#u9Mn~c`t&ihQQr5_&+B!KE7kq#p7f1W3LSVm;b0Iz|CQP$N zC@P$N)6I{UzsjVQXxh?rwP_=lT_^Ux@&e8gFQ5?~fK^8$r(_Lgp4;^VdLf4Z_5&Tj z|J9!;MlFTt9!`>Q>wALr{qJxUy7ioodbIuY8if(gNMLKO(_=|W0S+?3bJ+t2$cdoR zz^FL$UzwN|L+B~UK+iINb_4oTKNw91rj<{_wDQ2rY2~AjPM^G-I6FAVF{R89jGhg| zd@`IR=-@b=B^>chCw<<I4oaT#C<JD9g-ZjT(}c?tc%h^TMXM3J3u$lClB9smu>pW1 zI&#ma_{{|M&YtO@8Z#*S(!rhnFbW2cb?}#I$*$?i9qE}jr6>PM7_=NY9Cnn*seyn! zQ2!gqlg2pMZ2)!Gd@PO}1*e)R1Y~lI8Mx{Tu{lcirq0(c>XN9)Y9#&lP2AFG?#!9+ z9S+vQH%{0qtt+fOO^kR>&`lU@*O8c|b<8&96!qnwEiI=RGyYAKOYw|Jyjpzlf^^E| z4=3$?F`c=K!S*{iH`2JCfvU`N;@EAH*2UeA*;S~<_1-H0F?x?>@TdopM+F*Ee=7-2 z)r<yKbp!&k>F*odcqJr~glD3CJ4nz=_8#aJ6|#fOCq*)19LZ*StxqG+K}Z6xNx=}l zBQ!zr<NO5Hu?J;atIY;%DJ7LAo{o#{MEf@F0~)C?MWQ0y2*r#28X~Vur=PhkXTo}1 z;UqbEBL}N1GGap=RHznR>?dP{@5!8cPF4VLda>EP5?tebR1VOnOvZ^+cE*tz<h>JI zs{%FBkr(1T&QO)WrNc8L$;XL7jYP~SoS=@3YGPL*r;ZJijd6k&J^@9_II{P%<deCv zpSe9}!df7zj%-gvu?P@#1noXdf>DmJEV&-xBr8r1zrA4VC+aCFva%4J^yTz45owC= zj{)2&o#Y5P7N-uPe8w1f2ANuofnAP(RR}yOBg!8Erl>*EQ`>&~TFcSFCga*QUF>=C zetBYa_eT4sNMdlrk~ikR`*CD{F>O1+4GwE##`oydwCw_RQKC#H&E3d)L7M=};MZdi z0;U;Q{2aECr#wV!8Z%a5-Y+o4%&s`E;hh^W%TAMB$;iGkV7C4PIrff)g3-AiK#Q=@ z#bR(gjwHGVqA?P{f6jw!KrMFE!BqE?8$yjDhc6l)=<ADy=(U<FM@F0zF?N_M5VuPG zj(IZzt#2`3AQR1<OTTcVHg3>V3zlDN!NR-ld<oQ#*~N7AB+yY>E{YsN*xQ*$bIkAM zOP{ADpFr||9_a3{Op2lv?6$y=+FL4R40J^ns%}0xFR;eliK2x~f7^Yl#*8ya=i~85 zI~jlEB1P?FBsjMkaNmO_z!l5~n?lftI2VC)zW9`ujKB%mfK_RTE{WlRC9`~MkBZRy zYH$wca#ae&XlE=`SQFa%nI)1@iK1kjXrzOyqG4E<{tYHQe7S;20i@Mn?<xhc>=kd! z`a%?hG4dBlu$F8iUWY{D%pI0^vdJ@d(7dw~6vSPXcU-p!x87?2n)^sLu5=Q)Kea?x z8trA)i|~#fu8g(p>h89xvRtafP7>8bALY18aTNn6)vWp+XtALsYwNmjvoTm=<J#cF zL5}!j#6JMP^iFnA)}QW5om3O;?lul-%x>i+&fIBKG~)s@b|XGO{`SIOOh1_)g9u_O zV>tkVLuNfc11s^4=(uvA58|UH^FDY^hWZlS5~T@}`7%URG>vP-s6p_UGj|>83370? zqwB%n3;$QufN?3S9X|pL>9*dCFVLjBqL3m5aoyEuN#eSKC#8GziZmciW>XpZ))U}H zY%1eD{vdApn5-uRGGdp2pEaIvo0!ksJT=1Y^~=(0LfyL8)0s~pYE+;|C7>n`Rv! zj@N#VaTo^D3TIgkkDT!E-^hrIs`gPnYW&}a=l1Y_DOkd_v|pf_#Bxr><MF2nx{x6h zt;8j}_!x+!U>Ybp)#2bwS_}nj8ML??&1cY}5_(x^QAeIt29ryR?OCi^OKD|er>)rJ z=>h?|ocmFLF2jR#Dfj8Z5RQwD3-KI`CIz{%AM;@$j?jR!J^w{xZb9niG`hTx7eTt* zkF=(XDY(pXsBi+nKK-GNu3F38mAMlq_YoYcQK|4mH|NK-p4Q1&?t4!UH+T|ge8y^^ z)Qhnntm3uK3#cT}{4r=gknEA3%t=pfCji>V8F+;DarOaD12ue<UVoCwK(H<17NZIc z6njkPqex&d;~#~(`YX~E=S1W)>nU|Y(MiJC(NT&Tw+;!0R0AZ8AD>=D|8xj@rYE~= zK-{R$xeAc#zXgE(@dE-uF$f8_j-eDa!qx$Jmo+}Xb1)DT1nAEw5~%J;R7V`SeP4gL z?)x|CE4A)KzTiN@dYWZ8Q7ll?`N)wzgHZ-S=xq4JLz+I<lki3_)QCH`J;Y5&Z~wn* z6r6>cMgv?p3)5NP1D(%BVV=rYJv#vDi^$`l@Bp-<QHWTqhr(VmEZJHsaT)&{mTI87 z%h;qZnMb832O()o#0ad#$?DYP!!(LtP48ll^ny7|2DrD%EjB2<*oM`jm@di;LTtgN z9DhVwizl8Qq~GF+1!{1Yv^eiHr*)tf6$bh<4M}8r8kyQ4?<bIVgwmzU<2a>K!VmAH zkFkNMMTO{nv&I>RC1A?m1-3DjYS&TMtLbb=J!&`h%9ynXVcI-p{{V%#T=9f9Q?Ja} ziQE@)EGSdNh~EI|u2dnm<aa{-rs!9Um2Ft>r3@IX^nsz>_fyXJ&Ou@4pZEkadx|TM z+G=>7jvg%t<HVAUhg)?tE3Cy^Khybqvkfa6lsTpCw@D-XPF4@oYP$LiSCz$@(Oqp+ z8F5@B)5=^^Rl|-8ITrvnA4eKD37hjHb{#R4Fmv&2R4jM99Rthj>S2?9LlzbrDm!|I zqJY(iiIjPQ>KE95*S*cZPvb|U8Ygpoq|sY_vs-(7#eV`weG7>oQa|~a`)*h@%~_4! zhmc9PtX4)fnyOuMeP=r|tzlya<#l4IX{YKh)$*gJ>8`GyjvGKxAMO<4Um+N0)wieS zeB=^vlyeEBKs!ws(nKWKMAM&KMBqL-)ap%%Xt-2fJO4iTRNbpL$m$DCMQzv*&#OMm z4od)E!wGW}qCN<#f-=j4@*L;4$e~*H`NO&WXV}6E!_GtLnxe~lYGCyw9-)-Zgl!`O zYury{2-h)nzI>NS7vtI+iB^GqC72}I3RU=9o)AXz*O1^nxf&Tl_7L!a3_0-<oSV>& z=Je=LRyPK*sn*pQ^K&GoLVw4v%#y+Dd?(6=zzHvtO0Llw?*W5Wg`wK2)>fgZj9P`^ zod>;I^8mNQU;!6vMRUyhGIl0<yo-iQ3HM~MGtq@Gk?y#mjvxwKqaw~ht3Wkul*=zl z{roP*lssbjKA;PUkXi71&OcajR(<=^33H}i<uwjFO+AV67!in=8azY>m<YCwnOIqH zKQqsn`wm%m65hH2_PtnDL|sq$=sX2aJrQ4oBmuMIf4~!DZ}#H`Kt+H%))(s%hl5H) zI0|4L5&^LmJ8MwVL;Pr%X2gpu`tXs0H(_gllLJt(s0DU2mvFJB#N=AsuZD-8o>MD! z)Uprr%diUEFROesVpaYDYy5?KhSyq?XCYWb08m3A3SyH9d~0MNI4Fm7&hkX=hdK*8 znA4oI9LxXvsSFKYM$8T2oJN!<$2Dx|C|~=#UpwU>oJW_hVMFH}2tL*unpydXHRf?6 z_KuR?pu5?SYj?JP<C6XCY^!pvHRd&I_*=N93q=x0R<2hImbu;<$|jO}FARN(Z4}k0 z#@C<5j20-sH^6HCHj3#zA=m;#@i!~?7Ipt$(FS~hBt3u!pbaExSl_{14kf6O`KS?F z2m+}Q^gm%T`q@rk^0w=PSbQBSIRlI9(goVSD==1M0;esxV7w|j?}V`f;zn4{nVfFO zB$vB2nTxW&z*Zyn?2C)%I)gz*)dY<@6{^9(OVNv!08Gj{u-njiKb(<_laV<L)$pR^ z@!NMgpk-B~@v0hEe#PT3s$St;J`zxfOzoo7IY*d3R1*(e$+b=;pQLeA$M$-_4WI4? zGFgNj#^%AtAY`u{ROGH!QQ-rh!Bao)Bt49o<B=~&lM4>W+#oc49i%{jvnK=mjC~ph zppfj-P`d#mSzN}!ZJ26bPg1rNDI9Vi5IT$Aa+i?8A%~yBVLqPtRV^_>><g#-hnB^6 zAZsBu5hH;cV425=-!BPP0()){X4p*`#)x_S3JHmM)gq^kc_k%iPsL*)%Eb>7<%;2f zQ7);5Q7);RQ7*zHQ7)+@5anXJk1PmMv-!z*9^MdW+;4{`Kgz}TrfjzZ9+)uVe+JNu za@{7M6!3Mj2!T;9)i|PDf)F>#m5sbz<HSr?**~SCTs5-$uF!~e<!;w{K^#_qVil`) zU|zy|*9V-9=k}s32XU{5=)`c1td8-bTm-qTDA%(%Ezf5e?&<A`W?vI=C>3!}?=R4q z8IhF*;Bpn^BA)ar54Go|%_!Gd$RFUlj!TJ7MSUIR5<I0vxqhNP)3K#*@!VcC<t^q@ z&hm^vkvsXEhyc8_Xv!G8_Iqr^zDDPQQLdzrkj$($CY|Tn<b*b0lM`NCUc3>^u8C~K z=6DHgs^T!P^lCHO<t$*nP>a7hz6v|kRyz}5$jrg}fL(6Hu@^yC42Nfbhy}BrTjel7 zIw7G8io;Web2HSKP_{XnaCqOZ$4c8!m&VXCK5C@$#FqA0=~7_83)qpx5wKG{t^;=D zC<)l{A>hwS!0wz*nQZkQu#v%5Tq>NwR=)#rRKQNyN^MZnY_*pGyT2?Bu$T(iX%-6v z>^^~o<zizMp4(%wCzy``JF*i4cGm?8UWVs17Awb#Ad4M=v=^`=E?Wic{?pJZU}wzW zd7XV^510}%e$eh4^i59{Wd!X$h4HGUjRFA77zF^_pq(-Oa}2(~SiBu=oAn~gjo9zW zTWNk7xk-6Ec`N9bF+Ix3h@kxnbp)zB8cDT<){Tu^zK`~Drlp6eb}ULOxQWR?Y~)zC zSZ;c;r8=J*-O6(Fl>+_%Ade!SS)U7#_dK%4;T5Rjf^-PaN>7$)K-{p@?byT!Z!Rse z*F%7y=*QrlkB;b}cpvENGG83e?M3#g)BC<+VXKJUf6}dsXOKfl9<6Sj51P~ZG#wez zV?Oh_tgRavBM|d>9y^Z3HN64)Ab^rHQ9O_wz~&lV&w}D0&9mT;QA@bQvmpQbo&|NC zmEl=X%y^y!rEY7_g2>dK1(zNpL%_2jxn0kKY%O0q(W7Y0Sx)14ffylL|5%le8!_H3 zN`I10g?)Cmnas5&=UJ7DtT9Wh;mcj8Vv%oixlYCHSODbIAe58tsGgE$R7LNkLFL*6 zBm8p~M8gJr)^5P0_F2mpw&k;S!F6b!&-y3l%pcG@u~b6Qa#bySt(VY$>_?iJ?JQWp z@5&T8&GVOS!%Rk0tLUUS%XN}b43Fvode^@?!~+-a<vA1ZnJ%zu$__`1wF^uyb9f#c z;nB<?8}PK9jQhT5AD0Cx{*CXMA_h0WDa5y3xxI<QvS2fipD;LZ;)b*GZ2{wpFhU() zT)c>D3@_gaQ%qat0t*{W*0bAE(1^eB77FdrDH@NW9banF7CHkbhGr-&MDDfHN+U5s z;P@bRv%<oBT=xmr{U9u{mf_B|X{V9PwC+6-&uL0yf4oqwW3XXu+Rx~-tALf^X~h1G zzHrj!8~kR5h1czL%L64cUm1Tt6Z+}TpkQF+PI)s^4qV94ekY1=S@py&bg#!Ej!)p* zrD0;?sakcP7OFlh>Fr>1`k=}{3k68p5;oCCXK=H47u4hz3FQ7aS_vfAr6(JabZ3h8 z?W{!;@39ROc^-MlsSF9#avb0+Dz!@R-n9WroQZC_lo*KTG)f$T7ePwwfbFU*Tul%5 zVZ5{}Mj!~KdBHPjxy#EvUL_X>CK*HRHAsrxkI!IjQ3-gm^AI&kid(=BRvkyIax*;V zX%H+U&v`lx30uxj=$c?&Bi<KpTmvl@kpy9b2elPeR;CAKOR26>gP~UqupZ~RA9+#o z-K;Y93qVnFi?$e4*UJP|yu!9R;lppt=cT1mUkLRn(-h`k$l-~L8dYkGF}+)?UEZa4 z+X?rj(YxgwsXsi88IwRJP&*j631i>~nBg(-nYMweZ&lK1*O1F4g#vg`vR;b-pfMlI z%J>Bgwd*>RNOU?uH183zUiFam0hT9fa1nAa;#h1N!q!&7WYdg5zml(lJ@!iBs(94@ z7iBv?PPfGiL(Qyww3YrvRQrF?y_=HIy<fswL+nUc3$zL7hNdOyHc)4=>tdiG@G6s1 z93k4tQzIg6Qi}Q`I4O15^?^w#%9iTel;a2g?71DRN&9D<i4FQ^kMQ^rv6~%}pAeAc za!|2K0ZBj(48c}re;lb3QjlG-0OR}6cpLxArnI?!C-^^Tt}8?RcaYes!E>DRnL|0p z9MG=N`+*I&vm|O6zG+G4Oq%bFSl5uaKnaNGAYa?rqr(x79d|_(87;6PisQzrBR+jM z)j1OVAS%LGOr^Tkw9pkj-6#^oWYVJN8-gyP$5?>z(g5qlIehD9IGYYLbaKRu8=WFe z=>|LTO=+^=fw@S+w(W^;oOWppX$6u61O>*{wan)Qn4F`wr+pnRUtdBS{O6pCq^psp zx)nC0&mtd;JZg3i!I)>#1=P-0So=k&4p4=hi(ucl@~W4TSHP;n#SpIPH9RkRsIdSB zknFIKCBzCX3nN+1R}inR&mX6AZ@U?J<z%3f)6uRDO{mr0n7AWH<5VhdR*h+Q;*P-y z=L-CB;~5!yw{&TH9t(NXYfa1AX~UZw^xJ59H~`+ae@}z<6C_<M9|TN^OY#VWWuVC1 z^de6&8So>&gmEOrj!7>z8TpiomGCWv1C)Kh>eS)e^Iq4?su7>U%EdMus3#$qwYzD= z=At4!@}}`o48L1%Z*N^hg)Clu2@vp~^RJhcsmINBnWo;)unm1pNJI4|6iGABj2W|0 zP?>0$<bS3~;lp)P*FY8sKJGxl02;4Ht7g4+RbNLT=|FU<27Y3DF6s={FW!s*e>AEg z`d#<@w{CN1r{~-GQd+U^kp!^Yfm}?SYE&B#nL(%YKvh?DO`yH`D2Q__rhWGoFpZ0@ zp2tsW!}qy3@broYa9TU=W8nwhemEBo3kf7HgnNxIKLl&_U;|-d8uso-3qdTrlhZYR zhqsAYMN4Y%ZB|hXKR64f7>{fD7%M8q4^oZzvB#FlvDI^nYFIB09arDRGv@=VenvN9 zMYE7#LwID-NX-lXT^1|41&@3c<uCrB#zi&w;n78asQ+I<i09;V)J;5arwBFZlTqgu z%~Flk;>SI)|5RM)B;j$K8q4EHad+Xsq1n-++B~@*t4{#>V4Ihu3{n?u#EN2Q-5#8a zZIyC@UVP1zJ`$GmPBr2wK0WlH<gz)WN*l?6xTvjJoqXCS{p8c?L)tkW^Vty2Mc7n* ztlSVr%Hi55k_)G+lUTSWk93;0gtXQ70?sOu?(XW~)TWol)$ZoJO;rn2W=o^f00D{n z01nQ<dH40t;yEjIDxWK!m-ktGmIJY~Qb+UoEcCQ?jK!06r+s%_7+_A$OWnAM9Jjd^ zX9-u!$+viq5bzGvZBNeT+LSx$G46Pv?ta*QXm_3yG2&O^Fi>7SHt`JH3S$2nC2;U6 zcR^b91!%<1H|%pF_8tA~bNXBL>si&C<OHj(2w&sKMX3)r_dt|W=Zm7LF{`Y}jXgs( zh^EGd!1T6$EZJh8vMl~z<b`zWhoWo<6J7c#j^SJGy$yL!dEQg5_r!U5RXWA$q@Et$ zy9)2Amwqy04)S1pCWc1LmY!Ck7#~#3g*Z9s)*Qq%j5r-=b0<E$&<$Ow&c+5+PCZQ? zgcMF(ju_@Gd^~{@@p+Q*kIX1wn{hVFslH1YnW<-2?0UXSeS8b6j}Aopex+aFU|U`3 z8a@Up#ptJjfPJT_N2F-=a!YEmrPk7&ILqdDM4gK+OjxtEQ{b4#59X76Q5Pb!UngQh z&8{ahO19|xWX5FMSzDIWVD<n#0H4N5L*_jYf!dmSp%RWVM#8Sl2k;&7lhY4N6j2Ef zbnP|xP)E`r6dm7*6b=ZsnlF?if^mMfJ&zf2Gh8>-?gH{*lT~Yv$zF&LEt1A0ET8dD z!4jW<N9TM1RIB>NLeAlMS!)lCByMjsTXL-WLZpou574$4nw=Pwofy@KT{aUBQ|E-| zF2uZRqHL(G-%r@2N|@WQU*tFY5D%=t&c>`Oe$fE%*k3<c^-F*SyN-Y3Yv|cQmPpEy zzdVGft_*Jzqvo31k29u^0fbn-!8ht$WSE1o^;feMzGRTAUPvPZ!Q{#@=C<GBPyw`R zZo3fsmgV6Fb)T5I?TlI@_9b4C9y0P|tB5)s8#X3t#0A#L2u2f{)f`4xoA%e-N3-(k zn}plO2!F0U4X}8O{1!&7=DC;o=<!_jLVKPxs1M@qZq;!(VUrNA68La@D6{~{mZryC z43YEDKpL0=pp`!$dL%_nVif>0Uywl|=Z9gOjo5)k)d#1ix$RtIdJG8E90G!doGalW z$^B)s9$13IA;X`wd}$^~o(}fli1TMuiQj4RCR9iyUT4H-;%#CuS|rNt!P%-n*ttpN zW}evnm{N4#pGUx?iY!(-#LYI|h?!oth*QG%w?SOs^qWE4qA@0W%b+qi#YZ5M27%<? z=5$6*O@E)O)R^SCYc6*|YBUw-eCD=eqdm-RL#j`m_C8OYlG`cFZO0@A?Wq12KOTmU zQ9K<}{gs_4LdUG;+!{I?%}pObj+pOfH@!o7Cd_ZuvyEh&yug3PjB~`(WSYE!jn8e3 z3x0OGAt(4PX4hP!?%PnPDOV$qevB|u8RI=*B<06l434m~1`dKmJcp0{xY!{}GWKG| z1j&w#`sU6)iY!L#6wnu2w08D2V#njr+}Y2FKZplg#vCM9Y$j6)0#&jIJ$-CZZ|P8J z9d(5fOF-n=32F<#k&N8ekDx6M+au27pnHBCzJ>?lh*<LpJ_<x=9|b4vi;OZzaWVj_ zhd4WwGP-U#5~)Alm;+J9N3;1hBR1k7l-9%5h}B@*jVU7y6RrOdW@Qcf%rz`U132VY z-0pcS8jJQ+nXx!>aVN;cDsCM#W*m*@fl{Y&cR8LpeYX<7=Jv1=I~K!Pi;JDmrK~Yp zgdNLT<YOoaaPAoDvJKhgjf)uTd{!Wc5nfA19wO0gVTztLMANspvM>ks7#wxtPq4T} zGM8h$S8k&6E6$m6=@-_&8nFq;n!5SJ4k2r`1?To3=&>p@aQIiK2<@rD5TdM)tr_u& za5{CJxP1gQkftX9e|CbB7DS4_L)<E3q_fCI+9g&V_O9_4yDdc_g#B8bBT=cygL*On zYy8uNtdYItqFxfiDgi?Pr7pv09=(hi6_1YLV}M6FJF0l}4UiP8e!#l@Tt>YX0|N4w z9iu+niR4x_hA~c!_|vG%9~;hh_-sDK;kQl81dtP)pt4X>8}TJOfIoF}cs<3clC@S@ zCtLc<R(cg{pCCgqI_EaKSOu%J(Ap5mWp2>&&WJyYHZ*`optacLG{Z!>vEnKW6OHoI zta>VJmGaPU%S&Q*a~XOTDXIlZQvILe-apari>x>eFAME2Wn~GPTpV)s$Fpjtc=t?U zVkB}r>%WuI$#@85uLOwJf!44Y*)kwU<J5OwmQ4LEQi@JdJ_hN;jM85WS0yO4qMNoM zgwEoaJJg<<c(pR${)%R_e6?k~L*brbE9j+Gd2~q|MSMf>fdgj<q_vV~FAJ|Ga`Q?P z?6eVkvlkh8N)8635$n@cXlukqAESDp?8Eo3KuXz%OZe!iRU`Hl1Sm~8WgMp79WRi^ zE=Ju@k{Rmpc$foD5+&3yLW3i*nnoeuHDOedm9R-fjFAWA!HBQT;DHxt@OeD298U1A zc_6MRZNzq*LcgA)idtzQ{}>}AtrR*gu~?sll}W@G+`@gH1e++X61C2WL17kLH`JG` z5Eo{F4gDM#JishQ>|wkB%UDVxDK-*=(i%M@ThYksEbMY#K8kv(=Y-3VQtWaJ9|P=C z!HjjHdKQN%Z?Y(TL=0N;TFHxP-wN+2`$@*RT~DB)7LL&@k)w?XVGPAf4I8q;%Xv)h z5rtrajbZC#3?WFJdyWNm1<o+h?Auxck;)!87z*iSK9(?;p!ol-9!N{WzSHnRQ;c%X z)iv=?J!uLXoqL)G&MP8A#uwq)mHb~G$BHNmsR%_GS^cvC0~BZr<zZ5LFeX7$z}&{i z05E?6V`=TEpouugQ|Kyt)>o5%`JJmKDOMP?q2+%Hvl8x|y^Qz-pj%5K2tFe=j_CIY zcRq!%BHRc*1_;;tP!9$)nCgsCVm9A^=?7FGsErl`YuYi!tLX<m25K64SXxc>0NQN6 z+K7J+eIzyIrPXxIrCv=1d<@i7m|oMZQWLCATpq7#8jc6QcVm5+&dPu(d<jeRHsY7E zgm}I{VeG;SkP<gRl#tSCJYY#ofMgi5Hsthx_!s@B`~f-c!On&3ryg<6!Z_9bT$}1e zyfv66Ljq2i6aJC<ZBGn==)hF*Di{Haot;=(EB@6&G@I$XIWJ<OiF^LVtENdE!s6xB zeX8i&C`#>e0r<=pNe!^c>^RlGDSt8R;QWM~sXyTaU*GC*;&`W2DR38ZreK+aJv`gJ zw{?`<+uHV>na5I>RA%GyQ+*?(a|a{C=cHYQ6ORD&c7j6xp(uCV;+V4;eH^oDmpA3O zZgXq}GAnw*oJyVdXUtyD$1AhtRwFi#dmmch`#p~bTf9l-L0aO(JF5YalK=3$euZ)5 zBkfGEWCqg4VQIuNuKf@T1+koyQ9_SFnA1jlG)*o~6O<f@RBHpwF;PVT&0T(WYfQ87 z>VQDi5X{MHj9K5Z`?yyd6)TC9EQb<tZ6-ch+0I$0Db3H|d*=aSM4LC*2T$FOwYVU> zY7{fcO-KZ7oevAqY+WHTQW#YgA(hTln8L<K+tY86lYARz<Rfj^IPsxq!WL|b|F1?) z&k!0iDz_tWcF-2{8)!gAE}Z$8R#f9pWXsbBqo^nE25@{UdDoYZ0ol?W_NNy8%BpeY zwbJW!S~`xT(C8D*g~zlk{s|Rw^@Ykiq7OAoUeO9$b#}1P-!r8eoyx~RqZeV`Nhv^F z8mxm=zR^s%d+!xW?#9NWBNUsl$&i-fsf{}Xg*{L0Jf`OLBia!*+;{>~le6u4R7AK> zEZK>o3j~QR;1>nWD|`$<GYJ-yivqFY^<`RE$c?^Ur7CbO`e*_5kXRV0jhE+yB#JEF zTE$VQRy2HKR2V8+nG?(6`2YpieAS>HtNuIGsDNK4W+CjxM!XWaDsqs1+Qu+kHC#G| z55|nTeL^8u$sRWVO^A}Ur5H3U<yl|qEK=$U4g^o_zwC$gp3VsCy@yJD)GPgLiWv|# z;{+(;To16N(gp?`yh>YsgOoBbf97Mrz<dE2&7D1s_;MgvBUFuKbUoyJ$q5uO3_6Hs zZ3+#;5}=`>G^NBoTm0w0v0mjrKgmZSmGYlYp@pzGJWx!i>i3l?6=-7$+tB()f=F1f z6{mhuhLfL@hQlak78@~105Js=@dvar9;5xV6}E5hMl7ozC@w_w5E`CzQ1gpY)BnJ8 z+M?OY^n{t1={I7{78wBlob{N>L43o*<@&K6E<faB0GI2KpX1<|izR|q2uf5hvsG6T z?3ooQ75hZKSFaaJZKQ=C#hxi#X4k){WJ~I52em5s@F3a_VkQ%HxYkBt$~lEO1J0o; zMHf+OS^!xda?X@YGRoj^^~I*N<~}e8DND(Se}vuPLn1{||44bj<e+q|hNe!@32S7; zj^Js$UgTa~4wiW_*ecEd%0z|T+3A^b`=v}5HBI1kW+8N)(rM1m85r<;d^2U|ZP|#| zSt?d4g1>|F21*2@dD^Q60-VQKneYB`jJI}we@at$JE=02!fVI<^;E+Jn3;t8dnGWP z`qhI$)sRin!yEg)H!AZynzf=!)7{@i{=4?w-#kiBPfffu1SusWpW<UcM(&_Kk^Uxd z7<t<suow`@%6|arP_lA8f3#P8`31@={uf@^bwn1l%$n*!p8tD-9%kwc`F*keglvFY z?v>XQ3a_@y&+8Cp?@N~(=1&Kr9!c2}X_bIfq=++wsd=w-fWiO|o_#DqmWtHT<oWyB z`wbj)o-v~<zJ#T?=T46j*@aTC9)VK+2!&^;rQL^o42;k&C;>!hIhUGpzH+AzCE%^x z>GfZOXEwoQN1W8NAf5#_e1T)cPETW(`{^C*8M{m!?Xyd#S#7b)Wn>1AUAi64s?*tJ zJGoN@A><1qB-Vj`%tRp?%W=>@Qr12l=U!c6#0vJqvuI6QY;HAIG1V9%@66_lt>Is( z84H}_KucR$=E{#>+0+U0Fw0s^C*&~(ym6*#^TpNQX{TGvP!;EAjx}z~qc`dAvF&Z7 zjAGmC`50i^1DH|GR|(__Qt@nPsVQ}hs%OO`NaD6Ds6O*sh=I*`u-><ae^t6oTYu&- zm<d?uO9WWUXVy`ZH|+;{mi~yNX`oM`K1!Q!oowfs+xu2;gzv%AkZ3JMzko+l`hN5y z6?cukXAj=tI`#ZsDm*;#Rb_!gy_K$>bX4h&*tmd?)wxXvD!Z=q$7pByIQc)S-hp+@ zVBB->(QG`swD}gZwAqL)qHz^x2M}`_8i+ahyrz{~Urlf~>LhT`a#<N(Tv{i=6K(nS zL!IUe#17)t`~lAH`7=g<Nc*2??0REn`ngCc3*k;a2FA>tU=~w6fUxs8YT11}Nli7i z7Of939OwBG;~2%*v$1kcr9W0at8Htn96~$J8!O+4)J`8OYy5ZZi&m2mdOUjCD5MmR z_UB`OM{i_CSG2lzXuSw}k*GRSv?06Dm8a7rUPM12UD_J4`#3UX@{4P3F)h9vSf+H0 zuTTTns7NAMCW7+rzhMcmo@{{NGil{-3?t%=K+*@$3qsnzY6YR9i_i5!^(uDrI3EMC zn+2UoTH0|qp_uNHxGC`)@suXp5zb=Qd<l;LTL>?daJPq?7v5IdVBB>wUiA?qtbU50 zbzD?Um}=xm-*{FIrt@0v0V$<36cp=d2TLr_>Z~SNacS6BWH<p0Hgo)G_&sgR@F;#h z0N+45HJx)Q`9YbZqxmSLQ|4$L#HtQhDbo@jFD4Fg6rgKriR~%#nZX!)OrrkEoPtFg za+=q-SEQ~NdQS)DXaXE4vJ^!m4&pnVm1)C(<5vv|Kfo^5E-(~tN%14=R`%RP)aJ#j z3)v(xoxa=pRIn20{3q?9Kz+yf^=Yw_#Sp-#9CX4Pw#QL-WH`xr&Rs;Gm*=05ta@ns z^E8gEtdr(Swm5IDLji21mUuZ%9|81XE19U6xdYseV9wF)(nGHdFk)LWkUO4Lw&h1S zAH$$j^0=m6bRi}hKtdH_vFqqNDG52SV&5J3)`3bxTs?Dhc;GxPS;4WqKn5<siLJn| z9j7KC*S?9A8(J-=_7@M(_5FJFW?r$l#rJdl$Nt$)GvYLQHoPsEH31O%Fyc2tSGZOe zu9-g-{3}BOQIwjK*kn1d=Qeo{-$?vHjT_a;o;BcD9eYVeUPl7;UJBPkeO6yOz(2wr zX<vEsc#|O?QqCI?Ih9{&3#htmp!5ez_F}J!q87%ZA<gKylIOBJM;>eHsqRA2tWVc} zaZpp2FFtANg#TGzd{Qd4AR0b`POYxoclB_tPFS2W=dv%n`7=aT5G?@cbfV4yTao~u zA)SWw_`RUEo#+RgyvBuU;T6-i@z)r%e45Mx;=|#_jOYLucKHcnV%qi)WPnvi^=nM8 zr;wCqJ!JuhvGOwnuk{Rt5&x5y!;RQgDx63T%!Ecbw{gVpsi?S$0kay5u^Se=;O37n zKN)&J3K4*X00~QL{Pir(BmV%$A})@TG&G}eT9N%e7X2<2b#BCegLi3tkIfN&pt4VA zJ92$kabMWV&z4wbY*96iL}vYp4<SZX_``@zVa4vuamFmu3SeAGZI#;@#mouTQz}?D zVm*M{^!CfxJ|Z7Z7~ZBO5~$6g>a+QHp<*7&DQn0Mdh<s7IDB?0@P|RJ9EP;wLv|o< z+VI;pBohw71L3$G?qfR;FptlPl&Sytj5V_liQ%&ml2wes6_=zQr@m7^;qnTP+L-0} z8#v0h-Hg~%GPfk%$+GLHO~c#OS|GbF#1xD-Hei^8IjY3b5to^|65Mp_j&Nuh2L2+P z6~WR?gGG;6qE`2~Bm1KxL8v-_8d}o}Om?{U;(-E>5&ISxa(Q{o3<gXv0grdid-wxh zk@k()ez5O-lc{SVQp#is@o|7!*g^TZlhS4$jSYIE0V^rp9>Rrk);wY0c_f4-HhUa* zYxE~}W{Hh#ev@s@qhPV#qqYBoYwiCV&RD?Or+d(pFL0J_$Mx_K>$LYbXWIK~QIoRw z-^;M~DckG>zn6-lqP@>|uD!oqeGJ(9+XMDK%MGmKU*nz<fJS?NGwl7%Myx+wb8!X4 zsjl#ef_qq$N2mN>nE3?+0)DV^tM>~x*yo(rLC96Q(l9?1eN2|nlL0s=hSnmP@{-xw zt$w!(&9&)PKY}mj3)E&|<z0KK?VgpeBurB7FEl9-pgmJoGg_rcDOX_%A9+g&Rx>i= zjh#?JWK-DrEvl@kCkdcw4nkzUM&hWD;4?9S1pbM37nhsp3`;Bk7UA_Dp+doMsYDBL zo&=i^+_%yZYW0i}KlNku{r@&3cxx;@B&g|}85ndUa2&`S`%c40Xk009nNzbRmSyF3 zb~=64-j~1pivY9Z98<V%*VUW8v4s7o$A5w8tmo$jm9G(B*bJ8P6!0k!GX5OO`+h}j zD&S8Ka;Bqro5I3b@+B!m4G3~w0EzC>F17+<71XtMM!Q2GMTBTSlV51UzqOXYGg&Gg zJM^(|Hs7=+n4)Ps@gblPztt0=2m%E~Yic$wEDws)Rj@(*F@gmYT*)HS{dPc{mII}} zIAzK(`_eCHB~FWQ%}!99wk-ssJzN1e`mRj&U=Lfxja#wDU)HvV@JBba_vKxDQ9?Lz zM~g9B7E5$cOD2?SsLTwRwZL6)LKF#sk|57bbA2ioeMamIvWfPr5@p%SZ?#06IJc|= z7zhh-w`nmD=HyW^s)#C2W8*s&K!OPsvd_$R-o~z^wmJT$uOZv7`gtLWv|MO4b1iSW zMVb2b%jxX=GbVa{cD|8rgN$`9zKDS2yRs)gFLho;aeqR*3&oVoQmEBz2<4n?#13); z9=z?(S5)7UO_ieh2OqPQqS^*2_AN4cN<Q_*nXc()HeZfIe}uicz=eX_TQi2^qtR)^ zcsHJg%48Z&&1b>(8-a<~xA__(^fz+F){{)B#{a;_Kw#lvq-o}zfo5e5!|(7y)edw2 zX|b{CPbjxNOW7$<Y$0o6w(}#zY{?3L3d}hI6bX8Gm22E#37AH9MAP2nCvTc*<+B;D z%8>P~A<h@Sw;Gl1!gZSi{&klz##<mCox!lvl>fC5ptqj?M}=*Ec#tiLa9zN1O1An_ z0Bf*#M6Wy63mdvgKE1l(N^Z~dmP;Hi&I(ayo$Sv<o(`V^y2ywfg$JKIj_8AwB2afe z2DrmOMxQ$#sr0!63r;>g7MbU1?%2|rJMM)Kp!fn@p?H;Zu(ia!#~nA2k5%Kp<zs+5 zeus?Yj-F`NY#wLCPhbW;|JjNi!7#I=*EG5`Q_9LmGl?UytebJdPXrdM-|dr_TeaMW zkAapaVQjMH=PJ~Sm>8!xu|7ga@l&t7hwp0TiA+h7C7mna<F3}BAhA#+YJ^#!-mA55 z1rs{eJjr*I05Qg^lI#{1Oetg6S%TZKl#}B83%s-t{b|KTSHF)=wyBBdLf@vj+8LU< z7FGKC_)QKAFD@xyOUe((h|SG-)b$Kf1Oh1Eyyx<{t7Ll+^Ij-Pva;Y=P)cofVm51_ z-=|{&>E*rUp4Ycm{z|vJZ(e{BneiGimXygv3*<v!H`tBCS&3S|r9*g1??j3kHgw>Q zsZ`~iu9iXhSiP7bdFZMlwiOOHs%W(nrft@~tbjBbObsdVA0oz);7Z!M9>oH-L?Edb zj>&-b=6C&h$-oRKLwAW@fQe<UhVp6?-~Cb8C;c{L+e6a7%bRKfq;FaUoK0|T6!gM~ z*HdA7bjag)QEcU#d3uG5j2PtR(w3W0QQOpa17Gpykh9I+jAPmMu??g0GbjKJHubsF zpJ0RES`FQ2sO3H2PvoG?1RkCi1&gm7Q2*cGNw0rxMtTX-Dz3qSr7SStu2ZDONy%7F z<opqT+V4!Z)#wyb{kIzN3LdZ|#B^up?#5l!g3UK%TjxIVRQrh2Qiw~rnM=6Ujae>E zRJ?|m<zgOlkjuJe!(QHHE@|=E&v%oH_;KW%w07Yl4w`m}rI2$<^KN=3&|D=RiBA&U z;nfTewA;Lkylv~L@B0B>*gvZo8xtj?C*Gkhr#(gAeJcJ#)mk^h^tg|?ym^+JnNn(J z93KN}rwnOtdPV8g*D<&dJEQ%56P_S7++{w_3IEs)yn@uS?YqiFq*if}Nnmhy!?~Zz zerbDT2D1KZxyS)EQ#<Xu#{prYqUdm36`sT+c=9$JoyVD}l0}M9Wf+!yklx^<s0H|; z!X4UxLd%?^_(phrA@JCO?Xj#a8Q~J;kh73qcSR`S%)e_cZ<l|C7mlZh*e#dOXI-+C zUv*Lza-{bZD>`*go!*VRflpd~85%q-HkhHO*MThRyR()Q+T-Rw0f+9Ea=nw#BlK6a zx2OYe+f(VDqO5=2(*=GXF56|lor9qs(?WO|Js$9#``zh_N3w)c#bAt*g%~O-wamGh zMBBqvhvfju55x!g{Ahe>je+KGGcfQj!=c(hk>HfKa_8nx@MVw5vfme8JsJI;h?yyE zII6g$II9S2^<JzIKr3Y7EkP^fofCi$37v(JDI0^t3OipCYrCBbcqkjAG?L(m`n602 z$hre#hK2WPX4Y&l%nh3pr|0!vqM6*1JhV_LiIks_h)lD@;ZU<lYK}t%!i@@nqQRl% zt;6KYY4(e(WVFujm}-(sf9q=)2FXWXG^HiCGZ@23%cDI;c8Ku?B~rG&B_gGQ%(;g= zle>g2X9$2`EdhU2JVCFivpX|H-S1|X9De9w7-CXZX9OLb9Gd5PSLz&MEO!77PEnyw zE)yyw!Qc+yq;J&q)lF_)G%)|kwF-Kh2pP_wAhy-wBQ82(1$L;z;PZ53<Jt8{D?U(s zQ;rOY(FbD7NQiY{nkF@w&A9VAv4TQ0qxO(wbr73O>%r?&9_)HmQXa!j6k1r~1RfyV zS%kYdt->v|`E-Th<+iMvQ&qZfX9XetC&rcbQ)C)L&lWnr{RZu*@usTC@Uw7Io?eLe z1NFEp(@9?uEZVt)5&J{2$8k63`u^w5eC?^@QA{ayT*b$L^E()6-}!y)q%`L@hnd^+ zMWOWXrY9}H>Ci}vH3AzQui|UZ`K@G1HGT>o1C5s<?Kgg8pz*7X_%FNiygM4P8u>ne zgddUb_xyam_8Ko`N;Q5Q9|Mi|L)vfrsbBd$j~ekG=+?K_^G?|9&hHsPp&mx8g0H>C zi<nZ4AH>Ii6?6#Fv;~esvu5+{Mm$BcNQl}Q)f|c3vVT)qN}ZKq0ojG1P=WIW2mT%o z^PY>4H#lZ!;Af1PA=d}T%+3AKxHo2)U5}ZWTwKt;N#ZO(tZG-^H~bg~NUy*M@B-5F zkZ`Vn{{??b%@;b)a)gMR?dl~u&Ts)2;HSm80GX|w&bjp2+RtUuq*1Z~p6-_&L_%D6 zoy>g2a@kLjR<4ihN(eEnW?|@h0G^11b1-V-K75+KZx9NlXxrHd@H_x@L8pZCoftpd z)$q2Dk=Q~+_MEFAmx6ZbLbl_ZhTXvd&TQ7K<bKP1aKtjltj8OL1{F4obaO_7@GkuE zYd>Xzb3&M{`3(}zaNt+1TM@D748coqu2xwHJI_Ydo-tAfGkn^2c?d0)tVm3P@%!!O z#0+i)R0<J6|7_au2v-}k8WMNsaCTnlM6C^}+!x>80bVHwtkWgK9G{8~B+U1CCK)y# zvpQ}ONtl=N&@hPNgc%C$ko|?fzIun-Rc){ILWRjlr_pGC0Sbkj6Hr;YW)mvAnoYFP zSZr-qy~C>UqZJzjf*b|QfDLtefzr=&mV48zg^UDzh=%NWqArx}t)`XiPO^^2Uu>R) zD~YTa%>>hV=q)$)jugf)?EsB(H3a~L^W5u@L}CScdMrL<E9s|>;Ls}*l%437(p53| zb|+3rNH4Dp8zXiP0MWHX`|1*6xL7j(<h%`gc_9HyTe$GAHwkIKOi0D77U@e>sd@tF zznJJw^Qd>~c$cu|q+n}f(3;z)cpeyLSF0y3ArQhliVbn#(c$Koo8c<P4g=?DF3Z<D z_{l)Tx<t0lB1D2MeZ~xVvrgFXamt5)tJjQS9ZaV((mZffkG%LRsAZWmh|wnH9Lw-X zL;=?~o8v2@H>%ejDA=yTK~O&dgFyDh_|Q0wtGs&qs(K6QK1#isAhaEiz|EyTk^*Z> z$^loaO7CQ)LfCYaEsCDMD|8hAz;@7eFN70igkn0#h?>6>^;{5RB^_rSd6{?(^z0%Q z3Hmt0S;X~mhQL|U{R{Nwme)~6Q3a$z%o%A0r4{DYE{5)}d1LAfW)DKO@nsLHWzHlZ zvK3Tw{7DpPA>_A6G3IQ3O+gI>{U|B}omXb|BhE(Lehh#u?TSamrJ6qzclkmRL2@<J zGex8)J$WI_qfr<Ann&~4a)3ui6E<`g=noUN2InBZHv;_$KJ@Ee66o&-pX-<$#)T1| z_9^NRxer@>)}k7j91K~>>TE8Dn}V+ib2LRS2J|CGa8;Hi%j1mLnfNBNE1fv%JOlF^ zpix^opYt(b>AZ}z8}E@yu%qHQj!nv{_ffgEJ+{V*-v+*^K1fY6;V7!@pJ4tuF3a@d z|HiYL;d}!sTN|9yHq@|^L<Hs30tXMjQgbzG*7S+h-3<=K0uOWhDb*k7%wn|y6j-<l zlnNG*)eXEgiJpZuj|x-oYFlK~;o7w*UegX&3-NGD?GbQHWwD{yid?jv;EcO0ZD$>d z8!TBeqH6UAu<77J3~B(~4V=y=^LMPkPS6J(IP5?yUVIH&O|QL@r8A|o;=@o1TPu(q z%ZJS7-0H6_*?ea!kOeDB)iOS(SC89_+_%~jv1%@AuOk}u;;$>2E#RB@zDOAXQ-;U% zzX@X<%r`2p^7oZDlbhw_Nhhc^cC}=W=RsyH*&`&zjOWN+(v5(hu3d5^`YnMuys}h8 z4*YanN~f>{k6hUvbTli;j^cZ1p$ETQcbDOy{GwE!o2jt`0ZP{&iV05L&BtDlZl1l| z8$X2{KXPxaXn(z4Kn+k|?Q1(=StL8;JUJKDiQ?N8CJ_3`#02@kn1K<D4hT~%HlXqn zgBY<G1~s!`vtqU|rry?i=(gj0R(4q;_xDD{YSr<Ejo1oFdO$Z-w8jV<pn@Vs4!VgL zkv9q>22{1nBLh%{vwbaJNDie*H^E>^%1SPLc0Vc2fC@i($#t$klK6364p;rRwb*j* zWxi8lEsl<J4VQftZMAf)rlF>c6IZ-?^N<Mp5m*riRX4Ir)Kp3+XtN}(uHLB2g(&_A z(C!b_g{UXpDth<t>@c~8|1@&E4uAV%u)`<*;^uIxZ>z&^UmEN%rcD8X+v(HN0HscA zWgJ9+FCXB5Iz0-I?g@&Hx?%Sy%0kO-AL18bX!$KJBp%WX$G^S|K`2f~pD6AeqA<mp z&J+F%xi(Kmd2A~uzqi}6NJ-1($SKyxY6%{v(SP9bGbssi_acY#m~4BHELyXfQj6AV z_}E1jtyu{+;}zlAIkpI2f153rc<4>Gy=APJ!nYCUqU|V&9lydg#=W@T4(q@bpga-- zfXWvIuDPh6MOdA)Nq!L@1b8&+aC=ge8rjod*?S7UsOqAly*`VSS9_DawY<5kbsIUg zmHl@~J0vcD2^u^1q&Mhxxl5y0PD2%37QF;oB2C5`Gv@QvAOlkv2^^-mHlZYHA~&n_ z{Y3wljLOXo|IVUmJ=W`+uUxqpksJJez835v29Ubpet0%b)EnjiQKIIZiD+NxpfnAk zR?`Kv73cIeH@0O6Uj1T54Xw)huJqqf15h9$)<wZ`7X^RK6t3zXn>|56wh%(JgC}5I z6#Q_Fhk^|l;{FB$+|&rnbv5EsKoFW#6Y%TuQWJn7FUhf)!uswi?#L<5bEpT#Jo@dm zCPF1u_nd3b_+DWd^6AkitJ)-|QOT`Esp<=Z(j;2tN|Mgjdrp5e0)v{Hchj6t+MkEA zPf}63=k}hnbBEuW^v{TYyBi@n=Y?GmWfX9d!Ix+7)gJKW!d(#MqN_ckZ~?m_1x`c% zoYSget8p98yGW5ROYy5mWhIGH1eB@)?r!V=QM#k&u(wOLEX3EA)Wf&|*Oz+%N&EWq zyBLQ3T6g!zJ?!pP1WH*b9>rW9ynejb-BXdRP2M^G+19*M2i&yBJEiBh&pQ>n;GGS) zDXVSX;gN!FYnpfByWySdo@=K!_MFzenZJwPTzg(xZ*Fi$!todhT~RJT*+t0OCS}+C zwfzy(G_Ji~ztFnZJl)c7VIe4%t}`dFp`dUSY&nhZw1bQ(&$LFyk<c_Qvbl35C>AdH zO&T)N#KQP(?RT<MyPZ4%rQFsuX*n;xt4`kc>@LIt;scptVK!gwfmnD2QL^^NN##}E zIJq0y0z`jjY&%5XI43RNlkMeOjC^g5yA4mZCQg4)+(lO=aT><7Pn?e-sM?d+S6|s4 z2R?yPZflx2Cn5r{E8_h8jOXhxRuH>s1tnrHfUUMDuElp-CMuLW(=x3^?Zs*i?#242 zP?77U^j<7uMkAh0--Xf6oDL@E9#|^YP9k!bQPHUVIL~8&puP*GgGW?>fHK9(nA+99 z^#aRl;i;)ejE=*ocwAz7APytrfk79H#Sp?D#{5McC19=m2ufB2e)3VN5@ss0=5+rE z6i~zQ2DFk+@zj5wbZJc&C*P+sj^-0Dgv4fi^jyw9z@fQ7(<QpECD_ys&Hkubd5gYw zhPkDkSN8VKD_l-i1zlH0Ibt8cRns+B584%-bDvJ9>yD?8R&k|g{|pPI!C6NqFVhBn z6!81i29)1hEWcYfcO6ikrt~e@$*;Jh)x>;;!%wX4#^H~i*xI#aG1s*{^>R{G-YD1h z3F2FwCZG^lD+D0P7UDmoGtJs(&S|ID%Vr1tUgtqzU#+cYSzWL28>pFD{RDVKQsj|t zUJgw!ms3=J%`Y#EN|OogxWS*J-97Q~PP@!y>h|5>dwmWv;)m@<UoCrbPpICBhEDp< zO!2E`Y~`r_e-Y-n4=uE&yqN7es8Mk#yDo1O<@=(aIw)F5C>X9Y;^(uXJq_(F{|kGc z!7F!;Y=>7KM(*}Q26G<^GRL<tOjJ-|SIkj+_MR|@S{1_3k1tXbkEPAwq>j8~_sr3} z)E6&j`f^|)Do;0LUU<UofEH{EP_lKl>CBdi!BTX~uR9=P&SP#p?N@*nefRHW72AYX zNHzTt(rcM>uOG(DSc(+Km%WPCPiqkMAi~Yn8{DIl+I$f(rX~TD@K_5S5mc7XJkB&x zzbj?=0fl0&QkL7eTFIEP6t4o2Pj}8WVyIJ;v|#iXC(#w$_2Q)HRa%Gm3zMKisZfsf zd!f`@14Vg2<!^WltP}8mhPOkW*O^aMF$Gn;4wzcF!a`w4ST6PMBd(tGCE@<am%-*7 zw5k|%=Ci}V=8}TuYzT$|mF86AxhtVoDm=YS1OS7fz=0RKY_9ZYh9u-@b{0acyAZ`6 z!>I&5J1)fcbXH&dXEdxd=Zy~u?~R<_7Oy|-=Q~s7oA6RPqHpta^kj~tGm-Jl04c^Y zhkKL49r_DIR>&#imq5;9q_rg^_|Yt+=H@z6AO|M!g*%N3!5%praXFbhRcqfksybfa z*;rS6p?jBkGWF|^0tAJKaSsY29tR#3+bK|VqzNJDOZCi%>(H`QG|Fp*BB?)|?~W^f zD$%u%SfgqqOSSP=xJ>%Z<~nILLMKWFq+i_m44O*MYI%&cs1um+O<B99w$iFE62Gz| zrFO`Ejd5Ugu>#I}wq&}-mVhMpHry<;6kNodC_~fCNd=>pdPrK<(_0ee^G@uE^+Yk5 zL@SW;GEXEECu$9uH;ZJKWtA*S)J;N_O~=@VefPA-*+%YN9V9qkT7t*u`P}H2dzZ`u zb&2k8O8^uIe%~Gz$IkY<n%1bvDojb03i!s|JkPsiQPY0Gl33D2&6j&uX-W0B?oASe zEOApmx7!s+mdcRBq3eLemV=sb=(;eNnmp4}eR}5-C$TsK)xR`4ma~OCzb5)?3ESR! zl7A#o6t`7Sg5lId;xFPfqMY6vrthCPP~AV#^o1sMM})_%Wlf9Qh%M%JZhCe1LYGJP zC-T!g6s(Hfy@#SYtNawqsbEW@%&MpupE_$=3)+B(k{s)e9^4No`z3sOByPehwY9b; znyZf<i6w}Fz;=u-K)CbaW5kOvjMytlIqK(da)s=kPn6Yj35+HCcN6vG9Ce76DkPjm z40C6$gvC+dXcWMD9+$}EX5Ec>oZ#v66s={uqPEDYcrd11Fulsbn`w!ND+Z@&-53m9 zHGI^RqO1)e--Lfu^4wgsFWsPzI;5)s3yUwwEXhcBfCJ8A87q2UOr~vnt6jL!Bh-RR z`xP0okrQyL%qZqlI_LUd0H>hER!0e_m5I_%b%2#~_KsGLTiJsyBs9u@K^?B(Pj}pk zs&?(TeUGYl?YJ!-?Mk(_9Jd!y-fcM!;lE3jbM_z57^GmdC?Z}tC3FWAQVPK7r$6KE z7quKG&NH)7Kpasmh?U=s(Ri`qR!{zFqu>AltMD3-p_fv{W?E}@Wjp4;UmtQw6R4sf z!?uVclb&onL4o>@3>)gV$e|UP&{;E|s#83RfO8*IWQsl6G0Y-iRzfUb?cJYru4e?y z6ODg-Mys11^x%5<UX*TdlHB7SP_XYHM;map9csXYiw-p;X4Qx_DN=*lj=_d!&dC7h zsEo!g@xke;z<G0RIyhx}0}h3RihLyU<E_EzkqOR$8I8SPhsKo_o`h9pz|M=DlMG<z z1>{iJDOs_HOJatkTiLP&n%2PYM|tB$S=qU4YhDWCf`<*)5f(`yfZwfz^V@ywiUrx& zzU3+UZwJAG#5)SzQ<cHTAY~{t@k4t;B)+A38Rp!Eu_Eb0yrsHuAp}dS9jPDBg6!1$ zC{<^nGD6NGybgB$C8pIvcv)>Yp3RF>nItQQoDCTTrZNqDDu6L;kH*#o?O7~y2LDlg z#rtk}kKw$Wqe$U@$KCQKJO_i#EB-BBdc}v}lOAI4tIUN6z_PgV0#WU&%&$_*oPa(1 zn94ux5wC`XdQ;+?dUvWfpTgDAvZZy*EqaMB0+bkn<T*{7fWAZ0zevo#Kc4LoTn)|x zeR;NzYVAqN7WHvEC5ZTDiQELkeBSzxrddIv9P)tIiRHH7?BYdu6X4lx_q$#AzYQLK zJR)N}zX^8I$F=zT8}h(muraaUpplCd)IN!~PV=1|ph&ogD^peJ^t}dQ>@^s9p4$E3 ztbo52>`fo^#*c4QpRcxCh`R7jxgZ2&NE_$#^}_Qq+$84wcpoa#8<V30bd|#ApYV%f zyZG+~g$;je%hP!Y`Ox9k<L4oKNMGmsHS8K^|Fx($Z5cO#Nn6x=F`M3PcoA!v+72{5 z#ZK-;pve|VqgEAhhtC?d03%wt>mbv*VWc}PEK511Bj*8ZwPfmCOE7i^CJFU&5hcy~ zB1`*Wp+^%iPh@1$JSj!ZyAKQ9{%f$1F4O+fnR#<jmr{zZ6XqFoL4Ucc^l8^iXRbzF zp7HWCaJ?&k`Tl#+aA4Tog|yG8Y6CS+w%^kr+!?Gc(<s?e){aqf0CFz`7Smn$mV4l* zq-}<3y=43-R0*kdraL6lb_<N76PgLc&FukEi{|_uSD);zBrgM8?uxSAtRx?fDq8pB zWV~(Kr#ATST=Tmgc12OI)VSMu5$LxC`5~A@xu6l(J!az*40{NlilRaq=Jhr}SkmLd zw{h|46SHzc&PvGsL{@4kpIh)e2Dgiv-xVW&xg9MUoHC@^T2yN-hOv&ic*IV*F@HpE zvZ{!fPFCd=qBV0v=b6Kb@{Rdb`^+4XYp(xsX4O9Sbwxdl`SP|hY|L*qzwd_|9Vgz3 z+IyHwvv757IsO+I^9N@c^Bc@mKdjH0coM&&jRJE~hjF!u{DsDRY)Tl_Xe~wKXc&8Z zP}gd6V?W#iIbofRoU8=5p5)Z<&d0?(KLHIZFm>a#W~#8Pw=sPm`hXh>qn$O>$*Mxt z2bxScimXe`wqtSbH*%rXk`~kHXKu?ereA^=$*Ka$+KGQ_PC3qq4TgVTGcLEeX52o% z*yblE;~vLkRX6N##!&79lMvM<1`%cDrZcQ&8?KL}J*(jA;@TO{twlLBW{u!=Y~{%+ z+OaM1O-B4sRAD-&o7+xKRu!XQ$e4~z8-Syju<G*Wlp?I;Ihv7%v7~l6mp>fHW~%bR z2<q-}5WZ+>7_WMmON!k~JC&V-*)cn2HeRc)0vuOcGh&}??)N9Hh0a-6M-g8DW6YuJ zSPQ)ML+efJ-1b)#g4|7w=8AIuE;m=y@OP29BAdUjnJe=6`x5ROybU{Z!k@IPSLe{p zUt!;EpNFkU;ZIvOfX>&1$qvT+JNTP#H5>C&=B9q;FSt!_DJYs4lx1zl{vl)j8f$4H z*CMVG!-h5*^YerswkzJ6u+G|ulUi`2^Kd|m{GiWvWB$-E$~(1qWv0SF1CZlmLf}cD z-AQbJXjl<_;&3*JR*d=QfIBxTU?v{z_M1$&27nL<l`YT9HDLp+)O~8UgBzECGID;x z=%NZXV2v$QsI9QJFC<Z&*}rh#QDSHq(ONV%C|m{(d>5ZU8a*VgNn9g?1<(N$vOZ{& zZ*4Ru73JqlJWA7x<0Mj(s5re*vzRg8QBY6VV0ChMLnQV$RTYChWA7tj4=bt&C#?}h zP6JZ9U&?~DRys%V9q>0Ix1)={k$8pioog<S%&aKNpIMcwztr$n&J*yJh-fM%JT-TO zalPix=mu&4(24?FD5Ca18S}^H&O|4S`S@e549^^k$~d&0jXMO+VMW6dXSP^XMI7L` zR9^8T?&CTmX@vngq{itW!HC?M7~;;MD5UwSDt8W!HQ<0rR`sIK;e3LRc*bMMS%qi9 z$8U&8I&b-DI&sePej1buIgj{hiU{X!ofbT-50`}xTGVe*M+RK2s$R|w{K`Sf`sv{~ z7wP<op;@4BzM}EaEX`wACkF8hSMpc~k9#H_3A_ta?~=dzg1@SJLDCINjB2sQ7T9A# zrK^oWE3M(YX3efDAQynv7MA<q9tiLs+#?_^A9-CCTuFGG0mv{XQk^#^D+&SDi$=CH z8}IlGBsjQyqs42dP_=W$YHN&Yr%<;u^B@ox18*(Xr|6-B-a(#_`dQBYtOT@nE(S($ zfNT}s*DWH_O7R7v(vHj|XC_&kiUGk7tGFm-BfyAq>`DANd{aWzS%OE~{29_#ms`Vf zV>vK#6JvYfC!6ArG=~S?(uk>rs$#=>m&Hb8JG1dCYE<2)O^r7^J9XqO)S*uvAeU)# zy(h!N_5<RIu8Br@yHxr3_@XJ-SXX^Tzy7fY!^8nD2gO<C&?}pJuhMb&_?qaE#{6!v z6}MeivZiUDakap>F+aCEUR-D_SW&vz%6+K1DN&gxAp$CDoXkZ1TnzZG`U;1#$<4}; z3&=uD_*phK{lY`r<U4L;hfISjT$$~RhT2G&hpkkb>=Nd-74GJ`2;Ko1*~b$ZXylWU z9jf!dK&HMw{AQxy@qDH4*=`=`Ys|kPQ{R8x*-D8BsM^O|zlAaZ3V%{jo;@{UH7mh| z&gD<MT3!z0hinrk)PdvhzK6C227n{kLvm}L*^q0k)cYe(fGo3CCn9Gi&WR+Z@FwU9 zO~}^+ypRXWqyV;BSIEB}kg=~}q!CDA?ncuoG`B(3bNL;|micvi>fX*Wn;~oe2p$K# z(Dt~xb^4PimZs`Ws`^8br)^bVU0_4Y6H(=ftLK`(95=DQ{rq$JH$bs{(ekye*gE<- z4k1u14g7QAs$%Ktx1}(~yDfG=Ya`%U48{y2;0KUV8v)=e(f_nh0{Z`Cc0FDH=VSJ_ zE&UHA+(=lVghhV3`k(i255j@=(W7x2+_TiBa~VlS!=nG)&($0Bd-fkW??q0j$9%U? z*rRE_qNn+8xk^9nrfXFCK{uVP($n2^o}`^y$=1LR?1viz_5%U9BSMX;ZL}F!oft~o zk*(n&_iRr@PPdK3)QHLg{sEI%RkRMcvqkk6_JMQ;Ck*qQnToV&A85V#5b}U@)SF|A z91AJko;@gntLDkv!c&_-0W}7U8BYLhyt(|EY+5+b+G12rEKqn_9HG(%pj|YSn*_>E zP6FZ-`Wp4>e!AxIHQ9-wGK>;q<RbI~MgKQM?A}t-AoY5}CXA3A^B0VdJTNbTCbnAJ zABME!>HY3h(a=A4M4-PTWP9jujUgUit@}&6K)*d5Z);t<peh${VWADmmaDpZ;#*T^ z)JFk=u8X3VZTe0Zd_w=Iziw->rW7Scah{>vo*csc8iSHnWyl^vgu+C)A=fF?deqgc z5rPu+_4v>JchTct`Dyea<gE46qQ`kfFUu2d+6$|Mx0Ssx2jAM(@At5jtKUK5kTXfw zW8+?WA#fgvtnIc7>}zrpLvzU$npXQ`Qmzd;m4Hsw#e$2Gt}bsh1}!EMstPn_sLOAI zt`xo@J*m&HgY@+E`9?PGU=5e6&o6TI`C7bl_4#r<du@q6_u4A-+nTuoD8^9v9;%XB zoGd&jS1Px*JM+-*G%bEBDxJ2C;U?qWv)DjTIiG?TyI0QrSPaTJ7r(BLJMFvYQKdDv z=yCkmbBkVL>X9NU=G3j%P*?rD4|LUAMYHi{VW<$9ss>ok7tKMkp2_&4+eR4+s;V$I z-OrA7;<g*G8N>1|BM0MSe>zP)Lz{V$46@_!WaPlRE2T1B#guM|*IKYnz*>sCWH$qo zFn^Jat~O(AOy?e{(%CfoFw!E}eaI}Sjn`)53<x-B*v=UW(}|5Rdzjg-!zz8)5nI=X zLUP})t$K!jK90|}>Xof}Gi?bm@wO{(h82wl4~(>y8_%!I2K>POmjp4VvF}XeGn+e4 z>^iNR*l))HLi^2Z{JqNVi*H1cJ^I(Q1%Qg;RImEZln=!g-q8fx39;7nw&L^G*gfY; z{81Evr35Wp2o2oNx(Hf(65<QjA^h;|c+z5gZhoj{N>#{+-;Ms+-L@<(v{oANvyrft z_YBp9Le(ePV+ZT&JO|#99X&#>_PfgbbuIymhBq58V>SQ%EIoFx-A!NRX|1&0Z}|4$ zhL*!?zAiN4^lxjvsi{7Jc?Lz`)4{wO6sbP4otr(`zQ!9_L9+p<Kv5v};YeI`KOV00 zJ$K`UeZy#dIbj-H_L7spAMtL4t+FUJ2tKo2IWlz$egpZ;=a>z9T(_X6fv>!@4|;Xj zz*nB<Z})+(%;9f0Ep0*i;$vZ@HQPWXP+AC6sR$#p7o1a#f4iy(a{N_t$>pEJ?|wn| zgD);yOB};j<1Igd_kVaBol4r>9iF%zcwcyJF5WlQS`BumElX;ukI6vafo-C%y4=DN z$s#O~M9k>=yAUV3g4JfF?&I@Qd=|{4Mlt;*(<V`nx|!+iD(_WzZhF<TH_O0oqf@Vp zBhU2jk`F1IRdx&RrvPfpCPq&zyL<tika~oxL(yWj2B0M4oD6eGnT}+LJS^EFQ{$j% zF=;BJ2?lpo&9>`}*lDQOxMyGdg<EAdcdY)p79)IQ3CC?j#w)C{A0O|`aT<LZfvzt* z81coZX6sU}S}|g`ga6}OqB&cZM2r~M5Mpp&hM&|g$H=ttG9z{?l8Kr>AiK5Isv3;? z;b=#5bq(?F@F8L5ZWA9lFEM>KGwQ=I@JLDGGGl7Mm&|)N<gPVc<P~TgZ2+wSGw4nU zlA60h;!Lp)Xx8r3^Of&gT5?iWCm$=C?&fx|;^_c?>r&Ql#DB%{EC$_twi|<&!*u{P z+xiF|aU?EM)4t|9HRodzZ?4#V3UNd)8bmc@Ip<aXJMd3bId}3E^lHK!*1RWu9kzje z<$c$VK_OGK3g#Jl$XM1$B85;}AkVpv33;%)oh|cZM@9D*=SMsvrw9-sDFI1C=tCGe z95BbPR==+vjSG6;WEHjMcLk7V`8Eb0<XK+o@GHgt=?t9$=YkWE52G?*I8+1SMS&9# zUWd0Syto|=`LyT?2poXWG7>S)u-)mPHCxxHAvj_%PxBTDc6y}xz$6bi4uygOrFXb` zoYe>sLBA&-A_7so0#^^D?)(OQTHN%{y&Tksa!{W=LI(98reL5B1@;r+)LVFNx(}oK z6+V0h{FFhy4}efA2Y!lEEmsgfHJyMTr~tc?XzK4GXAF?@E5bkUmh5QT$a#SLI%cqS zOSU;E5(e48XF@Ddh$Og93mPm006xR|7i-xOjrMR3PwQhN_BgU^Sqh_#>nQ9>c;v=C zlkjN$*s%R@TpSVqnC~lK@B%>j`m|&m4L)ianTPB%ALWbTp^_~%U)NOk0YE`Da!8wU z(1`zwZEOZ1ib05eAVhzlWdMfU+puFRi~Cd-S&IQd?_~#lTx)GUqM2Gh{yX4RpYXE) zkM083GVZ{PPr(Zu2`LuqEqESRi<_3N#slg*5AJM*J+hx&UTlrZwoZ>YXL-e?CjZ=^ zvjCWL0=|L?Dnp8|(!11-XfGre48i(Ki1zy@feS9j-~#dI^LbxXi08lJx#?rq9y7li z27VZfj*kXEl%>AEjQns@MEIc`csVb=2`o`z+(ZA{`~_4xiX=bPYF1oQ4zNjES{~Ft z!-|Rr4$Y4CY;!2}W>I8<*g*~ODZn!bE^G>$>(^PG@R}lmhs(&M2iH)ENd+##SW6Xx zx8jTJ?$uWym#78v+rpfW#nd?!hFpz6F%tAoHzV4k|1+qcZGr>J(9?2oKm`yn*jzH~ z?JbK7qXo7c&!mkkuT7l9-L*PSV{IAyDXE}4BwVp`0}zZ{BT;Rr>1lpghKEP@awH24 z<3ojp@7)2qy`yOOBcF#W8h(RkMZ<H^Om?dDQc~@Wto+cH^0ILBh%KRPKtB=|(3Hax z4~XQhrRK45INyCZizS2!Bc%rt4^UQH@>S(*`b=4hiG}P3?Zb<T3R53n!WPa$3y>3> z_wNPKtd-{SLZvjL6Scyu8oZ~f@lZ(eOx1Y)8$y-=AUQQEI@n(;kbd}$q_$xdAihBx zADsFHxUrIAa20}tMIfOVTeYeE-;rFYKLI#M(=Ca&j$wcF{8~|}lXPfCSmxJcZxJg; zV}%y9Q%B(0<h&a62`F7?-$f4vO&$&g?*#`i8^5w1+rD3HgnYy#DaOUVZu*bcUQi!F z(i1*=`s1puLr^nOnN0`Ae$cC@G&!Y%*^T}2v_qgi&gJz-Ng{(&g#++gVBa-c)p<PN zDkFS}VVE+*y6hl)u!anjV9c$+q)9p<B=Ek0-nKMtlDNZn1y~_E3_ZSY4r^Q!?P^aG z$RKOi1QeCVr<z;rhZ?C*3R5p$L_X;kQhb6g^e3;N+XIs2JO-sDSw50K=yDzkm4TZW z^<l6SuX0m6o(J(!QIMEHejIylYM3<fZp;2)PEqt2bE0J|$cVc?B|{be2Q7%Lh3@vU zrn3WhDz>Ie1h@jo6C&VUe@kpPJPoj>v&*dIqgRo?JKhx~s|J9@;EVkPi>zlZBv4Kx z&9eLpFL_(xs~Fwr&%V0@1IBM^&V@unZ@?&aFsdz^h|5~}dwFz!U^t_TwF_t)%WP4f z=&fZ}M1P0D^%}CLu00eEMUto3L{}ze06QV;ObXBef;lYzQ$wT-zj=6Fj^BLzR^XT1 zK`zNoE#okuSCWob*mX5`Wc8_jU|j9AZ)hPlS?WwS3DSu@xq!0W`7Kc3`io`gYjG-h z0XsN&=l+z?%ABAMjY?FiKlS`MQ!zuCbS<q@eKk>_)I<T*#8GXk2{D32O%!M)f$62H z*qZ9YY*T{wi;UR)fXl9eH4u$LFIP`x4r9R@JJwxHY_imKIxJ97vIg@^vlb^t@7JO{ zr9O7LnRZB<W||S7PIS{$Yh@uMtHzU!o9@<fR1Kjg$clVVCR&X{Bc02b*gOAB6hN#( z6u`St2>l<Z0K%ys_)HxGCH^&@MFG&Bqu~P8r3o=u=yS~Zq|clkppT-<FyqBvct`{e zEc49Yy&?+PLFsOnD8g<;wDw^N*8p3KU0*aE!|fQtH<f-I?P4{Stl3J=S!$))!ZpWP z$)=_+_Y#j{5|^DJc#Pi)+?`6?g;USsxoHNF_&6Uvb1fm4ztiF&sdc|09xwYZ@JL^t zsO|(r_i{~S`VW0MMh0Hfo{7vg3P7B7jcX$3(nZCQy+9l7ON>xPO0!et2ZlmNG}33i zS~z>k1$LFTaZA=9v~}m+G4B&-MVPmBC}Khgvsf<^uUFX!V1z=#zIt(fSr`i{XC)(H znz2o`lD_th+z!CGpz-~z+lrl=|3|)l{&b<oe{KdnxN8pdIOrBUpR4$KA3XcUDM*s( zube%W^l03s`FgMYl?zFXz4BL%-5+QS_$$$l@KvhMrlWCix}#ylC@&Pgw7(EN+xpS^ zLAx<C@zq-17Ke|kt(jaEitd-;bu>K;zX2j{>itb$YdNExgx7&C*Y)V1g%z>SXt$&3 z&#L`4U7qUeB=SePD_To68GgqFin4p<cgRp%jir$AI}W}H<oqK^o0U2h&)}e})UWu! zq1K+fnmC$tZQj~SUi}25{ZC3{e>LnNq+EHWl}Ha)i9~OaVOD*o7UsVC5OYRLHrQq@ zBMa!NF2+%SY6$LYPZ(@hX*a(r5<S1RbbA!D!_~W$WkCh;(osC1wPX$T*E0mpxr3uX z^e*Jx0@5j2Md6YbKR7O2UDb5&{~`>JKUFAn+YO-522!X~>JdCc5@e+w;KOI${4w-N z>R;!OCRc9RKLou#jLL)aM=%b{IhWo{{C2b6wU#5gRD)p300_B2Fy$yK)uwVkk##`1 zd$Hi<=7vI%KSsQqb;5|T^I&*(0Tn829M@i5gf=UZ;oE=+m___ajm}53b~Kj}Sh!_r zEX&;xv8QDB{vL4Na{|)9bOCaPoXPmZd8s@?9^O=%GR{cRHoyX2tY5HT?Qg|m22_^M zV0l+og^aQ&rNZisYCDjHnAJ5ZP$YU!m@)SJ@RUe=P4(^6_m{)lqwu~?L4tnt=>0u} zdjYB&EM<$;4$hg=!f++9)U&gd?EO7weUK^4@B)oC<L=i1Fni1z>>NbuN|(cu&ogG6 z%s~&>?65=YL&h<1fLA?m`uR$pU$=KEg2n(G0jp6~AFvaTER{}F=V^IkcM{SxJ?o;^ znGMF#B0~ugNS^MfN9B82y-SxVx)SGdC0h0-SY2o#qA_ux@a>{&!M6<v^Fe8R#b?Gr z!MdN|*;N|w?|K1m<*B1bl6jx`X@4?8KHy_`mKHKCWjdAgo3ims=aPOO4hSnsQ5l*` zdR_Q-t?s|So?>+BgR@!XXjBPqVzgi|tWR?3=p=X=G^-xZ0OJsH5LlNsJJ_b6dX$4r z7g{f%p<$&vjWf1d`9-kIxJHo5zenm;n9C^D1MGe+UPSO*(0i+7$%j9R`Im5YB+P{p zEzwi#F+5(i_eb$9Q~yR=`y@rR=%j(DUY#7w^4J48GYczKG#o29?+#Y$1NQ(_S2SM+ zLBbfwBsBL?9}IgK8ePqXFxFy>44eOyWBOT_Kti7q&`h)eE1naPQ?20<w<_csjbZyJ zf8A!1Ss+nM(|xQhH03~6WXuPQ0v3_uT#N5U>?-`l$6@FUJD-}j3ImspqHT-8zapBO ztQ3pec>?_BNm2Cu8m!fE?#4?o;26(h9P5}7q}7}sM4yyn^i`mTBQfj;+cJj(EA9tn z!zr=l*>G(KuKJRu5L!0pf3ziMkBST&m2H^7JtsW425VHrZ0>@i@5l@fFst1KBe&Sx zu+Hi-vvcB1E*_28CcmHyaJc+H7t);3n`(gzPX>>xrf|4v@2yJ<k*_)*_$g-C{>#Fg zjn=-)BAt0InI21fWNc3qYp_+QOU2z6HNC*0_T6IWBx<DSY^NXK`Crt`@{?t_?mHes zRQ6AXQ@_G<Qw_#yF&_dpH^*1%j$tI$f4`?kFH=d-H{{6k%<Y8<^E_PX0K64Mk58E6 z@oa9VQ(F)%d=1m1Aw5oKj*b)}>P}VqGp2^Qh^?Sxli6ZS-KXgcu7CI*H{=>q21xiG z-~2hlY?6UY2k{3*A6{xU=S30ADYH^CLX<v^w@mpiqpXN@*znpwSW<@Um=8`}{I+r> z<gfJa;j`GkLv;Vxw>K+rtu7<R*MYGT=JWe~CtU;+kk+uuC8j#?ftfupW7f0H*~=Py zGU69@0`QW}wqtlx51O?kP7hlqQ?@w?e<7t#EL~Q8u*2=M8egT$RKJXvoZwU|agiDo z<f{HsYQbJvsS?w$CgI?};5^22gaETqsgCSQ^<?vxmW6CRdN!x*!Nz}`+8J%%R&GB> z&c;f*;&HWPb5;c8MQn-7Fz5R29jQ8vc!F&_!3<_uuSj&YR2Y~9dw~5By(h4iY_hUs zp<FF!USONOfK{|0(V&LqIai(7k#JiK&N&wY2CTn(fVj5JBIG3HSkBMsK_?|9K&XHV zi_!jtmsriXO?6ytYRwSPvf=DaPy*A4Vl~wxk3iJ4wh;BKM%4R&>nAVps^XF6ch{Ay zfW*28qx-hh&8+<GAHNf+bs0v%O~BKYm_WO(Xne^g2$|TT=qL!9vRk63GNAMkxTowY z+|NSsBqwc@Z1GhuwX)1_T!fk~Lr<=R-WqQ%xeon6T?<htggfY8EPX$^*qkx|=%3Ge z9>A8D7K9H6)AllEa_*ifNC(KWLWSP!Q0nh9vC2U5LKPHZL>7syb^t_uQOir1C)kgM zo@B7FFb@;9gIGKAvDRUDrbWqLbbT<YEhb}tCR`yr48Ofnmmb_v3?&u7Gh+FykpVpp zaInpg$+FO)5EK0~zh;G-RC`A309M-tX6nr6`6R;))fPb$jvZjckHAZB)D1w}WoUXY zM%@AM;Pt4J5oWzYzSPl08F^6SyBRhc&>2bqst>!9x&EiFKmpcu4+Ynas}<AP>4Il9 zPU`_NX5W8-vXmQkDXTY6=lC+LxyXfirhW0lb-}}kOAY~z%fZB@^CGK){@;(QBASpO zI*?OFBYtVxbEKr+nAREFNSM3zP#MtPP-$TP(Fg?YatIy(#!9mf&9bbcv1%AA;}aDj zTx^f-xnQxsL9mV@SSM<@am*7S9eO8T9iq$dMJZmCBHSFk6SefBh~eAbap96)d_E94 zY#~<D0gzIq%~3|4Qz5>dFVb&I^|xTLD4G`a48G1yn3umLDkwW)Uag*R#l@9;LfN5* zb);7^74W9IAJS2?ym?A!%7d-Y`+ul=7w{;nYmYk<MjUBmf=+3yv5xJiiAj|x#}bJe zDH$R~j0(u9RIL{dwbUZa09p+RGXdVdj;8h6qo=j4ZMACEO1;$!K_E!00#)(!idOAA zju)&7n2Py+|GnRtOfIzI>Gyok$McYRFZ<nl?X}lld)@Zh?A<)84WKX83^RJ3`~&h+ zFKW`v-|3l|AEAFZ3#e80UT@Cc#=p{?_)@0r79KbsVgeR!xGr(1^M=(T=htQQUT&<P zJlp?=X0F6|Pah=cYK{gymtZUwg#8R-=;wi^WZib}4}>+T&hu#$SCA{-<;BlsDZdU! zQ6^>XXX`%H!+pECpP~Ch6clF5kJkMk6iR2yAFF!>CK~-;=2VI3sfp@yP<_U(29MLK zA#<fSn)5=L%96FVIBVTfE2%ZQ^HDJOHEe<n1LLQL64irM%#q=aGaw$y(nzIWOFWc{ z2Z`985QpIrfs(f({}Bwj6ELyZI5D#Zb?KRDT;;=$t%AQby6IAbSw(n7j2efmP`@_Z zag9o+1ghH-8Q)T|;A`tjNp2i)S|X{n0l8O}gquBg@9hNW)VODUB*(P;1VfubJG&=X zDOjqMNWl0=p~3_n3xva@>#y&R^1e5>LPc~X+CK?HR`%1n>9XJ)J^-A5=2U+7^T>1~ zz2nbjASHn#%6(PW)2WZ^>0JBv=qU`QgzZ_NUm<NXjXZwC1dVmYtB82LrHpZ-L_8yo z&yAf6VTz~M+C)knZzRU%M=0@M?$kLQPcA;U<H^>8Wq@pqLcE_$^#&5NkWa?O!dEQ? zS>E*N2tx`5W8O1dwfV?Eg;QQ0E2Huti<d0by)7{;aD#+kcSa1|<q|5U!Q`!ys{@Ju zQS4i?jJ8AG7l|Sj|BQ!f;z1i10MrKnwFznVuK5+%?VH#A*qpB+_xajPK_hpI^1cWT zX*FBHuk@EZcBIFgbCU43^<^_hgw|=s{w#<6Ogk%zjQGV4_@O;3_lR1JXQkHntT0OF zf}$W};T!U$B+nAx^NwPmolSiv{eDI-Vq1o^P0g}ehO>bYmXcg>sec?*;))uhN~}8z zQky7J8}7Zvb?zo;?nPY`sS>{aCzqleQ8vEi;6~x^mcLpaW5Ag@N2~?}HZ!ousy<Pf z$jyDvDA3WAJPj2g2d5=7sthESSUMWy7qWEp2!!UfV_nJpa=`vh**}ZnTXLe{D=CIg z{sjZxpz;0Jp0nEu<C`~nGMJi?MdMrMDGuyoj%%$M*M7k=A7@;DQf<cd&HrRv<rZdK z_xrLxuKVaBKduAfQ@vA95WY6P$av0Ws?WtAGm`Gb^5Ljs`x_yL4o5XyzsLkB&e8VD zE|O8a5pKd&?TqXj`#v{ft>FfHTc_isyyi_cMG>pJVWF47aw?(8C<Ist2sQH`@`IuM z(rtT?k)tC;&E;<1L(Cdm*_WyeX0M$IX2npLC=crTGJAa|*Lho+Cd@$mzSSW7&f99{ zOAK(wfnPA~tamn8db9z*1$)WR82+kOV1r@n^>Q}AS;Oha=p_6<oL0ORhOE<!145y{ zA2nttLdC|1G6<bko)Sek8`@t|W*}!YOUcD72@PgxC<Kd#cr=z7s#T%4g|JR{bU3YW zt-2?(^Ms}ZesRcQbLz=bXCxDTEYOzZ9yWTX42Bz0FYRi3x|I4?C2!%Q@%m`xVJhXe zR@OZ!vHozL6*sGuXRK*z#ooMXdvzCj-{@=!*B@t?FCgR*XUknP7}{&>db~;3N>k5} zujSfbk83qO7)TS}?S;o{d^`Wl_=+5f&qx6P1I(Gw0^bjeJkm^~!XO_wSj-xc{5oZP zQ&{`odimI}85rMAXt{6E_(-Oys-Yc~vpcO-`9-?AdOBUYG86E!x_HKL`_9hx*Rd3q zu!CR~KVIE&>fJB@MDHGnt>+0L_Z#(oWo!*U<RX&(I)_W?7Dm9&^K*V>r7%KONgJQg zktK-e$koWXPCB-dkLY2UdYLb*LK`sqyXn{qdJRoU)=tNs)t$ucvX#3C-+&2^#WXu^ z!66hT5W|AYwg5o|i~_ZNje7C~Ra?29s&$@CZlm8*`=j`mdUf)tKki@B{(8Pww9JPe zsbk*lNGkn$1-u4HrVg{Xseb@tyO2dg?du?~Op$>d{qgh<d)wCt9wKA<K-PMf4-i4_ z_pTl%;L8EtEQ3u#=~&BHj>en%FXK%w6JyyU|LsLmi;DcW;q(fCH1Vd=*^Gm=bq*s$ zc&XD8benvayQ~ya(f*BLrIH_qjw>autZ5Ex3G2Iav~yW7e02g^tlOSj=JOTbs`Hpg z)XJ8m8x)^8Pc-X?oX+4n&xe|3)@?@;E<~J`IVXka%Eu2Y{X6;{({TLhT1+gLIY-xi zSm_yD!*L4nbw52;1AX}KjsK-UOrY6VZho?*5MS3n-r}3)vu*zieZZ8=`aT>IiRDS8 zpNnzmkmP*4#by2DEt;Sk*?2WA;rt<Q6NF*IEiSU*7H9Pjx43-Id}%*|R)*$cS~rNd zxJSRci?_HYA8+w(e;wmkS|rnNlo4z}$c0&#KF&JPK=>o0*3rU9`SBLF>-uz&N~!lh zTo;Q2Mjk*`@%}be!#C#zyH02X%o3t8F?(P3(0@Wmr}dv0o!-g>?n#mHCsi!qcpbZZ ztWf3$=cLFUNmlcQ-fUB}AYmvw^EQU2JNMH)M4*Xk_{V1q0w<md(vGu8o5QsUAUa1E zc}dmsyfeJJjuGaL+#+X&BJiTtmf%i~jGtVwpnOFD=NbktXEG@(2r$*9C^8cB?jayK z_gWwC)D;y3-Ikb99o@-eJDyCAbSK2dPpA?`OTta7F(?~Dk{^#*x2pfW`MxpcHdf)% zg#OSkc{CH|Yc+6mOa^x%Ajl?j0h6xTy*TE1N2?QGd!FHsSMg#FyY2az=ENI_NO!Nm zRh}5p^$ZsF<FOAJgVE;FvXYDxc^iN@i-n?6F!HM+g$0-QWt6MsH<XF1c+jbh^=>h0 z`!tkMc~s}RQ>)nW=8Vvhb0v%RcCSrcDL0T}@doMcJ^~(BD|!8yKDx3n<oidzoVeVQ zv)qeYynRgfzWtoKH`DfO&hGlv6EOV}ypc?NT5-2niwfP!uZ#Q^xSj16eR8Kx^Sh#b zeCo}eyYJ0PBS;qFYd^wxwRq#|G+qxqs}8A`jMu;F*Jo|N_HewW?RLDT4H&QA?!JeX zV9j`$d=07B8{JbXNLA)0%Sn2gIq5U*nK6#L;^e%Ev7@+fCRK6B`=na8smw`o*T6pf z2@!U)kLWW<JHc40yUJ<W>P&yxYbs&TPI=dz{xW8th<i%J<+&By3{mp5EOW}XL9{6w zk$gXH)3(foJFB;yjnk*!{DQvfR%yn-4(*PKM~@QfPxu}4okyaFO4x*CY8h!-FmJO= zH}h0;4(#Ekvew6BZ2TSa1QQnwA&tL7tTCL{hMMtrXj@@8y<Eahf-eXHBd|b96;g>w zdQV%G_}(U|L~<svNSPT8&h%-19s#lrX)>^-B3|ai%h`O=-Ds4U?#6L?0a~N1ffe3C zTgiaNg`752cM#QaS<7Vum-KYYLrR75&K;RlWeq;ccq1FZj?l%#OloemE{OH7G#68N zWiDDWsSixyX_?e4^F*{5?T+gRIwG19_D8Ny$n{)7w@fmbd2Hgc?bVI`v(&0uC%%{} zh~&PKXMCVXCT=^EYTOR8m)&EZ`+9W8wcLguYhr8YUb@ueG<CvkxYfO#q%fYAMyF|t zGrfiSD;<Qep%{!GC!c$XGp-8>IjZdyu7G2>QkCQ>EP)KYNpG@d3|aDIzofdMk_S<; zAHz?*F732Tath>1_`rHA`HV5P@8bpa_|{P3puq~+$mC?%yhk{##@6kuPi=jMAVsH? zeW9m+6eC5%9jis2c#hB$n0ildW^ua<8R1f0{MCmt^?Dh4D+Lo+R%J32lt=DZD_zR* z!q;_KaA)^7!+dQpxFeGPB?G~+SWnnlmuU_-lY@0n?pUXasD^m-Hi8~LV>bft#;kHA zmH-PgGcA-_Q}%?(ui)2}dZnC-a*rbZESp3ZI_b+@x_Gh(<Gbrm^xxGVRrK%bPc+}3 z`{RCp{-lfI{y@b+@5mZhQr8_%<D)Kbdo@aoQsX!r@x$H$Kkd?T`+UUv0G<&pe4VY& z9;7`DmEK>D5O+J5su*b_1MYGB^GcfNGZnb;$oTjmsW1NTmio}1zxsVh@?%PUdwtSK zeN&r|`Wmg&H=k=G^?gkjd8tqF9qq3huC&r5De&&97RHWz3gq7zyG4D+mk<r7FGG?s zlOvqo8(xI>5o_bM6Jv`1t_Y{=^~|IuN=<EuGQ;rGcAU>Q-a`Zhz*_OH`CD4jCOHDL z&sS$c-ZDICso4#GVYYO$|Cg%Z;uY+*nM3;}i79SsF`aO=daO844NYq3+Pd$dC8W%v zbvXwsw6438#)&C4&oO@G72`}v^XR#+;2>40N#okcMNQzzul3SIAAMBQ-H~*reU0IK zJ8fhQ@@RiPF|<M#;6oA6WvE2sv}LduaUF^<QonS{ARbdKSKhI&_3+GD8%}Fyba%;7 z^X7lEyD@nFQ422YZVb(xebnsP-Hl}z9JQ`-WJ#uRr0F}o(=s81iI?XcYwq`V^<uO! zD<+SHby`sbzqf6w^}jdK2BKcw8{Uz$n?07>&VK$Mxw*+j+8@i`oxOL-_DKzm;j|7u z)JruBR@J=q#xoYR=ix41M1j0sZ$`3PX2agxT^e&Mo|y4Yl$kd8?9f?zmyqkDMIRbz z%Obw6_bg|pWSUOk_1dyPtL;tRu_+QT;Oi>hikIBq+NR4g*O+bYoeu(<YiUo25~Rg6 zc-}H2ouuWTbO7Nz4(yrTnY~bk*pIORCN+u~Sn7Rn5;Jfeb-=|}>G~aAmwGRAEydOH zD=kN|Z$`bN4%6(r=Sjn_s`BQ{kF?J_&!?>208A<{q+BD-Y=lIF+_C+4Y>fP?Ob9#J zv!OlUPj1J@`w^2c%rHjmC~%9Znmvnqh$W+)ex=;-sh>9X@u>}5=Y9x^x^$7}Q~4#Y zct4`z4tk+@_J6N8_^Q|=eEmT5V5X(!BqHeecxb`NHtQc*nf6GHKhL0}e>egx{A@Ps zJ6*Yz9|tuP!Ui?&iJ->!Qs2#W?mAHOQ(YL;h<>!r?f9JVu(%sMU?hgF6+RLx#EQOW z#hL*j?nB3l-fr>Y8sXm08sIhs$2Wx*oZ@4rY0t1TduWe`=5WLJ42JIcI2ekKG#L8Y z31CQj(LqdxYm+V@tqU+@>7@cXRX&A?_snO7r<QfBZe}4*90_x@J6hct<p|Far<^zL z^|ykB8dQ%2iw5VSq?F<SelOm}8%-&%giw>z#gRbnaSWpceOG!?U;c)3OnY0``t(T? zRQ}j4sv#1q-YAQaB%c3xxu@6J+lND&2M893(7f59T?CF(N-j9R{X8h%&O7PCfOHI< zKEKV=$Cg9X@0o%_sDL(1R9+Qp!8|yjx8|>A#UXKsG?`4>ZGtdvqjaLM^k7W<(tE=e zTbsBr-#XbvK*e*&DkxM&m65^%0hUoBRKmADll8v(3&2d71G5kN(BIRVdPLlIx4T-0 zHjd?afqu{Mc16{*)-?rtm6-P{4-B%;T6yppQ@VxH|G$$5PXn<ZR~~$CgqbQQjPK*K z=W%W1!T;1np3e?kkA85lup52C;A_v;BNIhl;IB}FS&R71%P9R-S*U2q9}y&mE8opC zEJe=fkGdF5gZlr^OVQ?i42ljs4iq(6ZgL{mxgWz;j@5-hQNcg3>@z~l-m888faqKj zs0<U(-(FjN`a8q>iYfT#t^$1)VW1!`F=dQC{rMOD@A5R>{`%{Bb#qKUe{Ynj>$}v2 zM{uiNJQ90ZKX<~7%q+ctA8*HB@{>8qtR--H3~esvjo6nIRQ={hp}*IV$hnhQv<m*U zH57(pn8~cVxehuMx|Xam{$#!&Hs(Vf;bL4*0oP9HbnLgfNym2TBRBz<@7l|t_rMLi zta!UZ5#87e8ey~AF4SE8eD%gmYhaUC-#uT3LmT=5LL+p^y*9Ru@(9MIiR8M8<9Zcj zW-)^+a;vJc=s<B1I@;F=ch+t!n7979e;q%dWkoB67%>xJMKF|i)_<CPEVZy_@8G^h zO>D3$h<qpr+*Y)dff4xLrS9xEL^dmp`SVdOd$Y6nlOIX@tL*|`subz`_Hj8t+cZEc z?dYXrW5i_n$MA&w-(X1_2pk(L%1B|2&t={%7?^yCHyyj2PsNG<u*jgj)83lJrGgsJ zFwz^Tl3@^PC~0yurPfbm-1LMOH|iTZRM*-|{J+=lA`dApV9wD>v!g~ewVubN+3MC( z<~Ej7m#|m8v1_LiRENCV#<MOG4S(&b^eUs9hnseWA4|uM<ZCw_6r^-8NTY(Iw<XlR zMrbhUv-08PU|EzyLm${;wh2?e`eW<QeV+;*7plF#F30(Bf1m&E)lUn_|Mi%epN7^= z*EByhPt6_{#@)N)3m@7{8FqXu|BJd-9yj^qyqio_l~k26D|daXGQ3wM#;`_bez6t! zkRkFjiZ{ln1Yq9Xgd{kv<xXpv(;9Rx4mqt6=w+<aS^>iv6aZrU8||;x8Z5=e3L`gT zBxOE-+5m9VqfGlpuycZzM+~Vj6IRBeDtKqCiXUJwvpk%}MXtzxx>}oAX}sg)Fcug1 z=d&My>`T{+sD7)JJZ;_k)Ul4eI)3PYuqeUpnxC4{X;ABIda`6Aja%sTp1WpOZ+#** zC9yYiY~ni7%-F6lPX#aVn{HUJ+t;YicAoms0%`4u^ugJYRdiwB9MbqmuvI(=W8f<2 z*2upV8t%o9AlFTbxMx;K%5fiHf|O*+s_Hi^_-6ISVezs|q^f>Kxf3s&KMA-LvYVg# z-ucs+_hbv55ej$?Rm97kGs~Sxq-HNOp{#?3%j%_6AuEQr65{6b+--S1cR=;;P9>Yf zq)6_*LGg68h9qo~5vv2%n7-WkYgP<qo-{1ek;EzP4AOT7#!oF@_!+QV36k;&rM<Cg ze}+`NN{Xx~r610z5v_}K1IgAo)8uY(C_;rPB~MA+Yz@G~hkwmpVG2(82Hs<Ye5Oak z3#^Jo{*M0ZQTwNa^->`9*CWPPEZSd|Sb4_gm!^ra%XuLZ{pTbIpI(2BNU+R<y8^hs ztV}H<bk%vT`l;&G$&smDCx);3A=T;GYjTFb9zvo#erv_+-~BN!?H<%A40Ubw`udIG zj;-dCGG}!S!@Q|}N~}5D@gtrE*1~ASZyd71t~5)RRy0f0g=MScJG&I#-(178;jcRZ z@aeBP{tDD@=`s6-f{m&e8tH`0UHWlxdG%8^30@|(Vu&$l^~c~Qea9F)_&j4UWXUPP z4~*fSxoApWwcC>K4zndeiz#`5N}|t5p2=9Rr_5+E?-!rckRJ6ALn=O*muIlDq~z{B z!^@ZgBPoEb->bX<MzbcwhSOsH*=Nr<$CTdsAk~S)_atxKN<b~r&p(Pi<AlxsAKNoB zy*;w@JbzT5oZZ8<v1h!ki@cnj=V$}ti;jv2{r5Zoz7%HLB(#mS%KJx(FZ!am>mJ1y zjo1XMFN!a+`5`9ZdP(lrKR-lb{_K1nxx|Tuyb#IDjdnjMlGt($x&Bry`Q?DHq1+FB z3%-e;^y7g{9*Fz$c_4mnzu#RR2!$7ke(krWnm(t1$v-!n5?B@XJP*W^yUZBwcO+wY zuMCjL|6H3q5TDmY@fZ%apMPUNjo_QV8fZVi2rF=YAU{GB(2oj6V{4r%wzelP!yB?N zZ!F%26Aol7PF(PRG8CV;Vz-9k?s3+j-VJg2)_w1ZZwxlMhSPu2ob9u*a+g>C#Z0{q z=TU*N^M}*NQJJ_~&%LsL%kD1`rk~xvx!CS6KK;+_{w*y6bMfWA8{oyJfj0jgs$!39 z{sO6=&EMFR!|4i<Uy)rotC-k6dh|(gNW1x$PtDuSbwUCRc1XMVyOXtDOqE)F!eSzC zHz&`&{3Ct#^7kehdwE13?ABi1!kHA=4@A)mC9`4gKS589;K?4E-%O<T4|~i!dF=@1 zi4JpNo{X&FT4#50UCMQCOFo{(k7e;r4QqC6{H0kBCL+fD-}ZyBML}x>SS;EPqR<^{ z_r|$vWIVK8Ex-r=_Tw%OUp72$P~^@YqRp7RFM8jg?Y?SI<tKpH!gcO{z}eHfC}uC% zFZ;)zhDQp2o%ep+^<g9gy=UvgYa51IA5I)<eK@agefWa2jotm)DW_$OHB6E^8<7k8 zomm$i9=I;t?#~>5NhssM<K(aMOTwMd?a=GNq}=k4#p?gO!;Hn@RgA@}mTbSoHKC5B z-UMCz9(gZlHrTc9>z+Q-olsdbp#nYk33o!YW<n+Y=qa(_gW$Bp9kqRRC>a^Es{N%P zx_fejds-P8G&U1IgWJ0B4@wQXC5Nhrd8+&EB|&>SDo^ZvsNX&1l{ej#A860+{e<YD z?QYq#S!vzjt^dK!uVhrgml(6beuZ1Eu;7+5r={Fju?>IFbl8foG55UX7y9Txd?5PB ziQ}k5OEO=ZPv94npSOhae<*atTnxlddCi0}i=Rl%gz_gkXHY=7Cd=HToo#0M!`F1c zs?;h*HnDH}tG!DQEZ;A6j!x`FLc)b5?N1wf$I<y1Y<nJ#S7EyOy<f;=GG#B+gX!hY zbuSRuo=M#+37U0eg7X3Eh)rwXHjX0!|Hy05RuWEQoF>YM1D!^vIgRXAO@U;Yv!%OZ zD@AxmVeIeb%Gs9tjQBW)d8t>pn9U-UoEacTMtOR3Vq{y-p~)B976%q2{~$iv!+qjX zXSK7V`tQ!V)ay~#)XI+Y!#RM5j2iBBs@tiTsh@Nkf+2AU+d@q-C!?1+CzD!Zh5leE z5e@3jqsO6hn?9ffK4|*UWNz)lY^_*5=V7%1NW0r1T%^{Orp!gq9VZ>A6P=JVP~_0; zd`wzb-DbyhG!tAaH*;O@j_qArgVk$%kQ0FX>Na0)8|6gSks-uAne3kHlqo9EBW-j` z@)hSgq0N0%_;ud4-RoTbmj{*6@WS3ts-floNbUR}x%crp24K<4&eI%b<k<4vjzI_0 z`h@yNRZp_QPM_%^1q{d%RX9v2S*Fv5kQ<P6hVcT4nEk(dhjg0!Gj2*7LtO(4BNgGj zQ7(Ddi&2V4{Z2rj3Y7?~-todAt7S`auG>iK-XBMhbI4q(cLsamv|`eoa`w-x3ObMK z{3vIOJ0nP<BWaoL=+wG`)!?8L10~}h)fis>CyYR@DQ!n%d8%`iwY%*vkjfcUwd;NP z6QL5bZ6<X^i0n)3=iSTuDF=0BIuuqXqH6?DkwD2!`(Obmb=I~1Ig@${`bfQLyhW~| zgUq8I%~C#ekYB#%cm$s7G%Oi&D7sn%Wdho}_4_*5)4WUNeErgVM|)0L%zKP)GpT)k zV*<gfX$}a+A^2HBEg(9iO!z1zCgL~5SIBPbT0d=JqB(2);@i2rtKXJb=Vmm_%YXCW zaKOyd$8WMSJ43&+hmPM{JnWI5OQS4jt%zps`|h8KE7LrrC3EgL<0mfby-pZOag4Fz z%@}>y6O6{}ZGqX8!($R(0d<K+b~x3#b?&9Xj$UJmT>QEE`DODz<IFE7IPkKFQ|Ds6 zyfjFwCT^_L6yjO_0q3Yt#Ubwein`vKx&to_Vq-LN-u!a+vdFNy{dsaL{cz`(<^II) zK>mEraP@8L?eOOrWZEK>X}E@V?Rxxuu+&HSHQ7`PympX%sNa5Cq?u;qwtY;k-&U<0 z(`chPXF>{9ph&ZzR=><Kk}b_9^Mc+8d-*rvj_0_8$GbC>6fBBSf>&mOFx|{ym*fnK z?oWmVeyjMcP4$#q9&No8TvueK?ZwG%i7T9Es!9K)@ADrs1Pb1*7^W=`@C}HBzV1Wb z44y`L8yglc-+zVzsEF!xx||u2h5M49J6@3(?haS_FXQkVBxZrv`t=Kc*w=V6)h|8; z0ilu(!4{MYYFgXnxCX)<3S$K_gOk~HZ*XbQk`>=5%12zlFN9<EdRrWW8W80DAgJ++ z-e%=h=NUQ`!_EepqUsa3%0?U`x|fzly#|_iRD1cSTQ8=%Xx%DoOcjZf1bN*X)$8f9 z_EJSb&=e3v5&%Avk!6|#qPAjF=c~$Lt>yb)92wtQA=~lAkwpg%EqvPf(OQw)D*6ME z`i%>Jlw08|3<ZDmEc!DO>FWaQq%wt_>-}b!`ZVQdrccwL^f`<H0(v+dhe`xLvrP!~ zez6vh3HO@goZG}(Bhp;EiU;u^`Bo_8Y~1kzi3FCH>f6z6Cz94>iyq4`8i{!|zbZ9W zwRlC_iC+z;Z{t;W+?oL6hH2NWYCEwcc~0hzN6vhm{0p;Y@b{X_rz<p<d=+KfQq>r6 zH5SN}^h^S=a3`CemIslrvB8e{8GKfqq%ZVp8l9e*S~JV|?P+C6;5@{t-1Qc3n6Njl zF^co>#0jwO?sx^D2~@$^F;hG{UeRq~gj!9Sp4pu;WslAt%v-xoLUUJYBEL&rT({}k z<9Z-{j;8LqRVIl~KLN^{P|9F*J^mA>a{IM_;OFDfW%4uK?Kc{zV4Qs?(xh(h<Y6FL z%GQZ?U3xbhgsA$qmB*l`RP>pG#0hO7UlK^FBqas;l0eM-y;d~Qpxxe4R<ymt-`Zj3 zarW6HNeKA|HBdH4?&Ad`!uM-02yw4ZWRrNEO#5ee-ykj@`^T-;-)Xam*$+k*K1j)w zDC#(#?|jJ3=Xw84)H}>n^E0YptHvSW$6Dg<wdL1pgh=Flx=yV?id<8%V<V~HStq<< zX>g}%Z9VzF!26N<_in;=!18Z#W5tUw{|Urr{sRV7wrBB0#$ZwKfBW%8UnGKNk0Oh{ zZYKYr$fA|Nn|iVrp)zp~Rp)N|II8Gh2=~KUS#_W^c#(9eH-&3<sg`<Q)P>I5$nS3( z$FwsW+CW51J{M;PDVe?2-cNv_-XAeey~zVe{IZQHILKKdy=IJA6fD1MU=+Q37MGON zcPE}Ad-8kEy4+fgne<(0jGXmMahn%f`z}9anz@l?oVUYwKLadEF)#%s;v4z>2;|zB z&WQnu7|}XCz5Hz6vBOzs;2ETac6Qrrd?v<z8vbV+XJ6pTTDlZluiTf)otk*Cetq&6 zxnFV~26^Uq#%f{{lfXxAdm3ILUcNe)#@<0!?aqqxKNM<S{vj|YjEkGC@^ng850g41 ze3cXvD48=Kxj?YQW49^w(qEj>sTZTPQcEjhx>~r)Oh6~n9yJ(lxA`tw)edfzGK<_N z;MCMz<&56VGRi#JzIuprA<Wk)b1uZMm6y*QO(RvgyIEK2dUL<T`<J`RpHQL)`P-K7 zQr|-ATizWfj~n~3MJ5i~$9|th`&e5ToHNaVR*6XrjghgEhZgTH?{k_eEsbZ@U*%L9 zikLLtyZ!v-4;Kak#(VHntn90EH|Hn6p(ptZmB8Qn)}Hx5aJSrI#w6xW;@nR5sR;Xv zqSfoR?;S`CPpuo)^=4@%_$wV>W==Ar4YO47Th26*RMAhl&?4?D7@qr~J+>*HiQHqJ zQ&vOBVigivzJ(ZUHJ(`pUy?LU_@rG=ROH6*FtU>>&A}@MSGnI6dSvqPjWC^Xe;^h+ z7f(5?PiN7!>F1Hy3VuxD!Pm8e35Q^!h7$!Y=}SCViNj|W3Th?e>y&fCB(%LFGtEdd ze$v76T-?I5=XnR`?rGk^xy5-0eSeg8tI3&J<$dNK8n7RHp8<pTc_g=7!7r6jUyHeZ zv42=R3ZnG>(4#75QH48cX6Aug_(nupKd&NDo4NZIMn?n6Q$04?hDKp?5NuAG>C7v0 z=7rc=JtyeQQ-ENlGf&4_!~kWimI>HU(fGB$elxnd88tkgH*!rd%B}q1%fFHzZ>j<2 zng5|bkHoIk`$uB8@Pi1pGS<lju*?-K;q-O<CB9<^n*AGrOv3cMJcCzWk`@qCGNh9H z=A%TsD;L^(Lvl=sGOTyqd#e=Fpv?5o=O3k?r0sO<PMUN~e6T`vZqpsrd22|@#@cy# z=1LO;P(K-5xu=(R^PbOaUm!UFOb1LqY<Jt&2m$^%BF}fC-pzVn=>OBrvfZSCE8~YQ zv0XoH^%ANa*cSqj=r^F0L#!I|GVfkQ5Fk}=)jO~5Nv26U=102l*bHI5BGZe{Fl{Mv zqY&1Y9e`KrYazyE+$T67V~s%TxAou5IphHV&?dt{w08)cK-RIs+|&j0(^+?hH)p5% zoV`giw1KHFMZqXTuhR<D6Q#mR+2}avZ%(v&OBYF{-mlRbf->Rs!22uQW}VYgRh{j6 zzf@YpqA9%BMz_k6OoQmYB)sBX{<88^kSMT2c`)6nV*<OJIjn#zjA8M~>eE8*K4^kF z6vC<upTy1^{S|#76S>YHk7Yx$Sl2_=j}%TT{WRn)-nimbRVyvW0;k<wu}tvWLT{$S ze9lTfV?APVeCFf2C&iV+qrXxcWovmHc+F|4;yPN>5_0B5yLw7Zy8HqhfnBC@lRCG! zey<mD6O!zwAWENBfOY}LS4xt{SL~47@q#}>m6_mD!R9U4$hR}h#yx6})BwJFQK;JU zgOoBsgF+@maM%O^ocoR{6(FkC);Fl1BR5g$6h=tuEtX$(w1<YWy_jyyq|aV2Gct(x z^)D(DvkJMBXS%14sW~Y``^YFGIla`~uYP^_)GpF*{~Zf)-p>Q<?NL?dHbNaiQ31$n zi8{?(ha7CVA*VT7C_h7$w}(m$;%B-PqVzmUSE+OhJWJm+M=`D%yRVgR`{JP=e@}$k z_&s=|sIdarhHsBIgc8RBdCX~%b_)bTN-dC<<Ngc51PkU0ym>o{@7=~qM}f_BGlR_~ zzk-?}Id><bMSN!NCq?+_llK}K3&rx(dNl^7J8zVAV<xB`>keniOms)NUkla0wy*(P zHD|AjF3~|Bo6}pri`1Gzz)4Z9=9_rqZ1d)SVD{CdU+4C5Xr?#Y#+ANJU(E%!&Fa^n zr%doU?zB8d0J2ge`r!SBbR$S>U5PcBU?(p%+$vBZicz8S*IL?a4C(GYeF6ftS(nM; zG>3+1zA#!b2F~f~%uM*e2{@O1U?j6a;wa~}eJx6|p98QE!>GK&H2za(x}$R4K3%AJ zi5T!!uR@J+ug-p!jyWeq_tFdJq$=m6nEmd4|2v74s0S<Z^fiM8)@V20+IKYa@f*N0 z(_{jPyZw=$=*Guzv!9ut>^c&9wDl_ajy?QyKYSnRa{w^9<1vFhU_S3$EyekBh1}DH z%4*IBDTU354%%OmHCTMmJ99gPFk@!-1Q{7{=@=as%LUVBhLR4jsul}}iV-Y-SVJgD zoH(GFZpa<Q$;A$PCM%qc#&J-vcWBM;qwl}`UA;W_deJxjk)#a6X891B-&*bGID*vk z8MACKV=s}7MO2QU)UW<N{cwq?zl8cB)QZOqkgan{E<ZJKq13!kxI?SBKrSEO5)3b0 zqr1^<uR_5_=ASVJv$x4B#bkH3nF_oI-nXQy8Jiz}oqp6$3$*jOxI0n0gEo=;oyj>E z?)Vna6u&Rwy#*?*tmR<9HaC+Y2D9M~Z8OPTXYC_nW9HZ6G+9I02K<zAomswpTxxaD zDepUv!z4B|#OqMqz~PHH-PwA5Yxz$f{!V;b<Fo48{~P{<s3QC=+G+8}hJ!u9-_}+C z9Dl2LKNS8da8B$Ne>E7t3&UTGKmT0CR&x3#4Bk$ont^yL2XAr`7wnbO>sDbhN6KZA zG<$(<!rszrP`=q;Z?HgCe_l<53pL7NIk}uf15CP#>h)TAR<%yxD5(kEshyD}vpQBm z9cBu)R&jO_*Ilo$)y0l)WVjOv-~g%jnD=}iSci>sLU|4H2LLz2l4(I~-9dC%2CvoJ ztV`i4dMl7??_?4N4L@aha_}!a`y}jAoN<DVO{>g|y*{_n$RP^)-bp;75lv?2&+qUK ze@i{P?YqodBJR{9bpk%AeqA(^Oh9f^FyE(mJ&ZX#fj{ck1%3TW#5i0}{rX#9zXDEV zxcap-`HtyRlUk^(rgj#Y3i>umZ8-F*g`fs{l~mYwbB${E!Ia))L}r<9jUeE?D+x&7 zt#c<xV5#hSsWecYyLI4td+M9&*T(ONANlKTKTflKcqy6kZ8klVa!mmInX(zPe{rvs zkTh*Ga8_Z_$|P|o2FVw5tUSLz!~4@4YVmAZ<Y)=L`=^?$*hNVco^0J^-lK0>ZFWqi zv!sodc?~iYNZhB?vK0IjS=}hLDV;r`aW%qFZd+%bpPSy6)wh%{I$p<c2a-o3Y#__H zEn+MShZz@jdD|;Hv}Q(}7JTQ<NVt1mZXt&ZrE`C<s1caV3b8OawJ2{d8p!>`wz|Hb ze9?bBc;<Csqoou4!=3|n<}D}MSpZtewfb(mmizp_yAgbVkw#-B>28eaE+x6Yc)bEE z_yuOVBe0Av+^hbi4-(inW?-|l$GHKoU_BiI?M)0z9rl*(8vdee&>4}-7Up*`zQ9aq z;poid51f!Y;e&o(b`~*;e#ofEZLtf3zh2EiP$+Xrc903)Ti>;yGPU@F5t)_`lHuGz z2L9A*!PIdh66N)q=D$lHLV;~yobfXf9Kr*4D-TnT2d#e+f;DBVope!7c-?uG@ailI zvhpPxzy~OHOOv0inIO5>nM7Q{7_DQ@-cIWnppqiZtOA!c6N0ux?vDm8u;r~{{<*_* z5BeQ?Twu_hAO{p9pH#c$h{&v@Zh3MPnuUvO-BVh<(T+<EqI3R%p^85F*WCKR%Rw43 zhTi*MQwP4F4lD|eM*<-n0(dd7Ek1@uIJ%F~ogc~smuWlTz{R*z@HV~+ypuw?=im=~ zlK7lHDO$C$n`eUUh24Zk9@lr{{O>mMo$Mcs1NLtN&(AWz(>w-kZtw2KF$MuGO7v@l z&ZziPvGD`_6MraGy6o7Yhe0#z%H74m`ksY*NgLSWj%<GslXgk_`}&)xa?9&`3_|Ab z>-Kp);j^Vhx4`8#N7@hTl}e5_QJ&k7=Pv{K+c&d9<F+dSJI~+tlRiPbMI_dH{mmM} zIN4l`$Ooh%UUkbmpKNBu49q7xgAc?rZ?viS233q>O$Oe`_CUyho)}@VAi9-&srBa8 zcYNFo_NNjB;pett@EbvuwbuU16XeILfu@qwhiqS24GJgT7D^nL>IocR4cmiUlTKFw zpAvi0bESuHR&p~~uc&F(C{($NE79RuIi=9oqUvYLK7~eK8(#VuN^fsM+X_7<c9y%T zGc)PvOj$|&GmGBr+B%HRRPu?81+@-tkLzv}`gkZ5pq;>T@ULT@U^;w3zqDqS1FmCy z;5|m*h<UD$4ere`&QaCjk3seOw4ewbMJE`uwuU1Ue5mMqd4XkRwmje8?V%<ZJn!dk zGjLQZu$n_Pm@HB+et`Ca;uCWF-G@+5`@Kh_E${b0M_ln;ncH0HG)FX^9h+Gpk|F14 ziJNAv2rrwDb_6kJFXFfDw;_iWoc2SIIi%@~%P!@4AAL@F7$i$NpJ;rqEoRUc*{t4O zuWHOEeA^foE5Xz>G8!mHLNi^fVtWriQRN^KrYrwh_AY#d;Lm7?RD%`5+D80=yTKng zsg!FI4^Tqt)>!vUKcWmPhPWU6SFiXDdcz(tLs#K2bT??|d<P{3w85b;8mOZIPhWb6 zpkBdGXDX{=2OqFEqDHk{T$bAU0cD8l8m<TSj?_xQzB>ZH;^jrRY*VgO02tlpsR6F5 z>-~eF+Nvd&T`@nC8cU=It+IFI0DHyWk<Z!ak<j0SZ>X>2ryNTbFH^N_e)54peH+kF zL<Rh}q*3X+14MubW*0Iwknk$!ukdMKp$>*?pkHn!kPOU+lAmOMk6ImZe<^`Z*;63` z_|~wv)z9%l^YA!59I&1>xJY-#?r`7BqK2_6pa$!LQZ`HLgfhknEWJ~bvte4^Pk)Nz zEV4}P`m@GLV-k8X9pCV#76MKl7rc1`a$=%0$H+Ewg5AqS5Bdkk8)OVH>mRk(KR^Hb z&fj-zPQCO&;P1I>>?(*28v8TUpL^Jp19(h6kWsLHLV5U$2<T?1E!c--U$I?ip{UdX z+t=>Ds;|w<<+k&CYYi|OETB%bs-NEn^E(vvjVC9ZCOkp$*;BBfboiI0$$cHHC<h1T z#wtdM129ao8vc>@<9T)kgcPlbSB|IJ@Re8d6z-q;TPbj0;0#Gf-r$sHBDYKaql^%i zeMN{tItwN)kp`W<N9_ZRd@s&g9|E1?uFF9X7zHJ~;>$xqV3cuIWi>UqOsg^ah~I9m z0(!YEM7$6Mgh&N4ntT~Ujgn7BDqHG{H#!V8_d9=_P_BWX#5)U;bJk|pi1OfP^xdpk z#+-q&ajOaBW4-l(fU=EE-wDQupp~)YI23SG+UYW1>g+<P(phbA=p5L7fO<3#Sushi z+XMSjDDXQ9^lw-2_O-hj#dTo2C-P19P5$)tA^R6@`%K`H2N0aS|9VmM<)zJBvgR1k zQ;mPlo`l&^k`VedopNF*Hx^3(Rz5ZU;IXXI%7;J33!8d7Rj+b;55J8l6mwV(by*7w z8<XjEaQuvr+d3_rQiM2otTndHaC(j2w$vh1IW1$I=5ba^$zY>nZc3G75vx>oHkdgs zG5wbFv_kvo2r#2!ac3quccI=h<)b3Gn-R3s{QRT(1%A*S1wW4?KxrBc8?2?w$>?KE zEHvX&YRcd@RXOvpAQx`b8BeS2N60(R(>UN}k2K?M>@6c1F7MJG_4Fc}F$|g{u9jm; zeTq`4^-({bnoN4;cqITKzO*E@zBjkr;8*@c`K$>70>|ficmGA>HYSA>M95GFJMgC2 zBevYBWRHy0Pu1#F8&3bxqO~gb2}|$1#@TBThGRqCYgt08SW6|5XpdO~zj$*Vl@=)@ zo)d`)(V(;U^q@PH@z;VYtFtWYV`GF%X<0jBA|u9ANXF(}2jvY;S9R8Ts%uv%=VfkA z?2CYgX}W7z>iyvhLt6i|6PqS>3@?>~%4nJzV2KdumWcz%=8l?qz$#MTteIj=5Bd4r zQc0FP#wA`}-xW?DKt0u6K2Yk2alPO0#R5oJ^65DpH7<bJHhwVo^MXES@jKV|&U!6> z7J4_egI+_rBZy@NPM>sd5U{P&EcHU)4dJE6v!-P*1eLKDRW{!h7>bCQV|`X`M7~~( z*@AN$d2BnJxXAsrInm`)&il^BLrdC-B|477Qi_gx9y;~Q&k4-Zp(<{1n%hzBFRcKu z_MSHWl4zc0%=s(W(Rsi?)%AMMwb*`Kj6z>wr;?D(LM42IPouA1JN#P6M${oAIwS09 zgnLgXxtr4!zA6L*3Mlq`iaVo)H)9y-G2nKr&2s!nXM?jI7K<=ChLFUuPJD_pqs6@# zfro7b?({KE(^zLZGdifr8ZQfXgazu<nVCz2AhXiFRNJ{Lhy_h`X<kdJGsYX9Mlu}u z!mq+l8=QuiX7=3JEOMl9Dl3Ng(<<sugVX4|GQvv3=}XK7M%<;KfWVh=?!}OFuzv0Q z**e6vo3r}D%coEX9-=@NOFEI5_dx|w5$puNIGD|faWXHOo!8jYdUmR}9D3sus>=P5 zI<aHT?&SH%a?1kN$Wfk8=cz6lK|ENkaAq;5D(~P?1Q0R=TqAc?KPQs8IFxOpq3SIL z3gI1=vAsM{lDo>RM<b)GLXm!4tC(A1l{fszE#=&`;`U*noQ(r3g^9vSMTRXEyXB)Z zDLjymnhmxlI$79;w;{V~fAWl(?3R}y1#|gRVpbr$<2NE4!@~Nu`4zL&Jaqk!1PXV2 z1s!?FJtN_cC->#Vo8x&eJh%ZDqmJK0-S_d=1OBI&zmgcVH+voSP9HDv7?Ql<!*AbQ zT<)0DMd^JLH#?bcSZ@RN5HRL5`g!$E(V&VkC|?aTdU4K35%C7tqRe~`Ix|Aq5MPEL zJBehV0nHx?zp$lVr%cAL>^#Ae`g%bgpIDH`Pxa+-#r~>+dH?;7-iMjtCDlFk8^{OH z9FA|uOgp{=MlAAy?P@w0j_gf@LQuwP1J6MIfI4Q#NhC%MGdE0r=t(q%Sxns$TJ8W) zO)AEDjFYY2<ZO5dSW3dpn*uX}+3R_`+x5y!fNT#%2y@$`qo^>Dmw+hm-6xRPC4Uv- z*%S{{={^2}7;@v~MxIbC4$elpQ-#_;whx@g4Zi!Yp+n~;lHuzN30;#pcFD@g<odm+ zvOXJ5w`d$LintdArL|5jzg>%yGr7z;f@3H+pV%2rw6Ak<xqETcxwwLf43|KAOAJ%4 zZO*0qx|w8%8I|GmonX#6&K+sh;_Y3fiT`jfCXTmtq1#v{)+)~%qiPtBH+m<?9gva3 zocht3>Kzg8sH1yrufW!-xX3+V=0oe84#|(Lt)|hkq4IpJk~ye5`;PdSl4r3VS?^i( zMv=8QuR)Vnc|dY2tV`-DV}lq1z$8`W0Ze?+pgVih?&__eUfTVZc|Wz%nHqGa;$W|E zMi7gd{cj#K&%}?)v;V6y>JN~4^Grs8ne4x(F!45%L*|Rb=NTV&c=oH59jY6*7t)zz z&jCNGX~tADxy7oqDu>(=xnEm;Q0&i^FZ-P5MPFMlHS{Ge32}{+b*QDRe$&D_S7;7j zB}Y~DCX7UkSkTNv8u=<#X_ouzR;M=``cEFLPK~Qs9K?jg`Vi}m%N<A9ad*5$7elEj z?#0tsCwixsQ`1#9Xu91^E|z%Q>0u@HeV#BBYuQm`kVr;W^+vnso~Sk@IkCFYQ8q!Z zH0I!;5Y=`ZYoP$nP6isEKVGAa9tM8@=zvtisDr{C0=VC~Ga9e4uGSJ(6oraHPa<BH zRkKhFb+rY7ae9T@N;Z$ZYg$9jj9{QUE6UY4x4&*A(>u+1CWKyX)jYY`WOVR;_pHWZ z+G57S=0rg%dztrGkBG&3R#%UhTsR<PCU+P;gZ0fJ;sb+R`^kqkCy#Kam(*>q>m_>W zbqX=5jkS0G@uBeYZy?VBruQFzW;kR9EURxWUlihtwpT-m<MrybS2e7OBOe3eUIYy7 zle7Q=&PKKB!(#i;zD6B-LX{~xBb?TGrm074)8Vx8!}xd1-(?bb(teht#I0`A6nDBL zDe3+#4DB>CsBDPiD{_(JMUy<Kl-)W{q~qIqJe_pi5+`Oci>1->d9(kywhv6J;r>7+ zPU5$I3k9cyuRM(pmxSuqg_lm^YCN&`;j545YIf)4Be12ngi}YUYASWMrCxkXRRlIV zO&nG-)0tl8OpiG1=VMF<3hGFZG(F8RaIV<I1oZ=UTUeW>6(z?8Mb`AIHOwT%&i<Iv z@PX;m0I``RuJ?52fW%DsSq(aaHRTd0OT%}sHa)FgN6!z~Qq$z0kGJlCEj|Xj4%w7? z9}!!43#=Qp#UFaLYL4!voksQvCBhENZ1!5@fD22ELdJL>F<H%#nmgh&l{-xpPE#2@ zcbY<WNUelyL}e4*6U-hA;GGOj>O~~ZTH)=KC>5X%tv+O%21Lm30sR`)DThdenC5J& z;htfcR&$D+lFg>j21?gcdP(T=&tST1UZ}J<EzB*Q0?;hz`JJNQkBrui&D35+?X}?* zKW6!29HxANs>u%wq^24hN=?dUO3ngAqMpMYzcu}+bf-tFH}JKUyBR2vgs4nlQhp}? z4WTZHgs+snN#A4pYYs0{P#OlGnZ0fTg2eJuH2)Hz8aj3$9n%cE@k}3*E6ptFi|sC> z`$04Bz(MG7O+ZU5PJV#dhu7<Z!7Zr^OWsmm^;626Q-TiL7f*>er<6Nn`9B4cZE-KD za4rcsb<QP0=aO>gk}~I#h_fzx6rWqZCrlvwpPO%7d|h<eEM%NX!*pyO!Nnyd$4fm6 zcPP!#u$8eZH7J&`Xk7MxB-Y7K_HZh;_P&<#`j#?$6XE+egU6ZK3os9{PBV}#`hZ`F z#rm}@jOonqFv|j)=n2<=?@u>9;Y=NAH;OwN#b#CKv~uUPGUqg-yHmJ!*tA&7{>(Ll zkLlo}B|DiG<%e$uQQ0vNtC1I|1{Sps^Prlf8#A?*O@TsH`&jp6v2{LafwdcO&<4b1 z#NL?>l7Zm_Wd-&QK&yF?=MgR;Z}5sxO;efAl&YDV*>f~lMkg?1`ZyRY$_zdlEM&ir z5v%WI_G)ei*?;jg=XV^)8cV(^@Ajv)QXDbguG$^jwP@RTT%d1s=kovLneL?#x)^a! zE{B>p{h_4&ZzTljxA*FAIK6@PAyZ{{sL+U1KVz0{=RJn4lH~ESmQtCKokbmG#IOGu zMQtrl3Fu55#>b6Vkr87M>FQS}KG{#EbFed?h@IKlR_zV7@cZ4Y-w~elA+evmk+3m3 zyR}Q5+IF^$DE@(tL^46;;A3NKKxU3g5&3)71k}mso)w|`>o`U8J#nw7G@YscFuc4* zC2D_J{~Ci>5l&Tdo4NuQbJGWja?wTo>IGjS!aOx@MDkr56}UK{dYH^5#**m6N!vn! z=B0Pr&v1R%K+H&{>>-fMVURY|C=WvRKGEF>?;9SQX(zwMb*c9qUDy2GTzBX?h+lP} zfAX2%YGhmHVStgufiN9O9OFkdUw;cgfosqiamb)G)4l3eJxMUS1$%J7=7I$fgaQ^F z1hw19qD*b6IptX82l*Qnf6y22bgF58<2MauRR{)?QVwxY5_VtYq$&rcLGQq;iZa87 zpo`B6usk^3!FEAm0d)d?C>=oM;q%UV3E+yH(DJrxU<&^H2IKp9;5Wj{IKjna5WRCY zJ=zd~AoCb2@77E{rQ}_-m)Tu@*r#kUlDRBXvD925*`RnC{+6xe30M8Y*7Xb&J~zp* ztU_eo^qcsOfOWbNBFVdqy~gr(3c{10c9Ou;A(O~9I?HaMR`}~gd&Gt_<oxhW)_wY* z%@2F`2H|1M#oz%gkO?vdeUNB>Yef4<dAQfB^}@a{4TOkYy<GC&68#o)P8Vxp;w(#k z3(jzkuv(ma9v?XY_a&xVgEm?{$^`7q{R-d>zTS8qJg&|C1hsijDmRHrx>lOqVIy8) zD%EP5mwHEX&5>@U-l4isq7rNG=lt&{g}0q^4gHAR3*jNf2x$GDLBJ7^FlO6vM5m3P z99b}i<Ol?F?nEUXNU8pQ>;d$v0Z~avH7XWMa~wuhneBa!m8t(fJOBIU-!tpY{1=@1 za8L4){kY$_+A*AJEVm0Lxg42|3t^9tyqlci|4k=8ZqD$L_n9F(^REoqX?DoI#kI*9 zK3^BVXIjW#2=>Fq#I_*hvWb%zq$k8}vIh;sV19gW=oa28zHZ0Y;O;&h{=@8e+s=(W z$}R5d+k9^ElQbLt-I!!KZF%<NV{*;C29x`~1Sb95;&ogbOjhZ_&(d>-cf~qk=EJYq z{jMgjs73Jp7Qtmcf>UPCEBe7hzhj2l-MX4TQ<$sGFd7?$a+Im<9%_TQ8zF4G$Y6V7 z_^Kn|BB@>YUTe5;PjGfxv^Qc8mB)|;v{sprkl6@9OAKw_S5i?wT@p1+Fb51eJK0^7 z+WHq<M97fLRxE#p8QUF))_-G|$yStGodBCWk5aW1!kZc0XA6={t#bmxPn&_F<s+Yk zYj&*ACR2G(T+NXC6m6SkpJE5CwsZ%V3JSr^mPKI7Dz4ec$v|l2;oSF4uT-og_uV~Y zgHa?B?_t6Lku-*Fg%Vat>L~RN*YyNDzYgTO=mf%k`#;x+GG6|#qOnvw!9-ZrzhVF9 z>4*sbFYN#94lWn2{4Jn&YX7I*KbHHsIIHYivTH4WLVXLVZ!%~h5le1>UMJGSu?||; z(hdZd?mUMrI_3Rep922005Dm-@~40oFCz8V$W|Cg&Mk_8q|v^Urz`6=6XbmD>ddtL zOuV+%)Q@zE?}f$zJt!bU;*#-%=kDD@0y699rFR(uTKy-8<}eXWz<ZVJ+;^d*Kk1@4 z;g{qQ*`*I(E&SegA^6?R{@Tx`*?!R{TsUjJ=y!dOy|5E2#*QYjm7v&O3wAsoJEp&b zWQgJw)cP;At$3PuO_yMb027l>yr~)2(Fi!sG!r6H;!d6;oA-C%A8bG)AbqvQktD2= z;B)6%{S|uwI>{G5G$V!wOD+U_?cVRcX9B3Tsii}9O1`VC{!p(9W6NZG<2$xgUTY!T zgq>A^K*x5n;}UpHtX;7BEu&~HxfXHSRNbuo*;Hga$l7&5G|Cj4C`zp;tB%${)I9Ez z4_Y{>xdsuE5RjA~^=+QBp}Y%ZDA1*)`pp_<bJvHZYH!uzk<@{KqNOAg4}_bxQ9`1> zB};V!wa$V4AK`a_rco<qY7a|oCU}DJtpVjUmgc4U)%P_(&|M16^a4kA0l%h!*3p8S zLQ@>G4Tc-DNQKi%T+h2H4qXSc-sew1%^Jf)JphP2!FcapZE=!4T`a9nA0QZ@ik2I_ zpFXa^KKy)>KRW`_B)gaMN^X3GJ;=PHaJ8}gnxJrp&OK#9Qi%c2)6hWq`czZx#`6r{ z7$jfYW4n*ndN%$t0xyR;c5UI%vi0ZaP->TrSiv9X%fDaQOxIWE#j=mY1P&g0Qm_P+ z{GQ3$&h$N87cZDD4(#7I9~0WPeYJ1iT7Ocp{!loUeCXq%q+qF!{wcFYSD5DO3R4`j z?*@~=o`~}o4ehJ)S%SA-8UDI+cYYk^cJpn9xxMlN%xw~M22b1Pf5A?MixOQFGdD0c z1GXXR30W0jKVJnHVP+r-z}b>RWv2_BogD*Qd4Bk*M}^lL&jqgt{Xi~XolOD$anAG2 z=Z)+a=wRf~|MxHr`#PH~%O4lhNB_)V`deGTw4XQf2V5IWU#|;;X)CXrz)kP3zZT9e zILF|u!aw)eXkIW)qj^R0Xh#H-j$~r-HJ=@{)qB??r@oq>$o{Y5v5PlEd#$FC-m_`M z@`0%MK*vHqtG<cfo*2VrX3A}`<-|9lrhF<bj#Z*>PRoB&+@!wuK5f3eiEn8-#&<)0 zKWew%|Ndbi;;aGR!wbuNzQ%a~8w+q$KUH)hz@YwKW$FqK=<i;Ph!OA${he*f{p~CN z>imIUlP=YKX?vZg_ruNSxA8d~f2<*T#z%g!7`&}2e5EKjc>qZ@hGthL_>i~k+5K}~ z2D8?Sf5Cme-H-do?X0*MLlCPR!%RoEks8|RFHwa%lHjlVBysM3xr(X-$w}G&6k}Lv z{DzNn*_%CI4{ThCf0%6Izb&vo?6!$Lth{v%T=(10Lhu*qgMjx7u5<Sk(??;yjMSeg zAO_!Nek-Tq^=vqqT$(I@LEM@hn-_n=Mh=1Xvu&ON+t^!L28Dm{i$FWZFdE5XH$5ow zshow}lMIe07@a{#oSi41nq;N3t!wAO6jv|=mh5q&=680m$Muw;+%eBMPj~emT-Q^# zexKFJV`cD8PI0biaf}zp>?Ij2f~nRWe3jd1@sv8HBx<~<`3JuJj(ihfT*)Q)!Ql{9 z770CBr}PrKAT0ww;l~=|-sT6?ku%PsBWV+gC7gg7<CaKjaUav?l1R*QwPUvRc>m;) zWvWfKN86T?Kj?wq%F+jQW7{GH1UGgcj(<Lh`Pf#3ryM-fR*Ml}y7t+WxIVSBWXX3f z54HE;;44|Q+-;rWPHk~^9r6?_dP3Xeubc+~;9=|uFICv98y^Syja0&~F|TVlq_{E! z+T*KOGUE}<?_@jwA+wWBd8T8k0TGb)rSJAJf%rHO64L1Xhju6<M;#-d#oD^3_IWLF zun|?Ux_^(Fx~=QI+dAH}n-QV{a>RuS_4#w=&d-CE_>|AZTaZ54R39g{Z4L*5P?|V3 zfCzNsQsXK3;N)8;-qLzVCUqzA8uqZv?6;|!*60n5T9x);(z$>sTfi31p6`os`T4*G z_!p7I%ydvVSYf<Pf`!6#h?+@IB>xqC|HJ(E{<oqNGRSI6UZ1?!{`#Fl^vy91IrKLM z`nyF>M1QyH;?CG@{22N>{a2#D-_0DF{<LT{_R$~bO7fjM!$gzHFb;ZyUgd)f%+xvE z@hC6BNTvNTW7zRzcU*RJ9veQ?I$;3mI)+NkMn$Mt5JSbc=*Pke{R-ChHR{uD>Gys^ zzjN{JDQ3{yXJ<G)1By!RDhXeG3Ky4`wevSz5?+2HzuwQ=$f3E~>Duvo#+(TX)kRaQ zdJiGmRi4_~9UM#&4XpnhD`NfX@Y4Mu-0-q(0Ki6Cbs4M>h4nd`W-%Y9VTiOX5K?@N zDha0*&aI*bsCZ?d+i8uOIMz^2Tzp9$wfGb~t-yc=uBd=0<twV~Z<NO|K&w2!{>Cg# z))HZ<6Hs>6P&L^LSKCb>u_fnRJ{-4fbitWwlZecyh*!>c#X@Uxnh~K=6L0wH-@(CJ z1%7U+q1Rn?9`)31*k^U(Ov0hbi}wwnA9guSv_`WhgSAdV0P)MUhO%dfu-Pa1R=^^m zdZ#HT8HKsH@BNSiF>@LT05QEbsYRWOb<TNfOLl*MVifs16y$|(4Tdde<V5TL_@zj5 z+zd$b%%HnSTH841sp{v6UT9uWr<k)q@(SlEjMS)Y-f*S{pH@g&{h{c`d{g~AN8U6q z9F_`~cWh4{<apKVk*fxo6O10IlHoXi42sZ$r76n)rs}&rs?;!X6L_BOl$h}EH3jjI z@l1uiA5o}U6%a?c)_XUWhe97&NW#msC}*4b6Mk$`oEn?m^xkGsuv)hgQuVe(%@<Dv zyzEp;4)R}_{BLY)E-`kAtM3(_%BNfX#@VucO}W;~#G?Kj(dRp3iujH%MfA2bu$Sb4 z_(TrD?U0j*5GY2FT_}(llp2SG6xSTS%H&6YWa1S=yE?3%9!HZXuiu!+gddw4uU?JU zirgayyH}1>KShVkCmR|9ch*{WTBGmnPuynZfb6Msdp1LvzC@UMV3l%a<Sizw1<p~- z#Z`gXoEdM5ns#lVb-3efKFMnO`|^$1pRX*?+MOWp5t02Jy{*SPJ-IURjq25bbsd{q zTiEqy!}E|DBr#~{gR$fZUd^k+&DeLWy7YHi^qrm68{Jb{-09@HTRaN3+Kp5Ycz)C~ zR)|QgiQ4mUDVE#f?Rdq0om=I@!}JW=P>f*q_b(4ezUjXo`tiFpo{eWf_X9ZXFMp}2 zHO}X>QV@J@OP4CdJyLjFmQ$q_Q2hBNdy$n%V5awIcpr%w(O_k4C3oJbroD})(_WMO z=9TUhq53PN@Kw0eBjNPR1m`enwUjM!uZ*qYhwMcM5)$zUml{jn<`;a!{9&5QmABNK z^g+H2ohv~QlR~8wa7l2K`7)e#`tAso`i+XEO#|u><E4#DCR+@+2ICBg7^HSG#12_+ zY)40xs+oM)RE#?lHg%vLClxlu6pK}FGdTy!876&RgFHe%BgE!J2yzk2FQ;n4TV4i& z@KwjijLT<w7ruHU&n_PcFwuJ4Q(?%Cw{+MBO_e*zG6Cu&BY|xW;ZqaQ29i9L2du(G zNi9Co59QIUCaK9@`Dp;=>@*OQHW5;Wj;*ZbY&*;8$)BtI7}VVRxc+z_MrH9&{@&uV z;~sb^{m%zFmCWlG=ycMd!cJu#;e!L7!W~zL8C$tu(HucHImJZ~Rsc}7mZ)v4K9z^; zG|2utT@TQ$Q6ds-VT{g-Pl`G$DX2f$@rC;QcpDgw>9Jv!`FNZ3nN&rey(Py;5NV3% z2i(2Z&_@0nrXnLHHe6;gq+@Zkz-|erpEX^tB=pDWF|ja6@kV~{>*h9Qq(x_OoV<zS zB15~0;mS8`V!5<)x56&S3b(0biH|@$(8mEiQX6D5^dq<;;j5eILpbvv`l}xJ-Sj~g zpA$kX*a(#CfO*9T(IvHff@m8u1@-@wP)ph;vv0WL7T%b!zbHc1G>{-p3Gz1eE%*R1 z(EwnMrGu=qf1x?a7yV_nj_ZUc#eEU`6rg|Fi&i{hB<VNiMxDkL;o4cP*-q6Z*?qa~ z^rxi2noLzieN`V-j$bR}0VTJ7pNod7n#Ebnae7Pk5iTvg5&l*lUe+b({Mk-D<@%oA zh<>xT^0KpTbKR3XiRy`o+LN)We3;_*G~J?H`OMc$Ii@_Xu28z+N=p_d%CCnwzrxHi z^9o^!_E+2X$xp7Gx{)HTCI%>W7*3x7%+=Fk6$i+w8|TKZb9~PjWoJ=?))DHf2rre0 zo_&mXtbY*(H5$}DrWyUX{$%&oAgna{cwauKU)`>i;Mh~N5-9a`{py8Z@T0cn5yIc? z2dP+9+6426QoM&SYB64Yams|X1Z(0Uxb}bm<&;SeW%{G!7>>3S`x!F8xm~Fx*oj54 zQlIX}AlLY@$M-;Q{%#kQ!bCN4q#tpdOXb(QA>)mc9a$-mk|SRiGpRzBiFi-krXEk6 z;@ig(#v~=vQjEIkTF`s*v#LLFghX}35F?oM$tl~4t!94v<cIy6zaW}?6}~;rJJYoF z!k7BmD%OlaZt-bC20{aZg+`z#K2VIeUz?<*y2hx2*Ne@goM&9Ajv`H!bH1&mmv#Dy z!hSUQCz+b`zkya}d5{0htp64+`E>9<K!@^CDpbAMovXaya>(IS3a4e8W<O3c>^4Pf zpnP#|1;i4>zT!pR4VbSyk?G2^RkP?&`zBCJ^r+IVS*`=mkugvzo(Tor!c7(bD|k_P z`GVH3Ye;}P>cDXc7iQ8?gPCqD(*$YSqh<#Akd2<!6eMb}0H;YjXrB*Ue~2i|{i+jr zziQFdrm>Bzv1%<ygIHPZeEAm>O%i0$L_1GJXFv4iqr83%N$a?I&I4h5P^r<^@7<;m z=Fm0sYW^$vjbFJx7aO&V7M}Y}Uw(sz{_%_68$Z#AUVO5V(52{1%*QXjFN`aGF>t6t z6py!Yiaq{Q=RNnN3iq@~{l-O?snl+F9GTTwEZfut|94N0lJ<{nl5niLCsS~-B@0J5 z9{HCO$SRwp2N8GOu@9e+<8FRH87CBpYGWTUi*Mm1it4qwnVR1l;RHsmBUt;r#24zf zIq!wz9zl1zh+w=PSnccz-(R-(in3A#GJ46stFpjrfwu@;RXilBCY1y{ts>gnvfCI* z)-OU`Pm1Q-tln6^Zqc$#*%#`cS<umTY43>4*Vw0Q`0cL5CB#XzT~RV3`A+q&Op~G* z6?|V}b6GNHg0wHSArkY3|G{F%IVoa75@vT+zlpxnv@R=+O!Yaz7%(>4RG;4UL@m;X zit4p&I$gE}9&fa^JXqQ7;`&Bz8YsW_{#c{kHi_h_Bg@bMeU{s84O8Ngzuym7U<Tds zakOoCgE)dumVN#!yC3RqQ{Ncsqern+>o{fKuL`Hr8t>tCy@!TabdN9LPdFXr87*)g z#bHMv3db9w;q<$rCSx}|TPsF$l!!$!b8o@@CK;U(Q|Omjy7@Irx!#|zbk@oYW8Y8> zow3OWyBqC7-Dp2<G|M&L?zXNkd|HUGulreqx@|iD?)(7+Mv+kKKOsS3#~a<l%VKx^ zBRugfA6EmAsW`$xmRcW=1E=UjXKnUfM$O`)diSg6w^l=+-C5G@8oC&2Urp8C;JG{d z9g1{5sxi!p%?wQsZ~aj8Fs})}0b{3?OE%p9+<p81=<4m=KD;sU8PJd)4{yf7mS$WQ z5)sSn;(SvS>}{Etd&bHoL+txnJe*jYJM!>potefWU;@9XQ2Y36VXzauFB(|aOaxYC z^EWP1s7^d<%0BC%r&4H7TC|K+b`6Qd!W~+JylXcN2Pax~IIUdKDqj05LCECLGX6NN z<Jw<(hp6CvHn#85Q)js8pZ7GwJaj_%qVWR@<>(m_49k$9_1j<IRR3c}Gf4it-=0*? z`#UIcgVPYJ+wOhix#1<bYm_hkD(~%$0@j#U?0HtH*JruYL*9g2G+0l3(I~^I%f|I4 z8#!dEt!I8Xy%Gr8dKM)nwe@^8oW6>?el2x3Z3HsXw3UwL$8Fk}KQzgIQS`))!{h40 zV~zBO5@K7K=HX7$v+z&T;)UUK5AVWPD;;!O&w1fA>1QP0hp&E^3y!S%Y+Fwa_sP)& zdI_UV&r%Vue11#{@%vo1xLj_m?`8LkH6U1jBDs;FM@UwXf6!$g1?=8KYK6NuZ49SP z5LIf4zh%`m0Kpo)j+vzhUQW~caQa|qorAU3?d4p!Mnh3cn~<RQ((5c5+cGVOq+Z%q z{Vb;E!?|##KMVh*EtAIEYemR#r$4)np50%XUKLKy17i0SK>sbZlsFr5NBQ%&;he-V z4WCaO)o^5@rlB@*c*Ajt&ovwc-KTr#N@_J|qJqTX?yt{fnGQd;ZF_K0DDkBG>p9%= z+6_LiLS;A*gA<+pH+98t1J3#-2fNdM%S&f{W-@66#P`>g90krZkq{{hTK{fgYrCwp zgcI9bRmEby#Z9hfzD*mxmmB%cipbuSPj61XN!d)(3*N6!9R_Ad_bjlk_#?Zv!t^P1 z#mij%j%V0YGWT8ix8B}|bi|k0KM?G06w+X)WAsCqsyPgfcioL+?Tc~xAsta>LW47D zn$!KxPr4_}Gp{Bjs1yqOqkGE6?g?{s<4l<4Hof3XIM+RCX7|#xit(>|>CN_nt6R8I zN#%E#u-I*SxqIo2{v&7U3a;Fyt<KUbb#c;66<T_$t^qyOxSio%dXH||`(V?9ESGfK zebO8Y$wv3WHF<LHZ0q?(;+VFc#o><2psMz#+b9WbX6JGze7E(SAMQAZ8|GVTas!#C z^@4TZ+y=4}{c_xM^c?FNg&MO*>Zx6Cn|>Q$Foz`;tP32);AY>p-#;$4@|e~qe?Dck zy?J)$<66Gzw)@l2>}qy4JuJYp+xgO;0m~$$57^CaCNd;$XLh!V>YVl2->bP)M`3q& zQ(<@a$^I!`ZB(u)^W9nY9J~?Bi4z#|i(~vRmiS+s%NL42O(4Q0V6x~0-rYBeC5<`J ztp5}J^}jjXp%D-xckj@C&I{e+xz7t5PJEm@+?O~~Ti;2oZzPs9coeg+b~kKQ`1mJm zHE{?{)jCum6>CVjKGks4L5csJE&lp@J5m{=Z_PkbG#P}e2njooWkzCFRQ%%TELo)1 z*^?!(@EWO`b5sZH2fzEjP5)1@@{hk4JQ(h{6_9OSj_^|Lr^i|<3#05YW*ayAGKHa! zmv-ZF7EJeFq}>>%M$OjuS{0q3Bl+Nv6N1Ug-Q+honp!*6^Ktv~X}r>?+_JD^XUE9y ztF!KvCPSq=!^C4y+-lgpr;WoY+uAHw?8Pl)<#2iq;dHBBwm2G{Z|A7jto0mi1s!H6 z$;j&Y_m`S{D#>FD>dfynFKsGmlQ-d^vx@U3{DXPLX6&E&@(}K!2O+p#jz=}~akpBD z$wS0=?k?qxsl^=PM3~bar4ZQ8B-gTaFWnzRFH3F|y_7Wg^djkHv?OK@1BLG}X4}_= z66aw~foG=|X$<4q%O6h5&o@4f#Jn21ae7vibNtIHa&<?xuO{6^2M^hrpA5CVTAKV8 z{L1MG-@ke&Ec@%1-@+$N3&HK{SPf3r_0*`+*suU9F$nnt+MebwN6^pljTuw55q@;| z>N()J{Us$N2&ZRp4Sg77A&-hCHku_B+n{$7d`TK$he9$eQZMAnw-o(K4ei!aboB%F z+iUY%+QS{y`ZgZP_VmfW{oAXdz3ebb+3`1)m=MDC7(K$Cvmt63sWZASF^EzeS<p5} zW;Xg3^WYY&MSRZy<y}o#c}??jtZmn~e|q;}RZ~B&U2U8`!X9{7>wO)~SzFS{&rw<b zTsZz5?is(r>{Zk@z<&n!3BrYxV6kj_V*|;3QGUxXY=rV&nTLNfoK0tnrVM5u<k}xl z-(KLy6G>pM^7gx4#CA<R#D;82)e36SE=psXR3)qfmpw<IgUJf2ep`E2Ov5KeNErem zB;D#O@B5G75t1@k$ZwvH_hn7+eteypi_sid6aD^76vbxTI@$Zue=}pPWIG7#G89d$ zUQK{T>S3P48#}UkPnaU4DEpCL$APM2MwFu3JB|(WHQr$}s8~`MmAsv;!r8fSgs~!U zRlTu)KHWmN_vvC(;j8|kCT2_ttgY@=><CqZvI?0b4%r~SwZGw8c&aPN9fUPcxq}E_ zJ{0~%4-Di><IofmtidP-aPL%(65xo=I$5-vQwjsF-l+^c;1y!<aO{`l^FEk?z>O=T zy)YXjVGRI8NNqyuowX)OM*h2<$Ow>DvaNr$h7NtT)!ErUlwnB4HT#+-&C0{*c}emZ z_^X+*`FTQK8iv)TrkOFLn8m`fO0r}57Ur5gMDu8b7rUD%tHtcr%anS}x?XLs8+834 z(I$S-mG|9iAd0T=7a)rE+t8n}NgnN%x4qiNwvU#6>(YU{S(o<5+T*t0!nbw_GndKF zcDLWkBmL`l*4@oKgo0kfCiD(^Xfb^b6DUulkKMmy`|!4K`fO3wuP4?66YOaLcbU}d z>p4CUeGXy6SPlHmGUKmNTZu#KRt=6YcGY6I!=XXP6eGz>O3((J`_y4)y^ZA^ON?$& zLam`=dC#DhqFCOM?lp5^PK0>Z)jyAFBZw!A1%;nYtsYyyE;%YIIaqXpq+;S<G9<-l zq(t&fXMJo5k$28;@`JNCqE7%oSK}ksz}TG<i27%7YaW8z)KIv+!^iEz2MT40L(rkh z-Bc9_%*$q7>-V|vn7ve^6N&YbD~&0j34r_@ADc?uX|Ph7{i<ll(qZNrq1;WysD;T8 zRGodbP_HrXnA)=6gamg(BVPcdtX&%l?WBad?0cel5L6V;A=^U2+7-OFIz<!n#+vom z=JFYLTU)q8-YZKSWuQ<5a?$^hKyJavlqV4P4iQM6K2mEju(ok;o`yTNg1`R6a>!t^ zBMr~l)Tp5ysdPZ5x2XxifRAPkeSEBQpO6sl*r_V}NWivl*LkdzSh5OqV1f8oB=FV& zACUwQK?Vi1XgGX$eUdOx0&e!3P=?`adqNkBcTX2*0;lb4HbT|p-GIhmqam_&a=s1| zE8_FN-JGuj|IqnN>#q`-oP4x4?e#mK=}u}TwTz6PtZLC3#oMlRda4PYs)dn|S1ra; zURB*yzhTk%>P;ARS7>;(-rdeGioG+V%AGMr=cFd~#qN6<=ll?aJMjFa%!CV=9wq?H zVbN}CF-Oj@%3>)uvY~43rp94&Id5sP3fmRWWKFB^R&D?h3I*x`B2$xYsOjsfiE9IW zYZ>?<K~ju-%(c$cT9d%YjEAb_KnK+tR7A0yZWZ3yey#2d+k4^^H)OTN-+3*te#h@s zoC>Q{md`lXNfP1hNU)|wa<?fR{Q7EdSUlz@oRc`k;YvTrv|QkLG^&%8Fwh7pRU$(T zjeE~M!E|BerGgm0`o`PzB=u5Ib!SHdgca$2B?eHCS6m4{B!6$NwWlU2&xFq0;Ry%c zlY+3!X^s`iH|D$~GS4ap=)73FIXKB_CLbuJLrT@lH_b6lpZED$pTCAvi^~^{b4Mdv zC#&75mG$UEQ_B_%Lz!xOb%zOELZ#BN(xZ)T>C@rVDoW-4)L#)Ee0V`5e|SOOFkj$r z{o{4QSBh{uk7D_iXk~5dJ3xuZ0Hn>G%J3U&e+=S5L${Wnc$MzplE$3dkAL>B|87_H zk5T<5czjgh0LNNCGTZb-dUYWzR8%nFz#J_gj99P4B<C!o;wSU?M4&ahvArhK(z+w} z=M4L}>|cH)csPBFKvnD3*6X)xEZK=O)$LGnu62@ymp-DhR>=IGE_HNK*q($!9=&Z| znan6QhbpshRM9X1nu%xCiAC^{LhDA4$DARJsF$`9*QyimVuz8;w%ib5ZhdhFZ~L;^ zu;Y!WX-Xu2YTylbC`DK9hei+Ac_KdCsWW)2VKDwbb7;~^BgeT@W7<PEjn`^+7oV7Y zHO1|XqdntXU>fxK@85GYatlBIk?}c|-FkiaG#PXMH9j9v;PLM9$u@i+pV#O#dznav z#^<e8jT{o6GubaN1U?0CKYW%@hi{W9!e^-rt}{5zU4W1W4mr3FpLa={)IOzRe0nqc z@Hx=G_Jb9|YP8nZff9RdA09{?2iGA$)<zP<qudcklZ>QB1~m0tf0h|On>y^ne$QlQ z(YaXds|TEk^+lIcR)2<lq5ph5*tCC3O}_ns{(sJkN$hQ%JfjB^_gE3^Gnsg^*lZ>~ z34)^AWlR&R{gs1<V&FuNhIotlrM0F-2iC0+mc)KwUp8+a;kdE={I~BE;tl%FD<b;T zJ8ikJx%misLjbO*<42mbiZfv6u#qE9jksr4)NfiazIuaEuTwpdMPFtut!AC5gt<Ov z=UMpv$nX_9pvd@to!6+NGO&qY*;6Cc&*5dBq=?t>{iE{%uUdx`>}n2+IU=<#fS8o~ z?(9x2X(mEJ$|6RdDP+T8(NWm#q)2XMCu7@O?d1hu*$Xx5QPw23n)IDXO~eY1#DQ7X z$Y&fiS~d9e^%d{TW$O70)$|<KmwK;W(|U!!PMoT!<NCK3G*mxbkH`DH)Q6Epr(?rB zLj9&}McpdPFCu{z)Amw8YW=q4+os!ZD@@KgHCX)~9p9I3de<{cHTbs+d<%TFXXSPj zV0mN&CeV7bV4wj4jCq`U9DXvu9_q_M=1^bS8YeRF+z$1nOnoV=0lh6_XfT|XO&=&Y z`Y(AwYGi32@fA~^INLSM#BO`$`atE@s0ao9*V3yD!GnFTz<b!Pz^+2wa=-f<FOH%9 z-1lW4_D_DX_F?)5PPDg2a-4GGS3!Cv`F8PmCcusi0Yr@zD(4`E(_<8tXjBDKjU9me z4{2fJ!^0&??(z9bUs=|7zEadqOM$00QBR~nNj~#tV~iU5d?lz!hMizLlG|PXaLT(I z8~6@a4~nOLqV~rivEWX(2+n)ejbiMd22yYcS?QtChz<SSN3**dCzh0~Ym8&HBAZzv zA}Li(1?`WioTKUOdM0|($gxk@J0m4bJ$qQeR%-WeD$<_VD=^yt8ETq(+9r=(@|$xO z|0iEII*Vo&NX7QcZt&>F!Yvucww!nPV?fqJ+pT!i-r4?GG00i=ph`@drB_4J6%)75 z{#IpxzkaEJ{}jM8IJSu*UP=)SntUU@4g<CqzbT!CRktcnevcfk=K9v_CR5?ML-U;7 ztSpW8?8T9tK01rfT{OuBubkNL(8V{%0A^P@AK$xOU;dibuBE78@Z-2SQevUy_YVtf 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%0A3vOS3OJ%amSQ=9{28Kz1VCR9tuP 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%0DchvPHS+D+b#HubQP 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 z	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∓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 K(l{}i;eP>q-}@2( literal 0 HcmV?d00001 diff --git a/lgsm/lib/ubuntu12.04/i386/libm.so.6 b/lgsm/lib/ubuntu12.04/i386/libm.so.6 new file mode 100644 index 0000000000000000000000000000000000000000..23c73207a8dbddfdb51aa5ca09deadcfead6b79e GIT binary patch literal 173576 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 Lg06)>(xUr6O`|c! literal 0 HcmV?d00001 diff --git a/lgsm/lib/ubuntu12.04/i386/libstdc++.so.6 b/lgsm/lib/ubuntu12.04/i386/libstdc++.so.6 new file mode 100644 index 0000000000000000000000000000000000000000..614f0ec234e609c6339e82577e744701e8f60595 GIT binary patch literal 905712 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%0Dp( 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%0Aa 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 literal 0 HcmV?d00001 From e5a31b0320f083b4edfd61446166625a14778058 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 12 Mar 2016 23:52:42 +0000 Subject: [PATCH 271/643] Updated functions url location --- JustCause2/jc2server | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament99/ut99server | 2 +- functions/core_dl.sh | 2 +- functions/core_functions.sh | 2 +- lgsm/functions/core_dl.sh | 2 +- lgsm/functions/core_functions.sh | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index ccf5e3c31..2f037c799 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -81,7 +81,7 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- # Fetches core_dl for file downloads fn_fetch_core_dl(){ -github_file_url_dir="functions" +github_file_url_dir="lgsm/functions" github_file_url_name="${functionfile}" filedir="${functionsdir}" filename="${github_file_url_name}" diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 5888477b3..0cd432645 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -75,7 +75,7 @@ githubbranch="master" # Fetches core_dl for file downloads fn_fetch_core_dl(){ -github_file_url_dir="functions" +github_file_url_dir="lgsm/functions" github_file_url_name="${functionfile}" filedir="${functionsdir}" filename="${github_file_url_name}" diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index edd64523e..c6bc5ef42 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -75,7 +75,7 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- # Fetches core_dl for file downloads fn_fetch_core_dl(){ -github_file_url_dir="functions" +github_file_url_dir="lgsm/functions" github_file_url_name="${functionfile}" filedir="${functionsdir}" filename="${github_file_url_name}" diff --git a/functions/core_dl.sh b/functions/core_dl.sh index 579fb2788..d6d841637 100644 --- a/functions/core_dl.sh +++ b/functions/core_dl.sh @@ -188,7 +188,7 @@ fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" " # Fetches functions fn_fetch_function(){ -github_file_url_dir="functions" # github dir containing the file +github_file_url_dir="lgsm/functions" # github dir containing the file github_file_url_name="${functionfile}" # name of the github file githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" fileurl="${githuburl}" diff --git a/functions/core_functions.sh b/functions/core_functions.sh index ccea1f07d..8f59a57fb 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -26,7 +26,7 @@ if [ -z "${lgsmdir}" ]; then fi fn_fetch_core_dl(){ -github_file_url_dir="functions" +github_file_url_dir="lgsm/functions" github_file_url_name="${functionfile}" filedir="${functionsdir}" filename="${github_file_url_name}" diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 579fb2788..d6d841637 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -188,7 +188,7 @@ fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" " # Fetches functions fn_fetch_function(){ -github_file_url_dir="functions" # github dir containing the file +github_file_url_dir="lgsm/functions" # github dir containing the file github_file_url_name="${functionfile}" # name of the github file githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" fileurl="${githuburl}" diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index ccea1f07d..8f59a57fb 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -26,7 +26,7 @@ if [ -z "${lgsmdir}" ]; then fi fn_fetch_core_dl(){ -github_file_url_dir="functions" +github_file_url_dir="lgsm/functions" github_file_url_name="${functionfile}" filedir="${functionsdir}" filename="${github_file_url_name}" From 09ce09e1027f011b03f7b6bb0ce8c05b65a9d0f8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 13 Mar 2016 00:02:25 +0000 Subject: [PATCH 272/643] Added glibcfix to run on start --- lgsm/functions/fix.sh | 1 + lgsm/functions/fix_glibc.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index e4723e649..f10f44f6c 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -42,6 +42,7 @@ if [ "${function_selfname}" != "command_install.sh" ]; then elif [ "${gamename}" == "ARMA 3" ]; then fix_arma3.sh fi + fix_glibc.sh fi # Fixes that are run on install only. diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 87b36db72..cd753882b 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -9,7 +9,7 @@ info_glibc.sh if [ $(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1) != $glibc_required ]; then echo "Version $(ldd --version | sed -n '1s/.* //p') is lower than $glibc_required" if [ ${glibcfix} == "yes" ]; then - export LD_LIBRARY_PATH=:${filesdir}:${filesdir}/bin:{$LD_LIBRARY_PATH} + export LD_LIBRARY_PATH=:${lgsmdir}/lib/ubuntu12.04/i386 else echo "no glibc fix available you need to upgrade bro!!" fi From fb38ef5ad0e6dc4d3ecd925eb75e6ba3611926c3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 13 Mar 2016 00:19:04 +0000 Subject: [PATCH 273/643] fixed line endings --- lgsm/functions/fix_glibc.sh | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index cd753882b..3a90f23db 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -1,18 +1,19 @@ -#!/bin/bash -# LGSM fix_glibc.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="020116" - -info_glibc.sh - -if [ $(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1) != $glibc_required ]; then - echo "Version $(ldd --version | sed -n '1s/.* //p') is lower than $glibc_required" - if [ ${glibcfix} == "yes" ]; then - export LD_LIBRARY_PATH=:${lgsmdir}/lib/ubuntu12.04/i386 - else - echo "no glibc fix available you need to upgrade bro!!" - fi -else - echo "GLIBC is OK no fix required" +#!/bin/bash +# LGSM fix_glibc.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="020116" + +info_glibc.sh + +if [ $(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1) != ${glibc_required} ]; then + echo "Version $(ldd --version | sed -n '1s/.* //p') is lower than $glibc_required" + if [ "${glibcfix}" == "yes" ]; then + echo "applied glibc fix" + export LD_LIBRARY_PATH=:${lgsmdir}/lib/ubuntu12.04/i386 + else + echo "no glibc fix available you need to upgrade bro!!" + fi +else + echo "GLIBC is OK no fix required" fi \ No newline at end of file From 5a13e5afbc4ec390853f66232fa35640adddf7f7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 13 Mar 2016 00:31:10 +0000 Subject: [PATCH 274/643] fixes --- lgsm/functions/fix_glibc.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 3a90f23db..b1ea50d4b 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -6,11 +6,12 @@ lgsm_version="020116" info_glibc.sh -if [ $(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1) != ${glibc_required} ]; then +if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != "${glibc_required}" ]; then echo "Version $(ldd --version | sed -n '1s/.* //p') is lower than $glibc_required" if [ "${glibcfix}" == "yes" ]; then echo "applied glibc fix" - export LD_LIBRARY_PATH=:${lgsmdir}/lib/ubuntu12.04/i386 + echo "export LD_LIBRARY_PATH=:"${lgsmdir}/lib/ubuntu12.04/i386"" + export LD_LIBRARY_PATH=:"${lgsmdir}/lib/ubuntu12.04/i386" else echo "no glibc fix available you need to upgrade bro!!" fi From 85ea727dc6434882f788780c4eee8746a2626185 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 13 Mar 2016 00:57:47 +0000 Subject: [PATCH 275/643] Removed functions dir --- DoubleActionBoogaloo/dabserver | 2 +- functions/check.sh | 67 -- functions/check_config.sh | 17 - functions/check_deps.sh | 218 ------- functions/check_ip.sh | 33 - functions/check_logs.sh | 16 - functions/check_root.sh | 13 - functions/check_steamcmd.sh | 73 --- functions/check_system_dir.sh | 13 - functions/check_tmux.sh | 20 - functions/command_backup.sh | 64 -- functions/command_console.sh | 48 -- functions/command_debug.sh | 59 -- functions/command_details.sh | 682 -------------------- functions/command_dev_debug.sh | 17 - functions/command_email_test.sh | 22 - functions/command_install.sh | 38 -- functions/command_monitor.sh | 110 ---- functions/command_start.sh | 182 ------ functions/command_stop.sh | 217 ------- functions/command_ts3_server_pass.sh | 62 -- functions/command_update_functions.sh | 37 -- functions/command_validate.sh | 47 -- functions/core_dl.sh | 202 ------ functions/core_functions.sh | 454 -------------- functions/core_getopt.sh | 441 ------------- functions/core_messages.sh | 204 ------ functions/email.sh | 68 -- functions/fix.sh | 75 --- functions/fix_arma3.sh | 13 - functions/fix_csgo.sh | 43 -- functions/fix_dst.sh | 16 - functions/fix_glibc.sh | 144 ----- functions/fix_ro.sh | 27 - functions/fix_steamcmd.sh | 41 -- functions/fix_ut2k4.sh | 27 - functions/fix_ut99.sh | 25 - functions/fn_update_functions | 22 - functions/gsquery.py | 125 ---- functions/info_config.sh | 868 -------------------------- functions/info_glibc.sh | 71 --- functions/install_complete.sh | 21 - functions/install_config.sh | 349 ----------- functions/install_gslt.sh | 37 -- functions/install_header.sh | 16 - functions/install_logs.sh | 43 -- functions/install_retry.sh | 16 - functions/install_server_dir.sh | 32 - functions/install_server_files.sh | 110 ---- functions/install_steamcmd.sh | 15 - functions/install_ts3.sh | 82 --- functions/install_ts3db.sh | 71 --- functions/install_ut2k4_key.sh | 28 - functions/logs.sh | 102 --- functions/monitor_gsquery.sh | 93 --- functions/update_check.sh | 326 ---------- functions/update_dl.sh | 83 --- lgsm/functions/command_details.sh | 2 +- lgsm/functions/monitor_gsquery.sh | 2 +- 59 files changed, 3 insertions(+), 6348 deletions(-) delete mode 100644 functions/check.sh delete mode 100644 functions/check_config.sh delete mode 100644 functions/check_deps.sh delete mode 100644 functions/check_ip.sh delete mode 100644 functions/check_logs.sh delete mode 100644 functions/check_root.sh delete mode 100644 functions/check_steamcmd.sh delete mode 100644 functions/check_system_dir.sh delete mode 100644 functions/check_tmux.sh delete mode 100644 functions/command_backup.sh delete mode 100644 functions/command_console.sh delete mode 100644 functions/command_debug.sh delete mode 100644 functions/command_details.sh delete mode 100644 functions/command_dev_debug.sh delete mode 100644 functions/command_email_test.sh delete mode 100644 functions/command_install.sh delete mode 100644 functions/command_monitor.sh delete mode 100644 functions/command_start.sh delete mode 100644 functions/command_stop.sh delete mode 100644 functions/command_ts3_server_pass.sh delete mode 100644 functions/command_update_functions.sh delete mode 100644 functions/command_validate.sh delete mode 100644 functions/core_dl.sh delete mode 100644 functions/core_functions.sh delete mode 100644 functions/core_getopt.sh delete mode 100644 functions/core_messages.sh delete mode 100644 functions/email.sh delete mode 100644 functions/fix.sh delete mode 100644 functions/fix_arma3.sh delete mode 100644 functions/fix_csgo.sh delete mode 100644 functions/fix_dst.sh delete mode 100644 functions/fix_glibc.sh delete mode 100644 functions/fix_ro.sh delete mode 100644 functions/fix_steamcmd.sh delete mode 100644 functions/fix_ut2k4.sh delete mode 100644 functions/fix_ut99.sh delete mode 100644 functions/fn_update_functions delete mode 100644 functions/gsquery.py delete mode 100644 functions/info_config.sh delete mode 100644 functions/info_glibc.sh delete mode 100644 functions/install_complete.sh delete mode 100644 functions/install_config.sh delete mode 100644 functions/install_gslt.sh delete mode 100644 functions/install_header.sh delete mode 100644 functions/install_logs.sh delete mode 100644 functions/install_retry.sh delete mode 100644 functions/install_server_dir.sh delete mode 100644 functions/install_server_files.sh delete mode 100644 functions/install_steamcmd.sh delete mode 100644 functions/install_ts3.sh delete mode 100644 functions/install_ts3db.sh delete mode 100644 functions/install_ut2k4_key.sh delete mode 100644 functions/logs.sh delete mode 100644 functions/monitor_gsquery.sh delete mode 100644 functions/update_check.sh delete mode 100644 functions/update_dl.sh diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 00b8c70f6..1887682e9 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -49,7 +49,7 @@ githubbranch="master" appid="317800" # Server Details -servicename="da-server" +servicename="dab-server" gamename="Double Action: Boogaloo" engine="source" diff --git a/functions/check.sh b/functions/check.sh deleted file mode 100644 index 69f62f0ad..000000000 --- a/functions/check.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -# LGSM fn_check function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="060316" - -# Description: Overall function for managing checks. -# Runs checks that will either halt on or fix an issue. - -# Every command that requires checks just references check.sh -# check.sh selects which checks to run by using arrays - -check_root.sh - -if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname}" != "command_update_functions.sh" ]; then - check_system_dir.sh -fi - -local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh update_check.sh command_validate.sh command_update_functions.sh command_email_test.sh ) -for allowed_command in "${allowed_commands_array[@]}" -do - if [ "${allowed_command}" == "${function_selfname}" ]; then - check_logs.sh - fi -done - -local allowed_commands_array=( command_debug.sh command_start.sh command_stop.sh ) -for allowed_command in "${allowed_commands_array[@]}" -do - if [ "${allowed_command}" == "${function_selfname}" ]; then - check_deps.sh - fi -done - -local allowed_commands_array=( command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh ) -for allowed_command in "${allowed_commands_array[@]}" -do - if [ "${allowed_command}" == "${function_selfname}" ]; then - check_ip.sh - fi -done - -local allowed_commands_array=( update_check.sh command_debug.sh command_start.sh command_validate.sh ) -for allowed_command in "${allowed_commands_array[@]}" -do - if [ "${allowed_command}" == "${function_selfname}" ]; then - if [ -n "${appid}" ]; then - check_steamcmd.sh - fi - fi -done - -local allowed_commands_array=( command_console.sh command_start.sh ) -for allowed_command in "${allowed_commands_array[@]}" -do - if [ "${allowed_command}" == "${function_selfname}" ]; then - check_tmux.sh - fi -done - -local allowed_commands_array=( command_console.sh command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh ) -for allowed_command in "${allowed_commands_array[@]}" -do - if [ "${allowed_command}" == "${function_selfname}" ]; then - check_config.sh - fi -done \ No newline at end of file diff --git a/functions/check_config.sh b/functions/check_config.sh deleted file mode 100644 index c329cca95..000000000 --- a/functions/check_config.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# LGSM check_config.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="060116" - -# Description: If server config missing warn user. - -if [ ! -e "${servercfgfullpath}" ]; then - if [ "${gamename}" != "Hurtworld" ]; then - fn_print_warn_nl "Config file missing!" - echo "${servercfgfullpath}" - fn_scriptlog "Configuration file missing!" - fn_scriptlog "${servercfgfullpath}" - sleep 2 - fi -fi \ No newline at end of file diff --git a/functions/check_deps.sh b/functions/check_deps.sh deleted file mode 100644 index df955189c..000000000 --- a/functions/check_deps.sh +++ /dev/null @@ -1,218 +0,0 @@ -#!/bin/bash -# LGSM check_deps.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="060316" - -# Description: Checks that the requires dependencies are installed for LGSM. - - -fn_deps_detector(){ - # Checks if dependency is missing - if [ -n "$(command -v dpkg-query)" ]; then - dpkg-query -W -f='${Status}' ${deptocheck} 2>/dev/null| grep -q -P '^install ok installed$' - depstatus=$? - elif [ -n "$(command -v yum)" ]; then - yum -q list installed ${deptocheck} > /dev/null 2>&1 - depstatus=$? - fi - if [ "${depstatus}" == "0" ]; then - missingdep=0 - if [ "${function_selfname}" == "command_install.sh" ]; then - echo -e "\e[0;32m${deptocheck}\e[0m" - sleep 0.5 - fi - else - # if missing dependency is found - missingdep=1 - if [ "${function_selfname}" == "command_install.sh" ]; then - echo -e "\e[0;31m${deptocheck}\e[0m" - sleep 0.5 - fi - fi - - # Missing dependencies are added to array_deps_missing - if [ "${missingdep}" == "1" ]; then - array_deps_missing+=("${deptocheck}") - fi -} - -fn_deps_email(){ - # Adds postfix to required dependencies if email notification is enabled - if [ "${emailnotification}" == "on" ]; then - if [ -f /usr/bin/mailx ]; then - if [ -d /etc/exim4 ]; then - array_deps_required+=( exim4 ) - elif [ -d /etc/sendmail ]; then - array_deps_required+=( sendmail ) - elif [ -n "$(command -v dpkg-query)" ]; then - array_deps_required+=( mailutils postfix ) - elif [ -n "$(command -v yum)" ]; then - array_deps_required+=( mailx postfix ) - fi - else - if [ -n "$(command -v dpkg-query)" ]; then - array_deps_required+=( mailutils postfix ) - elif [ -n "$(command -v yum)" ]; then - array_deps_required+=( mailx postfix ) - fi - fi - fi -} - -fn_found_missing_deps(){ - if [ "${#array_deps_missing[@]}" != "0" ]; then - fn_print_dots "Checking dependencies" - sleep 2 - fn_print_warn "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" - fn_scriptlog "Checking dependencies: missing: \e[0;31m${array_deps_missing[@]}\e[0m" - sleep 1 - echo -e "" - sudo -n true > /dev/null 2>&1 - if [ $? -eq 0 ]; then - fn_print_info_nl "Attempting to install missing dependencies automatically" - echo -en ".\r" - sleep 1 - echo -en "..\r" - sleep 1 - echo -en "...\r" - sleep 1 - echo -en " \r" - if [ -n "$(command -v dpkg-query)" ]; then - echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" - elif [ -n "$(command -v yum)" ]; then - echo "yum install ${array_deps_missing[@]}" - fi - else - echo "" - fn_print_infomation_nl "$(whoami) does not have sudo access. manually install dependencies" - fn_scriptlog "$(whoami) does not have sudo access. manually install dependencies" - echo "" - if [ -n "$(command -v dpkg-query)" ]; then - echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" - elif [ -n "$(command -v yum)" ]; then - echo "yum install ${array_deps_missing[@]}" - fi - echo "" - fi - if [ "${function_selfname}" == "command_install.sh" ]; then - sleep 5 - fi - fi -} - -fn_check_loop(){ - # Loop though required depenencies - for deptocheck in "${array_deps_required[@]}" - do - fn_deps_detector - done - - # user to be informaed of any missing dependecies - fn_found_missing_deps -} - -if [ "${function_selfname}" == "command_install.sh" ]; then - echo "" - echo "Checking Dependecies" - echo "=================================" -fi - - -# Check will only run if using apt-get or yum -if [ -n "$(command -v dpkg-query)" ]; then - # Generate array of missing deps - array_deps_missing=() - - # LGSM requirement for curl - array_deps_required=( curl ca-certificates ) - - # All servers except ts3 require tmux - if [ "${executable}" != "./ts3server_startscript.sh" ]; then - array_deps_required+=( tmux ) - fi - - # All servers except ts3 & mumble require libstdc++6, lib32gcc1 - if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then - if [ "${arch}" == "x86_64" ]; then - array_deps_required+=( lib32gcc1 libstdc++6:i386 ) - else - array_deps_required+=( libstdc++6:i386 ) - fi - fi - - # Game Specific requirements - - # Spark - if [ "${engine}" == "spark" ]; then - array_deps_required+=( speex:i386 libtbb2 ) - # 7 Days to Die - elif [ "${gamename}" == "7 Days To Die" ]; then - array_deps_required+=( telnet expect ) - # No More Room in Hell - elif [ "${gamename}" == "No More Room in Hell" ]; then - array_deps_required+=( lib32tinfo5 ) - # Brainbread 2 and Don't Starve Together - elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then - array_deps_required+=( libcurl4-gnutls-dev:i386 ) - elif [ "${engine}" == "projectzomboid" ]; then - array_deps_required+=( openjdk-7-jre ) - # Unreal engine - elif [ "${executable}" == "./ucc-bin" ]; then - #UT2K4 - if [ -f "${executabledir}/ut2004-bin" ]; then - array_deps_required+=( libsdl1.2debian libstdc++5:i386 bzip2 ) - #UT99 - else - array_deps_required+=( libsdl1.2debian bzip2 ) - fi - fi - fn_deps_email - fn_check_loop - -elif [ -n "$(command -v yum)" ]; then - # Generate array of missing deps - array_deps_missing=() - - # LGSM requirement for curl - array_deps_required=( curl ) - - # All servers except ts3 require tmux - if [ "${executable}" != "./ts3server_startscript.sh" ]; then - array_deps_required+=( tmux ) - fi - - # All servers excelts ts3 & mumble require glibc.i686 libstdc++.i686 - if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then - array_deps_required+=( glibc.i686 libstdc++.i686 ) - fi - - # Game Specific requirements - - # Spark - if [ "${engine}" == "spark" ]; then - array_deps_required+=( speex.i686 tbb.i686 ) - # 7 Days to Die - elif [ "${gamename}" == "7 Days To Die" ]; then - array_deps_required+=( telnet expect ) - # No More Room in Hell - elif [ "${gamename}" == "No More Room in Hell" ]; then - array_deps_required+=( ncurses-libs.i686 ) - # Brainbread 2 and Don't Starve Together - elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then - array_deps_required+=( libcurl.i686 ) - elif [ "${engine}" == "projectzomboid" ]; then - array_deps_required+=( java-1.7.0-openjdk ) - # Unreal engine - elif [ "${executable}" == "./ucc-bin" ]; then - #UT2K4 - if [ -f "${executabledir}/ut2004-bin" ]; then - array_deps_required+=( compat-libstdc++-33.i686 SDL.i686 bzip2 ) - #UT99 - else - array_deps_required+=( SDL.i686 bzip2 ) - fi - fi - fn_deps_email - fn_check_loop -fi \ No newline at end of file diff --git a/functions/check_ip.sh b/functions/check_ip.sh deleted file mode 100644 index 2a5ae5794..000000000 --- a/functions/check_ip.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# LGSM check_ip.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Automatically identifies the server interface IP. -# If multiple interfaces are detected the user will need to manualy set using ip="0.0.0.0". - -if [ "${gamename}" != "Teamspeak 3" ]; then - if [ ! -f "/bin/ip" ]; then - ipcommand="/sbin/ip" - else - ipcommand="ip" - fi - getip=$(${ipcommand} -o -4 addr|awk '{print $4}'|grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}'|grep -v 127.0.0) - getipwc=$(${ipcommand} -o -4 addr|awk '{print $4}'|grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}'|grep -vc 127.0.0) - - if [ "${ip}" == "0.0.0.0" ]||[ "${ip}" == "" ]; then - if [ "${getipwc}" -ge "2" ]; then - fn_print_warn "Multiple active network interfaces found.\n\n" - echo -en "Manually specify the IP you want to use within the ${selfname} script.\n" - echo -en "Set ip=\"0.0.0.0\" to one of the following:\n" - echo -en "${getip}\n" - echo -en "" - echo -en "http://gameservermanagers.com/network-interfaces\n" - echo -en "" - exit 1 - else - ip=${getip} - fi - fi -fi diff --git a/functions/check_logs.sh b/functions/check_logs.sh deleted file mode 100644 index 9b4f41324..000000000 --- a/functions/check_logs.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# LGSM check_logs.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Checks that log files exist on server start - -# Create dir's for the script and console logs -if [ ! -d "${scriptlogdir}" ]; then - fn_print_dots "Checking for log files" - sleep 1 - fn_print_info_nl "Checking for log files: Creating log files" - checklogs=1 - install_logs.sh -fi diff --git a/functions/check_root.sh b/functions/check_root.sh deleted file mode 100644 index 01c89b629..000000000 --- a/functions/check_root.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# LGSM check_root.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="060316" - -if [ $(whoami) = "root" ]; then - fn_print_fail_nl "Do NOT run this script as root!" - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "${selfname} attempted to run as root." - fi - exit 1 -fi diff --git a/functions/check_steamcmd.sh b/functions/check_steamcmd.sh deleted file mode 100644 index 81e0f31c4..000000000 --- a/functions/check_steamcmd.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash -# LGSM check_steamcmd.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="160316" - -# Description: Checks SteamCMD is installed and correct. - - -fn_install_steamcmd(){ - if [ ! -d "${steamcmddir}" ]; then - mkdir -v "${steamcmddir}" - fi - fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" - fn_dl_extract "${lgsmdir}/tmp" "steamcmd_linux.tar.gz" "${steamcmddir}" - chmod +x "${steamcmddir}/steamcmd.sh" -} - - -fn_check_steamcmd_user(){ - # Checks steamuser is setup. - if [ "${steamuser}" == "username" ]; then - fn_print_fail_nl "Steam login not set. Update steamuser." - echo " * Change steamuser=\"username\" to a valid steam login." - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login." - exit 1 - fi - fi - # Anonymous user is set if steamuser is missing - if [ -z "${steamuser}" ]; then - fn_print_warn_nl "Steam login not set. Using anonymous login." - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "Steam login not set. Using anonymous login." - fi - steamuser="anonymous" - steampass="" - sleep 2 - fi -} - -fn_check_steamcmd_sh(){ - # Checks if SteamCMD exists when starting or updating a server. - # Installs if missing. - steamcmddir="${rootdir}/steamcmd" - if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then - if [ "${function_selfname}" == "command_install.sh" ]; then - fn_install_steamcmd - else - fn_print_warn_nl "SteamCMD is missing" - fn_scriptlog "SteamCMD is missing" - sleep 1 - fn_install_steamcmd - fi - elif [ "${function_selfname}" == "command_install.sh" ]; then - fn_print_infomation "SteamCMD is already installed..." - fn_print_ok_eol_nl - fi -} - -fn_check_steamcmd_guard(){ - if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then - # Checks that steamcmd is working correctly and will prompt Steam Guard if required. - "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit - if [ $? -ne 0 ]; then - fn_print_failure_nl "Error running SteamCMD" - fi - fi -} - -fn_check_steamcmd_user -fn_check_steamcmd_sh -fn_check_steamcmd_guard \ No newline at end of file diff --git a/functions/check_system_dir.sh b/functions/check_system_dir.sh deleted file mode 100644 index d5d57e75b..000000000 --- a/functions/check_system_dir.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# LGSM check_system_dir.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -if [ ! -d "${systemdir}" ]; then - fn_print_fail_nl "Cannot access ${systemdir}: No such directory" - if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "Cannot access ${systemdir}: No such directory." - fi - exit 1 -fi diff --git a/functions/check_tmux.sh b/functions/check_tmux.sh deleted file mode 100644 index 49f43dd21..000000000 --- a/functions/check_tmux.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# LGSM check_tmux.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Checks if tmux is installed as too many users do not RTFM or know how to use Google. - -if [ "$(command -v tmux)" ]||[ "$(which tmux >/dev/null 2>&1)" ]||[ -f "/usr/bin/tmux" ]||[ -f "/bin/tmux" ]; then - : -else - fn_print_fail_nl "Tmux not installed" - sleep 1 - fn_scriptlog "Tmux is not installed" - echo " * Tmux is required to run this server." - # Suitable passive agressive message - echo " * Please see the the following link." - echo " * http://gameservermanagers.com/tmux-not-found" - exit 127 -fi diff --git a/functions/command_backup.sh b/functions/command_backup.sh deleted file mode 100644 index d8d52f4bc..000000000 --- a/functions/command_backup.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash -# LGSM command_backup.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Creates a .tar.gz file in the backup directory. - -local modulename="Backup" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -check.sh -backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" -echo "" -echo "${gamename} Backup" -echo "============================" -echo "" -echo "The following backup will be created:" -echo "" -echo "${backupdir}/${backupname}.tar.gz" -echo "" -while true; do - read -p "Continue? [y/N]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; - * ) echo "Please answer yes or no.";; -esac -done -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") -if [ "${tmuxwc}" -eq 1 ]; then - echo "" - fn_print_warning_nl "${servicename} is currently running." - sleep 1 - while true; do - read -p "Stop ${servicename} while running the backup? [y/N]" yn - case $yn in - [Yy]* ) command_stop.sh; break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac - done -fi -fn_scriptlog "Started" -echo -en "starting backup.\r" -sleep 1 -echo -en "starting backup..\r" -sleep 1 -echo -en "starting backup...\r" -sleep 1 -echo -en "\n" -cd "${rootdir}" -if [ ! -d "${backupdir}" ]; then - mkdir -v "${backupdir}" -fi -tar -cvzf "${backupdir}/${backupname}.tar.gz" --exclude "${backupdir}" ./* -echo "" -echo "Backup created: ${backupdir}/${backupname}.tar.gz" -fn_scriptlog "Created: ${backupdir}/${backupname}.tar.gz" -sleep 1 -echo "" -fn_print_complete_nl "Complete." -fn_scriptlog "Complete" -echo "" diff --git a/functions/command_console.sh b/functions/command_console.sh deleted file mode 100644 index f7f2c1323..000000000 --- a/functions/command_console.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# LGSM command_console.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Gives access to the server tmux console. - -local modulename="Console" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -check.sh -echo "" -echo "${gamename} Console" -echo "============================" -echo "" -echo "Press \"CTRL+b d\" to exit console." -fn_print_warning_nl "Do NOT press CTRL+c to exit." -echo "" -while true; do - read -e -i "y" -p "Continue? [y/N]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; - * ) echo "Please answer yes or no.";; -esac -done -fn_print_dots "Starting" -sleep 1 -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") -if [ "${tmuxwc}" -eq 1 ]; then - fn_print_ok_nl "Starting" - fn_scriptlog "accessed" - sleep 1 - tmux attach-session -t ${servicename} -else - fn_print_fail_nl "Server not running" - fn_scriptlog "Failed to access: Server not running" - sleep 1 - while true; do - read -p "Do you want to start the server? [y/N]" yn - case $yn in - [Yy]* ) command_start.sh; break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac - done -fi diff --git a/functions/command_debug.sh b/functions/command_debug.sh deleted file mode 100644 index baa93aec0..000000000 --- a/functions/command_debug.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# LGSM command_debug.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Runs the server without tmux. Runs direct from the terminal. - -local modulename="Debug" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -check.sh -fix.sh -info_distro.sh -fn_parms -echo "" -echo "${gamename} Debug" -echo "============================" -echo "" -echo -e "Distro: ${os}" -echo -e "Arch: ${arch}" -echo -e "Kernel: ${kernel}" -echo -e "Hostname: $HOSTNAME" -echo "" -echo "Start parameters:" -if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - echo "${executable} ${parms} -debug" -else - echo "${executable} ${parms}" -fi -echo "" -echo -e "Use for identifying server issues only!" -echo -e "Press CTRL+c to drop out of debug mode." -fn_print_warning_nl "If ${servicename} is already running it will be stopped." -echo "" -while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; - * ) echo "Please answer yes or no.";; -esac -done -fn_scriptlog "Starting debug" -fn_print_info_nl "Stopping any running servers" -fn_scriptlog "Stopping any running servers" -sleep 1 -command_stop.sh -fn_print_dots "Starting debug" -sleep 1 -fn_print_ok_nl "Starting debug" -fn_scriptlog "Started debug" -cd "${executabledir}" -fix.sh -if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - ${executable} ${parms} -debug -else - ${executable} ${parms} -fi \ No newline at end of file diff --git a/functions/command_details.sh b/functions/command_details.sh deleted file mode 100644 index 6ec515d00..000000000 --- a/functions/command_details.sh +++ /dev/null @@ -1,682 +0,0 @@ -#!/bin/bash -# LGSM command_details.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="230216" - -# Description: Displays server infomation. - -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -# Standard Details -# This applies to all engines - -fn_details_os(){ -echo -e "" -echo -e "\e[93mDistro Details\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mDistro:\t\e[0m${os}" - echo -e "\e[34mArch:\t\e[0m${arch}" - echo -e "\e[34mKernel:\t\e[0m${kernel}" - echo -e "\e[34mHostname:\t\e[0m$HOSTNAME" - echo -e "\e[34mtmux:\t\e[0m${tmuxv}" - echo -e "\e[34mGLIBC:\t\e[0m${glibcv}" -} | column -s $'\t' -t -} - -fn_details_performance(){ -echo -e "" -echo -e "\e[93mPerformance\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mUptime:\t\e[0m${days}d, ${hours}h, ${minutes}m" - echo -e "\e[34mAvg Load:\t\e[0m${load}" -} | column -s $'\t' -t -echo -e "" -{ - echo -e "\e[34mMem:\t\e[34mtotal\t used\t free\e[0m" - echo -e "\e[34mPhysical:\t\e[0m${physmemtotal}\t${physmemused}\t${physmemfree}\e[0m" - echo -e "\e[34mSwap:\t\e[0m${swaptotal}\t${swapused}\t${swapfree}\e[0m" -} | column -s $'\t' -t -} - -fn_details_disk(){ -echo -e "" -echo -e "\e[93mStorage\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mFilesystem:\t\e[0m${filesystem}" - echo -e "\e[34mTotal:\t\e[0m${totalspace}" - echo -e "\e[34mUsed:\t\e[0m${usedspace}" - echo -e "\e[34mAvailable:\t\e[0m${availspace}" - echo -e "\e[34mServerfiles:\t\e[0m${filesdirdu}" - if [ -d "${backupdir}" ]; then - echo -e "\e[34mBackups:\t\e[0m${backupdirdu}" - fi -} | column -s $'\t' -t -} - -fn_details_gameserver(){ -echo -e "" - -## server details -echo -e "\e[92m${gamename} Server Details\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - # server name - echo -e "\e[34mServer name:\t\e[0m${servername}" - - # server ip - echo -e "\e[34mServer IP:\t\e[0m${ip}:${port}" - - # rcon password - if [ -n "${rconpassword}" ]; then - echo -e "\e[34mRCON password:\t\e[0m${rconpassword}" - fi - - # server password - if [ -n "${serverpassword}" ]; then - echo -e "\e[34mServer password:\t\e[0m${serverpassword}" - fi - - # admin password - if [ -n "${adminpassword}" ]; then - echo -e "\e[34mAdmin password:\t\e[0m${adminpassword}" - fi - - # slots - if [ -n "${slots}" ]; then - echo -e "\e[34mSlots:\t\e[0m${slots}" - fi - - # game mode - if [ -n "${gamemode}" ]; then - echo -e "\e[34mGame mode:\t\e[0m${gamemode}" - fi - - # game world - if [ -n "${gameworld}" ]; then - echo -e "\e[34mGame world:\t\e[0m${gameworld}" - fi - - # tick rate - if [ -n "${tickrate}" ]; then - echo -e "\e[34mTick rate:\t\e[0m${tickrate}" - fi - - # online status - if [ "${gamename}" == "Teamspeak 3" ]; then - info_ts3status.sh - if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - echo -e "\e[34mStatus:\t\e[0;31mOFFLINE\e[0m" - else - echo -e "\e[34mStatus:\t\e[0;32mONLINE\e[0m" - fi - else - pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - echo -e "\e[34mStatus:\t\e[0;31mOFFLINE\e[0m" - else - echo -e "\e[34mStatus:\t\e[0;32mONLINE\e[0m" - fi - fi - - # teamspeak dbplugin - if [ -n "${dbplugin}" ]; then - echo -e "\e[34mdbplugin:\t\e[0m${dbplugin}" - fi -} | column -s $'\t' -t -echo -e "" - -## script details -echo -e "\e[92m${selfname} Script Details\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - # service name - echo -e "\e[34mService name:\t\e[0m${servicename}" - - # script version - if [ -n "${version}" ]; then - echo -e "\e[34m${selfname} version:\t\e[0m${version}" - fi - - # script user - echo -e "\e[34mUser:\t\e[0m$(whoami)" - - # GLIBC required - if [ -n "${glibcrequired}" ]; then - if [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then - if [ "${glibcfix}" == "yes" ]; then - echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)" - else - echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}\e[0m(\e[0;32mGLIBC version too old\e[0m)" - fi - else - echo -e "\e[34mGLIBC required:\t\e[0;32m${glibcrequired}\e[0m" - fi - fi - - # email notification - if [ -n "${emailnotification}" ]; then - echo -e "\e[34mEmail notification:\t\e[0m${emailnotification}" - fi - - # update on start - if [ -n "${updateonstart}" ]; then - echo -e "\e[34mUpdate on start:\t\e[0m${updateonstart}" - fi - - # script location - echo -e "\e[34mLocation:\t\e[0m${rootdir}" - - # config file location - if [ -n "${servercfgfullpath}" ]; then - echo -e "\e[34mConfig file:\t\e[0m${servercfgfullpath}" - fi - - # network config file location (ARMA 3) - if [ -n "${networkcfgfullpath}" ]; then - echo -e "\e[34mNetwork config file:\t\e[0m${networkcfgfullpath}" - fi -} | column -s $'\t' -t -} - -fn_details_backup(){ -echo -e "" -echo -e "\e[92mBackups\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then - echo -e "No Backups created" -else - { - echo -e "\e[34mNo. of backups:\t\e[0m${backupcount}" - echo -e "\e[34mLatest backup:\e[0m" - echo -e "\e[34m date:\t\e[0m${lastbackupdate}" - echo -e "\e[34m file:\t\e[0m${lastbackup}" - echo -e "\e[34m size:\t\e[0m${lastbackupsize}" - } | column -s $'\t' -t -fi -} - -fn_details_commandlineparms(){ -echo -e "" -echo -e "\e[92mCommand-line Parameters\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "${executable} ${parms}" -} - -fn_details_statusbottom(){ -echo -e "" -if [ "${gamename}" == "Teamspeak 3" ]; then - if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - echo -e "\e[34mStatus: \e[0;31mOFFLINE\e[0m" - else - echo -e "\e[34mStatus: \e[0;32mONLINE\e[0m" - fi -else - pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - echo -e "\e[34mStatus: \e[0;31mOFFLINE\e[0m" - else - echo -e "\e[34mStatus: \e[0;32mONLINE\e[0m" - fi -fi -echo -e "" -} - -# Engine Specific details - -fn_details_avalanche(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep Jcmp-Server" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_dontstarve(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep dontstarve" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_projectzomboid(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep java" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - - -fn_details_realvirtuality(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep arma3server" -echo -e "" -if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then - echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." - echo -e "" -fi -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" - echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_idtech3(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep qzeroded" -echo -e "" -if [ -z "${port}" ]||[ -z "${rconport}" ]||[ -z "${statsport}" ]; then - echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." - echo -e "" -fi -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Rcon\tINBOUND\t${rconport}\tudp" - echo -e "> Stats\tINBOUND\t${statsport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - - -fn_details_seriousengine35(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep Sam3_Dedicate" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\ttcp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_source(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${selfname}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep srcds_linux" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\ttcp/udp" - if [ -n "${sourcetvport}" ]; then - echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp" - fi - echo -e "< Client\tOUTBOUND\t${clientport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_spark(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${selfname}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep server_linux3" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" -} | column -s $'\t' -t -echo -e "" -echo -e "\e[92m${servername} WebAdmin\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}/index.html" - echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}" - echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_starbound(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${selfname}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep starbound" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\ttcp" - echo -e "> Query\tINBOUND\t${queryport}\ttcp" - echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" -} | column -s $'\t' -t - -fn_details_statusbottom - -} - -fn_details_teamspeak3(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep ts3server" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Voice\tINBOUND\t${port}\tudp" - echo -e "> ServerQuery\tINBOUND\t${queryport}\ttcp" - echo -e "> File transfer\tINBOUND\t${fileport}\ttcp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_teeworlds(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep teeworlds_srv" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\ttcp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_terraria(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep terraia" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\ttcp" - echo -e "> Query\tINBOUND\t${queryport}\ttcp" - echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_sdtd(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep 7DaysToDie" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" - echo -e "> Telnet\tINBOUND\t${telnetport}\ttcp" -} | column -s $'\t' -t -echo -e "" -echo -e "\e[92m${servername} WebAdmin\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mWebAdmin enabled:\t\e[0m${webadminenabled}" - echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}" - echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" -} | column -s $'\t' -t -echo -e "" -echo -e "\e[92m${servername} Telnet\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mTelnet enabled:\t\e[0m${telnetenabled}" - echo -e "\e[34mTelnet address:\t\e[0m${ip} ${telnetport}" - echo -e "\e[34mTelnet password:\t\e[0m${telnetpass}" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_hurtworld(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "hwserver script" -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep Hurtworld" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - -} | column -s $'\t' -t -echo -e "" - -fn_details_statusbottom -} - -fn_details_rust(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "rustserver script" -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep Rust" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\tudp" - echo -e "> RCON\tINBOUND\t${rconport}\ttcp" - -} | column -s $'\t' -t -echo -e "" - -fn_details_statusbottom -} - -fn_details_unreal(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep ucc-bin" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - if [ "${engine}" == "unreal" ]; then - echo -e "< UdpLink Port (random)\tOUTBOUND\t${udplinkport}+\tudp" - fi - if [ "${engine}" != "unreal" ] && [ "${appid}" != "223250" ]; then - echo -e "> GameSpy query\tINBOUND\t${gsqueryport}\tudp\tOldQueryPortNumber=${gsqueryport}" - fi - if [ "${appid}" == "215360" ]; then - echo -e "< Master server\tOUTBOUND\t28852\ttcp/udp" - else - echo -e "< Master server\tOUTBOUND\t28900/28902\ttcp/udp" - fi - if [ "${appid}" ]; then - if [ "${appid}" == "223250" ]; then - echo -e "< Steam\tOUTBOUND\t20610\tudp" - else - echo -e "< Steam\tOUTBOUND\t20660\tudp" - fi - fi - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}" -} | column -s $'\t' -t -echo -e "" -echo -e "\e[92m${servername} WebAdmin\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mWebAdmin enabled:\t\e[0m${webadminenabled}" - echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}" - echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}" - echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" -} | column -s $'\t' -t - -fn_details_statusbottom -} - -fn_details_ark(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep ShooterGame" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" - echo -e "> Query\tINBOUND\t${queryport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom -} - - -# Run checks and gathers details to display. -check.sh -info_config.sh -info_distro.sh -info_glibc.sh -fn_details_os -fn_details_performance -fn_details_disk -fn_details_gameserver -fn_details_backup -# Some game servers do not have parms. -if [ "${gamename}" != "Teamspeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]; then - fn_parms - fn_details_commandlineparms -fi - - -# Display details depending on game or engine. -if [ "${engine}" == "avalanche" ]; then - fn_details_avalanche -elif [ "${engine}" == "dontstarve" ]; then - fn_details_dontstarve -elif [ "${engine}" == "projectzomboid" ]; then - fn_details_projectzomboid -elif [ "${engine}" == "idtech3" ]; then - fn_details_idtech3 -elif [ "${engine}" == "realvirtuality" ]; then - fn_details_realvirtuality -elif [ "${engine}" == "seriousengine35" ]; then - fn_details_seriousengine35 -elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - fn_details_source -elif [ "${engine}" == "spark" ]; then - fn_details_spark -elif [ "${engine}" == "starbound" ]; then - fn_details_starbound -elif [ "${engine}" == "teeworlds" ]; then - fn_details_teeworlds -elif [ "${engine}" == "terraria" ]; then - fn_details_terraria -elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then - fn_details_unreal -elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then - fn_details_ark -elif [ "${gamename}" == "Hurtworld" ]; then - fn_details_hurtworld -elif [ "${gamename}" == "7 Days To Die" ]; then - fn_details_sdtd -elif [ "${gamename}" == "Teamspeak 3" ]; then - fn_details_teamspeak3 -elif [ "${gamename}" == "Rust" ]; then - fn_details_rust -else - fn_print_error_nl "Unable to detect server engine." -fi diff --git a/functions/command_dev_debug.sh b/functions/command_dev_debug.sh deleted file mode 100644 index 46bae900d..000000000 --- a/functions/command_dev_debug.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# LGSM dev_debug.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="281215" - -# Description: Dev only: enables debuging log to be saved to dev-debug.log. - -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -if [ -f ".dev-debug" ]; then - rm .dev-debug - fn_print_ok_nl "Disabled dev-debug" -else - date > .dev-debug - fn_print_ok_nl "Enabled dev-debug" -fi \ No newline at end of file diff --git a/functions/command_email_test.sh b/functions/command_email_test.sh deleted file mode 100644 index 26a0b6a42..000000000 --- a/functions/command_email_test.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# LGSM command_email_test.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Sends a test email notification. - -local modulename="Email" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -check.sh -info_config.sh -if [ "${emailnotification}" = "on" ]; then - fn_scriptlog "Sending test notification" - subject="${servicename} Email Test Notification - Testing ${servername}" - failurereason="Testing ${servicename} email notification" - actiontaken="Sent test email...hello is this thing on?" - email.sh -else - fn_print_fail_nl "Notifications not enabled" - fn_scriptlog "Notifications not enabled" -fi \ No newline at end of file diff --git a/functions/command_install.sh b/functions/command_install.sh deleted file mode 100644 index 877896380..000000000 --- a/functions/command_install.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# LGSM fn_install function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="260216" - -# Description: Overall function for the installer. - -local modulename="Install" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -check.sh -install_header.sh -install_server_dir.sh -install_logs.sh -check_deps.sh -# Download and install -if [ "${gamename}" == "Unreal Tournament 2004" ]; then - install_server_files.sh - install_ut2k4_key.sh -elif [ "${gamename}" == "Unreal Tournament 99" ]; then - install_server_files.sh -elif [ "${gamename}" == "Teamspeak 3" ]; then - install_ts3.sh -elif [ -n "${appid}" ]; then - install_steamcmd.sh - install_server_files.sh -fi - -# Configuration -install_config.sh -if [ "${gamename}" == "Counter Strike: Global Offensive" ]||[ "${gamename}" == "Team Fortress 2" ]||[ "${gamename}" == "BrainBread 2" ]; then - install_gslt.sh -elif [ "${gamename}" == "Teamspeak 3" ]; then - install_ts3db.sh -fi -fix.sh -install_complete.sh diff --git a/functions/command_monitor.sh b/functions/command_monitor.sh deleted file mode 100644 index 066d0dbdf..000000000 --- a/functions/command_monitor.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/bash -# LGSM command_monitor.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Monitors server by checking for running proccesses -# then passes to monitor_gsquery.sh. - -local modulename="Monitor" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -fn_monitor_check_lockfile(){ - # Monitor does not run it lockfile is not found - if [ ! -f "${rootdir}/${lockselfname}" ]; then - fn_print_info_nl "Disabled: No lock file found" - fn_scriptlog "Disabled: No lock file found" - echo " * To enable monitor run ./${selfname} start" - exit 1 - fi -} - -fn_monitor_check_update(){ - # Monitor will not check if update is running. - updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) - if [ "${updatecheck}" >= "1" ]; then - fn_print_info_nl "SteamCMD is currently checking for updates" - fn_scriptlog "SteamCMD is currently checking for updates" - sleep 1 - exit - fi -} - -fn_monitor_msg_checking(){ - fn_print_dots "Checking session: " - fn_print_checking_eol - fn_scriptlog "Checking session: CHECKING" - sleep 1 -} - -fn_monitor_email_notification(){ - # Email will be sent if enabled - if [ "${emailnotification}" = "on" ]; then - subject="${servicename} Monitor - Starting ${servername}" - failurereason="${servicename} process not running" - actiontaken="${servicename} has been restarted" - email.sh - fi -} - -fn_monitor_teamspeak3(){ - info_ts3status.sh - if [ "${ts3status}" = "Server is running" ]; then - fn_print_ok "Checking session: " - fn_print_ok_eol_nl - fn_scriptlog "Checking session: OK" - exit - else - fn_print_fail "Checking session: ${ts3status}: " - fn_print_fail_eol_nl - fn_scriptlog "Checking session: ${ts3status}: FAIL" - failurereason="${ts3status}" - fn_monitor_email_notification - fi - fn_scriptlog "Monitor is starting ${servername}" - sleep 1 - fn_restart -} - -fn_monitor_tmux(){ - # checks that tmux session is running - tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${tmuxwc}" == "1" ]; then - fn_print_ok "Checking session: OK" - fn_print_ok_eol_nl - fn_scriptlog "Checking session: OK" - # runs gsquery check on game with specific engines. - local allowed_engines_array=( avalanche goldsource realvirtuality source spark unity3d unreal unreal2 ) - for allowed_engine in "${allowed_engines_array[@]}" - do - if [ "${allowed_engine}" == "${function_selfname}" ]; then - monitor_gsquery.sh - fi - done - exit - else - fn_print_fail "Checking session: " - fn_print_fail_eol_nl - fn_scriptlog "Checking session: FAIL" - fn_monitor_email_notification - fn_scriptlog "Monitor is starting ${servername}" - sleep 1 - command_start.sh - fi -} - -check.sh -logs.sh -info_config.sh -fn_print_dots "${servername}" -fn_scriptlog "${servername}" -sleep 1 -fn_monitor_check_lockfile -fn_monitor_check_update -fn_monitor_msg_checking -if [ "${gamename}" == "Teamspeak 3" ]; then - fn_monitor_teamspeak3 -else - fn_monitor_tmux -fi \ No newline at end of file diff --git a/functions/command_start.sh b/functions/command_start.sh deleted file mode 100644 index e9fa5d0d0..000000000 --- a/functions/command_start.sh +++ /dev/null @@ -1,182 +0,0 @@ -#!/bin/bash -# LGSM command_start.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="070116" - -# Description: Starts the server. - -local modulename="Starting" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -fn_start_teamspeak3(){ - check.sh - info_ts3status.sh - - if [ "${ts3status}" != "Server is running" ]; then - # Will check for updates is updateonstart is yes - if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then - update_check.sh - fi - fi - - if [ ! -e "${servercfgfullpath}" ]; then - fn_print_warn_nl "${servercfgfullpath} is missing" - fn_scriptlog "${servercfgfullpath} is missing" - echo " * Creating blank ${servercfg}" - fn_scriptlog "Creating blank ${servercfg}" - sleep 2 - echo " * ${servercfg} can remain blank by default." - fn_scriptlog "${servercfgfullpath} can remain blank by default." - sleep 2 - echo " * ${servercfg} is located in ${servercfgfullpath}." - fn_scriptlog "${servercfg} is located in ${servercfgfullpath}." - sleep 5 - touch "${servercfgfullpath}" - fi - - logs.sh - - fn_print_dots "${servername}" - fn_scriptlog "${servername}" - sleep 1 - - if [ "${ts3status}" == "Server is running" ]; then - fn_print_info_nl "${servername} is already running" - fn_scriptlog "${servername} is already running" - exit - fi - - mv "${scriptlog}" "${scriptlogdate}" - # Create lock file - date > "${rootdir}/${lockselfname}" - cd "${executabledir}" - if [ "${ts3serverpass}" == "1" ];then - ./ts3server_startscript.sh start serveradmin_password="${newpassword}" - else - ./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1 - fi - sleep 1 - info_ts3status.sh - if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - fn_print_fail_nl "Unable to start ${servername}" - fn_scriptlog "Unable to start ${servername}" - echo -e " Check log files: ${rootdir}/log" - exit 1 - else - fn_print_ok_nl "${servername}" - fn_scriptlog "Started ${servername}" - fi -} - -fn_start_tmux(){ -check.sh -fix.sh -info_config.sh -fn_parms -logs.sh - -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") -# Will check for updates if updateonstart is yes -if [ "${tmuxwc}" -eq 0 ]; then - if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then - update_check.sh - fi -fi - -fn_print_dots "${servername}" -fn_scriptlog "${servername}" -sleep 1 - -if [ "${tmuxwc}" -eq 0 ]; then - fn_scriptlog "Rotating log files" - if [ "${engine}" == "unreal2" ]; then - mv "${gamelog}" "${gamelogdate}" - fi - mv "${scriptlog}" "${scriptlogdate}" - mv "${consolelog}" "${consolelogdate}" -fi - -if [ "${tmuxwc}" -eq 1 ]; then - fn_print_info_nl "${servername} is already running" - fn_scriptlog "${servername} is already running" - exit -fi - -# Create lock file -date > "${rootdir}/${lockselfname}" -cd "${executabledir}" -tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp" -# tmux pipe-pane not supported in tmux versions < 1.6 -if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then - echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}" - echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" - echo "Currently installed: $(tmux -V)" >> "${consolelog}" -elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; then - echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}" - echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" - echo "Currently installed: $(tmux -V)" >> "${consolelog}" -else - touch "${consolelog}" - tmux pipe-pane -o -t "${servicename}" "exec cat >> '${consolelog}'" -fi -sleep 1 -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") -# If the server fails to start -if [ "${tmuxwc}" -eq 0 ]; then - fn_print_fail_nl "Unable to start ${servername}" - fn_scriptlog "Unable to start ${servername}" - sleep 1 - if [ -s "${scriptlogdir}/.${servicename}-tmux-error.tmp" ]; then - fn_print_fail_nl "Unable to start ${servername}: Tmux error:" - fn_scriptlog "Tmux error" - echo "" - echo "Command" - echo "=================================" - echo "tmux new-session -d -s \"${servicename}\" \"${executable} ${parms}\"" | tee -a "${scriptlog}" - echo "" - echo "Error" - echo "=================================" - cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" | tee -a "${scriptlog}" - - # Detected error http://gameservermanagers.com/issues - if [ $(grep -c "Operation not permitted" "${scriptlogdir}/.${servicename}-tmux-error.tmp") ]; then - echo "" - echo "Fix" - echo "=================================" - if [ ! $(grep "tty:" /etc/group|grep "$(whoami)") ]; then - echo "$(whoami) is not part of the tty group." - fn_scriptlog "$(whoami) is not part of the tty group." - group=$(grep tty /etc/group) - echo "" - echo " ${group}" - fn_scriptlog "${group}" - echo "" - echo "Run the following command with root privileges." - echo "" - echo " usermod -G tty $(whoami)" - echo "" - echo "http://gameservermanagers.com/tmux-op-perm" - fn_scriptlog "http://gameservermanagers.com/tmux-op-perm" - else - echo "No known fix currently. Please log an issue." - fn_scriptlog "No known fix currently. Please log an issue." - echo "http://gameservermanagers.com/issues" - fn_scriptlog "http://gameservermanagers.com/issues" - fi - fi - fi -exit 1 -else - fn_print_ok "${servername}" - fn_scriptlog "Started ${servername}" -fi -rm "${scriptlogdir}/.${servicename}-tmux-error.tmp" -echo -en "\n" -} - -if [ "${gamename}" == "Teamspeak 3" ]; then - fn_start_teamspeak3 -else - fn_start_tmux -fi diff --git a/functions/command_stop.sh b/functions/command_stop.sh deleted file mode 100644 index ba8400879..000000000 --- a/functions/command_stop.sh +++ /dev/null @@ -1,217 +0,0 @@ -#!/bin/bash -# LGSM command_stop.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Stops the server. - -local modulename="Stopping" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -# Attempts Graceful of source using rcon 'quit' command. -fn_stop_graceful_source(){ - fn_print_dots "Graceful: rcon quit" - fn_scriptlog "Graceful: rcon quit" - # sends quit - tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 - # waits up to 30 seconds giving the server time to shutdown gracefuly - for seconds in {1..30}; do - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_print_ok "Graceful: rcon quit: ${seconds}: " - fn_print_ok_eol_nl - fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" - break - fi - sleep 1 - fn_print_dots "Graceful: rcon quit: ${seconds}" - done - if [ "${pid}" != "0" ]; then - fn_print_fail "Graceful: rcon quit" - fn_print_fail_eol_nl - fn_scriptlog "Graceful: rcon quit: FAIL" - fn_stop_tmux - fi - sleep 1 -} - -# Attempts Graceful of goldsource using rcon 'quit' command. -# Goldsource 'quit' command restarts rather than shutsdown -# this function will only wait 3 seconds then force a tmux shutdown. -# preventing the server from coming back online. -fn_stop_graceful_goldsource(){ - fn_print_dots "Graceful: rcon quit" - fn_scriptlog "Graceful: rcon quit" - # sends quit - tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 - # waits 3 seconds as goldsource servers restart with the quit command - for seconds in {1..3}; do - sleep 1 - fn_print_dots "Graceful: rcon quit: ${seconds}" - done - fn_print_ok "Graceful: rcon quit: ${seconds}: " - fn_print_ok_eol_nl - fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" - sleep 1 - fn_stop_tmux -} - -# Attempts Graceful of 7 Days To Die using telnet. -fn_stop_telnet_sdtd(){ - sdtd_telnet_shutdown=$( expect -c ' - proc abort {} { - puts "Timeout or EOF\n" - exit 1 - } - spawn telnet '"${telnetip}"' '"${telnetport}"' - expect { - "password:" { send "'"${telnetpass}"'\r" } - default abort - } - expect { - "session." { send "shutdown\r" } - default abort - } - expect { eof } - puts "Completed.\n" - ') - -} - -fn_stop_graceful_sdtd(){ - fn_print_dots "Graceful: telnet" - fn_scriptlog "Graceful: telnet" - sleep 1 - if [ "${telnetenabled}" == "false" ]; then - fn_print_info_nl "Graceful: telnet: DISABLED: Enable in ${servercfg}" - elif [ "$(command -v expect)" ]||[ "$(which expect >/dev/null 2>&1)" ]; then - # Tries to shutdown with both localhost and server IP. - for telnetip in 127.0.0.1 ${ip}; do - fn_print_dots "Graceful: telnet: ${telnetip}" - fn_scriptlog "Graceful: telnet: ${telnetip}" - sleep 1 - fn_stop_telnet_sdtd - completed=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Completed.") - refused=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Timeout or EOF") - if [ -n "${refused}" ]; then - fn_print_warn "Graceful: telnet: ${telnetip}: " - fn_print_fail_eol_nl - fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" - sleep 1 - elif [ -n "${completed}" ]; then - break - fi - done - - # If telnet was successful will use telnet again to check the connection has closed - # This confirms that the tmux session can now be killed. - if [ -n "${completed}" ]; then - for seconds in {1..30}; do - fn_stop_telnet_sdtd - refused=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Timeout or EOF") - if [ -n "${refused}" ]; then - fn_print_ok "Graceful: telnet: ${telnetip}: " - fn_print_ok_eol_nl - fn_scriptlog "Graceful: telnet: ${telnetip}: ${seconds} seconds" - break - fi - sleep 1 - fn_print_dots "Graceful: rcon quit: ${seconds}" - done - # If telnet failed will go straight to tmux shutdown. - # If cannot shutdown correctly world save may be lost - else - if [ -n "${refused}" ]; then - fn_print_fail "Graceful: telnet: " - fn_print_fail_eol_nl - fn_scriptlog "Graceful: telnet: ${telnetip}: FAIL" - else - fn_print_fail_nl "Graceful: telnet: Unknown error" - fn_scriptlog "Graceful: telnet: Unknown error" - fi - echo -en "\n" | tee -a "${scriptlog}" - echo -en "Telnet output:" | tee -a "${scriptlog}" - echo -en "\n ${sdtd_telnet_shutdown}" | tee -a "${scriptlog}" - echo -en "\n\n" | tee -a "${scriptlog}" - fi - else - fn_print_dots "Graceful: telnet: " - fn_scriptlog "Graceful: telnet: " - fn_print_fail "Graceful: telnet: expect not installed: " - fn_print_fail_eol_nl - fn_scriptlog "Graceful: telnet: expect not installed: FAIL" - fi - sleep 1 - fn_stop_tmux -} - -fn_stop_graceful_select(){ - if [ "${gamename}" == "7 Days To Die" ]; then - fn_stop_graceful_sdtd - elif [ "${engine}" == "source" ]; then - fn_stop_graceful_source - elif [ "${engine}" == "goldsource" ]; then - fn_stop_graceful_goldsource - else - fn_stop_tmux - fi -} - -fn_stop_teamspeak3(){ - fn_print_dots "${servername}" - fn_scriptlog "${servername}" - sleep 1 - ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 - # Remove lock file - rm -f "${rootdir}/${lockselfname}" - fn_print_ok_nl "${servername}" - fn_scriptlog "Stopped ${servername}" - } - - fn_stop_tmux(){ - fn_print_dots "${servername}" - fn_scriptlog "tmux kill-session: ${servername}" - sleep 1 - # Kill tmux session - tmux kill-session -t "${servicename}" > /dev/null 2>&1 - sleep 0.5 - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - # Remove lock file - rm -f "${rootdir}/${lockselfname}" - fn_print_ok_nl "${servername}" - fn_scriptlog "Stopped ${servername}" - else - fn_print_fail_nl "Unable to stop${servername}" - fn_scriptlog "Unable to stop${servername}" - fi -} - -# checks if the server is already stopped before trying to stop. -fn_stop_pre_check(){ - if [ "${gamename}" == "Teamspeak 3" ]; then - info_ts3status.sh - if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - fn_print_ok_nl "${servername} is already stopped" - fn_scriptlog "${servername} is already stopped" - else - fn_stop_teamspeak3 - fi - else - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_print_ok_nl "${servername} is already stopped" - fn_scriptlog "${servername} is already stopped" - else - fn_stop_graceful_select - fi - fi -} - -check.sh -info_config.sh -fn_print_dots "${servername}" -fn_scriptlog "${servername}" -sleep 1 -fn_stop_pre_check \ No newline at end of file diff --git a/functions/command_ts3_server_pass.sh b/functions/command_ts3_server_pass.sh deleted file mode 100644 index eba76523a..000000000 --- a/functions/command_ts3_server_pass.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash -# LGSM command_serveradmin_password.sh function -# Author: Daniel Gibbs -# Contributor : UltimateByte -# Website: http://gameservermanagers.com -lgsm_version="080116" - -# Description: Changes TS3 serveradmin password - -local modulename="Change password" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - - -fn_serveradmin_password_prompt(){ -echo "" -echo "${gamename} ServerAdmin Password Change" -echo "============================" -echo "" -echo "Press \"CTRL+b d\" to exit console." -fn_print_infomation_nl "You are about to change the ${gamename} ServerAdmin password." -fn_print_warning_nl "${gamename} will restart during this process." -echo "" -while true; do - read -e -i "y" -p "Continue? [y/N]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; - * ) echo "Please answer yes or no.";; -esac -done -fn_scriptlog "Initiating ${gamename} ServerAdmin password change" -read -p "Enter new password : " newpassword -} - - -fn_serveradmin_password_set(){ -fn_print_info_nl "Applying new password" -fn_scriptlog "Applying new password" -sleep 1 -# Stop any running server -command_stop.sh -# Start server in "new password mode" -ts3serverpass="1" -fn_print_info_nl "Starting server with new password" -command_start.sh -# Stop server in "new password mode" -command_stop.sh -fn_print_ok_nl "Password applied" -fn_scriptlog "New ServerAdmin password applied" -sleep 1 -} - -# Running functions -check.sh -fn_serveradmin_password_prompt -info_ts3status.sh -if [ "${ts3status}" == "Server is running" ]; then - fn_serveradmin_password_set - command_start.sh -else - fn_serveradmin_password_set -fi \ No newline at end of file diff --git a/functions/command_update_functions.sh b/functions/command_update_functions.sh deleted file mode 100644 index 9c0ac4b90..000000000 --- a/functions/command_update_functions.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# LGSM update_functions.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="270216" - -# Description: Deletes the functions dir to allow re-downloading of functions from GitHub. - -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -check.sh -fn_print_dots "Updating functions" -fn_scriptlog "Updating functions" -sleep 1 -echo -ne "\n" - -# Removed legecy functions dir -if [ -d "${rootdir}/functions/" ]; then - rm -rfv "${rootdir}/functions/" - exitcode=$? -fi - -if [ -n "${functionsdir}" ]; then - rm -rfv "${functionsdir}/"* - exitcode=$? -else - fn_print_fail "Updating functions" - fn_scriptlog "Failure! Updating functions" -fi - -if [ "${exitcode}" == "0" ]; then - fn_print_ok "Updating functions" - fn_scriptlog "Success! Updating functions" -else - fn_print_fail "Updating functions" - fn_scriptlog "Failure! Updating functions" -fi -echo -ne "\n" \ No newline at end of file diff --git a/functions/command_validate.sh b/functions/command_validate.sh deleted file mode 100644 index f4c46c071..000000000 --- a/functions/command_validate.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# LGSM command_validate.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Runs a server validation. - -local modulename="Validate" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -fn_validation(){ -fn_print_warn_nl "Validating may overwrite some customised files." -echo -en "https://developer.valvesoftware.com/wiki/SteamCMD#Validate" -sleep 5 -echo -en "\n" -fn_print_dots "Checking server files" -sleep 1 -fn_print_ok "Checking server files" -fn_scriptlog "Checking server files" -sleep 1 - -cd "${rootdir}/steamcmd" - -if [ $(command -v unbuffer) ]; then - unbuffer=unbuffer -fi - -if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" -else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" -fi - -fix.sh -fn_scriptlog "Checking complete" -} - -check.sh -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") -if [ "${tmuxwc}" -eq 1 ]; then - command_stop.sh - fn_validation - command_start.sh -else - fn_validation -fi diff --git a/functions/core_dl.sh b/functions/core_dl.sh deleted file mode 100644 index d6d841637..000000000 --- a/functions/core_dl.sh +++ /dev/null @@ -1,202 +0,0 @@ -#!/bin/bash -# LGSM core_dl.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="050216" - -# Description: Deals with all downloads for LGSM. - -# fileurl: The URL of the file: http://example.com/dl/File.tar.bz2 -# filedir: location the file is to be saved: /home/server/lgsm/tmp -# filename: name of file (this can be different from the url name): file.tar.bz2 -# executecmd: Optional, set to "executecmd" to make file executable using chmod +x -# run: Optional, set to run to execute the file -# force: Optional, force re-download of file even if exists -# md5: Optional, Checks file against an md5 sum -# -# Downloads can be defined in code like so: -# fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" -# fn_fetch_file "http://example.com/file.tar.bz2" "/some/dir" "file.tar.bz2" "executecmd" "run" "force" "10cd7353aa9d758a075c600a6dd193fd" - -fn_dl_md5(){ -# Runs MD5 Check if available -if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then - echo -ne "verifying ${filename} with MD5..." - sleep 1 - local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') - if [ "${md5sumcmd}" != "${md5}" ]; then - fn_print_fail_eol_nl - echo "${filename} returned MD5 checksum: ${md5sumcmd}" - echo "expected MD5 checksum: ${md5}" - fn_scriptlog "verifying ${filename} with MD5: FAIL" - fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" - fn_scriptlog "expected MD5 checksum: ${md5}" - exit 1 - else - fn_print_ok_eol_nl - fn_scriptlog "verifying ${filename} with MD5: OK" - fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" - fn_scriptlog "expected MD5 checksum: ${md5}" - fi -fi -} - -# Extracts bzip2 or gzip files -# Extracts can be defined in code like so: -# fn_dl_extract "${filedir}" "${filename}" "${extractdir}" -# fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles" -fn_dl_extract(){ -filedir="${1}" -filename="${2}" -extractdir="${3}" -# extracts archives -echo -ne "extracting ${filename}..." -fn_scriptlog "extracting download" -mime=$(file -b --mime-type "${filedir}/${filename}") - -if [ "${mime}" == "application/gzip" ]; then - tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}") -elif [ "${mime}" == "application/x-bzip2" ]; then - tarcmd=$(tar -jxf "${filedir}/${filename}" -C "${extractdir}") -fi -local exitcode=$? -if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - fn_scriptlog "extracting download: FAIL" - echo "${tarcmd}" | tee -a "${scriptlog}" - exit ${exitcode} -else - fn_print_ok_eol_nl -fi -} - -# Trap to remove file download if canceled before completed -fn_fetch_trap() { - echo "" - echo -ne "downloading ${filename}: " - fn_print_canceled_eol_nl - fn_scriptlog "downloading ${filename}: CANCELED" - sleep 1 - rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" - echo -ne "downloading ${filename}: " - fn_print_removed_eol_nl - fn_scriptlog "downloading ${filename}: REMOVED" - exit -} - -fn_fetch_file(){ -fileurl="${1}" -filedir="${2}" -filename="${3}" -executecmd="${4:-0}" -run="${5:-0}" -force="${6:-0}" -md5="${7:-0}" - -# If the file is missing, then download -if [ ! -f "${filedir}/${filename}" ]; then - if [ ! -d "${filedir}" ]; then - mkdir -p "${filedir}" - fi - - # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" - for curlcmd in ${curlpaths} - do - if [ -x "${curlcmd}" ]; then - break - fi - done - # If curl exists download file - if [ "$(basename ${curlcmd})" == "curl" ]; then - # trap to remove part downloaded files - trap fn_fetch_trap INT - # if larger file shows progress bar - if [ ${filename##*.} == "bz2" ]; then - echo -ne "downloading ${filename}..." - sleep 1 - curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") - echo -ne "downloading ${filename}..." - else - echo -ne " fetching ${filename}...\c" - curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) - fi - local exitcode=$? - if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - if [ -f "${scriptlog}" ]; then - fn_scriptlog "downloading ${filename}: FAIL" - fi - echo "${curlcmd}" | tee -a "${scriptlog}" - echo -e "${fileurl}\n" | tee -a "${scriptlog}" - exit ${exitcode} - else - fn_print_ok_eol_nl - if [ -f "${scriptlog}" ]; then - fn_scriptlog "downloading ${filename}: OK" - fi - fi - # remove trap - trap - INT - else - fn_print_fail_eol_nl - echo "Curl is not installed!" - echo -e "" - exit 1 - fi - # make file executecmd if executecmd is set - if [ "${executecmd}" == "executecmd" ]; then - chmod +x "${filedir}/${filename}" - fi -fi - -if [ -f "${filedir}/${filename}" ]; then - fn_dl_md5 - # run file if run is set - if [ "${run}" == "run" ]; then - source "${filedir}/${filename}" - fi -fi -} - - - -# fileurl: The directory the file is located in teh GitHub repo -# filedir: name of file -# filename: location file to be saved -# executecmd: set to "executecmd" to make file executecmd -# run: Optional, set to run to execute the file -# force: force download of file even if exists -# md5: Checks fail against an md5 sum - - -# Fetches files from the github repo -fn_fetch_file_github(){ -github_file_url_dir="${1}" -github_file_url_name="${2}" -githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -fileurl="${githuburl}" -filedir="${3}" -filename="${github_file_url_name}" -executecmd="${4:-0}" -run="${5:-0}" -force="${6:-0}" -md5="${7:-0}" -fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" -} - - -# Fetches functions -fn_fetch_function(){ -github_file_url_dir="lgsm/functions" # github dir containing the file -github_file_url_name="${functionfile}" # name of the github file -githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -fileurl="${githuburl}" -filedir="${functionsdir}" -filename="${github_file_url_name}" -executecmd="executecmd" -run="run" -force="noforce" -md5="nomd5" -fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" -} \ No newline at end of file diff --git a/functions/core_functions.sh b/functions/core_functions.sh deleted file mode 100644 index 8f59a57fb..000000000 --- a/functions/core_functions.sh +++ /dev/null @@ -1,454 +0,0 @@ -#!/bin/bash -# LGSM core_functions.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="270216" - -# Description: Defines all functions to allow download and execution of functions using fn_fetch_function. -# This function is called first before any other function. Without this file other functions would not load. - -# Code/functions for legacy servers - -fn_functions(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fn_getopt(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -# fn_fetch_core_dl also placed here to allow legecy servers to still download core functions -if [ -z "${lgsmdir}" ]; then - lgsmdir="${rootdir}/lgsm" - functionsdir="${lgsmdir}/functions" -fi - -fn_fetch_core_dl(){ -github_file_url_dir="lgsm/functions" -github_file_url_name="${functionfile}" -filedir="${functionsdir}" -filename="${github_file_url_name}" -githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -# If the file is missing, then download -if [ ! -f "${filedir}/${filename}" ]; then - if [ ! -d "${filedir}" ]; then - mkdir -p "${filedir}" - fi - echo -e " fetching ${filename}...\c" - # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" - for curlcmd in ${curlpaths} - do - if [ -x "${curlcmd}" ]; then - break - fi - done - # If curl exists download file - if [ "$(basename ${curlcmd})" == "curl" ]; then - curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curlfetch}" - echo -e "${githuburl}\n" - exit 1 - else - echo -e "\e[0;32mOK\e[0m" - fi - else - echo -e "\e[0;31mFAIL\e[0m\n" - echo "Curl is not installed!" - echo -e "" - exit 1 - fi - chmod +x "${filedir}/${filename}" -fi -source "${filedir}/${filename}" -} - - -# Core - -core_dl.sh(){ -# Functions are defined in core_functions.sh. -functionfile="${FUNCNAME}" -fn_fetch_core_dl -} - -core_getopt.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_core_dl -} - -core_messages.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_core_dl -} - -core_dl.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_core_dl -} - -# Command - -command_console.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_debug.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_details.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_email_test.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_backup.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_monitor.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_start.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_stop.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_validate.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_install.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_fastdl.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -command_ts3_server_pass.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fn_restart(){ -local modulename="Restarting" -info_config.sh -if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "${servername}" -fi -command_stop.sh -command_start.sh -} - - -# Checks - -check.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_config.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_deps.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_ip.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_logs.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_root.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_steamcmd.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_system_dir.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_tmux.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Compress - -compress_unreal2_maps.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -compress_ut99_maps.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Dev - -command_dev_debug.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_dev_detect_deps.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Fix - -fix.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_arma3.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_csgo.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_dst.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_ins.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_steamcmd.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_glibc.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_ro.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_kf.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_ut2k4.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Info - -info_config.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -info_distro.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -info_glibc.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -info_ts3status.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Email - -email.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -# Logs - -logs.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Monitor - -monitor_gsquery.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -# Update - -update_check.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_update_functions.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -update_dl.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fn_update_functions.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# -## Installer functions -# - -fn_autoinstall(){ -autoinstall=1 -command_install.sh -} - -install_complete.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_config.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_gsquery.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_gslt.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_header.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_logs.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_retry.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_server_dir.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} -install_server_files.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_steamcmd.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_ts3.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_ts3db.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_ut2k4.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_dl_ut2k4.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_ut2k4_key.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_ut99.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -# Calls on-screen messages -core_messages.sh - -#Calls file downloader -core_dl.sh diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh deleted file mode 100644 index e035f0c3c..000000000 --- a/functions/core_getopt.sh +++ /dev/null @@ -1,441 +0,0 @@ -#!/bin/bash -# LGSM core_getopt.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="070116" - -# Description: getopt arguments. - -fn_getopt_generic(){ -case "$getopt" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - fn_restart;; - u|update) - update_check.sh;; - fu|force-update|update-restart) - forceupdate=1; - update_check.sh;; - uf|update-functions) - command_update_functions.sh;; - v|validate) - command_validate.sh;; - m|monitor) - command_monitor.sh;; - et|email-test) - command_email_test.sh;; - d|details) - command_details.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - dd|depsdetect) - command_dev_detect_deps.sh;; - *) - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "\e[93mCommands\e[0m" - { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD." - echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - } | column -s $'\t' -t - esac -exit -} - -fn_getopt_teamspeak3(){ -case "$getopt" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - fn_restart;; - u|update) - update_check.sh;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - et|email-test) - command_email_test.sh;; - d|details) - command_details.sh;; - b|backup) - command_backup.sh;; - pw|change-password) - command_ts3_server_pass.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - dd|depsdetect) - command_dev_detect_deps.sh;; - *) - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "\e[93mCommands\e[0m" - { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate\t\e[0mChecks and applies updates from teamspeak.com." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mchange-password\t\e[0mChanges TS3 serveradmin password." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - } | column -s $'\t' -t - esac -exit -} - -fn_getopt_mumble(){ -case "$getopt" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - fn_restart;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - et|email-test) - command_email_test.sh;; - b|backup) - command_backup.sh;; - dev|dev-debug) - command_dev_debug.sh;; - console) - command_console.sh;; - d|debug) - command_debug.sh;; - dd|depsdetect) - command_dev_detect_deps.sh;; - *) - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "\e[93mCommands\e[0m" - { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - } | column -s $'\t' -t - esac -exit -} - -fn_getopt_gmodserver(){ -case "$getopt" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - fn_restart;; - u|update) - update_check.sh;; - fu|force-update|update-restart) - forceupdate=1; - update_check.sh;; - uf|update-functions) - command_update_functions.sh;; - v|validate) - command_validate.sh;; - m|monitor) - command_monitor.sh;; - et|email-test) - command_email_test.sh;; - d|details) - command_details.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - dd|depsdetect) - command_dev_detect_deps.sh;; - fd|fastdl) - command_fastdl.sh;; - *) - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "\e[93mCommands\e[0m" - { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD." - echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - echo -e "\e[34mfastdl\t\e[0mGenerates or update a FastDL folder for your server." - } | column -s $'\t' -t - esac -exit -} - -fn_getopt_unreal(){ -case "$getopt" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - fn_restart;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - et|email-test) - command_email_test.sh;; - d|details) - command_details.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - mc|map-compressor) - compress_ut99_maps.sh;; - dd|depsdetect) - command_dev_detect_deps.sh;; - *) - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "\e[93mCommands\e[0m" - { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." - } | column -s $'\t' -t - esac -exit -} - - -fn_getopt_unreal2(){ -case "$getopt" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - fn_restart;; - u|update) - update_check.sh;; - fu|force-update|update-restart) - forceupdate=1; - update_check.sh;; - uf|update-functions) - command_update_functions.sh;; - v|validate) - command_validate.sh;; - m|monitor) - command_monitor.sh;; - et|email-test) - command_email_test.sh;; - d|details) - command_details.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - dd|depsdetect) - command_dev_detect_deps.sh;; - mc|map-compressor) - compress_unreal2_maps.sh;; - *) - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "\e[93mCommands\e[0m" - { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD." - echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." - } | column -s $'\t' -t - esac -exit -} - - -fn_getopt_ut2k4(){ -case "$getopt" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - fn_restart;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - et|email-test) - command_email_test.sh;; - d|details) - command_details.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - sck|server-cd-key) - install_ut2k4_key.sh;; - mc|map-compressor) - compress_unreal2_maps.sh;; - dd|depsdetect) - command_dev_detect_deps.sh;; - *) - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "\e[93mCommands\e[0m" - { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - echo -e "\e[34mserver-cd-key\t\e[0mAdd your server cd key" - echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." - } | column -s $'\t' -t - esac -exit -} - -if [ "${gamename}" == "Mumble" ]; then - fn_getopt_mumble -elif [ "${gamename}" == "Teamspeak 3" ]; then - fn_getopt_teamspeak3 -elif [ "${gamename}" == "Garry's Mod" ]; then - fn_getopt_gmodserver -elif [ "${engine}" == "unreal2" ]; then - if [ "${gamename}" == "Unreal Tournament 2004" ]; then - fn_getopt_ut2k4 - else - fn_getopt_unreal2 - fi -elif [ "${engine}" == "unreal" ]; then - fn_getopt_unreal -else - fn_getopt_generic -fi diff --git a/functions/core_messages.sh b/functions/core_messages.sh deleted file mode 100644 index 54b245193..000000000 --- a/functions/core_messages.sh +++ /dev/null @@ -1,204 +0,0 @@ -#!/bin/bash -# LGSM fn_messages function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="380216" - -# Description: Defines on-screen messages such as [ OK ] and how script logs look. - -# nl: new line: message is following by a new line -# eol: end of line: message is placed at the end of the current line - -# Date, servicename & module details displayed in log files. -# e.g Feb 28 14:56:58 ut99-server: Monitor: -fn_scriptlog(){ - if [ -n "${modulename}" ]; then - echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${modulename}: ${1}" >> "${scriptlog}" - else - echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${1}" >> "${scriptlog}" - fi -} - -# [ FAIL ] -fn_print_fail(){ - if [ -n "${modulename}" ]; then - echo -en "\r\033[K[\e[0;31m FAIL \e[0m] ${modulename} ${servicename}: $@" - else - echo -en "\r\033[K[\e[0;31m FAIL \e[0m] $@" - fi -} - -fn_print_fail_nl(){ - if [ -n "${modulename}" ]; then - echo -en "\r\033[K[\e[0;31m FAIL \e[0m] ${modulename} ${servicename}: $@" - else - echo -en "\r\033[K[\e[0;31m FAIL \e[0m] $@" - fi - sleep 1 - echo -en "\n" -} - -# [ OK ] -fn_print_ok(){ - if [ -n "${modulename}" ]; then - echo -en "\r\033[K[\e[0;32m OK \e[0m] ${modulename} ${servicename}: $@" - else - echo -en "\r\033[K[\e[0;32m OK \e[0m] $@" - fi -} - -fn_print_ok_nl(){ - if [ -n "${modulename}" ]; then - echo -en "\r\033[K[\e[0;32m OK \e[0m] ${modulename} ${servicename}: $@" - else - echo -en "\r\033[K[\e[0;32m OK \e[0m] $@" - fi - sleep 1 - echo -en "\n" -} - -# [ INFO ] -fn_print_info(){ - if [ -n "${modulename}" ]; then - echo -en "\r\033[K[\e[0;36m INFO \e[0m] ${modulename} ${servicename}: $@" - else - echo -en "\r\033[K[\e[0;36m INFO \e[0m] $@" - fi -} - -fn_print_info_nl(){ - if [ -n "${modulename}" ]; then - echo -en "\r\033[K[\e[0;36m INFO \e[0m] ${modulename} ${servicename}: $@" - else - echo -en "\r\033[K[\e[0;36m INFO \e[0m] $@" - fi - sleep 1 - echo -en "\n" -} - -# [ WARN ] -fn_print_warn(){ - if [ -n "${modulename}" ]; then - echo -en "\r\033[K[\e[1;33m WARN \e[0m] ${modulename} ${servicename}: $@" - else - echo -en "\r\033[K[\e[1;33m WARN \e[0m] $@" - fi -} - -fn_print_warn_nl(){ - if [ -n "${modulename}" ]; then - echo -en "\r\033[K[\e[1;33m WARN \e[0m] ${modulename} ${servicename}: $@" - else - echo -en "\r\033[K[\e[1;33m WARN \e[0m] $@" - fi - sleep 1 - echo -en "\n" -} - -# [ .... ] -fn_print_dots(){ - if [ -n "${modulename}" ]; then - echo -en "\r\033[K[ .... ] ${modulename} ${servicename}: $@" - else - echo -en "\r\033[K[ .... ] $@" - fi -} - -# Complete! -fn_print_complete(){ - echo -en "\e[0;32mComplete!\e[0m $@" -} - -fn_print_complete_nl(){ - echo -e "\e[0;32mComplete!\e[0m $@" -} - -# Warning! -fn_print_warning(){ - echo -en "\e[0;33mWarning!\e[0m $@" -} - -fn_print_warning_nl(){ - echo -e "\e[0;33mWarning!\e[0m $@" -} - -# Failure! -fn_print_failure(){ - echo -en "\e[0;31mFailure!\e[0m $@" -} - -fn_print_failure_nl(){ - echo -e "\e[0;31mFailure!\e[0m $@" -} - -# Error! -fn_print_error(){ - echo -en "\e[0;31mError!\e[0m $@" -} - -fn_print_error_nl(){ - echo -e "\e[0;31mError!\e[0m $@" -} - -# Infomation! -fn_print_infomation(){ - echo -en "\e[0;36mInfomation!\e[0m $@" -} - -fn_print_infomation_nl(){ - echo -e "\e[0;36mInfomation!\e[0m $@" -} - -# FAIL for end of line -fn_print_ok_eol(){ - echo -en "\e[0;32mOK\e[0m" -} - -fn_print_ok_eol_nl(){ - echo -e "\e[0;32mOK\e[0m" -} - -# FAIL for end of line -fn_print_fail_eol(){ - echo -en "\e[0;31mFAIL\e[0m" -} - -fn_print_fail_eol_nl(){ - echo -e "\e[0;31mFAIL\e[0m" -} - -# QUERYING for end of line -fn_print_querying_eol(){ - echo -en "\e[0;36mQUERYING\e[0m" -} - -fn_print_querying_eol_nl(){ - echo -e "\e[0;36mQUERYING\e[0m" -} - -# CHECKING for end of line -fn_print_checking_eol(){ - echo -en "\e[0;36mCHECKING\e[0m" -} - -fn_print_checking_eol_nl(){ - echo -e "\e[0;36mCHECKING\e[0m" -} - -# CANCELED for end of line -fn_print_canceled_eol(){ - echo -en "\e[0;33mCANCELED\e[0m" -} - -fn_print_canceled_eol_nl(){ - echo -e "\e[0;33mCANCELED\e[0m" -} - -# REMOVED for end of line -fn_print_removed_eol(){ - echo -en "\e[0;31mREMOVED\e[0m" -} - -fn_print_removed_eol_nl(){ - echo -e "\e[0;31mREMOVED\e[0m" -} \ No newline at end of file diff --git a/functions/email.sh b/functions/email.sh deleted file mode 100644 index 174ed3ff6..000000000 --- a/functions/email.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash -# LGSM email.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="020216" - -# Description: Sends email notification if monitor picks up a failure. - -local modulename="Email" -fn_print_dots "Sending notification to ${email}" -info_distro.sh -info_config.sh -check_ip.sh -fn_parms -{ - echo -e "========================================\n${servicename} details\n========================================" - echo -e "Service name: ${servicename}" - echo -e "Server name: ${servername}" - echo -e "Game name: ${gamename}" - echo -e "Server IP: ${ip}:${port}" - echo -e "Failure reason: ${failurereason}" - echo -e "Action Taken: ${actiontaken}\n" - echo -e "" - echo -e "========================================\nDistro Details\n========================================" - echo -e "Date: $(date)" - echo -e "Distro: ${os}" - echo -e "Arch: ${arch}" - echo -e "Kernel: ${kernel}" - echo -e "Hostname: $HOSTNAME" - echo -e "tmux: ${tmuxv}" - echo -e "GLIBC: ${glibcv}" - echo -e "" - echo -e "========================================\nPerformance\n========================================" - echo -e "Uptime: ${days}d, ${hours}h, ${minutes}m" - echo -e "Avg Load: ${load}" - echo -e "" - echo -e "Mem: total used free" - echo -e "Physical: ${physmemtotal} ${physmemused} ${physmemfree}" - echo -e "Swap: ${swaptotal}${swapused} ${swapfree}" - echo -e "" - echo -e "========================================\nStorage\n========================================" - echo -e "\e[34mFilesystem:\t\e[0m${filesystem}" - echo -e "\e[34mTotal:\t\e[0m${totalspace}" - echo -e "\e[34mUsed:\t\e[0m${usedspace}" - echo -e "\e[34mAvailable:\t\e[0m${availspace}" - echo -e "\e[34mServerfiles:\t\e[0m${filesdirdu}" - if [ -d "${backupdir}" ]; then - echo -e "\e[34mBackups:\t\e[0m${backupdirdu}" - fi - echo -e "" - echo -e "========================================\nCommand-line Parameters\n========================================" - echo -e "${executable} ${parms}" - echo -e "" - echo -e "========================================\nLogs\n========================================" -}| sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee "${scriptlogdir}/${servicename}-email.log" > /dev/null 2>&1 -echo -e "\n\n Script log\n===================" >> "${emaillog}" -tail -25 "${scriptlog}" >> "${emaillog}" -if [ -n "${consolelog}" ]; then - echo -e "\n\n Console log\n====================" >> "${emaillog}" - tail -25 "${consolelog}" | awk '{ sub("\r$", ""); print }' >> "${emaillog}" -fi -if [ -n "${gamelogdir}" ]; then - echo -e "\n\n Server log\n====================" >> "${emaillog}" - tail "${gamelogdir}"/* | grep -v "==>" | sed '/^$/d' | tail -25 >> "${emaillog}" -fi -mail -s "${subject}" ${email} < "${emaillog}" -fn_print_ok_nl "Sending notification to ${email}" -fn_scriptlog "Sent notification to ${email}" \ No newline at end of file diff --git a/functions/fix.sh b/functions/fix.sh deleted file mode 100644 index e4723e649..000000000 --- a/functions/fix.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -# LGSM fix.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="010316" - -# Description: Overall function for managing fixes. -# Runs functions that will fix an issue. - -# Messages that are displayed for some fixes -fn_fix_msg_start(){ - fn_print_dots "Applying ${fixname} fix: ${gamename}" - sleep 1 - fn_print_info "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Applying ${fixname} fix: ${gamename}" - sleep 1 -} - -fn_fix_msg_end(){ - if [ $? -ne 0 ]; then - fn_print_fail_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Failure! Applying ${fixname} fix: ${gamename}" - else - fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" - fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" - fi -} - - -# Fixes that are run on start -if [ "${function_selfname}" != "command_install.sh" ]; then - if [ -n "${appid}" ]; then - fix_steamcmd.sh - fi - - if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then - fix_csgo.sh - elif [ "${gamename}" == "Don't Starve Together" ]; then - fix_dst.sh - elif [ "${gamename}" == "Insurgency" ]; then - fix_ins.sh - elif [ "${gamename}" == "ARMA 3" ]; then - fix_arma3.sh - fi -fi - -# Fixes that are run on install only. -if [ "${function_selfname}" == "command_install.sh" ]; then - fix_glibc.sh - if [ "${gamename}" == "Killing Floor" ]; then - echo "" - echo "Applying ${gamename} Server Fixes" - echo "=================================" - sleep 1 - fix_kf.sh - elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then - echo "" - echo "Applying ${gamename} Server Fixes" - echo "=================================" - sleep 1 - fix_ro.sh - elif [ "${gamename}" == "Unreal Tournament 2004" ]; then - echo "" - echo "Applying ${gamename} Server Fixes" - echo "=================================" - sleep 1 - fix_ut2k4.sh - elif [ "${gamename}" == "Unreal Tournament 99" ]; then - echo "" - echo "Applying ${gamename} Server Fixes" - echo "=================================" - sleep 1 - fix_ut99.sh - fi -fi diff --git a/functions/fix_arma3.sh b/functions/fix_arma3.sh deleted file mode 100644 index ffc607ed6..000000000 --- a/functions/fix_arma3.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# LGSM fix_arma3.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="301215" - -# Fixes: server not always creating steam_appid.txt file. -if [ ! -d "${rootdir}/.local/share/Arma\ 3" ]; then - fixname="20150 Segmentation fault (core dumped)" - fn_fix_msg_start - mkdir -p "${rootdir}/.local/share/Arma\ 3" - fn_fix_msg_end -fi \ No newline at end of file diff --git a/functions/fix_csgo.sh b/functions/fix_csgo.sh deleted file mode 100644 index f968640ce..000000000 --- a/functions/fix_csgo.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# LGSM fix_csgo.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="010316" - -# Description: Resolves various issues with csgo. - -# Fixes: server not always creating steam_appid.txt file. -if [ ! -f "${filesdir}/steam_appid.txt" ]; then - fixname="730 steam_appid.txt" - fn_fix_msg_start - echo -n "730" >> "${filesdir}/steam_appid.txt" - fn_fix_msg_end -fi - -# Fixes: Error parsing BotProfile.db - unknown attribute 'Rank'". -if ! grep -q "//Rank" "${systemdir}/botprofile.db" > /dev/null 2>&1; then - fixname="botprofile.db" - fn_fix_msg_start - sed -i 's/\tRank/\t\/\/Rank/g' "${systemdir}/botprofile.db" > /dev/null 2>&1 - fn_fix_msg_end -fi - -# Fixes: Unknown command "cl_bobamt_vert". -if ! grep -q "//exec default" "${servercfgdir}/valve.rc" > /dev/null 2>&1 || ! grep -q "//exec joystick" "${servercfgdir}/valve.rc" > /dev/null 2>&1; then - fixname="valve.rc" - fn_fix_msg_start - sed -i 's/exec default.cfg/\/\/exec default.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1 - sed -i 's/exec joystick.cfg/\/\/exec joystick.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1 - fn_fix_msg_end -fi - -# Fixes: workshop map issue. -# http://forums.steampowered.com/forums/showthread.php?t=3170366. -if [ -f "${systemdir}/subscribed_collection_ids.txt" ]||[ -f "${systemdir}/subscribed_file_ids.txt" ]||[ -f "${systemdir}/ugc_collection_cache.txt" ]; then - fixname="workshop map" - fn_fix_msg_start - rm -f "${systemdir}/subscribed_collection_ids.txt" - rm -f "${systemdir}/subscribed_file_ids.txt" - rm -f "${systemdir}/ugc_collection_cache.txt" - fn_fix_msg_end -fi \ No newline at end of file diff --git a/functions/fix_dst.sh b/functions/fix_dst.sh deleted file mode 100644 index 5dadf4b78..000000000 --- a/functions/fix_dst.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# LGSM fix_dst.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="010316" - -# Description: Resolves various issues with Dont Starve together. - -# Fixes: ./dontstarve_dedicated_server_nullrenderer: ./lib32/libcurl-gnutls.so.4: no version information available (required by ./dontstarve_dedicated_server_nullrenderer) -# Issue only occures on CentOS as libcurl-gnutls.so.4 is called libcurl.so.4 on CentOS. -if [ -f "/etc/redhat-release" ] && [ ! -f "${filesdir}/bin/lib32/libcurl-gnutls.so.4" ]; then - fixname="libcurl-gnutls.so.4 missing" - fn_fix_msg_start - ln -s "/usr/lib/libcurl.so.4" "${filesdir}/bin/lib32/libcurl-gnutls.so.4" - fn_fix_msg_end -fi \ No newline at end of file diff --git a/functions/fix_glibc.sh b/functions/fix_glibc.sh deleted file mode 100644 index c46a1b5a0..000000000 --- a/functions/fix_glibc.sh +++ /dev/null @@ -1,144 +0,0 @@ -#!/bin/bash -# LGSM fix_glibc.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="020116" - -fn_glibcfixmsg(){ -echo "" -echo "GLIBC Fix required" -echo "============================" -sleep 1 -fn_print_warning_nl "${gamename} requires GLIBC_${glibcversion} or above" -sleep 1 -echo "" -echo -e "Currently installed:\e[0;31m GLIBC_$(ldd --version |grep ldd|awk '{print $NF}')\e[0;39m" -echo -e "Required: =>\e[0;32m GLIBC_${glibcversion}\e[0;39m" -echo "" -sleep 1 -echo "The installer will now detect and download the required files to allow ${gamename} server to run on a distro with less than GLIBC_${glibcversion}." -echo "note: This will NOT upgrade GLIBC on your system." -echo "" -echo "http://gameservermanagers.com/glibcfix" -sleep 1 -echo "" -echo -en "loading required files.\r" -sleep 1 -echo -en "loading required files..\r" -sleep 1 -echo -en "loading required files...\r" -sleep 1 -echo -en "\n" -} - -# if ldd command not detected -if [ -z $(command -v ldd) ]; then - echo "" - fn_print_failure_nl "GLIBC is not detected" - sleep 1 - echo "Install GLIBC and retry installation." - sleep 1 - echo "" - while true; do - read -e -i "y" -p "Continue install? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; - esac - done -# if Glibc less than 1.15 -elif [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt 215 ]; then - # Blade Symphony - if [ "${gamename}" == "Blade Symphony" ]; then - glibcversion="2.15" - fn_glibcfixmsg - cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6" - # Dont Starve Together - elif [ "${gamename}" == "Don't Starve Together" ]; then - glibcversion="2.15" - fn_glibcfixmsg - cd "${filesdir}/bin/lib32/" - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/DontStarveTogether/dependencies/libc.so.6 - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/DontStarveTogether/dependencies/libpthread.so.0 - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/DontStarveTogether/dependencies/librt.so.1 - # Double Action: Boogaloo - elif [ "${gamename}" == "Double Action: Boogaloo" ]; then - glibcversion="2.15" - fn_glibcfixmsg - cd "${filesdir}" - wget -nv -N https://github.com/dgibbs64/linuxgsm/blob/master/DoubleActionBoogaloo/dependencies/libm.so.6 - # Fistful of Frags - elif [ "${gamename}" == "Fistful of Frags" ]; then - glibcversion="2.15" - fn_glibcfixmsg - cd "${filesdir}" - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/FistfulOfFrags/dependencies/libm.so.6 - # Garry's Mod - elif [ "${gamename}" == "Garry's Mod" ]; then - glibcversion="2.15" - fn_glibcfixmsg - cd "${filesdir}/bin" - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/GarrysMod/dependencies/libc.so.6 - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/GarrysMod/dependencies/libm.so.6 - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/GarrysMod/dependencies/libpthread.so.0 - cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6" - # Insurgency - elif [ "${gamename}" == "Insurgency" ]; then - glibcversion="2.15" - fn_glibcfixmsg - cd "${filesdir}/bin" - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libc.so.6 - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libm.so.6 - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/librt.so.1 - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libpthread.so.0 - elif [ "${gamename}" == "Left 4 Dead" ]; then - glibcversion="2.3.6" - fn_glibcfixmsg - cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/bin/libstdc++.so.6" - # Natural Selection 2 - elif [ "${gamename}" == "Natural Selection 2" ]; then - glibcversion="2.15" - fn_glibcfixmsg - cd "${filesdir}" - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/NaturalSelection2/dependencies/libm.so.6 - cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6" - # NS2: Combat - elif [ "${gamename}" == "NS2: Combat" ]; then - glibcversion="2.15" - fn_glibcfixmsg - cd "${filesdir}" - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/NS2Combat/dependencies/libm.so.6 - cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6" - # No More Room in Hell - elif [ "${gamename}" == "No More Room in Hell" ]; then - glibcversion="2.15" - fn_glibcfixmsg - cd "${filesdir}" - wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/NoMoreRoomInHell/dependencies/libm.so.6 - cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6" - # if Glibc less than 1.13 - elif [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt 213 ]; then - # ARMA 3 - if [ "${gamename}" == "ARMA 3" ]; then - glibcversion="2.13" - fn_glibcfixmsg - cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6" - # Just Cause 2 - elif [ "${gamename}" == "Just Cause 2" ]; then - glibcversion="2.13" - fn_glibcfixmsg - cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6" - # Serious Sam 3: BFE - elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then - glibcversion="2.13" - fn_glibcfixmsg - cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/Bin/libstdc++.so.6" - else - : # Else glibcfix not required. - fi - else - : #Else glibcfix not required. - fi -fi -sleep 1 diff --git a/functions/fix_ro.sh b/functions/fix_ro.sh deleted file mode 100644 index 9364d3e01..000000000 --- a/functions/fix_ro.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# LGSM fix_ro.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="010316" - -# Description: Resolves various issues with red orchestra. - -echo "Applying WebAdmin ROOst.css fix." -echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" -sed -i 's/none}/none;/g' "${filesdir}/Web/ServerAdmin/ROOst.css" -sed -i 's/underline}/underline;/g' "${filesdir}/Web/ServerAdmin/ROOst.css" -sleep 1 -echo "Applying WebAdmin CharSet fix." -echo "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1" -sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/uweb.int" -sleep 1 -echo "applying server name fix." -sleep 1 -echo "forcing server restart..." -sleep 1 -command_start.sh -sleep 5 -command_stop.sh -command_start.sh -sleep 5 -command_stop.sh \ No newline at end of file diff --git a/functions/fix_steamcmd.sh b/functions/fix_steamcmd.sh deleted file mode 100644 index 86feb9e2c..000000000 --- a/functions/fix_steamcmd.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# LGSM fix_steamcmd.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="010316" - -# Description: fixes various issues related to steamCMD. - -# Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so. -if [ ! -f "${HOME}/.steam/sdk32/steamclient.so" ]; then - fixname="steamclient.so general" - fn_fix_msg_start - mkdir -pv "${HOME}/.steam/sdk32" >> "${scriptlog}" - cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so" >> "${scriptlog}" - fn_fix_msg_end -fi - -if [ "${gamename}" == "Serious Sam 3: BFE" ]; then - # Fixes: .steam/bin32/libsteam.so: cannot open shared object file: No such file or directory - if [ ! -f "${HOME}/.steam/bin32/libsteam.so" ]; then - fixname="libsteam.so" - fn_fix_msg_start - mkdir -pv "${HOME}/.steam/bin32" >> "${scriptlog}" - cp -v "${filesdir}/Bin/libsteam.so" "${HOME}/.steam/bin32/libsteam.so" >> "${scriptlog}" - fn_fix_msg_end - fi -elif [ "${gamename}" == "Hurtworld" ]; then - # Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so. - if [ ! -f "${filesdir}/Hurtworld_Data/Plugins/x86/steamclient.so" ]; then - fixname="steamclient.so x86" - fn_fix_msg_start - cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${filesdir}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${scriptlog}" - fn_fix_msg_end - fi - if [ ! -f "${filesdir}/Hurtworld_Data/Plugins/x86_64/steamclient.so" ]; then - fixname="steamclient.so x86_64" - fn_fix_msg_start - cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${filesdir}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${scriptlog}" - fn_fix_msg_end - fi -fi diff --git a/functions/fix_ut2k4.sh b/functions/fix_ut2k4.sh deleted file mode 100644 index 363aa5d56..000000000 --- a/functions/fix_ut2k4.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# LGSM fix_ut2k4.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="010316" - -# Description: Resolves various issues with unreal tournament 2004. - -echo "applying WebAdmin ut2003.css fix." -echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" -sed -i 's/none}/none;/g' "${filesdir}/Web/ServerAdmin/ut2003.css" -sed -i 's/underline}/underline;/g' "${filesdir}/Web/ServerAdmin/ut2003.css" -sleep 1 -echo "applying WebAdmin CharSet fix." -echo "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1" -sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int" -sleep 1 -echo "applying server name fix." -sleep 1 -echo "forcing server restart..." -sleep 1 -command_start.sh -sleep 5 -command_stop.sh -command_start.sh -sleep 5 -command_stop.sh \ No newline at end of file diff --git a/functions/fix_ut99.sh b/functions/fix_ut99.sh deleted file mode 100644 index f7792fb44..000000000 --- a/functions/fix_ut99.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -# LGSM fix_ut99.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" -echo "${servercfgfullpath}" -echo "enabling UdpServerUplink." -{ -echo "[IpServer.UdpServerUplink]" -echo "DoUplink=True" -echo "UpdateMinutes=1" -echo "MasterServerAddress=unreal.epicgames.com" -echo "MasterServerPort=27900" -echo "Region=0" -}| tee -a "${servercfgfullpath}" > /dev/null 2>&1 -sleep 1 -echo "removing dead gamespy.com master server." -sed -i '/master0.gamespy.com/d' "${servercfgfullpath}" -sleep 1 -echo "removing dead mplayer.com master server." -sed -i '/master.mplayer.com/d' "${servercfgfullpath}" -sleep 1 -echo "inserting qtracker.com master server." -sed -i '65i\ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.qtracker.com MasterServerPort=27900' "${servercfgfullpath}" -echo "" \ No newline at end of file diff --git a/functions/fn_update_functions b/functions/fn_update_functions deleted file mode 100644 index 5fbb28975..000000000 --- a/functions/fn_update_functions +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# LGSM fn_update_functions.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="230116" - -# Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub. - -fn_print_dots "Updating functions" -fn_scriptlog "Updating functions" -sleep 1 -echo -ne "\n" -rm -rfv "${rootdir}/functions/"* -exitcode=$? -if [ "${exitcode}" == "0" ]; then - fn_print_ok "Updating functions" - fn_scriptlog "Success! Updating functions" -else - fn_print_fail "Updating functions" - fn_scriptlog "Failure! Updating functions" -fi -echo -ne "\n" \ No newline at end of file diff --git a/functions/gsquery.py b/functions/gsquery.py deleted file mode 100644 index b132038e3..000000000 --- a/functions/gsquery.py +++ /dev/null @@ -1,125 +0,0 @@ -#! /usr/bin/env python -# -*- coding: utf-8 -*- -# Game Server Query -# Author: Anonymous & Daniel Gibbs -# # Website: http://gameservermanagers.com -# Version: 190216 - -import optparse -import socket -import sys - -class GameServer: - def __init__( self, options, arguments ): - self.option = options - self.argument = arguments - # - self.server_response_timeout = 5 - self.default_buffer_length = 1024 - # - if self.option.engine == 'source': - self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - elif self.option.engine == 'goldsource': - self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - elif self.option.engine == 'spark': - self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - elif self.option.engine == 'realvirtuality': - self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - elif self.option.engine == 'unity3d': - self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - elif self.option.engine == 'idtech3': - self.query_prompt_string = '\xFF\xFF\xFF\xFFTSource Engine Query\0' - elif self.option.engine == 'unreal': - self.query_prompt_string = '\x5C\x69\x6E\x66\x6F\x5C' - elif self.option.engine == 'unreal2': - self.query_prompt_string = '\x79\x00\x00\x00\x00' - elif self.option.engine == 'avalanche': - self.query_prompt_string = '\xFE\xFD\x09\x10\x20\x30\x40' - self.connected = False - self.response = None - self.sanity_checks() - - def fatal_error( self, error_message, error_code=1 ): - sys.stderr.write( 'ERROR: ' + str(error_message) + '\n' ) - sys.exit( error_code ) - - def exit_success( self, success_message='' ): - sys.stdout.write( 'OK: ' + str(success_message) + '\n' ) - sys.exit( 0 ) - - def responding( self ): - # Connect. - connection = socket.socket( socket.AF_INET, socket.SOCK_DGRAM ) - connection.settimeout( self.server_response_timeout ) - try: - self.connected = connection.connect( ( self.option.address, int(self.option.port) ) ) - except socket.timeout: - self.fatal_error( 'Request timed out', 1 ) - except: - self.fatal_error( 'Unable to connect', 1 ) - # Send. - connection.send( self.query_prompt_string ) - # Receive. - try: - self.response = connection.recv( self.default_buffer_length ) - except socket.error: - self.fatal_error( 'Unable to receive', 2 ) - connection.close() - # Response. - if self.response == None: - self.fatal_error( 'No response', 3 ) - if len( self.response ) < 10 : - sys.exit( 'Short response.', 3 ) - else: - self.exit_success( str( self.response ) ) - - def sanity_checks( self ): - if not self.option.address: - self.fatal_error( 'No IPv4 address supplied.', 4 ) - if not self.option.port: - self.fatal_error( 'No port supplied.', 4 ) - -if __name__ == '__main__': - parser = optparse.OptionParser( - usage = 'usage: python %prog [options]', - version = '%prog 0.0.1' - ) - parser.add_option( - '-a', '--address', - action = 'store', - dest = 'address', - default = False, - help = 'The IPv4 address of the server.' - ) - parser.add_option( - '-p', '--port', - action = 'store', - dest = 'port', - default = False, - help = 'The IPv4 port of the server.' - ) - parser.add_option( - '-e', '--engine', - action = 'store', - dest = 'engine', - default = False, - help = 'Engine type: avalanche, goldsource, idtech3, realvirtuality, spark, source, unity3d, unreal, unreal2.' - ) - parser.add_option( - '-v', '--verbose', - action = 'store_true', - dest = 'verbose', - default = False, - help = 'Display verbose output.' - ) - parser.add_option( - '-d', '--debug', - action = 'store_true', - dest = 'debug', - default = False, - help = 'Display debugging output.' - ) - options, arguments = parser.parse_args() - # - server = GameServer( options, arguments ) - server.responding() diff --git a/functions/info_config.sh b/functions/info_config.sh deleted file mode 100644 index d9d5d4dfb..000000000 --- a/functions/info_config.sh +++ /dev/null @@ -1,868 +0,0 @@ -#!/bin/bash -# LGSM info_config.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="010316" - -# Description: Gets specific details from config files. - -## Examples of filtering to get info from config files -# sed 's/foo//g' - remove foo -# tr -cd '[:digit:]' leave only digits -# tr -d '=\"; ' remove selected charectors =\"; -# grep -v "foo" filter out lines that contain foo - -## Just Cause 2 -if [ "${engine}" == "avalanche" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "Name" "${servercfgfullpath}" | sed 's/Name//g' | tr -d '=", \n') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # ip - if [ -f "${servercfgfullpath}" ]; then - # check if the ip exists in the config file. Failing this will fall back to the default. - configipcheck=$(grep "BindIP" "${servercfgfullpath}" | sed 's/BindIP//g' | tr -d '=", \n') - fi - if [ -n "${configipcheck}" ]; then - ip=$(grep "BindIP" "${servercfgfullpath}" | sed 's/BindIP//g' | tr -d '=", \n') - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "Password" "${servercfgfullpath}" | sed 's/Password//g' | tr -d '=", \n') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "MaxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "BindPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - -## Dont Starve Together -elif [ "${engine}" == "dontstarve" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "default_server_name = " "${servercfgfullpath}" | sed 's/default_server_name = //g') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "server_password = " "${servercfgfullpath}" | grep -v "#" | sed 's/server_password = //g') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # game mode - if [ -f "${servercfgfullpath}" ]; then - gamemode=$(grep "game_mode = " "${servercfgfullpath}" | grep -v "#" | sed 's/game_mode = //g') - if [ ! -n "${gamemode}" ]; then - gamemode="NOT SET" - fi - else - gamemode="\e[0;31mUNAVAILABLE\e[0m" - fi - - # tickrate - if [ -f "${servercfgfullpath}" ]; then - tickrate=$(grep "tick_rate" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${tickrate}" ]; then - tickrate="NOT SET" - fi - else - tickrate="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - -## Project Zomboid -elif [ "${engine}" == "projectzomboid" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "PublicName=" "${servercfgfullpath}" | sed 's/PublicName=//g' | tr -d '=", \n') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "DefaultPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - -# Quake Live -elif [ "${engine}" == "idtech3" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "set sv_hostname " "${servercfgfullpath}" | sed 's/set sv_hostname //g' | tr -d '=\"; ') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - - serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/set g_password//g' | tr -d '=\"; '| cut -f1 -d "/") - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # rcon password - rconpassword="${rconpassword}" - if [ -f "${servercfgfullpath}" ]; then - if [ ! -n "${rconpassword}" ]; then - rconpassword="NOT SET" - fi - else - rconpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "set sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - port="${gameport}" - if [ ! -n "${port}" ]; then - port="0" - fi - - # rcon port - if [ ! -n "${rconport}" ]; then - rconport="0" - fi - - # Stats port - if [ ! -n "${statsport}" ]; then - statsport="0" - fi - -# ARMA 3 -elif [ "${engine}" == "realvirtuality" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "hostname" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\<hostname\>//g' | tr -d '=\"; ') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # admin password - if [ -f "${servercfgfullpath}" ]; then - adminpassword=$(grep "passwordAdmin" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\passwordAdmin//g' | tr -d '=\"; ') - if [ ! -n "${adminpassword}" ]; then - adminpassword="NOT SET" - fi - else - adminpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "password =" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\password//g' | tr -d '=\"; ') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ "${port}" != "" ]; then - port=${port} - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # query port - if [ "${port}" != "" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - - # master port - if [ "${port}" != "" ]; then - masterport=$((port + 2)) - fi - if [ ! -n "${masterport}" ]; then - masterport="0" - fi - -# Serious Sam -elif [ "${engine}" == "seriousengine35" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "prj_strMultiplayerSessionName" "${servercfgfullpath}" | sed 's/prj_strMultiplayerSessionName = //g' | tr -d '=\"; ') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # rcon password - if [ -f "${servercfgfullpath}" ]; then - rconpassword=$(grep "rcts_strAdminPassword" "${servercfgfullpath}" | sed 's/rcts_strAdminPassword = //g' | tr -d '=\"; ') - if [ ! -n "${rconpassword}" ]; then - rconpassword="NOT SET" - fi - else - rconpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # game mode - if [ -f "${servercfgfullpath}" ]; then - gamemode=$(grep "gam_idGameMode" "${servercfgfullpath}" | grep -v "#" | sed 's/gam_idGameMode//g' | tr -d '=\"; ') - if [ ! -n "${gamemode}" ]; then - gamemode="NOT SET" - fi - else - gamemode="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "prj_uwPort" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - -# Source Engine Games -elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "hostname" "${servercfgfullpath}" | sed 's/hostname //g' | sed 's/"//g') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed 's/sv_password //g' | sed 's/"//g') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # rcon password - if [ -f "${servercfgfullpath}" ]; then - rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed 's/rcon_password //g' | sed 's/"//g') - if [ ! -n "${rconpassword}" ]; then - rconpassword="NOT SET" - fi - else - rconpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - -# Spark (NS2: Combat) -elif [ "${engine}" == "spark" ]; then - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - -# Teamspeak 3 -elif [ "${gamename}" == "Teamspeak 3" ]; then - - # ip - if [ -f "${servercfgfullpath}" ]; then - # check if the ip exists in the config file. Failing this will fall back to the default. - configipcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') - fi - if [ -n "${configipcheck}" ]; then - ip=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') - fi - - # dbplugin - if [ -f "${servercfgfullpath}" ]; then - dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/\dbplugin=//g') - if [ ! -n "${dbplugin}" ]; then - dbplugin="NOT SET" - fi - else - dbplugin="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="9987" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${queryport}" ]; then - queryport="10011" - fi - - # file port - if [ -f "${servercfgfullpath}" ]; then - fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${fileport}" ]; then - fileport="30033" - fi - -# Teeworlds -elif [ "${engine}" == "teeworlds" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') - if [ ! -n "${servername}" ]; then - servername="unnamed server" - fi - else - servername="unnamed server" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # rcon password - if [ -f "${servercfgfullpath}" ]; then - rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ') - if [ ! -n "${rconpassword}" ]; then - rconpassword="NOT SET" - fi - else - rconpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="8303" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="12" - fi - else - slots="12" - fi - -# Terraria -elif [ "${engine}" == "terraria" ]; then - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - -# 7 Day To Die (unity3d) -elif [ "${gamename}" == "7 Days To Die" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin enabled - if [ -f "${servercfgfullpath}" ]; then - webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${webadminenabled}" ]; then - webadminenabled="NOT SET" - fi - else - webadminenabled="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin port - if [ -f "${servercfgfullpath}" ]; then - webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${webadminport}" ]; then - webadminport="0" - fi - - # webadmin enabled - if [ -f "${servercfgfullpath}" ]; then - webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${webadminenabled}" ]; then - webadminenabled="NOT SET" - fi - else - webadminenabled="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin password - if [ -f "${servercfgfullpath}" ]; then - webadminpass=$(grep "ControlPanelPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${webadminpass}" ]; then - webadminpass="NOT SET" - fi - else - webadminpass="\e[0;31mUNAVAILABLE\e[0m" - fi - - # telnet enabled - if [ -f "${servercfgfullpath}" ]; then - telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${telnetenabled}" ]; then - telnetenabled="NOT SET" - fi - else - telnetenabled="\e[0;31mUNAVAILABLE\e[0m" - fi - - # telnet port - if [ -f "${servercfgfullpath}" ]; then - telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${telnetport}" ]; then - telnetport="0" - fi - - # telnet password - if [ -f "${servercfgfullpath}" ]; then - telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${telnetpass}" ]; then - telnetpass="NOT SET" - fi - else - telnetpass="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # game mode - if [ -f "${servercfgfullpath}" ]; then - gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${gamemode}" ]; then - gamemode="NOT SET" - fi - else - gamemode="\e[0;31mUNAVAILABLE\e[0m" - fi - - # game world - if [ -f "${servercfgfullpath}" ]; then - gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${gameworld}" ]; then - gameworld="NOT SET" - fi - else - gameworld="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - -# Hurtworld (unity3d) -elif [ "${gamename}" == "Hurtworld" ]; then - - # server name - if [ -n "${servername}" ]; then - servername="${servername}" - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - # not available yet - - # slots - if [ -n "${maxplayers}" ]; then - slots="${maxplayers}" - else - slots="NOT SET" - fi - - # game world - if [ -n "${map}" ]; then - gameworld="${map}" - else - gameworld="NO MAP SET" - fi - - # port - if [ -n "${port}" ]; then - port="${port}" - else - port="0" - fi - - # query port - if [ -n "${queryport}" ]; then - queryport="${queryport}" - else - queryport="0" - fi - -# Unreal Tournament -elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "ServerName=" "${servercfgfullpath}" | sed 's/ServerName=//g') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "GamePassword=" "${servercfgfullpath}" | sed 's/GamePassword=//g') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # admin password - if [ -f "${servercfgfullpath}" ]; then - adminpassword=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/AdminPassword=//g') - if [ ! -n "${adminpassword}" ]; then - adminpassword="NOT SET" - fi - else - adminpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "Port=" "${servercfgfullpath}" | grep -v "Master" | grep -v "LAN" | grep -v "Proxy" | grep -v "Listen" | tr -d '\r' | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - - # gamespy query port - if [ -f "${servercfgfullpath}" ]; then - gsqueryport=$(grep "OldQueryPortNumber=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') - fi - if [ ! -n "${gsqueryport}" ]; then - gsqueryport="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - udplinkport=$((port + 2)) - fi - if [ ! -n "${udplinkport}" ]; then - udplinkport="0" - fi - - # webadmin enabled - if [ -f "${servercfgfullpath}" ]; then - webadminenabled=$(grep "bEnabled=" "${servercfgfullpath}" | sed 's/bEnabled=//g' | tr -d '\r') - if [ ! -n "${webadminenabled}" ]; then - webadminenabled="NOT SET" - fi - else - webadminenabled="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin port - if [ -f "${servercfgfullpath}" ]; then - webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') - fi - if [ ! -n "${webadminport}" ]; then - webadminport="0" - fi - - if [ "${engine}" == "unreal" ]; then - - # webadmin user - if [ -f "${servercfgfullpath}" ]; then - webadminuser=$(grep "AdminUsername=" "${servercfgfullpath}" | sed 's/\AdminUsername=//g') - if [ ! -n "${webadminuser}" ]; then - webadminuser="NOT SET" - fi - else - webadminuser="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin password - if [ -f "${servercfgfullpath}" ]; then - webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 2 | grep "AdminPassword=" | sed 's/\AdminPassword=//g') - if [ ! -n "${webadminpass}" ]; then - webadminpass="NOT SET" - fi - else - webadminpass="\e[0;31mUNAVAILABLE\e[0m" - fi - - else - - # webadmin user - if [ -f "${servercfgfullpath}" ]; then - webadminuser=$(grep "AdminName=" "${servercfgfullpath}" | sed 's/\AdminName=//g') - if [ ! -n "${webadminuser}" ]; then - webadminuser="NOT SET" - fi - else - webadminuser="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin password - if [ -f "${servercfgfullpath}" ]; then - webadminpass=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/\AdminPassword=//g') - if [ ! -n "${webadminpass}" ]; then - webadminpass="NOT SET" - fi - else - webadminpass="\e[0;31mUNAVAILABLE\e[0m" - fi - - fi - -# ARK: Survivaial Evolved -elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "SessionName=" "${servercfgfullpath}" | sed 's/SessionName=//g') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "ServerPassword=" "${servercfgfullpath}" | sed 's/ServerPassword=//g') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # admin password - if [ -f "${servercfgfullpath}" ]; then - adminpassword=$(grep "ServerAdminPassword=" "${servercfgfullpath}" | sed 's/ServerAdminPassword=//g') - if [ ! -n "${adminpassword}" ]; then - adminpassword="NOT SET" - fi - else - adminpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "Port=" "${servercfgfullpath}" | grep -v "RCONPort=" | grep -v "QueryPort=" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # rcon port - if [ -f "${servercfgfullpath}" ]; then - rconport=$(grep "RCONPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${rconport}" ]; then - rconport="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$(grep "QueryPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - -fi diff --git a/functions/info_glibc.sh b/functions/info_glibc.sh deleted file mode 100644 index 46c45d904..000000000 --- a/functions/info_glibc.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash -# LGSM info_glibc.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="260216" - -# Description: stores details on servers Glibc requirements. - -if [ "${gamename}" == "Blade Symphony" ]; then - glibcrequired="2.15" - glibcfix="yes" -elif [ "${gamename}" == "BrainBread 2" ]; then - glibcrequired="2.17" -elif [ "${gamename}" == "Double Action: Boogaloo" ]; then - glibcrequired="2.15" - glibcfix="yes" -elif [ "${gamename}" == "Fistful of Frags" ]; then - glibcrequired="2.15" - glibcfix="yes" -elif [ "${gamename}" == "Garry's Mod" ]; then - glibcrequired="2.15" - glibcfix="yes" -elif [ "${gamename}" == "Insurgency" ]; then - glibcrequired="2.15" - glibcfix="yes" -elif [ "${gamename}" == "No More Room in Hell" ]; then - glibcrequired="2.15" - glibcfix="yes" -elif [ "${gamename}" == "Quake Live" ]; then - glibcrequired="2.15" - glibcfix="no" -elif [ "${engine}" == "avalanche" ]; then - glibcrequired="2.13" - glibcfix="yes" -elif [ "${engine}" == "dontstarve" ]; then - glibcrequired="2.15" - glibcfix="no" -elif [ "${engine}" == "projectzomboid" ]; then - glibcrequired="2.15" - glibcfix="yesno" -elif [ "${engine}" == "realvirtuality" ]; then - glibcrequired="2.13" - glibcfix="yes" -elif [ "${engine}" == "seriousengine35" ]; then - glibcrequired="2.13" - glibcfix="yes" -elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - glibcrequired="2.3.6" - glibcfix="no" -elif [ "${engine}" == "spark" ]; then - glibcrequired="2.15" - glibcfix="yes" -elif [ "${engine}" == "starbound" ]; then - glibcrequired="2.12" - glibcfix="no" -elif [ "${engine}" == "unreal" ]; then - glibcrequired="2.1" - glibcfix="no" -elif [ "${engine}" == "unreal2" ]; then - glibcrequired="2.4" - glibcfix="no" -elif [ "${engine}" == "unreal4" ]; then - glibcrequired="2.14" - glibcfix="no" -elif [ "${engine}" == "unity3d" ]; then - glibcrequired="2.15" - glibcfix="no" -else - glibcrequired="UNKNOWN" - glibcfix="no" -fi diff --git a/functions/install_complete.sh b/functions/install_complete.sh deleted file mode 100644 index 5ea9a127b..000000000 --- a/functions/install_complete.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -# LGSM install_complete.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -local modulename="Install" - -if [ "${gamename}" == "Don't Starve Together" ]; then - echo "" - echo "An Authentication Token is required to run this server!" - echo "Follow the instructions in this link to obtain this key" - echo " http://gameservermanagers.com/dst-auth-token" -fi -echo "=================================" -echo "Install Complete!" -fn_scriptlog "Install Complete!" -echo "" -echo "To start server type:" -echo "./${selfname} start" -echo "" diff --git a/functions/install_config.sh b/functions/install_config.sh deleted file mode 100644 index 75ca40618..000000000 --- a/functions/install_config.sh +++ /dev/null @@ -1,349 +0,0 @@ -#!/bin/bash -# LGSM install_config.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="220216" - -local modulename="Install" - -fn_defaultconfig(){ - echo "creating ${servercfg} config file." - cp -v "${servercfgdefault}" "${servercfgfullpath}" - sleep 1 -} - -fn_userinputconfig(){ -# allow user to input server name and password -if [ -z "${autoinstall}" ]; then - echo "" - echo "Configuring ${gamename} Server" - echo "=================================" - sleep 1 - read -p "Enter server name: " servername - read -p "Enter rcon password: " rconpass -else - servername="${servicename}" - rconpass="rconpassword" -fi -echo "changing hostname." -sed -i "s/\"<hostname>\"/\"${servername}\"/g" "${servercfgfullpath}" -sleep 1 -echo "changing rconpassword." -sed -i "s/\"<rconpassword>\"/\"${rconpass}\"/g" "${servercfgfullpath}" -sleep 1 -} - -fn_arma3config(){ -fn_defaultconfig -echo "creating ${networkcfg} config file." -cp -v "${networkcfgdefault}" "${networkcfgfullpath}" -sleep 1 -echo "" -} - -fn_goldsourceconfig(){ -fn_defaultconfig - -# server.cfg redirects to ${servercfg} for added security -echo "creating server.cfg." -touch "server.cfg" -sleep 1 -echo "creating redirect." -echo "server.cfg > ${servercfg}." -echo "exec ${servercfg}" > "server.cfg" -sleep 1 - -# creating other files required -echo "creating listip.cfg." -touch "${systemdir}/listip.cfg" -sleep 1 -echo "creating banned.cfg." -touch "${systemdir}/banned.cfg" -sleep 1 - -fn_userinputconfig -echo "" -} - -fn_serious3config(){ -fn_defaultconfig -echo "" -echo "To edit ${gamename} server config use SS3 Server GUI 3 tool" -echo "http://mrag.nl/sgui3/" -sleep 1 -echo "" -} - -fn_sourceconfig(){ -fn_defaultconfig - -# server.cfg redirects to ${servercfg} for added security -echo "creating server.cfg." -touch "server.cfg" -sleep 1 -echo "creating redirect." -echo "server.cfg > ${servercfg}." -echo "exec ${servercfg}" > "server.cfg" -sleep 1 - -fn_userinputconfig -echo "" -} - -fn_teeworldsconfig(){ -fn_defaultconfig - -echo "adding logfile location to config." -sed -i "s@\"<logfile>\"@\"${gamelog}\"@g" "${servercfgfullpath}" -sleep 1 -echo "removing password holder." -sed -i "s/<password>//" "${servercfgfullpath}" -sleep 1 - -fn_userinputconfig -echo "" -} - -fn_ut99config(){ -echo "${servercfgdefault} > ${servercfgfullpath}" -tr -d '\r' < "${servercfgdefault}" > "${servercfgfullpath}" -sleep 1 -echo "" -echo "Configuring ${gamename} Server" -echo "=================================" -sleep 1 -echo "enabling WebAdmin." -sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" -sleep 1 -echo "setting WebAdmin port to 8076." -sed -i '467i\ListenPort=8076' "${servercfgfullpath}" -sleep 1 -echo "" -} - -fn_unreal2config(){ -fn_defaultconfig -echo "" -echo "Configuring ${gamename} Server" -echo "=================================" -sleep 1 -echo "setting WebAdmin username and password." -sed -i 's/AdminName=/AdminName=admin/g' "${servercfgfullpath}" -sed -i 's/AdminPassword=/AdminPassword=admin/g' "${servercfgfullpath}" -sleep 1 -echo "enabling WebAdmin." -sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" -if [ "${gamename}" == "Unreal Tournament 2004" ]; then - sleep 1 - echo "setting WebAdmin port to 8075." - sed -i 's/ListenPort=80/ListenPort=8075/g' "${servercfgfullpath}" -fi -sleep 1 -echo "" -} - -echo "" -if [ "${gamename}" != "Hurtworld" ]; then -echo "Creating Configs" -echo "=================================" -sleep 1 - mkdir -pv "${servercfgdir}" - cd "${servercfgdir}" - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}" -fi - -if [ "${gamename}" == "7 Days To Die" ]; then - fn_defaultconfig -elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then - wget -N /dev/null ${githuburl}/ARKSurvivalEvolved/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - echo -e "downloading lgsm-default.ini...\c" - fn_defaultconfig -elif [ "${gamename}" == "ARMA 3" ]; then - echo -e "downloading lgsm-default.server.cfg...\c" - wget -N /dev/null ${githuburl}/Arma3/cfg/lgsm-default.server.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - echo -e "downloading lgsm-default.network.cfg...\c" - wget -N /dev/null ${githuburl}/Arma3/cfg/lgsm-default.network.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_arma3config -elif [ "${gamename}" == "BrainBread 2" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/BrainBread2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/BlackMesa/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Blade Symphony" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/BladeSymphony/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_goldsourceconfig -elif [ "${gamename}" == "Codename CURE" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/CodenameCURE/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig - -elif [ "${gamename}" == "Counter Strike 1.6" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/CounterStrike/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_goldsourceconfig -elif [ "${gamename}" == "Counter Strike: Condition Zero" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/CounterStrikeConditionZero/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_goldsourceconfig -elif [ "${gamename}" == "Counter Strike: Global Offensive" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Counter Strike: Source" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/CounterStrikeSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Day of Defeat" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/DayOfDefeat/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_goldsourceconfig -elif [ "${gamename}" == "Day of Defeat: Source" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/DayOfDefeatSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Don't Starve Together" ]; then - echo -e "downloading lgsm-default.ini...\c" - wget -N /dev/null ${githuburl}/DontStarveTogether/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_defaultconfig -elif [ "${gamename}" == "Double Action: Boogaloo" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/DoubleActionBoogaloo/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Fistful of Frags" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/FistfulOfFrags/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Garry's Mod" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/GarrysMod/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "GoldenEye: Source" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/GoldenEyeSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Half Life 2: Deathmatch" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/HalfLife2Deathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Half Life: Deathmatch" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/HalfLifeDeathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_goldsourceconfig -elif [ "${gamename}" == "Insurgency" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/Insurgency/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Just Cause 2" ]; then - fn_defaultconfig -elif [ "${gamename}" == "Killing Floor" ]; then - fn_unreal2config -elif [ "${gamename}" == "Left 4 Dead" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/Left4Dead/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Left 4 Dead 2" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/Left4Dead2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "No More Room in Hell" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/NoMoreRoomInHell/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Natural Selection 2" ]; then - echo -e "no configs required." - sleep 1 - echo "" -elif [ "${gamename}" == "Pirates, Vikings, and Knights II" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/PiratesVikingandKnightsII/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Quake Live" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/QuakeLive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_defaultconfig - fn_userinputconfig -elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then - fn_unreal2config -elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then - echo -e "downloading lgsm-default.ini...\c" - wget -N /dev/null ${githuburl}/SeriousSam3BFE/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_serious3config -elif [ "${gamename}" == "Rust" ]; then - echo -e "downloading server.cfg...\c" - wget -N /dev/null ${githuburl}/Rust/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_defaultconfig -elif [ "${gamename}" == "Sven Co-op" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/SvenCoop/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_goldsourceconfig -elif [ "${gamename}" == "Teamspeak 3" ]; then - echo -e "downloading lgsm-default.ini...\c" - wget -N /dev/null ${githuburl}/TeamSpeak3/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_defaultconfig -elif [ "${gamename}" == "Team Fortress 2" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/TeamFortress2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_sourceconfig -elif [ "${gamename}" == "Team Fortress Classic" ]; then - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/TeamFortressClassic/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_goldsourceconfig -elif [ "${gamename}" == "Teeworlds" ]; then - echo -e "downloading ctf.cfg...\c" - wget -N /dev/null ${githuburl}/Teeworlds/cfg/ctf.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - echo -e "downloading dm.cfg...\c" - wget -N /dev/null ${githuburl}/Teeworlds/cfg/dm.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - echo -e "downloading duel.cfg...\c" - wget -N /dev/null ${githuburl}/Teeworlds/cfg/duel.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - echo -e "downloading tdm.cfg...\c" - wget -N /dev/null ${githuburl}/Teeworlds/cfg/tdm.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/Teeworlds/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_teeworldsconfig -elif [ "${gamename}" == "Terraria" ]; then - echo -e "downloading lgsm-default.txt...\c" - wget -N /dev/null ${githuburl}/Terraria/cfg/lgsm-default.txt 2>&1 | grep -F HTTP | cut -c45- | uniq - sleep 1 - fn_defaultconfig -elif [ "${gamename}" == "Unreal Tournament 2004" ]; then - fn_unreal2config -elif [ "${gamename}" == "Unreal Tournament 99" ]; then - fn_ut99config -fi diff --git a/functions/install_gslt.sh b/functions/install_gslt.sh deleted file mode 100644 index 5bd309f28..000000000 --- a/functions/install_gslt.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# LGSM install_gslt.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="270216" - -# Description: Configures GSLT. - -local modulename="Install" - -echo "" -echo "Game Server Login Token" -echo "============================" -sleep 1 -if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then - echo "GSLT is required to run a public ${gamename} server" - fn_scriptlog "GSLT is required to run a public ${gamename} server" -else - echo "GSLT is an optional feature for ${gamename} server" - fn_scriptlog "GSLT is an optional feature for ${gamename} server" -fi - -echo "Get more info and a token here:" -echo "http://gameservermanagers.com/gslt" -fn_scriptlog "Get more info and a token here:" -fn_scriptlog "http://gameservermanagers.com/gslt" -echo "" -if [ -z "${autoinstall}" ]; then - echo "Enter token below (Can be blank)." - echo -n "GSLT TOKEN: " - read token - sed -i -e "s/gslt=\"\"/gslt=\"${token}\"/g" "${rootdir}/${selfname}" -fi -sleep 1 -echo "The GSLT can be changed by editing ${selfname}." -fn_scriptlog "The GSLT can be changed by editing ${selfname}." -echo "" \ No newline at end of file diff --git a/functions/install_header.sh b/functions/install_header.sh deleted file mode 100644 index da8b7bf6c..000000000 --- a/functions/install_header.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# LGSM install_header.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="190216" - -local modulename="Install" - -clear -echo "=================================" -echo "${gamename}" -echo "Linux Game Server Manager" -echo "by Daniel Gibbs" -echo "Contributors: http://goo.gl/qLmitD" -echo "http://gameservermanagers.com" -echo "=================================" diff --git a/functions/install_logs.sh b/functions/install_logs.sh deleted file mode 100644 index 9f86f7129..000000000 --- a/functions/install_logs.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# LGSM install_logs.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="270216" - -local modulename="Install" - -if [ "${checklogs}" != "1" ]; then - echo "" - echo "Creating log directorys" - echo "=================================" -fi -sleep 1 -# Create dir's for the script and console logs -mkdir -v "${rootdir}/log" -mkdir -v "${scriptlogdir}" -touch "${scriptlog}" -if [ -n "${consolelogdir}" ]; then - mkdir -v "${consolelogdir}" - touch "${consolelog}" -fi - -# If a server is source or goldsource, Teamspeak 3, Starbound, Project Zomhoid create a symbolic link to the game server logs. -if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]||[ "${gamename}" == "Teamspeak 3" ]||[ "${engine}" == "starbound" ]||[ "${engine}" == "projectzomboid" ]; then - if [ ! -h "${rootdir}/log/server" ]; then - ln -nfsv "${gamelogdir}" "${rootdir}/log/server" - fi -fi - -# If a server is unreal2 or unity3d create a dir. -if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Teeworlds" ]; then - mkdir -pv "${gamelogdir}" -fi - -# If server uses SteamCMD create a symbolic link to the Steam logs. -if [ -d "${rootdir}/Steam/logs" ]; then - if [ ! -h "${rootdir}/log/steamcmd" ]; then - ln -nfsv "${rootdir}/Steam/logs" "${rootdir}/log/steamcmd" - fi -fi -sleep 1 -fn_scriptlog "logs installed" \ No newline at end of file diff --git a/functions/install_retry.sh b/functions/install_retry.sh deleted file mode 100644 index 7f04ac9ed..000000000 --- a/functions/install_retry.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# LGSM install_retry.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -local modulename="Install" - -while true; do - read -e -i "y" -p "Retry install? [Y/n]" yn - case $yn in - [Yy]* ) command_install.sh; exit;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; - esac -done \ No newline at end of file diff --git a/functions/install_server_dir.sh b/functions/install_server_dir.sh deleted file mode 100644 index ab73ecfd2..000000000 --- a/functions/install_server_dir.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -# LGSM install_serverdir.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -local modulename="Install" - -echo "" -echo "Server Directory" -echo "=================================" -sleep 1 -echo "" -pwd -echo "" -if [ -d "${filesdir}" ]; then - fn_print_warning_nl "A server is already installed here." -fi -if [ -z "${autoinstall}" ]; then - while true; do - read -e -i "y" -p "Continue [y/N]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) exit;; - * ) echo "Please answer yes or no.";; - esac - done -fi -if [ ! -d "${filesdir}" ]; then - mkdir -v "${filesdir}" -fi -sleep 1 \ No newline at end of file diff --git a/functions/install_server_files.sh b/functions/install_server_files.sh deleted file mode 100644 index d6655689b..000000000 --- a/functions/install_server_files.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/bash -# LGSM install_server_files.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="270216" - -local modulename="Install" - -fn_install_server_files(){ -if [ "${gamename}" == "Unreal Tournament 99" ]; then - fileurl="http://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" -elif [ "${gamename}" == "Unreal Tournament 2004" ]; then - fileurl="http://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" -fi -fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" -fn_dl_extract "${filedir}" "${filename}" "${filesdir}" -} - -fn_install_server_files_steamcmd(){ -counter="0" -while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; 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_print_warning_nl "SteamCMD did not complete the download, retrying: Attempt ${counter}" - fn_scriptlog "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 - local exitcode=$? - else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit - local exitcode=$? - 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 - local exitcode=$? - else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" -validate +quit - local exitcode=$? - fi - fi - elif [ "${counter}" -ge "11" ]; then - fn_print_failure_nl "SteamCMD did not complete the download, too many retrys" - fn_scriptlog "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 - fn_print_infomation_nl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue." - 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 - local exitcode=$? - done -fi -} - -echo "" -echo "Installing ${gamename} Server" -echo "=================================" -sleep 1 -if [ -n "${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 diff --git a/functions/install_steamcmd.sh b/functions/install_steamcmd.sh deleted file mode 100644 index de371bbd8..000000000 --- a/functions/install_steamcmd.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# LGSM install_steamcmd.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Downloads SteamCMD on install. - -local modulename="Install" - -echo "" -echo "Installing SteamCMD" -echo "=================================" -sleep 1 -check_steamcmd.sh diff --git a/functions/install_ts3.sh b/functions/install_ts3.sh deleted file mode 100644 index 5cf2f0f85..000000000 --- a/functions/install_ts3.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -# LGSM install_ts3.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -local modulename="Install" - -info_distro.sh -# Gets the teamspeak server architecture -if [ "${arch}" == "x86_64" ]; then - ts3arch="amd64" -elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then - ts3arch="x86" -else - fn_print_failure "${arch} is an unsupported architecture" - exit 1 -fi - -# 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 href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp - -# Replaces dots with spaces to split up the number. e.g 3 0 12 1 is 3.0.12.1 this allows correct sorting - cat .ts3_version_numbers_unsorted.tmp | tr "." " " > .ts3_version_numbers_digit.tmp -# Sorts versions in to correct order -# merges 2 files and orders by each column in order allowing these version numbers to be sorted in order -paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp | awk '{print $1,$2,$3,$4 " " $0;}'| sort -k1rn -k2rn -k3rn -k4rn | awk '{print $NF}' > .ts3_version_numbers.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.tmp - -# tidy up -rm -f ".ts3_version_numbers_digit.tmp" -rm -f ".ts3_version_numbers_unsorted.tmp" -rm -f ".ts3_version_numbers.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" - sleep 2 - exit 1 -fi - -cd "${rootdir}" -echo -e "downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" -wget -N /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 2>&1 | grep -F HTTP | cut -c45-| uniq -sleep 1 -echo -e "extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" -tar -xf "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" 2> ".${servicename}-tar-error.tmp" -local status=$? -if [ ${status} -eq 0 ]; then - echo "OK" -else - echo "FAIL - Exit status ${status}" - sleep 1 - cat ".${servicename}-tar-error.tmp" - rm ".${servicename}-tar-error.tmp" - exit $? -fi -echo -e "copying to ${filesdir}...\c" -cp -R "${rootdir}/teamspeak3-server_linux_${ts3arch}/"* "${filesdir}" 2> ".${servicename}-cp-error.tmp" -local status=$? -if [ ${status} -eq 0 ]; then - echo "OK" -else - echo "FAIL - Exit status ${status}" - sleep 1 - cat ".${servicename}-cp-error.tmp" - rm ".${servicename}-cp-error.tmp" - exit $? -fi -rm -f "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" -rm -rf "${rootdir}/teamspeak3-server_linux_${ts3arch}" diff --git a/functions/install_ts3db.sh b/functions/install_ts3db.sh deleted file mode 100644 index 61e2db7d4..000000000 --- a/functions/install_ts3db.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash -# LGSM fn_install_ts3_mariadb function -# Author: Daniel Gibbs -# Contributor: PhilPhonic -# Website: http://gameservermanagers.com -lgsm_version="271215" - -local modulename="Install" - -fn_install_ts3db_mariadb(){ - echo "" - echo "checking if libmariadb2 is installed" - echo "=================================" - sleep 1 - ldd ${filesdir}/libts3db_mariadb.so | grep "libmariadb.so.2 => not found" - if [ $? -eq 0 ]; then - echo "libmariadb2 not installed. Please install it first." - echo "exiting..." - exit - else - echo "libmariadb2 installed." - fi - echo "" - echo "Configuring ${gamename} Server for MariaDB/MySQL" - echo "=================================" - sleep 1 - read -p "Enter MariaDB hostname: " mariahostname - read -p "Enter MariaDB port: " mariaport - read -p "Enter MariaDB username: " mariausername - read -p "Enter MariaDB password: " mariapassword - read -p "Enter MariaDB database name: " mariadbname - echo "updating config." - echo "[config]" >> ${servercfgdir}/ts3db_mariadb.ini - echo "host='${mariahostname}'" >> ${servercfgdir}/ts3db_mariadb.ini - echo "port='${mariaport}'" >> ${servercfgdir}/ts3db_mariadb.ini - echo "username='${mariausername}'" >> ${servercfgdir}/ts3db_mariadb.ini - echo "password='${mariapassword}'" >> ${servercfgdir}/ts3db_mariadb.ini - echo "database='${mariadbname}'" >> ${servercfgdir}/ts3db_mariadb.ini - echo "socket=" >> ${servercfgdir}/ts3db_mariadb.ini - sed -i "s/dbplugin=ts3db_sqlite3/dbplugin=ts3db_mariadb/g" "${servercfgfullpath}" - sed -i "s/dbpluginparameter=/dbpluginparameter=ts3db_mariadb.ini/g" "${servercfgfullpath}" - sed -i "s/dbsqlcreatepath=create_sqlite\//dbsqlcreatepath=create_mariadb\//g" "${servercfgfullpath}" - echo "=================================" - sleep 1 -} - -if [ -z "${autoinstall}" ]; then - echo "" - while true; do - read -e -i "n" -p "Do you want to use MariaDB/MySQL instead of sqlite (Database Server including user and database already has to be set up!)? [y/N]" yn - case $yn in - [Yy]* ) fn_install_ts3db_mariadb && break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac - done -else -fn_print_warning_nl "./${selfname} auto-install is uses sqlite. For MariaDB/MySQL use ./${selfname} install" -fi - -## Get privilege key -echo "" -echo "Getting privilege key" -echo "=================================" -sleep 1 -echo "IMPORANT! Save these details for later." -sleep 1 -cd "${executabledir}" -./ts3server_startscript.sh start inifile=ts3-server.ini -sleep 5 -./ts3server_startscript.sh stop diff --git a/functions/install_ut2k4_key.sh b/functions/install_ut2k4_key.sh deleted file mode 100644 index 53b603de1..000000000 --- a/functions/install_ut2k4_key.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# LGSM install_ut2k4_key.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -local modulename="Install" - -echo "" -echo "Enter ${gamename} CD Key" -echo "=================================" -sleep 1 -echo "To get your server listed on the Master Server list" -echo "you must get a free CD key. Get a key here:" -echo "http://www.unrealtournament.com/ut2004server/cdkey.php" -echo "" -if [ -z "${autoinstall}" ]; then - echo "Once you have the key enter it below" - echo -n "KEY: " - read CODE - echo ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey" - if [ -f "${systemdir}/cdkey" ]; then - fn_scriptlog "UT2K4 Server CD Key created" -else - echo "You can add your key using the following command" - echo "./${selfname} server-cd-key" -fi -echo "" \ No newline at end of file diff --git a/functions/logs.sh b/functions/logs.sh deleted file mode 100644 index 30de59ea7..000000000 --- a/functions/logs.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/bash -# LGSM logs.sh function -# Author: Daniel Gibbs -# Contributor: UltimateByte -# Website: http://gameservermanagers.com -lgsm_version="230216" - -# Description: Acts as a log rotater, removing old logs. - -local modulename="Log Manager" - -# Check if logfile variable and file exist, create logfile if it doesn't exist -if [ -n "${consolelog}" ]; then - if [ ! -e "${consolelog}" ]; then - touch "${consolelog}" - fi -fi - -# For games not displaying a console, and having logs into their game folder -if [ -n "${gamelogfile}" ]; then - if [ -n "$(find "${systemdir}" -name "gamelog*.log")" ]; then - fn_printinfo "Moving game logs to ${gamelogdir}" - fn_scriptlog "Moving game logs to ${gamelogdir}" - echo -en "\n" - sleep 1 - mv "${systemdir}"/gamelog*.log "${gamelogdir}" - fi -fi - -# Log manager will start the cleanup if it finds logs older than "${logdays}" -if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then - fn_print_dots "Starting" - # Set addon logs directories - sourcemodlogdir="${systemdir}/addons/sourcemod/logs" - ulxlogdir="${systemdir}/data/ulx_logs" - darkrplogdir="${systemdir}/data/darkrp_logs" - legacyserverlogdir="${rootdir}/log/server" - # Setting up counting variables - scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" ; legacycount="0" - sleep 1 - fn_print_ok_nl "Starting" - fn_scriptlog "Starting" - fn_print_info_nl "Removing logs older than "${logdays}" days" - fn_scriptlog "Removing logs older than "${logdays}" days" - # Logging logfiles to be removed according to "${logdays}", counting and removing them - # Script logfiles - find "${scriptlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" - scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) - find "${scriptlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - # SRCDS and unreal logfiles - if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then - find "${gamelogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" - gamecount=$(find "${gamelogdir}"/ -type f -mtime +"${logdays}"|wc -l) - find "${gamelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - # Console logfiles - if [ -n "${consolelog}" ]; then - find "${consolelogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" - consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}"|wc -l) - find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - # Source addons logfiles - if [ "${engine}" == "source" ]; then - # SourceMod logfiles - if [ -d "${sourcemodlogdir}" ]; then - find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" - smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"|wc -l) - find "${sourcemodlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - # Garry's Mod logfiles - if [ "${gamename}" == "Garry's Mod" ]; then - # ULX logfiles - if [ -d "${ulxlogdir}" ]; then - find "${ulxlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" - ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +"${logdays}"|wc -l) - find "${ulxlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - # DarkRP logfiles - if [ -d "${darkrplogdir}" ]; then - find "${darkrplogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" - darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +"${logdays}"|wc -l) - find "${darkrplogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - fi - fi - # Legacy support - if [ -d "${legacyserverlogdir}" ]; then - find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" - legacycount=$(find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"|wc -l) - find "${legacyserverlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - # Remove folder if empty - if [ ! "$(ls -A "${legacyserverlogdir}")" ]; then - rm -rf "${legacyserverlogdir}" - fi - fi - - # Count total amount of files removed - count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount} + ${legacycount})) - # Job done - fn_print_ok_nl "Removed ${count} log files" - fn_scriptlog "Removed ${count} log files" -fi diff --git a/functions/monitor_gsquery.sh b/functions/monitor_gsquery.sh deleted file mode 100644 index 058351770..000000000 --- a/functions/monitor_gsquery.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -# LGSM monitor_gsquery.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="270216" - -# Description: uses gsquery.py to query the server port. -# Detects if the server has frozen with the proccess still running. - -local modulename="Monitor" - -# Forces legecy servers to use gsquery as vat gsquery is not present in legecy -if [ -z "${gsquery}" ]; then - gsquery="yes" -fi - -if [ "${gsquery}" == "yes" ]; then - - # Downloads gsquery.py if missing - if [ ! -f "${functionsdir}/gsquery.py" ]; then - fn_fetch_file_github "functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" "nomd5" - fi - - info_config.sh - - if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then - port=$((port + 1)) - elif [ "${engine}" == "spark" ]; then - port=$((port + 1)) - fi - - if [ -z "${queryport}" ]; then - port="${queryport}" - fi - - fn_print_info "Querying port: gsquery.py enabled" - fn_scriptlog "Querying port: gsquery.py enabled" - sleep 1 - - # Will query up to 4 times every 15 seconds. - # Servers changing map can return a failure. - # Will Wait up to 60 seconds to confirm server is down giving server time to change map. - totalseconds=0 - for queryattempt in {1..5}; do - fn_print_dots "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : " - fn_print_querying_eol - fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : QUERYING" - - gsquerycmd=$("${functionsdir}"/gsquery.py -a "${ip}" -p 1 -e "${engine}" 2>&1) - exitcode=$? - - sleep 1 - if [ "${exitcode}" == "0" ]; then - # Server OK - fn_print_ok "Querying port: ${ip}:${port} : ${queryattempt} : " - fn_print_ok_eol - fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : OK" - sleep 1 - exit - else - # Server failed query - fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : ${gsquerycmd}" - - if [ "${queryattempt}" == "5" ]; then - # Server failed query 4 times confirmed failure - fn_print_fail "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : " - fn_print_fail_eol_nl - fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : FAIL" - sleep 1 - - # Send email notification if enabled - if [ "${emailnotification}" == "on" ]; then - subject="${servicename} Monitor - Starting ${servername}" - failurereason="Failed to query ${servicename}: ${gsquerycmd}" - actiontaken="restarted ${servicename}" - email.sh - fi - fn_restart - break - fi - - # Seconds counter - for seconds in {1..15}; do - fn_print_fail "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : \e[0;31m${gsquerycmd}\e[0m" - totalseconds=$((totalseconds + 1)) - sleep 1 - if [ "${seconds}" == "15" ]; then - break - fi - done - fi - done -fi \ No newline at end of file diff --git a/functions/update_check.sh b/functions/update_check.sh deleted file mode 100644 index 579a84f4b..000000000 --- a/functions/update_check.sh +++ /dev/null @@ -1,326 +0,0 @@ -#!/bin/bash -# LGSM update_check.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="060216" - -# Description: Checks if a server update is available. - -local modulename="Update" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -### SteamCMD Update Checker ### - -fn_appmanifestinfo(){ - appmanifestfile=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf") - appmanifestfilewc=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf"|wc -l) -} - -fn_appmanifestcheck(){ -fn_appmanifestinfo -# Multiple or no matching appmanifest files may sometimes be available. -# This is an error is corrected below if required. -if [ "${appmanifestfilewc}" -ge "2" ]; then - sleep 1 - fn_print_warn "Multiple appmanifest_${appid}.acf files found" - fn_scriptlog "Warning! Multiple appmanifest_${appid}.acf files found" - sleep 2 - fn_print_dots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files" - sleep 1 - for appfile in ${appmanifestfile}; do - rm "${appfile}" - done - appmanifestfilewc1="${appmanifestfilewc}" - fn_appmanifestinfo - if [ "${appmanifestfilewc}" -ge "2" ]; then - fn_print_fail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" - fn_scriptlog "Failure! Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" - sleep 1 - echo "" - echo " Check user permissions" - for appfile in ${appmanifestfile}; do - echo " ${appfile}" - done - exit 1 - else - sleep 1 - fn_print_ok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" - fn_scriptlog "Success! Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" - sleep 1 - fn_print_info_nl "Forcing update to correct issue" - fn_scriptlog "Forcing update to correct issue" - sleep 1 - update_dl.sh - update_check.sh - fi -elif [ "${appmanifestfilewc}" -eq "0" ]; then - if [ "${forceupdate}" == "1" ]; then - fn_print_fail "Still no appmanifest_${appid}.acf found: Unable to update" - fn_scriptlog "Warning! Still no appmanifest_${appid}.acf found: Unable to update" - exit 1 - fi - forceupdate=1 - fn_print_warn "No appmanifest_${appid}.acf found" - fn_scriptlog "Warning! No appmanifest_${appid}.acf found" - sleep 2 - fn_print_info_nl "Forcing update to correct issue" - fn_scriptlog "Forcing update to correct issue" - sleep 1 - update_dl.sh - update_check.sh -fi -} - -fn_logupdaterequest(){ -# Checks for server update requests from server logs. -fn_print_dots "Checking for update: Server logs" -fn_scriptlog "Checking for update: Server logs" -sleep 1 -requestrestart=$(grep -Ec "MasterRequestRestart" "${consolelog}") -if [ "${requestrestart}" -ge "1" ]; then - fn_print_ok_nl "Checking for update: Server logs: Update requested" - sleep 1 - echo "" - echo -ne "Applying update.\r" - sleep 1 - echo -ne "Applying update..\r" - sleep 1 - echo -ne "Applying update...\r" - sleep 1 - echo -ne "\n" - tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") - unset updateonstart - if [ "${tmuxwc}" -eq 1 ]; then - command_stop.sh - update_dl.sh - command_start.sh - else - update_dl.sh - fi -else - fn_print_ok "Checking for update: Server logs: No update requested" - sleep 1 -fi -} - -fn_steamcmdcheck(){ -fn_appmanifestcheck -# Checks for server update from SteamCMD -fn_print_dots "Checking for update: SteamCMD" -fn_scriptlog "Checking for update: SteamCMD" -sleep 1 - -# Gets currentbuild -currentbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) - -# Removes appinfo.vdf as a fix for not always getting up to date version info from SteamCMD - -# Gets availablebuild info -cd "${rootdir}/steamcmd" -if [ -f "${HOME}/Steam/appcache/appinfo.vdf" ]; then - rm -f "${HOME}/Steam/appcache/appinfo.vdf" -fi -availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) -if [ -z "${availablebuild}" ]; then - fn_print_fail "Checking for update: SteamCMD" - fn_scriptlog "Failure! Checking for update: SteamCMD" - sleep 1 - fn_print_fail_nl "Checking for update: SteamCMD: Not returning version info" - fn_scriptlog "Failure! Checking for update: SteamCMD: Not returning version info" - exit 1 -else - fn_print_ok "Checking for update: SteamCMD" - fn_scriptlog "Success! Checking for update: SteamCMD" - sleep 1 -fi - -if [ "${currentbuild}" != "${availablebuild}" ]; then - echo -e "\n" - echo -e "Update available:" - sleep 1 - echo -e " Current build: \e[0;31m${currentbuild}\e[0;39m" - echo -e " Available build: \e[0;32m${availablebuild}\e[0;39m" - echo -e "" - echo -e " https://steamdb.info/app/${appid}/" - 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_scriptlog "Update available" - fn_scriptlog "Current build: ${currentbuild}" - fn_scriptlog "Available build: ${availablebuild}" - fn_scriptlog "${currentbuild} > ${availablebuild}" - - tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") - unset updateonstart - if [ "${tmuxwc}" -eq 1 ]; then - command_stop.sh - update_dl.sh - command_start.sh - else - update_dl.sh - fi -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 " https://steamdb.info/app/${appid}/" - echo -e "" - fn_print_ok_nl "No update available" - fn_scriptlog "Current build: ${currentbuild}" - fn_scriptlog "Available build: ${availablebuild}" -fi -} - -### END SteamCMD Update Checker ### - -fn_teamspeak3_check(){ -# Checks for server update from teamspeak.com using a mirror dl.4players.de -fn_print_dots "Checking for update: teamspeak.com" -fn_scriptlog "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 - fn_print_fail_nl "Checking for update: teamspeak.com: No logs with server version found" - fn_scriptlog "Failure! 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_scriptlog "Checking for update: teamspeak.com: Forcing server restart" - sleep 2 - command_stop.sh - command_start.sh - sleep 2 - # If still failing will exit - 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_scriptlog "Failure! Checking for update: teamspeak.com: Still No logs with server version found" - exit 1 - 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 "${arch} is an unsupported architecture" - exit 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 href=\".*\/\">.*\/<\/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" - fn_scriptlog "Checking for update: teamspeak.com" - sleep 1 - fn_print_fail "Checking for update: teamspeak.com: Not returning version info" - fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info" - sleep 2 - exit 1 -else - fn_print_ok "Checking for update: teamspeak.com" - fn_scriptlog "Success! 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:]') -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_scriptlog "Update available" - fn_scriptlog "Current build: ${currentbuild}" - fn_scriptlog "Available build: ${availablebuild}" - fn_scriptlog "${currentbuild} > ${availablebuild}" - unset updateonstart - info_ts3status.sh - if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - update_dl.sh - command_start.sh - sleep 5 - command_stop.sh - else - command_stop.sh - update_dl.sh - command_start.sh - fi -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_scriptlog "Current build: ${currentbuild}" - fn_scriptlog "Available build: ${availablebuild}" -fi -} - -check.sh -fn_print_dots "Checking for update" -if [ "${gamename}" == "Teamspeak 3" ]; then - fn_teamspeak3_check -elif [ "${engine}" == "goldsource" ]||[ "${forceupdate}" == "1" ]; then - # Goldsource servers bypass checks as fn_steamcmdcheck does not work for appid 90 servers. - # forceupdate bypasses checks - tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") - if [ "${tmuxwc}" -eq 1 ]; then - command_stop.sh - update_dl.sh - command_start.sh - else - update_dl.sh - fi -else - fn_logupdaterequest - fn_steamcmdcheck -fi diff --git a/functions/update_dl.sh b/functions/update_dl.sh deleted file mode 100644 index f23bd2c64..000000000 --- a/functions/update_dl.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash -# LGSM update_dl.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="020216" - -# Description: Runs a server update. - -local modulename="Update" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -fn_steamcmd_dl(){ -cd "${rootdir}" -cd "steamcmd" - -# Detects if unbuffer command is available. -if [ $(command -v unbuffer) ]; then - unbuffer=unbuffer -fi - -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 -a "${scriptlog}" -else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit| tee -a "${scriptlog}" -fi - -fix.sh -} - -fn_teamspeak3_dl(){ -cd "${rootdir}" -echo -e "downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" -fn_scriptlog "Downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" -wget -N /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 2>&1 | grep -F HTTP | cut -c45-| uniq -sleep 1 -echo -e "extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" -fn_scriptlog "Extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" -tar -xf "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" 2> "${scriptlogdir}/.${servicename}-tar-error.tmp" -local status=$? -if [ ${status} -eq 0 ]; then - echo "OK" -else - echo "FAIL - Exit status ${status}" - fn_scriptlog "Failed to extract - Exit status ${status}" - sleep 1 - cat "${scriptlogdir}/.${servicename}-tar-error.tmp" - cat "${scriptlogdir}/.${servicename}-tar-error.tmp" >> "${scriptlog}" - rm "${scriptlogdir}/.${servicename}-tar-error.tmp" - fn_scriptlog "Failure! Unable to update" - exit ${status} -fi -echo -e "copying to ${filesdir}...\c" -fn_scriptlog "Copying to ${filesdir}" -cp -R "${rootdir}/teamspeak3-server_linux_${ts3arch}/"* "${filesdir}" 2> "${scriptlogdir}/.${servicename}-cp-error.tmp" -local status=$? -if [ ${status} -eq 0 ]; then - echo "OK" -else - echo "FAIL - Exit status ${status}" - fn_scriptlog "Failed to copy - Exit status ${status}" - sleep 1 - cat "${scriptlogdir}/.${servicename}-cp-error.tmp" - cat "${scriptlogdir}/.${servicename}-cp-error.tmp" >> "${scriptlog}" - rm "${scriptlogdir}/.${servicename}-cp-error.tmp" - fn_scriptlog "Failure! Unable to update" - exit ${status} -fi -rm -f teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 -rm -rf "${rootdir}/teamspeak3-server_linux_${ts3arch}" -} - -check.sh -info_config.sh -fn_print_dots "Updating ${servername}" -sleep 1 -fn_print_ok_nl "Updating ${servername}" -fn_scriptlog "Updating ${servername}" -sleep 1 -if [ "${gamename}" == "Teamspeak 3" ]; then - fn_teamspeak3_dl -else - fn_steamcmd_dl -fi diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 5fb446ddb..6ec515d00 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -636,7 +636,7 @@ fn_details_disk fn_details_gameserver fn_details_backup # Some game servers do not have parms. -if [ "${gamename}" != "Teamspeak 3" ]||[ "${engine}" != "avalanche" ]||[ "${engine}" != "dontstarve" ]||[ "${engine}" != "projectzomboid" ]; then +if [ "${gamename}" != "Teamspeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]; then fn_parms fn_details_commandlineparms fi diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 058351770..7328ce724 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -18,7 +18,7 @@ if [ "${gsquery}" == "yes" ]; then # Downloads gsquery.py if missing if [ ! -f "${functionsdir}/gsquery.py" ]; then - fn_fetch_file_github "functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" "nomd5" + fn_fetch_file_github "lgsm/functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" "nomd5" fi info_config.sh From 703d3e59122d1e16216480d05492102fdb7cfbd0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 13 Mar 2016 01:01:35 +0000 Subject: [PATCH 276/643] added download for dabserver --- lgsm/functions/fix_glibc.sh | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index b1ea50d4b..57edcea82 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -6,6 +6,48 @@ lgsm_version="020116" info_glibc.sh +# Blade Symphony +if [ "${gamename}" == "Blade Symphony" ]; then + : +# Dont Starve Together +elif [ "${gamename}" == "Don't Starve Together" ]; then + : +# Double Action: Boogaloo +elif [ "${gamename}" == "Double Action: Boogaloo" ]; then + fn_fetch_file_github "lgsm/lib/ubuntu12.04/i386" "libm.so.6" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" + +# Fistful of Frags +elif [ "${gamename}" == "Fistful of Frags" ]; then + : +# Garry's Mod +elif [ "${gamename}" == "Garry's Mod" ]; then + : +# Insurgency +elif [ "${gamename}" == "Insurgency" ]; then + : +elif [ "${gamename}" == "Left 4 Dead" ]; then + : +# Natural Selection 2 +elif [ "${gamename}" == "Natural Selection 2" ]; then + : +# NS2: Combat +elif [ "${gamename}" == "NS2: Combat" ]; then + : +# No More Room in Hell +elif [ "${gamename}" == "No More Room in Hell" ]; then + : +# ARMA 3 +elif [ "${gamename}" == "ARMA 3" ]; then + : +# Just Cause 2 +elif [ "${gamename}" == "Just Cause 2" ]; then + : +# Serious Sam 3: BFE +elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then + : +fi + + if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != "${glibc_required}" ]; then echo "Version $(ldd --version | sed -n '1s/.* //p') is lower than $glibc_required" if [ "${glibcfix}" == "yes" ]; then From c747136d1b6a4557386d3a524a93aa59e2e6efed Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 13 Mar 2016 01:04:41 +0000 Subject: [PATCH 277/643] Re adding functions for legacy --- functions/core_functions.sh | 454 ++++++++++++++++++++++++++++++++++ functions/fn_functions | 20 ++ functions/fn_getopt | 15 ++ functions/fn_update_functions | 22 ++ 4 files changed, 511 insertions(+) create mode 100644 functions/core_functions.sh create mode 100644 functions/fn_functions create mode 100644 functions/fn_getopt create mode 100644 functions/fn_update_functions diff --git a/functions/core_functions.sh b/functions/core_functions.sh new file mode 100644 index 000000000..8f59a57fb --- /dev/null +++ b/functions/core_functions.sh @@ -0,0 +1,454 @@ +#!/bin/bash +# LGSM core_functions.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="270216" + +# Description: Defines all functions to allow download and execution of functions using fn_fetch_function. +# This function is called first before any other function. Without this file other functions would not load. + +# Code/functions for legacy servers + +fn_functions(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fn_getopt(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +# fn_fetch_core_dl also placed here to allow legecy servers to still download core functions +if [ -z "${lgsmdir}" ]; then + lgsmdir="${rootdir}/lgsm" + functionsdir="${lgsmdir}/functions" +fi + +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir -p "${filedir}" + fi + echo -e " fetching ${filename}...\c" + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else + echo -e "\e[0;31mFAIL\e[0m\n" + echo "Curl is not installed!" + echo -e "" + exit 1 + fi + chmod +x "${filedir}/${filename}" +fi +source "${filedir}/${filename}" +} + + +# Core + +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_getopt.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_messages.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_dl.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +# Command + +command_console.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_debug.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_details.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_email_test.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_backup.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_monitor.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_start.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_stop.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_validate.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_install.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_fastdl.sh(){ +functionfile="${FUNCNAME}" +fn_runfunction +} + +command_ts3_server_pass.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fn_restart(){ +local modulename="Restarting" +info_config.sh +if [ -d "${scriptlogdir}" ]; then + fn_scriptlog "${servername}" +fi +command_stop.sh +command_start.sh +} + + +# Checks + +check.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_config.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_deps.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_ip.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_logs.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_root.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_steamcmd.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_system_dir.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +check_tmux.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Compress + +compress_unreal2_maps.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +compress_ut99_maps.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Dev + +command_dev_debug.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_dev_detect_deps.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Fix + +fix.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_arma3.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_csgo.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_dst.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_ins.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_steamcmd.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_glibc.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_ro.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_kf.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_ut2k4.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Info + +info_config.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +info_distro.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +info_glibc.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +info_ts3status.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Email + +email.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +# Logs + +logs.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# Monitor + +monitor_gsquery.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +# Update + +update_check.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_update_functions.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +update_dl.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fn_update_functions.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + +# +## Installer functions +# + +fn_autoinstall(){ +autoinstall=1 +command_install.sh +} + +install_complete.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_config.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_gsquery.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_gslt.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_header.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_logs.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_retry.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_server_dir.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} +install_server_files.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_steamcmd.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_ts3.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_ts3db.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_ut2k4.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_dl_ut2k4.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +install_ut2k4_key.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fix_ut99.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +# Calls on-screen messages +core_messages.sh + +#Calls file downloader +core_dl.sh diff --git a/functions/fn_functions b/functions/fn_functions new file mode 100644 index 000000000..f6ea53f55 --- /dev/null +++ b/functions/fn_functions @@ -0,0 +1,20 @@ +#!/bin/bash +# LGSM core_functions.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Redirect to new core_functions.sh + +core_functions.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_runfunction +} + +core_getopt.sh(){ +functionfile="${FUNCNAME}" +fn_runfunction +} + +core_functions.sh \ No newline at end of file diff --git a/functions/fn_getopt b/functions/fn_getopt new file mode 100644 index 000000000..8b52e1865 --- /dev/null +++ b/functions/fn_getopt @@ -0,0 +1,15 @@ +#!/bin/bash +# LGSM core_getopt.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Redirect to new core_getopt.sh + +core_getopt.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_runfunction +} + +core_getopt.sh \ No newline at end of file diff --git a/functions/fn_update_functions b/functions/fn_update_functions new file mode 100644 index 000000000..5fbb28975 --- /dev/null +++ b/functions/fn_update_functions @@ -0,0 +1,22 @@ +#!/bin/bash +# LGSM fn_update_functions.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="230116" + +# Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub. + +fn_print_dots "Updating functions" +fn_scriptlog "Updating functions" +sleep 1 +echo -ne "\n" +rm -rfv "${rootdir}/functions/"* +exitcode=$? +if [ "${exitcode}" == "0" ]; then + fn_print_ok "Updating functions" + fn_scriptlog "Success! Updating functions" +else + fn_print_fail "Updating functions" + fn_scriptlog "Failure! Updating functions" +fi +echo -ne "\n" \ No newline at end of file From 9bdb3f44d5f6ef02b77933447895b8974f87c1dd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 13 Mar 2016 01:07:59 +0000 Subject: [PATCH 278/643] added libdir --- functions/core_functions.sh | 1 + lgsm/functions/core_functions.sh | 1 + lgsm/functions/fix_glibc.sh | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 8f59a57fb..d4993d256 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -23,6 +23,7 @@ fn_fetch_function if [ -z "${lgsmdir}" ]; then lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" + libdir="${lgsmdir}/lib" fi fn_fetch_core_dl(){ diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 8f59a57fb..d4993d256 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -23,6 +23,7 @@ fn_fetch_function if [ -z "${lgsmdir}" ]; then lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" + libdir="${lgsmdir}/lib" fi fn_fetch_core_dl(){ diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 57edcea82..7b6fef81d 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -52,7 +52,7 @@ if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != echo "Version $(ldd --version | sed -n '1s/.* //p') is lower than $glibc_required" if [ "${glibcfix}" == "yes" ]; then echo "applied glibc fix" - echo "export LD_LIBRARY_PATH=:"${lgsmdir}/lib/ubuntu12.04/i386"" + echo "export LD_LIBRARY_PATH=:"${libdir}" export LD_LIBRARY_PATH=:"${lgsmdir}/lib/ubuntu12.04/i386" else echo "no glibc fix available you need to upgrade bro!!" From f06f2fad24c944896f14c73f5da07292387bea0e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 13 Mar 2016 01:09:36 +0000 Subject: [PATCH 279/643] bug fix --- lgsm/functions/fix_glibc.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 7b6fef81d..8b6a992bf 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -52,8 +52,8 @@ if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != echo "Version $(ldd --version | sed -n '1s/.* //p') is lower than $glibc_required" if [ "${glibcfix}" == "yes" ]; then echo "applied glibc fix" - echo "export LD_LIBRARY_PATH=:"${libdir}" - export LD_LIBRARY_PATH=:"${lgsmdir}/lib/ubuntu12.04/i386" + echo "export LD_LIBRARY_PATH=:${libdir}" + export LD_LIBRARY_PATH=:"${libdir}" else echo "no glibc fix available you need to upgrade bro!!" fi From b4d7c03b691f7ce5a6dca7d1d46162b4bc4c3136 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sun, 13 Mar 2016 05:40:24 +0100 Subject: [PATCH 280/643] Gmod tickrate and fix for many maps Fixes https://github.com/dgibbs64/linuxgsm/issues/685 Tickrate needs to be lowered in order to be able to handle a large amount of players. Default tickrate is 66.66, but the -tickrate commnand will round numbers to the lower integer. So i'll default at 66 and not -the more accurate- 67 to not worry anyone with a "non standard" value. For the +r_hunkalloclightmaps 0, it fixes the hunk overflow crash on server startup when using maps with too much lights (and there are a lot of them). It changes the way lights are stored in RAM, the 0 mode (default one a few years ago, and still default one on clients) can handle a way larger amount of lights, but a theoretically a bit slower way. I noticed no difference, so it's a good thing to fix it by default. --- GarrysMod/gmodserver | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 4e62e63a5..e3784c343 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="190216" +version="130316" #### Variables #### @@ -35,8 +35,13 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" +tickrate="66" updateonstart="off" +# Custom Start Parameters +# Default +r_hunkalloclightmaps 0, fixes a start issue on maps with many lights +customparms="+r_hunkalloclightmaps 0" + # Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: http://gameservermanagers.com/gslt @@ -44,7 +49,7 @@ gslt="" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ -parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} +host_workshop_collection ${workshopcollectionid} -authkey ${workshopauth} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" +parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate {tickrate} +host_workshop_collection ${workshopcollectionid} -authkey ${workshopauth} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} ${customparms}" } #### Advanced Variables #### From 951f9d448fa4296e6b2449a2d7de0ea0b095c83d Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sun, 13 Mar 2016 05:59:47 +0100 Subject: [PATCH 281/643] matching updater's version checking Should fix the "not installing the latest version" issue. Will test and pull if working. --- functions/install_ts3.sh | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/functions/install_ts3.sh b/functions/install_ts3.sh index 27598ac56..71d27eec3 100644 --- a/functions/install_ts3.sh +++ b/functions/install_ts3.sh @@ -18,11 +18,8 @@ fi # 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 href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp -# Replaces dots with spaces to split up the number. e.g 3 0 12 1 is 3.0.12.1 this allows correct sorting - cat .ts3_version_numbers_unsorted.tmp | tr "." " " > .ts3_version_numbers_digit.tmp -# Sorts versions in to correct order -# merges 2 files and orders by each column in order allowing these version numbers to be sorted in order -paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp | awk '{print $1,$2,$3,$4 " " $0;}'| sort -k1rn -k2rn -k3rn -k4rn | awk '{print $NF}' > .ts3_version_numbers.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 @@ -32,18 +29,19 @@ while read ts3_version_number; do # Break while-loop, if the latest release could be found break fi -done < .ts3_version_numbers.tmp +done < .ts3_version_numbers_sorted.tmp -# tidy up -rm -f ".ts3_version_numbers_digit.tmp" +# Tidy up rm -f ".ts3_version_numbers_unsorted.tmp" -rm -f ".ts3_version_numbers.tmp" +rm -f ".ts3_version_numbers_sorted.tmp" # Checks availablebuild info is available if [ -z "${availablebuild}" ]; then fn_printfail "Checking for update: teamspeak.com" + fn_scriptlog "Checking for update: teamspeak.com" sleep 1 fn_printfail "Checking for update: teamspeak.com: Not returning version info" + fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info" sleep 2 exit 1 fi From 95afe04aeab0de88c1b8de910e34c32dfa394081 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sun, 13 Mar 2016 07:17:00 +0100 Subject: [PATCH 282/643] fix error with"UNKNOWN" value instead of digit If the server (such as TS3) doesn't required glibc, the glibc needed version is UNKNOWN. That was breaking the command as it expected an numeric value. See https://github.com/dgibbs64/linuxgsm/blob/master/functions/info_glibc.sh#L63 to understand. --- functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_details.sh b/functions/command_details.sh index 396cf487c..a37024a3b 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -145,7 +145,7 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = echo -e "\e[34mUser:\t\e[0m$(whoami)" # GLIBC required - if [ -n "${glibcrequired}" ]; then + if [ -n "${glibcrequired}" ] && [ "${glibcrequired}" != "UNKNOWN" ]; then if [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then if [ "${glibcfix}" == "yes" ]; then echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)" From a7f5af8c8581a54c72b5c0b7356f940689c75688 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Mon, 14 Mar 2016 21:53:57 +0000 Subject: [PATCH 283/643] new glibcfix --- lgsm/functions/fix_glibc.sh | 68 ++++++++++++++----------------------- 1 file changed, 25 insertions(+), 43 deletions(-) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 8b6a992bf..77aa852de 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -4,58 +4,40 @@ # Website: http://gameservermanagers.com lgsm_version="020116" +# Description: Downloads required glibc files and applys teh glibc fix if required + info_glibc.sh -# Blade Symphony -if [ "${gamename}" == "Blade Symphony" ]; then - : -# Dont Starve Together -elif [ "${gamename}" == "Don't Starve Together" ]; then - : -# Double Action: Boogaloo -elif [ "${gamename}" == "Double Action: Boogaloo" ]; then - fn_fetch_file_github "lgsm/lib/ubuntu12.04/i386" "libm.so.6" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" -# Fistful of Frags -elif [ "${gamename}" == "Fistful of Frags" ]; then - : -# Garry's Mod -elif [ "${gamename}" == "Garry's Mod" ]; then - : -# Insurgency -elif [ "${gamename}" == "Insurgency" ]; then - : -elif [ "${gamename}" == "Left 4 Dead" ]; then - : -# Natural Selection 2 -elif [ "${gamename}" == "Natural Selection 2" ]; then - : -# NS2: Combat -elif [ "${gamename}" == "NS2: Combat" ]; then - : -# No More Room in Hell -elif [ "${gamename}" == "No More Room in Hell" ]; then - : -# ARMA 3 -elif [ "${gamename}" == "ARMA 3" ]; then - : -# Just Cause 2 -elif [ "${gamename}" == "Just Cause 2" ]; then - : -# Serious Sam 3: BFE -elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then - : -fi +local libstdc_servers_array=( "ARMA 3" "Blade Symphony" "Garry's Mod" "Just Cause 2" ) +for libstdc_server in "${libstdc_servers_array[@]}" +do + if [ "${gamename}" == "${libstdc_server}" ]; then + fn_fetch_file_github "lgsm/lib/ubuntu12.04/i386" "libstdc++.so.6" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" + fi +done + +local libm_servers_array=( "Double Action: Boogaloo" "Fistful of Frags" "Insurgency" "Natural Selection 2" "NS2: Combat" "No More Room in Hell" ) +for libm_server in "${libm_servers_array[@]}" +do + if [ "${gamename}" == "${libm_server}" ]; then + fn_fetch_file_github "lgsm/lib/ubuntu12.04/i386" "libm.so.6" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" + fi +done +glibc_version="$(ldd --version | sed -n '1s/.* //p')" if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != "${glibc_required}" ]; then - echo "Version $(ldd --version | sed -n '1s/.* //p') is lower than $glibc_required" if [ "${glibcfix}" == "yes" ]; then - echo "applied glibc fix" - echo "export LD_LIBRARY_PATH=:${libdir}" + fn_print_info_nl "Glibc fix: Using Glibc fix" + echo " * glibc required: $glibc_required" + echo " * glibc installed: $glibc_version" export LD_LIBRARY_PATH=:"${libdir}" else - echo "no glibc fix available you need to upgrade bro!!" + fn_print_warn_nl "Glibc fix: No Glibc fix available!" + echo " * glibc required: $glibc_required" + echo " * glibc installed: $glibc_version" + fn_print_infomation "The game server is unlikly to work. A distro upgrade is required" fi else echo "GLIBC is OK no fix required" From fe1c90f3afbce2a5f3258605ff5de64f81249ac3 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:07:11 +0100 Subject: [PATCH 284/643] New fetching system --- 7DaysToDie/sdtdserver | 74 +++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 6a4bd3d39..1828f34a2 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -81,57 +81,63 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 core_getopt.sh - From 5005937f2d779393c48dc6a3af3162ade5a47e0a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:08:23 +0100 Subject: [PATCH 285/643] New fetching system --- ARKSurvivalEvolved/arkserver | 71 ++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 2304ef566..0fce5234e 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -77,55 +77,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 914b2d495a326928c33a6427e2879c5745516999 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:08:45 +0100 Subject: [PATCH 286/643] New fetching system --- Arma3/arma3server | 71 ++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/Arma3/arma3server b/Arma3/arma3server index ff296e3bc..daaf779ad 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -100,55 +100,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 6b0490c403bd6c3f9b62e7cd69f9f9539ce52dd4 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:09:04 +0100 Subject: [PATCH 287/643] New fetching system --- BlackMesa/bmdmserver | 71 ++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index d31b067fc..7561a3b7d 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -88,55 +88,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 73b2e860aeab2713fdeec3a5e0f608001c03a719 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:09:22 +0100 Subject: [PATCH 288/643] New fetching system --- BladeSymphony/bsserver | 71 +++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 87f1ff2ee..5cc52d6ec 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 3bb27036acbb8031e240b95cdcf11bbef8fd2dda Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:23:47 +0100 Subject: [PATCH 289/643] New fetching system --- BrainBread2/bb2server | 73 ++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index df17a46f9..b0e4ba6b1 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="090116" +version="150316" #### Variables #### @@ -88,55 +88,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 90af7db737cab373a13c0c65d50b2c89dff70d53 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:23:49 +0100 Subject: [PATCH 290/643] New fetching system --- CodenameCURE/ccserver | 73 ++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index a80d57b2d..5d770df13 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 0f41353277d6c8316e30c0b8190e033a86f843bc Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:23:52 +0100 Subject: [PATCH 291/643] New fetching system --- CounterStrike/csserver | 73 +++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 4fa7104d8..b65b13cd3 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From da57ee44007d1cb67eaed3b6530e8f58a26e9ef2 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:23:55 +0100 Subject: [PATCH 292/643] New fetching system --- CounterStrikeConditionZero/csczserver | 73 +++++++++++++++------------ 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index a6eca599c..0b01c5b00 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From c9b1de51a671b1305fd426a6052fe71ae096acbb Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:23:58 +0100 Subject: [PATCH 293/643] New fetching system --- CounterStrikeGlobalOffensive/csgoserver | 73 ++++++++++++++----------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 64c2b0993..550e27d69 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -106,55 +106,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 8404d922cc6282f2fd05b3e72bc12711db294182 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:03 +0100 Subject: [PATCH 294/643] New fetching system --- CounterStrikeSource/cssserver | 73 +++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 3efde2766..e2f21f407 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From b8f210b8e994a0b93e67202b3344878f9f75ac2e Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:06 +0100 Subject: [PATCH 295/643] New fetching system --- DayOfDefeat/dodserver | 73 ++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 88ea3b92a..3eb74a1cf 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 5300dec2c0b1136f1c81a84ca10f5b1f95a2dff7 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:09 +0100 Subject: [PATCH 296/643] New fetching system --- DayOfDefeatSource/dodsserver | 73 ++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 5d80d01b0..f1b71c23c 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From ab61d08c711cbe89b826565b045f7d5719ddfd3c Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:12 +0100 Subject: [PATCH 297/643] New fetching system --- DeathmatchClassic/dmcserver | 73 ++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 0b9efa02a..708433aff 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 470003dcf0b5ec21180390c55d7197293262a20c Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:17 +0100 Subject: [PATCH 298/643] New fetching system --- DontStarveTogether/dstserver | 73 ++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index f6b0afe42..74a1761a4 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -81,55 +81,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 0e5feb8ec3a65a735e1aa8f19706d4ee59452736 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:20 +0100 Subject: [PATCH 299/643] New fetching system --- DoubleActionBoogaloo/dabserver | 73 +++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 1887682e9..5b55e7838 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 6b5455397cfbd5513d114bda2fd35d87c36be267 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:22 +0100 Subject: [PATCH 300/643] New fetching system --- FistfulOfFrags/fofserver | 73 ++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index eaa85694f..94f4e3fb3 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 7ccb5efbe4253eaf5dec6c0568c4ab43572283b7 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:26 +0100 Subject: [PATCH 301/643] New fetching system --- GarrysMod/gmodserver | 73 ++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 4e62e63a5..8ae8c6a1f 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="190216" +version="150316" #### Variables #### @@ -95,55 +95,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 78b459272e04a4b64c07bee9aade55f523057fe2 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:29 +0100 Subject: [PATCH 302/643] New fetching system --- GoldenEyeSource/gesserver | 76 +++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index f473dcc57..afe6a9f09 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -6,11 +6,10 @@ if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" - set -x fi -version="271215" +version="150316" #### Variables #### export MALLOC_CHECK_=0 @@ -85,56 +84,63 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From f9683ecc3a034d032ff8403453446f8a1960cedf Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:32 +0100 Subject: [PATCH 303/643] New fetching system --- HalfLife2Deathmatch/hl2dmserver | 73 ++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 271a024ef..c76c6f79c 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 64cbd1abdb420c4453b3f0a88b7fafee7924fe48 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:35 +0100 Subject: [PATCH 304/643] New fetching system --- HalfLifeDeathmatch/hldmserver | 73 +++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index b74914da1..8bc4ad8ed 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -82,55 +82,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From d288668503e55f70aa4b47f0b10785b9cfc13c14 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:55 +0100 Subject: [PATCH 305/643] New fetching system --- HalfLifeDeathmatchSource/hldmsserver | 73 +++++++++++++++------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 33b2d0723..3d6e8439e 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 00d24f56f82e6a340619d98dbe19380af22de0f5 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:24:59 +0100 Subject: [PATCH 306/643] New fetching system --- Hurtworld/hwserver | 74 +++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 3a019f6d5..fd340b888 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -96,57 +96,63 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo " ${curl}"|grep "curl:" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 core_getopt.sh - From 2c6cfd5cab1ebc68721ffa6d27c99520e5e1bd4f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:02 +0100 Subject: [PATCH 307/643] New fetching system --- Insurgency/insserver | 73 ++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/Insurgency/insserver b/Insurgency/insserver index 66e511149..7538729ff 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -85,55 +85,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From e088a49634fff0e9533822fe80004b1ddfc902e2 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:05 +0100 Subject: [PATCH 308/643] New fetching system --- JustCause2/jc2server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 2f037c799..8b27675a7 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160316" +version="150316" #### Variables #### From 3dbd0a15e65a61b2b42ef8ca45072f76c654157d Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:07 +0100 Subject: [PATCH 309/643] New fetching system --- KillingFloor/kfserver | 73 ++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 2aa5af27b..5693cfafe 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -85,55 +85,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From df3671ebbccf7d1e263220a82c0a0bd461a1a357 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:09 +0100 Subject: [PATCH 310/643] New fetching system --- Left4Dead/l4dserver | 73 +++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 519ab1379..f34edcc3b 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From c7d824a989d8c2d0d4bf5f1319b2230b2de25f1a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:12 +0100 Subject: [PATCH 311/643] New fetching system --- Left4Dead2/l4d2server | 73 ++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 6c966cb6e..aaf08e225 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -82,55 +82,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 30954f7f3bf2b25cbf085bc69fdb1ae64603fe26 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:14 +0100 Subject: [PATCH 312/643] New fetching system --- Mumble/mumbleserver | 74 ++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index c0bfa4692..5d8d5e1dc 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -62,57 +62,63 @@ githubbranch="master" ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 core_getopt.sh - From 68899b334aff18393a22a5a27c3e963472e8ab04 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:17 +0100 Subject: [PATCH 313/643] New fetching system --- NS2Combat/ns2cserver | 73 ++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index a5683bf81..4f5428d00 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -88,55 +88,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From adeb231fc0240e873c6117f61248a69ad5dafffb Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:20 +0100 Subject: [PATCH 314/643] New fetching system --- NaturalSelection2/ns2server | 73 ++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index d53651b7f..9cfe4045c 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -88,55 +88,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From faf6849e8dbcee0f1b17bfd6bb7b9ae4390a5c67 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:23 +0100 Subject: [PATCH 315/643] New fetching system --- NoMoreRoomInHell/nmrihserver | 73 ++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 26c836f2d..da4923b8f 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 1c54e492ae7e134ffae3e7e1945b03e28f93194a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:25 +0100 Subject: [PATCH 316/643] New fetching system --- OpposingForce/opforserver | 73 +++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 61e9b4128..3222c50ed 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 8254dca8be82c9361727b4cb82ac40b7a078cff3 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:28 +0100 Subject: [PATCH 317/643] New fetching system --- PiratesVikingandKnightsII/pvkiiserver | 73 +++++++++++++++------------ 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 5a4588753..8f8ab066f 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From caf5f15ae81eedb5d798ea3c126f73becbd9968e Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:31 +0100 Subject: [PATCH 318/643] New fetching system --- ProjectZomboid/pzserver | 73 ++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 701827e96..26e3857b4 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -77,55 +77,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 480b6a66623dee1a094033488d30f07487938152 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:35 +0100 Subject: [PATCH 319/643] New fetching system --- QuakeLive/qlserver | 73 +++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 3e8246d3d..eddbc8003 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="190216" +version="150316" #### Variables #### arch="x64" @@ -87,55 +87,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From c41ee057a63304244ca72ff5a8e8dea889f73cf9 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:37 +0100 Subject: [PATCH 320/643] New fetching system --- RedOrchestra/roserver | 73 ++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 4e6424814..f0a85d7f6 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -81,55 +81,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 8d34416acd644a1e372591b87c2db9eb55c52dc7 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:40 +0100 Subject: [PATCH 321/643] New fetching system --- Ricochet/ricochetserver | 73 ++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 555c1b39b..ad2ad6bb2 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 3b589c1b25dc877703169ba6f74bf74daca36129 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:42 +0100 Subject: [PATCH 322/643] New fetching system --- Rust/rustserver | 73 +++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 8d98109f0..e18e917f2 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="230215" +version="150316" #### Variables #### @@ -103,55 +103,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo " ${curl}"|grep "curl:" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From d3fd2ed05474518248a46954a1f082bb14451256 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:44 +0100 Subject: [PATCH 323/643] New fetching system --- SeriousSam3BFE/ss3sserver | 73 +++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 0ffefc5e8..ceda12d19 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="121215" +version="150316" #### Variables #### @@ -80,55 +80,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 5f8823054f0ce1f63182620368693322a12c1a38 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:46 +0100 Subject: [PATCH 324/643] New fetching system --- StarBound/sbserver | 73 +++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/StarBound/sbserver b/StarBound/sbserver index c8253a643..56f6285d3 100644 --- a/StarBound/sbserver +++ b/StarBound/sbserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -76,55 +76,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 122f23ae8ec32abbabe46d0f227c9548e8b8d95f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:49 +0100 Subject: [PATCH 325/643] New fetching system --- SvenCoop/svencoopserver | 75 ++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/SvenCoop/svencoopserver b/SvenCoop/svencoopserver index f4abfc4c5..a870b9bcc 100644 --- a/SvenCoop/svencoopserver +++ b/SvenCoop/svencoopserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -82,56 +82,63 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 15995a619c40dd224c4e401c3ab581c1291ec319 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:51 +0100 Subject: [PATCH 326/643] New fetching system --- TeamFortress2/tf2server | 73 ++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 984817ab0..ed9a23d5c 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -88,55 +88,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 0317a3c8232bfa3448e8bb8705b414afed9f50e2 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:54 +0100 Subject: [PATCH 327/643] New fetching system --- TeamFortressClassic/tfcserver | 73 +++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index d1ee8b4c3..4a5c3b325 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -83,55 +83,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 1856839f923d02aec2906fbad7058da8598cb352 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:56 +0100 Subject: [PATCH 328/643] New fetching system --- TeamSpeak3/ts3server | 73 ++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 311474c30..93c206ea6 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="251215" +version="150316" #### Variables #### @@ -60,55 +60,62 @@ githubbranch="master" ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From 4cd0122d16d5b8a5d4a861e6f7b30e642b151203 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:25:58 +0100 Subject: [PATCH 329/643] New fetching system --- Teeworlds/twserver | 73 +++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/Teeworlds/twserver b/Teeworlds/twserver index a051ebe9e..1fb104008 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -79,55 +79,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From da50685015b8ecb94aafe9875bf7b4de304b0382 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:26:01 +0100 Subject: [PATCH 330/643] New fetching system --- Terraria/terrariaserver | 73 ++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index f8088bd16..aac928e26 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -78,55 +78,62 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M- ##### Script ##### # Do not edit -fn_getgithubfile(){ -filename=$1 -exec=$2 -fileurl=${3:-$filename} -filepath="${rootdir}/${filename}" -filedir=$(dirname "${filepath}") -# If the function file is missing, then download -if [ ! -f "${filepath}" ]; then +# Fetches core_dl for file downloads +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then if [ ! -d "${filedir}" ]; then - mkdir "${filedir}" + mkdir -p "${filedir}" fi - githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" echo -e " fetching ${filename}...\c" - if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then - : - else + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" - exit - fi - curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curl}" - echo -e "${githuburl}\n" - exit - else - echo -e "\e[0;32mOK\e[0m" - fi - if [ "${exec}" ]; then - chmod +x "${filepath}" + exit 1 fi + chmod +x "${filedir}/${filename}" fi -if [ "${exec}" ]; then - source "${filepath}" -fi +source "${filedir}/${filename}" } -fn_runfunction(){ - fn_getgithubfile "functions/${functionfile}" 1 +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } +core_dl.sh core_functions.sh getopt=$1 From a8d6d3f707fe6583c51c06dd34d53edaebb98739 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:26:04 +0100 Subject: [PATCH 331/643] New fetching system --- UnrealTournament2004/ut2k4server | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 0cd432645..ffe97329e 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### @@ -132,4 +132,4 @@ core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 70ea1175586bc5c2112898a0048d1c289b8022a2 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:26:41 +0100 Subject: [PATCH 332/643] New fetching system --- UnrealTournament99/ut99server | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index c6bc5ef42..b5f6e591e 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="260216" +version="150316" #### Variables #### @@ -132,4 +132,4 @@ core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From be181942f3794964cbb8ea5c3f7ce46c0bf16414 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:27:15 +0100 Subject: [PATCH 333/643] New fetching system --- ARKSurvivalEvolved/arkserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 0fce5234e..f130941e4 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### From dad391915b3b36ec64a897308b69add878c65215 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:27:33 +0100 Subject: [PATCH 334/643] New fetching system --- Arma3/arma3server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Arma3/arma3server b/Arma3/arma3server index daaf779ad..2b10592a8 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### From d6d26172265254e4890dbe4e0cff26ea5e884124 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:27:49 +0100 Subject: [PATCH 335/643] New fetching system --- BlackMesa/bmdmserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 7561a3b7d..f599a30d6 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### From 4c99456420115920796e38d2391b8fa6ffc054e4 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 01:28:04 +0100 Subject: [PATCH 336/643] New fetching system --- BladeSymphony/bsserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 5cc52d6ec..64084d649 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="271215" +version="150316" #### Variables #### From b987bc91e912fea2b88418473c386fd5481e4ce6 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:04:26 +0100 Subject: [PATCH 337/643] New fetching system (LGSM & Functions dirs) --- ARKSurvivalEvolved/arkserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index f130941e4..7b58dd823 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -51,6 +51,8 @@ engine="unreal4" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/ShooterGame" executabledir="${systemdir}/Binaries/Linux" From 63f09e34803f81324534e0aa7b421b449c73b2c8 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:04:33 +0100 Subject: [PATCH 338/643] New fetching system (LGSM & Functions dirs) --- Arma3/arma3server | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Arma3/arma3server b/Arma3/arma3server index 2b10592a8..927a406c7 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -71,6 +71,8 @@ engine="realvirtuality" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From c22772ecd534f2426f3136a050514c4d1235ea65 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:04:41 +0100 Subject: [PATCH 339/643] New fetching system (LGSM & Functions dirs) --- BlackMesa/bmdmserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index f599a30d6..1d8f3d8fb 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -62,6 +62,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/bms" executabledir="${filesdir}" From db169d70e3a999b6cfcf718cfeed25768b8525ec Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:04:47 +0100 Subject: [PATCH 340/643] New fetching system (LGSM & Functions dirs) --- BladeSymphony/bsserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 64084d649..a6e284b84 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/berimbau" executabledir="${filesdir}" From 64cc4a8dd4ca563cedcaf154056dfa892bb05cf4 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:04:50 +0100 Subject: [PATCH 341/643] New fetching system (LGSM & Functions dirs) --- BrainBread2/bb2server | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index b0e4ba6b1..7053f0cb1 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -62,6 +62,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/brainbread2" executabledir="${filesdir}" From b671a2ed3742e5b94660da41bcada77e9cd2df7a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:04:53 +0100 Subject: [PATCH 342/643] New fetching system (LGSM & Functions dirs) --- CodenameCURE/ccserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 5d770df13..bd99f374d 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/cure" executabledir="${filesdir}" From a6d9b320205aff0df0fc0de49ba4993b4d6c8365 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:04:58 +0100 Subject: [PATCH 343/643] New fetching system (LGSM & Functions dirs) --- CounterStrike/csserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CounterStrike/csserver b/CounterStrike/csserver index b65b13cd3..e9006ac65 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -57,6 +57,8 @@ engine="goldsource" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/cstrike" executabledir="${filesdir}" From ad92ae3d4d1aec6a2c4e524cc664b76157549a33 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:11 +0100 Subject: [PATCH 344/643] New fetching system (LGSM & Functions dirs) --- CounterStrikeConditionZero/csczserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 0b01c5b00..16230be9c 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -57,6 +57,8 @@ engine="goldsource" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/czero" executabledir="${filesdir}" From b364c86b4a331a42fc2f3f2ae0f15a015ec2be8d Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:17 +0100 Subject: [PATCH 345/643] New fetching system (LGSM & Functions dirs) --- CounterStrikeGlobalOffensive/csgoserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 550e27d69..2eb8dac03 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -80,6 +80,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/csgo" executabledir="${filesdir}" From addd2f120d5950e66fed4acdb2766d5139f44ef3 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:20 +0100 Subject: [PATCH 346/643] New fetching system (LGSM & Functions dirs) --- CounterStrikeSource/cssserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index e2f21f407..03e7716c6 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/cstrike" executabledir="${filesdir}" From fb98c1d82219c617e722b2f58d80b47968c2da29 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:23 +0100 Subject: [PATCH 347/643] New fetching system (LGSM & Functions dirs) --- DayOfDefeat/dodserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 3eb74a1cf..55989c424 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -57,6 +57,8 @@ engine="goldsource" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/dod" executabledir="${filesdir}" From 3ec4c795fc415ebd97274d883d6eb863f9b8e1a1 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:26 +0100 Subject: [PATCH 348/643] New fetching system (LGSM & Functions dirs) --- DayOfDefeatSource/dodsserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index f1b71c23c..71cc51b41 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/dod" executabledir="${filesdir}" From e2843c8fa42814ac1b567cb6977c5dd6a1dcb96a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:28 +0100 Subject: [PATCH 349/643] New fetching system (LGSM & Functions dirs) --- DeathmatchClassic/dmcserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 708433aff..62951a357 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -57,6 +57,8 @@ engine="goldsource" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/dmc" executabledir="${filesdir}" From 0ea2a4b9e05aa5ccfa5661d4c494bb853ab8a1e0 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:31 +0100 Subject: [PATCH 350/643] New fetching system (LGSM & Functions dirs) --- DontStarveTogether/dstserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 74a1761a4..d479d966b 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -55,6 +55,8 @@ engine="dontstarve" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}/bin" From 9f8e701d9912e20387f97c4b848a6a30e891cbd5 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:33 +0100 Subject: [PATCH 351/643] New fetching system (LGSM & Functions dirs) --- DoubleActionBoogaloo/dabserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 5b55e7838..831451f96 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/dab" executabledir="${filesdir}" From 522f8b135c9898629571b74fc7489d92d240d7d1 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:36 +0100 Subject: [PATCH 352/643] New fetching system (LGSM & Functions dirs) --- FistfulOfFrags/fofserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 94f4e3fb3..298f57c76 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/fof" executabledir="${filesdir}" From 395f2e0f92fd2882364629a04a5ce779e72e4b8a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:38 +0100 Subject: [PATCH 353/643] New fetching system (LGSM & Functions dirs) --- GarrysMod/gmodserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 8ae8c6a1f..879cd1d01 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -68,6 +68,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/garrysmod" addonsdir="${systemdir}/addons" From 49b21c4837bdad3985113af193ddebbdce481faf Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:41 +0100 Subject: [PATCH 354/643] New fetching system (LGSM & Functions dirs) --- GoldenEyeSource/gesserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index afe6a9f09..c90e17b0f 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -58,6 +58,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/gesource" executabledir="${filesdir}" From 579060fb7015c4c1cddbe01e4d91d3023c41962a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:44 +0100 Subject: [PATCH 355/643] New fetching system (LGSM & Functions dirs) --- HalfLife2Deathmatch/hl2dmserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index c76c6f79c..e375010d1 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/hl2mp" executabledir="${filesdir}" From 14ae5a5e72c8abefcc85c205604a4d7fe8751278 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:48 +0100 Subject: [PATCH 356/643] New fetching system (LGSM & Functions dirs) --- HalfLifeDeathmatch/hldmserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 8bc4ad8ed..bf65048eb 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -56,6 +56,8 @@ engine="goldsource" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/valve" executabledir="${filesdir}" From 1e1b56bdcce7cae4626ed1aa20ea5521a19baab2 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:54 +0100 Subject: [PATCH 357/643] New fetching system (LGSM & Functions dirs) --- HalfLifeDeathmatchSource/hldmsserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 3d6e8439e..f6254c5a9 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/hl1mp" executabledir="${filesdir}" From 267342eb6b054e67d685131796171c7cd7e59682 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:05:56 +0100 Subject: [PATCH 358/643] New fetching system (LGSM & Functions dirs) --- Hurtworld/hwserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index fd340b888..3bcf80f38 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -69,6 +69,8 @@ engine="unity3d" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname=$(basename $(readlink -f "${BASH_SOURCE[0]}")) lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From cd6a3e09c3a35827e761fd087ff2078889044961 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:05 +0100 Subject: [PATCH 359/643] New fetching system (LGSM & Functions dirs) --- Insurgency/insserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Insurgency/insserver b/Insurgency/insserver index 7538729ff..d92d8fdc0 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -59,6 +59,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/insurgency" executabledir="${filesdir}" From e53d522db4ff2d9ae35b3da03ed1eea87f1ce8a7 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:08 +0100 Subject: [PATCH 360/643] New fetching system (LGSM & Functions dirs) --- KillingFloor/kfserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 5693cfafe..43cc1d053 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -56,6 +56,8 @@ engine="unreal2" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/System" executabledir="${systemdir}" From 3e5facf709a5a2d12b16e204a4297bf5bfaebc9b Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:11 +0100 Subject: [PATCH 361/643] New fetching system (LGSM & Functions dirs) --- Left4Dead/l4dserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index f34edcc3b..71382b270 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/left4dead" executabledir="${filesdir}" From dd00bed661395cb41f40b8c4e72bf958042d8c94 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:14 +0100 Subject: [PATCH 362/643] New fetching system (LGSM & Functions dirs) --- Left4Dead2/l4d2server | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index aaf08e225..230a0bb63 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -56,6 +56,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/left4dead2" executabledir="${filesdir}" From adbf484f46e77fe8cf8a0c204d181103cb2f0324 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:16 +0100 Subject: [PATCH 363/643] New fetching system (LGSM & Functions dirs) --- Mumble/mumbleserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 5d8d5e1dc..ca422673d 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -26,6 +26,8 @@ servicename="mumble-server" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From 5e2b88a5b9d4d8ff3de66ed34a975c95d9f740db Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:19 +0100 Subject: [PATCH 364/643] New fetching system (LGSM & Functions dirs) --- NS2Combat/ns2cserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 4f5428d00..df6a28386 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -66,6 +66,8 @@ engine="spark" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}/ia32" From 592526c7304aff555805620f70c2d05545bada6a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:21 +0100 Subject: [PATCH 365/643] New fetching system (LGSM & Functions dirs) --- NaturalSelection2/ns2server | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 9cfe4045c..6fe81eee8 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -66,6 +66,8 @@ engine="spark" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From da0f86a0d23505f6af47474bc103ec3f245d0b54 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:23 +0100 Subject: [PATCH 366/643] New fetching system (LGSM & Functions dirs) --- NoMoreRoomInHell/nmrihserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index da4923b8f..7a027a4ab 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/nmrih" executabledir="${filesdir}" From 5ea81e9eefda4ed827ce6273ad5f75175ac84f51 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:25 +0100 Subject: [PATCH 367/643] New fetching system (LGSM & Functions dirs) --- OpposingForce/opforserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 3222c50ed..8211e1212 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -57,6 +57,8 @@ engine="goldsource" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/gearbox" executabledir="${filesdir}" From 0c1795e5acc7d34add930170c1376fed8a5c8c9f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:28 +0100 Subject: [PATCH 368/643] New fetching system (LGSM & Functions dirs) --- PiratesVikingandKnightsII/pvkiiserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 8f8ab066f..abc153a44 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -57,6 +57,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/pvkii" executabledir="${filesdir}" From c781d621e92144dac37c16d86f2257f19d4d2376 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:31 +0100 Subject: [PATCH 369/643] New fetching system (LGSM & Functions dirs) --- ProjectZomboid/pzserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 26e3857b4..f4070a6f8 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -52,6 +52,8 @@ engine="projectzomboid" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From 36a717a1750a75cc5d6c34cf550f502bb2edf85b Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:33 +0100 Subject: [PATCH 370/643] New fetching system (LGSM & Functions dirs) --- QuakeLive/qlserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index eddbc8003..5ff2c73f5 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -60,6 +60,8 @@ engine="idtech3" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From cf26442f05aad2e59d930558b47396f1a1bb9860 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:36 +0100 Subject: [PATCH 371/643] New fetching system (LGSM & Functions dirs) --- RedOrchestra/roserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index f0a85d7f6..75180f22d 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -52,6 +52,8 @@ appid="223250" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/system" executabledir="${systemdir}" From a906800fe6d6adfcdb8aab688456084bd370fc37 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:39 +0100 Subject: [PATCH 372/643] New fetching system (LGSM & Functions dirs) --- Ricochet/ricochetserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index ad2ad6bb2..edf1fd63d 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -57,6 +57,8 @@ engine="goldsource" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/ricochet" executabledir="${filesdir}" From 0453ab02823b4d502835209e2958ee8d68ade492 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:41 +0100 Subject: [PATCH 373/643] New fetching system (LGSM & Functions dirs) --- Rust/rustserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Rust/rustserver b/Rust/rustserver index e18e917f2..ce5c2b2f3 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -74,6 +74,8 @@ engine="unity3d" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname=$(basename $(readlink -f "${BASH_SOURCE[0]}")) lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From 03a7bf3dbf46b65dead4bde265f222d191f9a355 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:44 +0100 Subject: [PATCH 374/643] New fetching system (LGSM & Functions dirs) --- SeriousSam3BFE/ss3sserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index ceda12d19..7e147f824 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -52,6 +52,8 @@ engine="seriousengine35" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/Bin" executable="./runSam3_DedicatedServer.sh" From 22ad083ccecc39ec0d88cf630f260cf76ace3bf2 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:46 +0100 Subject: [PATCH 375/643] New fetching system (LGSM & Functions dirs) --- StarBound/sbserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/StarBound/sbserver b/StarBound/sbserver index 56f6285d3..171f6778c 100644 --- a/StarBound/sbserver +++ b/StarBound/sbserver @@ -51,6 +51,8 @@ engine="starbound" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}/linux64" From bb3c3487c6f1e252835bb8b43bb8a51007026a88 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:49 +0100 Subject: [PATCH 376/643] New fetching system (LGSM & Functions dirs) --- SvenCoop/svencoopserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SvenCoop/svencoopserver b/SvenCoop/svencoopserver index a870b9bcc..735414ccd 100644 --- a/SvenCoop/svencoopserver +++ b/SvenCoop/svencoopserver @@ -56,6 +56,8 @@ engine="goldsource" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/svencoop" executabledir="${filesdir}" From 70f021f356547e5133294dbd2489c16cd0d17e34 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:52 +0100 Subject: [PATCH 377/643] New fetching system (LGSM & Functions dirs) --- TeamFortress2/tf2server | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index ed9a23d5c..8a3ec65f3 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -62,6 +62,8 @@ engine="source" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/tf" executabledir="${filesdir}" From 58bfb1b85be9cb9ea105603bd3eb10a1789f0c92 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:54 +0100 Subject: [PATCH 378/643] New fetching system (LGSM & Functions dirs) --- TeamFortressClassic/tfcserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 4a5c3b325..fd88681fa 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -57,6 +57,8 @@ engine="goldsource" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/tfc" executabledir="${filesdir}" From 1628f68c02dba61fbb3ead7cfa9f64658cad0b25 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:06:57 +0100 Subject: [PATCH 379/643] New fetching system (LGSM & Functions dirs) --- TeamSpeak3/ts3server | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 93c206ea6..11d91a529 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -30,6 +30,8 @@ servicename="ts3-server" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From 1d6bcfec430e132c23d3228f131620989d93d874 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:07:00 +0100 Subject: [PATCH 380/643] New fetching system (LGSM & Functions dirs) --- Teeworlds/twserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 1fb104008..7d087ca37 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -52,6 +52,8 @@ engine="teeworlds" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From 7ae777edede29fa1ab3645155d34caf2d471bd5a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 02:07:02 +0100 Subject: [PATCH 381/643] New fetching system (LGSM & Functions dirs) --- Terraria/terrariaserver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index aac928e26..3e96560f5 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -52,6 +52,8 @@ engine="terraria" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" From 6a8ba9b6af3cc6db439cba93b3bdb68c3bae0881 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 04:22:26 +0100 Subject: [PATCH 382/643] Rust Game/Query port is tcp&udp --- functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_details.sh b/functions/command_details.sh index a37024a3b..4a481bc02 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -549,7 +549,7 @@ echo -e "netstat -atunp | grep Rust" echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\tudp" + echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" echo -e "> RCON\tINBOUND\t${rconport}\ttcp" } | column -s $'\t' -t From 952cfa00102cf48d68429a306d5406b9b264f851 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 04:23:24 +0100 Subject: [PATCH 383/643] Rust Game/Query port is tcp&udp --- lgsm/functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 6ec515d00..2dbe9a21f 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -549,7 +549,7 @@ echo -e "netstat -atunp | grep Rust" echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\tudp" + echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" echo -e "> RCON\tINBOUND\t${rconport}\ttcp" } | column -s $'\t' -t From 7f8c0dcfcf071cb4b528e66cfdc1d6aa26b01b66 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 06:53:06 +0100 Subject: [PATCH 384/643] Init permissions --- lgsm/functions/check_permissions.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 lgsm/functions/check_permissions.sh diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh new file mode 100644 index 000000000..c9dcfa61d --- /dev/null +++ b/lgsm/functions/check_permissions.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# LGSM check_permissions function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: http://gameservermanagers.com +lgsm_version="150316" + +# Description: Checks script, files and folders ownership and permissions. + +# Initializing useful variables +currentuser="$(sh -c 'whoami')" +scriptfullpath="${rootdir}/${selfname}" + +fn_check_ownership(){ +if [ "${currentuser}" != "$(stat -c %U ${scripfullpath})" ] || [ "${currentuser}" != "$(stat -c %G ${scripfullpath})" ]; then + fn_print_fail_nl "Permission denied" + exit 1 +fi +} + +fn_check_ownership From d5d31f21ef98ef688751ce197916a75cd6e751fd Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 06:55:06 +0100 Subject: [PATCH 385/643] added check_permissions.sh --- lgsm/functions/core_functions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index d4993d256..613311a14 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -192,6 +192,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +check_permissions.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + check_root.sh(){ functionfile="${FUNCNAME}" fn_fetch_function From dd3b4500e52029125f97a2399ed6a38c0cf65bf8 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 06:57:50 +0100 Subject: [PATCH 386/643] added check_permissions.sh --- lgsm/functions/check.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 69f62f0ad..186f30859 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -11,6 +11,7 @@ lgsm_version="060316" # check.sh selects which checks to run by using arrays check_root.sh +check_permissions.sh if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname}" != "command_update_functions.sh" ]; then check_system_dir.sh @@ -64,4 +65,4 @@ do if [ "${allowed_command}" == "${function_selfname}" ]; then check_config.sh fi -done \ No newline at end of file +done From 81baf801592d58e7abe8b7ae775039f6dc9810a3 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 07:31:05 +0100 Subject: [PATCH 387/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index c9dcfa61d..d4f3a5423 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -10,12 +10,21 @@ lgsm_version="150316" # Initializing useful variables currentuser="$(sh -c 'whoami')" scriptfullpath="${rootdir}/${selfname}" +permissionerror="0" fn_check_ownership(){ -if [ "${currentuser}" != "$(stat -c %U ${scripfullpath})" ] || [ "${currentuser}" != "$(stat -c %G ${scripfullpath})" ]; then +if [ "${currentuser}" != "$(stat -c %U "${scriptfullpath}")" ] && [ "${currentuser}" != "$(stat -c %G "${scriptfullpath}")" ]; then + permissionerror="1" fn_print_fail_nl "Permission denied" + echo " * To check allowed user and group run ls -l ${selfname}" +fi +} + +fn_check_permissions_summary(){ +if [ "${permissionerror}" == "1" ]; then exit 1 fi } fn_check_ownership +fn_check_permissions_summary From 77dc1d29dd9b536197a680a50f857ac76233631c Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 07:38:29 +0100 Subject: [PATCH 388/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index d4f3a5423..09eae2f67 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -8,13 +8,14 @@ lgsm_version="150316" # Description: Checks script, files and folders ownership and permissions. # Initializing useful variables -currentuser="$(sh -c 'whoami')" +currentuser="$(whoami)" scriptfullpath="${rootdir}/${selfname}" permissionerror="0" fn_check_ownership(){ if [ "${currentuser}" != "$(stat -c %U "${scriptfullpath}")" ] && [ "${currentuser}" != "$(stat -c %G "${scriptfullpath}")" ]; then permissionerror="1" + fn_scriptlog "Attempted to run as ${currentuser}" fn_print_fail_nl "Permission denied" echo " * To check allowed user and group run ls -l ${selfname}" fi From 2e2158b47a27daac3ceab5ba6fd170f2eede1581 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 08:40:43 +0100 Subject: [PATCH 389/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 09eae2f67..f9ba9d7ba 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -15,12 +15,25 @@ permissionerror="0" fn_check_ownership(){ if [ "${currentuser}" != "$(stat -c %U "${scriptfullpath}")" ] && [ "${currentuser}" != "$(stat -c %G "${scriptfullpath}")" ]; then permissionerror="1" - fn_scriptlog "Attempted to run as ${currentuser}" fn_print_fail_nl "Permission denied" echo " * To check allowed user and group run ls -l ${selfname}" fi } +fn_check_permissions(){ +if [ -n "${functionsdir}" ]; then + for f in $(find "${functionsdir}" -name "*.sh"); do perm="$(stat -c %a "$f")"; + find "${functionsdir}" -name "*.sh" | while read filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo ${perms:0:1})"; + if [ "${shortperm}" != "7" ]; then + permissionerror="1" + echo "Found permission error on $filename" + fn_print_warn_n1 "Warning, permission issues found in ${functionsdir}" + echo " * Easy fix : chmod -R 755 ${functionsdir}" + fi + done +fi +} + fn_check_permissions_summary(){ if [ "${permissionerror}" == "1" ]; then exit 1 @@ -28,4 +41,5 @@ fi } fn_check_ownership +fn_check_permissions fn_check_permissions_summary From 296a75f2243d99c37998d051b81aa607400ccc2a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 08:42:02 +0100 Subject: [PATCH 390/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index f9ba9d7ba..19689ab8b 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -22,8 +22,7 @@ fi fn_check_permissions(){ if [ -n "${functionsdir}" ]; then - for f in $(find "${functionsdir}" -name "*.sh"); do perm="$(stat -c %a "$f")"; - find "${functionsdir}" -name "*.sh" | while read filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo ${perms:0:1})"; + find "${functionsdir}" -name "*.sh" | while read filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo ${perms:0:1})"; if [ "${shortperm}" != "7" ]; then permissionerror="1" echo "Found permission error on $filename" From b7b2d83fea74d87e60d33603ce333a2403a8a20a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 08:44:11 +0100 Subject: [PATCH 391/643] fixes --- lgsm/functions/check_permissions.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 19689ab8b..e4eb7a247 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -22,11 +22,11 @@ fi fn_check_permissions(){ if [ -n "${functionsdir}" ]; then - find "${functionsdir}" -name "*.sh" | while read filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo ${perms:0:1})"; + find "${functionsdir}" -name "*.sh" | while read filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo ${perm:0:1})"; if [ "${shortperm}" != "7" ]; then permissionerror="1" echo "Found permission error on $filename" - fn_print_warn_n1 "Warning, permission issues found in ${functionsdir}" + fn_print_warn_nl "Warning, permission issues found in ${functionsdir}" echo " * Easy fix : chmod -R 755 ${functionsdir}" fi done From 8dd552891459b2fe84c0096ab69c25a8fc0e3e77 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 08:47:32 +0100 Subject: [PATCH 392/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index e4eb7a247..e293b1585 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -22,7 +22,7 @@ fi fn_check_permissions(){ if [ -n "${functionsdir}" ]; then - find "${functionsdir}" -name "*.sh" | while read filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo ${perm:0:1})"; + find "${functionsdir}" -name "*.sh" | while read -r filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo "${perm:0:1}")"; if [ "${shortperm}" != "7" ]; then permissionerror="1" echo "Found permission error on $filename" From ec3fd3ccf381f91ea24dd43daa875c1063ecfa56 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 08:51:07 +0100 Subject: [PATCH 393/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index e293b1585..8c0bac559 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_permissions function +# LGSM check_permissions.sh # Author: Daniel Gibbs # Contributor: UltimateByte # Website: http://gameservermanagers.com @@ -25,7 +25,6 @@ if [ -n "${functionsdir}" ]; then find "${functionsdir}" -name "*.sh" | while read -r filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo "${perm:0:1}")"; if [ "${shortperm}" != "7" ]; then permissionerror="1" - echo "Found permission error on $filename" fn_print_warn_nl "Warning, permission issues found in ${functionsdir}" echo " * Easy fix : chmod -R 755 ${functionsdir}" fi From 9a86949cb860d8547660794ae648e74c395552de Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 09:13:35 +0100 Subject: [PATCH 394/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 8c0bac559..90b5536da 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -24,7 +24,6 @@ fn_check_permissions(){ if [ -n "${functionsdir}" ]; then find "${functionsdir}" -name "*.sh" | while read -r filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo "${perm:0:1}")"; if [ "${shortperm}" != "7" ]; then - permissionerror="1" fn_print_warn_nl "Warning, permission issues found in ${functionsdir}" echo " * Easy fix : chmod -R 755 ${functionsdir}" fi From 7fde0933547ebf63204383aea3a7e85f3097418d Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 10:05:44 +0100 Subject: [PATCH 395/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 90b5536da..274301112 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -22,7 +22,7 @@ fi fn_check_permissions(){ if [ -n "${functionsdir}" ]; then - find "${functionsdir}" -name "*.sh" | while read -r filename; do perm="$(stat -c %a "${filename}")"; shortperm="$(echo "${perm:0:1}")"; + find "${functionsdir}" -name "*.sh" | while read -r filename; do perm="$(stat -c %a "${filename}")"; shortperm="${perm:0:1}"; if [ "${shortperm}" != "7" ]; then fn_print_warn_nl "Warning, permission issues found in ${functionsdir}" echo " * Easy fix : chmod -R 755 ${functionsdir}" @@ -31,7 +31,7 @@ if [ -n "${functionsdir}" ]; then fi } -fn_check_permissions_summary(){ +fn_check_permissions_conclusion(){ if [ "${permissionerror}" == "1" ]; then exit 1 fi @@ -39,4 +39,4 @@ fi fn_check_ownership fn_check_permissions -fn_check_permissions_summary +fn_check_permissions_conclusion From 14b069dca43fa4d0cacc2cec311bba2a635fd8b1 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 10:32:51 +0100 Subject: [PATCH 396/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 274301112..8828a15d7 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -26,6 +26,7 @@ if [ -n "${functionsdir}" ]; then if [ "${shortperm}" != "7" ]; then fn_print_warn_nl "Warning, permission issues found in ${functionsdir}" echo " * Easy fix : chmod -R 755 ${functionsdir}" + echo " * To enable monitor run ./${selfname} start" fi done fi From 7da4415b8e481455c9718560712eeb17a02a26a8 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 11:13:25 +0100 Subject: [PATCH 397/643] Rework while --- lgsm/functions/check_permissions.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 8828a15d7..51072f43d 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -22,13 +22,19 @@ fi fn_check_permissions(){ if [ -n "${functionsdir}" ]; then - find "${functionsdir}" -name "*.sh" | while read -r filename; do perm="$(stat -c %a "${filename}")"; shortperm="${perm:0:1}"; + while read -r filename + do + perm="$(stat -c %a "${filename}")" + shortperm="${perm:0:1}" if [ "${shortperm}" != "7" ]; then - fn_print_warn_nl "Warning, permission issues found in ${functionsdir}" - echo " * Easy fix : chmod -R 755 ${functionsdir}" - echo " * To enable monitor run ./${selfname} start" + permissionfailure="1" fi - done + done <<< "$(find "${functionsdir}" -name "*.sh")" + + if [ "${permissionfailure}" == "1" ]; then + fn_print_warn_nl "Warning, permission issues found in ${functionsdir}" + echo " * Easy fix : chmod -R 755 ${functionsdir}" + fi fi } From db6e788be36a268ece573bbb4656d1f9b194c59b Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 11:20:02 +0100 Subject: [PATCH 398/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 51072f43d..07658e795 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -21,6 +21,7 @@ fi } fn_check_permissions(){ +permissionfailure="0" if [ -n "${functionsdir}" ]; then while read -r filename do From 70ba6ff85e062462143715950b040e902379fd17 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 11:24:38 +0100 Subject: [PATCH 399/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 07658e795..391e67080 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -10,11 +10,11 @@ lgsm_version="150316" # Initializing useful variables currentuser="$(whoami)" scriptfullpath="${rootdir}/${selfname}" -permissionerror="0" +conclusionpermissionerror="0" fn_check_ownership(){ if [ "${currentuser}" != "$(stat -c %U "${scriptfullpath}")" ] && [ "${currentuser}" != "$(stat -c %G "${scriptfullpath}")" ]; then - permissionerror="1" + conclusionpermissionerror="1" fn_print_fail_nl "Permission denied" echo " * To check allowed user and group run ls -l ${selfname}" fi @@ -24,23 +24,24 @@ fn_check_permissions(){ permissionfailure="0" if [ -n "${functionsdir}" ]; then while read -r filename - do - perm="$(stat -c %a "${filename}")" - shortperm="${perm:0:1}" - if [ "${shortperm}" != "7" ]; then - permissionfailure="1" - fi + do + perm="$(stat -c %a "${filename}")" + shortperm="${perm:0:1}" + if [ "${shortperm}" != "7" ]; then + permissionfailure="1" + conclusionpermissionerror="1" + fi done <<< "$(find "${functionsdir}" -name "*.sh")" if [ "${permissionfailure}" == "1" ]; then - fn_print_warn_nl "Warning, permission issues found in ${functionsdir}" + fn_print_warn_nl "Warning, permission issues found in functions." echo " * Easy fix : chmod -R 755 ${functionsdir}" fi fi } fn_check_permissions_conclusion(){ -if [ "${permissionerror}" == "1" ]; then +if [ "${conclusionpermissionerror}" == "1" ]; then exit 1 fi } From 0c1e56027641255a421afc1dd9f90039b581ce67 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 11:28:39 +0100 Subject: [PATCH 400/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 391e67080..0f576f227 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -34,7 +34,7 @@ if [ -n "${functionsdir}" ]; then done <<< "$(find "${functionsdir}" -name "*.sh")" if [ "${permissionfailure}" == "1" ]; then - fn_print_warn_nl "Warning, permission issues found in functions." + fn_print_fail_nl "Warning, permission issues found in functions." echo " * Easy fix : chmod -R 755 ${functionsdir}" fi fi From 70bc7babdd407ffbd4d6a5d5e48cb3906316b070 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 12:07:18 +0100 Subject: [PATCH 401/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 31 +++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 0f576f227..5e71388cf 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -17,25 +17,40 @@ if [ "${currentuser}" != "$(stat -c %U "${scriptfullpath}")" ] && [ "${currentus conclusionpermissionerror="1" fn_print_fail_nl "Permission denied" echo " * To check allowed user and group run ls -l ${selfname}" + exit 1 fi } fn_check_permissions(){ -permissionfailure="0" +# Checking permission on rootdir +if [ -n "${rootdir}" ]; then + rootdirperm="$(stat -c %a "${rootdir}")" + userrootdirperm="${rootdirperm:0:1}" + grouprootdirperm="${rootdirperm:1:1}" + if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then + fn_print_fail_nl "Permission issues found in root directory" + echo " * You might wanna run : chmod -R 755 \"${rootdir}\"" + conclusionpermissionerror="1" + fi +fi + +# Checking permissions on functions +funcpermfail="0" if [ -n "${functionsdir}" ]; then while read -r filename do - perm="$(stat -c %a "${filename}")" - shortperm="${perm:0:1}" - if [ "${shortperm}" != "7" ]; then - permissionfailure="1" + funcperm="$(stat -c %a "${filename}")" + userfuncdirperm="${funcperm:0:1}" + groupfuncdirperm="${duncperm:1:1}" + if [ "${userfuncdirperm}" != "7" ] && [ "${groupfuncdirperm}" != "7" ]; then + funcpermfail="1" conclusionpermissionerror="1" fi done <<< "$(find "${functionsdir}" -name "*.sh")" - if [ "${permissionfailure}" == "1" ]; then - fn_print_fail_nl "Warning, permission issues found in functions." - echo " * Easy fix : chmod -R 755 ${functionsdir}" + if [ "${funcpermfail}" == "1" ]; then + fn_print_fail_nl "Permission issues found in functions." + echo " * You might wanna run : chmod -R 755 \"${functionsdir}\"" fi fi } From 114ab020962484e55ec7a78d5e3fe34e14528593 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 12:29:32 +0100 Subject: [PATCH 402/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 5e71388cf..b26915582 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -7,34 +7,40 @@ lgsm_version="150316" # Description: Checks script, files and folders ownership and permissions. -# Initializing useful variables +# Useful variables currentuser="$(whoami)" scriptfullpath="${rootdir}/${selfname}" conclusionpermissionerror="0" fn_check_ownership(){ +# Check script ownership if [ "${currentuser}" != "$(stat -c %U "${scriptfullpath}")" ] && [ "${currentuser}" != "$(stat -c %G "${scriptfullpath}")" ]; then - conclusionpermissionerror="1" - fn_print_fail_nl "Permission denied" + fn_print_fail_nl "Oops ! Permission denied on ${selfname}" echo " * To check allowed user and group run ls -l ${selfname}" exit 1 fi +# Check rootdir ownership +if [ "${currentuser}" != "$(stat -c %U "${rootdir}")" ] && [ "${currentuser}" != "$(stat -c %G "${rootdir}")" ]; then + fn_print_fail_nl "Oops ! Permission denied on ${rootdir}" + echo " * To check allowed user and group run ls -l ${rootdir}" + exit 1 } fn_check_permissions(){ -# Checking permission on rootdir +# Check rootdir permissions if [ -n "${rootdir}" ]; then rootdirperm="$(stat -c %a "${rootdir}")" userrootdirperm="${rootdirperm:0:1}" grouprootdirperm="${rootdirperm:1:1}" if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then fn_print_fail_nl "Permission issues found in root directory" + echo " * Neither the user or group has full control of \"${rootdir}\"" echo " * You might wanna run : chmod -R 755 \"${rootdir}\"" conclusionpermissionerror="1" fi fi -# Checking permissions on functions +# Check functions permissions funcpermfail="0" if [ -n "${functionsdir}" ]; then while read -r filename @@ -50,12 +56,14 @@ if [ -n "${functionsdir}" ]; then if [ "${funcpermfail}" == "1" ]; then fn_print_fail_nl "Permission issues found in functions." + echo " * Neither the user or group has full control of at least some scripts in \"${functionsdir}\"" echo " * You might wanna run : chmod -R 755 \"${functionsdir}\"" fi fi } fn_check_permissions_conclusion(){ +# Exit if errors found if [ "${conclusionpermissionerror}" == "1" ]; then exit 1 fi From 30a85996cbdbdfa6fc741d4a5dceadb4f71ceaa4 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 12:33:24 +0100 Subject: [PATCH 403/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index b26915582..f8056b5a4 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -24,6 +24,7 @@ if [ "${currentuser}" != "$(stat -c %U "${rootdir}")" ] && [ "${currentuser}" != fn_print_fail_nl "Oops ! Permission denied on ${rootdir}" echo " * To check allowed user and group run ls -l ${rootdir}" exit 1 +fi } fn_check_permissions(){ @@ -47,7 +48,7 @@ if [ -n "${functionsdir}" ]; then do funcperm="$(stat -c %a "${filename}")" userfuncdirperm="${funcperm:0:1}" - groupfuncdirperm="${duncperm:1:1}" + groupfuncdirperm="${funcperm:1:1}" if [ "${userfuncdirperm}" != "7" ] && [ "${groupfuncdirperm}" != "7" ]; then funcpermfail="1" conclusionpermissionerror="1" From 5b74b57d1240cfd733955ec7305fa61cdc44c44a Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 13:40:30 +0100 Subject: [PATCH 404/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index f8056b5a4..fb73d5121 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -8,23 +8,41 @@ lgsm_version="150316" # Description: Checks script, files and folders ownership and permissions. # Useful variables -currentuser="$(whoami)" scriptfullpath="${rootdir}/${selfname}" conclusionpermissionerror="0" fn_check_ownership(){ # Check script ownership -if [ "${currentuser}" != "$(stat -c %U "${scriptfullpath}")" ] && [ "${currentuser}" != "$(stat -c %G "${scriptfullpath}")" ]; then +if [ ! -U "${scriptfullpath}" ] && [ ! -G "${scriptfullpath}" ]; then fn_print_fail_nl "Oops ! Permission denied on ${selfname}" echo " * To check allowed user and group run ls -l ${selfname}" exit 1 fi + # Check rootdir ownership -if [ "${currentuser}" != "$(stat -c %U "${rootdir}")" ] && [ "${currentuser}" != "$(stat -c %G "${rootdir}")" ]; then +if [ ! -U "${rootdir}" ] && [ ! -G "${rootdir}" ]; then fn_print_fail_nl "Oops ! Permission denied on ${rootdir}" echo " * To check allowed user and group run ls -l ${rootdir}" exit 1 fi + +# Check functions ownership +funownfail="0" +if [ -n "${functionsdir}" ]; then + while read -r filename + do + if [ ! -U "${filename}" ] && [ ! -G "${filename}" ]; then + funownfail="0" + conclusionpermissionerror="1" + fi + done <<< "$(find "${functionsdir}" -name "*.sh")" + + if [ "${funownfail}" == "1" ]; then + fn_print_fail_nl "Permission issues found in functions." + echo " * Neither the user or group has full control of some scripts in \"${functionsdir}\"" + echo " * You might wanna run : chmod -R 770 \"${functionsdir}\"" + fi +fi } fn_check_permissions(){ @@ -36,7 +54,7 @@ if [ -n "${rootdir}" ]; then if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then fn_print_fail_nl "Permission issues found in root directory" echo " * Neither the user or group has full control of \"${rootdir}\"" - echo " * You might wanna run : chmod -R 755 \"${rootdir}\"" + echo " * You might wanna run : chmod -R 770 \"${rootdir}\"" conclusionpermissionerror="1" fi fi @@ -58,7 +76,7 @@ if [ -n "${functionsdir}" ]; then if [ "${funcpermfail}" == "1" ]; then fn_print_fail_nl "Permission issues found in functions." echo " * Neither the user or group has full control of at least some scripts in \"${functionsdir}\"" - echo " * You might wanna run : chmod -R 755 \"${functionsdir}\"" + echo " * You might wanna run : chmod -R 770 \"${functionsdir}\"" fi fi } From 62e504a7bc37f4a9d67865e0e4b28d019a73c4fc Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 14:20:12 +0100 Subject: [PATCH 405/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index fb73d5121..c70f112a9 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -13,14 +13,14 @@ conclusionpermissionerror="0" fn_check_ownership(){ # Check script ownership -if [ ! -U "${scriptfullpath}" ] && [ ! -G "${scriptfullpath}" ]; then +if [ ! -O "${scriptfullpath}" ] && [ ! -G "${scriptfullpath}" ]; then fn_print_fail_nl "Oops ! Permission denied on ${selfname}" echo " * To check allowed user and group run ls -l ${selfname}" exit 1 fi # Check rootdir ownership -if [ ! -U "${rootdir}" ] && [ ! -G "${rootdir}" ]; then +if [ ! -O "${rootdir}" ] && [ ! -G "${rootdir}" ]; then fn_print_fail_nl "Oops ! Permission denied on ${rootdir}" echo " * To check allowed user and group run ls -l ${rootdir}" exit 1 @@ -31,7 +31,7 @@ funownfail="0" if [ -n "${functionsdir}" ]; then while read -r filename do - if [ ! -U "${filename}" ] && [ ! -G "${filename}" ]; then + if [ ! -O "${filename}" ] && [ ! -G "${filename}" ]; then funownfail="0" conclusionpermissionerror="1" fi From 5a83979d20a9142bec5fb82df4461fb98a26bde9 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 14:35:01 +0100 Subject: [PATCH 406/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index c70f112a9..eaf6cfc2f 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -32,7 +32,7 @@ if [ -n "${functionsdir}" ]; then while read -r filename do if [ ! -O "${filename}" ] && [ ! -G "${filename}" ]; then - funownfail="0" + funownfail="1" conclusionpermissionerror="1" fi done <<< "$(find "${functionsdir}" -name "*.sh")" From c1c5d2e1fd30c1a3a1a78a0026bd16dae9b39998 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 15:35:44 +0100 Subject: [PATCH 407/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index eaf6cfc2f..a050fb15f 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -8,21 +8,25 @@ lgsm_version="150316" # Description: Checks script, files and folders ownership and permissions. # Useful variables +currentuser="$(whoami)" +currentgroups="$(groups)" scriptfullpath="${rootdir}/${selfname}" conclusionpermissionerror="0" fn_check_ownership(){ # Check script ownership if [ ! -O "${scriptfullpath}" ] && [ ! -G "${scriptfullpath}" ]; then - fn_print_fail_nl "Oops ! Permission denied on ${selfname}" - echo " * To check allowed user and group run ls -l ${selfname}" + fn_print_fail_nl "Oops ! Ownership issue..." + echo " * ${currentuser} or its group(s) - ${currentgroups} - does not own \"${selfname}\"" + echo " * To check the owner and allowed groups, run ls -l \"${selfname}\"" exit 1 fi # Check rootdir ownership if [ ! -O "${rootdir}" ] && [ ! -G "${rootdir}" ]; then - fn_print_fail_nl "Oops ! Permission denied on ${rootdir}" - echo " * To check allowed user and group run ls -l ${rootdir}" + fn_print_fail_nl "Oops ! Ownership issue..." + echo " * ${currentuser} or its group(s) - ${currentgroups} - does not own \"${rootdir}\"" + echo " * To check the owner and allowed groups, run ls -dl \"${rootdir}\"" exit 1 fi @@ -38,9 +42,9 @@ if [ -n "${functionsdir}" ]; then done <<< "$(find "${functionsdir}" -name "*.sh")" if [ "${funownfail}" == "1" ]; then - fn_print_fail_nl "Permission issues found in functions." - echo " * Neither the user or group has full control of some scripts in \"${functionsdir}\"" - echo " * You might wanna run : chmod -R 770 \"${functionsdir}\"" + fn_print_fail_nl "Oops ! Ownership issue..." + echo " * ${currentuser} or its group(s) - ${currentgroups} - does not own all scripts in \"${functionsdir}\"" + echo " * To check the owner and allowed groups, run ls -l \"${functionsdir}\"" fi fi } @@ -48,12 +52,14 @@ fi fn_check_permissions(){ # Check rootdir permissions if [ -n "${rootdir}" ]; then + # Get permission numbers on folder under the form 775 rootdirperm="$(stat -c %a "${rootdir}")" + # Grab the first and second digit for user and group permission userrootdirperm="${rootdirperm:0:1}" grouprootdirperm="${rootdirperm:1:1}" if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then - fn_print_fail_nl "Permission issues found in root directory" - echo " * Neither the user or group has full control of \"${rootdir}\"" + fn_print_fail_nl "Oops ! Permission issue..." + echo " * ${currentuser} or its group(s) - ${currentgroups} need full control of \"${rootdir}\"" echo " * You might wanna run : chmod -R 770 \"${rootdir}\"" conclusionpermissionerror="1" fi @@ -74,8 +80,8 @@ if [ -n "${functionsdir}" ]; then done <<< "$(find "${functionsdir}" -name "*.sh")" if [ "${funcpermfail}" == "1" ]; then - fn_print_fail_nl "Permission issues found in functions." - echo " * Neither the user or group has full control of at least some scripts in \"${functionsdir}\"" + fn_print_fail_nl "Oops ! Permission issue..." + echo " * ${currentuser} or its group(s) - ${currentgroups} need full control on scripts in \"${functionsdir}\"" echo " * You might wanna run : chmod -R 770 \"${functionsdir}\"" fi fi From 975cac1933a1ae458781fcc91578a0335271c13d Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 16:24:13 +0100 Subject: [PATCH 408/643] Update check_permissions.sh --- lgsm/functions/check_permissions.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index a050fb15f..3d3e6d6bd 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -17,7 +17,7 @@ fn_check_ownership(){ # Check script ownership if [ ! -O "${scriptfullpath}" ] && [ ! -G "${scriptfullpath}" ]; then fn_print_fail_nl "Oops ! Ownership issue..." - echo " * ${currentuser} or its group(s) - ${currentgroups} - does not own \"${selfname}\"" + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own \"${selfname}\"" echo " * To check the owner and allowed groups, run ls -l \"${selfname}\"" exit 1 fi @@ -25,7 +25,7 @@ fi # Check rootdir ownership if [ ! -O "${rootdir}" ] && [ ! -G "${rootdir}" ]; then fn_print_fail_nl "Oops ! Ownership issue..." - echo " * ${currentuser} or its group(s) - ${currentgroups} - does not own \"${rootdir}\"" + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own \"${rootdir}\"" echo " * To check the owner and allowed groups, run ls -dl \"${rootdir}\"" exit 1 fi @@ -43,7 +43,7 @@ if [ -n "${functionsdir}" ]; then if [ "${funownfail}" == "1" ]; then fn_print_fail_nl "Oops ! Ownership issue..." - echo " * ${currentuser} or its group(s) - ${currentgroups} - does not own all scripts in \"${functionsdir}\"" + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own all scripts in \"${functionsdir}\"" echo " * To check the owner and allowed groups, run ls -l \"${functionsdir}\"" fi fi @@ -59,7 +59,7 @@ if [ -n "${rootdir}" ]; then grouprootdirperm="${rootdirperm:1:1}" if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then fn_print_fail_nl "Oops ! Permission issue..." - echo " * ${currentuser} or its group(s) - ${currentgroups} need full control of \"${rootdir}\"" + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} need full control of \"${rootdir}\"" echo " * You might wanna run : chmod -R 770 \"${rootdir}\"" conclusionpermissionerror="1" fi @@ -81,7 +81,7 @@ if [ -n "${functionsdir}" ]; then if [ "${funcpermfail}" == "1" ]; then fn_print_fail_nl "Oops ! Permission issue..." - echo " * ${currentuser} or its group(s) - ${currentgroups} need full control on scripts in \"${functionsdir}\"" + echo " *Current - ${currentuser} - user or its group(s) - ${currentgroups} need full control on scripts in \"${functionsdir}\"" echo " * You might wanna run : chmod -R 770 \"${functionsdir}\"" fi fi From ded47c3ea0bdc72cf06de0bec4ae428167f0638f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 16:36:36 +0100 Subject: [PATCH 409/643] Spacing --- lgsm/functions/check_permissions.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 3d3e6d6bd..189708e50 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -17,8 +17,8 @@ fn_check_ownership(){ # Check script ownership if [ ! -O "${scriptfullpath}" ] && [ ! -G "${scriptfullpath}" ]; then fn_print_fail_nl "Oops ! Ownership issue..." - echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own \"${selfname}\"" - echo " * To check the owner and allowed groups, run ls -l \"${selfname}\"" + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own \"${selfname}\"" + echo " * To check the owner and allowed groups, run ls -l \"${selfname}\"" exit 1 fi @@ -26,7 +26,7 @@ fi if [ ! -O "${rootdir}" ] && [ ! -G "${rootdir}" ]; then fn_print_fail_nl "Oops ! Ownership issue..." echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own \"${rootdir}\"" - echo " * To check the owner and allowed groups, run ls -dl \"${rootdir}\"" + echo " * To check the owner and allowed groups, run ls -dl \"${rootdir}\"" exit 1 fi @@ -81,7 +81,7 @@ if [ -n "${functionsdir}" ]; then if [ "${funcpermfail}" == "1" ]; then fn_print_fail_nl "Oops ! Permission issue..." - echo " *Current - ${currentuser} - user or its group(s) - ${currentgroups} need full control on scripts in \"${functionsdir}\"" + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} need full control on scripts in \"${functionsdir}\"" echo " * You might wanna run : chmod -R 770 \"${functionsdir}\"" fi fi From f648b25b1ed7ba22bc21179aa382a92c46913cec Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:11:47 +0100 Subject: [PATCH 410/643] Ability to disable console logs. --- lgsm/functions/command_start.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index e9fa5d0d0..b843a4ae9 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -116,9 +116,15 @@ elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}" echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" echo "Currently installed: $(tmux -V)" >> "${consolelog}" -else +# Console logging enable or not set +elif [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then touch "${consolelog}" tmux pipe-pane -o -t "${servicename}" "exec cat >> '${consolelog}'" +# Console logging disabled +elif [ "${consolelogging}" == "off" ]; then + touch "${consolelog}" + cat "Console logging disabled by user" >> "{consolelog}" + fn_scriptlog "Console logging disabled by user" fi sleep 1 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") From d30b2d0ceb1c7d71c6d2bbb20d3e7d23786eaf6f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:56:53 +0100 Subject: [PATCH 411/643] Update sdtdserver --- 7DaysToDie/sdtdserver | 1 + 1 file changed, 1 insertion(+) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 1828f34a2..b28e5465f 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -25,6 +25,7 @@ steampass="password" # Start Variables ip="0.0.0.0" updateonstart="off" +consolelogging="on" # http://7daystodie.gamepedia.com/Server fn_parms(){ From 6b66de64df79efee06daa1925be04873351a14bd Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:57:18 +0100 Subject: [PATCH 412/643] Update arkserver --- ARKSurvivalEvolved/arkserver | 1 + 1 file changed, 1 insertion(+) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 7b58dd823..94e0a6963 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -25,6 +25,7 @@ steampass="" # Start Variables ip="0.0.0.0" updateonstart="off" +consolelogging="on" fn_parms(){ parms="TheIsland?listen" From d903da2a56fcf83a548a87cb0f002278edea2a05 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:58:09 +0100 Subject: [PATCH 413/643] Update arma3server --- Arma3/arma3server | 1 + 1 file changed, 1 insertion(+) diff --git a/Arma3/arma3server b/Arma3/arma3server index 927a406c7..760bc8378 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -27,6 +27,7 @@ steampass="password" ip="0.0.0.0" port="2302" updateonstart="off" +consolelogging="on" fn_parms(){ parms="-netlog -ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory" From 6725eec4ede838cf25c4b519bd898064c2891f7b Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:58:24 +0100 Subject: [PATCH 414/643] Update bmdmserver --- BlackMesa/bmdmserver | 1 + 1 file changed, 1 insertion(+) diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 1d8f3d8fb..3ac32ba67 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # Optional: Game Server Login Token # GSLT can be used for running a public server. From dd82fbdaf1f327d419e9be940e0603544676eee6 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:58:38 +0100 Subject: [PATCH 415/643] Update bsserver --- BladeSymphony/bsserver | 1 + 1 file changed, 1 insertion(+) diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index a6e284b84..a187cef4f 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From 2eefc995495490445b0432fbf632068ef8b9ffa0 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:58:50 +0100 Subject: [PATCH 416/643] Update bb2server --- BrainBread2/bb2server | 1 + 1 file changed, 1 insertion(+) diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 7053f0cb1..484ba8e97 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # Optional: Game Server Login Token # GSLT can be used for running a public server. From 016abe909ad4f7120d6f886c2b3e23ce812864f6 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:59:00 +0100 Subject: [PATCH 417/643] Update ccserver --- CodenameCURE/ccserver | 1 + 1 file changed, 1 insertion(+) diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index bd99f374d..9380d65e2 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From 215c37444d19698f48eb9b2dafa366182e63e1b1 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:59:10 +0100 Subject: [PATCH 418/643] Update csserver --- CounterStrike/csserver | 1 + 1 file changed, 1 insertion(+) diff --git a/CounterStrike/csserver b/CounterStrike/csserver index e9006ac65..795dd3aae 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -29,6 +29,7 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ From 2232ae403e28b24df42c2a5cf5a0f499f6eff25c Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:59:19 +0100 Subject: [PATCH 419/643] Update csczserver --- CounterStrikeConditionZero/csczserver | 1 + 1 file changed, 1 insertion(+) diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 16230be9c..a13140183 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -29,6 +29,7 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ From 766456d282f080e03393d376e52ee073c345db84 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:59:30 +0100 Subject: [PATCH 420/643] Update csgoserver --- CounterStrikeGlobalOffensive/csgoserver | 1 + 1 file changed, 1 insertion(+) diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 2eb8dac03..63bb25c41 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -41,6 +41,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # Required: Game Server Login Token # GSLT is required for running a public server. From 8688dfd8d7b2505052d2bafe2648c665717d0ac1 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:59:39 +0100 Subject: [PATCH 421/643] Update cssserver --- CounterStrikeSource/cssserver | 1 + 1 file changed, 1 insertion(+) diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 03e7716c6..bf4b025d3 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From fe7f57db533f29349a7908b67972e820d7f0afcb Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:59:49 +0100 Subject: [PATCH 422/643] Update dodserver --- DayOfDefeat/dodserver | 1 + 1 file changed, 1 insertion(+) diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 55989c424..a5fc7b867 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -29,6 +29,7 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ From 146396662865a680f3bb456f56b7b13f706fb264 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 17:59:58 +0100 Subject: [PATCH 423/643] Update dodsserver --- DayOfDefeatSource/dodsserver | 1 + 1 file changed, 1 insertion(+) diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 71cc51b41..359a11b96 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From f4430e20e9b64bc556548c34c0385f21deb2dc16 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:00:10 +0100 Subject: [PATCH 424/643] Update dmcserver --- DeathmatchClassic/dmcserver | 1 + 1 file changed, 1 insertion(+) diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 62951a357..2b41bf0e1 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -29,6 +29,7 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ From 6ec9a7bfb14a5fd350a08801abb55f45145fe04d Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:00:39 +0100 Subject: [PATCH 425/643] Update dstserver --- DontStarveTogether/dstserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index d479d966b..a0a45cba4 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -25,7 +25,7 @@ steampass="" # Start Variables ip="0.0.0.0" updateonstart="off" - +consolelogging="on" # Overworld: -conf_dir DST_Overworld # Cave: -conf_dir DST_Cave From e977c807924b120c1f010bdedea16047d4732990 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:00:54 +0100 Subject: [PATCH 426/643] Update dabserver --- DoubleActionBoogaloo/dabserver | 1 + 1 file changed, 1 insertion(+) diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 831451f96..71da6e088 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From 42f4a12ec13713c40c5b381e4f0c7e8889195fcc Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:01:04 +0100 Subject: [PATCH 427/643] Update fofserver --- FistfulOfFrags/fofserver | 1 + 1 file changed, 1 insertion(+) diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 298f57c76..a583b9ab6 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From b4a377549084cdb4a05a5d618cc7785959b5a3ef Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:03:32 +0100 Subject: [PATCH 428/643] Update gmodserver --- GarrysMod/gmodserver | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 879cd1d01..994a5bb67 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -35,7 +35,13 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" +tickrate="66" updateonstart="off" +consolelogging="on" + +# Custom Start Parameters +# Default +r_hunkalloclightmaps 0, fixes a start issue on maps with many lights +customparms="+r_hunkalloclightmaps 0" # Optional: Game Server Login Token # GSLT can be used for running a public server. @@ -44,7 +50,7 @@ gslt="" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ -parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} +host_workshop_collection ${workshopcollectionid} -authkey ${workshopauth} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" +parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate {tickrate} +host_workshop_collection ${workshopcollectionid} -authkey ${workshopauth} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} ${customparms}" } #### Advanced Variables #### From 7da5c06907e3a77a579df7efb0d78ee27245d368 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:04:09 +0100 Subject: [PATCH 429/643] physiterations default is 4 --- GarrysMod/cfg/lgsm-default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GarrysMod/cfg/lgsm-default.cfg b/GarrysMod/cfg/lgsm-default.cfg index 2e61eb6a2..a1e2fd4d6 100644 --- a/GarrysMod/cfg/lgsm-default.cfg +++ b/GarrysMod/cfg/lgsm-default.cfg @@ -38,7 +38,7 @@ sv_allow_wait_command 0 sv_allow_voice_from_file 0 sv_turbophysics 0 sv_max_usercmd_future_ticks 12 -gmod_physiterations 2 +gmod_physiterations 4 sv_client_min_interp_ratio 1 sv_client_max_interp_ratio 2 think_limit 20 From 2f51bc2a1d9e06f9ff77e35139a5de0d197cf5d0 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:04:46 +0100 Subject: [PATCH 430/643] Update gesserver --- GoldenEyeSource/gesserver | 1 + 1 file changed, 1 insertion(+) diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index c90e17b0f..9ddc4526e 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -31,6 +31,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From 7b80fe42e54452073c2c3d562dd3632463aedcb5 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:04:55 +0100 Subject: [PATCH 431/643] Update hl2dmserver --- HalfLife2Deathmatch/hl2dmserver | 1 + 1 file changed, 1 insertion(+) diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index e375010d1..ea9d248e5 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From baab3bb4765c3d2451248babc5f655d06edecb41 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:05:04 +0100 Subject: [PATCH 432/643] Update hldmserver --- HalfLifeDeathmatch/hldmserver | 1 + 1 file changed, 1 insertion(+) diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index bf65048eb..8cafa3e6b 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -29,6 +29,7 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ From 0bb4be4630681ec99fe3822ada471df4e7d8c7cb Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:05:13 +0100 Subject: [PATCH 433/643] Update hldmsserver --- HalfLifeDeathmatchSource/hldmsserver | 1 + 1 file changed, 1 insertion(+) diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index f6254c5a9..108c5b7bb 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -30,6 +30,7 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From 1d082295482f031775949cba7a9dbdef0934e53b Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:06:22 +0100 Subject: [PATCH 434/643] Update hwserver --- Hurtworld/hwserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 3bcf80f38..d7922dd8d 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -43,6 +43,9 @@ loadsave="" # Use unstable 64 bit server executable (O/1) x64mode="0" +# Other +consolelogging="on" + # http://hurtworld.wikia.com/wiki/Hosting_A_Server fn_parms(){ parms="-batchmode -nographics -exec \"host ${port} ${map} ${loadsave};queryport ${queryport};maxplayers ${maxplayers};servername ${servername};creativemode ${creativemode};${admins}\" -logfile \"${logfile}\" " From 418d3b890b506370ff2239a503ff23d515ba8db5 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:14:45 +0100 Subject: [PATCH 435/643] Update insserver --- Insurgency/insserver | 1 + 1 file changed, 1 insertion(+) diff --git a/Insurgency/insserver b/Insurgency/insserver index d92d8fdc0..251861cf4 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -32,6 +32,7 @@ clientport="27005" ip="0.0.0.0" updateonstart="off" workshop="0" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From c099ed6d2757cbfbb806ea2a88d40a3f691f118f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:15:03 +0100 Subject: [PATCH 436/643] Update jc2server --- JustCause2/jc2server | 1 + 1 file changed, 1 insertion(+) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 8b27675a7..d1c5d49fb 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -24,6 +24,7 @@ steampass="" # Start Variables updateonstart="off" +consolelogging="on" fn_parms(){ parms="" From 1568181205c537045bc1060b573c0a04bb7184b6 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:15:13 +0100 Subject: [PATCH 437/643] Update kfserver --- KillingFloor/kfserver | 1 + 1 file changed, 1 insertion(+) diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 43cc1d053..44dfeeb6d 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -26,6 +26,7 @@ steampass="password" defaultmap="KF-BioticsLab.rom" ip="0.0.0.0" updateonstart="off" +consolelogging="on" fn_parms(){ parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" From 99fd57aa09282588c23c8634e4e34a3a9e20ec49 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:15:23 +0100 Subject: [PATCH 438/643] Update l4dserver --- Left4Dead/l4dserver | 1 + 1 file changed, 1 insertion(+) diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 71382b270..a4a65fef8 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -30,6 +30,7 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From 7418a2dd02a9237e19a5d39a9f9d865c953b8f62 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:15:32 +0100 Subject: [PATCH 439/643] Update l4d2server --- Left4Dead2/l4d2server | 1 + 1 file changed, 1 insertion(+) diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 230a0bb63..22afa51da 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -29,6 +29,7 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" +consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ From f4e70059201cdb9ce81185c6352f6eeb1baa66e3 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:15:51 +0100 Subject: [PATCH 440/643] Update mumbleserver --- Mumble/mumbleserver | 1 + 1 file changed, 1 insertion(+) diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index ca422673d..0939a40b1 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -21,6 +21,7 @@ email="email@example.com" # Server Details gamename="Mumble" servicename="mumble-server" +consolelogging="on" # Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" From 5a8739e3e957e77188d16bef4d57231b73e84f6f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:16:24 +0100 Subject: [PATCH 441/643] Update ns2cserver --- NS2Combat/ns2cserver | 1 + 1 file changed, 1 insertion(+) diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index df6a28386..dab5e6e62 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -79,6 +79,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 30fed21785675ff337fadcb2d8fec07dea380c5d Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:17:00 +0100 Subject: [PATCH 442/643] Update ns2server --- NaturalSelection2/ns2server | 1 + 1 file changed, 1 insertion(+) diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 6fe81eee8..09bfab35a 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -79,6 +79,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 7323d5c911d75472beaf2f0c76e830e833771ce2 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:17:13 +0100 Subject: [PATCH 443/643] Update nmrihserver --- NoMoreRoomInHell/nmrihserver | 1 + 1 file changed, 1 insertion(+) diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 7a027a4ab..d0f14383a 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -74,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From ddbf9c79f4020cd6ce83249e8d5ef81f602dfa22 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:17:30 +0100 Subject: [PATCH 444/643] Update opforserver --- OpposingForce/opforserver | 1 + 1 file changed, 1 insertion(+) diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 8211e1212..828ef5e50 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -74,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From cd7adaa5355cb07601ef656ad1f38bb52aa84789 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:17:43 +0100 Subject: [PATCH 445/643] Update pvkiiserver --- PiratesVikingandKnightsII/pvkiiserver | 1 + 1 file changed, 1 insertion(+) diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index abc153a44..635a8eedd 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -74,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 70b6339fa989f7be167efb0378fbb4356581e90e Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:18:05 +0100 Subject: [PATCH 446/643] Update pzserver --- ProjectZomboid/pzserver | 1 + 1 file changed, 1 insertion(+) diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index f4070a6f8..842318759 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -68,6 +68,7 @@ logdays="7" gamelogdir="${HOME}/Zomboid/Logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From e3bc648f5d7e48ef673bd07e95de8c59a6efd771 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:18:48 +0100 Subject: [PATCH 447/643] Update qlserver --- QuakeLive/qlserver | 1 + 1 file changed, 1 insertion(+) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 5ff2c73f5..358626f67 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -77,6 +77,7 @@ logdays="7" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" From f828c7c5c650c530318fbd2bca169ba380ee8630 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:19:06 +0100 Subject: [PATCH 448/643] Update roserver --- RedOrchestra/roserver | 1 + 1 file changed, 1 insertion(+) diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 75180f22d..7aa33a3d6 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -70,6 +70,7 @@ logdays="7" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" From 92299fd0f7eedb23bf0a29e3bb3e568254044290 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:19:20 +0100 Subject: [PATCH 449/643] Update ricochetserver --- Ricochet/ricochetserver | 1 + 1 file changed, 1 insertion(+) diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index edf1fd63d..605b2018b 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -74,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 90aa85636300b0c78a5c5195ed58e5c440bca029 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:19:35 +0100 Subject: [PATCH 450/643] Update rustserver --- Rust/rustserver | 1 + 1 file changed, 1 insertion(+) diff --git a/Rust/rustserver b/Rust/rustserver index ce5c2b2f3..ec3a4ee9c 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -92,6 +92,7 @@ logdays="7" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" From f812f74fdc1a7ae457cb08fca3ce415ce37e11ac Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:19:48 +0100 Subject: [PATCH 451/643] Update ss3sserver --- SeriousSam3BFE/ss3sserver | 1 + 1 file changed, 1 insertion(+) diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 7e147f824..44e48a0a7 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -69,6 +69,7 @@ logdays="7" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" From ef09329b62cf0e0cfd55abce8b268df195e46b3d Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:20:00 +0100 Subject: [PATCH 452/643] Update sbserver --- StarBound/sbserver | 1 + 1 file changed, 1 insertion(+) diff --git a/StarBound/sbserver b/StarBound/sbserver index 171f6778c..84525d4a4 100644 --- a/StarBound/sbserver +++ b/StarBound/sbserver @@ -67,6 +67,7 @@ logdays="7" gamelogdir="${filesdir}/giraffe_storage" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 53fc00e5d44090cb496854c70606ef0d22529d2e Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:20:14 +0100 Subject: [PATCH 453/643] Update svencoopserver --- SvenCoop/svencoopserver | 1 + 1 file changed, 1 insertion(+) diff --git a/SvenCoop/svencoopserver b/SvenCoop/svencoopserver index 735414ccd..d5cf4dff9 100644 --- a/SvenCoop/svencoopserver +++ b/SvenCoop/svencoopserver @@ -73,6 +73,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 497c6fd41b93a2be644874030767050bb822bcaa Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:20:28 +0100 Subject: [PATCH 454/643] Update tf2server --- TeamFortress2/tf2server | 1 + 1 file changed, 1 insertion(+) diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 8a3ec65f3..e54f8668a 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -79,6 +79,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From ea5e203797d43ed2a0ef9d0cd083f496b8d4e021 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:20:45 +0100 Subject: [PATCH 455/643] Update tfcserver --- TeamFortressClassic/tfcserver | 1 + 1 file changed, 1 insertion(+) diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index fd88681fa..e9790fff0 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -74,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 24dd34498af6026ec2c78eefd2f1e98fc29db2d3 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:21:14 +0100 Subject: [PATCH 456/643] Update twserver --- Teeworlds/twserver | 1 + 1 file changed, 1 insertion(+) diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 7d087ca37..e04f47816 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -69,6 +69,7 @@ logdays="7" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" From 8830eda980ea50199065e355db7d5d1a8cf3cccf Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:21:31 +0100 Subject: [PATCH 457/643] Update terrariaserver --- Terraria/terrariaserver | 1 + 1 file changed, 1 insertion(+) diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 3e96560f5..6734f7413 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -69,6 +69,7 @@ logdays="7" #gamelogdir="" # Terraria Doesn't Have a Server Log scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 7716581234c428593ecf3b5095d78cc024c62c09 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:21:42 +0100 Subject: [PATCH 458/643] Update ut2k4server --- UnrealTournament2004/ut2k4server | 1 + 1 file changed, 1 insertion(+) diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index ffe97329e..0dfe460d3 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -53,6 +53,7 @@ logdays="7" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" From 4ea1b6cbe85c8567608df56c36c42928ea987056 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:21:58 +0100 Subject: [PATCH 459/643] Update ut99server --- UnrealTournament99/ut99server | 1 + 1 file changed, 1 insertion(+) diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index b5f6e591e..94aa01386 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -62,6 +62,7 @@ logdays="7" gamelogdir="${systemdir}/Logs/" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 14af0ab14943bc2f2f2d14f984a541aa017dee0b Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:26:16 +0100 Subject: [PATCH 460/643] Update sdtdserver --- 7DaysToDie/sdtdserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index b28e5465f..feb5ed918 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -25,7 +25,6 @@ steampass="password" # Start Variables ip="0.0.0.0" updateonstart="off" -consolelogging="on" # http://7daystodie.gamepedia.com/Server fn_parms(){ @@ -70,6 +69,7 @@ logdays="7" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" From 4257f56f90b55a90d37986edc4c5bff50c0268db Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:26:28 +0100 Subject: [PATCH 461/643] Update arkserver --- ARKSurvivalEvolved/arkserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 94e0a6963..0e6fd3f96 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -25,7 +25,6 @@ steampass="" # Start Variables ip="0.0.0.0" updateonstart="off" -consolelogging="on" fn_parms(){ parms="TheIsland?listen" @@ -69,6 +68,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 6fefef53b1d1e0575bf08d29a12c031e17bd2fdc Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:26:55 +0100 Subject: [PATCH 462/643] Update arma3server --- Arma3/arma3server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Arma3/arma3server b/Arma3/arma3server index 760bc8378..379ee8066 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -27,7 +27,6 @@ steampass="password" ip="0.0.0.0" port="2302" updateonstart="off" -consolelogging="on" fn_parms(){ parms="-netlog -ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory" @@ -92,6 +91,7 @@ logdays="7" #gamelogdir="" # No server logs available scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 6036e917971cd9310e71f90ff00ed645e375ac93 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:27:11 +0100 Subject: [PATCH 463/643] Update bmdmserver --- BlackMesa/bmdmserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 3ac32ba67..cf8efb1a5 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # Optional: Game Server Login Token # GSLT can be used for running a public server. @@ -80,6 +79,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 09a9e5b72e93c168e73e97a0e9eff9ba5595e9f0 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:27:27 +0100 Subject: [PATCH 464/643] Update bsserver --- BladeSymphony/bsserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index a187cef4f..879c5d765 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 3173052dea8322238291b886ad49fa63646770bb Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:27:41 +0100 Subject: [PATCH 465/643] Update bb2server --- BrainBread2/bb2server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 484ba8e97..321c27d49 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # Optional: Game Server Login Token # GSLT can be used for running a public server. @@ -80,6 +79,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From f103dcee51d1ab1df8b913b36c8fdd730d36999b Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:27:52 +0100 Subject: [PATCH 466/643] Update ccserver --- CodenameCURE/ccserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 9380d65e2..55632e467 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 636f3786b1c4fa3aa761686fbbdd5e8a47e57686 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:28:05 +0100 Subject: [PATCH 467/643] Update csserver --- CounterStrike/csserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 795dd3aae..80c9ea796 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -29,7 +29,6 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 9c978a626b710d34082e37784d8085b96171f55f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:28:17 +0100 Subject: [PATCH 468/643] Update csczserver --- CounterStrikeConditionZero/csczserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index a13140183..cabcdda5a 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -29,7 +29,6 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 76923e9cb47c238ad667068fb26046f8c0363041 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:28:34 +0100 Subject: [PATCH 469/643] Update csgoserver --- CounterStrikeGlobalOffensive/csgoserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 63bb25c41..d2ba2c507 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -41,7 +41,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # Required: Game Server Login Token # GSLT is required for running a public server. @@ -98,6 +97,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 5719cdca94ea8c146384421afb4d838bbffc7de9 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:28:49 +0100 Subject: [PATCH 470/643] Update cssserver --- CounterStrikeSource/cssserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index bf4b025d3..40dacf097 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From d39103603bd9e97d5e3234c1ebc72499af0fb507 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:29:00 +0100 Subject: [PATCH 471/643] Update dodserver --- DayOfDefeat/dodserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index a5fc7b867..6fc30e14c 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -29,7 +29,6 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From af4ffbe66ff8e3489cac3aba6e33a06d7e453afe Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:29:17 +0100 Subject: [PATCH 472/643] Update dodsserver --- DayOfDefeatSource/dodsserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 359a11b96..025937d76 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From d33c360b6424d4f79836217ebc5e8c2583d264c0 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:29:31 +0100 Subject: [PATCH 473/643] Update dmcserver --- DeathmatchClassic/dmcserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 2b41bf0e1..6f18aac51 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -29,7 +29,6 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 2e35624c603fc301706af157f20de631145892cb Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:29:48 +0100 Subject: [PATCH 474/643] Update dstserver --- DontStarveTogether/dstserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index a0a45cba4..e7a754670 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -25,7 +25,6 @@ steampass="" # Start Variables ip="0.0.0.0" updateonstart="off" -consolelogging="on" # Overworld: -conf_dir DST_Overworld # Cave: -conf_dir DST_Cave @@ -72,6 +71,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From fd1b7368dabada29e621ac0e3e08b7d8b0d93bfc Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:31:23 +0100 Subject: [PATCH 475/643] Update dabserver --- DoubleActionBoogaloo/dabserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 71da6e088..cdc3ca7c9 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From d4a5a45bae246bf38f2a032ad848ba8c842dba94 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:31:32 +0100 Subject: [PATCH 476/643] Update fofserver --- FistfulOfFrags/fofserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index a583b9ab6..d0a9c7372 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From dc41c01be30f30d1c960050c8527e44b6777f406 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:31:48 +0100 Subject: [PATCH 477/643] Update gmodserver --- GarrysMod/gmodserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 994a5bb67..bc4fca209 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -37,7 +37,6 @@ clientport="27005" ip="0.0.0.0" tickrate="66" updateonstart="off" -consolelogging="on" # Custom Start Parameters # Default +r_hunkalloclightmaps 0, fixes a start issue on maps with many lights @@ -92,6 +91,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 902e916764011fdc79d7b96ca20a19dd60dbdf39 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:32:00 +0100 Subject: [PATCH 478/643] Update gesserver --- GoldenEyeSource/gesserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 9ddc4526e..7649b6ec0 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -31,7 +31,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -76,6 +75,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From db11ec600474035f20f078523484053bff143482 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:32:14 +0100 Subject: [PATCH 479/643] Update hl2dmserver --- HalfLife2Deathmatch/hl2dmserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index ea9d248e5..3b45b537d 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 020bccdf0d0920af4fc31139dd590c01e261524f Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:32:29 +0100 Subject: [PATCH 480/643] Update hldmserver --- HalfLifeDeathmatch/hldmserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 8cafa3e6b..bbb418522 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -29,7 +29,6 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ @@ -74,6 +73,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 966a4c19328ab8944131d00f08478206b7b5b079 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:32:40 +0100 Subject: [PATCH 481/643] Update hldmsserver --- HalfLifeDeathmatchSource/hldmsserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 108c5b7bb..83a9684b4 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -30,7 +30,6 @@ sourcetvport="27020" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From ee6cf5a05495d33598fe53fbedd7fa09ff1b6f33 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:33:20 +0100 Subject: [PATCH 482/643] Update hwserver --- Hurtworld/hwserver | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index d7922dd8d..b828f53d7 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -43,8 +43,6 @@ loadsave="" # Use unstable 64 bit server executable (O/1) x64mode="0" -# Other -consolelogging="on" # http://hurtworld.wikia.com/wiki/Hosting_A_Server fn_parms(){ @@ -89,6 +87,7 @@ logdays="7" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" From b68c3c06c03653d6548cda18cf28cd898e6bb032 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:33:33 +0100 Subject: [PATCH 483/643] Update insserver --- Insurgency/insserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Insurgency/insserver b/Insurgency/insserver index 251861cf4..9afc9c821 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -32,7 +32,6 @@ clientport="27005" ip="0.0.0.0" updateonstart="off" workshop="0" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -77,6 +76,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 5808c82ddd03849fc8f89b7881bd08db613e24a5 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:34:04 +0100 Subject: [PATCH 484/643] Update jc2server --- JustCause2/jc2server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index d1c5d49fb..bd75e35fb 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -24,7 +24,6 @@ steampass="" # Start Variables updateonstart="off" -consolelogging="on" fn_parms(){ parms="" @@ -69,6 +68,7 @@ logdays="7" #gamelogdir="" # No server logs available scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 9c872d2f6803c82fe6771f059f80a20cf0850335 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:34:16 +0100 Subject: [PATCH 485/643] Update kfserver --- KillingFloor/kfserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 44dfeeb6d..ae9f31854 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -26,7 +26,6 @@ steampass="password" defaultmap="KF-BioticsLab.rom" ip="0.0.0.0" updateonstart="off" -consolelogging="on" fn_parms(){ parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" From 32ba4bca05bae81754093319639e3fddf2c89206 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:34:27 +0100 Subject: [PATCH 486/643] Update l4dserver --- Left4Dead/l4dserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index a4a65fef8..7ca5641a3 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -30,7 +30,6 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -75,6 +74,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 80759caf1d47f62a2eb9fdc7da71ff6ea2360dbe Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:34:38 +0100 Subject: [PATCH 487/643] Update l4d2server --- Left4Dead2/l4d2server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 22afa51da..31a897818 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -29,7 +29,6 @@ port="27015" clientport="27005" ip="0.0.0.0" updateonstart="off" -consolelogging="on" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ @@ -74,6 +73,7 @@ logdays="7" gamelogdir="${systemdir}/logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From e248346bfbf781798882c39d9b71fb892c0b5a81 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 15 Mar 2016 18:35:01 +0100 Subject: [PATCH 488/643] Update mumbleserver --- Mumble/mumbleserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 0939a40b1..53b0064d0 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -21,7 +21,6 @@ email="email@example.com" # Server Details gamename="Mumble" servicename="mumble-server" -consolelogging="on" # Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" @@ -43,6 +42,7 @@ logdays="7" logdir="${rootdir}/log" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +consolelogging="on" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" From 61a17c2b346e3f7197ff21c3c2fa20f653d362db Mon Sep 17 00:00:00 2001 From: Felix Beckmann <diabloaushh@gmail.com> Date: Thu, 17 Mar 2016 21:18:59 +0100 Subject: [PATCH 489/643] When we say exit we should exit --- functions/command_ts3_server_pass.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/command_ts3_server_pass.sh b/functions/command_ts3_server_pass.sh index 3cd0f0b1f..b8969a557 100644 --- a/functions/command_ts3_server_pass.sh +++ b/functions/command_ts3_server_pass.sh @@ -24,7 +24,7 @@ while true; do read -e -i "y" -p "Continue? [y/N]" yn case $yn in [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; + [Nn]* ) echo Exiting; exit;; * ) echo "Please answer yes or no.";; esac done @@ -59,4 +59,4 @@ if [ "${ts3status}" == "Server is running" ]; then command_start.sh else fn_serveradmin_password_set -fi \ No newline at end of file +fi From 89c4c98325428dd71c950ae771f3e1ad9fe38a96 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 16:30:01 +0000 Subject: [PATCH 490/643] Compatibility for legacy scripts --- functions/core_functions.sh | 433 +--------------------------------- functions/fn_functions | 22 +- functions/fn_getopt | 30 ++- functions/fn_update_functions | 54 +++-- 4 files changed, 87 insertions(+), 452 deletions(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index d4993d256..c0b87e0ce 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -2,75 +2,16 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="270216" +lgsm_version="271215" -# Description: Defines all functions to allow download and execution of functions using fn_fetch_function. -# This function is called first before any other function. Without this file other functions would not load. +# Description: Redirect to new core_functions.sh -# Code/functions for legacy servers - -fn_functions(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fn_getopt(){ +core_functions(){ +# Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_fetch_function -} - -# fn_fetch_core_dl also placed here to allow legecy servers to still download core functions -if [ -z "${lgsmdir}" ]; then - lgsmdir="${rootdir}/lgsm" - functionsdir="${lgsmdir}/functions" - libdir="${lgsmdir}/lib" -fi - -fn_fetch_core_dl(){ -github_file_url_dir="lgsm/functions" -github_file_url_name="${functionfile}" -filedir="${functionsdir}" -filename="${github_file_url_name}" -githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -# If the file is missing, then download -if [ ! -f "${filedir}/${filename}" ]; then - if [ ! -d "${filedir}" ]; then - mkdir -p "${filedir}" - fi - echo -e " fetching ${filename}...\c" - # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" - for curlcmd in ${curlpaths} - do - if [ -x "${curlcmd}" ]; then - break - fi - done - # If curl exists download file - if [ "$(basename ${curlcmd})" == "curl" ]; then - curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curlfetch}" - echo -e "${githuburl}\n" - exit 1 - else - echo -e "\e[0;32mOK\e[0m" - fi - else - echo -e "\e[0;31mFAIL\e[0m\n" - echo "Curl is not installed!" - echo -e "" - exit 1 - fi - chmod +x "${filedir}/${filename}" -fi -source "${filedir}/${filename}" +fn_fetch_core_dl } - -# Core - core_dl.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" @@ -87,369 +28,9 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } -core_dl.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_core_dl -} - -# Command - -command_console.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_debug.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_details.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_email_test.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_backup.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_monitor.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_start.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_stop.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_validate.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_install.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_fastdl.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -command_ts3_server_pass.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fn_restart(){ -local modulename="Restarting" -info_config.sh -if [ -d "${scriptlogdir}" ]; then - fn_scriptlog "${servername}" -fi -command_stop.sh -command_start.sh -} - - -# Checks - -check.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_config.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_deps.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_ip.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_logs.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_root.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_steamcmd.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_system_dir.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -check_tmux.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Compress - -compress_unreal2_maps.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -compress_ut99_maps.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Dev - -command_dev_debug.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -command_dev_detect_deps.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Fix - -fix.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_arma3.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_csgo.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_dst.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_ins.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_steamcmd.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_glibc.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_ro.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_kf.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_ut2k4.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Info - -info_config.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -info_distro.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -info_glibc.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -info_ts3status.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Email - -email.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -# Logs - -logs.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# Monitor - -monitor_gsquery.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -# Update - -update_check.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - command_update_functions.sh(){ functionfile="${FUNCNAME}" -fn_fetch_function -} - -update_dl.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fn_update_functions.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - -# -## Installer functions -# - -fn_autoinstall(){ -autoinstall=1 -command_install.sh -} - -install_complete.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_config.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_gsquery.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_gslt.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_header.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_logs.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_retry.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_server_dir.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} -install_server_files.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_steamcmd.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_ts3.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_ts3db.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_ut2k4.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_dl_ut2k4.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -install_ut2k4_key.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fix_ut99.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function +fn_fetch_core_dl } -# Calls on-screen messages -core_messages.sh - -#Calls file downloader -core_dl.sh +core_functions.sh \ No newline at end of file diff --git a/functions/fn_functions b/functions/fn_functions index f6ea53f55..c0b87e0ce 100644 --- a/functions/fn_functions +++ b/functions/fn_functions @@ -6,15 +6,31 @@ lgsm_version="271215" # Description: Redirect to new core_functions.sh -core_functions.sh(){ +core_functions(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl +} + +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_getopt.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl +} + +core_messages.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +command_update_functions.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl } core_functions.sh \ No newline at end of file diff --git a/functions/fn_getopt b/functions/fn_getopt index 8b52e1865..89a298870 100644 --- a/functions/fn_getopt +++ b/functions/fn_getopt @@ -1,15 +1,37 @@ #!/bin/bash -# LGSM core_getopt.sh function +# LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="271215" -# Description: Redirect to new core_getopt.sh +# Description: Redirect to new core_functions.sh -core_getopt.sh(){ +core_functions(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_dl.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl +} + +core_getopt.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_messages.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +command_update_functions.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl } +core_functions.sh core_getopt.sh \ No newline at end of file diff --git a/functions/fn_update_functions b/functions/fn_update_functions index 5fbb28975..342ca8351 100644 --- a/functions/fn_update_functions +++ b/functions/fn_update_functions @@ -1,22 +1,38 @@ #!/bin/bash -# LGSM fn_update_functions.sh function +# LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="230116" - -# Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub. - -fn_print_dots "Updating functions" -fn_scriptlog "Updating functions" -sleep 1 -echo -ne "\n" -rm -rfv "${rootdir}/functions/"* -exitcode=$? -if [ "${exitcode}" == "0" ]; then - fn_print_ok "Updating functions" - fn_scriptlog "Success! Updating functions" -else - fn_print_fail "Updating functions" - fn_scriptlog "Failure! Updating functions" -fi -echo -ne "\n" \ No newline at end of file +lgsm_version="271215" + +# Description: Redirect to new core_functions.sh + +core_functions(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_dl.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_getopt.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_messages.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +command_update_functions.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_functions.sh +command_update_functions.sh + From f3261d3ad9bde9f98721638b0ab3c76d8dbacb76 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 16:35:38 +0000 Subject: [PATCH 491/643] added .sh --- functions/core_functions.sh | 2 +- functions/fn_functions | 2 +- functions/fn_getopt | 2 +- functions/fn_update_functions | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index c0b87e0ce..8962efd04 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -6,7 +6,7 @@ lgsm_version="271215" # Description: Redirect to new core_functions.sh -core_functions(){ +core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" fn_fetch_core_dl diff --git a/functions/fn_functions b/functions/fn_functions index c0b87e0ce..8962efd04 100644 --- a/functions/fn_functions +++ b/functions/fn_functions @@ -6,7 +6,7 @@ lgsm_version="271215" # Description: Redirect to new core_functions.sh -core_functions(){ +core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" fn_fetch_core_dl diff --git a/functions/fn_getopt b/functions/fn_getopt index 89a298870..6c0ab922e 100644 --- a/functions/fn_getopt +++ b/functions/fn_getopt @@ -6,7 +6,7 @@ lgsm_version="271215" # Description: Redirect to new core_functions.sh -core_functions(){ +core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" fn_fetch_core_dl diff --git a/functions/fn_update_functions b/functions/fn_update_functions index 342ca8351..6370a3de9 100644 --- a/functions/fn_update_functions +++ b/functions/fn_update_functions @@ -6,7 +6,7 @@ lgsm_version="271215" # Description: Redirect to new core_functions.sh -core_functions(){ +core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" fn_fetch_core_dl From bb46d57a86fc90f66d4e00af32f671cd1967a69b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 18:42:48 +0000 Subject: [PATCH 492/643] corrected function name --- functions/core_functions.sh | 10 +++++----- functions/fn_functions | 10 +++++----- functions/fn_getopt | 10 +++++----- functions/fn_update_functions | 10 +++++----- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 8962efd04..45bc375df 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -9,28 +9,28 @@ lgsm_version="271215" core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_dl.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_getopt.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_messages.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } command_update_functions.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_functions.sh \ No newline at end of file diff --git a/functions/fn_functions b/functions/fn_functions index 8962efd04..45bc375df 100644 --- a/functions/fn_functions +++ b/functions/fn_functions @@ -9,28 +9,28 @@ lgsm_version="271215" core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_dl.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_getopt.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_messages.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } command_update_functions.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_functions.sh \ No newline at end of file diff --git a/functions/fn_getopt b/functions/fn_getopt index 6c0ab922e..67e7dc4a2 100644 --- a/functions/fn_getopt +++ b/functions/fn_getopt @@ -9,28 +9,28 @@ lgsm_version="271215" core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_dl.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_getopt.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_messages.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } command_update_functions.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_functions.sh diff --git a/functions/fn_update_functions b/functions/fn_update_functions index 6370a3de9..dab701c9b 100644 --- a/functions/fn_update_functions +++ b/functions/fn_update_functions @@ -9,28 +9,28 @@ lgsm_version="271215" core_functions.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_dl.sh(){ # Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_getopt.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_messages.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } command_update_functions.sh(){ functionfile="${FUNCNAME}" -fn_fetch_core_dl +fn_runfunction } core_functions.sh From 93c9f83b2a3363f7ddd1c5ef5c4d558cf09db557 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 18:56:36 +0000 Subject: [PATCH 493/643] Improving backwards compatibility --- functions/core_functions.sh | 73 +++++++++++++++++++++++++------------ functions/core_getopt.sh | 15 ++++++++ functions/fn_getopt | 31 ++-------------- 3 files changed, 69 insertions(+), 50 deletions(-) create mode 100644 functions/core_getopt.sh diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 45bc375df..81500398a 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -2,35 +2,62 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="180316" -# Description: Redirect to new core_functions.sh +# Description: Redirect to new location for core_functions.sh -core_functions.sh(){ -# Functions are defined in core_functions.sh. -functionfile="${FUNCNAME}" -fn_runfunction -} +# fn_fetch_core_dl also placed here to allow legecy servers to still download core functions +if [ -z "${lgsmdir}" ]; then + lgsmdir="${rootdir}/lgsm" + functionsdir="${lgsmdir}/functions" + libdir="${lgsmdir}/lib" +fi -core_dl.sh(){ -# Functions are defined in core_functions.sh. -functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir -p "${filedir}" + fi + echo -e " fetching ${filename}...\c" + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else + echo -e "\e[0;31mFAIL\e[0m\n" + echo "Curl is not installed!" + echo -e "" + exit 1 + fi + chmod +x "${filedir}/${filename}" +fi +source "${filedir}/${filename}" } -core_getopt.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -core_messages.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -command_update_functions.sh(){ +core_functions.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } core_functions.sh \ No newline at end of file diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh new file mode 100644 index 000000000..aa487b0a2 --- /dev/null +++ b/functions/core_getopt.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# LGSM core_getopt function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="180316" + +# Description: Redirect to new location for core_getopt.sh + +core_getopt.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + +core_getopt.sh \ No newline at end of file diff --git a/functions/fn_getopt b/functions/fn_getopt index 67e7dc4a2..73d3b530d 100644 --- a/functions/fn_getopt +++ b/functions/fn_getopt @@ -1,37 +1,14 @@ #!/bin/bash -# LGSM core_functions.sh function +# LGSM fn_getopt function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="180316" -# Description: Redirect to new core_functions.sh - -core_functions.sh(){ -# Functions are defined in core_functions.sh. -functionfile="${FUNCNAME}" -fn_runfunction -} - -core_dl.sh(){ -# Functions are defined in core_functions.sh. -functionfile="${FUNCNAME}" -fn_runfunction -} +# Description: Redirect to new core_getopt.sh core_getopt.sh(){ functionfile="${FUNCNAME}" -fn_runfunction -} - -core_messages.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -command_update_functions.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_core_dl } -core_functions.sh core_getopt.sh \ No newline at end of file From 89a68e03a7891680d1deab748fd41184c668c046 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:05:41 +0000 Subject: [PATCH 494/643] Added extra protections against incorrect rm --- functions/command_update_functions.sh | 40 ++++++++++++++++++++++ lgsm/functions/command_update_functions.sh | 19 +++++----- 2 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 functions/command_update_functions.sh diff --git a/functions/command_update_functions.sh b/functions/command_update_functions.sh new file mode 100644 index 000000000..a23cf58a1 --- /dev/null +++ b/functions/command_update_functions.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# LGSM update_functions.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="270216" + +# Description: Deletes the functions dir to allow re-downloading of functions from GitHub. + +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +check.sh +fn_print_dots "Updating functions" +fn_scriptlog "Updating functions" +sleep 1 +echo -ne "\n" + + + +# Removed legecy functions dir +if [ -n "${rootdir}" ]; then + if [ -d "${rootdir}/functions/" ]; then + rm -rfv "${rootdir}/functions/" + exitcode=$? + fi +fi + +if [ -n "${functionsdir}" ]; then + if [ -d "${functionsdir}" ]; then + rm -rfv "${functionsdir}/"* + exitcode=$? + fi +fi + +if [ "${exitcode}" == "0" ]; then + fn_print_ok "Updating functions" + fn_scriptlog "Success! Updating functions" +else + fn_print_fail "Updating functions" + fn_scriptlog "Failure! Updating functions" +fi +echo -ne "\n" \ No newline at end of file diff --git a/lgsm/functions/command_update_functions.sh b/lgsm/functions/command_update_functions.sh index 9c0ac4b90..a23cf58a1 100644 --- a/lgsm/functions/command_update_functions.sh +++ b/lgsm/functions/command_update_functions.sh @@ -13,18 +13,21 @@ fn_scriptlog "Updating functions" sleep 1 echo -ne "\n" + + # Removed legecy functions dir -if [ -d "${rootdir}/functions/" ]; then - rm -rfv "${rootdir}/functions/" - exitcode=$? +if [ -n "${rootdir}" ]; then + if [ -d "${rootdir}/functions/" ]; then + rm -rfv "${rootdir}/functions/" + exitcode=$? + fi fi if [ -n "${functionsdir}" ]; then - rm -rfv "${functionsdir}/"* - exitcode=$? -else - fn_print_fail "Updating functions" - fn_scriptlog "Failure! Updating functions" + if [ -d "${functionsdir}" ]; then + rm -rfv "${functionsdir}/"* + exitcode=$? + fi fi if [ "${exitcode}" == "0" ]; then From 211b7889f9d76ae2949db5039f7fdde5bf63867f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:06:22 +0000 Subject: [PATCH 495/643] Improvements to backward compatibility --- functions/fn_functions | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/functions/fn_functions b/functions/fn_functions index 45bc375df..abea6d258 100644 --- a/functions/fn_functions +++ b/functions/fn_functions @@ -1,8 +1,8 @@ #!/bin/bash -# LGSM core_functions.sh function +# LGSM fn_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="180316" # Description: Redirect to new core_functions.sh @@ -12,25 +12,4 @@ functionfile="${FUNCNAME}" fn_runfunction } -core_dl.sh(){ -# Functions are defined in core_functions.sh. -functionfile="${FUNCNAME}" -fn_runfunction -} - -core_getopt.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -core_messages.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -command_update_functions.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - core_functions.sh \ No newline at end of file From 1669d06f5ba6e42341ce09c80703549bb30288cd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:09:23 +0000 Subject: [PATCH 496/643] corrected line endings --- functions/core_getopt.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index aa487b0a2..d728aeb33 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -7,7 +7,6 @@ lgsm_version="180316" # Description: Redirect to new location for core_getopt.sh core_getopt.sh(){ -# Functions are defined in core_functions.sh. functionfile="${FUNCNAME}" fn_fetch_core_dl } From 8c9a3d03a2ce9b86e0928faaea944b3c4d2da639 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:10:03 +0000 Subject: [PATCH 497/643] line endings --- functions/core_getopt.sh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index d728aeb33..80bf47a14 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -1,14 +1,14 @@ -#!/bin/bash -# LGSM core_getopt function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="180316" - -# Description: Redirect to new location for core_getopt.sh - -core_getopt.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_core_dl -} - +#!/bin/bash +# LGSM core_getopt function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="180316" + +# Description: Redirect to new location for core_getopt.sh + +core_getopt.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_core_dl +} + core_getopt.sh \ No newline at end of file From d94b5293298e3aa771558b0539bbafdb4165bf78 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:17:29 +0000 Subject: [PATCH 498/643] minor change --- functions/command_update_functions.sh | 4 +--- functions/core_functions.sh | 2 +- functions/core_getopt.sh | 4 ++-- functions/fn_functions | 4 ++-- functions/fn_getopt | 4 ++-- functions/fn_update_functions | 27 ++-------------------- lgsm/functions/command_update_functions.sh | 4 +--- 7 files changed, 11 insertions(+), 38 deletions(-) diff --git a/functions/command_update_functions.sh b/functions/command_update_functions.sh index a23cf58a1..5e9671594 100644 --- a/functions/command_update_functions.sh +++ b/functions/command_update_functions.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM update_functions.sh function +# LGSM command_update_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="270216" @@ -13,8 +13,6 @@ fn_scriptlog "Updating functions" sleep 1 echo -ne "\n" - - # Removed legecy functions dir if [ -n "${rootdir}" ]; then if [ -d "${rootdir}/functions/" ]; then diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 81500398a..d2e389f56 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -4,7 +4,7 @@ # Website: http://gameservermanagers.com lgsm_version="180316" -# Description: Redirect to new location for core_functions.sh +# Description: REDIRECT FUNCTION to new location for core_functions.sh # fn_fetch_core_dl also placed here to allow legecy servers to still download core functions if [ -z "${lgsmdir}" ]; then diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index 80bf47a14..b3e0b4c33 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -1,10 +1,10 @@ #!/bin/bash -# LGSM core_getopt function +# LGSM core_getopt.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="180316" -# Description: Redirect to new location for core_getopt.sh +# Description: REDIRECT FUNCTION to new location for core_getopt.sh core_getopt.sh(){ functionfile="${FUNCNAME}" diff --git a/functions/fn_functions b/functions/fn_functions index abea6d258..0acb04b17 100644 --- a/functions/fn_functions +++ b/functions/fn_functions @@ -1,10 +1,10 @@ #!/bin/bash -# LGSM fn_functions.sh function +# LGSM fn_functions function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="180316" -# Description: Redirect to new core_functions.sh +# Description: REDIRECT FUNCTION to new core_functions.sh core_functions.sh(){ # Functions are defined in core_functions.sh. diff --git a/functions/fn_getopt b/functions/fn_getopt index 73d3b530d..3323d7f75 100644 --- a/functions/fn_getopt +++ b/functions/fn_getopt @@ -1,10 +1,10 @@ #!/bin/bash -# LGSM fn_getopt function +# LGSM fn_getopt.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="180316" -# Description: Redirect to new core_getopt.sh +# Description: REDIRECT FUNCTION to new core_getopt.sh core_getopt.sh(){ functionfile="${FUNCNAME}" diff --git a/functions/fn_update_functions b/functions/fn_update_functions index dab701c9b..ee19979c5 100644 --- a/functions/fn_update_functions +++ b/functions/fn_update_functions @@ -1,38 +1,15 @@ #!/bin/bash -# LGSM core_functions.sh function +# LGSM fn_update_functions function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="271215" -# Description: Redirect to new core_functions.sh - -core_functions.sh(){ -# Functions are defined in core_functions.sh. -functionfile="${FUNCNAME}" -fn_runfunction -} - -core_dl.sh(){ -# Functions are defined in core_functions.sh. -functionfile="${FUNCNAME}" -fn_runfunction -} - -core_getopt.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -core_messages.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} +# Description: REDIRECT FUNCTION to new command_update_functions.sh command_update_functions.sh(){ functionfile="${FUNCNAME}" fn_runfunction } -core_functions.sh command_update_functions.sh diff --git a/lgsm/functions/command_update_functions.sh b/lgsm/functions/command_update_functions.sh index a23cf58a1..5e9671594 100644 --- a/lgsm/functions/command_update_functions.sh +++ b/lgsm/functions/command_update_functions.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM update_functions.sh function +# LGSM command_update_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com lgsm_version="270216" @@ -13,8 +13,6 @@ fn_scriptlog "Updating functions" sleep 1 echo -ne "\n" - - # Removed legecy functions dir if [ -n "${rootdir}" ]; then if [ -d "${rootdir}/functions/" ]; then From c15fea5f7887cff6e9c18aabb25d451ae5d2777a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:45:45 +0000 Subject: [PATCH 499/643] check_glibc on install check glibc will check in install if the server can run with glibc version installed or if glibc fix will get the server to run. Should this not be possible it will ber ecommendedto upgrade the server --- lgsm/functions/check_glibc.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lgsm/functions/check_glibc.sh diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh new file mode 100644 index 000000000..3647f4705 --- /dev/null +++ b/lgsm/functions/check_glibc.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# LGSM check_glibc.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="020116" + +# Description: Checks if server has correct glibc or has a fix available. + +info_glibc.sh + +glibc_version="$(ldd --version | sed -n '1s/.* //p')" +if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != "${glibc_required}" ]; then + if [ "${glibcfix}" != "yes" ]; then + fn_print_warn_nl "Glibc fix: No Glibc fix available!" + echo -en "\n" + echo " * glibc required: $glibc_required" + echo " * glibc installed: $glibc_version" + echo -en "\n" + fn_print_infomation "The game server will probably not work. A distro upgrade is required!" + sleep 5 + fi + echo -en "\n" +fi \ No newline at end of file From cf1bf992a0088968485d98c8c45eae17296c8632 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:45:53 +0000 Subject: [PATCH 500/643] added check glibc --- lgsm/functions/check.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 186f30859..d62b479dc 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -17,6 +17,10 @@ if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname} check_system_dir.sh fi +if [ "${function_selfname}" -= "command_install.sh" ]; then + check_glibc.sh +fi + local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh update_check.sh command_validate.sh command_update_functions.sh command_email_test.sh ) for allowed_command in "${allowed_commands_array[@]}" do From 3a2d4e14533541ef9f94e1129fd565eeaeaf5430 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:46:07 +0000 Subject: [PATCH 501/643] minor changes --- lgsm/functions/fix_glibc.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 77aa852de..826f74b9c 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -25,7 +25,6 @@ do fi done - glibc_version="$(ldd --version | sed -n '1s/.* //p')" if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != "${glibc_required}" ]; then if [ "${glibcfix}" == "yes" ]; then @@ -35,10 +34,13 @@ if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != export LD_LIBRARY_PATH=:"${libdir}" else fn_print_warn_nl "Glibc fix: No Glibc fix available!" + echo -en "\n" echo " * glibc required: $glibc_required" echo " * glibc installed: $glibc_version" - fn_print_infomation "The game server is unlikly to work. A distro upgrade is required" - fi + echo -en "\n" + fn_print_infomation "The game server will probably not work. A distro upgrade is required!" + fi + echo -en "\n" else echo "GLIBC is OK no fix required" fi \ No newline at end of file From f2fe7d78893afdc4784b50ac3907a5cc29c929b1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:46:51 +0000 Subject: [PATCH 502/643] bug --- lgsm/functions/check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index d62b479dc..aa9ab63ab 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -17,7 +17,7 @@ if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname} check_system_dir.sh fi -if [ "${function_selfname}" -= "command_install.sh" ]; then +if [ "${function_selfname}" == "command_install.sh" ]; then check_glibc.sh fi From 3930d98a85618df764d8a3757fbbcf39ca7b90e7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:52:47 +0000 Subject: [PATCH 503/643] added check glibc removed code for legacy --- lgsm/functions/core_functions.sh | 68 +++----------------------------- 1 file changed, 6 insertions(+), 62 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 613311a14..266333993 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -7,68 +7,6 @@ lgsm_version="270216" # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. -# Code/functions for legacy servers - -fn_functions(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -fn_getopt(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - -# fn_fetch_core_dl also placed here to allow legecy servers to still download core functions -if [ -z "${lgsmdir}" ]; then - lgsmdir="${rootdir}/lgsm" - functionsdir="${lgsmdir}/functions" - libdir="${lgsmdir}/lib" -fi - -fn_fetch_core_dl(){ -github_file_url_dir="lgsm/functions" -github_file_url_name="${functionfile}" -filedir="${functionsdir}" -filename="${github_file_url_name}" -githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -# If the file is missing, then download -if [ ! -f "${filedir}/${filename}" ]; then - if [ ! -d "${filedir}" ]; then - mkdir -p "${filedir}" - fi - echo -e " fetching ${filename}...\c" - # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" - for curlcmd in ${curlpaths} - do - if [ -x "${curlcmd}" ]; then - break - fi - done - # If curl exists download file - if [ "$(basename ${curlcmd})" == "curl" ]; then - curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) - if [ $? -ne 0 ]; then - echo -e "\e[0;31mFAIL\e[0m\n" - echo "${curlfetch}" - echo -e "${githuburl}\n" - exit 1 - else - echo -e "\e[0;32mOK\e[0m" - fi - else - echo -e "\e[0;31mFAIL\e[0m\n" - echo "Curl is not installed!" - echo -e "" - exit 1 - fi - chmod +x "${filedir}/${filename}" -fi -source "${filedir}/${filename}" -} - - # Core core_dl.sh(){ @@ -182,6 +120,12 @@ functionfile="${FUNCNAME}" fn_fetch_function } +check_glibc.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + + check_ip.sh(){ functionfile="${FUNCNAME}" fn_fetch_function From 2aee8dafc418091971c99d82321e6205b8d36d94 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 19:55:47 +0000 Subject: [PATCH 504/643] added legacy code back in --- lgsm/functions/core_functions.sh | 63 +++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 266333993..7240cfc12 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -7,6 +7,68 @@ lgsm_version="270216" # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. +# Code/functions for legacy servers + +fn_functions(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +fn_getopt(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +# fn_fetch_core_dl also placed here to allow legecy servers to still download core functions +if [ -z "${lgsmdir}" ]; then + lgsmdir="${rootdir}/lgsm" + functionsdir="${lgsmdir}/functions" + libdir="${lgsmdir}/lib" +fi + +fn_fetch_core_dl(){ +github_file_url_dir="lgsm/functions" +github_file_url_name="${functionfile}" +filedir="${functionsdir}" +filename="${github_file_url_name}" +githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" +# If the file is missing, then download +if [ ! -f "${filedir}/${filename}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir -p "${filedir}" + fi + echo -e " fetching ${filename}...\c" + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo "${curlfetch}" + echo -e "${githuburl}\n" + exit 1 + else + echo -e "\e[0;32mOK\e[0m" + fi + else + echo -e "\e[0;31mFAIL\e[0m\n" + echo "Curl is not installed!" + echo -e "" + exit 1 + fi + chmod +x "${filedir}/${filename}" +fi +source "${filedir}/${filename}" +} + + # Core core_dl.sh(){ @@ -125,7 +187,6 @@ functionfile="${FUNCNAME}" fn_fetch_function } - check_ip.sh(){ functionfile="${FUNCNAME}" fn_fetch_function From d32a6defb88291bc8e02fbf8f329e84ee74eb28c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 20:03:42 +0000 Subject: [PATCH 505/643] glibc fix is no longer required on install --- lgsm/functions/fix.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index f10f44f6c..a57484305 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -47,7 +47,6 @@ fi # Fixes that are run on install only. if [ "${function_selfname}" == "command_install.sh" ]; then - fix_glibc.sh if [ "${gamename}" == "Killing Floor" ]; then echo "" echo "Applying ${gamename} Server Fixes" From 341db2e034b84628894f3fe1b6d0294e18fffd1d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 18 Mar 2016 20:30:07 +0000 Subject: [PATCH 506/643] added 2nd mime for gzip --- lgsm/functions/core_dl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index d6d841637..4db131df2 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -54,7 +54,7 @@ echo -ne "extracting ${filename}..." fn_scriptlog "extracting download" mime=$(file -b --mime-type "${filedir}/${filename}") -if [ "${mime}" == "application/gzip" ]; then +if [ "${mime}" == "application/gzip" ]||[ "${mime}" == "application/x-gzip" ]; then tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}") elif [ "${mime}" == "application/x-bzip2" ]; then tarcmd=$(tar -jxf "${filedir}/${filename}" -C "${extractdir}") From d3086275d09e3db552a9ca6cba222199f59de47c Mon Sep 17 00:00:00 2001 From: Felix Beckmann <diabloaushh@gmail.com> Date: Fri, 18 Mar 2016 22:54:20 +0100 Subject: [PATCH 507/643] Should always start the server with the inifile If we don't start the server with the ini he may also not load the right sql plugin. --- functions/command_start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_start.sh b/functions/command_start.sh index 309a8078f..5a6ae2569 100644 --- a/functions/command_start.sh +++ b/functions/command_start.sh @@ -56,7 +56,7 @@ mv "${scriptlog}" "${scriptlogdate}" date > "${rootdir}/${lockselfname}" cd "${executabledir}" if [ "${ts3serverpass}" == "1" ];then - ./ts3server_startscript.sh start serveradmin_password="${newpassword}" + ./ts3server_startscript.sh start serveradmin_password="${newpassword}" inifile="${servercfgfullpath}" else ./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1 fi From dc9b586a1c1396fb39359b8f6c4c636854102b17 Mon Sep 17 00:00:00 2001 From: Felix Beckmann <diabloaushh@gmail.com> Date: Fri, 18 Mar 2016 22:57:37 +0100 Subject: [PATCH 508/643] Set ts3serverpass to 0 after password change After we started the server with the new password we should reset the ts3serverpass variable otherwise it would start the server again in new password mode. --- functions/command_ts3_server_pass.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/command_ts3_server_pass.sh b/functions/command_ts3_server_pass.sh index b8969a557..a1f1fce0a 100644 --- a/functions/command_ts3_server_pass.sh +++ b/functions/command_ts3_server_pass.sh @@ -45,6 +45,7 @@ fn_printinfonl "Starting server with new password" command_start.sh # Stop server in "new password mode" command_stop.sh +ts3serverpass="0" fn_printoknl "Password applied" fn_scriptlog "New ServerAdmin password applied" sleep 1 From ee71fe5fad3b0e534d46d5795c6659acb5e50a0b Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sat, 19 Mar 2016 00:44:22 +0100 Subject: [PATCH 509/643] Fixed backing up folders + size info & appearance --- functions/command_backup.sh | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/functions/command_backup.sh b/functions/command_backup.sh index 5f923ad07..6a64b5dea 100644 --- a/functions/command_backup.sh +++ b/functions/command_backup.sh @@ -2,7 +2,7 @@ # LGSM command_backup.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="180316" # Description: Creates a .tar.gz file in the backup directory. @@ -12,11 +12,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" echo "" -echo "${gamename} Backup" -echo "============================" -echo "" -echo "The following backup will be created:" -echo "" +fn_printinfonl "A total of $(du -sh "${rootdir}" --exclude="${backupdir}" | awk '{print $1}') will be compressed into the following backup:" echo "${backupdir}/${backupname}.tar.gz" echo "" while true; do @@ -27,6 +23,7 @@ while true; do * ) echo "Please answer yes or no.";; esac done +echo "" tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") if [ "${tmuxwc}" -eq 1 ]; then echo "" @@ -41,24 +38,14 @@ if [ "${tmuxwc}" -eq 1 ]; then esac done fi -fn_scriptlog "Started" -echo -en "starting backup.\r" -sleep 1 -echo -en "starting backup..\r" -sleep 1 -echo -en "starting backup...\r" -sleep 1 -echo -en "\n" -cd "${rootdir}" +fn_scriptlog "Started backup" +fn_printdots "Starting backup, please wait..." +sleep 2 if [ ! -d "${backupdir}" ]; then - mkdir -v "${backupdir}" + mkdir "${backupdir}" fi -tar -cvzf "${backupdir}/${backupname}.tar.gz" --exclude "${backupdir}" ./* +tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* echo "" -echo "Backup created: ${backupdir}/${backupname}.tar.gz" -fn_scriptlog "Created: ${backupdir}/${backupname}.tar.gz" +fn_printoknl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" +fn_scriptlog "Complete, Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" sleep 1 -echo "" -fn_printcompletenl "Complete." -fn_scriptlog "Complete" -echo "" From 736036469e87148c80798bdea343c7a840d8f8cf Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sat, 19 Mar 2016 00:48:38 +0100 Subject: [PATCH 510/643] backup in progress text --- functions/command_backup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/command_backup.sh b/functions/command_backup.sh index 6a64b5dea..5cc2aa0ed 100644 --- a/functions/command_backup.sh +++ b/functions/command_backup.sh @@ -39,7 +39,7 @@ if [ "${tmuxwc}" -eq 1 ]; then done fi fn_scriptlog "Started backup" -fn_printdots "Starting backup, please wait..." +fn_printdots "Backup in progress, please wait..." sleep 2 if [ ! -d "${backupdir}" ]; then mkdir "${backupdir}" From 7601c9f8a1cf329074972ad35fdc0a8749f1ceb9 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sat, 19 Mar 2016 01:00:14 +0100 Subject: [PATCH 511/643] removed extra echo --- functions/command_backup.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/functions/command_backup.sh b/functions/command_backup.sh index 5cc2aa0ed..931c9516c 100644 --- a/functions/command_backup.sh +++ b/functions/command_backup.sh @@ -45,7 +45,6 @@ if [ ! -d "${backupdir}" ]; then mkdir "${backupdir}" fi tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* -echo "" fn_printoknl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" fn_scriptlog "Complete, Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" sleep 1 From aabbe9b4639d6d722fef048801809b4adc8b30e7 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sat, 19 Mar 2016 01:23:54 +0100 Subject: [PATCH 512/643] echo at the right place --- functions/command_backup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functions/command_backup.sh b/functions/command_backup.sh index 931c9516c..ae50f13be 100644 --- a/functions/command_backup.sh +++ b/functions/command_backup.sh @@ -2,7 +2,7 @@ # LGSM command_backup.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="180316" +lgsm_version="190316" # Description: Creates a .tar.gz file in the backup directory. @@ -48,3 +48,4 @@ tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" fn_printoknl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" fn_scriptlog "Complete, Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" sleep 1 +echo "" From 172e2fbb94ffb0da56ab85d719da4e86670fff35 Mon Sep 17 00:00:00 2001 From: Flightkick <Flightkick@users.noreply.github.com> Date: Wed, 23 Mar 2016 15:28:07 +0100 Subject: [PATCH 513/643] Removed Executable + Argumens Fixes #766 --- functions/email.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/functions/email.sh b/functions/email.sh index 93d259d80..361c9d8bf 100644 --- a/functions/email.sh +++ b/functions/email.sh @@ -48,9 +48,6 @@ fn_parms echo -e "\e[34mBackups:\t\e[0m${backupdirdu}" fi echo -e "" - echo -e "========================================\nCommand-line Parameters\n========================================" - echo -e "${executable} ${parms}" - echo -e "" echo -e "========================================\nLogs\n========================================" }| sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee "${scriptlogdir}/${servicename}-email.log" > /dev/null 2>&1 echo -e "\n\n Script log\n===================" >> "${emaillog}" From 906a2d76bddb0bf95bd9a5335ed556dc4f380838 Mon Sep 17 00:00:00 2001 From: Dom <domomg@users.noreply.github.com> Date: Sat, 2 Apr 2016 10:37:48 +0200 Subject: [PATCH 514/643] Update install_ut2k4_key.sh The old URL gives a 404. --- functions/install_ut2k4_key.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/install_ut2k4_key.sh b/functions/install_ut2k4_key.sh index 35a9599f6..b959cf96b 100644 --- a/functions/install_ut2k4_key.sh +++ b/functions/install_ut2k4_key.sh @@ -10,10 +10,10 @@ echo "=================================" sleep 1 echo "To get your server listed on the Master Server list" echo "you must get a free CD key. Get a key here:" -echo "http://www.unrealtournament.com/ut2004server/cdkey.php" +echo "https://forums.unrealtournament.com/utserver/cdkey.php?2004" echo "" echo "Once you have the key enter it below" echo -n "KEY: " read CODE echo ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey" -echo "" \ No newline at end of file +echo "" From 12c16398fb9918b552cfe148c262d3b7781c1a30 Mon Sep 17 00:00:00 2001 From: lanrenags <Chr.Raible@gmail.com> Date: Wed, 20 Apr 2016 00:51:51 +0200 Subject: [PATCH 515/643] Update tfcserver typo --- TeamFortressClassic/tfcserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index d1ee8b4c3..82f4583ff 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -46,7 +46,7 @@ githubbranch="master" # Steam appid="90" -appidmos="tfc" +appidmod="tfc" # Server Details servicename="tfc-server" From 4e6c61c29ff84602a28a5be01ce2d5c11e992d80 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 22 Apr 2016 22:39:29 +0100 Subject: [PATCH 516/643] Glibc checking should work correctly --- lgsm/functions/fix_glibc.sh | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 826f74b9c..5af92d4b7 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -2,13 +2,12 @@ # LGSM fix_glibc.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="020116" +lgsm_version="220416" # Description: Downloads required glibc files and applys teh glibc fix if required info_glibc.sh - local libstdc_servers_array=( "ARMA 3" "Blade Symphony" "Garry's Mod" "Just Cause 2" ) for libstdc_server in "${libstdc_servers_array[@]}" do @@ -25,22 +24,20 @@ do fi done -glibc_version="$(ldd --version | sed -n '1s/.* //p')" -if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != "${glibc_required}" ]; then +glibc_version="$(ldd --version | sed 's/.* //;q')" +if [ "$(printf '%s\n'${glibc_required}'\n' ${glibc_version} | sort -V | head -n 1)" != "${glibc_required}" ]; then if [ "${glibcfix}" == "yes" ]; then fn_print_info_nl "Glibc fix: Using Glibc fix" - echo " * glibc required: $glibc_required" - echo " * glibc installed: $glibc_version" + echo " * glibc required: ${glibc_required}" + echo " * glibc installed: ${glibc_version}" export LD_LIBRARY_PATH=:"${libdir}" else fn_print_warn_nl "Glibc fix: No Glibc fix available!" echo -en "\n" - echo " * glibc required: $glibc_required" - echo " * glibc installed: $glibc_version" + echo " * glibc required: ${glibc_required}" + echo " * glibc installed: ${glibc_version}" echo -en "\n" fn_print_infomation "The game server will probably not work. A distro upgrade is required!" fi echo -en "\n" -else - echo "GLIBC is OK no fix required" fi \ No newline at end of file From 12b85ec64dacac0b9e63ab002ee6c5695760b235 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 22 Apr 2016 22:53:08 +0100 Subject: [PATCH 517/643] Fixed not detecting config dir --- NS2Combat/ns2cserver | 9 +++++---- NaturalSelection2/ns2server | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index dab5e6e62..9d1eada32 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="220416" #### Variables #### @@ -32,8 +32,6 @@ servername="NS2C Server" webadminuser="admin" webadminpass="admin" webadminport="8080" -configpath="server1" -modstorage="server1/Workshop" mods="" password="" # Add the following line to the parms if you want a private server. Ensuring @@ -42,7 +40,7 @@ password="" # http://wiki.unknownworlds.com/ns2/Dedicated_Server fn_parms(){ -parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${rootdir}/${configpath}\" -modstorage \"${rootdir}/${modstorage}\" -mods \"${mods}\"" +parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\"" } #### Advanced Variables #### @@ -72,6 +70,9 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}/ia32" executable="./ns2combatserver_linux32" +servercfgdir="${rootdir}/server1" +servercfgfullpath="${servercfgdir}" +modstoragedir="${servercfgdir}/Workshop" backupdir="${rootdir}/backups" # Logging diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 09bfab35a..206a652f8 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="220416" #### Variables #### @@ -32,8 +32,6 @@ servername="NS2 Server" webadminuser="admin" webadminpass="admin" webadminport="8080" -configpath="server1" -modstorage="server1/Workshop" mods="" password="" # Add the following line to the parms if you want a private server. Ensuring @@ -42,7 +40,7 @@ password="" # http://wiki.unknownworlds.com/ns2/Dedicated_Server fn_parms(){ -parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${rootdir}/${configpath}\" -modstorage \"${rootdir}/${modstorage}\" -mods \"${mods}\"" +parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\"" } #### Advanced Variables #### @@ -72,6 +70,9 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" executable="./server_linux32" +servercfgdir="${rootdir}/server1" +servercfgfullpath="${servercfgdir}" +modstoragedir="${servercfgdir}/Workshop" backupdir="${rootdir}/backups" # Logging From 3fa535f88ea00512ce35a064f93fc3bcabe42efd Mon Sep 17 00:00:00 2001 From: DrCox1911 <michael.hochriegl@googlemail.com> Date: Sat, 23 Apr 2016 22:59:56 +0200 Subject: [PATCH 518/643] Support for branch added Added the support to opt in to different branches like iwillbackupmysave. Change in install_serverfiles.sh is also needed to reflect this! --- ProjectZomboid/pzserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 701827e96..d719944cd 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -42,6 +42,9 @@ githubbranch="master" # Steam appid="380870" +# Allows for opting into the various Steam branches that PZ has to offer +# Example: -beta iwillbackupmysave -betapassword iaccepttheconsequences +branch="" # Server Details servicename="pz-server" From 5e4728c8c83ee04d4c747eeb3de8bf58ae048326 Mon Sep 17 00:00:00 2001 From: DrCox1911 <michael.hochriegl@googlemail.com> Date: Sun, 24 Apr 2016 00:23:27 +0200 Subject: [PATCH 519/643] Added branch variable Ability to opt in to different branches of a steamgame, e.g. iwillbackupmysave branch from Project Zomboid. To us this you have to add a variable named "branch" to your gameserverscript. --- functions/install_serverfiles.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/install_serverfiles.sh b/functions/install_serverfiles.sh index 24677da9c..3e4bb9dc8 100644 --- a/functions/install_serverfiles.sh +++ b/functions/install_serverfiles.sh @@ -39,13 +39,13 @@ while [ "${counter}" == "0" ]||[ "$(grep -wc 0x402 .finstall_serverfiles.sh.tmp) 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 .finstall_serverfiles.sh.tmp else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit |tee .finstall_serverfiles.sh.tmp + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit |tee .finstall_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 .finstall_serverfiles.sh.tmp else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" -validate +quit |tee .finstall_serverfiles.sh.tmp + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} -validate +quit |tee .finstall_serverfiles.sh.tmp fi fi elif [ "${counter}" -ge "11" ]; then From 090d247dcb87fea2a4b97ba52424494ba4b427a1 Mon Sep 17 00:00:00 2001 From: DrCox1911 <michael.hochriegl@googlemail.com> Date: Sun, 24 Apr 2016 00:54:14 +0200 Subject: [PATCH 520/643] Steam branch handling added Added ability to handle steam branches, needs my other changes to install_serverfiles and gameserverscript as well. --- functions/update_check.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/functions/update_check.sh b/functions/update_check.sh index 4c631657e..0e2a3a40d 100644 --- a/functions/update_check.sh +++ b/functions/update_check.sh @@ -120,7 +120,16 @@ cd "${rootdir}/steamcmd" if [ -f "${HOME}/Steam/appcache/appinfo.vdf" ]; then rm -f "${HOME}/Steam/appcache/appinfo.vdf" fi -availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) + +# set branch for updateinfo +IFS=' ' read -a branchsplits <<< "${branch}" +if [ "${#branchsplits[@]}" -gt 1 ]; then + branchname="${branchsplits[1]}" +else + branchname="public" +fi + +availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"${branchname}\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) if [ -z "${availablebuild}" ]; then fn_printfail "Checking for update: SteamCMD" fn_scriptlog "Failure! Checking for update: SteamCMD" From 4bc1e8d52f253dec5c57d68f364b24550fac7a31 Mon Sep 17 00:00:00 2001 From: mhsjlw <mhsjlw@users.noreply.github.com> Date: Sat, 23 Apr 2016 20:28:58 -0400 Subject: [PATCH 521/643] fix grammar --- functions/install_logs.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/install_logs.sh b/functions/install_logs.sh index 6496ad647..7d79fba6a 100644 --- a/functions/install_logs.sh +++ b/functions/install_logs.sh @@ -6,7 +6,7 @@ lgsm_version="271215" if [ "${checklogs}" != "1" ]; then echo "" - echo "Creating log directorys" + echo "Creating log directories" echo "=================================" fi sleep 1 @@ -44,4 +44,4 @@ if [ -d "${rootdir}/Steam/logs" ]; then ln -nfsv "${rootdir}/Steam/logs" "${rootdir}/log/steamcmd" fi fi -sleep 1 \ No newline at end of file +sleep 1 From 2df93dd891be70e2a8141766c6e23995917de8c8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 24 Apr 2016 23:35:19 +0100 Subject: [PATCH 522/643] Resolved issue #776 --- lgsm/functions/email.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/email.sh b/lgsm/functions/email.sh index 174ed3ff6..06f9607d3 100644 --- a/lgsm/functions/email.sh +++ b/lgsm/functions/email.sh @@ -2,7 +2,7 @@ # LGSM email.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="020216" +lgsm_version="240416" # Description: Sends email notification if monitor picks up a failure. @@ -11,7 +11,9 @@ fn_print_dots "Sending notification to ${email}" info_distro.sh info_config.sh check_ip.sh -fn_parms +if [ $(type -t fn_parms;echo $?) == 0 ]; then + fn_parms +fi { echo -e "========================================\n${servicename} details\n========================================" echo -e "Service name: ${servicename}" From 95c555e68f9f6f98966d5c90c03d44fa2a5eae0d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 1 May 2016 20:56:04 +0100 Subject: [PATCH 523/643] Optimised info gathering Optimised the method for gathering and displaying info grabed from config files. There will be a new file specifically for parms --- lgsm/functions/info_config.sh | 995 +++++++--------------------------- 1 file changed, 210 insertions(+), 785 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index d9d5d4dfb..f1938c514 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -12,857 +12,282 @@ lgsm_version="010316" # tr -d '=\"; ' remove selected charectors =\"; # grep -v "foo" filter out lines that contain foo -## Just Cause 2 -if [ "${engine}" == "avalanche" ]; then +unavailable="\e[0;31mUNAVAILABLE\e[0m" +zero="\e[0;31m0\e[0m" - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "Name" "${servercfgfullpath}" | sed 's/Name//g' | tr -d '=", \n') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi +fn_info_config_avalanche(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + serverpassword="${unavailable}" + slots="${zero}" + port="${zero}" else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # ip - if [ -f "${servercfgfullpath}" ]; then - # check if the ip exists in the config file. Failing this will fall back to the default. - configipcheck=$(grep "BindIP" "${servercfgfullpath}" | sed 's/BindIP//g' | tr -d '=", \n') - fi - if [ -n "${configipcheck}" ]; then - ip=$(grep "BindIP" "${servercfgfullpath}" | sed 's/BindIP//g' | tr -d '=", \n') - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "Name" "${servercfgfullpath}" | sed 's/Name//g' | tr -d '=", \n') serverpassword=$(grep "Password" "${servercfgfullpath}" | sed 's/Password//g' | tr -d '=", \n') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then slots=$(grep "MaxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then port=$(grep "BindPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - -## Dont Starve Together -elif [ "${engine}" == "dontstarve" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "default_server_name = " "${servercfgfullpath}" | sed 's/default_server_name = //g') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + slots=${slots:-"0"} + port=${port:-"0"} + + # check if the ip exists in the config file. Failing this will fall back to the default. + ipconfigcheck=$(grep "BindIP" "${servercfgfullpath}" | sed 's/BindIP//g' | tr -d '=", \n') + if [ -n "${ipconfigcheck}" ]; then + ip="${ipconfigcheck}" + fi + fi +} + +fn_info_config_dontstarve(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + serverpassword="${unavailable}" + slots="${zero}" + gamemode="${unavailable}" + tickrate="${zero}" + port="${zero}" else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "default_server_name = " "${servercfgfullpath}" | sed 's/default_server_name = //g') serverpassword=$(grep "server_password = " "${servercfgfullpath}" | grep -v "#" | sed 's/server_password = //g') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then slots=$(grep "max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # game mode - if [ -f "${servercfgfullpath}" ]; then gamemode=$(grep "game_mode = " "${servercfgfullpath}" | grep -v "#" | sed 's/game_mode = //g') - if [ ! -n "${gamemode}" ]; then - gamemode="NOT SET" - fi - else - gamemode="\e[0;31mUNAVAILABLE\e[0m" - fi - - # tickrate - if [ -f "${servercfgfullpath}" ]; then tickrate=$(grep "tick_rate" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${tickrate}" ]; then - tickrate="NOT SET" - fi - else - tickrate="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - -## Project Zomboid -elif [ "${engine}" == "projectzomboid" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "PublicName=" "${servercfgfullpath}" | sed 's/PublicName=//g' | tr -d '=", \n') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + slots=${slots:-"0"} + gamemode=${gamemode:-"NOT SET"} + tickrate=${tickrate:-"0"} + port=${port:-"0"} + fi +} + +fn_info_config_projectzomboid(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + slots="${zero}" + port="${zero}" else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "PublicName=" "${servercfgfullpath}" | sed 's/PublicName=//g' | tr -d '=", \n') slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then port=$(grep "DefaultPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') + + # Not Set + servername=${servername:-"NOT SET"} + slots=${slots:-"0"} + port=${port:-"0"} fi - if [ ! -n "${port}" ]; then - port="0" - fi - - -# Quake Live -elif [ "${engine}" == "idtech3" ]; then +} - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "set sv_hostname " "${servercfgfullpath}" | sed 's/set sv_hostname //g' | tr -d '=\"; ') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi +fn_info_config_idtech3(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + serverpassword="${unavailable}" + slots="${zero}" else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - + servername=$(grep "set sv_hostname " "${servercfgfullpath}" | sed 's/set sv_hostname //g' | tr -d '=\"; ') serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/set g_password//g' | tr -d '=\"; '| cut -f1 -d "/") - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # rcon password - rconpassword="${rconpassword}" - if [ -f "${servercfgfullpath}" ]; then - if [ ! -n "${rconpassword}" ]; then - rconpassword="NOT SET" - fi - else - rconpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then slots=$(grep "set sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - port="${gameport}" - if [ ! -n "${port}" ]; then - port="0" + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + slots=${slots:-"0"} fi +} - # rcon port - if [ ! -n "${rconport}" ]; then - rconport="0" - fi - - # Stats port - if [ ! -n "${statsport}" ]; then - statsport="0" - fi - -# ARMA 3 -elif [ "${engine}" == "realvirtuality" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "hostname" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\<hostname\>//g' | tr -d '=\"; ') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi +fn_info_config_realvirtuality(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + adminpassword="${unavailable}" + serverpassword="${unavailable}" + slots="${zero}" else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # admin password - if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "hostname" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\<hostname\>//g' | tr -d '=\"; ') adminpassword=$(grep "passwordAdmin" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\passwordAdmin//g' | tr -d '=\"; ') - if [ ! -n "${adminpassword}" ]; then - adminpassword="NOT SET" - fi - else - adminpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then serverpassword=$(grep "password =" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\password//g' | tr -d '=\"; ') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi + + # Not Set + servername=${servername:-"NOT SET"} + adminpassword=${adminpassword:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + slots=${slots:-"0"} + fi +} + +fn_info_config_seriousengine35(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + rconpassword="${unavailable}" + gamemode="${unavailable}" + slots="${zero}" + port="${zero}" else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ "${port}" != "" ]; then - port=${port} - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # query port - if [ "${port}" != "" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - - # master port - if [ "${port}" != "" ]; then - masterport=$((port + 2)) - fi - if [ ! -n "${masterport}" ]; then - masterport="0" - fi - -# Serious Sam -elif [ "${engine}" == "seriousengine35" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then servername=$(grep "prj_strMultiplayerSessionName" "${servercfgfullpath}" | sed 's/prj_strMultiplayerSessionName = //g' | tr -d '=\"; ') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # rcon password - if [ -f "${servercfgfullpath}" ]; then rconpassword=$(grep "rcts_strAdminPassword" "${servercfgfullpath}" | sed 's/rcts_strAdminPassword = //g' | tr -d '=\"; ') - if [ ! -n "${rconpassword}" ]; then - rconpassword="NOT SET" - fi - else - rconpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # game mode - if [ -f "${servercfgfullpath}" ]; then gamemode=$(grep "gam_idGameMode" "${servercfgfullpath}" | grep -v "#" | sed 's/gam_idGameMode//g' | tr -d '=\"; ') - if [ ! -n "${gamemode}" ]; then - gamemode="NOT SET" - fi - else - gamemode="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then + slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') port=$(grep "prj_uwPort" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - -# Source Engine Games -elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "hostname" "${servercfgfullpath}" | sed 's/hostname //g' | sed 's/"//g') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi + + # Not Set + servername=${servername:-"NOT SET"} + rconpassword=${rconpassword:-"NOT SET"} + gamemode=${gamemode:-"NOT SET"} + slots=${slots:-"0"} + port=${port:-"0"} + fi +} + +fn_info_config_source(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + serverpassword="${unavailable}" + rconpassword="${unavailable}" else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then + servername=$(grep "hostname" "${servercfgfullpath}" | sed 's/hostname //g' | sed 's/"//g') serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed 's/sv_password //g' | sed 's/"//g') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # rcon password - if [ -f "${servercfgfullpath}" ]; then rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed 's/rcon_password //g' | sed 's/"//g') - if [ ! -n "${rconpassword}" ]; then - rconpassword="NOT SET" - fi - else - rconpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - -# Spark (NS2: Combat) -elif [ "${engine}" == "spark" ]; then - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + rconpassword=${rconpassword:-"NOT SET"} fi +} -# Teamspeak 3 -elif [ "${gamename}" == "Teamspeak 3" ]; then - - # ip - if [ -f "${servercfgfullpath}" ]; then +fn_info_config_teamspeak3(){ + if [ ! -f "${servercfgfullpath}" ]; then + dbplugin="${unavailable}" + port="9987" + queryport="10011" + fileport="30033" + else # check if the ip exists in the config file. Failing this will fall back to the default. - configipcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') - fi - if [ -n "${configipcheck}" ]; then - ip=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') - fi - - # dbplugin - if [ -f "${servercfgfullpath}" ]; then - dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/\dbplugin=//g') - if [ ! -n "${dbplugin}" ]; then - dbplugin="NOT SET" + ipconfigcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') + if [ -n "${ipconfigcheck}" ]; then + ip="${ipconfigcheck}" fi - else - dbplugin="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then + dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/\dbplugin=//g') port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="9987" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${queryport}" ]; then - queryport="10011" - fi - - # file port - if [ -f "${servercfgfullpath}" ]; then fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${fileport}" ]; then - fileport="30033" - fi -# Teeworlds -elif [ "${engine}" == "teeworlds" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') - if [ ! -n "${servername}" ]; then - servername="unnamed server" - fi - else - servername="unnamed server" + # Not Set + port=${port:-"9987"} + queryport=${queryport:-"10011"} + fileport=${fileport:-"30033"} fi +} - # server password - if [ -f "${servercfgfullpath}" ]; then +fn_info_config_teeworlds(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="unnamed server" + serverpassword="${unavailable}" + rconpassword="${unavailable}" + port="8303" + slots="12" + else + servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # rcon password - if [ -f "${servercfgfullpath}" ]; then rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ') - if [ ! -n "${rconpassword}" ]; then - rconpassword="NOT SET" - fi - else - rconpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="8303" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="12" - fi - else - slots="12" - fi - -# Terraria -elif [ "${engine}" == "terraria" ]; then - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - -# 7 Day To Die (unity3d) -elif [ "${gamename}" == "7 Days To Die" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin enabled - if [ -f "${servercfgfullpath}" ]; then - webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${webadminenabled}" ]; then - webadminenabled="NOT SET" - fi - else - webadminenabled="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin port - if [ -f "${servercfgfullpath}" ]; then - webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${webadminport}" ]; then - webadminport="0" - fi - - # webadmin enabled - if [ -f "${servercfgfullpath}" ]; then - webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${webadminenabled}" ]; then - webadminenabled="NOT SET" - fi - else - webadminenabled="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin password - if [ -f "${servercfgfullpath}" ]; then - webadminpass=$(grep "ControlPanelPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${webadminpass}" ]; then - webadminpass="NOT SET" - fi - else - webadminpass="\e[0;31mUNAVAILABLE\e[0m" - fi - - # telnet enabled - if [ -f "${servercfgfullpath}" ]; then - telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${telnetenabled}" ]; then - telnetenabled="NOT SET" - fi - else - telnetenabled="\e[0;31mUNAVAILABLE\e[0m" - fi - - # telnet port - if [ -f "${servercfgfullpath}" ]; then - telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${telnetport}" ]; then - telnetport="0" - fi - - # telnet password - if [ -f "${servercfgfullpath}" ]; then - telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${telnetpass}" ]; then - telnetpass="NOT SET" - fi - else - telnetpass="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # game mode - if [ -f "${servercfgfullpath}" ]; then - gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${gamemode}" ]; then - gamemode="NOT SET" - fi - else - gamemode="\e[0;31mUNAVAILABLE\e[0m" - fi - - # game world - if [ -f "${servercfgfullpath}" ]; then - gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - if [ ! -n "${gameworld}" ]; then - gameworld="NOT SET" - fi - else - gameworld="\e[0;31mUNAVAILABLE\e[0m" - fi + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + rconpassword=${rconpassword:-"NOT SET"} + port=${port:-"8303"} + slots=${slots:-"12"} + fi +} - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then +fn_info_config_terraria(){ + if [ ! -f "${servercfgfullpath}" ]; then port="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - -# Hurtworld (unity3d) -elif [ "${gamename}" == "Hurtworld" ]; then - - # server name - if [ -n "${servername}" ]; then - servername="${servername}" - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - # not available yet - - # slots - if [ -n "${maxplayers}" ]; then - slots="${maxplayers}" - else - slots="NOT SET" - fi - - # game world - if [ -n "${map}" ]; then - gameworld="${map}" - else - gameworld="NO MAP SET" - fi + else + port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - # port - if [ -n "${port}" ]; then - port="${port}" - else - port="0" + # Not Set + port=${port:-"0"} fi +} - # query port - if [ -n "${queryport}" ]; then - queryport="${queryport}" +fn_info_config_unreal(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + serverpassword="${unavailable}" + adminpassword="${unavailable}" + port="${zero}" + gsqueryport="${zero}" + webadminenabled="${unavailable}" + webadminport="${zero}" + webadminuser="${unavailable}" + webadminpass="${unavailable}" else - queryport="0" - fi - -# Unreal Tournament -elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then servername=$(grep "ServerName=" "${servercfgfullpath}" | sed 's/ServerName=//g') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" - fi - - # server password - if [ -f "${servercfgfullpath}" ]; then serverpassword=$(grep "GamePassword=" "${servercfgfullpath}" | sed 's/GamePassword=//g') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # admin password - if [ -f "${servercfgfullpath}" ]; then adminpassword=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/AdminPassword=//g') - if [ ! -n "${adminpassword}" ]; then - adminpassword="NOT SET" - fi - else - adminpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then port=$(grep "Port=" "${servercfgfullpath}" | grep -v "Master" | grep -v "LAN" | grep -v "Proxy" | grep -v "Listen" | tr -d '\r' | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$((port + 1)) - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - - # gamespy query port - if [ -f "${servercfgfullpath}" ]; then gsqueryport=$(grep "OldQueryPortNumber=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') - fi - if [ ! -n "${gsqueryport}" ]; then - gsqueryport="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - udplinkport=$((port + 2)) - fi - if [ ! -n "${udplinkport}" ]; then - udplinkport="0" - fi - - # webadmin enabled - if [ -f "${servercfgfullpath}" ]; then webadminenabled=$(grep "bEnabled=" "${servercfgfullpath}" | sed 's/bEnabled=//g' | tr -d '\r') - if [ ! -n "${webadminenabled}" ]; then - webadminenabled="NOT SET" - fi - else - webadminenabled="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin port - if [ -f "${servercfgfullpath}" ]; then webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') - fi - if [ ! -n "${webadminport}" ]; then - webadminport="0" - fi - - if [ "${engine}" == "unreal" ]; then - - # webadmin user - if [ -f "${servercfgfullpath}" ]; then + if [ "${engine}" == "unreal" ]; then webadminuser=$(grep "AdminUsername=" "${servercfgfullpath}" | sed 's/\AdminUsername=//g') - if [ ! -n "${webadminuser}" ]; then - webadminuser="NOT SET" - fi - else - webadminuser="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin password - if [ -f "${servercfgfullpath}" ]; then webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 2 | grep "AdminPassword=" | sed 's/\AdminPassword=//g') - if [ ! -n "${webadminpass}" ]; then - webadminpass="NOT SET" - fi else - webadminpass="\e[0;31mUNAVAILABLE\e[0m" - fi - - else - - # webadmin user - if [ -f "${servercfgfullpath}" ]; then webadminuser=$(grep "AdminName=" "${servercfgfullpath}" | sed 's/\AdminName=//g') - if [ ! -n "${webadminuser}" ]; then - webadminuser="NOT SET" - fi - else - webadminuser="\e[0;31mUNAVAILABLE\e[0m" - fi - - # webadmin password - if [ -f "${servercfgfullpath}" ]; then webadminpass=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/\AdminPassword=//g') - if [ ! -n "${webadminpass}" ]; then - webadminpass="NOT SET" - fi - else - webadminpass="\e[0;31mUNAVAILABLE\e[0m" fi - fi - -# ARK: Survivaial Evolved -elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then - - # server name - if [ -f "${servercfgfullpath}" ]; then - servername=$(grep "SessionName=" "${servercfgfullpath}" | sed 's/SessionName=//g') - if [ ! -n "${servername}" ]; then - servername="NOT SET" - fi - else - servername="\e[0;31mUNAVAILABLE\e[0m" + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + adminpassword=${adminpassword:-"NOT SET"} + port=${port:-"0"} + gsqueryport=${gsqueryport:-"NOT SET"} + webadminenabled=${webadminenabled:-"NOT SET"} + webadminport=${webadminport:-"NOT SET"} + webadminuser=${webadminuser:-"NOT SET"} + webadminpass=${webadminpass:-"NOT SET"} fi +} - # server password - if [ -f "${servercfgfullpath}" ]; then - serverpassword=$(grep "ServerPassword=" "${servercfgfullpath}" | sed 's/ServerPassword=//g') - if [ ! -n "${serverpassword}" ]; then - serverpassword="NOT SET" - fi - else - serverpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # admin password - if [ -f "${servercfgfullpath}" ]; then - adminpassword=$(grep "ServerAdminPassword=" "${servercfgfullpath}" | sed 's/ServerAdminPassword=//g') - if [ ! -n "${adminpassword}" ]; then - adminpassword="NOT SET" - fi - else - adminpassword="\e[0;31mUNAVAILABLE\e[0m" - fi - - # slots - if [ -f "${servercfgfullpath}" ]; then - slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') - if [ ! -n "${slots}" ]; then - slots="NOT SET" - fi - else - slots="\e[0;31mUNAVAILABLE\e[0m" - fi - - # port - if [ -f "${servercfgfullpath}" ]; then - port=$(grep "Port=" "${servercfgfullpath}" | grep -v "RCONPort=" | grep -v "QueryPort=" | tr -cd '[:digit:]') - fi - if [ ! -n "${port}" ]; then - port="0" - fi - - # rcon port - if [ -f "${servercfgfullpath}" ]; then - rconport=$(grep "RCONPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${rconport}" ]; then - rconport="0" - fi - - # query port - if [ -f "${servercfgfullpath}" ]; then - queryport=$(grep "QueryPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - fi - if [ ! -n "${queryport}" ]; then - queryport="0" - fi - -fi +## Just Cause 2 +if [ "${engine}" == "avalanche" ]; then + fn_info_config_avalanche +## Dont Starve Together +elif [ "${engine}" == "dontstarve" ]; then + fn_info_config_dontstarve +## Project Zomboid +elif [ "${engine}" == "projectzomboid" ]; then + fn_info_config_projectzomboid +# Quake Love +elif [ "${engine}" == "idtech3" ]; then + fn_info_config_idtech3 +# ARMA 3 +elif [ "${engine}" == "realvirtuality" ]; then + fn_info_config_realvirtuality +# Serious Sam +elif [ "${engine}" == "seriousengine35" ]; then + fn_info_config_seriousengine35 +# Source Engine Games +elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + fn_info_config_source +elif [ "${gamename}" == "Teamspeak 3" ]; then + fn_info_config_teamspeak3 +# Teeworlds +elif [ "${engine}" == "teeworlds" ]; then + fn_info_config_teeworlds +elif [ "${engine}" == "terraria" ]; then + fn_info_config_terraria +# Unreal/Unreal 2 engine +elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then + fn_info_config_unreal +fi \ No newline at end of file From 3710e3914206cdea64b711b609c5050d1cb40ef5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 5 May 2016 23:20:57 +0100 Subject: [PATCH 524/643] added info_distro.sh fix arch not detected --- lgsm/functions/check_deps.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 56c8c711c..5e523a521 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -2,7 +2,7 @@ # LGSM check_deps.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="060316" +lgsm_version="050516" # Description: Checks that the requires dependencies are installed for LGSM. @@ -112,13 +112,14 @@ fn_check_loop(){ fn_found_missing_deps } +info_distro.sh + if [ "${function_selfname}" == "command_install.sh" ]; then echo "" echo "Checking Dependecies" echo "=================================" fi - # Check will only run if using apt-get or yum if [ -n "$(command -v dpkg-query)" ]; then # Generate array of missing deps From 430a648f507ca0c3ab1bcbbe64101f69a56d17f7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 5 May 2016 23:21:09 +0100 Subject: [PATCH 525/643] added info_parms.sh --- lgsm/functions/core_functions.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 7240cfc12..77a3cffb7 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -2,7 +2,7 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="270216" +lgsm_version="020516" # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. @@ -319,6 +319,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +info_parms.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + info_ts3status.sh(){ functionfile="${FUNCNAME}" fn_fetch_function From 65f180533c29c98a08feac34fed40597874130eb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 5 May 2016 23:24:59 +0100 Subject: [PATCH 526/643] Initial commit Very broken --- lgsm/functions/info_parms.sh | 175 +++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 lgsm/functions/info_parms.sh diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh new file mode 100644 index 000000000..d8a6ec26c --- /dev/null +++ b/lgsm/functions/info_parms.sh @@ -0,0 +1,175 @@ +#!/bin/bash +# LGSM info_parms.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="010316" + +# Description: Gets specific details server parameters. + +## Examples of filtering to get info from config files +# sed 's/foo//g' - remove foo +# tr -cd '[:digit:]' leave only digits +# tr -d '=\"; ' remove selected charectors =\"; +# grep -v "foo" filter out lines that contain foo + +unavailable="\e[0;31mUNAVAILABLE\e[0m" +zero="\e[0;31m0\e[0m" + + +fn_info_config_idtech3(){ + # Not Set + gameport=${gameport:-"NOT SET"} + rconport=${rconport:-"0"} + rconpassword=${rconpassword:-"NOT SET"} + statsport=${statsport:-"0"} + statspassword=${statspassword:-"NOT SET"} + mappool=${mappool:-"NOT SET"} + rconpassword=${rconpassword:-"NOT SET"} +} + +fn_info_config_realvirtuality(){ + # Not Set + port=${rconport:-"0"} +} + +fn_info_config_seriousengine35(){ + +} + +fn_info_config_source(){ + defaultmap=${defaultmap:-"NOT SET"} + maxplayers=${maxplayers:-"0"} + port=${port:-"0"} + clientport=${clientport:-"0"} +} + +fn_info_config_teamspeak3(){ + if [ ! -f "${servercfgfullpath}" ]; then + dbplugin="${unavailable}" + port="9987" + queryport="10011" + fileport="30033" + else + # check if the ip exists in the config file. Failing this will fall back to the default. + ipconfigcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') + if [ -n "${ipconfigcheck}" ]; then + ip="${ipconfigcheck}" + fi + dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/\dbplugin=//g') + port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + + # Not Set + port=${port:-"9987"} + queryport=${queryport:-"10011"} + fileport=${fileport:-"30033"} + fi +} + +fn_info_config_teeworlds(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="unnamed server" + serverpassword="${unavailable}" + rconpassword="${unavailable}" + port="8303" + slots="12" + else + servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') + serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ') + rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ') + port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') + slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + rconpassword=${rconpassword:-"NOT SET"} + port=${port:-"8303"} + slots=${slots:-"12"} + fi +} + +fn_info_config_terraria(){ + if [ ! -f "${servercfgfullpath}" ]; then + port="0" + else + port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + + # Not Set + port=${port:-"0"} + fi +} + +fn_info_config_unreal(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + serverpassword="${unavailable}" + adminpassword="${unavailable}" + port="${zero}" + gsqueryport="${zero}" + webadminenabled="${unavailable}" + webadminport="${zero}" + webadminuser="${unavailable}" + webadminpass="${unavailable}" + else + servername=$(grep "ServerName=" "${servercfgfullpath}" | sed 's/ServerName=//g') + serverpassword=$(grep "GamePassword=" "${servercfgfullpath}" | sed 's/GamePassword=//g') + adminpassword=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/AdminPassword=//g') + port=$(grep "Port=" "${servercfgfullpath}" | grep -v "Master" | grep -v "LAN" | grep -v "Proxy" | grep -v "Listen" | tr -d '\r' | tr -cd '[:digit:]') + gsqueryport=$(grep "OldQueryPortNumber=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') + webadminenabled=$(grep "bEnabled=" "${servercfgfullpath}" | sed 's/bEnabled=//g' | tr -d '\r') + webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') + if [ "${engine}" == "unreal" ]; then + webadminuser=$(grep "AdminUsername=" "${servercfgfullpath}" | sed 's/\AdminUsername=//g') + webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 2 | grep "AdminPassword=" | sed 's/\AdminPassword=//g') + else + webadminuser=$(grep "AdminName=" "${servercfgfullpath}" | sed 's/\AdminName=//g') + webadminpass=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/\AdminPassword=//g') + fi + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + adminpassword=${adminpassword:-"NOT SET"} + port=${port:-"0"} + gsqueryport=${gsqueryport:-"NOT SET"} + webadminenabled=${webadminenabled:-"NOT SET"} + webadminport=${webadminport:-"NOT SET"} + webadminuser=${webadminuser:-"NOT SET"} + webadminpass=${webadminpass:-"NOT SET"} + fi +} + +## Just Cause 2 +if [ "${engine}" == "avalanche" ]; then + fn_info_config_avalanche +## Dont Starve Together +elif [ "${engine}" == "dontstarve" ]; then + fn_info_config_dontstarve +## Project Zomboid +elif [ "${engine}" == "projectzomboid" ]; then + fn_info_config_projectzomboid +# Quake Love +elif [ "${engine}" == "idtech3" ]; then + fn_info_config_idtech3 +# ARMA 3 +elif [ "${engine}" == "realvirtuality" ]; then + fn_info_config_realvirtuality +# Serious Sam +elif [ "${engine}" == "seriousengine35" ]; then + fn_info_config_seriousengine35 +# Source Engine Games +elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + fn_info_config_source +elif [ "${gamename}" == "Teamspeak 3" ]; then + fn_info_config_teamspeak3 +# Teeworlds +elif [ "${engine}" == "teeworlds" ]; then + fn_info_config_teeworlds +elif [ "${engine}" == "terraria" ]; then + fn_info_config_terraria +# Unreal/Unreal 2 engine +elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then + fn_info_config_unreal +fi \ No newline at end of file From 3ee675e9803d17ab809b5141fa4f742e5cb21221 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 17:37:31 +0100 Subject: [PATCH 527/643] improved info gathering style consistency --- lgsm/functions/info_config.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index f1938c514..8e14f7da8 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -91,7 +91,7 @@ fn_info_config_idtech3(){ slots="${zero}" else servername=$(grep "set sv_hostname " "${servercfgfullpath}" | sed 's/set sv_hostname //g' | tr -d '=\"; ') - serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/set g_password//g' | tr -d '=\"; '| cut -f1 -d "/") + serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed 's/set g_password//g' | tr -d '=\"; '| cut -f1 -d "/") slots=$(grep "set sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') # Not Set @@ -108,9 +108,9 @@ fn_info_config_realvirtuality(){ serverpassword="${unavailable}" slots="${zero}" else - servername=$(grep "hostname" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\<hostname\>//g' | tr -d '=\"; ') - adminpassword=$(grep "passwordAdmin" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\passwordAdmin//g' | tr -d '=\"; ') - serverpassword=$(grep "password =" "${servercfgfullpath}" | grep -v "//" | sed -e 's/\password//g' | tr -d '=\"; ') + servername=$(grep "hostname" "${servercfgfullpath}" | grep -v "//" | sed 's/\<hostname\>//g' | tr -d '=\"; ') + adminpassword=$(grep "passwordAdmin" "${servercfgfullpath}" | grep -v "//" | sed 's/\passwordAdmin//g' | tr -d '=\"; ') + serverpassword=$(grep "password =" "${servercfgfullpath}" | grep -v "//" | sed 's/\password//g' | tr -d '=\"; ') slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') # Not Set @@ -169,11 +169,11 @@ fn_info_config_teamspeak3(){ fileport="30033" else # check if the ip exists in the config file. Failing this will fall back to the default. - ipconfigcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') + ipconfigcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/voice_ip=//g') if [ -n "${ipconfigcheck}" ]; then ip="${ipconfigcheck}" fi - dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/\dbplugin=//g') + dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/dbplugin=//g') port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') @@ -239,11 +239,11 @@ fn_info_config_unreal(){ webadminenabled=$(grep "bEnabled=" "${servercfgfullpath}" | sed 's/bEnabled=//g' | tr -d '\r') webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') if [ "${engine}" == "unreal" ]; then - webadminuser=$(grep "AdminUsername=" "${servercfgfullpath}" | sed 's/\AdminUsername=//g') - webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 2 | grep "AdminPassword=" | sed 's/\AdminPassword=//g') + webadminuser=$(grep "AdminUsername=" "${servercfgfullpath}" | sed 's/AdminUsername=//g') + webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 2 | grep "AdminPassword=" | sed 's/AdminPassword=//g') else - webadminuser=$(grep "AdminName=" "${servercfgfullpath}" | sed 's/\AdminName=//g') - webadminpass=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/\AdminPassword=//g') + webadminuser=$(grep "AdminName=" "${servercfgfullpath}" | sed 's/AdminName=//g') + webadminpass="${adminpassword}" fi # Not Set @@ -251,9 +251,9 @@ fn_info_config_unreal(){ serverpassword=${serverpassword:-"NOT SET"} adminpassword=${adminpassword:-"NOT SET"} port=${port:-"0"} - gsqueryport=${gsqueryport:-"NOT SET"} + gsqueryport=${gsqueryport:-"0"} webadminenabled=${webadminenabled:-"NOT SET"} - webadminport=${webadminport:-"NOT SET"} + webadminport=${webadminport:-"0"} webadminuser=${webadminuser:-"NOT SET"} webadminpass=${webadminpass:-"NOT SET"} fi From 3bbfb0dbe5942150063dc73c2dbe0311b2865c2f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 17:45:06 +0100 Subject: [PATCH 528/643] Getting server status is now consistent Both tmux and ts3 status gathering are the same/ Now call a file called check_status.sh this returns the server status as 0 or 1 --- lgsm/functions/check.sh | 10 +- lgsm/functions/check_status.sh | 22 ++ lgsm/functions/command_backup.sh | 6 +- lgsm/functions/command_console.sh | 6 +- lgsm/functions/command_details.sh | 300 ++++++++++-------- lgsm/functions/command_monitor.sh | 17 +- lgsm/functions/command_start.sh | 231 +++++++------- lgsm/functions/command_validate.sh | 5 +- lgsm/functions/core_functions.sh | 7 +- lgsm/functions/update_check.sh | 491 +++++++++++++++-------------- 10 files changed, 578 insertions(+), 517 deletions(-) create mode 100644 lgsm/functions/check_status.sh diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index aa9ab63ab..93d1f119a 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -2,7 +2,7 @@ # LGSM fn_check function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="060316" +lgsm_version="060516" # Description: Overall function for managing checks. # Runs checks that will either halt on or fix an issue. @@ -70,3 +70,11 @@ do check_config.sh fi done + +local allowed_commands_array=( command_details.sh command_monitor.sh command_start.sh command_stop.sh command_ts3_server_pass.sh update_check.sh command_details.sh command_validate.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_status.sh + fi +done diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh new file mode 100644 index 000000000..d0f88b080 --- /dev/null +++ b/lgsm/functions/check_status.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# LGSM check_status function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="060516" + +# Description: Checks the proccess status of the server. Either online or offline. + +if [ "${gamename}" == "Teamspeak 3" ]; then + # 1: Server is running + # 0: Server seems to have died + # 0: No server running (ts3server.pid is missing) + status=$(./ts3server_startscript.sh status servercfgfullpathfile=${servercfgfullpath}) + if [ "${status}" == "Server is running" ]; then + status=1 + else + status=0 + ts3error=$(./ts3server_startscript.sh status servercfgfullpathfile=${servercfgfullpath}) + fi +else + status=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") +fi diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 68746c1c5..d2426029c 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -2,7 +2,7 @@ # LGSM command_backup.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="190316" +lgsm_version="060516" # Description: Creates a .tar.gz file in the backup directory. @@ -24,8 +24,8 @@ while true; do esac done echo "" -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") -if [ "${tmuxwc}" -eq 1 ]; then +check_status.sh +if [ "${status}" != "0" ]; then echo "" fn_printwarningnl "${servicename} is currently running." sleep 1 diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index f7f2c1323..3a67be820 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -2,7 +2,7 @@ # LGSM command_console.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="060516" # Description: Gives access to the server tmux console. @@ -27,8 +27,8 @@ esac done fn_print_dots "Starting" sleep 1 -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") -if [ "${tmuxwc}" -eq 1 ]; then +check_status.sh +if [ "${status}" != "0" ]; then fn_print_ok_nl "Starting" fn_scriptlog "accessed" sleep 1 diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 88c4286fe..c601769e1 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -2,7 +2,7 @@ # LGSM command_details.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="230216" +lgsm_version="060516" # Description: Displays server infomation. @@ -12,174 +12,206 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" # This applies to all engines fn_details_os(){ -echo -e "" -echo -e "\e[93mDistro Details\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mDistro:\t\e[0m${os}" - echo -e "\e[34mArch:\t\e[0m${arch}" - echo -e "\e[34mKernel:\t\e[0m${kernel}" - echo -e "\e[34mHostname:\t\e[0m$HOSTNAME" - echo -e "\e[34mtmux:\t\e[0m${tmuxv}" - echo -e "\e[34mGLIBC:\t\e[0m${glibcv}" -} | column -s $'\t' -t + # + # Distro Details + # ===================================== + # Distro: Ubuntu 14.04.4 LTS + # Arch: x86_64 + # Kernel: 3.13.0-79-generic + # Hostname: hostname + # tmux: tmux 1.8 + # GLIBC: 2.19 + + echo -e "" + echo -e "\e[93mDistro Details\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + echo -e "\e[34mDistro:\t\e[0m${os}" + echo -e "\e[34mArch:\t\e[0m${arch}" + echo -e "\e[34mKernel:\t\e[0m${kernel}" + echo -e "\e[34mHostname:\t\e[0m$HOSTNAME" + echo -e "\e[34mtmux:\t\e[0m${tmuxv}" + echo -e "\e[34mGLIBC:\t\e[0m${glibcv}" + } | column -s $'\t' -t } fn_details_performance(){ -echo -e "" -echo -e "\e[93mPerformance\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mUptime:\t\e[0m${days}d, ${hours}h, ${minutes}m" - echo -e "\e[34mAvg Load:\t\e[0m${load}" -} | column -s $'\t' -t -echo -e "" -{ - echo -e "\e[34mMem:\t\e[34mtotal\t used\t free\e[0m" - echo -e "\e[34mPhysical:\t\e[0m${physmemtotal}\t${physmemused}\t${physmemfree}\e[0m" - echo -e "\e[34mSwap:\t\e[0m${swaptotal}\t${swapused}\t${swapfree}\e[0m" -} | column -s $'\t' -t + # + # Performance + # ===================================== + # Uptime: 55d, 3h, 38m + # Avg Load: 1.00, 1.01, 0.78 + # + # Mem: total used free + # Physical: 741M 656M 85M + # Swap: 0B 0B 0B + + echo -e "" + echo -e "\e[93mPerformance\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + echo -e "\e[34mUptime:\t\e[0m${days}d, ${hours}h, ${minutes}m" + echo -e "\e[34mAvg Load:\t\e[0m${load}" + } | column -s $'\t' -t + echo -e "" + { + echo -e "\e[34mMem:\t\e[34mtotal\t used\t free\e[0m" + echo -e "\e[34mPhysical:\t\e[0m${physmemtotal}\t${physmemused}\t${physmemfree}\e[0m" + echo -e "\e[34mSwap:\t\e[0m${swaptotal}\t${swapused}\t${swapfree}\e[0m" + } | column -s $'\t' -t } fn_details_disk(){ -echo -e "" -echo -e "\e[93mStorage\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mFilesystem:\t\e[0m${filesystem}" - echo -e "\e[34mTotal:\t\e[0m${totalspace}" - echo -e "\e[34mUsed:\t\e[0m${usedspace}" - echo -e "\e[34mAvailable:\t\e[0m${availspace}" - echo -e "\e[34mServerfiles:\t\e[0m${filesdirdu}" - if [ -d "${backupdir}" ]; then - echo -e "\e[34mBackups:\t\e[0m${backupdirdu}" - fi -} | column -s $'\t' -t + # + # Storage + # ===================================== + # Filesystem: /dev/disk/by-uuid/320c8edd-a2ce-4a23-8c9d-e00a7af2d6ff + # Total: 15G + # Used: 8.4G + # Available: 5.7G + # Serverfiles: 961M + + echo -e "" + echo -e "\e[93mStorage\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + echo -e "\e[34mFilesystem:\t\e[0m${filesystem}" + echo -e "\e[34mTotal:\t\e[0m${totalspace}" + echo -e "\e[34mUsed:\t\e[0m${usedspace}" + echo -e "\e[34mAvailable:\t\e[0m${availspace}" + echo -e "\e[34mServerfiles:\t\e[0m${filesdirdu}" + if [ -d "${backupdir}" ]; then + echo -e "\e[34mBackups:\t\e[0m${backupdirdu}" + fi + } | column -s $'\t' -t } fn_details_gameserver(){ -echo -e "" + # + # Quake Live Server Details + # ===================================== + # Server name: ql-server + # Server IP: 1.2.3.4:27960 + # RCON password: CHANGE_ME + # Server password: NOT SET + # Slots: 16 + # Status: OFFLINE -## server details -echo -e "\e[92m${gamename} Server Details\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - # server name - echo -e "\e[34mServer name:\t\e[0m${servername}" + echo -e "" + echo -e "\e[92m${gamename} Server Details\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + # Server name + echo -e "\e[34mServer name:\t\e[0m${servername}" - # server ip - echo -e "\e[34mServer IP:\t\e[0m${ip}:${port}" + # Server ip + echo -e "\e[34mServer IP:\t\e[0m${ip}:${port}" - # rcon password - if [ -n "${rconpassword}" ]; then - echo -e "\e[34mRCON password:\t\e[0m${rconpassword}" - fi + # Server password + if [ -n "${serverpassword}" ]; then + echo -e "\e[34mServer password:\t\e[0m${serverpassword}" + fi - # server password - if [ -n "${serverpassword}" ]; then - echo -e "\e[34mServer password:\t\e[0m${serverpassword}" - fi + # RCON password + if [ -n "${rconpassword}" ]; then + echo -e "\e[34mRCON password:\t\e[0m${rconpassword}" + fi - # admin password - if [ -n "${adminpassword}" ]; then - echo -e "\e[34mAdmin password:\t\e[0m${adminpassword}" - fi + # Admin password + if [ -n "${adminpassword}" ]; then + echo -e "\e[34mAdmin password:\t\e[0m${adminpassword}" + fi - # slots - if [ -n "${slots}" ]; then - echo -e "\e[34mSlots:\t\e[0m${slots}" - fi + # Stats password (Quake Live) + if [ -n "${statspassword}" ]; then + echo -e "\e[34mStats password:\t\e[0m${statspassword}" + fi - # game mode - if [ -n "${gamemode}" ]; then - echo -e "\e[34mGame mode:\t\e[0m${gamemode}" - fi + # Slots + if [ -n "${slots}" ]; then + echo -e "\e[34mSlots:\t\e[0m${slots}" + fi - # game world - if [ -n "${gameworld}" ]; then - echo -e "\e[34mGame world:\t\e[0m${gameworld}" - fi + # Game mode + if [ -n "${gamemode}" ]; then + echo -e "\e[34mGame mode:\t\e[0m${gamemode}" + fi - # tick rate - if [ -n "${tickrate}" ]; then - echo -e "\e[34mTick rate:\t\e[0m${tickrate}" - fi + # Game world + if [ -n "${gameworld}" ]; then + echo -e "\e[34mGame world:\t\e[0m${gameworld}" + fi - # online status - if [ "${gamename}" == "Teamspeak 3" ]; then - info_ts3status.sh - if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - echo -e "\e[34mStatus:\t\e[0;31mOFFLINE\e[0m" - else - echo -e "\e[34mStatus:\t\e[0;32mONLINE\e[0m" + # Tick rate + if [ -n "${tickrate}" ]; then + echo -e "\e[34mTick rate:\t\e[0m${tickrate}" fi - else - pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then + + # teamspeak dbplugin + if [ -n "${dbplugin}" ]; then + echo -e "\e[34mdbplugin:\t\e[0m${dbplugin}" + fi + + # online status + if [ "${status}" == "0" ]; then echo -e "\e[34mStatus:\t\e[0;31mOFFLINE\e[0m" else echo -e "\e[34mStatus:\t\e[0;32mONLINE\e[0m" fi - fi - - # teamspeak dbplugin - if [ -n "${dbplugin}" ]; then - echo -e "\e[34mdbplugin:\t\e[0m${dbplugin}" - fi -} | column -s $'\t' -t -echo -e "" - -## script details -echo -e "\e[92m${selfname} Script Details\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - # service name - echo -e "\e[34mService name:\t\e[0m${servicename}" + } | column -s $'\t' -t + echo -e "" - # script version - if [ -n "${version}" ]; then - echo -e "\e[34m${selfname} version:\t\e[0m${version}" - fi + ## script details + echo -e "\e[92m${selfname} Script Details\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + # service name + echo -e "\e[34mService name:\t\e[0m${servicename}" - # script user - echo -e "\e[34mUser:\t\e[0m$(whoami)" + # script version + if [ -n "${version}" ]; then + echo -e "\e[34m${selfname} version:\t\e[0m${version}" + fi - # GLIBC required - if [ -n "${glibcrequired}" ] && [ "${glibcrequired}" != "UNKNOWN" ]; then - if [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then - if [ "${glibcfix}" == "yes" ]; then - echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)" + # script user + echo -e "\e[34mUser:\t\e[0m$(whoami)" + + # GLIBC required + if [ -n "${glibcrequired}" ] && [ "${glibcrequired}" != "UNKNOWN" ]; then + if [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then + if [ "${glibcfix}" == "yes" ]; then + echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)" + else + echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}\e[0m(\e[0;32mGLIBC version too old\e[0m)" + fi else - echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}\e[0m(\e[0;32mGLIBC version too old\e[0m)" + echo -e "\e[34mGLIBC required:\t\e[0;32m${glibcrequired}\e[0m" fi - else - echo -e "\e[34mGLIBC required:\t\e[0;32m${glibcrequired}\e[0m" fi - fi - # email notification - if [ -n "${emailnotification}" ]; then - echo -e "\e[34mEmail notification:\t\e[0m${emailnotification}" - fi + # email notification + if [ -n "${emailnotification}" ]; then + echo -e "\e[34mEmail notification:\t\e[0m${emailnotification}" + fi - # update on start - if [ -n "${updateonstart}" ]; then - echo -e "\e[34mUpdate on start:\t\e[0m${updateonstart}" - fi + # update on start + if [ -n "${updateonstart}" ]; then + echo -e "\e[34mUpdate on start:\t\e[0m${updateonstart}" + fi - # script location - echo -e "\e[34mLocation:\t\e[0m${rootdir}" + # script location + echo -e "\e[34mLocation:\t\e[0m${rootdir}" - # config file location - if [ -n "${servercfgfullpath}" ]; then - echo -e "\e[34mConfig file:\t\e[0m${servercfgfullpath}" - fi + # config file location + if [ -n "${servercfgfullpath}" ]; then + echo -e "\e[34mConfig file:\t\e[0m${servercfgfullpath}" + fi - # network config file location (ARMA 3) - if [ -n "${networkcfgfullpath}" ]; then - echo -e "\e[34mNetwork config file:\t\e[0m${networkcfgfullpath}" - fi -} | column -s $'\t' -t + # network config file location (ARMA 3) + if [ -n "${networkcfgfullpath}" ]; then + echo -e "\e[34mNetwork config file:\t\e[0m${networkcfgfullpath}" + fi + } | column -s $'\t' -t } fn_details_backup(){ diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 066d0dbdf..3a7d9f468 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -2,7 +2,7 @@ # LGSM command_monitor.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="060516" # Description: Monitors server by checking for running proccesses # then passes to monitor_gsquery.sh. @@ -22,8 +22,7 @@ fn_monitor_check_lockfile(){ fn_monitor_check_update(){ # Monitor will not check if update is running. - updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) - if [ "${updatecheck}" >= "1" ]; then + if [ "$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)" >= "1" ]; then fn_print_info_nl "SteamCMD is currently checking for updates" fn_scriptlog "SteamCMD is currently checking for updates" sleep 1 @@ -49,17 +48,16 @@ fn_monitor_email_notification(){ } fn_monitor_teamspeak3(){ - info_ts3status.sh - if [ "${ts3status}" = "Server is running" ]; then + if [ "${status}" != "0" ]; then fn_print_ok "Checking session: " fn_print_ok_eol_nl fn_scriptlog "Checking session: OK" exit else - fn_print_fail "Checking session: ${ts3status}: " + fn_print_fail "Checking session: ${ts3error}: " fn_print_fail_eol_nl - fn_scriptlog "Checking session: ${ts3status}: FAIL" - failurereason="${ts3status}" + fn_scriptlog "Checking session: ${ts3error}: FAIL" + failurereason="${ts3error}" fn_monitor_email_notification fi fn_scriptlog "Monitor is starting ${servername}" @@ -69,8 +67,7 @@ fn_monitor_teamspeak3(){ fn_monitor_tmux(){ # checks that tmux session is running - tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${tmuxwc}" == "1" ]; then + if [ "${status}" != "0" ]; then fn_print_ok "Checking session: OK" fn_print_ok_eol_nl fn_scriptlog "Checking session: OK" diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index ff8bd9648..5b274f32f 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -2,7 +2,7 @@ # LGSM command_start.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="070116" +lgsm_version="060516" # Description: Starts the server. @@ -10,16 +10,6 @@ local modulename="Starting" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_start_teamspeak3(){ - check.sh - info_ts3status.sh - - if [ "${ts3status}" != "Server is running" ]; then - # Will check for updates is updateonstart is yes - if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then - update_check.sh - fi - fi - if [ ! -e "${servercfgfullpath}" ]; then fn_print_warn_nl "${servercfgfullpath} is missing" fn_scriptlog "${servercfgfullpath} is missing" @@ -35,13 +25,11 @@ fn_start_teamspeak3(){ touch "${servercfgfullpath}" fi - logs.sh - fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 - - if [ "${ts3status}" == "Server is running" ]; then + check_status.sh + if [ "${status}" != "0" ]; then fn_print_info_nl "${servername} is already running" fn_scriptlog "${servername} is already running" exit @@ -57,8 +45,8 @@ fn_start_teamspeak3(){ ./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1 fi sleep 1 - info_ts3status.sh - if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + check_status.sh + if [ "${status}" == "0" ]; then fn_print_fail_nl "Unable to start ${servername}" fn_scriptlog "Unable to start ${servername}" echo -e " Check log files: ${rootdir}/log" @@ -70,117 +58,126 @@ fn_start_teamspeak3(){ } fn_start_tmux(){ -check.sh -fix.sh -info_config.sh -fn_parms -logs.sh + fn_print_dots "${servername}" + fn_scriptlog "${servername}" + sleep 1 -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") -# Will check for updates if updateonstart is yes -if [ "${tmuxwc}" -eq 0 ]; then - if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then - update_check.sh + # Log rotation + check_status.sh + if [ "${status}" == "0" ]; then + fn_scriptlog "Rotating log files" + if [ "${engine}" == "unreal2" ]; then + mv "${gamelog}" "${gamelogdate}" + fi + mv "${scriptlog}" "${scriptlogdate}" + mv "${consolelog}" "${consolelogdate}" fi -fi - -fn_print_dots "${servername}" -fn_scriptlog "${servername}" -sleep 1 -if [ "${tmuxwc}" -eq 0 ]; then - fn_scriptlog "Rotating log files" - if [ "${engine}" == "unreal2" ]; then - mv "${gamelog}" "${gamelogdate}" + # If server is already running exit + check_status.sh + if [ "${status}" != "0" ]; then + fn_print_info_nl "${servername} is already running" + fn_scriptlog "${servername} is already running" + exit fi - mv "${scriptlog}" "${scriptlogdate}" - mv "${consolelog}" "${consolelogdate}" -fi - -if [ "${tmuxwc}" -eq 1 ]; then - fn_print_info_nl "${servername} is already running" - fn_scriptlog "${servername} is already running" - exit -fi -# Create lock file -date > "${rootdir}/${lockselfname}" -cd "${executabledir}" -tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp" -# tmux pipe-pane not supported in tmux versions < 1.6 -if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then - echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}" - echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" - echo "Currently installed: $(tmux -V)" >> "${consolelog}" -elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; then - echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}" - echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" - echo "Currently installed: $(tmux -V)" >> "${consolelog}" -# Console logging enable or not set -elif [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then - touch "${consolelog}" - tmux pipe-pane -o -t "${servicename}" "exec cat >> '${consolelog}'" -# Console logging disabled -elif [ "${consolelogging}" == "off" ]; then - touch "${consolelog}" - cat "Console logging disabled by user" >> "{consolelog}" - fn_scriptlog "Console logging disabled by user" -fi -sleep 1 -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") -# If the server fails to start -if [ "${tmuxwc}" -eq 0 ]; then - fn_print_fail_nl "Unable to start ${servername}" - fn_scriptlog "Unable to start ${servername}" + # Create lock file + date > "${rootdir}/${lockselfname}" + cd "${executabledir}" + tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp" + + # tmux pipe-pane not supported in tmux versions < 1.6 + if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then + echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}" + echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" + echo "Currently installed: $(tmux -V)" >> "${consolelog}" + + # Console logging disabled: Bug in tmux 1.8 breaks logging + elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; then + echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}" + echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" + echo "Currently installed: $(tmux -V)" >> "${consolelog}" + + # Console logging enable or not set + elif [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then + touch "${consolelog}" + tmux pipe-pane -o -t "${servicename}" "exec cat >> '${consolelog}'" + + # Console logging disabled + elif [ "${consolelogging}" == "off" ]; then + touch "${consolelog}" + cat "Console logging disabled by user" >> "{consolelog}" + fn_scriptlog "Console logging disabled by user" + fi sleep 1 - if [ -s "${scriptlogdir}/.${servicename}-tmux-error.tmp" ]; then - fn_print_fail_nl "Unable to start ${servername}: Tmux error:" - fn_scriptlog "Tmux error" - echo "" - echo "Command" - echo "=================================" - echo "tmux new-session -d -s \"${servicename}\" \"${executable} ${parms}\"" | tee -a "${scriptlog}" - echo "" - echo "Error" - echo "=================================" - cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" | tee -a "${scriptlog}" - - # Detected error http://gameservermanagers.com/issues - if [ $(grep -c "Operation not permitted" "${scriptlogdir}/.${servicename}-tmux-error.tmp") ]; then - echo "" - echo "Fix" - echo "=================================" - if [ ! $(grep "tty:" /etc/group|grep "$(whoami)") ]; then - echo "$(whoami) is not part of the tty group." - fn_scriptlog "$(whoami) is not part of the tty group." - group=$(grep tty /etc/group) - echo "" - echo " ${group}" - fn_scriptlog "${group}" - echo "" - echo "Run the following command with root privileges." - echo "" - echo " usermod -G tty $(whoami)" - echo "" - echo "http://gameservermanagers.com/tmux-op-perm" - fn_scriptlog "http://gameservermanagers.com/tmux-op-perm" - else - echo "No known fix currently. Please log an issue." - fn_scriptlog "No known fix currently. Please log an issue." - echo "http://gameservermanagers.com/issues" - fn_scriptlog "http://gameservermanagers.com/issues" + + # If the server fails to start + check_status.sh + if [ "${status}" == "0" ]; then + fn_print_fail_nl "Unable to start ${servername}" + fn_scriptlog "Unable to start ${servername}" + sleep 1 + if [ -s "${scriptlogdir}/.${servicename}-tmux-error.tmp" ]; then + fn_print_fail_nl "Unable to start ${servername}: Tmux error:" + fn_scriptlog "Tmux error" + echo "" + echo "Command" + echo "=================================" + echo "tmux new-session -d -s \"${servicename}\" \"${executable} ${parms}\"" | tee -a "${scriptlog}" + echo "" + echo "Error" + echo "=================================" + cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" | tee -a "${scriptlog}" + + # Detected error http://gameservermanagers.com/issues + if [ $(grep -c "Operation not permitted" "${scriptlogdir}/.${servicename}-tmux-error.tmp") ]; then + echo "" + echo "Fix" + echo "=================================" + if [ ! $(grep "tty:" /etc/group|grep "$(whoami)") ]; then + echo "$(whoami) is not part of the tty group." + fn_scriptlog "$(whoami) is not part of the tty group." + group=$(grep tty /etc/group) + echo "" + echo " ${group}" + fn_scriptlog "${group}" + echo "" + echo "Run the following command with root privileges." + echo "" + echo " usermod -G tty $(whoami)" + echo "" + echo "http://gameservermanagers.com/tmux-op-perm" + fn_scriptlog "http://gameservermanagers.com/tmux-op-perm" + else + echo "No known fix currently. Please log an issue." + fn_scriptlog "No known fix currently. Please log an issue." + echo "http://gameservermanagers.com/issues" + fn_scriptlog "http://gameservermanagers.com/issues" + fi fi fi + exit 1 + else + fn_print_ok "${servername}" + fn_scriptlog "Started ${servername}" fi -exit 1 -else - fn_print_ok "${servername}" - fn_scriptlog "Started ${servername}" -fi -rm "${scriptlogdir}/.${servicename}-tmux-error.tmp" -echo -en "\n" + rm "${scriptlogdir}/.${servicename}-tmux-error.tmp" + echo -en "\n" } +check.sh +fix.sh +info_config.sh +fn_parms +logs.sh + +# Will check for updates is updateonstart is yes +if [ "${status}" == "0" ]; then + if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then + update_check.sh + fi +fi + if [ "${gamename}" == "Teamspeak 3" ]; then fn_start_teamspeak3 else diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index f4c46c071..4e658ccf5 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -36,9 +36,8 @@ fix.sh fn_scriptlog "Checking complete" } -check.sh -tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") -if [ "${tmuxwc}" -eq 1 ]; then +check_status.sh +if [ "${status}" != "0" ]; then command_stop.sh fn_validation command_start.sh diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 77a3cffb7..266a831a9 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -2,7 +2,7 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="020516" +lgsm_version="060516" # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. @@ -207,6 +207,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +check_status.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + check_steamcmd.sh(){ functionfile="${FUNCNAME}" fn_fetch_function diff --git a/lgsm/functions/update_check.sh b/lgsm/functions/update_check.sh index 579a84f4b..e09eb54f2 100644 --- a/lgsm/functions/update_check.sh +++ b/lgsm/functions/update_check.sh @@ -2,7 +2,7 @@ # LGSM update_check.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="060216" +lgsm_version="060516" # Description: Checks if a server update is available. @@ -17,292 +17,294 @@ fn_appmanifestinfo(){ } fn_appmanifestcheck(){ -fn_appmanifestinfo -# Multiple or no matching appmanifest files may sometimes be available. -# This is an error is corrected below if required. -if [ "${appmanifestfilewc}" -ge "2" ]; then - sleep 1 - fn_print_warn "Multiple appmanifest_${appid}.acf files found" - fn_scriptlog "Warning! Multiple appmanifest_${appid}.acf files found" - sleep 2 - fn_print_dots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files" - sleep 1 - for appfile in ${appmanifestfile}; do - rm "${appfile}" - done - appmanifestfilewc1="${appmanifestfilewc}" fn_appmanifestinfo + # Multiple or no matching appmanifest files may sometimes be available. + # This is an error is corrected below if required. if [ "${appmanifestfilewc}" -ge "2" ]; then - fn_print_fail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" - fn_scriptlog "Failure! Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" sleep 1 - echo "" - echo " Check user permissions" + fn_print_warn "Multiple appmanifest_${appid}.acf files found" + fn_scriptlog "Warning! Multiple appmanifest_${appid}.acf files found" + sleep 2 + fn_print_dots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files" + sleep 1 for appfile in ${appmanifestfile}; do - echo " ${appfile}" + rm "${appfile}" done - exit 1 - else - sleep 1 - fn_print_ok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" - fn_scriptlog "Success! Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" - sleep 1 + appmanifestfilewc1="${appmanifestfilewc}" + fn_appmanifestinfo + if [ "${appmanifestfilewc}" -ge "2" ]; then + fn_print_fail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" + fn_scriptlog "Failure! Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" + sleep 1 + echo "" + echo " Check user permissions" + for appfile in ${appmanifestfile}; do + echo " ${appfile}" + done + exit 1 + else + sleep 1 + fn_print_ok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" + fn_scriptlog "Success! Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" + sleep 1 + fn_print_info_nl "Forcing update to correct issue" + fn_scriptlog "Forcing update to correct issue" + sleep 1 + update_dl.sh + update_check.sh + fi + elif [ "${appmanifestfilewc}" -eq "0" ]; then + if [ "${forceupdate}" == "1" ]; then + fn_print_fail "Still no appmanifest_${appid}.acf found: Unable to update" + fn_scriptlog "Warning! Still no appmanifest_${appid}.acf found: Unable to update" + exit 1 + fi + forceupdate=1 + fn_print_warn "No appmanifest_${appid}.acf found" + fn_scriptlog "Warning! No appmanifest_${appid}.acf found" + sleep 2 fn_print_info_nl "Forcing update to correct issue" fn_scriptlog "Forcing update to correct issue" sleep 1 update_dl.sh update_check.sh fi -elif [ "${appmanifestfilewc}" -eq "0" ]; then - if [ "${forceupdate}" == "1" ]; then - fn_print_fail "Still no appmanifest_${appid}.acf found: Unable to update" - fn_scriptlog "Warning! Still no appmanifest_${appid}.acf found: Unable to update" - exit 1 - fi - forceupdate=1 - fn_print_warn "No appmanifest_${appid}.acf found" - fn_scriptlog "Warning! No appmanifest_${appid}.acf found" - sleep 2 - fn_print_info_nl "Forcing update to correct issue" - fn_scriptlog "Forcing update to correct issue" - sleep 1 - update_dl.sh - update_check.sh -fi } fn_logupdaterequest(){ -# Checks for server update requests from server logs. -fn_print_dots "Checking for update: Server logs" -fn_scriptlog "Checking for update: Server logs" -sleep 1 -requestrestart=$(grep -Ec "MasterRequestRestart" "${consolelog}") -if [ "${requestrestart}" -ge "1" ]; then - fn_print_ok_nl "Checking for update: Server logs: Update requested" - sleep 1 - echo "" - echo -ne "Applying update.\r" + # Checks for server update requests from server logs. + fn_print_dots "Checking for update: Server logs" + fn_scriptlog "Checking for update: Server logs" sleep 1 - echo -ne "Applying update..\r" - sleep 1 - echo -ne "Applying update...\r" - sleep 1 - echo -ne "\n" - tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") - unset updateonstart - if [ "${tmuxwc}" -eq 1 ]; then - command_stop.sh - update_dl.sh - command_start.sh + requestrestart=$(grep -Ec "MasterRequestRestart" "${consolelog}") + if [ "${requestrestart}" -ge "1" ]; then + fn_print_ok_nl "Checking for update: Server logs: Update requested" + sleep 1 + echo "" + echo -ne "Applying update.\r" + sleep 1 + echo -ne "Applying update..\r" + sleep 1 + echo -ne "Applying update...\r" + sleep 1 + echo -ne "\n" + + unset updateonstart + check_status.sh + if [ "${status}" != "0" ]; then + command_stop.sh + update_dl.sh + command_start.sh + else + update_dl.sh + fi else - update_dl.sh + fn_print_ok "Checking for update: Server logs: No update requested" + sleep 1 fi -else - fn_print_ok "Checking for update: Server logs: No update requested" - sleep 1 -fi } fn_steamcmdcheck(){ -fn_appmanifestcheck -# Checks for server update from SteamCMD -fn_print_dots "Checking for update: SteamCMD" -fn_scriptlog "Checking for update: SteamCMD" -sleep 1 + fn_appmanifestcheck + # Checks for server update from SteamCMD + fn_print_dots "Checking for update: SteamCMD" + fn_scriptlog "Checking for update: SteamCMD" + sleep 1 -# Gets currentbuild -currentbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) + # Gets currentbuild + currentbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) -# Removes appinfo.vdf as a fix for not always getting up to date version info from SteamCMD + # Removes appinfo.vdf as a fix for not always getting up to date version info from SteamCMD -# Gets availablebuild info -cd "${rootdir}/steamcmd" -if [ -f "${HOME}/Steam/appcache/appinfo.vdf" ]; then - rm -f "${HOME}/Steam/appcache/appinfo.vdf" -fi -availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) -if [ -z "${availablebuild}" ]; then - fn_print_fail "Checking for update: SteamCMD" - fn_scriptlog "Failure! Checking for update: SteamCMD" - sleep 1 - fn_print_fail_nl "Checking for update: SteamCMD: Not returning version info" - fn_scriptlog "Failure! Checking for update: SteamCMD: Not returning version info" - exit 1 -else - fn_print_ok "Checking for update: SteamCMD" - fn_scriptlog "Success! Checking for update: SteamCMD" - sleep 1 -fi + # Gets availablebuild info + cd "${rootdir}/steamcmd" + if [ -f "${HOME}/Steam/appcache/appinfo.vdf" ]; then + rm -f "${HOME}/Steam/appcache/appinfo.vdf" + fi + availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) + if [ -z "${availablebuild}" ]; then + fn_print_fail "Checking for update: SteamCMD" + fn_scriptlog "Failure! Checking for update: SteamCMD" + sleep 1 + fn_print_fail_nl "Checking for update: SteamCMD: Not returning version info" + fn_scriptlog "Failure! Checking for update: SteamCMD: Not returning version info" + exit 1 + else + fn_print_ok "Checking for update: SteamCMD" + fn_scriptlog "Success! Checking for update: SteamCMD" + sleep 1 + fi -if [ "${currentbuild}" != "${availablebuild}" ]; then - echo -e "\n" - echo -e "Update available:" - sleep 1 - echo -e " Current build: \e[0;31m${currentbuild}\e[0;39m" - echo -e " Available build: \e[0;32m${availablebuild}\e[0;39m" - echo -e "" - echo -e " https://steamdb.info/app/${appid}/" - 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_scriptlog "Update available" - fn_scriptlog "Current build: ${currentbuild}" - fn_scriptlog "Available build: ${availablebuild}" - fn_scriptlog "${currentbuild} > ${availablebuild}" + if [ "${currentbuild}" != "${availablebuild}" ]; then + echo -e "\n" + echo -e "Update available:" + sleep 1 + echo -e " Current build: \e[0;31m${currentbuild}\e[0;39m" + echo -e " Available build: \e[0;32m${availablebuild}\e[0;39m" + echo -e "" + echo -e " https://steamdb.info/app/${appid}/" + 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_scriptlog "Update available" + fn_scriptlog "Current build: ${currentbuild}" + fn_scriptlog "Available build: ${availablebuild}" + fn_scriptlog "${currentbuild} > ${availablebuild}" - tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") - unset updateonstart - if [ "${tmuxwc}" -eq 1 ]; then - command_stop.sh - update_dl.sh - command_start.sh + unset updateonstart + info_status.sh + if [ "${status}" != "0" ]; then + command_stop.sh + update_dl.sh + command_start.sh + else + update_dl.sh + fi else - update_dl.sh + 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 " https://steamdb.info/app/${appid}/" + echo -e "" + fn_print_ok_nl "No update available" + fn_scriptlog "Current build: ${currentbuild}" + fn_scriptlog "Available build: ${availablebuild}" fi -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 " https://steamdb.info/app/${appid}/" - echo -e "" - fn_print_ok_nl "No update available" - fn_scriptlog "Current build: ${currentbuild}" - fn_scriptlog "Available build: ${availablebuild}" -fi } ### END SteamCMD Update Checker ### fn_teamspeak3_check(){ -# Checks for server update from teamspeak.com using a mirror dl.4players.de -fn_print_dots "Checking for update: teamspeak.com" -fn_scriptlog "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" + # Checks for server update from teamspeak.com using a mirror dl.4players.de + fn_print_dots "Checking for update: teamspeak.com" + fn_scriptlog "Checking for update: teamspeak.com" sleep 1 - fn_print_fail_nl "Checking for update: teamspeak.com: No logs with server version found" - fn_scriptlog "Failure! 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_scriptlog "Checking for update: teamspeak.com: Forcing server restart" - sleep 2 - command_stop.sh - command_start.sh - sleep 2 - # If still failing will exit + + # 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_nl "Checking for update: teamspeak.com: Still No logs with server version found" - fn_scriptlog "Failure! Checking for update: teamspeak.com: Still No logs with server version found" - exit 1 + 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_scriptlog "Failure! 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_scriptlog "Checking for update: teamspeak.com: Forcing server restart" + sleep 2 + command_stop.sh + command_start.sh + sleep 2 + # If still failing will exit + 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_scriptlog "Failure! Checking for update: teamspeak.com: Still No logs with server version found" + exit 1 + fi 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}') + 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 "${arch} is an unsupported architecture" - exit 1 -fi - -# Gets availablebuild info + # 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 "${arch} is an unsupported architecture" + exit 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 href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp + # 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 href=\".*\/\">.*\/<\/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 + # 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 + # 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" + # 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" - fn_scriptlog "Checking for update: teamspeak.com" - sleep 1 - fn_print_fail "Checking for update: teamspeak.com: Not returning version info" - fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info" - sleep 2 - exit 1 -else - fn_print_ok "Checking for update: teamspeak.com" - fn_scriptlog "Success! Checking for update: teamspeak.com" - sleep 1 -fi + # Checks availablebuild info is available + if [ -z "${availablebuild}" ]; then + fn_print_fail "Checking for update: teamspeak.com" + fn_scriptlog "Checking for update: teamspeak.com" + sleep 1 + fn_print_fail "Checking for update: teamspeak.com: Not returning version info" + fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info" + sleep 2 + exit 1 + else + fn_print_ok "Checking for update: teamspeak.com" + fn_scriptlog "Success! 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:]') -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_scriptlog "Update available" - fn_scriptlog "Current build: ${currentbuild}" - fn_scriptlog "Available build: ${availablebuild}" - fn_scriptlog "${currentbuild} > ${availablebuild}" - unset updateonstart - info_ts3status.sh - if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - update_dl.sh - command_start.sh - sleep 5 - command_stop.sh + # 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_scriptlog "Update available" + fn_scriptlog "Current build: ${currentbuild}" + fn_scriptlog "Available build: ${availablebuild}" + fn_scriptlog "${currentbuild} > ${availablebuild}" + + unset updateonstart + check_status.sh + if [ "${status}" == "0" ]; then + update_dl.sh + command_start.sh + sleep 5 + command_stop.sh + else + command_stop.sh + update_dl.sh + command_start.sh + fi else - command_stop.sh - update_dl.sh - command_start.sh + 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_scriptlog "Current build: ${currentbuild}" + fn_scriptlog "Available build: ${availablebuild}" fi -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_scriptlog "Current build: ${currentbuild}" - fn_scriptlog "Available build: ${availablebuild}" -fi } check.sh @@ -312,8 +314,7 @@ if [ "${gamename}" == "Teamspeak 3" ]; then elif [ "${engine}" == "goldsource" ]||[ "${forceupdate}" == "1" ]; then # Goldsource servers bypass checks as fn_steamcmdcheck does not work for appid 90 servers. # forceupdate bypasses checks - tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:") - if [ "${tmuxwc}" -eq 1 ]; then + if [ "${status}" != "0" ]; then command_stop.sh update_dl.sh command_start.sh From 61cea10bf3b6e5e3fe16816da223f54971cffc34 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 17:46:00 +0100 Subject: [PATCH 529/643] Fixed gameport now listed as port --- QuakeLive/qlserver | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 358626f67..f4e19c1e6 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -9,10 +9,9 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="060516" #### Variables #### -arch="x64" # Notification Email # (on|off) @@ -24,10 +23,11 @@ steamuser="anonymous" steampass="" # Start Variables -gameport="27960" +arch="x64" # x64 or x86 +port="27960" rconport="28960" rconpassword="CHANGE_ME" -statsport="${gameport}" +statsport="${port}" statspassword="CHANGE_ME" mappool='mappool.txt' ip="0.0.0.0" @@ -36,7 +36,7 @@ updateonstart="off" # Install/Config Guide : https://steamcommunity.com/sharedfiles/filedetails/?id=542966946 # Console Commands : http://www.regurge.at/ql/ fn_parms(){ - parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${gameport} +set fs_homepath ${filesdir}/${gameport} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rconpassword} +set zmq_stats_enable 1 +set zmq_stats_password ${statspassword} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg} " + parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${port} +set fs_homepath ${filesdir}/${gameport} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rconpassword} +set zmq_stats_enable 1 +set zmq_stats_password ${statspassword} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg}" } #### Advanced Variables #### @@ -65,7 +65,7 @@ functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" -executable=$([ "$arch" == 'x64' ] && echo "./run_server_x64.sh" || echo "./run_server_x86.sh") +executable=$([ "${arch}" == 'x64' ] && echo "./run_server_x64.sh" || echo "./run_server_x86.sh") servercfg="${servicename}.cfg" servercfgdir="${filesdir}/baseq3" servercfgfullpath="${servercfgdir}/${servercfg}" From 5764b6ea9a9565cfa7d1d7426090fb03b5db1cfa Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 18:11:36 +0100 Subject: [PATCH 530/643] moved fn_parms --- lgsm/functions/command_start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 5b274f32f..3637f5ef2 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -58,6 +58,7 @@ fn_start_teamspeak3(){ } fn_start_tmux(){ + fn_parms fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 @@ -168,7 +169,6 @@ fn_start_tmux(){ check.sh fix.sh info_config.sh -fn_parms logs.sh # Will check for updates is updateonstart is yes From 999ba07fa1fa31a3910987e2428b90911b1016ce Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 18:13:01 +0100 Subject: [PATCH 531/643] Added execdir --- lgsm/functions/check_status.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh index d0f88b080..dc9edc01a 100644 --- a/lgsm/functions/check_status.sh +++ b/lgsm/functions/check_status.sh @@ -10,7 +10,7 @@ if [ "${gamename}" == "Teamspeak 3" ]; then # 1: Server is running # 0: Server seems to have died # 0: No server running (ts3server.pid is missing) - status=$(./ts3server_startscript.sh status servercfgfullpathfile=${servercfgfullpath}) + status=$(${executabledir}/ts3server_startscript.sh status servercfgfullpathfile=${servercfgfullpath}) if [ "${status}" == "Server is running" ]; then status=1 else From 8bd29c5e4bec092c69918af68c39cbe11ff3138b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 18:13:09 +0100 Subject: [PATCH 532/643] date --- lgsm/functions/command_validate.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 4e658ccf5..4445c549b 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -2,7 +2,7 @@ # LGSM command_validate.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="271215" +lgsm_version="060516" # Description: Runs a server validation. From 435f6baf51bc4cea9cb9402e9f22f59f1e382cc2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 18:18:24 +0100 Subject: [PATCH 533/643] ts3error=status --- lgsm/functions/check_status.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh index dc9edc01a..768aded0f 100644 --- a/lgsm/functions/check_status.sh +++ b/lgsm/functions/check_status.sh @@ -14,8 +14,8 @@ if [ "${gamename}" == "Teamspeak 3" ]; then if [ "${status}" == "Server is running" ]; then status=1 else + ts3error="${status}" status=0 - ts3error=$(./ts3server_startscript.sh status servercfgfullpathfile=${servercfgfullpath}) fi else status=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") From 012915f892a0a42380aae4e24f2070cc72baa460 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 18:19:23 +0100 Subject: [PATCH 534/643] excluded ts3server from glibc checks --- lgsm/functions/fix.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index a57484305..af8a29175 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -42,7 +42,10 @@ if [ "${function_selfname}" != "command_install.sh" ]; then elif [ "${gamename}" == "ARMA 3" ]; then fix_arma3.sh fi - fix_glibc.sh + + if [ "${gamename}" != "Teamspeak 3" ]; then + fix_glibc.sh + fi fi # Fixes that are run on install only. From 5904bb2fb10bb17d01d546dba7a86e09a6c3e2b5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 18:39:20 +0100 Subject: [PATCH 535/643] depricated --- lgsm/functions/info_ts3status.sh | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 lgsm/functions/info_ts3status.sh diff --git a/lgsm/functions/info_ts3status.sh b/lgsm/functions/info_ts3status.sh deleted file mode 100644 index c08f95f1d..000000000 --- a/lgsm/functions/info_ts3status.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# LGSM info_ts3status.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Checks the status of Teamspeak 3. - -cd "${executabledir}" -ts3status=$(./ts3server_startscript.sh status servercfgfullpathfile=${servercfgfullpath}) From 020c0f62cbc1adcdb20a8578e90714ce7fb96680 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 18:39:32 +0100 Subject: [PATCH 536/643] renamed 2 variables --- lgsm/functions/check_glibc.sh | 8 +++--- lgsm/functions/command_details.sh | 23 +++++++++++++---- lgsm/functions/fix_glibc.sh | 12 ++++----- lgsm/functions/info_glibc.sh | 42 +++++++++++++++---------------- 4 files changed, 49 insertions(+), 36 deletions(-) diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index 3647f4705..3461c3dee 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -8,13 +8,13 @@ lgsm_version="020116" info_glibc.sh -glibc_version="$(ldd --version | sed -n '1s/.* //p')" -if [ "$(printf '%s\n$glibc_required\n' $glibc_version | sort -V | head -n 1)" != "${glibc_required}" ]; then +glibcversion="$(ldd --version | sed -n '1s/.* //p')" +if [ "$(printf '%s\n$glibcrequired\n' $glibcversion | sort -V | head -n 1)" != "${glibcrequired}" ]; then if [ "${glibcfix}" != "yes" ]; then fn_print_warn_nl "Glibc fix: No Glibc fix available!" echo -en "\n" - echo " * glibc required: $glibc_required" - echo " * glibc installed: $glibc_version" + echo " * glibc required: $glibcrequired" + echo " * glibc installed: $glibcversion" echo -en "\n" fn_print_infomation "The game server will probably not work. A distro upgrade is required!" sleep 5 diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index c601769e1..fab978943 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -160,24 +160,36 @@ fn_details_gameserver(){ fi } | column -s $'\t' -t echo -e "" +} - ## script details +fn_details_script(){ + # + # qlserver Script Details + # ===================================== + # Service name: ql-server + # qlserver version: 150316 + # User: lgsm + # Email notification: off + # Update on start: off + # Location: /home/lgsm/qlserver + # Config file: /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg + echo -e "\e[92m${selfname} Script Details\e[0m" printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = { - # service name + # Service name echo -e "\e[34mService name:\t\e[0m${servicename}" - # script version + # Script version if [ -n "${version}" ]; then echo -e "\e[34m${selfname} version:\t\e[0m${version}" fi - # script user + # User echo -e "\e[34mUser:\t\e[0m$(whoami)" # GLIBC required - if [ -n "${glibcrequired}" ] && [ "${glibcrequired}" != "UNKNOWN" ]; then + if [ -n "${glibcrequired}" ]; then if [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then if [ "${glibcfix}" == "yes" ]; then echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)" @@ -666,6 +678,7 @@ fn_details_os fn_details_performance fn_details_disk fn_details_gameserver +fn_details_script fn_details_backup # Some game servers do not have parms. if [ "${gamename}" != "Teamspeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]; then diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 5af92d4b7..12823c3b0 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -24,18 +24,18 @@ do fi done -glibc_version="$(ldd --version | sed 's/.* //;q')" -if [ "$(printf '%s\n'${glibc_required}'\n' ${glibc_version} | sort -V | head -n 1)" != "${glibc_required}" ]; then +glibcversion="$(ldd --version | sed 's/.* //;q')" +if [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then if [ "${glibcfix}" == "yes" ]; then fn_print_info_nl "Glibc fix: Using Glibc fix" - echo " * glibc required: ${glibc_required}" - echo " * glibc installed: ${glibc_version}" + echo " * glibc required: ${glibcrequired}" + echo " * glibc installed: ${glibcversion}" export LD_LIBRARY_PATH=:"${libdir}" else fn_print_warn_nl "Glibc fix: No Glibc fix available!" echo -en "\n" - echo " * glibc required: ${glibc_required}" - echo " * glibc installed: ${glibc_version}" + echo " * glibc required: ${glibcrequired}" + echo " * glibc installed: ${glibcversion}" echo -en "\n" fn_print_infomation "The game server will probably not work. A distro upgrade is required!" fi diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 8b7b38cd4..46c45d904 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -7,65 +7,65 @@ lgsm_version="260216" # Description: stores details on servers Glibc requirements. if [ "${gamename}" == "Blade Symphony" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="yes" elif [ "${gamename}" == "BrainBread 2" ]; then - glibc_required="2.17" + glibcrequired="2.17" elif [ "${gamename}" == "Double Action: Boogaloo" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="yes" elif [ "${gamename}" == "Fistful of Frags" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="yes" elif [ "${gamename}" == "Garry's Mod" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="yes" elif [ "${gamename}" == "Insurgency" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="yes" elif [ "${gamename}" == "No More Room in Hell" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="yes" elif [ "${gamename}" == "Quake Live" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="no" elif [ "${engine}" == "avalanche" ]; then - glibc_required="2.13" + glibcrequired="2.13" glibcfix="yes" elif [ "${engine}" == "dontstarve" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="no" elif [ "${engine}" == "projectzomboid" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="yesno" elif [ "${engine}" == "realvirtuality" ]; then - glibc_required="2.13" + glibcrequired="2.13" glibcfix="yes" elif [ "${engine}" == "seriousengine35" ]; then - glibc_required="2.13" + glibcrequired="2.13" glibcfix="yes" elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - glibc_required="2.3.6" + glibcrequired="2.3.6" glibcfix="no" elif [ "${engine}" == "spark" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="yes" elif [ "${engine}" == "starbound" ]; then - glibc_required="2.12" + glibcrequired="2.12" glibcfix="no" elif [ "${engine}" == "unreal" ]; then - glibc_required="2.1" + glibcrequired="2.1" glibcfix="no" elif [ "${engine}" == "unreal2" ]; then - glibc_required="2.4" + glibcrequired="2.4" glibcfix="no" elif [ "${engine}" == "unreal4" ]; then - glibc_required="2.14" + glibcrequired="2.14" glibcfix="no" elif [ "${engine}" == "unity3d" ]; then - glibc_required="2.15" + glibcrequired="2.15" glibcfix="no" else - glibc_required="UNKNOWN" + glibcrequired="UNKNOWN" glibcfix="no" fi From b15d757c1b4c7b77626e71aa8dcce302713fc9cf Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 18:57:05 +0100 Subject: [PATCH 537/643] fn_print_info_nl --- lgsm/functions/command_backup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index d2426029c..f8156479d 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -12,7 +12,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" echo "" -fn_printinfonl "A total of $(du -sh "${rootdir}" --exclude="${backupdir}" | awk '{print $1}') will be compressed into the following backup:" +fn_print_info_nl "A total of $(du -sh "${rootdir}" --exclude="${backupdir}" | awk '{print $1}') will be compressed into the following backup:" echo "${backupdir}/${backupname}.tar.gz" echo "" while true; do From 03169f1fb0d879d8b395ab0d8e2720f4906ea27d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 6 May 2016 19:10:50 +0100 Subject: [PATCH 538/643] corrected messages --- lgsm/functions/command_backup.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index f8156479d..563b80bf3 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -27,7 +27,7 @@ echo "" check_status.sh if [ "${status}" != "0" ]; then echo "" - fn_printwarningnl "${servicename} is currently running." + fn_print_warning_nl "${servicename} is currently running." sleep 1 while true; do read -p "Stop ${servicename} while running the backup? [y/N]" yn @@ -39,13 +39,13 @@ if [ "${status}" != "0" ]; then done fi fn_scriptlog "Started backup" -fn_printdots "Backup in progress, please wait..." +fn_print_dots "Backup in progress, please wait..." sleep 2 if [ ! -d "${backupdir}" ]; then mkdir "${backupdir}" fi tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* -fn_printoknl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" +fn_print_ok_nl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" fn_scriptlog "Complete, Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" sleep 1 echo "" \ No newline at end of file From c0e2891b15d3e99fba6fa1b123831592e7d09961 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 17:41:57 +0100 Subject: [PATCH 539/643] Optimised details function --- lgsm/functions/command_details.sh | 662 ++++++++++++------------------ 1 file changed, 273 insertions(+), 389 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index fab978943..24abefece 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -2,7 +2,7 @@ # LGSM command_details.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="060516" +lgsm_version="080516" # Description: Displays server infomation. @@ -147,12 +147,12 @@ fn_details_gameserver(){ echo -e "\e[34mTick rate:\t\e[0m${tickrate}" fi - # teamspeak dbplugin + # Teamspeak dbplugin if [ -n "${dbplugin}" ]; then echo -e "\e[34mdbplugin:\t\e[0m${dbplugin}" fi - # online status + # Online status if [ "${status}" == "0" ]; then echo -e "\e[34mStatus:\t\e[0;31mOFFLINE\e[0m" else @@ -189,37 +189,37 @@ fn_details_script(){ echo -e "\e[34mUser:\t\e[0m$(whoami)" # GLIBC required + glibcrequired="UNKNOWN" if [ -n "${glibcrequired}" ]; then - if [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then + if [ "${glibcrequired}" == "UNKNOWN" ]; then + echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}" + elif [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then if [ "${glibcfix}" == "yes" ]; then echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)" else echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}\e[0m(\e[0;32mGLIBC version too old\e[0m)" fi + else echo -e "\e[34mGLIBC required:\t\e[0;32m${glibcrequired}\e[0m" fi fi - # email notification - if [ -n "${emailnotification}" ]; then - echo -e "\e[34mEmail notification:\t\e[0m${emailnotification}" - fi + # Email notification + echo -e "\e[34mEmail notification:\t\e[0m${emailnotification}" - # update on start - if [ -n "${updateonstart}" ]; then - echo -e "\e[34mUpdate on start:\t\e[0m${updateonstart}" - fi + # Update on start + echo -e "\e[34mUpdate on start:\t\e[0m${updateonstart}" - # script location + # Script location echo -e "\e[34mLocation:\t\e[0m${rootdir}" - # config file location + # Config file location if [ -n "${servercfgfullpath}" ]; then echo -e "\e[34mConfig file:\t\e[0m${servercfgfullpath}" fi - # network config file location (ARMA 3) + # Network config file location (ARMA 3) if [ -n "${networkcfgfullpath}" ]; then echo -e "\e[34mNetwork config file:\t\e[0m${networkcfgfullpath}" fi @@ -227,445 +227,325 @@ fn_details_script(){ } fn_details_backup(){ -echo -e "" -echo -e "\e[92mBackups\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then - echo -e "No Backups created" -else - { - echo -e "\e[34mNo. of backups:\t\e[0m${backupcount}" - echo -e "\e[34mLatest backup:\e[0m" - echo -e "\e[34m date:\t\e[0m${lastbackupdate}" - echo -e "\e[34m file:\t\e[0m${lastbackup}" - echo -e "\e[34m size:\t\e[0m${lastbackupsize}" - } | column -s $'\t' -t -fi + # + # Backups + # ===================================== + # No. of backups: 1 + # Latest backup: + # date: Fri May 6 18:34:19 UTC 2016 + # file: /home/lgsm/qlserver/backups/ql-server-2016-05-06-183239.tar.gz + # size: 945M + + echo -e "" + echo -e "\e[92mBackups\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then + echo -e "No Backups created" + else + { + echo -e "\e[34mNo. of backups:\t\e[0m${backupcount}" + echo -e "\e[34mLatest backup:\e[0m" + echo -e "\e[34m date:\t\e[0m${lastbackupdate}" + echo -e "\e[34m file:\t\e[0m${lastbackup}" + echo -e "\e[34m size:\t\e[0m${lastbackupsize}" + } | column -s $'\t' -t + fi } fn_details_commandlineparms(){ -echo -e "" -echo -e "\e[92mCommand-line Parameters\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "${executable} ${parms}" + # + # Command-line Parameters + # ===================================== + # ./run_server_x86.sh +set net_strict 1 + + echo -e "" + echo -e "\e[92mCommand-line Parameters\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + echo -e "${executable} ${parms}" +} + +fn_details_ports(){ + # Ports + # ===================================== + # Change ports by editing the parameters in: + # /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg + + echo -e "" + echo -e "\e[92mPorts\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + echo -e "Change ports by editing the parameters in:" + + parmslocation="\e[0;31mUNKNOWN\e[0m" + local ports_edit_array=( "avalanche" "dontstarve" "projectzomboid" "idtech3" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "Teamspeak 3" "7 Days To Die" ) + for port_edit in "${ports_edit_array[@]}" + do + if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then + parmslocation="${servercfgfullpath}" + fi + done + + local ports_edit_array=( "starbound" "spark" "source" "goldsource" "Rust" "Hurtworld" ) + for port_edit in "${ports_edit_array[@]}" + do + if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then + parmslocation="${selfname}" + fi + done + echo -e "${parmslocation}" + echo -e "" + echo -e "Useful port diagnostic command:" } fn_details_statusbottom(){ -echo -e "" -if [ "${gamename}" == "Teamspeak 3" ]; then - if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - echo -e "\e[34mStatus: \e[0;31mOFFLINE\e[0m" - else - echo -e "\e[34mStatus: \e[0;32mONLINE\e[0m" - fi -else - pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - echo -e "\e[34mStatus: \e[0;31mOFFLINE\e[0m" + echo -e "" + if [ "${status}" == "0" ]; then + echo -e "\e[34mStatus:\t\e[0;31mOFFLINE\e[0m" else - echo -e "\e[34mStatus: \e[0;32mONLINE\e[0m" + echo -e "\e[34mStatus:\t\e[0;32mONLINE\e[0m" fi -fi -echo -e "" + echo -e "" } # Engine Specific details fn_details_avalanche(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep Jcmp-Server" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep Jcmp-Server" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t + } fn_details_dontstarve(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep dontstarve" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep dontstarve" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t } fn_details_projectzomboid(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep java" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep java" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t } fn_details_realvirtuality(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep arma3server" -echo -e "" -if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then - echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." + echo -e "netstat -atunp | grep arma3server" echo -e "" -fi -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" - echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom + if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then + echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." + echo -e "" + fi + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" + echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" + } | column -s $'\t' -t } fn_details_idtech3(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep qzeroded" -echo -e "" -if [ -z "${port}" ]||[ -z "${rconport}" ]||[ -z "${statsport}" ]; then - echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." + echo -e "netstat -atunp | grep qzeroded" echo -e "" -fi -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Rcon\tINBOUND\t${rconport}\tudp" - echo -e "> Stats\tINBOUND\t${statsport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom + if [ -z "${port}" ]||[ -z "${rconport}" ]||[ -z "${statsport}" ]; then + echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}." + echo -e "" + fi + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Rcon\tINBOUND\t${rconport}\tudp" + echo -e "> Stats\tINBOUND\t${statsport}\tudp" + } | column -s $'\t' -t } fn_details_seriousengine35(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep Sam3_Dedicate" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\ttcp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep Sam3_Dedicate" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\ttcp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + } | column -s $'\t' -t } fn_details_source(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${selfname}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep srcds_linux" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\ttcp/udp" - if [ -n "${sourcetvport}" ]; then - echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp" - fi - echo -e "< Client\tOUTBOUND\t${clientport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep srcds_linux" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\ttcp/udp" + if [ -n "${sourcetvport}" ]; then + echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp" + fi + echo -e "< Client\tOUTBOUND\t${clientport}\tudp" + } | column -s $'\t' -t } fn_details_spark(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${selfname}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep server_linux3" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" -} | column -s $'\t' -t -echo -e "" -echo -e "\e[92m${servername} WebAdmin\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}/index.html" - echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}" - echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep server_linux3" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" + } | column -s $'\t' -t + echo -e "" + echo -e "\e[92m${servername} WebAdmin\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}/index.html" + echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}" + echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" + } | column -s $'\t' -t } fn_details_starbound(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${selfname}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep starbound" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\ttcp" - echo -e "> Query\tINBOUND\t${queryport}\ttcp" - echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" -} | column -s $'\t' -t - -fn_details_statusbottom - + echo -e "netstat -atunp | grep starbound" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\ttcp" + echo -e "> Query\tINBOUND\t${queryport}\ttcp" + echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" + } | column -s $'\t' -t } fn_details_teamspeak3(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep ts3server" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Voice\tINBOUND\t${port}\tudp" - echo -e "> ServerQuery\tINBOUND\t${queryport}\ttcp" - echo -e "> File transfer\tINBOUND\t${fileport}\ttcp" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep ts3server" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Voice\tINBOUND\t${port}\tudp" + echo -e "> ServerQuery\tINBOUND\t${queryport}\ttcp" + echo -e "> File transfer\tINBOUND\t${fileport}\ttcp" + } | column -s $'\t' -t } fn_details_teeworlds(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep teeworlds_srv" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\ttcp" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep teeworlds_srv" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\ttcp" + } | column -s $'\t' -t } -fn_details_terraria(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the command-line" -echo -e "parameters in ${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep terraia" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\ttcp" - echo -e "> Query\tINBOUND\t${queryport}\ttcp" - echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" -} | column -s $'\t' -t - -fn_details_statusbottom + fn_details_terraria(){ + echo -e "netstat -atunp | grep terraia" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\ttcp" + echo -e "> Query\tINBOUND\t${queryport}\ttcp" + echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" + } | column -s $'\t' -t } fn_details_sdtd(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep 7DaysToDie" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" - echo -e "> Telnet\tINBOUND\t${telnetport}\ttcp" -} | column -s $'\t' -t -echo -e "" -echo -e "\e[92m${servername} WebAdmin\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mWebAdmin enabled:\t\e[0m${webadminenabled}" - echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}" - echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" -} | column -s $'\t' -t -echo -e "" -echo -e "\e[92m${servername} Telnet\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mTelnet enabled:\t\e[0m${telnetenabled}" - echo -e "\e[34mTelnet address:\t\e[0m${ip} ${telnetport}" - echo -e "\e[34mTelnet password:\t\e[0m${telnetpass}" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep 7DaysToDie" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" + echo -e "> Telnet\tINBOUND\t${telnetport}\ttcp" + } | column -s $'\t' -t + echo -e "" + echo -e "\e[92m${servername} WebAdmin\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + echo -e "\e[34mWebAdmin enabled:\t\e[0m${webadminenabled}" + echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}" + echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" + } | column -s $'\t' -t + echo -e "" + echo -e "\e[92m${servername} Telnet\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + echo -e "\e[34mTelnet enabled:\t\e[0m${telnetenabled}" + echo -e "\e[34mTelnet address:\t\e[0m${ip} ${telnetport}" + echo -e "\e[34mTelnet password:\t\e[0m${telnetpass}" + } | column -s $'\t' -t } fn_details_hurtworld(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "hwserver script" -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep Hurtworld" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - -} | column -s $'\t' -t -echo -e "" - -fn_details_statusbottom + echo -e "netstat -atunp | grep Hurtworld" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + } | column -s $'\t' -t } fn_details_rust(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "rustserver script" -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep Rust" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" - echo -e "> RCON\tINBOUND\t${rconport}\ttcp" - -} | column -s $'\t' -t -echo -e "" - -fn_details_statusbottom + echo -e "netstat -atunp | grep Rust" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" + echo -e "> RCON\tINBOUND\t${rconport}\ttcp" + } | column -s $'\t' -t } fn_details_unreal(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep ucc-bin" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - if [ "${engine}" == "unreal" ]; then - echo -e "< UdpLink Port (random)\tOUTBOUND\t${udplinkport}+\tudp" - fi - if [ "${engine}" != "unreal" ] && [ "${appid}" != "223250" ]; then - echo -e "> GameSpy query\tINBOUND\t${gsqueryport}\tudp\tOldQueryPortNumber=${gsqueryport}" - fi - if [ "${appid}" == "215360" ]; then - echo -e "< Master server\tOUTBOUND\t28852\ttcp/udp" - else - echo -e "< Master server\tOUTBOUND\t28900/28902\ttcp/udp" - fi - if [ "${appid}" ]; then - if [ "${appid}" == "223250" ]; then - echo -e "< Steam\tOUTBOUND\t20610\tudp" + echo -e "netstat -atunp | grep ucc-bin" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" + echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + if [ "${engine}" == "unreal" ]; then + echo -e "< UdpLink Port (random)\tOUTBOUND\t${udplinkport}+\tudp" + fi + if [ "${engine}" != "unreal" ] && [ "${appid}" != "223250" ]; then + echo -e "> GameSpy query\tINBOUND\t${gsqueryport}\tudp\tOldQueryPortNumber=${gsqueryport}" + fi + if [ "${appid}" == "215360" ]; then + echo -e "< Master server\tOUTBOUND\t28852\ttcp/udp" else - echo -e "< Steam\tOUTBOUND\t20660\tudp" + echo -e "< Master server\tOUTBOUND\t28900/28902\ttcp/udp" fi - fi - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}" -} | column -s $'\t' -t -echo -e "" -echo -e "\e[92m${servername} WebAdmin\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -{ - echo -e "\e[34mWebAdmin enabled:\t\e[0m${webadminenabled}" - echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}" - echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}" - echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" -} | column -s $'\t' -t - -fn_details_statusbottom + if [ "${appid}" ]; then + if [ "${appid}" == "223250" ]; then + echo -e "< Steam\tOUTBOUND\t20610\tudp" + else + echo -e "< Steam\tOUTBOUND\t20660\tudp" + fi + fi + echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}" + } | column -s $'\t' -t + echo -e "" + echo -e "\e[92m${servername} WebAdmin\e[0m" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + echo -e "\e[34mWebAdmin enabled:\t\e[0m${webadminenabled}" + echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}" + echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}" + echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}" + } | column -s $'\t' -t } fn_details_ark(){ -echo -e "" -echo -e "\e[92mPorts\e[0m" -printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = -echo -e "Change ports by editing the parameters in" -echo -e "${servercfgfullpath}." -echo -e "" -echo -e "Useful port diagnostic command:" -echo -e "netstat -atunp | grep ShooterGame" -echo -e "" -{ - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" - echo -e "> Query\tINBOUND\t${queryport}\tudp" -} | column -s $'\t' -t - -fn_details_statusbottom + echo -e "netstat -atunp | grep ShooterGame" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" + echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + } | column -s $'\t' -t } @@ -674,6 +554,7 @@ check.sh info_config.sh info_distro.sh info_glibc.sh +info_parms.sh fn_details_os fn_details_performance fn_details_disk @@ -685,12 +566,13 @@ if [ "${gamename}" != "Teamspeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engi fn_parms fn_details_commandlineparms fi +fn_details_ports # Display details depending on game or engine. if [ "${engine}" == "avalanche" ]; then fn_details_avalanche elif [ "${engine}" == "dontstarve" ]; then - fn_details_dontstarve + fn_details_dontstarve elif [ "${engine}" == "projectzomboid" ]; then fn_details_projectzomboid elif [ "${engine}" == "idtech3" ]; then @@ -724,3 +606,5 @@ elif [ "${gamename}" == "Rust" ]; then else fn_print_error_nl "Unable to detect server engine." fi + +fn_details_statusbottom \ No newline at end of file From 17dbb340620fae9c989dae79a3e8d58c9ddcaa00 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 17:43:28 +0100 Subject: [PATCH 540/643] minor bug fix --- lgsm/functions/command_details.sh | 1 - lgsm/functions/info_parms.sh | 4 ---- 2 files changed, 5 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 24abefece..284d6fc6e 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -315,7 +315,6 @@ fn_details_avalanche(){ echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" } | column -s $'\t' -t - } fn_details_dontstarve(){ diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index d8a6ec26c..ebb8ef764 100644 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -32,10 +32,6 @@ fn_info_config_realvirtuality(){ port=${rconport:-"0"} } -fn_info_config_seriousengine35(){ - -} - fn_info_config_source(){ defaultmap=${defaultmap:-"NOT SET"} maxplayers=${maxplayers:-"0"} From c057c9bf483c8b294ecd09cfef1bc6944a34895f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 17:46:04 +0100 Subject: [PATCH 541/643] removed test code --- lgsm/functions/command_details.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 284d6fc6e..7bce97ac0 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -189,7 +189,6 @@ fn_details_script(){ echo -e "\e[34mUser:\t\e[0m$(whoami)" # GLIBC required - glibcrequired="UNKNOWN" if [ -n "${glibcrequired}" ]; then if [ "${glibcrequired}" == "UNKNOWN" ]; then echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}" From ea34b9a5cd35ef968871ed3be037dcf22f2b41f6 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 17:49:20 +0100 Subject: [PATCH 542/643] Corrected port name --- QuakeLive/qlserver | 2 +- lgsm/functions/info_parms.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index f4e19c1e6..835e1ed0f 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -36,7 +36,7 @@ updateonstart="off" # Install/Config Guide : https://steamcommunity.com/sharedfiles/filedetails/?id=542966946 # Console Commands : http://www.regurge.at/ql/ fn_parms(){ - parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${port} +set fs_homepath ${filesdir}/${gameport} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rconpassword} +set zmq_stats_enable 1 +set zmq_stats_password ${statspassword} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg}" + parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${port} +set fs_homepath ${filesdir}/${port} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rconpassword} +set zmq_stats_enable 1 +set zmq_stats_password ${statspassword} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg}" } #### Advanced Variables #### diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index ebb8ef764..8c1b476e7 100644 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -18,7 +18,7 @@ zero="\e[0;31m0\e[0m" fn_info_config_idtech3(){ # Not Set - gameport=${gameport:-"NOT SET"} + port=${port:-"NOT SET"} rconport=${rconport:-"0"} rconpassword=${rconpassword:-"NOT SET"} statsport=${statsport:-"0"} @@ -146,7 +146,7 @@ elif [ "${engine}" == "dontstarve" ]; then ## Project Zomboid elif [ "${engine}" == "projectzomboid" ]; then fn_info_config_projectzomboid -# Quake Love +# Quake Live elif [ "${engine}" == "idtech3" ]; then fn_info_config_idtech3 # ARMA 3 From 65bc10074c4c3eb90e4724a7da59d2549e510b38 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 18:17:34 +0100 Subject: [PATCH 543/643] Changed http to https on LGSM links --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- BlackMesa/bmdmserver | 4 ++-- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 4 ++-- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 4 ++-- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 4 ++-- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- QuakeLive/qlserver | 2 +- README.md | 6 +++--- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/cfg/lgsm-default.cfg | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- StarBound/sbserver | 2 +- SvenCoop/svencoopserver | 2 +- TeamFortress2/tf2server | 4 ++-- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament99/ut99server | 2 +- functions/command_update_functions.sh | 2 +- functions/core_functions.sh | 2 +- functions/core_getopt.sh | 2 +- functions/fn_functions | 2 +- functions/fn_getopt | 2 +- functions/fn_update_functions | 2 +- lgsm/functions/check.sh | 2 +- lgsm/functions/check_config.sh | 2 +- lgsm/functions/check_deps.sh | 2 +- lgsm/functions/check_glibc.sh | 2 +- lgsm/functions/check_ip.sh | 4 ++-- lgsm/functions/check_logs.sh | 2 +- lgsm/functions/check_permissions.sh | 2 +- lgsm/functions/check_root.sh | 2 +- lgsm/functions/check_status.sh | 2 +- lgsm/functions/check_steamcmd.sh | 2 +- lgsm/functions/check_system_dir.sh | 2 +- lgsm/functions/check_tmux.sh | 4 ++-- lgsm/functions/command_backup.sh | 2 +- lgsm/functions/command_console.sh | 2 +- lgsm/functions/command_debug.sh | 2 +- lgsm/functions/command_details.sh | 2 +- lgsm/functions/command_dev_debug.sh | 2 +- lgsm/functions/command_dev_detect_deps.sh | 2 +- lgsm/functions/command_email_test.sh | 2 +- lgsm/functions/command_fastdl.sh | 2 +- lgsm/functions/command_install.sh | 2 +- lgsm/functions/command_monitor.sh | 2 +- lgsm/functions/command_start.sh | 16 ++++++++-------- lgsm/functions/command_stop.sh | 2 +- lgsm/functions/command_ts3_server_pass.sh | 2 +- lgsm/functions/command_update_functions.sh | 2 +- lgsm/functions/command_validate.sh | 2 +- lgsm/functions/compress_unreal2_maps.sh | 2 +- lgsm/functions/compress_ut99_maps.sh | 2 +- lgsm/functions/core_dl.sh | 2 +- lgsm/functions/core_functions.sh | 2 +- lgsm/functions/core_getopt.sh | 16 ++++++++-------- lgsm/functions/core_messages.sh | 2 +- lgsm/functions/email.sh | 2 +- lgsm/functions/fix.sh | 2 +- lgsm/functions/fix_arma3.sh | 2 +- lgsm/functions/fix_csgo.sh | 2 +- lgsm/functions/fix_dst.sh | 2 +- lgsm/functions/fix_glibc.sh | 2 +- lgsm/functions/fix_ins.sh | 2 +- lgsm/functions/fix_kf.sh | 2 +- lgsm/functions/fix_ro.sh | 2 +- lgsm/functions/fix_steamcmd.sh | 2 +- lgsm/functions/fix_ut2k4.sh | 2 +- lgsm/functions/fix_ut99.sh | 2 +- lgsm/functions/fn_functions | 2 +- lgsm/functions/fn_getopt | 2 +- lgsm/functions/fn_update_functions | 2 +- lgsm/functions/gsquery.py | 2 +- lgsm/functions/info_config.sh | 2 +- lgsm/functions/info_distro.sh | 2 +- lgsm/functions/info_glibc.sh | 2 +- lgsm/functions/info_parms.sh | 2 +- lgsm/functions/install_complete.sh | 4 ++-- lgsm/functions/install_config.sh | 2 +- lgsm/functions/install_gslt.sh | 6 +++--- lgsm/functions/install_gsquery.sh | 4 ++-- lgsm/functions/install_header.sh | 4 ++-- lgsm/functions/install_logs.sh | 2 +- lgsm/functions/install_retry.sh | 2 +- lgsm/functions/install_server_dir.sh | 2 +- lgsm/functions/install_server_files.sh | 6 +++--- lgsm/functions/install_steamcmd.sh | 2 +- lgsm/functions/install_ts3.sh | 2 +- lgsm/functions/install_ts3db.sh | 2 +- lgsm/functions/install_ut2k4_key.sh | 2 +- lgsm/functions/logs.sh | 2 +- lgsm/functions/monitor_gsquery.sh | 2 +- lgsm/functions/update_check.sh | 2 +- lgsm/functions/update_dl.sh | 2 +- tests/tests_jc2server.sh | 4 ++-- tests/tests_ts3server.sh | 4 ++-- 129 files changed, 161 insertions(+), 161 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index feb5ed918..116eb9ce6 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -2,7 +2,7 @@ # 7 Days To Die # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 0e6fd3f96..90d262694 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -2,7 +2,7 @@ # ARK: Survivial Evolved # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Arma3/arma3server b/Arma3/arma3server index 379ee8066..7215de44d 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Contributor: Scarsz -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index cf8efb1a5..6d8ffbc2e 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -2,7 +2,7 @@ # Black Mesa: Deathmatch # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" @@ -33,7 +33,7 @@ updateonstart="off" # Optional: Game Server Login Token # GSLT can be used for running a public server. -# More info: http://gameservermanagers.com/gslt +# More info: https://gameservermanagers.com/gslt gslt="" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 879c5d765..87c48e89c 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -2,7 +2,7 @@ # Blade Symphony # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 321c27d49..2afc3fe32 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -2,7 +2,7 @@ # BrainBread 2 # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" @@ -33,7 +33,7 @@ updateonstart="off" # Optional: Game Server Login Token # GSLT can be used for running a public server. -# More info: http://gameservermanagers.com/gslt +# More info: https://gameservermanagers.com/gslt gslt="" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 55632e467..7b4b0dde6 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -2,7 +2,7 @@ # Codename CURE # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 80c9ea796..55b9d4b35 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -2,7 +2,7 @@ # Counter Strike # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index cabcdda5a..9f0df0574 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -2,7 +2,7 @@ # Counter Strike: Condition Zero # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index d2ba2c507..3e1b51874 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -2,7 +2,7 @@ # Counter Strike: Global Offensive # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" @@ -44,7 +44,7 @@ updateonstart="off" # Required: Game Server Login Token # GSLT is required for running a public server. -# More info: http://gameservermanagers.com/gslt +# More info: https://gameservermanagers.com/gslt gslt="" # Optional: Workshop Parameters diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 40dacf097..7ab14251b 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -2,7 +2,7 @@ # Counter Strike: Source # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 6fc30e14c..20444a2de 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -2,7 +2,7 @@ # Day of Defeat # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 025937d76..8a13ced73 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -2,7 +2,7 @@ # Day of Defeat: Source # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 6f18aac51..49e204d51 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -2,7 +2,7 @@ # Deathmatch Classic # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index e7a754670..eaa7b4cf7 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -2,7 +2,7 @@ # Dont Starve Together # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index cdc3ca7c9..24f2dafdc 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -2,7 +2,7 @@ # Double Action: Boogaloo # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index d0a9c7372..ff1a02a24 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -2,7 +2,7 @@ # Fistful Of Frags # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index bc4fca209..212072989 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -2,7 +2,7 @@ # Garry's Mod # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" @@ -44,7 +44,7 @@ customparms="+r_hunkalloclightmaps 0" # Optional: Game Server Login Token # GSLT can be used for running a public server. -# More info: http://gameservermanagers.com/gslt +# More info: https://gameservermanagers.com/gslt gslt="" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 7649b6ec0..cbc710bc7 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -2,7 +2,7 @@ # GoldenEye: Source # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 3b45b537d..b67986749 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -2,7 +2,7 @@ # Half Life 2: Deathmatch # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index bbb418522..55f5fd749 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -2,7 +2,7 @@ # Half Life: Deathmatch # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 83a9684b4..9db71678c 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -2,7 +2,7 @@ # Half-Life Deathmatch: Source # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index b828f53d7..47be057d8 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs, # Contributor: UltimateByte -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Insurgency/insserver b/Insurgency/insserver index 9afc9c821..4803e65dd 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -2,7 +2,7 @@ # Insurgency # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/JustCause2/jc2server b/JustCause2/jc2server index bd75e35fb..102370f0f 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -2,7 +2,7 @@ # Just Cause 2 # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index ae9f31854..9ce398a66 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -2,7 +2,7 @@ # Killing Floor # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 7ca5641a3..a02794d06 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Contributor: Summit Singh Thakur -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 31a897818..20add85dd 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -2,7 +2,7 @@ # Left 4 Dead 2 # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 53b0064d0..e7302f9be 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -2,7 +2,7 @@ # Mumble # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 9d1eada32..f0f9df415 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -2,7 +2,7 @@ # NS2: Combat # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 206a652f8..9c6906d6b 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -2,7 +2,7 @@ # Natural Selection 2 # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index d0f14383a..c8de59f28 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -2,7 +2,7 @@ # No More Room in Hell # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 828ef5e50..5f00c4e1c 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -2,7 +2,7 @@ # Half-Life: Opposing Force # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 635a8eedd..42ab9aac3 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -2,7 +2,7 @@ # No More Room in Hell # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 842318759..7ab280674 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Contributions: Bryce Van Dyk (SingingTree) -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 835e1ed0f..c65da408a 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -2,7 +2,7 @@ # Quake Live # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/README.md b/README.md index 6b7056b55..c4c61df3a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ <h1>Linux Game Server Managers_</h1> -<a href="http://gameservermanagers.com"><img src="https://github.com/dgibbs64/linuxgsm/blob/master/images/logo/lgsm-full-light.png" alt="linux Game Server Managers" width="600" /></a> +<a href="https://gameservermanagers.com"><img src="https://github.com/dgibbs64/linuxgsm/blob/master/images/logo/lgsm-full-light.png" alt="linux Game Server Managers" width="600" /></a> [](https://travis-ci.org/dgibbs64/linuxgsm) [](http://waffle.io/dgibbs64/linuxgsm) @@ -38,11 +38,11 @@ All FAQ can be found here. <h2>Donate</h2> If you want to donate to the project you can via PayPal, Flattr or Gratipay. I have had a may kind people show their support by sending me a donation. Any donations you send help cover my server costs and buy me a drink. Cheers! <ul> -<li><a href="http://gameservermanagers.com/#donate">Donate</a></li> +<li><a href="https://gameservermanagers.com/#donate">Donate</a></li> </ul> <h2>Useful Links</h2> <ul> - <li><a href="http://gameservermanagers.com">Homepage</li> + <li><a href="https://gameservermanagers.com">Homepage</li> <li><a href="https://github.com/dgibbs64/linuxgsm/wiki">Wiki</li> <li><a href="https://github.com/dgibbs64/linuxgsm">GitHub Code</li> <li><a href="https://github.com/dgibbs64/linuxgsm/issues">GitHub Issues</li> diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 7aa33a3d6..84d00b6f8 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -2,7 +2,7 @@ # Red Orchestra: Ostfront 41-45 # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 605b2018b..067065811 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -2,7 +2,7 @@ # Ricochet # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Rust/cfg/lgsm-default.cfg b/Rust/cfg/lgsm-default.cfg index 91d7a32d9..6d5ed99f8 100644 --- a/Rust/cfg/lgsm-default.cfg +++ b/Rust/cfg/lgsm-default.cfg @@ -14,7 +14,7 @@ server.description "LGSM Server\nRust support : UltimateByte" server.headerimage "https://github.com/dgibbs64/linuxgsm/raw/master/images/logo/lgsm-full-light.png" # The URL to your servers website. -server.url "http://gameservermanagers.com/" +server.url "https://gameservermanagers.com/" #################################### # Optional Settings You Can Change # diff --git a/Rust/rustserver b/Rust/rustserver index ec3a4ee9c..b3a972c1d 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Contributor: UltimateByte (LGSM adaptation), Wulf (Information) -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 44e48a0a7..60bcc0230 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -2,7 +2,7 @@ # Serious Sam 3: BFE # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/StarBound/sbserver b/StarBound/sbserver index 84525d4a4..881d6c5fc 100644 --- a/StarBound/sbserver +++ b/StarBound/sbserver @@ -2,7 +2,7 @@ # Starbound # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/SvenCoop/svencoopserver b/SvenCoop/svencoopserver index d5cf4dff9..9d2ceb2f9 100644 --- a/SvenCoop/svencoopserver +++ b/SvenCoop/svencoopserver @@ -2,7 +2,7 @@ # Sven Co-op # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index e54f8668a..671942f71 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -2,7 +2,7 @@ # Team Fortress 2 # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" @@ -33,7 +33,7 @@ updateonstart="off" # Optional: Game Server Login Token # GSLT can be used for running a public server. -# More info: http://gameservermanagers.com/gslt +# More info: https://gameservermanagers.com/gslt gslt="" # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 3d1e72e40..fbcbe3227 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -2,7 +2,7 @@ # Team Fortress Classic # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 11d91a529..835113f78 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -2,7 +2,7 @@ # Teamspeak 3 # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Teeworlds/twserver b/Teeworlds/twserver index e04f47816..19a766260 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Contributor: Bryce Van Dyk (SingingTree) -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 6734f7413..7e1b35db2 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Contributor: Bryce Van Dyk (SingingTree) -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 0dfe460d3..f0d1efc29 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -2,7 +2,7 @@ # Unreal Tournament 2004 # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 94aa01386..c7981d0cd 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -2,7 +2,7 @@ # Unreal Tournament 99 # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" diff --git a/functions/command_update_functions.sh b/functions/command_update_functions.sh index 5e9671594..65867df9a 100644 --- a/functions/command_update_functions.sh +++ b/functions/command_update_functions.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_update_functions.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="270216" # Description: Deletes the functions dir to allow re-downloading of functions from GitHub. diff --git a/functions/core_functions.sh b/functions/core_functions.sh index d2e389f56..49eb5e017 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM core_functions.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="180316" # Description: REDIRECT FUNCTION to new location for core_functions.sh diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index b3e0b4c33..641dce7f1 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM core_getopt.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="180316" # Description: REDIRECT FUNCTION to new location for core_getopt.sh diff --git a/functions/fn_functions b/functions/fn_functions index 0acb04b17..a3ddfc373 100644 --- a/functions/fn_functions +++ b/functions/fn_functions @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fn_functions function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="180316" # Description: REDIRECT FUNCTION to new core_functions.sh diff --git a/functions/fn_getopt b/functions/fn_getopt index 3323d7f75..d84434ce9 100644 --- a/functions/fn_getopt +++ b/functions/fn_getopt @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fn_getopt.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="180316" # Description: REDIRECT FUNCTION to new core_getopt.sh diff --git a/functions/fn_update_functions b/functions/fn_update_functions index ee19979c5..53f0988de 100644 --- a/functions/fn_update_functions +++ b/functions/fn_update_functions @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fn_update_functions function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: REDIRECT FUNCTION to new command_update_functions.sh diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 93d1f119a..9fb6058e8 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fn_check function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060516" # Description: Overall function for managing checks. diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh index c329cca95..8cc41a8a9 100644 --- a/lgsm/functions/check_config.sh +++ b/lgsm/functions/check_config.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_config.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060116" # Description: If server config missing warn user. diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 5e523a521..8f9de49f8 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_deps.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="050516" # Description: Checks that the requires dependencies are installed for LGSM. diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index 3461c3dee..c5dc94142 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_glibc.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="020116" # Description: Checks if server has correct glibc or has a fix available. diff --git a/lgsm/functions/check_ip.sh b/lgsm/functions/check_ip.sh index 2a5ae5794..da6b35665 100644 --- a/lgsm/functions/check_ip.sh +++ b/lgsm/functions/check_ip.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_ip.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Automatically identifies the server interface IP. @@ -23,7 +23,7 @@ if [ "${gamename}" != "Teamspeak 3" ]; then echo -en "Set ip=\"0.0.0.0\" to one of the following:\n" echo -en "${getip}\n" echo -en "" - echo -en "http://gameservermanagers.com/network-interfaces\n" + echo -en "https://gameservermanagers.com/network-interfaces\n" echo -en "" exit 1 else diff --git a/lgsm/functions/check_logs.sh b/lgsm/functions/check_logs.sh index 9b4f41324..4d604cdd2 100644 --- a/lgsm/functions/check_logs.sh +++ b/lgsm/functions/check_logs.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_logs.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Checks that log files exist on server start diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 189708e50..4360820f7 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -2,7 +2,7 @@ # LGSM check_permissions.sh # Author: Daniel Gibbs # Contributor: UltimateByte -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="150316" # Description: Checks script, files and folders ownership and permissions. diff --git a/lgsm/functions/check_root.sh b/lgsm/functions/check_root.sh index 01c89b629..e464088f3 100644 --- a/lgsm/functions/check_root.sh +++ b/lgsm/functions/check_root.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_root.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060316" if [ $(whoami) = "root" ]; then diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh index 768aded0f..3d8a590fa 100644 --- a/lgsm/functions/check_status.sh +++ b/lgsm/functions/check_status.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_status function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060516" # Description: Checks the proccess status of the server. Either online or offline. diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 81e0f31c4..28592b9b0 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_steamcmd.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="160316" # Description: Checks SteamCMD is installed and correct. diff --git a/lgsm/functions/check_system_dir.sh b/lgsm/functions/check_system_dir.sh index d5d57e75b..22933fa79 100644 --- a/lgsm/functions/check_system_dir.sh +++ b/lgsm/functions/check_system_dir.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_system_dir.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" if [ ! -d "${systemdir}" ]; then diff --git a/lgsm/functions/check_tmux.sh b/lgsm/functions/check_tmux.sh index 49f43dd21..d61604a6f 100644 --- a/lgsm/functions/check_tmux.sh +++ b/lgsm/functions/check_tmux.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM check_tmux.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Checks if tmux is installed as too many users do not RTFM or know how to use Google. @@ -15,6 +15,6 @@ else echo " * Tmux is required to run this server." # Suitable passive agressive message echo " * Please see the the following link." - echo " * http://gameservermanagers.com/tmux-not-found" + echo " * https://gameservermanagers.com/tmux-not-found" exit 127 fi diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 563b80bf3..4767920de 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_backup.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060516" # Description: Creates a .tar.gz file in the backup directory. diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index 3a67be820..6e8f48831 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_console.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060516" # Description: Gives access to the server tmux console. diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index baa93aec0..1fa0d88e5 100644 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_debug.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Runs the server without tmux. Runs direct from the terminal. diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 7bce97ac0..157f79cd1 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_details.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="080516" # Description: Displays server infomation. diff --git a/lgsm/functions/command_dev_debug.sh b/lgsm/functions/command_dev_debug.sh index 46bae900d..2c945bbea 100644 --- a/lgsm/functions/command_dev_debug.sh +++ b/lgsm/functions/command_dev_debug.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM dev_debug.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="281215" # Description: Dev only: enables debuging log to be saved to dev-debug.log. diff --git a/lgsm/functions/command_dev_detect_deps.sh b/lgsm/functions/command_dev_detect_deps.sh index 06bf99599..fd2d54bc1 100644 --- a/lgsm/functions/command_dev_detect_deps.sh +++ b/lgsm/functions/command_dev_detect_deps.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fn_dep_detect function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Detects dependencies the server binary requires. diff --git a/lgsm/functions/command_email_test.sh b/lgsm/functions/command_email_test.sh index 26a0b6a42..9ef90bae5 100644 --- a/lgsm/functions/command_email_test.sh +++ b/lgsm/functions/command_email_test.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_email_test.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Sends a test email notification. diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index a509a14ae..f502f1fdb 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -2,7 +2,7 @@ # LGSM command_fastdl function # Author: Daniel Gibbs # Contributor: UltimateByte -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="210216" # Description: Creates a FastDL folder diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 877896380..e63742133 100644 --- a/lgsm/functions/command_install.sh +++ b/lgsm/functions/command_install.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fn_install function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="260216" # Description: Overall function for the installer. diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 3a7d9f468..f3c270682 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_monitor.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060516" # Description: Monitors server by checking for running proccesses diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 3637f5ef2..b3cf88255 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_start.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060516" # Description: Starts the server. @@ -90,13 +90,13 @@ fn_start_tmux(){ # tmux pipe-pane not supported in tmux versions < 1.6 if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}" - echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" + echo "https://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" echo "Currently installed: $(tmux -V)" >> "${consolelog}" # Console logging disabled: Bug in tmux 1.8 breaks logging elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; then echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}" - echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" + echo "https://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" echo "Currently installed: $(tmux -V)" >> "${consolelog}" # Console logging enable or not set @@ -130,7 +130,7 @@ fn_start_tmux(){ echo "=================================" cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" | tee -a "${scriptlog}" - # Detected error http://gameservermanagers.com/issues + # Detected error https://gameservermanagers.com/issues if [ $(grep -c "Operation not permitted" "${scriptlogdir}/.${servicename}-tmux-error.tmp") ]; then echo "" echo "Fix" @@ -147,13 +147,13 @@ fn_start_tmux(){ echo "" echo " usermod -G tty $(whoami)" echo "" - echo "http://gameservermanagers.com/tmux-op-perm" - fn_scriptlog "http://gameservermanagers.com/tmux-op-perm" + echo "https://gameservermanagers.com/tmux-op-perm" + fn_scriptlog "https://gameservermanagers.com/tmux-op-perm" else echo "No known fix currently. Please log an issue." fn_scriptlog "No known fix currently. Please log an issue." - echo "http://gameservermanagers.com/issues" - fn_scriptlog "http://gameservermanagers.com/issues" + echo "https://gameservermanagers.com/issues" + fn_scriptlog "https://gameservermanagers.com/issues" fi fi fi diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index ba8400879..935347cca 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_stop.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Stops the server. diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index a0ca6d66d..61f960bce 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -2,7 +2,7 @@ # LGSM command_serveradmin_password.sh function # Author: Daniel Gibbs # Contributor : UltimateByte -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="080116" # Description: Changes TS3 serveradmin password diff --git a/lgsm/functions/command_update_functions.sh b/lgsm/functions/command_update_functions.sh index 5e9671594..65867df9a 100644 --- a/lgsm/functions/command_update_functions.sh +++ b/lgsm/functions/command_update_functions.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_update_functions.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="270216" # Description: Deletes the functions dir to allow re-downloading of functions from GitHub. diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 4445c549b..6e48d7972 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM command_validate.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060516" # Description: Runs a server validation. diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh index 627df96a0..a7157d9ed 100644 --- a/lgsm/functions/compress_unreal2_maps.sh +++ b/lgsm/functions/compress_unreal2_maps.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM compress_unreal2_maps.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh index c65ca79bd..948fb9661 100644 --- a/lgsm/functions/compress_ut99_maps.sh +++ b/lgsm/functions/compress_ut99_maps.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM compress_ut99_maps.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="301215" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 4db131df2..8ee6e357c 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM core_dl.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="050216" # Description: Deals with all downloads for LGSM. diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 266a831a9..e80998a44 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM core_functions.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060516" # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index e035f0c3c..3e031486d 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM core_getopt.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="070116" # Description: getopt arguments. @@ -46,7 +46,7 @@ case "$getopt" in *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" + echo "https://gameservermanagers.com/${selfname}" echo -e "" echo -e "\e[93mCommands\e[0m" { @@ -103,7 +103,7 @@ case "$getopt" in *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" + echo "https://gameservermanagers.com/${selfname}" echo -e "" echo -e "\e[93mCommands\e[0m" { @@ -151,7 +151,7 @@ case "$getopt" in *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" + echo "https://gameservermanagers.com/${selfname}" echo -e "" echo -e "\e[93mCommands\e[0m" { @@ -211,7 +211,7 @@ case "$getopt" in *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" + echo "https://gameservermanagers.com/${selfname}" echo -e "" echo -e "\e[93mCommands\e[0m" { @@ -271,7 +271,7 @@ case "$getopt" in *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" + echo "https://gameservermanagers.com/${selfname}" echo -e "" echo -e "\e[93mCommands\e[0m" { @@ -336,7 +336,7 @@ case "$getopt" in *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" + echo "https://gameservermanagers.com/${selfname}" echo -e "" echo -e "\e[93mCommands\e[0m" { @@ -399,7 +399,7 @@ case "$getopt" in *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "http://gameservermanagers.com/${selfname}" + echo "https://gameservermanagers.com/${selfname}" echo -e "" echo -e "\e[93mCommands\e[0m" { diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 54b245193..8d567fa02 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fn_messages function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="380216" # Description: Defines on-screen messages such as [ OK ] and how script logs look. diff --git a/lgsm/functions/email.sh b/lgsm/functions/email.sh index 11ef7820a..f4851b95b 100644 --- a/lgsm/functions/email.sh +++ b/lgsm/functions/email.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM email.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="240416" # Description: Sends email notification if monitor picks up a failure. diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index af8a29175..bfedeb1b4 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="010316" # Description: Overall function for managing fixes. diff --git a/lgsm/functions/fix_arma3.sh b/lgsm/functions/fix_arma3.sh index ffc607ed6..6c1eb5cd9 100644 --- a/lgsm/functions/fix_arma3.sh +++ b/lgsm/functions/fix_arma3.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_arma3.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="301215" # Fixes: server not always creating steam_appid.txt file. diff --git a/lgsm/functions/fix_csgo.sh b/lgsm/functions/fix_csgo.sh index f968640ce..39f14218d 100644 --- a/lgsm/functions/fix_csgo.sh +++ b/lgsm/functions/fix_csgo.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_csgo.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="010316" # Description: Resolves various issues with csgo. diff --git a/lgsm/functions/fix_dst.sh b/lgsm/functions/fix_dst.sh index 5dadf4b78..c1179ea38 100644 --- a/lgsm/functions/fix_dst.sh +++ b/lgsm/functions/fix_dst.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_dst.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="010316" # Description: Resolves various issues with Dont Starve together. diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 12823c3b0..3ffc52960 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_glibc.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="220416" # Description: Downloads required glibc files and applys teh glibc fix if required diff --git a/lgsm/functions/fix_ins.sh b/lgsm/functions/fix_ins.sh index 210c702ce..abdfd0876 100644 --- a/lgsm/functions/fix_ins.sh +++ b/lgsm/functions/fix_ins.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_ins.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="291215" # Description: Resolves various issues with Insurgency. diff --git a/lgsm/functions/fix_kf.sh b/lgsm/functions/fix_kf.sh index 7e77ca8e6..19aad68b2 100644 --- a/lgsm/functions/fix_kf.sh +++ b/lgsm/functions/fix_kf.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_kf.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" echo "Applying WebAdmin ROOst.css fix." diff --git a/lgsm/functions/fix_ro.sh b/lgsm/functions/fix_ro.sh index 9364d3e01..31044227e 100644 --- a/lgsm/functions/fix_ro.sh +++ b/lgsm/functions/fix_ro.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_ro.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="010316" # Description: Resolves various issues with red orchestra. diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh index 86feb9e2c..a43aa1115 100644 --- a/lgsm/functions/fix_steamcmd.sh +++ b/lgsm/functions/fix_steamcmd.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_steamcmd.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="010316" # Description: fixes various issues related to steamCMD. diff --git a/lgsm/functions/fix_ut2k4.sh b/lgsm/functions/fix_ut2k4.sh index 363aa5d56..e633c0188 100644 --- a/lgsm/functions/fix_ut2k4.sh +++ b/lgsm/functions/fix_ut2k4.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_ut2k4.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="010316" # Description: Resolves various issues with unreal tournament 2004. diff --git a/lgsm/functions/fix_ut99.sh b/lgsm/functions/fix_ut99.sh index f7792fb44..45d6ec777 100644 --- a/lgsm/functions/fix_ut99.sh +++ b/lgsm/functions/fix_ut99.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fix_ut99.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" echo "${servercfgfullpath}" echo "enabling UdpServerUplink." diff --git a/lgsm/functions/fn_functions b/lgsm/functions/fn_functions index f6ea53f55..f9c62aa46 100644 --- a/lgsm/functions/fn_functions +++ b/lgsm/functions/fn_functions @@ -1,7 +1,7 @@ #!/bin/bash # LGSM core_functions.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Redirect to new core_functions.sh diff --git a/lgsm/functions/fn_getopt b/lgsm/functions/fn_getopt index 8b52e1865..5cc3c9e20 100644 --- a/lgsm/functions/fn_getopt +++ b/lgsm/functions/fn_getopt @@ -1,7 +1,7 @@ #!/bin/bash # LGSM core_getopt.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Redirect to new core_getopt.sh diff --git a/lgsm/functions/fn_update_functions b/lgsm/functions/fn_update_functions index 5fbb28975..3f130d3a0 100644 --- a/lgsm/functions/fn_update_functions +++ b/lgsm/functions/fn_update_functions @@ -1,7 +1,7 @@ #!/bin/bash # LGSM fn_update_functions.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="230116" # Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub. diff --git a/lgsm/functions/gsquery.py b/lgsm/functions/gsquery.py index b132038e3..8f7b8208c 100644 --- a/lgsm/functions/gsquery.py +++ b/lgsm/functions/gsquery.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Game Server Query # Author: Anonymous & Daniel Gibbs -# # Website: http://gameservermanagers.com +# # Website: https://gameservermanagers.com # Version: 190216 import optparse diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 8e14f7da8..049161e13 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM info_config.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="010316" # Description: Gets specific details from config files. diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index 7dc40c549..cc101a3df 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM info_distro.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Variables providing useful info on the Operating System such as disk and performace info. diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 46c45d904..055dbbb85 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM info_glibc.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="260216" # Description: stores details on servers Glibc requirements. diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index 8c1b476e7..99c51369c 100644 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM info_parms.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="010316" # Description: Gets specific details server parameters. diff --git a/lgsm/functions/install_complete.sh b/lgsm/functions/install_complete.sh index 5ea9a127b..c04296b64 100644 --- a/lgsm/functions/install_complete.sh +++ b/lgsm/functions/install_complete.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_complete.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" local modulename="Install" @@ -10,7 +10,7 @@ if [ "${gamename}" == "Don't Starve Together" ]; then echo "" echo "An Authentication Token is required to run this server!" echo "Follow the instructions in this link to obtain this key" - echo " http://gameservermanagers.com/dst-auth-token" + echo " https://gameservermanagers.com/dst-auth-token" fi echo "=================================" echo "Install Complete!" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 75ca40618..26993a0b3 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_config.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="220216" local modulename="Install" diff --git a/lgsm/functions/install_gslt.sh b/lgsm/functions/install_gslt.sh index 5bd309f28..1c05921c0 100644 --- a/lgsm/functions/install_gslt.sh +++ b/lgsm/functions/install_gslt.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_gslt.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="270216" # Description: Configures GSLT. @@ -21,9 +21,9 @@ else fi echo "Get more info and a token here:" -echo "http://gameservermanagers.com/gslt" +echo "https://gameservermanagers.com/gslt" fn_scriptlog "Get more info and a token here:" -fn_scriptlog "http://gameservermanagers.com/gslt" +fn_scriptlog "https://gameservermanagers.com/gslt" echo "" if [ -z "${autoinstall}" ]; then echo "Enter token below (Can be blank)." diff --git a/lgsm/functions/install_gsquery.sh b/lgsm/functions/install_gsquery.sh index 1f2f16bdc..a8b3d2ec4 100644 --- a/lgsm/functions/install_gsquery.sh +++ b/lgsm/functions/install_gsquery.sh @@ -1,13 +1,13 @@ #!/bin/bash # LGSM install_gsquery.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="190216" fn_dlgsquery(){ cd "${rootdir}" echo -e "downloading gsquery.py...\c" -wget -N /dev/null "http://gameservermanagers.com/dl/gsquery.py" 2>&1 | grep -F "HTTP" | grep -v "Moved Permanently" | cut -c45- | uniq +wget -N /dev/null "https://gameservermanagers.com/dl/gsquery.py" 2>&1 | grep -F "HTTP" | grep -v "Moved Permanently" | cut -c45- | uniq chmod +x gsquery.py } diff --git a/lgsm/functions/install_header.sh b/lgsm/functions/install_header.sh index da8b7bf6c..13cb7a96e 100644 --- a/lgsm/functions/install_header.sh +++ b/lgsm/functions/install_header.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_header.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="190216" local modulename="Install" @@ -12,5 +12,5 @@ echo "${gamename}" echo "Linux Game Server Manager" echo "by Daniel Gibbs" echo "Contributors: http://goo.gl/qLmitD" -echo "http://gameservermanagers.com" +echo "https://gameservermanagers.com" echo "=================================" diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 65ae75448..4ecfa1639 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_logs.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="270216" local modulename="Install" diff --git a/lgsm/functions/install_retry.sh b/lgsm/functions/install_retry.sh index 7f04ac9ed..fcd837d98 100644 --- a/lgsm/functions/install_retry.sh +++ b/lgsm/functions/install_retry.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_retry.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" local modulename="Install" diff --git a/lgsm/functions/install_server_dir.sh b/lgsm/functions/install_server_dir.sh index ab73ecfd2..4c582bf00 100644 --- a/lgsm/functions/install_server_dir.sh +++ b/lgsm/functions/install_server_dir.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_serverdir.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" local modulename="Install" diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index d6655689b..91cb9ef19 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -1,16 +1,16 @@ #!/bin/bash # LGSM install_server_files.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="270216" local modulename="Install" fn_install_server_files(){ if [ "${gamename}" == "Unreal Tournament 99" ]; then - fileurl="http://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" + fileurl="https://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" elif [ "${gamename}" == "Unreal Tournament 2004" ]; then - fileurl="http://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" + fileurl="https://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" diff --git a/lgsm/functions/install_steamcmd.sh b/lgsm/functions/install_steamcmd.sh index de371bbd8..34bd0bc2d 100644 --- a/lgsm/functions/install_steamcmd.sh +++ b/lgsm/functions/install_steamcmd.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_steamcmd.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" # Description: Downloads SteamCMD on install. diff --git a/lgsm/functions/install_ts3.sh b/lgsm/functions/install_ts3.sh index 42cff6197..f1bdb16d1 100644 --- a/lgsm/functions/install_ts3.sh +++ b/lgsm/functions/install_ts3.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_ts3.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" local modulename="Install" diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh index 61e2db7d4..acfa247d3 100644 --- a/lgsm/functions/install_ts3db.sh +++ b/lgsm/functions/install_ts3db.sh @@ -2,7 +2,7 @@ # LGSM fn_install_ts3_mariadb function # Author: Daniel Gibbs # Contributor: PhilPhonic -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" local modulename="Install" diff --git a/lgsm/functions/install_ut2k4_key.sh b/lgsm/functions/install_ut2k4_key.sh index 9a99c170d..19ae650a1 100644 --- a/lgsm/functions/install_ut2k4_key.sh +++ b/lgsm/functions/install_ut2k4_key.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_ut2k4_key.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="271215" local modulename="Install" diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index 30de59ea7..c4694ff01 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -2,7 +2,7 @@ # LGSM logs.sh function # Author: Daniel Gibbs # Contributor: UltimateByte -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="230216" # Description: Acts as a log rotater, removing old logs. diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 7328ce724..621afe998 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM monitor_gsquery.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="270216" # Description: uses gsquery.py to query the server port. diff --git a/lgsm/functions/update_check.sh b/lgsm/functions/update_check.sh index e09eb54f2..191a07533 100644 --- a/lgsm/functions/update_check.sh +++ b/lgsm/functions/update_check.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM update_check.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="060516" # Description: Checks if a server update is available. diff --git a/lgsm/functions/update_dl.sh b/lgsm/functions/update_dl.sh index f23bd2c64..c41fdea90 100644 --- a/lgsm/functions/update_dl.sh +++ b/lgsm/functions/update_dl.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM update_dl.sh function # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com lgsm_version="020216" # Description: Runs a server update. diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 0fce4904c..d578b22f4 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -2,7 +2,7 @@ # TravisCI Tests # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com version="271215" #### Variables #### @@ -175,7 +175,7 @@ echo "=================================" echo "TravisCI Tests" echo "Linux Game Server Manager" echo "by Daniel Gibbs" -echo "http://gameservermanagers.com" +echo "https://gameservermanagers.com" echo "=================================" echo "" sleep 1 diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index cd7c94f23..93f0fa890 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -2,7 +2,7 @@ # TravisCI Tests # Server Management Script # Author: Daniel Gibbs -# Website: http://gameservermanagers.com +# Website: https://gameservermanagers.com version="071115" #### Variables #### @@ -162,7 +162,7 @@ echo "=================================" echo "TravisCI Tests" echo "Linux Game Server Manager" echo "by Daniel Gibbs" -echo "http://gameservermanagers.com" +echo "https://gameservermanagers.com" echo "=================================" echo "" sleep 1 From 6c47f2b73ce902bc23c92b4f58d9c5bf934302b6 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 20:02:04 +0100 Subject: [PATCH 544/643] changed glicv to glibcversion --- lgsm/functions/check_glibc.sh | 2 +- lgsm/functions/command_details.sh | 2 +- lgsm/functions/email.sh | 2 +- lgsm/functions/fix_glibc.sh | 1 + lgsm/functions/info_distro.sh | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index c5dc94142..24e265b06 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -9,7 +9,7 @@ lgsm_version="020116" info_glibc.sh glibcversion="$(ldd --version | sed -n '1s/.* //p')" -if [ "$(printf '%s\n$glibcrequired\n' $glibcversion | sort -V | head -n 1)" != "${glibcrequired}" ]; then +if [ "$(printf '%s\n${glibcrequired}\n' ${glibcversion} | sort -V | head -n 1)" == "${glibcrequired}" ]; then if [ "${glibcfix}" != "yes" ]; then fn_print_warn_nl "Glibc fix: No Glibc fix available!" echo -en "\n" diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 157f79cd1..1ee810609 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -31,7 +31,7 @@ fn_details_os(){ echo -e "\e[34mKernel:\t\e[0m${kernel}" echo -e "\e[34mHostname:\t\e[0m$HOSTNAME" echo -e "\e[34mtmux:\t\e[0m${tmuxv}" - echo -e "\e[34mGLIBC:\t\e[0m${glibcv}" + echo -e "\e[34mGLIBC:\t\e[0m${glibcversion}" } | column -s $'\t' -t } diff --git a/lgsm/functions/email.sh b/lgsm/functions/email.sh index f4851b95b..b1585a242 100644 --- a/lgsm/functions/email.sh +++ b/lgsm/functions/email.sh @@ -30,7 +30,7 @@ fi echo -e "Kernel: ${kernel}" echo -e "Hostname: $HOSTNAME" echo -e "tmux: ${tmuxv}" - echo -e "GLIBC: ${glibcv}" + echo -e "GLIBC: ${glibcversion}" echo -e "" echo -e "========================================\nPerformance\n========================================" echo -e "Uptime: ${days}d, ${hours}h, ${minutes}m" diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 3ffc52960..f33afa4f9 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -7,6 +7,7 @@ lgsm_version="220416" # Description: Downloads required glibc files and applys teh glibc fix if required info_glibc.sh +info_distro.sh local libstdc_servers_array=( "ARMA 3" "Blade Symphony" "Garry's Mod" "Just Cause 2" ) for libstdc_server in "${libstdc_servers_array[@]}" diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index cc101a3df..cd641b1ff 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -23,7 +23,7 @@ fi # Glibc version number # e.g: 1.17 -glibcv=$(ldd --version |grep ldd|awk '{print $NF}') +glibcversion="$(ldd --version | sed -n '1s/.* //p')" # tmux version # e.g: tmux 1.6 From c206d691fde2475b9327d85cefaba6d394530014 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 20:04:18 +0100 Subject: [PATCH 545/643] added info_distro.sh --- lgsm/functions/check_glibc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index 24e265b06..1bbfbaed4 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -7,8 +7,8 @@ lgsm_version="020116" # Description: Checks if server has correct glibc or has a fix available. info_glibc.sh +info_distro.sh -glibcversion="$(ldd --version | sed -n '1s/.* //p')" if [ "$(printf '%s\n${glibcrequired}\n' ${glibcversion} | sort -V | head -n 1)" == "${glibcrequired}" ]; then if [ "${glibcfix}" != "yes" ]; then fn_print_warn_nl "Glibc fix: No Glibc fix available!" From 6eece549d64b062d3777e7c1bdfb8a01d5f8602e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 20:25:10 +0100 Subject: [PATCH 546/643] glibc checks --- lgsm/functions/check_glibc.sh | 14 +++++++++----- lgsm/functions/fix_glibc.sh | 1 - 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index 1bbfbaed4..a47e735aa 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -9,15 +9,19 @@ lgsm_version="020116" info_glibc.sh info_distro.sh -if [ "$(printf '%s\n${glibcrequired}\n' ${glibcversion} | sort -V | head -n 1)" == "${glibcrequired}" ]; then - if [ "${glibcfix}" != "yes" ]; then +if [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then + if [ "${glibcfix}" == "yes" ]; then + fn_print_info_nl "Glibc fix: Using Glibc fix" + echo " * glibc required: ${glibcrequired}" + echo " * glibc installed: ${glibcversion}" + export LD_LIBRARY_PATH=:"${libdir}" + else fn_print_warn_nl "Glibc fix: No Glibc fix available!" echo -en "\n" - echo " * glibc required: $glibcrequired" - echo " * glibc installed: $glibcversion" + echo " * glibc required: ${glibcrequired}" + echo " * glibc installed: ${glibcversion}" echo -en "\n" fn_print_infomation "The game server will probably not work. A distro upgrade is required!" - sleep 5 fi echo -en "\n" fi \ No newline at end of file diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index f33afa4f9..a70a33cb3 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -25,7 +25,6 @@ do fi done -glibcversion="$(ldd --version | sed 's/.* //;q')" if [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then if [ "${glibcfix}" == "yes" ]; then fn_print_info_nl "Glibc fix: Using Glibc fix" From 0248451a891f9e0fbc0a4e5a6a92721ada67c11f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 20:27:09 +0100 Subject: [PATCH 547/643] removed duplicate code --- lgsm/functions/fix_glibc.sh | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index a70a33cb3..160731afd 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -6,9 +6,6 @@ lgsm_version="220416" # Description: Downloads required glibc files and applys teh glibc fix if required -info_glibc.sh -info_distro.sh - local libstdc_servers_array=( "ARMA 3" "Blade Symphony" "Garry's Mod" "Just Cause 2" ) for libstdc_server in "${libstdc_servers_array[@]}" do @@ -25,19 +22,4 @@ do fi done -if [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then - if [ "${glibcfix}" == "yes" ]; then - fn_print_info_nl "Glibc fix: Using Glibc fix" - echo " * glibc required: ${glibcrequired}" - echo " * glibc installed: ${glibcversion}" - export LD_LIBRARY_PATH=:"${libdir}" - else - fn_print_warn_nl "Glibc fix: No Glibc fix available!" - echo -en "\n" - echo " * glibc required: ${glibcrequired}" - echo " * glibc installed: ${glibcversion}" - echo -en "\n" - fn_print_infomation "The game server will probably not work. A distro upgrade is required!" - fi - echo -en "\n" -fi \ No newline at end of file +check_glibc.sh \ No newline at end of file From 9161b0078d4bbdcf10f20724011863e6fe74e3cc Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 20:34:58 +0100 Subject: [PATCH 548/643] glibcfix shouls run with correct functions --- lgsm/functions/check.sh | 10 +++++++--- lgsm/functions/check_glibc.sh | 13 ++++++++----- lgsm/functions/fix_glibc.sh | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 9fb6058e8..2e90627a7 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -17,9 +17,13 @@ if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname} check_system_dir.sh fi -if [ "${function_selfname}" == "command_install.sh" ]; then - check_glibc.sh -fi +local allowed_commands_array=( command_debug.sh command_start.sh command_stop.sh command_install.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_glibc.sh + fi +done local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh update_check.sh command_validate.sh command_update_functions.sh command_email_test.sh ) for allowed_command in "${allowed_commands_array[@]}" diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index a47e735aa..1a5d943a5 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -10,11 +10,13 @@ info_glibc.sh info_distro.sh if [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then - if [ "${glibcfix}" == "yes" ]; then - fn_print_info_nl "Glibc fix: Using Glibc fix" - echo " * glibc required: ${glibcrequired}" - echo " * glibc installed: ${glibcversion}" - export LD_LIBRARY_PATH=:"${libdir}" + if [ "${glibcfix}" == "yes" ]; then + if [ "${function_selfname}" != "command_install.sh" ]; then + fn_print_info_nl "Glibc fix: Using Glibc fix" + echo " * glibc required: ${glibcrequired}" + echo " * glibc installed: ${glibcversion}" + fix_glibc.sh + fi else fn_print_warn_nl "Glibc fix: No Glibc fix available!" echo -en "\n" @@ -22,6 +24,7 @@ if [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1) echo " * glibc installed: ${glibcversion}" echo -en "\n" fn_print_infomation "The game server will probably not work. A distro upgrade is required!" + sleep 5 fi echo -en "\n" fi \ No newline at end of file diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 160731afd..7fcbccc1f 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -22,4 +22,4 @@ do fi done -check_glibc.sh \ No newline at end of file +export LD_LIBRARY_PATH=:"${libdir}" \ No newline at end of file From 123cd36a598ebae164b89992afbe32d09c0de19c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 20:38:24 +0100 Subject: [PATCH 549/643] removed echo --- lgsm/functions/check_glibc.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index 1a5d943a5..b82ae0e01 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -26,5 +26,4 @@ if [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1) fn_print_infomation "The game server will probably not work. A distro upgrade is required!" sleep 5 fi - echo -en "\n" fi \ No newline at end of file From eebd9bebf5a71e94b27c5c3da0394a40960d5430 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 20:39:13 +0100 Subject: [PATCH 550/643] removed command_stop from glibc check --- lgsm/functions/check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 2e90627a7..3c4855dc0 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -17,7 +17,7 @@ if [ "${function_selfname}" != "command_install.sh" ] && [ "${function_selfname} check_system_dir.sh fi -local allowed_commands_array=( command_debug.sh command_start.sh command_stop.sh command_install.sh ) +local allowed_commands_array=( command_debug.sh command_start.sh command_install.sh ) for allowed_command in "${allowed_commands_array[@]}" do if [ "${allowed_command}" == "${function_selfname}" ]; then From 122c3c4be3a0d2b44cf7117fbc3b754f3de4f516 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 20:43:39 +0100 Subject: [PATCH 551/643] message fix --- lgsm/functions/command_stop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 935347cca..b36ddfd90 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -28,7 +28,7 @@ fn_stop_graceful_source(){ fn_print_dots "Graceful: rcon quit: ${seconds}" done if [ "${pid}" != "0" ]; then - fn_print_fail "Graceful: rcon quit" + fn_print_fail "Graceful: rcon quit: " fn_print_fail_eol_nl fn_scriptlog "Graceful: rcon quit: FAIL" fn_stop_tmux From ae78e5710299f62551e4464fc114157314751053 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 21:01:05 +0100 Subject: [PATCH 552/643] updated glibc detection --- lgsm/functions/command_details.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 1ee810609..8bdf9fb9c 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -192,11 +192,11 @@ fn_details_script(){ if [ -n "${glibcrequired}" ]; then if [ "${glibcrequired}" == "UNKNOWN" ]; then echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}" - elif [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then + elif [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then if [ "${glibcfix}" == "yes" ]; then echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)" else - echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}\e[0m(\e[0;32mGLIBC version too old\e[0m)" + echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mGLIBC version too old\e[0m)" fi else From 1f54fbae123c1b9b579241c0f370cafd4c9dc9c4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 21:06:55 +0100 Subject: [PATCH 553/643] removed space --- lgsm/functions/command_details.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 8bdf9fb9c..eee4532aa 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -198,7 +198,6 @@ fn_details_script(){ else echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mGLIBC version too old\e[0m)" fi - else echo -e "\e[34mGLIBC required:\t\e[0;32m${glibcrequired}\e[0m" fi From ec5157f7a899fed6857d9c72f0c72a1532bffa14 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 21:08:57 +0100 Subject: [PATCH 554/643] changed to red --- lgsm/functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index eee4532aa..a291c9d6b 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -196,7 +196,7 @@ fn_details_script(){ if [ "${glibcfix}" == "yes" ]; then echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)" else - echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mGLIBC version too old\e[0m)" + echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;31mGLIBC version too old\e[0m)" fi else echo -e "\e[34mGLIBC required:\t\e[0;32m${glibcrequired}\e[0m" From 96c86e8b6dc3525a836c4e324a6e64eb1db1cad8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 22:21:08 +0100 Subject: [PATCH 555/643] corrected [y/N] --- lgsm/functions/command_backup.sh | 4 ++-- lgsm/functions/command_console.sh | 2 +- lgsm/functions/command_ts3_server_pass.sh | 2 +- lgsm/functions/install_server_dir.sh | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 4767920de..748c986b2 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -16,7 +16,7 @@ fn_print_info_nl "A total of $(du -sh "${rootdir}" --exclude="${backupdir}" | aw echo "${backupdir}/${backupname}.tar.gz" echo "" while true; do - read -p "Continue? [y/N]" yn + read -p "Continue? [Y/N]" yn case $yn in [Yy]* ) break;; [Nn]* ) echo Exiting; return;; @@ -30,7 +30,7 @@ if [ "${status}" != "0" ]; then fn_print_warning_nl "${servicename} is currently running." sleep 1 while true; do - read -p "Stop ${servicename} while running the backup? [y/N]" yn + read -p "Stop ${servicename} while running the backup? [Y/N]" yn case $yn in [Yy]* ) command_stop.sh; break;; [Nn]* ) break;; diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index 6e8f48831..615e289ea 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -18,7 +18,7 @@ echo "Press \"CTRL+b d\" to exit console." fn_print_warning_nl "Do NOT press CTRL+c to exit." echo "" while true; do - read -e -i "y" -p "Continue? [y/N]" yn + read -e -i "y" -p "Continue? [Y/n]" yn case $yn in [Yy]* ) break;; [Nn]* ) echo Exiting; return;; diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index 61f960bce..ad725df82 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -21,7 +21,7 @@ fn_print_infomation_nl "You are about to change the ${gamename} ServerAdmin pass fn_print_warning_nl "${gamename} will restart during this process." echo "" while true; do - read -e -i "y" -p "Continue? [y/N]" yn + read -e -i "y" -p "Continue? [Y/n]" yn case $yn in [Yy]* ) break;; [Nn]* ) echo Exiting; exit;; diff --git a/lgsm/functions/install_server_dir.sh b/lgsm/functions/install_server_dir.sh index 4c582bf00..c6a6523f2 100644 --- a/lgsm/functions/install_server_dir.sh +++ b/lgsm/functions/install_server_dir.sh @@ -18,7 +18,7 @@ if [ -d "${filesdir}" ]; then fi if [ -z "${autoinstall}" ]; then while true; do - read -e -i "y" -p "Continue [y/N]" yn + read -e -i "y" -p "Continue [Y/n]" yn case $yn in [Yy]* ) break;; [Nn]* ) exit;; From f5c5dbd5676f9b5d6ece99ff57270161a5300dd5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 22:53:56 +0100 Subject: [PATCH 556/643] added missing fi --- lgsm/functions/install_ut2k4_key.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/install_ut2k4_key.sh b/lgsm/functions/install_ut2k4_key.sh index 19ae650a1..a0f32dd2a 100644 --- a/lgsm/functions/install_ut2k4_key.sh +++ b/lgsm/functions/install_ut2k4_key.sh @@ -20,7 +20,8 @@ if [ -z "${autoinstall}" ]; then read CODE echo ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey" if [ -f "${systemdir}/cdkey" ]; then - fn_scriptlog "UT2K4 Server CD Key created" + fn_scriptlog "UT2K4 Server CD Key created" + fi else echo "You can add your key using the following command" echo "./${selfname} server-cd-key" From 34c34c48f844f2ee3907fbb5c59399c6c119ff85 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 22:57:48 +0100 Subject: [PATCH 557/643] supress du error --- lgsm/functions/info_distro.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index cd641b1ff..f2f914726 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -70,7 +70,7 @@ usedspace=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $3}') availspace=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $4}') # used space in serverfiles dir. -filesdirdu=$(du -sh "${filesdir}" | awk '{print $1}') +filesdirdu=$(du -sh "${filesdir}" 2> /dev/null | awk '{print $1}') if [ -z ${filesdirdu} ]; then filesdirdu="0M" fi From d5fc079b4167c56268e967ce06b70f1893d45461 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 22:58:16 +0100 Subject: [PATCH 558/643] only tries to move file if exists --- lgsm/functions/command_start.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index b3cf88255..26dec454e 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -68,7 +68,9 @@ fn_start_tmux(){ if [ "${status}" == "0" ]; then fn_scriptlog "Rotating log files" if [ "${engine}" == "unreal2" ]; then - mv "${gamelog}" "${gamelogdate}" + if [ -f "${gamelog}" ]; then + mv "${gamelog}" "${gamelogdate}" + fi fi mv "${scriptlog}" "${scriptlogdate}" mv "${consolelog}" "${consolelogdate}" From 77e6999375fa8146f3bbb37a6658f6b9dc3c6982 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 22:58:38 +0100 Subject: [PATCH 559/643] fixes for map compressor --- lgsm/functions/compress_unreal2_maps.sh | 8 ++++---- lgsm/functions/compress_ut99_maps.sh | 9 +++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh index a7157d9ed..5c001ba77 100644 --- a/lgsm/functions/compress_unreal2_maps.sh +++ b/lgsm/functions/compress_unreal2_maps.sh @@ -19,7 +19,7 @@ echo "" echo "${compressedmapsdir}" echo "" while true; do - read -p "Start compression [y/N]" yn + read -e -i "y" -p "Start compression [Y/n]" yn case $yn in [Yy]* ) break;; [Nn]* ) echo Exiting; return;; @@ -27,9 +27,9 @@ while true; do esac done mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1 -rm -rfv "${filesdir}/Maps/*.uz2" +rm -rfv "${filesdir}/Maps/"*.uz2 cd "${systemdir}" for map in "${filesdir}/Maps/*"; do - ./ucc-bin compress "../Maps/${map}" --nohomedir + ./ucc-bin compress "${map}" --nohomedir done -mv -fv "${filesdir}/Maps/*.uz2" "${compressedmapsdir}" +mv -fv "${filesdir}/Maps/"*.uz2 "${compressedmapsdir}" diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh index 948fb9661..261b8bdd0 100644 --- a/lgsm/functions/compress_ut99_maps.sh +++ b/lgsm/functions/compress_ut99_maps.sh @@ -19,7 +19,7 @@ echo "" echo "${compressedmapsdir}" echo "" while true; do - read -p "Start compression [y/N]" yn + read -e -i "y" -p "Start compression [Y/n]" yn case $yn in [Yy]* ) break;; [Nn]* ) echo Exiting; return;; @@ -27,9 +27,10 @@ while true; do esac done mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1 -rm -rfv "${filesdir}/Maps/*.unr.uz" +rm -rfv "${filesdir}/Maps/"*.unr.uz cd "${systemdir}" for map in "${filesdir}/Maps/*"; do - ./ucc-bin compress "../Maps/${map}" --nohomedir + ./ucc-bin compress "${map}" --nohomedir done -mv -fv "${filesdir}/Maps/*.unr.uz" "${compressedmapsdir}" +echo "mv -fv ${filesdir}/Maps/*.unr.uz ${compressedmapsdir}" +mv -fv "${filesdir}/Maps/"*.unr.uz "${compressedmapsdir}" From 9c2b9933cd36865673d626e613b4ff0d5ff7eca4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 8 May 2016 23:18:22 +0100 Subject: [PATCH 560/643] bug fixes --- lgsm/functions/compress_unreal2_maps.sh | 6 +++--- lgsm/functions/compress_ut99_maps.sh | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh index 5c001ba77..243782269 100644 --- a/lgsm/functions/compress_unreal2_maps.sh +++ b/lgsm/functions/compress_unreal2_maps.sh @@ -27,9 +27,9 @@ while true; do esac done mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1 -rm -rfv "${filesdir}/Maps/"*.uz2 +rm -rfv "${filesdir}/Maps/"*.ut2.uz2 cd "${systemdir}" -for map in "${filesdir}/Maps/*"; do +for map in "${filesdir}/Maps/"*; do ./ucc-bin compress "${map}" --nohomedir done -mv -fv "${filesdir}/Maps/"*.uz2 "${compressedmapsdir}" +mv -fv "${filesdir}/Maps/"*.ut2.uz2 "${compressedmapsdir}" diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh index 261b8bdd0..0cb2098b1 100644 --- a/lgsm/functions/compress_ut99_maps.sh +++ b/lgsm/functions/compress_ut99_maps.sh @@ -29,8 +29,7 @@ done mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1 rm -rfv "${filesdir}/Maps/"*.unr.uz cd "${systemdir}" -for map in "${filesdir}/Maps/*"; do +for map in "${filesdir}/Maps/"*; do ./ucc-bin compress "${map}" --nohomedir done -echo "mv -fv ${filesdir}/Maps/*.unr.uz ${compressedmapsdir}" mv -fv "${filesdir}/Maps/"*.unr.uz "${compressedmapsdir}" From fa6a34481b1fd1be1f4b9a5b8c3cfeb11f8fbe6d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Mon, 9 May 2016 21:10:14 +0100 Subject: [PATCH 561/643] Added ts3 to glibc fix as not required --- lgsm/functions/check_glibc.sh | 16 +++++++++++----- lgsm/functions/info_glibc.sh | 3 +++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index b82ae0e01..76b1fc3bc 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -9,19 +9,25 @@ lgsm_version="020116" info_glibc.sh info_distro.sh -if [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then +if [ "${glibcrequired}" == "NOT REQUIRED" ]; then + : +elif [ "${glibcrequired}" == "UNKNOWN" ]; then + fn_print_info_nl "Glibc fix: \e[0;32m${glibcrequired}\e[0m" + echo " * glibc required: \e[0;31m${glibcrequired}\e[0m" + echo " * glibc installed: ${glibcversion}" +elif [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then if [ "${glibcfix}" == "yes" ]; then if [ "${function_selfname}" != "command_install.sh" ]; then - fn_print_info_nl "Glibc fix: Using Glibc fix" - echo " * glibc required: ${glibcrequired}" + fn_print_info_nl "Glibc fix: \e[0;32mUsing Glibc fix\e[0m" + echo " * glibc required: \e[0;31m${glibcrequired}\e[0m" echo " * glibc installed: ${glibcversion}" fix_glibc.sh fi else - fn_print_warn_nl "Glibc fix: No Glibc fix available!" + fn_print_warn_nl "Glibc fix: \e[0;31mNo Glibc fix available!\e[0m" echo -en "\n" echo " * glibc required: ${glibcrequired}" - echo " * glibc installed: ${glibcversion}" + echo " * glibc installed: \e[0;31m${glibcversion}\e[0m" echo -en "\n" fn_print_infomation "The game server will probably not work. A distro upgrade is required!" sleep 5 diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 055dbbb85..2f2f5ae75 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -65,6 +65,9 @@ elif [ "${engine}" == "unreal4" ]; then elif [ "${engine}" == "unity3d" ]; then glibcrequired="2.15" glibcfix="no" +elif [ "${gamename}" == "Teamspeak 3" ]; then + glibcrequired="NOT REQUIRED" + glibcfix="no" else glibcrequired="UNKNOWN" glibcfix="no" From f625b390464ec8028640e1bea7efc2d2e664136e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Mon, 9 May 2016 21:21:39 +0100 Subject: [PATCH 562/643] Added header --- lgsm/functions/install_ts3.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/install_ts3.sh b/lgsm/functions/install_ts3.sh index f1bdb16d1..4313e7792 100644 --- a/lgsm/functions/install_ts3.sh +++ b/lgsm/functions/install_ts3.sh @@ -46,6 +46,9 @@ if [ -z "${availablebuild}" ]; then exit 1 fi +echo "" +echo "Installing ${gamename} Server" +echo "=================================" cd "${rootdir}" echo -e "downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" wget -N /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 2>&1 | grep -F HTTP | cut -c45-| uniq From eb903e514574bc6378a1ff6cf06665ecb8deeac0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 12 May 2016 21:34:42 +0100 Subject: [PATCH 563/643] info_ts3status.sh deprecated --- lgsm/functions/command_stop.sh | 4 ++-- lgsm/functions/command_ts3_server_pass.sh | 4 ++-- lgsm/functions/core_functions.sh | 6 ------ 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index b36ddfd90..1f941eb36 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -191,8 +191,8 @@ fn_stop_teamspeak3(){ # checks if the server is already stopped before trying to stop. fn_stop_pre_check(){ if [ "${gamename}" == "Teamspeak 3" ]; then - info_ts3status.sh - if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + check_status.sh + if [ "${status}" == "0" ]; then fn_print_ok_nl "${servername} is already stopped" fn_scriptlog "${servername} is already stopped" else diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index ad725df82..e4bed70b7 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -54,8 +54,8 @@ sleep 1 # Running functions check.sh fn_serveradmin_password_prompt -info_ts3status.sh -if [ "${ts3status}" == "Server is running" ]; then +check_status.sh +if [ "${status}" != "0" ]; then fn_serveradmin_password_set command_start.sh else diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index e80998a44..1598157b5 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -329,12 +329,6 @@ functionfile="${FUNCNAME}" fn_fetch_function } -info_ts3status.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - - # Email email.sh(){ From cef83c248101b47a409c6c0f5b11dad4db24240d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 12 May 2016 21:41:16 +0100 Subject: [PATCH 564/643] glibc not required hides glibc details --- lgsm/functions/command_details.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index a291c9d6b..e805b5d4c 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -190,7 +190,9 @@ fn_details_script(){ # GLIBC required if [ -n "${glibcrequired}" ]; then - if [ "${glibcrequired}" == "UNKNOWN" ]; then + if [ "${glibcrequired}" == "NOT REQUIRED" ]; then + : + elif [ "${glibcrequired}" == "UNKNOWN" ]; then echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired}" elif [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then if [ "${glibcfix}" == "yes" ]; then From 54019723569b4eb501d0a61cce132881dc226498 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 12 May 2016 22:00:15 +0100 Subject: [PATCH 565/643] Corrected = separator length --- lgsm/functions/command_console.sh | 2 +- lgsm/functions/command_debug.sh | 2 +- lgsm/functions/command_ts3_server_pass.sh | 2 +- lgsm/functions/compress_unreal2_maps.sh | 2 +- lgsm/functions/compress_ut99_maps.sh | 2 +- lgsm/functions/install_gslt.sh | 2 +- lgsm/functions/install_gsquery.sh | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index 615e289ea..ef9f54962 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -12,7 +12,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh echo "" echo "${gamename} Console" -echo "============================" +echo "=================================" echo "" echo "Press \"CTRL+b d\" to exit console." fn_print_warning_nl "Do NOT press CTRL+c to exit." diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 1fa0d88e5..348d74bb0 100644 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -15,7 +15,7 @@ info_distro.sh fn_parms echo "" echo "${gamename} Debug" -echo "============================" +echo "=================================" echo "" echo -e "Distro: ${os}" echo -e "Arch: ${arch}" diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index e4bed70b7..9a6441263 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -14,7 +14,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_serveradmin_password_prompt(){ echo "" echo "${gamename} ServerAdmin Password Change" -echo "============================" +echo "=================================" echo "" echo "Press \"CTRL+b d\" to exit console." fn_print_infomation_nl "You are about to change the ${gamename} ServerAdmin password." diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh index 243782269..40b4aa3ca 100644 --- a/lgsm/functions/compress_unreal2_maps.sh +++ b/lgsm/functions/compress_unreal2_maps.sh @@ -9,7 +9,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh clear echo "${gamename} Map Compressor" -echo "============================" +echo "=================================" echo "Will compress all maps in:" echo "" pwd diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh index 0cb2098b1..d04b32853 100644 --- a/lgsm/functions/compress_ut99_maps.sh +++ b/lgsm/functions/compress_ut99_maps.sh @@ -9,7 +9,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh clear echo "${gamename} Map Compressor" -echo "============================" +echo "=================================" echo "Will compress all maps in:" echo "" pwd diff --git a/lgsm/functions/install_gslt.sh b/lgsm/functions/install_gslt.sh index 1c05921c0..f09ee7020 100644 --- a/lgsm/functions/install_gslt.sh +++ b/lgsm/functions/install_gslt.sh @@ -10,7 +10,7 @@ local modulename="Install" echo "" echo "Game Server Login Token" -echo "============================" +echo "=================================" sleep 1 if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then echo "GSLT is required to run a public ${gamename} server" diff --git a/lgsm/functions/install_gsquery.sh b/lgsm/functions/install_gsquery.sh index a8b3d2ec4..15d1a636e 100644 --- a/lgsm/functions/install_gsquery.sh +++ b/lgsm/functions/install_gsquery.sh @@ -14,7 +14,7 @@ chmod +x gsquery.py if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Hurtworld" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then echo "" echo "GameServerQuery" - echo "============================" + echo "=================================" if [ -z ${autoinstall} ]; then while true; do read -e -i "y" -p "Do you want to install GameServerQuery? [Y/n]" yn From 673530d649a57dfe2e207bb3b68c3e7493ff486e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 12 May 2016 22:29:07 +0100 Subject: [PATCH 566/643] corrected branch --- JustCause2/jc2server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 102370f0f..5cb7ca499 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -36,7 +36,7 @@ parms="" # from a different repo and/or branch. githubuser="dgibbs64" githubrepo="linuxgsm" -githubbranch="dlmanage" +githubbranch="master" # Steam appid="261140" From 79a6b8a9e04bce3b82cae4fe0e97a7cd8ed18965 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 12 May 2016 22:29:17 +0100 Subject: [PATCH 567/643] updated test --- tests/tests_ts3server.sh | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 93f0fa890..382a9f9be 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -109,22 +109,21 @@ fn_runfunction core_functions.sh fn_currentstatus_tmux(){ -pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") -if [ "${pid}" != "0" ]; then - currentstatus="ONLINE" -else - currentstatus="OFFLINE" -fi + check_status.sh + if [ "${status}" != "0" ]; then + currentstatus="ONLINE" + else + currentstatus="OFFLINE" + fi } fn_currentstatus_ts3(){ -ts3status=$(${executable} status servercfgfullpathfile=${servercfgfullpath}) - -if [ "${ts3status}" == "Server is running" ]; then - currentstatus="ONLINE" -else - currentstatus="OFFLINE" -fi +check_status.sh + if [ "${status}" != "0" ]; then + currentstatus="ONLINE" + else + currentstatus="OFFLINE" + fi } fn_setstatus(){ From f373fe120158bf88358a91dd531f65cf3e3c3896 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 12 May 2016 22:37:22 +0100 Subject: [PATCH 568/643] code presentation --- lgsm/functions/check_permissions.sh | 140 +++---- lgsm/functions/command_fastdl.sh | 490 +++++++++++----------- lgsm/functions/command_ts3_server_pass.sh | 70 ++-- lgsm/functions/command_validate.sh | 48 +-- lgsm/functions/core_dl.sh | 258 ++++++------ lgsm/functions/install_config.sh | 200 ++++----- lgsm/functions/install_gsquery.sh | 8 +- lgsm/functions/install_server_files.sh | 130 +++--- lgsm/functions/update_dl.sh | 100 ++--- 9 files changed, 722 insertions(+), 722 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 4360820f7..c9225c863 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -14,84 +14,84 @@ scriptfullpath="${rootdir}/${selfname}" conclusionpermissionerror="0" fn_check_ownership(){ -# Check script ownership -if [ ! -O "${scriptfullpath}" ] && [ ! -G "${scriptfullpath}" ]; then - fn_print_fail_nl "Oops ! Ownership issue..." - echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own \"${selfname}\"" - echo " * To check the owner and allowed groups, run ls -l \"${selfname}\"" - exit 1 -fi + # Check script ownership + if [ ! -O "${scriptfullpath}" ] && [ ! -G "${scriptfullpath}" ]; then + fn_print_fail_nl "Oops ! Ownership issue..." + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own \"${selfname}\"" + echo " * To check the owner and allowed groups, run ls -l \"${selfname}\"" + exit 1 + fi -# Check rootdir ownership -if [ ! -O "${rootdir}" ] && [ ! -G "${rootdir}" ]; then - fn_print_fail_nl "Oops ! Ownership issue..." - echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own \"${rootdir}\"" - echo " * To check the owner and allowed groups, run ls -dl \"${rootdir}\"" - exit 1 -fi + # Check rootdir ownership + if [ ! -O "${rootdir}" ] && [ ! -G "${rootdir}" ]; then + fn_print_fail_nl "Oops ! Ownership issue..." + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own \"${rootdir}\"" + echo " * To check the owner and allowed groups, run ls -dl \"${rootdir}\"" + exit 1 + fi -# Check functions ownership -funownfail="0" -if [ -n "${functionsdir}" ]; then - while read -r filename - do - if [ ! -O "${filename}" ] && [ ! -G "${filename}" ]; then - funownfail="1" - conclusionpermissionerror="1" - fi - done <<< "$(find "${functionsdir}" -name "*.sh")" - - if [ "${funownfail}" == "1" ]; then - fn_print_fail_nl "Oops ! Ownership issue..." - echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own all scripts in \"${functionsdir}\"" - echo " * To check the owner and allowed groups, run ls -l \"${functionsdir}\"" - fi -fi + # Check functions ownership + funownfail="0" + if [ -n "${functionsdir}" ]; then + while read -r filename + do + if [ ! -O "${filename}" ] && [ ! -G "${filename}" ]; then + funownfail="1" + conclusionpermissionerror="1" + fi + done <<< "$(find "${functionsdir}" -name "*.sh")" + + if [ "${funownfail}" == "1" ]; then + fn_print_fail_nl "Oops ! Ownership issue..." + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own all scripts in \"${functionsdir}\"" + echo " * To check the owner and allowed groups, run ls -l \"${functionsdir}\"" + fi + fi } fn_check_permissions(){ -# Check rootdir permissions -if [ -n "${rootdir}" ]; then - # Get permission numbers on folder under the form 775 - rootdirperm="$(stat -c %a "${rootdir}")" - # Grab the first and second digit for user and group permission - userrootdirperm="${rootdirperm:0:1}" - grouprootdirperm="${rootdirperm:1:1}" - if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then - fn_print_fail_nl "Oops ! Permission issue..." - echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} need full control of \"${rootdir}\"" - echo " * You might wanna run : chmod -R 770 \"${rootdir}\"" - conclusionpermissionerror="1" - fi -fi - -# Check functions permissions -funcpermfail="0" -if [ -n "${functionsdir}" ]; then - while read -r filename - do - funcperm="$(stat -c %a "${filename}")" - userfuncdirperm="${funcperm:0:1}" - groupfuncdirperm="${funcperm:1:1}" - if [ "${userfuncdirperm}" != "7" ] && [ "${groupfuncdirperm}" != "7" ]; then - funcpermfail="1" - conclusionpermissionerror="1" - fi - done <<< "$(find "${functionsdir}" -name "*.sh")" - - if [ "${funcpermfail}" == "1" ]; then - fn_print_fail_nl "Oops ! Permission issue..." - echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} need full control on scripts in \"${functionsdir}\"" - echo " * You might wanna run : chmod -R 770 \"${functionsdir}\"" - fi -fi + # Check rootdir permissions + if [ -n "${rootdir}" ]; then + # Get permission numbers on folder under the form 775 + rootdirperm="$(stat -c %a "${rootdir}")" + # Grab the first and second digit for user and group permission + userrootdirperm="${rootdirperm:0:1}" + grouprootdirperm="${rootdirperm:1:1}" + if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then + fn_print_fail_nl "Oops ! Permission issue..." + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} need full control of \"${rootdir}\"" + echo " * You might wanna run : chmod -R 770 \"${rootdir}\"" + conclusionpermissionerror="1" + fi + fi + + # Check functions permissions + funcpermfail="0" + if [ -n "${functionsdir}" ]; then + while read -r filename + do + funcperm="$(stat -c %a "${filename}")" + userfuncdirperm="${funcperm:0:1}" + groupfuncdirperm="${funcperm:1:1}" + if [ "${userfuncdirperm}" != "7" ] && [ "${groupfuncdirperm}" != "7" ]; then + funcpermfail="1" + conclusionpermissionerror="1" + fi + done <<< "$(find "${functionsdir}" -name "*.sh")" + + if [ "${funcpermfail}" == "1" ]; then + fn_print_fail_nl "Oops ! Permission issue..." + echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} need full control on scripts in \"${functionsdir}\"" + echo " * You might wanna run : chmod -R 770 \"${functionsdir}\"" + fi + fi } fn_check_permissions_conclusion(){ -# Exit if errors found -if [ "${conclusionpermissionerror}" == "1" ]; then - exit 1 -fi + # Exit if errors found + if [ "${conclusionpermissionerror}" == "1" ]; then + exit 1 + fi } fn_check_ownership diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index f502f1fdb..ec7de257e 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -22,301 +22,301 @@ luafastdlfile="lgsm_cl_force_fastdl.lua" luafastdlfullpath="${luasvautorundir}/${luafastdlfile}" fn_check_bzip2(){ -# Returns true if not installed -if [ -z "$(command -v bzip2)" ]; then - bzip2installed="0" - fn_printinfo "bzip2 is not installed !" - fn_scriptlog "bzip2 is not installed" - echo -en "\n" - sleep 1 - echo "We advise using it" - echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/FastDL#bzip2-compression" - sleep 2 -else - bzip2installed="1" -fi + # Returns true if not installed + if [ -z "$(command -v bzip2)" ]; then + bzip2installed="0" + fn_printinfo "bzip2 is not installed !" + fn_scriptlog "bzip2 is not installed" + echo -en "\n" + sleep 1 + echo "We advise using it" + echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/FastDL#bzip2-compression" + sleep 2 + else + bzip2installed="1" + fi } fn_fastdl_init(){ -# User confirmation -fn_printok "Welcome to LGSM's FastDL generator" -sleep 1 -echo -en "\n" -fn_scriptlog "Started FastDL creation" -while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) exit;; - * ) echo "Please answer yes or no.";; - esac -done -fn_scriptlog "Initiating FastDL creation" - -# Check and create folders -if [ ! -d "${webdir}" ]; then - echo "" - fn_printinfo "Creating FastDL directories" - echo -en "\n" - sleep 1 - fn_printdots "Creating www directory" - sleep 0.5 - mkdir "${webdir}" - fn_printok "Created www directory" - fn_scriptlog "FastDL created www directory" - sleep 1 - echo -en "\n" -fi -if [ ! -d "${fastdldir}" ]; then - # No folder, won't ask for removing old ones - newfastdl=1 - fn_printdots "Creating fastdl directory" - sleep 0.5 - mkdir "${fastdldir}" - fn_printok "Created fastdl directory" - fn_scriptlog "FastDL created fastdl directory" + # User confirmation + fn_printok "Welcome to LGSM's FastDL generator" sleep 1 echo -en "\n" - clearoldfastdl="off" # Nothing to clear -elif [ "$(ls -A "${fastdldir}")" ]; then - newfastdl=0 -fi -} - -fn_fastdl_config(){ -# Global settings for FastDL creation -fn_printinfo "Entering configuration" -fn_scriptlog "Configuration" -sleep 2 -echo -en "\n" -# Prompt for clearing old files if folder was already here -if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then - fn_printdots + fn_scriptlog "Started FastDL creation" while true; do - read -e -i "y" -p "Clear old FastDL files? [Y/n]" yn + read -e -i "y" -p "Continue? [Y/n]" yn case $yn in - [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_printok "Clearing Enabled"; break;; - [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_printok "Clearing Disabled"; break;; + [Yy]* ) break;; + [Nn]* ) exit;; * ) echo "Please answer yes or no.";; esac done + fn_scriptlog "Initiating FastDL creation" + + # Check and create folders + if [ ! -d "${webdir}" ]; then + echo "" + fn_printinfo "Creating FastDL directories" + echo -en "\n" + sleep 1 + fn_printdots "Creating www directory" + sleep 0.5 + mkdir "${webdir}" + fn_printok "Created www directory" + fn_scriptlog "FastDL created www directory" + sleep 1 + echo -en "\n" + fi + if [ ! -d "${fastdldir}" ]; then + # No folder, won't ask for removing old ones + newfastdl=1 + fn_printdots "Creating fastdl directory" + sleep 0.5 + mkdir "${fastdldir}" + fn_printok "Created fastdl directory" + fn_scriptlog "FastDL created fastdl directory" + sleep 1 + echo -en "\n" + clearoldfastdl="off" # Nothing to clear + elif [ "$(ls -A "${fastdldir}")" ]; then + newfastdl=0 + fi +} + +fn_fastdl_config(){ + # Global settings for FastDL creation + fn_printinfo "Entering configuration" + fn_scriptlog "Configuration" + sleep 2 echo -en "\n" -fi -# Prompt for using bzip2 if it's installed -if [ ${bzip2installed} == 1 ]; then + # Prompt for clearing old files if folder was already here + if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then + fn_printdots + while true; do + read -e -i "y" -p "Clear old FastDL files? [Y/n]" yn + case $yn in + [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_printok "Clearing Enabled"; break;; + [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_printok "Clearing Disabled"; break;; + * ) echo "Please answer yes or no.";; + esac + done + echo -en "\n" + fi + # Prompt for using bzip2 if it's installed + if [ ${bzip2installed} == 1 ]; then + fn_printdots + while true; do + read -e -i "y" -p "Enable file compression using bzip2? [Y/n]" yn + case $yn in + [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "bzip2 Enabled"; break;; + [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled"; break;; + * ) echo "Please answer yes or no.";; + esac + done + echo -en "\n" + fi +} + +fn_fastdl_gmod_config(){ + # Prompt for download enforcer, that is using a .lua addfile resource generator fn_printdots while true; do - read -e -i "y" -p "Enable file compression using bzip2? [Y/n]" yn + read -e -i "y" -p "Use client download enforcer? [Y/n]" yn case $yn in - [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "bzip2 Enabled"; break;; - [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled"; break;; + [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_printok "Enforcer Enabled"; break;; + [Nn]* ) luaressource="off"; fn_scriptlog "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; * ) echo "Please answer yes or no.";; esac done echo -en "\n" -fi -} - -fn_fastdl_gmod_config(){ -# Prompt for download enforcer, that is using a .lua addfile resource generator -fn_printdots -while true; do - read -e -i "y" -p "Use client download enforcer? [Y/n]" yn - case $yn in - [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_printok "Enforcer Enabled"; break;; - [Nn]* ) luaressource="off"; fn_scriptlog "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; - * ) echo "Please answer yes or no.";; - esac -done -echo -en "\n" } fn_clear_old_fastdl(){ -# Clearing old FastDL if user answered yes -if [ "${clearoldfastdl}" == "on" ]; then - fn_printinfo "Clearing existing FastDL folder" - fn_scriptlog "Clearing existing FastDL folder" - sleep 0.5 - rm -R "${fastdldir:?}"/* - fn_printok "Old FastDL folder cleared" - fn_scriptlog "Old FastDL folder cleared" - sleep 1 - echo -en "\n" -fi + # Clearing old FastDL if user answered yes + if [ "${clearoldfastdl}" == "on" ]; then + fn_printinfo "Clearing existing FastDL folder" + fn_scriptlog "Clearing existing FastDL folder" + sleep 0.5 + rm -R "${fastdldir:?}"/* + fn_printok "Old FastDL folder cleared" + fn_scriptlog "Old FastDL folder cleared" + sleep 1 + echo -en "\n" + fi } fn_gmod_fastdl(){ -# Copy all needed files for FastDL -echo "" -fn_printdots "Starting gathering all needed files" -fn_scriptlog "Starting gathering all needed files" -sleep 1 -echo -en "\n" - -# No choice to cd to the directory, as find can't then display relative folder -cd "${systemdir}" - -# Map Files -fn_printdots "Copying map files..." -fn_scriptlog "Copying map files" -sleep 0.5 -find . -name '*.bsp' | cpio --quiet -updm "${fastdldir}" -fn_printok "Map files copied" -sleep 0.5 -echo -en "\n" + # Copy all needed files for FastDL + echo "" + fn_printdots "Starting gathering all needed files" + fn_scriptlog "Starting gathering all needed files" + sleep 1 + echo -en "\n" -# Materials -fn_printdots "Copying materials..." -fn_scriptlog "Copying materials" -sleep 0.5 -find . -name '*.vtf' | cpio --quiet -updm "${fastdldir}" -find . -name '*.vmt' | cpio --quiet -updm "${fastdldir}" -fn_printok "Materials copied" -sleep 0.5 -echo -en "\n" + # No choice to cd to the directory, as find can't then display relative folder + cd "${systemdir}" -# Models -fn_printdots "Copying models..." -fn_scriptlog "Copying models" -sleep 1 -find . -name '*.vtx' | cpio --quiet -updm "${fastdldir}" -find . -name '*.vvd' | cpio --quiet -updm "${fastdldir}" -find . -name '*.mdl' | cpio --quiet -updm "${fastdldir}" -find . -name '*.phy' | cpio --quiet -updm "${fastdldir}" -fn_printok "Models copied" -sleep 0.5 -echo -en "\n" + # Map Files + fn_printdots "Copying map files..." + fn_scriptlog "Copying map files" + sleep 0.5 + find . -name '*.bsp' | cpio --quiet -updm "${fastdldir}" + fn_printok "Map files copied" + sleep 0.5 + echo -en "\n" -# Particles -fn_printdots "Copying particles..." -fn_scriptlog "Copying particles" -sleep 0.5 -find . -name '*.pcf' | cpio --quiet -updm "${fastdldir}" -fn_printok "Particles copied" -sleep 0.5 -echo -en "\n" + # Materials + fn_printdots "Copying materials..." + fn_scriptlog "Copying materials" + sleep 0.5 + find . -name '*.vtf' | cpio --quiet -updm "${fastdldir}" + find . -name '*.vmt' | cpio --quiet -updm "${fastdldir}" + fn_printok "Materials copied" + sleep 0.5 + echo -en "\n" -# Sounds -fn_printdots "Copying sounds..." -fn_scriptlog "Copying sounds" -sleep 0.5 -find . -name '*.wav' | cpio --quiet -updm "${fastdldir}" -find . -name '*.mp3' | cpio --quiet -updm "${fastdldir}" -find . -name '*.ogg' | cpio --quiet -updm "${fastdldir}" -fn_printok "Sounds copied" -sleep 0.5 -echo -en "\n" + # Models + fn_printdots "Copying models..." + fn_scriptlog "Copying models" + sleep 1 + find . -name '*.vtx' | cpio --quiet -updm "${fastdldir}" + find . -name '*.vvd' | cpio --quiet -updm "${fastdldir}" + find . -name '*.mdl' | cpio --quiet -updm "${fastdldir}" + find . -name '*.phy' | cpio --quiet -updm "${fastdldir}" + fn_printok "Models copied" + sleep 0.5 + echo -en "\n" -# Resources (mostly fonts) -fn_printdots "Copying fonts and png..." -fn_scriptlog "Copying fonts and png" -sleep 1 -find . -name '*.otf' | cpio --quiet -updm "${fastdldir}" -find . -name '*.ttf' | cpio --quiet -updm "${fastdldir}" -find . -name '*.png' | cpio --quiet -updm "${fastdldir}" -fn_printok "Fonts and png copied" -sleep 0.5 -echo -en "\n" + # Particles + fn_printdots "Copying particles..." + fn_scriptlog "Copying particles" + sleep 0.5 + find . -name '*.pcf' | cpio --quiet -updm "${fastdldir}" + fn_printok "Particles copied" + sleep 0.5 + echo -en "\n" -# Going back to rootdir in order to prevent mistakes -cd "${rootdir}" + # Sounds + fn_printdots "Copying sounds..." + fn_scriptlog "Copying sounds" + sleep 0.5 + find . -name '*.wav' | cpio --quiet -updm "${fastdldir}" + find . -name '*.mp3' | cpio --quiet -updm "${fastdldir}" + find . -name '*.ogg' | cpio --quiet -updm "${fastdldir}" + fn_printok "Sounds copied" + sleep 0.5 + echo -en "\n" -# Correct addons folder structure for FastDL -if [ -d "${fastdldir}/addons" ]; then - fn_printinfo "Adjusting addons' file structure" - fn_scriptlog "Adjusting addon's file structure" - sleep 1 - cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" -#Don't remove yet rm -R "${fastdldir:?}/addons" - fn_printok "Adjusted addon's file structure" + # Resources (mostly fonts) + fn_printdots "Copying fonts and png..." + fn_scriptlog "Copying fonts and png" sleep 1 + find . -name '*.otf' | cpio --quiet -updm "${fastdldir}" + find . -name '*.ttf' | cpio --quiet -updm "${fastdldir}" + find . -name '*.png' | cpio --quiet -updm "${fastdldir}" + fn_printok "Fonts and png copied" + sleep 0.5 echo -en "\n" -fi -# Correct content that may be into a lua folder by mistake like some darkrpmodification addons -if [ -d "${fastdldir}/lua" ]; then - fn_printdots "Typical DarkRP shit detected, fixing" - sleep 2 - cp -Rf "${fastdldir}/lua/"* "${fastdldir}" - fn_printok "Stupid DarkRP file structure fixed" - sleep 2 - echo -en "\n" -fi + # Going back to rootdir in order to prevent mistakes + cd "${rootdir}" + + # Correct addons folder structure for FastDL + if [ -d "${fastdldir}/addons" ]; then + fn_printinfo "Adjusting addons' file structure" + fn_scriptlog "Adjusting addon's file structure" + sleep 1 + cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" + #Don't remove yet rm -R "${fastdldir:?}/addons" + fn_printok "Adjusted addon's file structure" + sleep 1 + echo -en "\n" + fi + + # Correct content that may be into a lua folder by mistake like some darkrpmodification addons + if [ -d "${fastdldir}/lua" ]; then + fn_printdots "Typical DarkRP shit detected, fixing" + sleep 2 + cp -Rf "${fastdldir}/lua/"* "${fastdldir}" + fn_printok "Stupid DarkRP file structure fixed" + sleep 2 + echo -en "\n" + fi } # Generate lua file that will force download any file into the FastDL folder fn_lua_fastdl(){ -# Remove lua file if luaressource is turned off and file exists -echo "" -if [ "${luaressource}" == "off" ]; then - if [ -f "${luafastdlfullpath}" ]; then - fn_printdots "Removing download enforcer" + # Remove lua file if luaressource is turned off and file exists + echo "" + if [ "${luaressource}" == "off" ]; then + if [ -f "${luafastdlfullpath}" ]; then + fn_printdots "Removing download enforcer" + sleep 1 + rm -R "${luafastdlfullpath:?}" + fn_printok "Removed download enforcer" + fn_scriptlog "Removed old download inforcer" + echo -en "\n" + sleep 2 + fi + fi + # Remove old lua file and generate a new one if user said yes + if [ "${luaressource}" == "on" ]; then + if [ -f "${luafastdlfullpath}" ]; then + fn_printdots "Removing old download enforcer" + sleep 1 + rm "${luafastdlfullpath}" + fn_printok "Removed old download enforcer" + fn_scriptlog "Removed old download enforcer" + echo -en "\n" + sleep 1 + fi + fn_printdots "Generating new download enforcer" + fn_scriptlog "Generating new download enforcer" sleep 1 - rm -R "${luafastdlfullpath:?}" - fn_printok "Removed download enforcer" - fn_scriptlog "Removed old download inforcer" + # Read all filenames and put them into a lua file at the right path + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -printf '%P\n' | while read line; do + echo "resource.AddFile( "\""${line}"\"" )" >> ${luafastdlfullpath} + done + fn_printok "Download enforcer generated" + fn_scriptlog "Download enforcer generated" echo -en "\n" + echo "" sleep 2 fi -fi -# Remove old lua file and generate a new one if user said yes -if [ "${luaressource}" == "on" ]; then - if [ -f "${luafastdlfullpath}" ]; then - fn_printdots "Removing old download enforcer" - sleep 1 - rm "${luafastdlfullpath}" - fn_printok "Removed old download enforcer" - fn_scriptlog "Removed old download enforcer" +} + +fn_fastdl_bzip2(){ + # Compressing using bzip2 if user said yes + echo "" + if [ ${bzip2enable} == "on" ]; then + fn_printinfo "Have a break, this step could take a while..." echo -en "\n" + echo "" + fn_printdots "Compressing files using bzip2..." + fn_scriptlog "Compressing files using bzip2..." + # bzip2 all files that are not already compressed (keeping original files) + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; + fn_printok "bzip2 compression done" + fn_scriptlog "bzip2 compression done" sleep 1 + echo -en "\n" fi - fn_printdots "Generating new download enforcer" - fn_scriptlog "Generating new download enforcer" - sleep 1 - # Read all filenames and put them into a lua file at the right path - find "${fastdldir}" \( -type f ! -name "*.bz2" \) -printf '%P\n' | while read line; do - echo "resource.AddFile( "\""${line}"\"" )" >> ${luafastdlfullpath} - done - fn_printok "Download enforcer generated" - fn_scriptlog "Download enforcer generated" - echo -en "\n" - echo "" - sleep 2 -fi } -fn_fastdl_bzip2(){ -# Compressing using bzip2 if user said yes -echo "" -if [ ${bzip2enable} == "on" ]; then - fn_printinfo "Have a break, this step could take a while..." +fn_fastdl_completed(){ + # Finished message + echo "" + fn_printok "Congratulations, it's done !" + fn_scriptlog "FastDL job done" + sleep 2 echo -en "\n" echo "" - fn_printdots "Compressing files using bzip2..." - fn_scriptlog "Compressing files using bzip2..." - # bzip2 all files that are not already compressed (keeping original files) - find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; - fn_printok "bzip2 compression done" - fn_scriptlog "bzip2 compression done" - sleep 1 + fn_printinfo "Need more doc ? See https://github.com/dgibbs64/linuxgsm/wiki/FastDL" echo -en "\n" -fi -} - -fn_fastdl_completed(){ -# Finished message -echo "" -fn_printok "Congratulations, it's done !" -fn_scriptlog "FastDL job done" -sleep 2 -echo -en "\n" -echo "" -fn_printinfo "Need more doc ? See https://github.com/dgibbs64/linuxgsm/wiki/FastDL" -echo -en "\n" -if [ "$bzip2installed" == "0" ]; then -echo "By the way, you'd better install bzip2 an re-run this command !" -fi -echo "Credits : UltimateByte" + if [ "$bzip2installed" == "0" ]; then + echo "By the way, you'd better install bzip2 an re-run this command !" + fi + echo "Credits : UltimateByte" } # Game checking and functions running diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index 9a6441263..38280eeb2 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -12,43 +12,43 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_serveradmin_password_prompt(){ -echo "" -echo "${gamename} ServerAdmin Password Change" -echo "=================================" -echo "" -echo "Press \"CTRL+b d\" to exit console." -fn_print_infomation_nl "You are about to change the ${gamename} ServerAdmin password." -fn_print_warning_nl "${gamename} will restart during this process." -echo "" -while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; -esac -done -fn_scriptlog "Initiating ${gamename} ServerAdmin password change" -read -p "Enter new password : " newpassword -} + echo "" + echo "${gamename} ServerAdmin Password Change" + echo "=================================" + echo "" + echo "Press \"CTRL+b d\" to exit console." + fn_print_infomation_nl "You are about to change the ${gamename} ServerAdmin password." + fn_print_warning_nl "${gamename} will restart during this process." + echo "" + while true; do + read -e -i "y" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; exit;; + * ) echo "Please answer yes or no.";; + esac + done + fn_scriptlog "Initiating ${gamename} ServerAdmin password change" + read -p "Enter new password : " newpassword + } -fn_serveradmin_password_set(){ -fn_print_info_nl "Applying new password" -fn_scriptlog "Applying new password" -sleep 1 -# Stop any running server -command_stop.sh -# Start server in "new password mode" -ts3serverpass="1" -fn_print_info_nl "Starting server with new password" -command_start.sh -# Stop server in "new password mode" -command_stop.sh -ts3serverpass="0" -fn_print_ok_nl "Password applied" -fn_scriptlog "New ServerAdmin password applied" -sleep 1 + fn_serveradmin_password_set(){ + fn_print_info_nl "Applying new password" + fn_scriptlog "Applying new password" + sleep 1 + # Stop any running server + command_stop.sh + # Start server in "new password mode" + ts3serverpass="1" + fn_print_info_nl "Starting server with new password" + command_start.sh + # Stop server in "new password mode" + command_stop.sh + ts3serverpass="0" + fn_print_ok_nl "Password applied" + fn_scriptlog "New ServerAdmin password applied" + sleep 1 } # Running functions diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 6e48d7972..10e3bfa5d 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -10,30 +10,30 @@ local modulename="Validate" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_validation(){ -fn_print_warn_nl "Validating may overwrite some customised files." -echo -en "https://developer.valvesoftware.com/wiki/SteamCMD#Validate" -sleep 5 -echo -en "\n" -fn_print_dots "Checking server files" -sleep 1 -fn_print_ok "Checking server files" -fn_scriptlog "Checking server files" -sleep 1 - -cd "${rootdir}/steamcmd" - -if [ $(command -v unbuffer) ]; then - unbuffer=unbuffer -fi - -if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" -else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" -fi - -fix.sh -fn_scriptlog "Checking complete" + fn_print_warn_nl "Validating may overwrite some customised files." + echo -en "https://developer.valvesoftware.com/wiki/SteamCMD#Validate" + sleep 5 + echo -en "\n" + fn_print_dots "Checking server files" + sleep 1 + fn_print_ok "Checking server files" + fn_scriptlog "Checking server files" + sleep 1 + + cd "${rootdir}/steamcmd" + + if [ $(command -v unbuffer) ]; then + unbuffer=unbuffer + fi + + if [ "${engine}" == "goldsource" ]; then + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" + else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" validate +quit| tee -a "${scriptlog}" + fi + + fix.sh + fn_scriptlog "Checking complete" } check_status.sh diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 8ee6e357c..c135c0701 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -19,26 +19,26 @@ lgsm_version="050216" # fn_fetch_file "http://example.com/file.tar.bz2" "/some/dir" "file.tar.bz2" "executecmd" "run" "force" "10cd7353aa9d758a075c600a6dd193fd" fn_dl_md5(){ -# Runs MD5 Check if available -if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then - echo -ne "verifying ${filename} with MD5..." - sleep 1 - local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') - if [ "${md5sumcmd}" != "${md5}" ]; then - fn_print_fail_eol_nl - echo "${filename} returned MD5 checksum: ${md5sumcmd}" - echo "expected MD5 checksum: ${md5}" - fn_scriptlog "verifying ${filename} with MD5: FAIL" - fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" - fn_scriptlog "expected MD5 checksum: ${md5}" - exit 1 - else - fn_print_ok_eol_nl - fn_scriptlog "verifying ${filename} with MD5: OK" - fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" - fn_scriptlog "expected MD5 checksum: ${md5}" - fi -fi + # Runs MD5 Check if available + if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then + echo -ne "verifying ${filename} with MD5..." + sleep 1 + local md5sumcmd=$(md5sum "${filedir}/${filename}"|awk '{print $1;}') + if [ "${md5sumcmd}" != "${md5}" ]; then + fn_print_fail_eol_nl + echo "${filename} returned MD5 checksum: ${md5sumcmd}" + echo "expected MD5 checksum: ${md5}" + fn_scriptlog "verifying ${filename} with MD5: FAIL" + fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" + fn_scriptlog "expected MD5 checksum: ${md5}" + exit 1 + else + fn_print_ok_eol_nl + fn_scriptlog "verifying ${filename} with MD5: OK" + fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" + fn_scriptlog "expected MD5 checksum: ${md5}" + fi + fi } # Extracts bzip2 or gzip files @@ -46,28 +46,28 @@ fi # fn_dl_extract "${filedir}" "${filename}" "${extractdir}" # fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles" fn_dl_extract(){ -filedir="${1}" -filename="${2}" -extractdir="${3}" -# extracts archives -echo -ne "extracting ${filename}..." -fn_scriptlog "extracting download" -mime=$(file -b --mime-type "${filedir}/${filename}") - -if [ "${mime}" == "application/gzip" ]||[ "${mime}" == "application/x-gzip" ]; then - tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}") -elif [ "${mime}" == "application/x-bzip2" ]; then - tarcmd=$(tar -jxf "${filedir}/${filename}" -C "${extractdir}") -fi -local exitcode=$? -if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - fn_scriptlog "extracting download: FAIL" - echo "${tarcmd}" | tee -a "${scriptlog}" - exit ${exitcode} -else - fn_print_ok_eol_nl -fi + filedir="${1}" + filename="${2}" + extractdir="${3}" + # extracts archives + echo -ne "extracting ${filename}..." + fn_scriptlog "extracting download" + mime=$(file -b --mime-type "${filedir}/${filename}") + + if [ "${mime}" == "application/gzip" ]||[ "${mime}" == "application/x-gzip" ]; then + tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}") + elif [ "${mime}" == "application/x-bzip2" ]; then + tarcmd=$(tar -jxf "${filedir}/${filename}" -C "${extractdir}") + fi + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_scriptlog "extracting download: FAIL" + echo "${tarcmd}" | tee -a "${scriptlog}" + exit ${exitcode} + else + fn_print_ok_eol_nl + fi } # Trap to remove file download if canceled before completed @@ -85,78 +85,78 @@ fn_fetch_trap() { } fn_fetch_file(){ -fileurl="${1}" -filedir="${2}" -filename="${3}" -executecmd="${4:-0}" -run="${5:-0}" -force="${6:-0}" -md5="${7:-0}" - -# If the file is missing, then download -if [ ! -f "${filedir}/${filename}" ]; then - if [ ! -d "${filedir}" ]; then - mkdir -p "${filedir}" - fi - - # Check curl exists and use available path - curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" - for curlcmd in ${curlpaths} - do - if [ -x "${curlcmd}" ]; then - break + fileurl="${1}" + filedir="${2}" + filename="${3}" + executecmd="${4:-0}" + run="${5:-0}" + force="${6:-0}" + md5="${7:-0}" + + # If the file is missing, then download + if [ ! -f "${filedir}/${filename}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir -p "${filedir}" fi - done - # If curl exists download file - if [ "$(basename ${curlcmd})" == "curl" ]; then - # trap to remove part downloaded files - trap fn_fetch_trap INT - # if larger file shows progress bar - if [ ${filename##*.} == "bz2" ]; then - echo -ne "downloading ${filename}..." - sleep 1 - curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") - echo -ne "downloading ${filename}..." + + # Check curl exists and use available path + curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" + for curlcmd in ${curlpaths} + do + if [ -x "${curlcmd}" ]; then + break + fi + done + # If curl exists download file + if [ "$(basename ${curlcmd})" == "curl" ]; then + # trap to remove part downloaded files + trap fn_fetch_trap INT + # if larger file shows progress bar + if [ ${filename##*.} == "bz2" ]; then + echo -ne "downloading ${filename}..." + sleep 1 + curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}") + echo -ne "downloading ${filename}..." + else + echo -ne " fetching ${filename}...\c" + curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) + fi + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + if [ -f "${scriptlog}" ]; then + fn_scriptlog "downloading ${filename}: FAIL" + fi + echo "${curlcmd}" | tee -a "${scriptlog}" + echo -e "${fileurl}\n" | tee -a "${scriptlog}" + exit ${exitcode} + else + fn_print_ok_eol_nl + if [ -f "${scriptlog}" ]; then + fn_scriptlog "downloading ${filename}: OK" + fi + fi + # remove trap + trap - INT else - echo -ne " fetching ${filename}...\c" - curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1) - fi - local exitcode=$? - if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl - if [ -f "${scriptlog}" ]; then - fn_scriptlog "downloading ${filename}: FAIL" - fi - echo "${curlcmd}" | tee -a "${scriptlog}" - echo -e "${fileurl}\n" | tee -a "${scriptlog}" - exit ${exitcode} - else - fn_print_ok_eol_nl - if [ -f "${scriptlog}" ]; then - fn_scriptlog "downloading ${filename}: OK" - fi + echo "Curl is not installed!" + echo -e "" + exit 1 fi - # remove trap - trap - INT - else - fn_print_fail_eol_nl - echo "Curl is not installed!" - echo -e "" - exit 1 + # make file executecmd if executecmd is set + if [ "${executecmd}" == "executecmd" ]; then + chmod +x "${filedir}/${filename}" + fi fi - # make file executecmd if executecmd is set - if [ "${executecmd}" == "executecmd" ]; then - chmod +x "${filedir}/${filename}" - fi -fi -if [ -f "${filedir}/${filename}" ]; then - fn_dl_md5 - # run file if run is set - if [ "${run}" == "run" ]; then - source "${filedir}/${filename}" + if [ -f "${filedir}/${filename}" ]; then + fn_dl_md5 + # run file if run is set + if [ "${run}" == "run" ]; then + source "${filedir}/${filename}" + fi fi -fi } @@ -172,31 +172,31 @@ fi # Fetches files from the github repo fn_fetch_file_github(){ -github_file_url_dir="${1}" -github_file_url_name="${2}" -githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -fileurl="${githuburl}" -filedir="${3}" -filename="${github_file_url_name}" -executecmd="${4:-0}" -run="${5:-0}" -force="${6:-0}" -md5="${7:-0}" -fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + github_file_url_dir="${1}" + github_file_url_name="${2}" + githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" + fileurl="${githuburl}" + filedir="${3}" + filename="${github_file_url_name}" + executecmd="${4:-0}" + run="${5:-0}" + force="${6:-0}" + md5="${7:-0}" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" } # Fetches functions fn_fetch_function(){ -github_file_url_dir="lgsm/functions" # github dir containing the file -github_file_url_name="${functionfile}" # name of the github file -githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" -fileurl="${githuburl}" -filedir="${functionsdir}" -filename="${github_file_url_name}" -executecmd="executecmd" -run="run" -force="noforce" -md5="nomd5" -fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + github_file_url_dir="lgsm/functions" # github dir containing the file + github_file_url_name="${functionfile}" # name of the github file + githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" + fileurl="${githuburl}" + filedir="${functionsdir}" + filename="${github_file_url_name}" + executecmd="executecmd" + run="run" + force="noforce" + md5="nomd5" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" } \ No newline at end of file diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 26993a0b3..6b89f1a8e 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -13,133 +13,133 @@ fn_defaultconfig(){ } fn_userinputconfig(){ -# allow user to input server name and password -if [ -z "${autoinstall}" ]; then - echo "" - echo "Configuring ${gamename} Server" - echo "=================================" - sleep 1 - read -p "Enter server name: " servername - read -p "Enter rcon password: " rconpass -else - servername="${servicename}" - rconpass="rconpassword" -fi -echo "changing hostname." -sed -i "s/\"<hostname>\"/\"${servername}\"/g" "${servercfgfullpath}" -sleep 1 -echo "changing rconpassword." -sed -i "s/\"<rconpassword>\"/\"${rconpass}\"/g" "${servercfgfullpath}" -sleep 1 -} + # allow user to input server name and password + if [ -z "${autoinstall}" ]; then + echo "" + echo "Configuring ${gamename} Server" + echo "=================================" + sleep 1 + read -p "Enter server name: " servername + read -p "Enter rcon password: " rconpass + else + servername="${servicename}" + rconpass="rconpassword" + fi + echo "changing hostname." + sed -i "s/\"<hostname>\"/\"${servername}\"/g" "${servercfgfullpath}" + sleep 1 + echo "changing rconpassword." + sed -i "s/\"<rconpassword>\"/\"${rconpass}\"/g" "${servercfgfullpath}" + sleep 1 + } -fn_arma3config(){ -fn_defaultconfig -echo "creating ${networkcfg} config file." -cp -v "${networkcfgdefault}" "${networkcfgfullpath}" -sleep 1 -echo "" + fn_arma3config(){ + fn_defaultconfig + echo "creating ${networkcfg} config file." + cp -v "${networkcfgdefault}" "${networkcfgfullpath}" + sleep 1 + echo "" } fn_goldsourceconfig(){ -fn_defaultconfig + fn_defaultconfig -# server.cfg redirects to ${servercfg} for added security -echo "creating server.cfg." -touch "server.cfg" -sleep 1 -echo "creating redirect." -echo "server.cfg > ${servercfg}." -echo "exec ${servercfg}" > "server.cfg" -sleep 1 + # server.cfg redirects to ${servercfg} for added security + echo "creating server.cfg." + touch "server.cfg" + sleep 1 + echo "creating redirect." + echo "server.cfg > ${servercfg}." + echo "exec ${servercfg}" > "server.cfg" + sleep 1 -# creating other files required -echo "creating listip.cfg." -touch "${systemdir}/listip.cfg" -sleep 1 -echo "creating banned.cfg." -touch "${systemdir}/banned.cfg" -sleep 1 + # creating other files required + echo "creating listip.cfg." + touch "${systemdir}/listip.cfg" + sleep 1 + echo "creating banned.cfg." + touch "${systemdir}/banned.cfg" + sleep 1 -fn_userinputconfig -echo "" + fn_userinputconfig + echo "" } fn_serious3config(){ -fn_defaultconfig -echo "" -echo "To edit ${gamename} server config use SS3 Server GUI 3 tool" -echo "http://mrag.nl/sgui3/" -sleep 1 -echo "" + fn_defaultconfig + echo "" + echo "To edit ${gamename} server config use SS3 Server GUI 3 tool" + echo "http://mrag.nl/sgui3/" + sleep 1 + echo "" } fn_sourceconfig(){ -fn_defaultconfig + fn_defaultconfig -# server.cfg redirects to ${servercfg} for added security -echo "creating server.cfg." -touch "server.cfg" -sleep 1 -echo "creating redirect." -echo "server.cfg > ${servercfg}." -echo "exec ${servercfg}" > "server.cfg" -sleep 1 + # server.cfg redirects to ${servercfg} for added security + echo "creating server.cfg." + touch "server.cfg" + sleep 1 + echo "creating redirect." + echo "server.cfg > ${servercfg}." + echo "exec ${servercfg}" > "server.cfg" + sleep 1 -fn_userinputconfig -echo "" + fn_userinputconfig + echo "" } fn_teeworldsconfig(){ -fn_defaultconfig + fn_defaultconfig -echo "adding logfile location to config." -sed -i "s@\"<logfile>\"@\"${gamelog}\"@g" "${servercfgfullpath}" -sleep 1 -echo "removing password holder." -sed -i "s/<password>//" "${servercfgfullpath}" -sleep 1 + echo "adding logfile location to config." + sed -i "s@\"<logfile>\"@\"${gamelog}\"@g" "${servercfgfullpath}" + sleep 1 + echo "removing password holder." + sed -i "s/<password>//" "${servercfgfullpath}" + sleep 1 -fn_userinputconfig -echo "" + fn_userinputconfig + echo "" } fn_ut99config(){ -echo "${servercfgdefault} > ${servercfgfullpath}" -tr -d '\r' < "${servercfgdefault}" > "${servercfgfullpath}" -sleep 1 -echo "" -echo "Configuring ${gamename} Server" -echo "=================================" -sleep 1 -echo "enabling WebAdmin." -sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" -sleep 1 -echo "setting WebAdmin port to 8076." -sed -i '467i\ListenPort=8076' "${servercfgfullpath}" -sleep 1 -echo "" + echo "${servercfgdefault} > ${servercfgfullpath}" + tr -d '\r' < "${servercfgdefault}" > "${servercfgfullpath}" + sleep 1 + echo "" + echo "Configuring ${gamename} Server" + echo "=================================" + sleep 1 + echo "enabling WebAdmin." + sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" + sleep 1 + echo "setting WebAdmin port to 8076." + sed -i '467i\ListenPort=8076' "${servercfgfullpath}" + sleep 1 + echo "" } fn_unreal2config(){ -fn_defaultconfig -echo "" -echo "Configuring ${gamename} Server" -echo "=================================" -sleep 1 -echo "setting WebAdmin username and password." -sed -i 's/AdminName=/AdminName=admin/g' "${servercfgfullpath}" -sed -i 's/AdminPassword=/AdminPassword=admin/g' "${servercfgfullpath}" -sleep 1 -echo "enabling WebAdmin." -sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" -if [ "${gamename}" == "Unreal Tournament 2004" ]; then + fn_defaultconfig + echo "" + echo "Configuring ${gamename} Server" + echo "=================================" sleep 1 - echo "setting WebAdmin port to 8075." - sed -i 's/ListenPort=80/ListenPort=8075/g' "${servercfgfullpath}" -fi -sleep 1 -echo "" + echo "setting WebAdmin username and password." + sed -i 's/AdminName=/AdminName=admin/g' "${servercfgfullpath}" + sed -i 's/AdminPassword=/AdminPassword=admin/g' "${servercfgfullpath}" + sleep 1 + echo "enabling WebAdmin." + sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" + if [ "${gamename}" == "Unreal Tournament 2004" ]; then + sleep 1 + echo "setting WebAdmin port to 8075." + sed -i 's/ListenPort=80/ListenPort=8075/g' "${servercfgfullpath}" + fi + sleep 1 + echo "" } echo "" diff --git a/lgsm/functions/install_gsquery.sh b/lgsm/functions/install_gsquery.sh index 15d1a636e..c615ead74 100644 --- a/lgsm/functions/install_gsquery.sh +++ b/lgsm/functions/install_gsquery.sh @@ -5,10 +5,10 @@ lgsm_version="190216" fn_dlgsquery(){ -cd "${rootdir}" -echo -e "downloading gsquery.py...\c" -wget -N /dev/null "https://gameservermanagers.com/dl/gsquery.py" 2>&1 | grep -F "HTTP" | grep -v "Moved Permanently" | cut -c45- | uniq -chmod +x gsquery.py + cd "${rootdir}" + echo -e "downloading gsquery.py...\c" + wget -N /dev/null "https://gameservermanagers.com/dl/gsquery.py" 2>&1 | grep -F "HTTP" | grep -v "Moved Permanently" | cut -c45- | uniq + chmod +x gsquery.py } if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Hurtworld" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 91cb9ef19..e9a0eeac4 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -7,81 +7,81 @@ lgsm_version="270216" local modulename="Install" fn_install_server_files(){ -if [ "${gamename}" == "Unreal Tournament 99" ]; then - fileurl="https://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" -elif [ "${gamename}" == "Unreal Tournament 2004" ]; then - fileurl="https://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" -fi -fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" -fn_dl_extract "${filedir}" "${filename}" "${filesdir}" + if [ "${gamename}" == "Unreal Tournament 99" ]; then + fileurl="https://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" + elif [ "${gamename}" == "Unreal Tournament 2004" ]; then + fileurl="https://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" + fi + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + fn_dl_extract "${filedir}" "${filename}" "${filesdir}" } fn_install_server_files_steamcmd(){ -counter="0" -while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; 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_print_warning_nl "SteamCMD did not complete the download, retrying: Attempt ${counter}" - fn_scriptlog "SteamCMD did not complete the download, retrying: Attempt ${counter}" - fi + counter="0" + while [ "${counter}" == "0" ]||[ "${exitcode}" != "0" ]; 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 "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 + if [ "${counter}" -ge "2" ]; then + fn_print_warning_nl "SteamCMD did not complete the download, retrying: Attempt ${counter}" + fn_scriptlog "SteamCMD did not complete the download, retrying: Attempt ${counter}" + fi - # Detects if unbuffer command is available. - if [ $(command -v unbuffer) ]; then - unbuffer=unbuffer - 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 - 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 - local exitcode=$? - else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit - local exitcode=$? + # Detects if unbuffer command is available. + if [ $(command -v unbuffer) ]; then + unbuffer=unbuffer 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 - local exitcode=$? - else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" -validate +quit - local exitcode=$? + + 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 + local exitcode=$? + else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit + local exitcode=$? + 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 + local exitcode=$? + else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" -validate +quit + local exitcode=$? + fi fi + elif [ "${counter}" -ge "11" ]; then + fn_print_failure_nl "SteamCMD did not complete the download, too many retrys" + fn_scriptlog "SteamCMD did not complete the download, too many retrys" + break fi - elif [ "${counter}" -ge "11" ]; then - fn_print_failure_nl "SteamCMD did not complete the download, too many retrys" - fn_scriptlog "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 - fn_print_infomation_nl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue." - 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 - local exitcode=$? done -fi + + # 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 + fn_print_infomation_nl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue." + 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 + local exitcode=$? + done + fi } echo "" diff --git a/lgsm/functions/update_dl.sh b/lgsm/functions/update_dl.sh index c41fdea90..886d97014 100644 --- a/lgsm/functions/update_dl.sh +++ b/lgsm/functions/update_dl.sh @@ -10,63 +10,63 @@ local modulename="Update" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_steamcmd_dl(){ -cd "${rootdir}" -cd "steamcmd" + cd "${rootdir}" + cd "steamcmd" -# Detects if unbuffer command is available. -if [ $(command -v unbuffer) ]; then - unbuffer=unbuffer -fi + # Detects if unbuffer command is available. + if [ $(command -v unbuffer) ]; then + unbuffer=unbuffer + fi -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 -a "${scriptlog}" -else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit| tee -a "${scriptlog}" -fi + 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 -a "${scriptlog}" + else + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit| tee -a "${scriptlog}" + fi -fix.sh + fix.sh } fn_teamspeak3_dl(){ -cd "${rootdir}" -echo -e "downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" -fn_scriptlog "Downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" -wget -N /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 2>&1 | grep -F HTTP | cut -c45-| uniq -sleep 1 -echo -e "extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" -fn_scriptlog "Extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" -tar -xf "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" 2> "${scriptlogdir}/.${servicename}-tar-error.tmp" -local status=$? -if [ ${status} -eq 0 ]; then - echo "OK" -else - echo "FAIL - Exit status ${status}" - fn_scriptlog "Failed to extract - Exit status ${status}" + cd "${rootdir}" + echo -e "downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" + fn_scriptlog "Downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" + wget -N /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 2>&1 | grep -F HTTP | cut -c45-| uniq sleep 1 - cat "${scriptlogdir}/.${servicename}-tar-error.tmp" - cat "${scriptlogdir}/.${servicename}-tar-error.tmp" >> "${scriptlog}" - rm "${scriptlogdir}/.${servicename}-tar-error.tmp" - fn_scriptlog "Failure! Unable to update" - exit ${status} -fi -echo -e "copying to ${filesdir}...\c" -fn_scriptlog "Copying to ${filesdir}" -cp -R "${rootdir}/teamspeak3-server_linux_${ts3arch}/"* "${filesdir}" 2> "${scriptlogdir}/.${servicename}-cp-error.tmp" -local status=$? -if [ ${status} -eq 0 ]; then - echo "OK" -else - echo "FAIL - Exit status ${status}" - fn_scriptlog "Failed to copy - Exit status ${status}" - sleep 1 - cat "${scriptlogdir}/.${servicename}-cp-error.tmp" - cat "${scriptlogdir}/.${servicename}-cp-error.tmp" >> "${scriptlog}" - rm "${scriptlogdir}/.${servicename}-cp-error.tmp" - fn_scriptlog "Failure! Unable to update" - exit ${status} -fi -rm -f teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 -rm -rf "${rootdir}/teamspeak3-server_linux_${ts3arch}" + echo -e "extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c" + fn_scriptlog "Extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" + tar -xf "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" 2> "${scriptlogdir}/.${servicename}-tar-error.tmp" + local status=$? + if [ ${status} -eq 0 ]; then + echo "OK" + else + echo "FAIL - Exit status ${status}" + fn_scriptlog "Failed to extract - Exit status ${status}" + sleep 1 + cat "${scriptlogdir}/.${servicename}-tar-error.tmp" + cat "${scriptlogdir}/.${servicename}-tar-error.tmp" >> "${scriptlog}" + rm "${scriptlogdir}/.${servicename}-tar-error.tmp" + fn_scriptlog "Failure! Unable to update" + exit ${status} + fi + echo -e "copying to ${filesdir}...\c" + fn_scriptlog "Copying to ${filesdir}" + cp -R "${rootdir}/teamspeak3-server_linux_${ts3arch}/"* "${filesdir}" 2> "${scriptlogdir}/.${servicename}-cp-error.tmp" + local status=$? + if [ ${status} -eq 0 ]; then + echo "OK" + else + echo "FAIL - Exit status ${status}" + fn_scriptlog "Failed to copy - Exit status ${status}" + sleep 1 + cat "${scriptlogdir}/.${servicename}-cp-error.tmp" + cat "${scriptlogdir}/.${servicename}-cp-error.tmp" >> "${scriptlog}" + rm "${scriptlogdir}/.${servicename}-cp-error.tmp" + fn_scriptlog "Failure! Unable to update" + exit ${status} + fi + rm -f teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 + rm -rf "${rootdir}/teamspeak3-server_linux_${ts3arch}" } check.sh From d19e3b76995e845afe71f2358d46cc1cb8c96e2e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 12:19:22 +0100 Subject: [PATCH 569/643] Added some parms to DST --- DontStarveTogether/dstserver | 5 +++-- lgsm/functions/update_dl.sh | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index eaa7b4cf7..09f54a6de 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="130516" #### Variables #### @@ -30,7 +30,8 @@ updateonstart="off" # Cave: -conf_dir DST_Cave #http://dont-starve-game.wikia.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers fn_parms(){ -parms="" +parms="-console -cluster MyDediServer -shard Master" +# -console -cluster MyDediServer -shard Master } #### Advanced Variables #### diff --git a/lgsm/functions/update_dl.sh b/lgsm/functions/update_dl.sh index 886d97014..1ccd3e8d5 100644 --- a/lgsm/functions/update_dl.sh +++ b/lgsm/functions/update_dl.sh @@ -19,9 +19,9 @@ fn_steamcmd_dl(){ fi 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 -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" +quit | tee -a "${scriptlog}" else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit| tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit | tee -a "${scriptlog}" fi fix.sh From 8a9b0afb45ee746c000cd231267412122ccf4c70 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 12:23:52 +0100 Subject: [PATCH 570/643] added echo -e --- lgsm/functions/check_glibc.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index 76b1fc3bc..617543119 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -13,21 +13,21 @@ if [ "${glibcrequired}" == "NOT REQUIRED" ]; then : elif [ "${glibcrequired}" == "UNKNOWN" ]; then fn_print_info_nl "Glibc fix: \e[0;32m${glibcrequired}\e[0m" - echo " * glibc required: \e[0;31m${glibcrequired}\e[0m" - echo " * glibc installed: ${glibcversion}" + echo -e " * glibc required: \e[0;31m${glibcrequired}\e[0m" + echo -e " * glibc installed: ${glibcversion}" elif [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then if [ "${glibcfix}" == "yes" ]; then if [ "${function_selfname}" != "command_install.sh" ]; then fn_print_info_nl "Glibc fix: \e[0;32mUsing Glibc fix\e[0m" - echo " * glibc required: \e[0;31m${glibcrequired}\e[0m" - echo " * glibc installed: ${glibcversion}" + echo -e " * glibc required: \e[0;31m${glibcrequired}\e[0m" + echo -e " * glibc installed: ${glibcversion}" fix_glibc.sh fi else fn_print_warn_nl "Glibc fix: \e[0;31mNo Glibc fix available!\e[0m" echo -en "\n" - echo " * glibc required: ${glibcrequired}" - echo " * glibc installed: \e[0;31m${glibcversion}\e[0m" + echo -e " * glibc required: ${glibcrequired}" + echo -e " * glibc installed: \e[0;31m${glibcversion}\e[0m" echo -en "\n" fn_print_infomation "The game server will probably not work. A distro upgrade is required!" sleep 5 From 368d2fdf2f55f5772e465ef364a551330d5b2679 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 16:27:06 +0100 Subject: [PATCH 571/643] updated terraria --- lgsm/functions/command_details.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index e805b5d4c..b8f5fcbc6 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -441,13 +441,11 @@ fn_details_teeworlds(){ } fn_details_terraria(){ - echo -e "netstat -atunp | grep terraia" + echo -e "netstat -atunp | grep TerrariaServer" echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\ttcp" - echo -e "> Query\tINBOUND\t${queryport}\ttcp" - echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" } | column -s $'\t' -t } From 65b5558fd3e97cf0b024de2ac24d2fcc9261dc65 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 16:28:27 +0100 Subject: [PATCH 572/643] altered UNKNOWN colour --- lgsm/functions/check_glibc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index 617543119..dff253596 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -12,7 +12,7 @@ info_distro.sh if [ "${glibcrequired}" == "NOT REQUIRED" ]; then : elif [ "${glibcrequired}" == "UNKNOWN" ]; then - fn_print_info_nl "Glibc fix: \e[0;32m${glibcrequired}\e[0m" + fn_print_info_nl "Glibc fix: \e[0;31m${glibcrequired}\e[0m" echo -e " * glibc required: \e[0;31m${glibcrequired}\e[0m" echo -e " * glibc installed: ${glibcversion}" elif [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then From c834b540c6db084031c86f318c84812714001ca5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 17:08:38 +0100 Subject: [PATCH 573/643] Updated to work with Linux --- Terraria/cfg/lgsm-default.txt | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Terraria/cfg/lgsm-default.txt b/Terraria/cfg/lgsm-default.txt index d6258d4cf..9a907e61d 100644 --- a/Terraria/cfg/lgsm-default.txt +++ b/Terraria/cfg/lgsm-default.txt @@ -22,40 +22,40 @@ #remove the # in front of commands to enable them. #Load a world and automatically start the server. -#world=C:\Users\YOUR_USERNAME_HERE\My Documents\My Games\Terraria\Worlds\world1.wld +world=~/.local/share/Terraria/Worlds/world1.wld #Creates a new world if none is found. World size is specified by: 1(small), 2(medium), and 3(large). -#autocreate=1 +autocreate=1 #Sets the name of the world when using autocreate -#worldname=Terraria +worldname=Terraria #Sets the difficulty of the world when using autocreate 0(normal), 1(expert) -#difficulty=1 +difficulty=0 #Sets the max number of players allowed on a server. Value must be between 1 and 255 -#maxplayers=8 +maxplayers=8 #Set the port number -#port=7777 +port=7777 #Set the server password -#password=p@55w0rd +password=p@55w0rd #Set the message of the day -#motd=Please don�t cut the purple trees! +motd=Please don�t cut the purple trees! #Sets the folder where world files will be stored -#worldpath=C:\Users\Defaults\My Documents\My Games\Terraria\Worlds\ +worldpath=~/.local/share/Terraria/Worlds/ #The location of the banlist. Defaults to "banlist.txt" in the working directory. -#banlist=banlist.txt +banlist=banlist.txt #Adds addition cheat protection. -#secure=1 +secure=1 #Sets the server language 1:English, 2:German, 3:Italian, 4:French, 5:Spanish -#lang=1 +lang=1 #Automatically forward ports with uPNP #upnp=1 From f7d9d79a4b0b5c5d5934e4f78e49d26938c4244f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 17:19:13 +0100 Subject: [PATCH 574/643] added terraria --- lgsm/functions/info_glibc.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 2f2f5ae75..982acf005 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -2,7 +2,7 @@ # LGSM info_glibc.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="260216" +lgsm_version="130516" # Description: stores details on servers Glibc requirements. @@ -53,6 +53,9 @@ elif [ "${engine}" == "spark" ]; then elif [ "${engine}" == "starbound" ]; then glibcrequired="2.12" glibcfix="no" +elif [ "${engine}" == "terraria" ]; then + glibcrequired="2.7" + glibcfix="no" elif [ "${engine}" == "unreal" ]; then glibcrequired="2.1" glibcfix="no" From 23301a31d369d2b51798f0fb7580e3684fdbbd19 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 17:43:38 +0100 Subject: [PATCH 575/643] improved Terraria support --- lgsm/functions/info_config.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 049161e13..3144a9aa9 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -210,12 +210,21 @@ fn_info_config_teeworlds(){ fn_info_config_terraria(){ if [ ! -f "${servercfgfullpath}" ]; then - port="0" - else + servername="${unavailable}" + port="${zero}" + gameworld="${unavailable}" + slots="${zero}" + else + servername=$(grep "worldname=" "${servercfgfullpath}" | sed 's/worldname=//g') port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + gameworld=$(grep "world=" "${servercfgfullpath}" | sed 's/world=//g') + slots=$(grep "maxplayers=" "${servercfgfullpath}" | sed 's/maxplayers=//g') - # Not Set + # Not Set + servername=${servername:-"NOT SET"} port=${port:-"0"} + gameworld=${gameworld:-"NOT SET"} + slots=${slots:-"0"} fi } @@ -285,6 +294,7 @@ elif [ "${gamename}" == "Teamspeak 3" ]; then # Teeworlds elif [ "${engine}" == "teeworlds" ]; then fn_info_config_teeworlds +# Terraria elif [ "${engine}" == "terraria" ]; then fn_info_config_terraria # Unreal/Unreal 2 engine From ea7517146285561ea71d95ec91f2b3472afa67c1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 17:43:59 +0100 Subject: [PATCH 576/643] will highlight is config missing --- lgsm/functions/command_details.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index b8f5fcbc6..6ae55f7e1 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -216,7 +216,11 @@ fn_details_script(){ # Config file location if [ -n "${servercfgfullpath}" ]; then - echo -e "\e[34mConfig file:\t\e[0m${servercfgfullpath}" + if [ -f "${servercfgfullpath}" ]; then + echo -e "\e[34mConfig file:\t\e[0m${servercfgfullpath}" + else + echo -e "\e[34mConfig file:\t\e[0m\e[0;31m${servercfgfullpath}\e[0m (\e[0;31mFILE MISSING\e[0m)" + fi fi # Network config file location (ARMA 3) @@ -440,7 +444,7 @@ fn_details_teeworlds(){ } | column -s $'\t' -t } - fn_details_terraria(){ +fn_details_terraria(){ echo -e "netstat -atunp | grep TerrariaServer" echo -e "" { From b5c3043c56fb98060beb6c518fd5e008a7fb6e7d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 17:48:33 +0100 Subject: [PATCH 577/643] fixed error and OK display --- lgsm/functions/command_monitor.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index f3c270682..66924d307 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -22,7 +22,7 @@ fn_monitor_check_lockfile(){ fn_monitor_check_update(){ # Monitor will not check if update is running. - if [ "$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)" >= "1" ]; then + if [ "$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)" != "0" ]; then fn_print_info_nl "SteamCMD is currently checking for updates" fn_scriptlog "SteamCMD is currently checking for updates" sleep 1 @@ -68,7 +68,7 @@ fn_monitor_teamspeak3(){ fn_monitor_tmux(){ # checks that tmux session is running if [ "${status}" != "0" ]; then - fn_print_ok "Checking session: OK" + fn_print_ok "Checking session: " fn_print_ok_eol_nl fn_scriptlog "Checking session: OK" # runs gsquery check on game with specific engines. From ffbf9d21a0564f9125ee420c566e6be3175294a0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 18:47:05 +0100 Subject: [PATCH 578/643] added short args to list users can now see teh short args so they can use them if they want --- lgsm/functions/core_getopt.sh | 200 +++++++++++++++++----------------- 1 file changed, 100 insertions(+), 100 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 3e031486d..0d115ffaa 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -27,7 +27,7 @@ case "$getopt" in command_monitor.sh;; et|email-test) command_email_test.sh;; - d|details) + dt|details) command_details.sh;; b|backup) command_backup.sh;; @@ -50,21 +50,21 @@ case "$getopt" in echo -e "" echo -e "\e[93mCommands\e[0m" { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD." - echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + echo -e "\e[34mstart\t\e[0mst |Start the server." + echo -e "\e[34mstop\t\e[0msp |Stop the server." + echo -e "\e[34mrestart\t\e[0mr |Restart the server." + echo -e "\e[34mupdate\t\e[0mu |Checks and applies updates from SteamCMD." + echo -e "\e[34mforce-update\t\e[0mfu |Bypasses the check and applies updates from SteamCMD." + echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." + echo -e "\e[34mvalidate\t\e[0mv |Validate server files with SteamCMD." + echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." + echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." + echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mi |Install the server." + echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." } | column -s $'\t' -t esac exit @@ -86,7 +86,7 @@ case "$getopt" in command_monitor.sh;; et|email-test) command_email_test.sh;; - d|details) + dt|details) command_details.sh;; b|backup) command_backup.sh;; @@ -107,18 +107,18 @@ case "$getopt" in echo -e "" echo -e "\e[93mCommands\e[0m" { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate\t\e[0mChecks and applies updates from teamspeak.com." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mchange-password\t\e[0mChanges TS3 serveradmin password." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." + echo -e "\e[34mstart\t\e[0mst |Start the server." + echo -e "\e[34mstop\t\e[0msp |Stop the server." + echo -e "\e[34mrestart\t\e[0mr |Restart the server." + echo -e "\e[34mupdate\t\e[0mu |Checks and applies updates from SteamCMD." + echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." + echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." + echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." + echo -e "\e[34mchange-password\t\e[0mpw |Changes TS3 serveradmin password." + echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." + echo -e "\e[34minstall\t\e[0mi |Install the server." + echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." } | column -s $'\t' -t esac exit @@ -155,15 +155,15 @@ case "$getopt" in echo -e "" echo -e "\e[93mCommands\e[0m" { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." + echo -e "\e[34mstart\t\e[0mst |Start the server." + echo -e "\e[34mstop\t\e[0msp |Stop the server." + echo -e "\e[34mrestart\t\e[0mr |Restart the server." + echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." + echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." + echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." + echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." } | column -s $'\t' -t esac exit @@ -190,7 +190,7 @@ case "$getopt" in command_monitor.sh;; et|email-test) command_email_test.sh;; - d|details) + dt|details) command_details.sh;; b|backup) command_backup.sh;; @@ -215,22 +215,22 @@ case "$getopt" in echo -e "" echo -e "\e[93mCommands\e[0m" { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." + echo -e "\e[34mstart\t\e[0mst |Start the server." + echo -e "\e[34mstop\t\e[0msp |Stop the server." + echo -e "\e[34mrestart\t\e[0mr |Restart the server." echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD." - echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - echo -e "\e[34mfastdl\t\e[0mGenerates or update a FastDL folder for your server." + echo -e "\e[34mforce-update\t\e[0mfu |Bypasses the check and applies updates from SteamCMD." + echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." + echo -e "\e[34mvalidate\t\e[0mv |Validate server files with SteamCMD." + echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." + echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." + echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mi |Install the server." + echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." + echo -e "\e[34mfastdl\t\e[0mfd |Generates or update a FastDL folder for your server." } | column -s $'\t' -t esac exit @@ -250,7 +250,7 @@ case "$getopt" in command_monitor.sh;; et|email-test) command_email_test.sh;; - d|details) + dt|details) command_details.sh;; b|backup) command_backup.sh;; @@ -275,19 +275,19 @@ case "$getopt" in echo -e "" echo -e "\e[93mCommands\e[0m" { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." + echo -e "\e[34mstart\t\e[0mst |Start the server." + echo -e "\e[34mstop\t\e[0msp |Stop the server." + echo -e "\e[34mrestart\t\e[0mr |Restart the server." + echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." + echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." + echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." + echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mi |Install the server." + echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." + echo -e "\e[34mmap-compressor\t\e[0mmc |Compresses all ${gamename} server maps." } | column -s $'\t' -t esac exit @@ -315,7 +315,7 @@ case "$getopt" in command_monitor.sh;; et|email-test) command_email_test.sh;; - d|details) + dt|details) command_details.sh;; b|backup) command_backup.sh;; @@ -340,22 +340,22 @@ case "$getopt" in echo -e "" echo -e "\e[93mCommands\e[0m" { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." + echo -e "\e[34mstart\t\e[0mst |Start the server." + echo -e "\e[34mstop\t\e[0msp |Stop the server." + echo -e "\e[34mrestart\t\e[0mr |Restart the server." echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD." - echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." + echo -e "\e[34mforce-update\t\e[0mfu |Bypasses the check and applies updates from SteamCMD." + echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." + echo -e "\e[34mvalidate\t\e[0mv |Validate server files with SteamCMD." + echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." + echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." + echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mi |Install the server." + echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." + echo -e "\e[34mmap-compressor\t\e[0mmc |Compresses all ${gamename} server maps." } | column -s $'\t' -t esac exit @@ -376,7 +376,7 @@ case "$getopt" in command_monitor.sh;; et|email-test) command_email_test.sh;; - d|details) + dt|details) command_details.sh;; b|backup) command_backup.sh;; @@ -390,7 +390,7 @@ case "$getopt" in command_install.sh;; ai|auto-install) fn_autoinstall;; - sck|server-cd-key) + cd|server-cd-key) install_ut2k4_key.sh;; mc|map-compressor) compress_unreal2_maps.sh;; @@ -403,20 +403,20 @@ case "$getopt" in echo -e "" echo -e "\e[93mCommands\e[0m" { - echo -e "\e[34mstart\t\e[0mStart the server." - echo -e "\e[34mstop\t\e[0mStop the server." - echo -e "\e[34mrestart\t\e[0mRestart the server." - echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded." - echo -e "\e[34mmonitor\t\e[0mChecks that the server is running." - echo -e "\e[34memail-test\t\e[0mSends test monitor email." - echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server." - echo -e "\e[34mbackup\t\e[0mCreate archive of the server." - echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server." - echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal." - echo -e "\e[34minstall\t\e[0mInstall the server." - echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts." - echo -e "\e[34mserver-cd-key\t\e[0mAdd your server cd key" - echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps." + echo -e "\e[34mstart\t\e[0mst |Start the server." + echo -e "\e[34mstop\t\e[0msp |Stop the server." + echo -e "\e[34mrestart\t\e[0mr |Restart the server." + echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." + echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." + echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." + echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." + echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." + echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." + echo -e "\e[34minstall\t\e[0mi |Install the server." + echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." + echo -e "\e[34mserver-cd-key\t\e[0mcd |Add your server cd key" + echo -e "\e[34mmap-compressor\t\e[0mmc |Compresses all ${gamename} server maps." } | column -s $'\t' -t esac exit From 6f16645e29e49c3d23ccb61632c25e284339648f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 20:55:19 +0100 Subject: [PATCH 579/643] gamelogs now symlink --- UnrealTournament99/ut99server | 2 +- lgsm/functions/install_logs.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index c7981d0cd..890f028c6 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -59,7 +59,7 @@ backupdir="${rootdir}/backups" # Logging logdays="7" -gamelogdir="${systemdir}/Logs/" +gamelogdir="${filesdir}/Logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" consolelogging="on" diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 4ecfa1639..1cfe9ac7c 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -22,7 +22,7 @@ if [ -n "${consolelogdir}" ]; then fi # If a server is source or goldsource, Teamspeak 3, Starbound, Project Zomhoid create a symbolic link to the game server logs. -if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]||[ "${gamename}" == "Teamspeak 3" ]||[ "${engine}" == "starbound" ]||[ "${engine}" == "projectzomboid" ]; then +if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]||[ "${gamename}" == "Teamspeak 3" ]||[ "${engine}" == "starbound" ]||[ "${engine}" == "projectzomboid" ]||[ "${engine}" == "unreal" ]; then if [ ! -h "${rootdir}/log/server" ]; then ln -nfsv "${gamelogdir}" "${rootdir}/log/server" fi From ef48e0dc505c303c541633be1cc8f30aa45b5573 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 22:03:14 +0100 Subject: [PATCH 580/643] Added pzserver config correctly --- ProjectZomboid/cfg/{servertest.ini => lgsm-default.ini} | 0 ProjectZomboid/pzserver | 2 +- lgsm/functions/install_config.sh | 8 ++++++-- 3 files changed, 7 insertions(+), 3 deletions(-) rename ProjectZomboid/cfg/{servertest.ini => lgsm-default.ini} (100%) diff --git a/ProjectZomboid/cfg/servertest.ini b/ProjectZomboid/cfg/lgsm-default.ini similarity index 100% rename from ProjectZomboid/cfg/servertest.ini rename to ProjectZomboid/cfg/lgsm-default.ini diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index fb966d7e0..03117309b 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -21,7 +21,7 @@ email="email@example.com" # Steam login steamuser="anonymous" -steampass="password" +steampass="" # Start Variables ip="0.0.0.0" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 6b89f1a8e..ba00a1fa8 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -187,7 +187,6 @@ elif [ "${gamename}" == "Codename CURE" ]; then wget -N /dev/null ${githuburl}/CodenameCURE/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 fn_sourceconfig - elif [ "${gamename}" == "Counter Strike 1.6" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/CounterStrike/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq @@ -285,7 +284,12 @@ elif [ "${gamename}" == "Pirates, Vikings, and Knights II" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/PiratesVikingandKnightsII/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 - fn_sourceconfig + fn_sourceconfig +elif [ "${gamename}" == "Project Zomboid" ]; then + echo -e "downloading lgsm-default.ini...\c" + wget -N /dev/null ${githuburl}/ProjectZomboid/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Quake Live" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/QuakeLive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq From 3d02d11e352091d8fbebb87b95cc70abf1df380d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 22:05:16 +0100 Subject: [PATCH 581/643] defaultconfig function --- lgsm/functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index ba00a1fa8..60fa071c4 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -289,7 +289,7 @@ elif [ "${gamename}" == "Project Zomboid" ]; then echo -e "downloading lgsm-default.ini...\c" wget -N /dev/null ${githuburl}/ProjectZomboid/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 - fn_sourceconfig + fn_defaultconfig elif [ "${gamename}" == "Quake Live" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/QuakeLive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq From 6f830ae7d1f7c664b0b9ef8cffd75bd170567508 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 13 May 2016 22:13:53 +0100 Subject: [PATCH 582/643] added servercfgdefault --- ProjectZomboid/pzserver | 1 + 1 file changed, 1 insertion(+) diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 03117309b..3d758dd82 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -64,6 +64,7 @@ executable="./start-server.sh" servercfg="servertest.ini" servercfgdir="${HOME}/Zomboid/Server" servercfgfullpath="${servercfgdir}/${servercfg}" +servercfgdefault="${servercfgdir}/lgsm-default.ini" backupdir="${rootdir}/backups" # Logging From e9ed446618f9646bb2c0cb99212d510495249e3c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 14 May 2016 22:21:22 +0100 Subject: [PATCH 583/643] Setting up notification feature Improved email feature and adding support for pushbullet --- ...d_email_test.sh => command_comms_check.sh} | 13 +- lgsm/functions/command_monitor.sh | 7 +- lgsm/functions/comms.sh | 15 ++ lgsm/functions/comms_email.sh | 241 ++++++++++++++++++ lgsm/functions/comms_pushbullet.sh | 18 ++ lgsm/functions/core_functions.sh | 23 +- lgsm/functions/core_getopt.sh | 42 +-- lgsm/functions/email.sh | 67 ----- lgsm/functions/install_config.sh | 2 +- lgsm/functions/monitor_gsquery.sh | 4 +- 10 files changed, 326 insertions(+), 106 deletions(-) rename lgsm/functions/{command_email_test.sh => command_comms_check.sh} (54%) create mode 100644 lgsm/functions/comms.sh create mode 100644 lgsm/functions/comms_email.sh create mode 100644 lgsm/functions/comms_pushbullet.sh delete mode 100644 lgsm/functions/email.sh diff --git a/lgsm/functions/command_email_test.sh b/lgsm/functions/command_comms_check.sh similarity index 54% rename from lgsm/functions/command_email_test.sh rename to lgsm/functions/command_comms_check.sh index 9ef90bae5..6caafe777 100644 --- a/lgsm/functions/command_email_test.sh +++ b/lgsm/functions/command_comms_check.sh @@ -6,16 +6,15 @@ lgsm_version="271215" # Description: Sends a test email notification. -local modulename="Email" +local modulename="Comms Check" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh info_config.sh -if [ "${emailnotification}" = "on" ]; then - fn_scriptlog "Sending test notification" - subject="${servicename} Email Test Notification - Testing ${servername}" - failurereason="Testing ${servicename} email notification" - actiontaken="Sent test email...hello is this thing on?" - email.sh +if [ "${emailnotification}" = "on" ]||[ "${pushbulletnotification}" = "on" ]; then + fn_scriptlog "Sending Comms Check" + commssubject="LGSM - Comms Check -${servername}" + commsbody="LGSM testing comms, how you read?" + comms.sh else fn_print_fail_nl "Notifications not enabled" fn_scriptlog "Notifications not enabled" diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 66924d307..cb7c51d25 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -40,10 +40,9 @@ fn_monitor_msg_checking(){ fn_monitor_email_notification(){ # Email will be sent if enabled if [ "${emailnotification}" = "on" ]; then - subject="${servicename} Monitor - Starting ${servername}" - failurereason="${servicename} process not running" - actiontaken="${servicename} has been restarted" - email.sh + commssubject="LGSM - Restarted - ${servername}" + commsbody="${servicename} process not running" + comms.sh fi } diff --git a/lgsm/functions/comms.sh b/lgsm/functions/comms.sh new file mode 100644 index 000000000..ed1172cea --- /dev/null +++ b/lgsm/functions/comms.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# LGSM comms.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +lgsm_version="140516" + +# Description: Overall function for managing notifications. + +if [ "${emailnotification}" == "on" ]; then + comms_email.sh +fi + +if [ "${pushbulletnotification}" == "on" ]; then + comms_pushbullet.sh +fi \ No newline at end of file diff --git a/lgsm/functions/comms_email.sh b/lgsm/functions/comms_email.sh new file mode 100644 index 000000000..30601eb4f --- /dev/null +++ b/lgsm/functions/comms_email.sh @@ -0,0 +1,241 @@ +#!/bin/bash +# LGSM email.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +lgsm_version="140516" + +# Description: Sends email notification if monitor picks up a failure. + +local modulename="Email" + + +fn_details_email(){ + # + # Failure reason: Testing bb2-server email notification + # Action Taken: Sent test email...hello is this thing on? + + echo -e "${commsbody}" >> "${emaillog}" +} + + +fn_details_os(){ + # + # Distro Details + # ===================================== + # Distro: Ubuntu 14.04.4 LTS + # Arch: x86_64 + # Kernel: 3.13.0-79-generic + # Hostname: hostname + # tmux: tmux 1.8 + # GLIBC: 2.19 + + { + echo -e "" + echo -e "Distro Details" + echo -e "=================================" + echo -e "Distro: ${os}" + echo -e "Arch: ${arch}" + echo -e "Kernel: ${kernel}" + echo -e "Hostname: $HOSTNAME" + echo -e "tmux: ${tmuxv}" + echo -e "GLIBC: ${glibcversion}" + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" +} + +fn_details_performance(){ + # + # Performance + # ===================================== + # Uptime: 55d, 3h, 38m + # Avg Load: 1.00, 1.01, 0.78 + # + # Mem: total used free + # Physical: 741M 656M 85M + # Swap: 0B 0B 0B + + { + echo -e "" + echo -e "Performance" + echo -e "=================================" + echo -e "Uptime: ${days}d, ${hours}h, ${minutes}m" + echo -e "Avg Load: ${load}" + echo -e "" + echo -e "Mem: total used free" + echo -e "Physical: ${physmemtotal} ${physmemused} ${physmemfree}" + echo -e "Swap: ${swaptotal} ${swapused} ${swapfree}" + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" +} + +fn_details_disk(){ + # + # Storage + # ===================================== + # Filesystem: /dev/disk/by-uuid/320c8edd-a2ce-4a23-8c9d-e00a7af2d6ff + # Total: 15G + # Used: 8.4G + # Available: 5.7G + # Serverfiles: 961M + + { + echo -e "" + echo -e "Storage" + echo -e "=================================" + echo -e "Filesystem: ${filesystem}" + echo -e "Total: ${totalspace}" + echo -e "Used: ${usedspace}" + echo -e "Available: ${availspace}" + echo -e "Serverfiles: ${filesdirdu}" + if [ -d "${backupdir}" ]; then + echo -e "Backups: ${backupdirdu}" + fi + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" +} + + + +fn_details_gameserver(){ + # + # Quake Live Server Details + # ===================================== + # Server name: ql-server + # Server IP: 1.2.3.4:27960 + # RCON password: CHANGE_ME + # Server password: NOT SET + # Slots: 16 + # Status: OFFLINE + + { + echo -e "" + echo -e "${gamename} Server Details" + echo -e "=================================" + # Server name + echo -e "Server name: ${servername}" + + # Server ip + echo -e "Server IP: ${ip}:${port}" + + # Server password + if [ -n "${serverpassword}" ]; then + echo -e "Server password: ********" + fi + + # RCON password + if [ -n "${rconpassword}" ]; then + echo -e "RCON password: ********" + fi + + # Admin password + if [ -n "${adminpassword}" ]; then + echo -e "Admin password: ********" + fi + + # Stats password (Quake Live) + if [ -n "${statspassword}" ]; then + echo -e "Stats password: ********" + fi + + # Slots + if [ -n "${slots}" ]; then + echo -e "Slots: ${slots}" + fi + + # Game mode + if [ -n "${gamemode}" ]; then + echo -e "Game mode: ${gamemode}" + fi + + # Game world + if [ -n "${gameworld}" ]; then + echo -e "Game world: ${gameworld}" + fi + + # Tick rate + if [ -n "${tickrate}" ]; then + echo -e "Tick rate: ${tickrate}" + fi + + # Teamspeak dbplugin + if [ -n "${dbplugin}" ]; then + echo -e "dbplugin: ${dbplugin}" + fi + + # Online status + if [ "${status}" == "0" ]; then + echo -e "Status: OFFLINE" + else + echo -e "Status: ONLINE" + fi + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" +} + +fn_comms_email_template_logs(){ + { + echo -e "" + echo -e "${servicename} Logs" + echo -e "=================================" + + if [ -n "${scriptlog}" ]; then + echo -e "\nScript log\n===================" + if [ ! "$(ls -A ${scriptlogdir})" ]; then + echo "${scriptlogdir} (NO LOG FILES)" + elif [ ! -s "${scriptlog}" ]; then + echo "${scriptlog} (LOG FILE IS EMPTY)" + else + echo "${scriptlog}" + tail -25 "${scriptlog}" + fi + echo "" + fi + + if [ -n "${consolelog}" ]; then + echo -e "\nConsole log\n====================" + if [ ! "$(ls -A ${consolelogdir})" ]; then + echo "${consolelogdir} (NO LOG FILES)" + elif [ ! -s "${consolelog}" ]; then + echo "${consolelog} (LOG FILE IS EMPTY)" + else + echo "${consolelog}" + tail -25 "${consolelog}" | awk '{ sub("\r$", ""); print }' + fi + echo "" + fi + + if [ -n "${gamelogdir}" ]; then + echo -e "\nServer log\n===================" + if [ ! "$(ls -A ${gamelogdir})" ]; then + echo "${gamelogdir} (NO LOG FILES)" + else + echo "${gamelogdir}" + tail "${gamelogdir}"/* | grep -v "==>" | sed '/^$/d' | tail -25 + fi + echo "" + fi + + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" +} + +fn_print_dots "Sending notification to ${email}" +info_distro.sh +info_config.sh +info_glibc.sh +check_ip.sh + +emaillog="${emaillog}" +if [ -f "${emaillog}" ]; then + rm "${emaillog}" +fi +fn_details_email +fn_details_os +fn_details_performance +fn_details_disk +fn_details_gameserver +fn_comms_email_template_logs +mail -s "${commssubject}" "${email}" < "${emaillog}" +exitcode=$? +if [ "${exitcode}" == "0" ]; then + fn_print_ok_nl "Sending notification to ${email}" + fn_scriptlog "Success! Sending notification to ${email}" +else + fn_print_fail_nl "Sending notification to ${email}" + fn_scriptlog "Failure! Sending notification to ${email}" +fi \ No newline at end of file diff --git a/lgsm/functions/comms_pushbullet.sh b/lgsm/functions/comms_pushbullet.sh new file mode 100644 index 000000000..3ff45e55d --- /dev/null +++ b/lgsm/functions/comms_pushbullet.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# LGSM comms_pushbullet.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +lgsm_version="140516" + +# Description: Notifications using pushbullet. + +fn_comms_pushbullet() { + PUSHBULLET_TOKEN="userTokenHere"; + curl -u """$pushbullettoken"":" -d type="note" -d body="${commsbody}" -d title="${commstitle}" 'https://api.pushbullet.com/v2/pushes' >/dev/null 2>&1 + echo "Message send to pushbullet."; +} + +pushbulletnotification="on" +pushbullettoken="" +commsbody="${servicename} process not running" +fn_comms_pushbullet \ No newline at end of file diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 1598157b5..e46fe897f 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -2,7 +2,7 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060516" +lgsm_version="140516" # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. @@ -19,6 +19,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } + # fn_fetch_core_dl also placed here to allow legecy servers to still download core functions if [ -z "${lgsmdir}" ]; then lgsmdir="${rootdir}/lgsm" @@ -92,6 +93,7 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } + # Command command_console.sh(){ @@ -109,7 +111,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } -command_email_test.sh(){ +command_comms_check.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } @@ -329,9 +331,20 @@ functionfile="${FUNCNAME}" fn_fetch_function } -# Email -email.sh(){ +# Comms + +comms.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +comms_email.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +comms_pushbullet.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } @@ -351,6 +364,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } + # Update update_check.sh(){ @@ -462,6 +476,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } + # Calls on-screen messages core_messages.sh diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 0d115ffaa..f4bb7e9a6 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -25,8 +25,8 @@ case "$getopt" in command_validate.sh;; m|monitor) command_monitor.sh;; - et|email-test) - command_email_test.sh;; + et|comms-check) + command_comms_check.sh;; dt|details) command_details.sh;; b|backup) @@ -58,7 +58,7 @@ case "$getopt" in echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mvalidate\t\e[0mv |Validate server files with SteamCMD." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." @@ -84,8 +84,8 @@ case "$getopt" in command_update_functions.sh;; m|monitor) command_monitor.sh;; - et|email-test) - command_email_test.sh;; + et|comms-check) + command_comms_check.sh;; dt|details) command_details.sh;; b|backup) @@ -113,7 +113,7 @@ case "$getopt" in echo -e "\e[34mupdate\t\e[0mu |Checks and applies updates from SteamCMD." echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mchange-password\t\e[0mpw |Changes TS3 serveradmin password." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." @@ -136,8 +136,8 @@ case "$getopt" in command_update_functions.sh;; m|monitor) command_monitor.sh;; - et|email-test) - command_email_test.sh;; + et|comms-check) + command_comms_check.sh;; b|backup) command_backup.sh;; dev|dev-debug) @@ -160,7 +160,7 @@ case "$getopt" in echo -e "\e[34mrestart\t\e[0mr |Restart the server." echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." @@ -188,8 +188,8 @@ case "$getopt" in command_validate.sh;; m|monitor) command_monitor.sh;; - et|email-test) - command_email_test.sh;; + et|comms-check) + command_comms_check.sh;; dt|details) command_details.sh;; b|backup) @@ -223,7 +223,7 @@ case "$getopt" in echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mvalidate\t\e[0mv |Validate server files with SteamCMD." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." @@ -248,8 +248,8 @@ case "$getopt" in command_update_functions.sh;; m|monitor) command_monitor.sh;; - et|email-test) - command_email_test.sh;; + et|comms-check) + command_comms_check.sh;; dt|details) command_details.sh;; b|backup) @@ -280,7 +280,7 @@ case "$getopt" in echo -e "\e[34mrestart\t\e[0mr |Restart the server." echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." @@ -313,8 +313,8 @@ case "$getopt" in command_validate.sh;; m|monitor) command_monitor.sh;; - et|email-test) - command_email_test.sh;; + et|comms-check) + command_comms_check.sh;; dt|details) command_details.sh;; b|backup) @@ -348,7 +348,7 @@ case "$getopt" in echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mvalidate\t\e[0mv |Validate server files with SteamCMD." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." @@ -374,8 +374,8 @@ case "$getopt" in command_update_functions.sh;; m|monitor) command_monitor.sh;; - et|email-test) - command_email_test.sh;; + et|comms-check) + command_comms_check.sh;; dt|details) command_details.sh;; b|backup) @@ -408,7 +408,7 @@ case "$getopt" in echo -e "\e[34mrestart\t\e[0mr |Restart the server." echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34memail-test\t\e[0met |Sends test monitor email." + echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." diff --git a/lgsm/functions/email.sh b/lgsm/functions/email.sh deleted file mode 100644 index b1585a242..000000000 --- a/lgsm/functions/email.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -# LGSM email.sh function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="240416" - -# Description: Sends email notification if monitor picks up a failure. - -local modulename="Email" -fn_print_dots "Sending notification to ${email}" -info_distro.sh -info_config.sh -check_ip.sh -if [ $(type -t fn_parms;echo $?) == 0 ]; then - fn_parms -fi -{ - echo -e "========================================\n${servicename} details\n========================================" - echo -e "Service name: ${servicename}" - echo -e "Server name: ${servername}" - echo -e "Game name: ${gamename}" - echo -e "Server IP: ${ip}:${port}" - echo -e "Failure reason: ${failurereason}" - echo -e "Action Taken: ${actiontaken}\n" - echo -e "" - echo -e "========================================\nDistro Details\n========================================" - echo -e "Date: $(date)" - echo -e "Distro: ${os}" - echo -e "Arch: ${arch}" - echo -e "Kernel: ${kernel}" - echo -e "Hostname: $HOSTNAME" - echo -e "tmux: ${tmuxv}" - echo -e "GLIBC: ${glibcversion}" - echo -e "" - echo -e "========================================\nPerformance\n========================================" - echo -e "Uptime: ${days}d, ${hours}h, ${minutes}m" - echo -e "Avg Load: ${load}" - echo -e "" - echo -e "Mem: total used free" - echo -e "Physical: ${physmemtotal} ${physmemused} ${physmemfree}" - echo -e "Swap: ${swaptotal}${swapused} ${swapfree}" - echo -e "" - echo -e "========================================\nStorage\n========================================" - echo -e "\e[34mFilesystem:\t\e[0m${filesystem}" - echo -e "\e[34mTotal:\t\e[0m${totalspace}" - echo -e "\e[34mUsed:\t\e[0m${usedspace}" - echo -e "\e[34mAvailable:\t\e[0m${availspace}" - echo -e "\e[34mServerfiles:\t\e[0m${filesdirdu}" - if [ -d "${backupdir}" ]; then - echo -e "\e[34mBackups:\t\e[0m${backupdirdu}" - fi - echo -e "" - echo -e "========================================\nLogs\n========================================" -}| sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee "${scriptlogdir}/${servicename}-email.log" > /dev/null 2>&1 -echo -e "\n\n Script log\n===================" >> "${emaillog}" -tail -25 "${scriptlog}" >> "${emaillog}" -if [ -n "${consolelog}" ]; then - echo -e "\n\n Console log\n====================" >> "${emaillog}" - tail -25 "${consolelog}" | awk '{ sub("\r$", ""); print }' >> "${emaillog}" -fi -if [ -n "${gamelogdir}" ]; then - echo -e "\n\n Server log\n====================" >> "${emaillog}" - tail "${gamelogdir}"/* | grep -v "==>" | sed '/^$/d' | tail -25 >> "${emaillog}" -fi -mail -s "${subject}" ${email} < "${emaillog}" -fn_print_ok_nl "Sending notification to ${email}" -fn_scriptlog "Sent notification to ${email}" \ No newline at end of file diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 60fa071c4..e1e7ee5d7 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -33,7 +33,7 @@ fn_userinputconfig(){ sleep 1 } - fn_arma3config(){ +fn_arma3config(){ fn_defaultconfig echo "creating ${networkcfg} config file." cp -v "${networkcfgdefault}" "${networkcfgfullpath}" diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 621afe998..aae83f782 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -68,12 +68,12 @@ if [ "${gsquery}" == "yes" ]; then fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : FAIL" sleep 1 - # Send email notification if enabled + # Send notification if enabled if [ "${emailnotification}" == "on" ]; then subject="${servicename} Monitor - Starting ${servername}" failurereason="Failed to query ${servicename}: ${gsquerycmd}" actiontaken="restarted ${servicename}" - email.sh + comms.sh fi fn_restart break From a443b2636a1e7632f0742af4264ffdda845af0f0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 14 May 2016 22:41:52 +0100 Subject: [PATCH 584/643] misc improvements --- lgsm/functions/command_comms_check.sh | 3 ++- lgsm/functions/comms_pushbullet.sh | 13 +++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/lgsm/functions/command_comms_check.sh b/lgsm/functions/command_comms_check.sh index 6caafe777..dcf173661 100644 --- a/lgsm/functions/command_comms_check.sh +++ b/lgsm/functions/command_comms_check.sh @@ -2,12 +2,13 @@ # LGSM command_email_test.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="140516" # Description: Sends a test email notification. local modulename="Comms Check" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + check.sh info_config.sh if [ "${emailnotification}" = "on" ]||[ "${pushbulletnotification}" = "on" ]; then diff --git a/lgsm/functions/comms_pushbullet.sh b/lgsm/functions/comms_pushbullet.sh index 3ff45e55d..2f0138a0c 100644 --- a/lgsm/functions/comms_pushbullet.sh +++ b/lgsm/functions/comms_pushbullet.sh @@ -6,13 +6,6 @@ lgsm_version="140516" # Description: Notifications using pushbullet. -fn_comms_pushbullet() { - PUSHBULLET_TOKEN="userTokenHere"; - curl -u """$pushbullettoken"":" -d type="note" -d body="${commsbody}" -d title="${commstitle}" 'https://api.pushbullet.com/v2/pushes' >/dev/null 2>&1 - echo "Message send to pushbullet."; -} - -pushbulletnotification="on" -pushbullettoken="" -commsbody="${servicename} process not running" -fn_comms_pushbullet \ No newline at end of file +curl -u """${pushbullettoken}"":" -d type="note" -d body="${commsbody}" -d title="${commstitle}" 'https://api.pushbullet.com/v2/pushes' >/dev/null 2>&1 +fn_print_ok_nl "Sent Pushbullet notification" +fn_scriptlog "Sent Pushbullet notification" From edbab1852f5496cff882fa0724e613484958bd87 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 14 May 2016 22:43:48 +0100 Subject: [PATCH 585/643] corrected function name --- lgsm/functions/comms_pushbullet.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/comms_pushbullet.sh b/lgsm/functions/comms_pushbullet.sh index 2f0138a0c..8cca21483 100644 --- a/lgsm/functions/comms_pushbullet.sh +++ b/lgsm/functions/comms_pushbullet.sh @@ -6,6 +6,6 @@ lgsm_version="140516" # Description: Notifications using pushbullet. -curl -u """${pushbullettoken}"":" -d type="note" -d body="${commsbody}" -d title="${commstitle}" 'https://api.pushbullet.com/v2/pushes' >/dev/null 2>&1 +curl -u """${pushbullettoken}"":" -d type="note" -d body="${commsbody}" -d title="${commssubject}" 'https://api.pushbullet.com/v2/pushes' >/dev/null 2>&1 fn_print_ok_nl "Sent Pushbullet notification" fn_scriptlog "Sent Pushbullet notification" From ed8a0fc42b9e41d3175e1634ed4035212e66d2b3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 14 May 2016 23:05:18 +0100 Subject: [PATCH 586/643] check that token and email are present --- lgsm/functions/command_comms_check.sh | 4 ++-- lgsm/functions/comms.sh | 4 ++-- lgsm/functions/comms_pushbullet.sh | 3 +++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/command_comms_check.sh b/lgsm/functions/command_comms_check.sh index dcf173661..1d401d948 100644 --- a/lgsm/functions/command_comms_check.sh +++ b/lgsm/functions/command_comms_check.sh @@ -6,14 +6,14 @@ lgsm_version="140516" # Description: Sends a test email notification. -local modulename="Comms Check" +local modulename="Comms" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh info_config.sh if [ "${emailnotification}" = "on" ]||[ "${pushbulletnotification}" = "on" ]; then fn_scriptlog "Sending Comms Check" - commssubject="LGSM - Comms Check -${servername}" + commssubject="LGSM - Comms Check - ${servername}" commsbody="LGSM testing comms, how you read?" comms.sh else diff --git a/lgsm/functions/comms.sh b/lgsm/functions/comms.sh index ed1172cea..1d5a9a091 100644 --- a/lgsm/functions/comms.sh +++ b/lgsm/functions/comms.sh @@ -6,10 +6,10 @@ lgsm_version="140516" # Description: Overall function for managing notifications. -if [ "${emailnotification}" == "on" ]; then +if [ "${emailnotification}" == "on" ]||[ -n "${email}" ]; then comms_email.sh fi -if [ "${pushbulletnotification}" == "on" ]; then +if [ "${pushbulletnotification}" == "on" ]||[ -n "${pushbullettoken}" ]; then comms_pushbullet.sh fi \ No newline at end of file diff --git a/lgsm/functions/comms_pushbullet.sh b/lgsm/functions/comms_pushbullet.sh index 8cca21483..def5717e9 100644 --- a/lgsm/functions/comms_pushbullet.sh +++ b/lgsm/functions/comms_pushbullet.sh @@ -6,6 +6,9 @@ lgsm_version="140516" # Description: Notifications using pushbullet. +local modulename="Comms" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + curl -u """${pushbullettoken}"":" -d type="note" -d body="${commsbody}" -d title="${commssubject}" 'https://api.pushbullet.com/v2/pushes' >/dev/null 2>&1 fn_print_ok_nl "Sent Pushbullet notification" fn_scriptlog "Sent Pushbullet notification" From 885d3b118bfd1fa90fb7bea18f86992486941e1c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 15 May 2016 14:32:21 +0100 Subject: [PATCH 587/643] notifications are now called alerts Added pushbullet support to all servers --- 7DaysToDie/sdtdserver | 11 ++++- ARKSurvivalEvolved/arkserver | 11 ++++- Arma3/arma3server | 11 ++++- BlackMesa/bmdmserver | 11 ++++- BladeSymphony/bsserver | 11 ++++- BrainBread2/bb2server | 11 ++++- CodenameCURE/ccserver | 11 ++++- CounterStrike/csserver | 11 ++++- CounterStrikeConditionZero/csczserver | 11 ++++- CounterStrikeGlobalOffensive/csgoserver | 11 ++++- CounterStrikeSource/cssserver | 11 ++++- DayOfDefeat/dodserver | 11 ++++- DayOfDefeatSource/dodsserver | 11 ++++- DeathmatchClassic/dmcserver | 11 ++++- DontStarveTogether/dstserver | 11 ++++- DoubleActionBoogaloo/dabserver | 11 ++++- FistfulOfFrags/fofserver | 11 ++++- GarrysMod/gmodserver | 11 ++++- GoldenEyeSource/gesserver | 11 ++++- HalfLife2Deathmatch/hl2dmserver | 11 ++++- HalfLifeDeathmatch/hldmserver | 11 ++++- HalfLifeDeathmatchSource/hldmsserver | 11 ++++- Hurtworld/hwserver | 11 ++++- Insurgency/insserver | 11 ++++- JustCause2/jc2server | 11 ++++- KillingFloor/kfserver | 11 ++++- Left4Dead/l4dserver | 11 ++++- Left4Dead2/l4d2server | 14 ++++++- Mumble/mumbleserver | 11 ++++- NS2Combat/ns2cserver | 11 ++++- NaturalSelection2/ns2server | 11 ++++- NoMoreRoomInHell/nmrihserver | 11 ++++- OpposingForce/opforserver | 11 ++++- PiratesVikingandKnightsII/pvkiiserver | 11 ++++- ProjectZomboid/pzserver | 11 ++++- QuakeLive/qlserver | 11 ++++- README.md | 5 ++- RedOrchestra/roserver | 11 ++++- Ricochet/ricochetserver | 11 ++++- Rust/rustserver | 11 ++++- SeriousSam3BFE/ss3sserver | 11 ++++- StarBound/sbserver | 11 ++++- SvenCoop/svencoopserver | 11 ++++- TeamFortress2/tf2server | 11 ++++- TeamFortressClassic/tfcserver | 11 ++++- TeamSpeak3/ts3server | 11 ++++- Teeworlds/twserver | 11 ++++- Terraria/terrariaserver | 11 ++++- UnrealTournament2004/ut2k4server | 11 ++++- UnrealTournament99/ut99server | 11 ++++- lgsm/functions/alert.sh | 15 +++++++ .../{comms_email.sh => alert_email.sh} | 24 +++++------ lgsm/functions/alert_pushbullet.sh | 14 +++++++ lgsm/functions/check_deps.sh | 4 +- lgsm/functions/command_comms_check.sh | 22 ---------- lgsm/functions/command_details.sh | 6 +-- lgsm/functions/command_monitor.sh | 14 +++---- lgsm/functions/command_test_alert.sh | 22 ++++++++++ lgsm/functions/comms.sh | 15 ------- lgsm/functions/comms_pushbullet.sh | 14 ------- lgsm/functions/core_functions.sh | 10 ++--- lgsm/functions/core_getopt.sh | 42 +++++++++---------- lgsm/functions/monitor_gsquery.sh | 6 +-- tests/tests_jc2server.sh | 6 +-- tests/tests_ts3server.sh | 6 +-- 65 files changed, 557 insertions(+), 210 deletions(-) create mode 100644 lgsm/functions/alert.sh rename lgsm/functions/{comms_email.sh => alert_email.sh} (89%) create mode 100644 lgsm/functions/alert_pushbullet.sh delete mode 100644 lgsm/functions/command_comms_check.sh create mode 100644 lgsm/functions/command_test_alert.sh delete mode 100644 lgsm/functions/comms.sh delete mode 100644 lgsm/functions/comms_pushbullet.sh diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 116eb9ce6..82b8d91b4 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 90d262694..17e3e5d78 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/Arma3/arma3server b/Arma3/arma3server index 7215de44d..a13da2112 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,11 +14,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 6d8ffbc2e..1a2041f85 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 87c48e89c..aecefd762 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 2afc3fe32..ac24012fd 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 7b4b0dde6..8fe4042fd 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 55b9d4b35..84b161835 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 9f0df0574..e2cfa1d5d 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 3e1b51874..74755e92b 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 7ab14251b..59f0bcc47 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 20444a2de..1a4ad7f93 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 8a13ced73..a169281d0 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 49e204d51..c4555e9eb 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 09f54a6de..c118ee466 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -13,11 +13,18 @@ version="130516" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 24f2dafdc..1277563ed 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index ff1a02a24..259464c7a 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 212072989..53d8b1628 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index cbc710bc7..90339be94 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,11 +14,18 @@ version="150316" #### Variables #### export MALLOC_CHECK_=0 -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index b67986749..b7c08dd6a 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 55f5fd749..d60aa3693 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 9db71678c..864549967 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 47be057d8..e46a9a94b 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,11 +14,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/Insurgency/insserver b/Insurgency/insserver index 4803e65dd..5edc7c55e 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 5cb7ca499..c0222fccf 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 9ce398a66..9fbee8f44 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index a02794d06..67d4b1024 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,11 +14,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 20add85dd..ef4710ab3 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -13,11 +13,21 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + +# Pushover +#Push alot + # Steam login steamuser="anonymous" steampass="" diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index e7302f9be..e64580c14 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Server Details gamename="Mumble" servicename="mumble-server" diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index f0f9df415..4b4628724 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -13,11 +13,18 @@ version="220416" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 9c6906d6b..a89192c53 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -13,11 +13,18 @@ version="220416" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index c8de59f28..1f0a3ce7a 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 5f00c4e1c..1da4dc2ce 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 42ab9aac3..05956597e 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 3d758dd82..c8c3ae07a 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,11 +14,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index c65da408a..f47aee840 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -13,11 +13,18 @@ version="060516" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/README.md b/README.md index c4c61df3a..6d395dafb 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [](https://travis-ci.org/dgibbs64/linuxgsm) [](http://waffle.io/dgibbs64/linuxgsm) -The Linux Game Server Managers are command line tools for quick, simple deployment and management of various dedicated game servers and voice comms servers. +The Linux Game Server Managers are command line tools for quick, simple deployment and management of various dedicated game servers and voice alert servers. <h2>Hassle-Free Dedicated Servers</h2> Game servers traditionally are not easy to manage yourself. Admins often have to spend hours just messing around trying to get their server working. LGSM is designed to be a simple as possible allowing Admins to spend less time on management and more time on the fun stuff. @@ -15,7 +15,8 @@ Game servers traditionally are not easy to manage yourself. Admins often have to <li>Console</li> <li>Details</li> <li>Installer (SteamCMD)</li> - <li>Monitor (including email notification)</li> + <li>Monitor</li> + <li>Alerts (Email, Pushbullet)</li> <li>Update (SteamCMD)</li> <li>Start/Stop/Restart server</li> </ul> diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 84d00b6f8..a9e1f2afd 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 067065811..b1173fd90 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/Rust/rustserver b/Rust/rustserver index b3a972c1d..119fb9115 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,11 +14,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login (not required) steamuser="anonymous" steampass="" diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 60bcc0230..8905df1b2 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/StarBound/sbserver b/StarBound/sbserver index 881d6c5fc..9fa5e639a 100644 --- a/StarBound/sbserver +++ b/StarBound/sbserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/SvenCoop/svencoopserver b/SvenCoop/svencoopserver index 9d2ceb2f9..6daa9d75d 100644 --- a/SvenCoop/svencoopserver +++ b/SvenCoop/svencoopserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 671942f71..4f8d0d6df 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index fbcbe3227..0093b7721 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="anonymous" steampass="" diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 835113f78..b60066782 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Start Variables updateonstart="off" diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 19a766260..aa45d1376 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,11 +14,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 7e1b35db2..32151b0ab 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,11 +14,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Steam login steamuser="username" steampass="password" diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index f0d1efc29..9a3362bf7 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Start Variables defaultmap="DM-Rankin" ip="0.0.0.0" diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 890f028c6..4c8e50635 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -13,11 +13,18 @@ version="150316" #### Variables #### -# Notification Email +# Notification Alerts # (on|off) -emailnotification="off" + +# Email +emailalert="off" email="email@example.com" +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert"off" +pushbullettoken="accesstoken" + # Start Variables defaultmap="DM-Deck16][" ip="0.0.0.0" diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh new file mode 100644 index 000000000..e904933c8 --- /dev/null +++ b/lgsm/functions/alert.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# LGSM alert.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +lgsm_version="140516" + +# Description: Overall function for managing alerts. + +if [ "${emailalert}" == "on" ]||[ -n "${email}" ]; then + alert_email.sh +fi + +if [ "${pushbulletalert}" == "on" ]||[ -n "${pushbullettoken}" ]; then + alert_pushbullet.sh +fi \ No newline at end of file diff --git a/lgsm/functions/comms_email.sh b/lgsm/functions/alert_email.sh similarity index 89% rename from lgsm/functions/comms_email.sh rename to lgsm/functions/alert_email.sh index 30601eb4f..4d84a65a7 100644 --- a/lgsm/functions/comms_email.sh +++ b/lgsm/functions/alert_email.sh @@ -4,17 +4,17 @@ # Website: https://gameservermanagers.com lgsm_version="140516" -# Description: Sends email notification if monitor picks up a failure. +# Description: Sends email alert if monitor picks up a failure. -local modulename="Email" +local modulename="Alert" fn_details_email(){ # - # Failure reason: Testing bb2-server email notification + # Failure reason: Testing bb2-server email alert # Action Taken: Sent test email...hello is this thing on? - echo -e "${commsbody}" >> "${emaillog}" + echo -e "${alertbody}" >> "${emaillog}" } @@ -168,7 +168,7 @@ fn_details_gameserver(){ } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" } -fn_comms_email_template_logs(){ +fn_alert_email_template_logs(){ { echo -e "" echo -e "${servicename} Logs" @@ -214,7 +214,7 @@ fn_comms_email_template_logs(){ } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" } -fn_print_dots "Sending notification to ${email}" +fn_print_dots "Sending alert to ${email}" info_distro.sh info_config.sh info_glibc.sh @@ -229,13 +229,13 @@ fn_details_os fn_details_performance fn_details_disk fn_details_gameserver -fn_comms_email_template_logs -mail -s "${commssubject}" "${email}" < "${emaillog}" +fn_alert_email_template_logs +mail -s "${alertsubject}" "${email}" < "${emaillog}" exitcode=$? if [ "${exitcode}" == "0" ]; then - fn_print_ok_nl "Sending notification to ${email}" - fn_scriptlog "Success! Sending notification to ${email}" + fn_print_ok_nl "Sending alert to ${email}" + fn_scriptlog "Success! Sending alert to ${email}" else - fn_print_fail_nl "Sending notification to ${email}" - fn_scriptlog "Failure! Sending notification to ${email}" + fn_print_fail_nl "Sending alert to ${email}" + fn_scriptlog "Failure! Sending alert to ${email}" fi \ No newline at end of file diff --git a/lgsm/functions/alert_pushbullet.sh b/lgsm/functions/alert_pushbullet.sh new file mode 100644 index 000000000..f47ad7e30 --- /dev/null +++ b/lgsm/functions/alert_pushbullet.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# LGSM alert_pushbullet.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +lgsm_version="140516" + +# Description: alerts using pushbullet. + +local modulename="Alert" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +curl -u """${pushbullettoken}"":" -d type="note" -d body="${alertbody}" -d title="${alertsubject}" 'https://api.pushbullet.com/v2/pushes' >/dev/null 2>&1 +fn_print_ok_nl "Sent Pushbullet alert" +fn_scriptlog "Sent Pushbullet alert" diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 8f9de49f8..49498d2ff 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -38,8 +38,8 @@ fn_deps_detector(){ } fn_deps_email(){ - # Adds postfix to required dependencies if email notification is enabled - if [ "${emailnotification}" == "on" ]; then + # Adds postfix to required dependencies if email alert is enabled + if [ "${emailalert}" == "on" ]; then if [ -f /usr/bin/mailx ]; then if [ -d /etc/exim4 ]; then array_deps_required+=( exim4 ) diff --git a/lgsm/functions/command_comms_check.sh b/lgsm/functions/command_comms_check.sh deleted file mode 100644 index 1d401d948..000000000 --- a/lgsm/functions/command_comms_check.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# LGSM command_email_test.sh function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="140516" - -# Description: Sends a test email notification. - -local modulename="Comms" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -check.sh -info_config.sh -if [ "${emailnotification}" = "on" ]||[ "${pushbulletnotification}" = "on" ]; then - fn_scriptlog "Sending Comms Check" - commssubject="LGSM - Comms Check - ${servername}" - commsbody="LGSM testing comms, how you read?" - comms.sh -else - fn_print_fail_nl "Notifications not enabled" - fn_scriptlog "Notifications not enabled" -fi \ No newline at end of file diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 6ae55f7e1..9fe4ac6bf 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -169,7 +169,7 @@ fn_details_script(){ # Service name: ql-server # qlserver version: 150316 # User: lgsm - # Email notification: off + # Email alert: off # Update on start: off # Location: /home/lgsm/qlserver # Config file: /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg @@ -205,8 +205,8 @@ fn_details_script(){ fi fi - # Email notification - echo -e "\e[34mEmail notification:\t\e[0m${emailnotification}" + # Email alert + echo -e "\e[34mEmail alert:\t\e[0m${emailalert}" # Update on start echo -e "\e[34mUpdate on start:\t\e[0m${updateonstart}" diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index cb7c51d25..b86a6047d 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -37,12 +37,12 @@ fn_monitor_msg_checking(){ sleep 1 } -fn_monitor_email_notification(){ +fn_monitor_email_alert(){ # Email will be sent if enabled - if [ "${emailnotification}" = "on" ]; then - commssubject="LGSM - Restarted - ${servername}" - commsbody="${servicename} process not running" - comms.sh + if [ "${emailalert}" = "on" ]; then + alertsubject="LGSM - Restarted - ${servername}" + alertbody="${servicename} process not running" + alert.sh fi } @@ -57,7 +57,7 @@ fn_monitor_teamspeak3(){ fn_print_fail_eol_nl fn_scriptlog "Checking session: ${ts3error}: FAIL" failurereason="${ts3error}" - fn_monitor_email_notification + fn_monitor_email_alert fi fn_scriptlog "Monitor is starting ${servername}" sleep 1 @@ -83,7 +83,7 @@ fn_monitor_tmux(){ fn_print_fail "Checking session: " fn_print_fail_eol_nl fn_scriptlog "Checking session: FAIL" - fn_monitor_email_notification + fn_monitor_email_alert fn_scriptlog "Monitor is starting ${servername}" sleep 1 command_start.sh diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh new file mode 100644 index 000000000..81f8be423 --- /dev/null +++ b/lgsm/functions/command_test_alert.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# LGSM command_email_test.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +lgsm_version="140516" + +# Description: Sends a test email alert. + +local modulename="Alert" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh +info_config.sh +if [ "${emailalert}" = "on" ]||[ "${pushbulletalert}" = "on" ]; then + fn_scriptlog "Sending alert Check" + alertsubject="LGSM - alert Check - ${servername}" + alertbody="LGSM testing alert, how you read?" + alert.sh +else + fn_print_fail_nl "alerts not enabled" + fn_scriptlog "alerts not enabled" +fi \ No newline at end of file diff --git a/lgsm/functions/comms.sh b/lgsm/functions/comms.sh deleted file mode 100644 index 1d5a9a091..000000000 --- a/lgsm/functions/comms.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# LGSM comms.sh function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="140516" - -# Description: Overall function for managing notifications. - -if [ "${emailnotification}" == "on" ]||[ -n "${email}" ]; then - comms_email.sh -fi - -if [ "${pushbulletnotification}" == "on" ]||[ -n "${pushbullettoken}" ]; then - comms_pushbullet.sh -fi \ No newline at end of file diff --git a/lgsm/functions/comms_pushbullet.sh b/lgsm/functions/comms_pushbullet.sh deleted file mode 100644 index def5717e9..000000000 --- a/lgsm/functions/comms_pushbullet.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# LGSM comms_pushbullet.sh function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="140516" - -# Description: Notifications using pushbullet. - -local modulename="Comms" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -curl -u """${pushbullettoken}"":" -d type="note" -d body="${commsbody}" -d title="${commssubject}" 'https://api.pushbullet.com/v2/pushes' >/dev/null 2>&1 -fn_print_ok_nl "Sent Pushbullet notification" -fn_scriptlog "Sent Pushbullet notification" diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index e46fe897f..c7d4451bc 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -111,7 +111,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } -command_comms_check.sh(){ +command_test_alert.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } @@ -332,19 +332,19 @@ fn_fetch_function } -# Comms +# Alert -comms.sh(){ +alert.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } -comms_email.sh(){ +alert_email.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } -comms_pushbullet.sh(){ +alert_pushbullet.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index f4bb7e9a6..c38df7e99 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -25,8 +25,8 @@ case "$getopt" in command_validate.sh;; m|monitor) command_monitor.sh;; - et|comms-check) - command_comms_check.sh;; + ct|test-alert) + command_test_alert.sh;; dt|details) command_details.sh;; b|backup) @@ -58,7 +58,7 @@ case "$getopt" in echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mvalidate\t\e[0mv |Validate server files with SteamCMD." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." + echo -e "\e[34mtest-alert\t\e[0mta |Sends test alert." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." @@ -84,8 +84,8 @@ case "$getopt" in command_update_functions.sh;; m|monitor) command_monitor.sh;; - et|comms-check) - command_comms_check.sh;; + et|test-alert) + command_test_alert.sh;; dt|details) command_details.sh;; b|backup) @@ -113,7 +113,7 @@ case "$getopt" in echo -e "\e[34mupdate\t\e[0mu |Checks and applies updates from SteamCMD." echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." + echo -e "\e[34mtest-alert\t\e[0mta |Sends test alert." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mchange-password\t\e[0mpw |Changes TS3 serveradmin password." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." @@ -136,8 +136,8 @@ case "$getopt" in command_update_functions.sh;; m|monitor) command_monitor.sh;; - et|comms-check) - command_comms_check.sh;; + et|test-alert) + command_test_alert.sh;; b|backup) command_backup.sh;; dev|dev-debug) @@ -160,7 +160,7 @@ case "$getopt" in echo -e "\e[34mrestart\t\e[0mr |Restart the server." echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." + echo -e "\e[34mtest-alert\t\e[0mta |Sends test alert." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." @@ -188,8 +188,8 @@ case "$getopt" in command_validate.sh;; m|monitor) command_monitor.sh;; - et|comms-check) - command_comms_check.sh;; + et|test-alert) + command_test_alert.sh;; dt|details) command_details.sh;; b|backup) @@ -223,7 +223,7 @@ case "$getopt" in echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mvalidate\t\e[0mv |Validate server files with SteamCMD." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." + echo -e "\e[34mtest-alert\t\e[0mta |Sends test alert." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." @@ -248,8 +248,8 @@ case "$getopt" in command_update_functions.sh;; m|monitor) command_monitor.sh;; - et|comms-check) - command_comms_check.sh;; + et|test-alert) + command_test_alert.sh;; dt|details) command_details.sh;; b|backup) @@ -280,7 +280,7 @@ case "$getopt" in echo -e "\e[34mrestart\t\e[0mr |Restart the server." echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." + echo -e "\e[34mtest-alert\t\e[0mta |Sends test alert." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." @@ -313,8 +313,8 @@ case "$getopt" in command_validate.sh;; m|monitor) command_monitor.sh;; - et|comms-check) - command_comms_check.sh;; + et|test-alert) + command_test_alert.sh;; dt|details) command_details.sh;; b|backup) @@ -348,7 +348,7 @@ case "$getopt" in echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mvalidate\t\e[0mv |Validate server files with SteamCMD." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." + echo -e "\e[34mtest-alert\t\e[0mta |Sends test alert." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." @@ -374,8 +374,8 @@ case "$getopt" in command_update_functions.sh;; m|monitor) command_monitor.sh;; - et|comms-check) - command_comms_check.sh;; + et|test-alert) + command_test_alert.sh;; dt|details) command_details.sh;; b|backup) @@ -408,7 +408,7 @@ case "$getopt" in echo -e "\e[34mrestart\t\e[0mr |Restart the server." echo -e "\e[34mupdate-functions\t\e[0muf |Removes all functions so latest can be downloaded." echo -e "\e[34mmonitor\t\e[0mm |Checks that the server is running." - echo -e "\e[34mcomms-check\t\e[0met |Sends test notification." + echo -e "\e[34mtest-alert\t\e[0mta |Sends test alert." echo -e "\e[34mdetails\t\e[0mdt |Displays useful infomation about the server." echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index aae83f782..20c7dc3ce 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -68,12 +68,12 @@ if [ "${gsquery}" == "yes" ]; then fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : FAIL" sleep 1 - # Send notification if enabled - if [ "${emailnotification}" == "on" ]; then + # Send alert if enabled + if [ "${emailalert}" == "on" ]; then subject="${servicename} Monitor - Starting ${servername}" failurereason="Failed to query ${servicename}: ${gsquerycmd}" actiontaken="restarted ${servicename}" - comms.sh + alert.sh fi fn_restart break diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index d578b22f4..eac77ae7c 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -7,10 +7,10 @@ version="271215" #### Variables #### -# Notification Email +# Alert Email # (on|off) -emailnotification="on" -email="me@danielgibbs.co.uk" +emailalert="off" +email="" # Steam login steamuser="anonymous" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 382a9f9be..e9604c7d9 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -7,10 +7,10 @@ version="071115" #### Variables #### -# Notification Email +# Alert Email # (on|off) -emailnotification="on" -email="me@danielgibbs.co.uk" +emailalert="off" +email="" # Start Variables updateonstart="off" From fdd4a72b896a1145b540c8ad6821da67f0a4d002 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 18 May 2016 20:14:37 +0100 Subject: [PATCH 588/643] Backward compatibility --- lgsm/functions/alert.sh | 2 +- lgsm/functions/alert_email.sh | 10 +++++----- lgsm/functions/command_test_alert.sh | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index e904933c8..c871394a2 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -6,7 +6,7 @@ lgsm_version="140516" # Description: Overall function for managing alerts. -if [ "${emailalert}" == "on" ]||[ -n "${email}" ]; then +if [ "${emailnotification}" == "on" ]||[ "${emailalert}" == "on" ]&&[ -n "${email}" ]; then alert_email.sh fi diff --git a/lgsm/functions/alert_email.sh b/lgsm/functions/alert_email.sh index 4d84a65a7..8c3d99be9 100644 --- a/lgsm/functions/alert_email.sh +++ b/lgsm/functions/alert_email.sh @@ -39,7 +39,7 @@ fn_details_os(){ echo -e "Hostname: $HOSTNAME" echo -e "tmux: ${tmuxv}" echo -e "GLIBC: ${glibcversion}" - } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" > /dev/null 2>&1 } fn_details_performance(){ @@ -63,7 +63,7 @@ fn_details_performance(){ echo -e "Mem: total used free" echo -e "Physical: ${physmemtotal} ${physmemused} ${physmemfree}" echo -e "Swap: ${swaptotal} ${swapused} ${swapfree}" - } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" > /dev/null 2>&1 } fn_details_disk(){ @@ -88,7 +88,7 @@ fn_details_disk(){ if [ -d "${backupdir}" ]; then echo -e "Backups: ${backupdirdu}" fi - } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" > /dev/null 2>&1 } @@ -165,7 +165,7 @@ fn_details_gameserver(){ else echo -e "Status: ONLINE" fi - } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" > /dev/null 2>&1 } fn_alert_email_template_logs(){ @@ -211,7 +211,7 @@ fn_alert_email_template_logs(){ echo "" fi - } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" + } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" > /dev/null 2>&1 } fn_print_dots "Sending alert to ${email}" diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh index 81f8be423..4b5e69de4 100644 --- a/lgsm/functions/command_test_alert.sh +++ b/lgsm/functions/command_test_alert.sh @@ -13,7 +13,7 @@ check.sh info_config.sh if [ "${emailalert}" = "on" ]||[ "${pushbulletalert}" = "on" ]; then fn_scriptlog "Sending alert Check" - alertsubject="LGSM - alert Check - ${servername}" + alertsubject="LGSM - Alert Check - ${servername}" alertbody="LGSM testing alert, how you read?" alert.sh else From e1aa07f3e0b94bb49c049efa77ce4b806559ebdb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 18 May 2016 20:15:34 +0100 Subject: [PATCH 589/643] corrected ta --- lgsm/functions/core_getopt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index c38df7e99..f3434663e 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -25,7 +25,7 @@ case "$getopt" in command_validate.sh;; m|monitor) command_monitor.sh;; - ct|test-alert) + ta|test-alert) command_test_alert.sh;; dt|details) command_details.sh;; From 745dcc0a42c651789fa7038e9b225b755dd2f46d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 18 May 2016 20:39:28 +0100 Subject: [PATCH 590/643] alert messages being migrated to alert.sh --- lgsm/functions/alert.sh | 48 +++++++++++++++++++++++++++- lgsm/functions/command_monitor.sh | 3 +- lgsm/functions/command_test_alert.sh | 4 +-- 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index c871394a2..6bfc8bda3 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -6,10 +6,56 @@ lgsm_version="140516" # Description: Overall function for managing alerts. +fn_alert_test(){ + fn_scriptlog "Sending test alert" + alertsubject="LGSM - Alert Check - ${servername}" + alertbody="LGSM test alert, how you read?" +} + +fn_alert_restart(){ + fn_scriptlog "Sending restart alert: ${executable} process not running" + alertsubject="LGSM - Restarted - ${servername}" + alertbody="${servicename} ${executable} process not running" +} + +fn_alert_queryrestart(){ + fn_scriptlog "Sending restart alert: ${gsquerycmd}" + alertsubject="LGSM - Restarted - ${servername}" + alertbody="Failed to Query: ${gsquerycmd}" +} + +fn_alert_update(){ + fn_scriptlog "Sending update alert" + alertsubject="LGSM - Updated - ${servername}" + alertbody="Recieved update: 154789" +} + +if [ "${alert}" == "restart" ]; then + fn_alert_restart +if [ "${alert}" == "queryrestart" ]; then + fn_alert_queryrestart +elif [ "${alert}" == "update" ]; then + fn_alert_update +elif [ "${alert}" == "test" ]; then + fn_alert_test +fi + if [ "${emailnotification}" == "on" ]||[ "${emailalert}" == "on" ]&&[ -n "${email}" ]; then alert_email.sh +elif [ "${emailnotification}" != "on" ]||[ "${emailalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then + fn_print_fail_nl "Alerts not enabled" + fn_scriptlog "Email alerts not enabled" +elif [ -z "${email}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then + fn_print_fail_nl "Email no set" + fn_scriptlog "Email no set" fi -if [ "${pushbulletalert}" == "on" ]||[ -n "${pushbullettoken}" ]; then +if [ "${pushbulletalert}" == "on" ]&&[ -n "${pushbullettoken}" ]; then alert_pushbullet.sh +elif [ "${pushbulletalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then + fn_print_fail_nl "Pushbullet alerts not enabled" + fn_scriptlog "Pushbullet alerts not enabled" +elif [ -z "${pushbullettoken}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then + fn_print_fail_nl "Pushbullet token not set" + fn_scriptlog "Pushbullet token not set" fi \ No newline at end of file diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index b86a6047d..917b544b7 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -57,7 +57,8 @@ fn_monitor_teamspeak3(){ fn_print_fail_eol_nl fn_scriptlog "Checking session: ${ts3error}: FAIL" failurereason="${ts3error}" - fn_monitor_email_alert + alert="restart" + alert.sh fi fn_scriptlog "Monitor is starting ${servername}" sleep 1 diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh index 4b5e69de4..253ab07d3 100644 --- a/lgsm/functions/command_test_alert.sh +++ b/lgsm/functions/command_test_alert.sh @@ -12,9 +12,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh info_config.sh if [ "${emailalert}" = "on" ]||[ "${pushbulletalert}" = "on" ]; then - fn_scriptlog "Sending alert Check" - alertsubject="LGSM - Alert Check - ${servername}" - alertbody="LGSM testing alert, how you read?" + alert="test" alert.sh else fn_print_fail_nl "alerts not enabled" From 45c2ef38162af62d4a65917c98aef109b761e5c0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 18 May 2016 20:45:22 +0100 Subject: [PATCH 591/643] bug --- lgsm/functions/alert.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 6bfc8bda3..397ffdf7f 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -32,7 +32,7 @@ fn_alert_update(){ if [ "${alert}" == "restart" ]; then fn_alert_restart -if [ "${alert}" == "queryrestart" ]; then +elif [ "${alert}" == "queryrestart" ]; then fn_alert_queryrestart elif [ "${alert}" == "update" ]; then fn_alert_update From 21fd930b3db1731d7c161156c88d8e361c40872a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Wed, 18 May 2016 20:45:51 +0100 Subject: [PATCH 592/643] updates --- lgsm/functions/command_monitor.sh | 3 ++- lgsm/functions/command_test_alert.sh | 4 +--- lgsm/functions/monitor_gsquery.sh | 5 ++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 917b544b7..64d11cf62 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -84,7 +84,8 @@ fn_monitor_tmux(){ fn_print_fail "Checking session: " fn_print_fail_eol_nl fn_scriptlog "Checking session: FAIL" - fn_monitor_email_alert + alert="restart" + alert.sh fn_scriptlog "Monitor is starting ${servername}" sleep 1 command_start.sh diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh index 253ab07d3..33cb25ea1 100644 --- a/lgsm/functions/command_test_alert.sh +++ b/lgsm/functions/command_test_alert.sh @@ -11,10 +11,8 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh info_config.sh -if [ "${emailalert}" = "on" ]||[ "${pushbulletalert}" = "on" ]; then - alert="test" +alert="test" alert.sh -else fn_print_fail_nl "alerts not enabled" fn_scriptlog "alerts not enabled" fi \ No newline at end of file diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 20c7dc3ce..240b0ca0f 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -70,9 +70,8 @@ if [ "${gsquery}" == "yes" ]; then # Send alert if enabled if [ "${emailalert}" == "on" ]; then - subject="${servicename} Monitor - Starting ${servername}" - failurereason="Failed to query ${servicename}: ${gsquerycmd}" - actiontaken="restarted ${servicename}" + + alert="queryrestart" alert.sh fi fn_restart From ce643656871fdf2221d8179bd52f1545b36ea2f1 Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Fri, 20 May 2016 18:28:42 -0500 Subject: [PATCH 593/643] Adding shutdown tweaks for Ark server --- functions/command_stop.sh | 219 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 functions/command_stop.sh diff --git a/functions/command_stop.sh b/functions/command_stop.sh new file mode 100644 index 000000000..bb886cd0c --- /dev/null +++ b/functions/command_stop.sh @@ -0,0 +1,219 @@ +#!/bin/bash +# LGSM command_stop.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="271215" + +# Description: Stops the server. + +local modulename="Stopping" +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +sdtd_telnet(){ + sdtdshutdown=$( expect -c ' + proc abort {} { + puts "Timeout or EOF\n" + exit 1 + } + spawn telnet '"${telnetip}"' '"${telnetport}"' + expect { + "password:" { send "'"${telnetpass}"'\r" } + default abort + } + expect { + "session." { send "shutdown\r" } + default abort + } + expect { eof } + puts "Completed.\n" + ') +} + +fn_stop_ark(){ + # grab the queryport. there are two locations to grab this from. + # first start with the parameters from the parms line + fn_printwarn "attempting to determine any in-use ports" + fn_scriptlog "attempting to determine any in-use ports" + port=$(grep ^parms= ${servername} |\ + awk -f"queryport=" '{print $2}' |\ + sed "s/[^[:digit:].*].*//g" ) + + echo port is $port + read a + if [ -z $port ] ; then + fn_printwarn "no port found in the ${servername} script" + fn_scriptlog "no port found in the ${servername} script" + userconfigfile="${filesdir}" + userconfigfile+="/serverfiles/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" + port=$(grep ^QueryPort= ${userconfigfile} | cut -d= -f2 | sed "s/[^[:digit:].*].*//g") + fi + echo port is $port + read b + if [ -z $port ] ; then + fn_printwarn "no port found in the GameUsersettings.ini file" + fn_scriptlog "no port found in the GameUsersettings.ini file" + return + fi + + if [[ ${#port} -gt 0 ]] ; then + # pid=$(lsof -ti udp:${port}) + # might need netstat here if lsof isn't installed. + # netstat variation: + pid=$(netstat -nap 2>/dev/null | grep ^udp[:space:] |\ + grep :${port}[[:space:]] | rev | awk '{print $1}' |\ + rev | cut -d\/ -f1) + echo pid is $pid + read c + # + # check for a valid pid + let pid+=0 # turns an empty string into a valid number, '0', + # and a valid numeric pid remains unchanged. + if [[ $pid -gt 1 && $pid -le $(cat /proc/sys/kernel/pid_max) ]] ; then + # kill the process still listening on that port. + # kill -9 $pid + while kill -0 $pid + do + echo "kill code id $?" + read d + fn_printwarn "process is still bound to the port" + fn_scriptlog "process is still bound to the port" + sleep 1 + fn_printdots "${servername}" + fn_scriptlog "${servername}" + done + fi # end if for pid range check + fi # end if for port check +} # end of fn_stop_ark + + +fn_stop_teamspeak3(){ +check.sh +fn_printdots "${servername}" +fn_scriptlog "${servername}" +sleep 1 +info_ts3status.sh +if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then + fn_printfail "${servername} is already stopped" + fn_scriptlog "${servername} is already stopped" +else + ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 + fn_printok "${servername}" + fn_scriptlog "Stopped ${servername}" +fi +# Remove lock file +rm -f "${rootdir}/${lockselfname}" +sleep 1 +echo -en "\n" +} + +fn_stop_tmux(){ +check.sh +info_config.sh +fn_printdots "${servername}" +fn_scriptlog "${servername}" +sleep 1 + +if [ "${gamename}" == "7 Days To Die" ] ; then + # if game is 7 Days To Die, we need special, graceful shutdown via telnet connection. + # Set below variable to be called for expect to operate correctly.. + fn_printdots "Attempting graceful shutdown via telnet" + fn_scriptlog "Attempting graceful shutdown via telnet" + sleep 1 + telnetip=127.0.0.1 + sdtd_telnet + + # If failed using localhost will use servers ip + refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") + if [ -n "${refused}" ]; then + telnetip=${ip} + fn_printwarn "Attempting graceful shutdown via telnet: localhost failed" + fn_scriptlog "Warning! Attempting graceful shutdown failed using localhost" + sleep 5 + echo -en "\n" + fn_printdots "Attempting graceful shutdown via telnet: using ${telnetip}" + fn_scriptlog "Attempting graceful shutdown via telnet using ${telnetip}" + sdtd_telnet + sleep 1 + fi + + refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") + completed=$(echo -en "\n ${sdtdshutdown}"| grep "Completed.") + if [ -n "${refused}" ]; then + fn_printfail "Attempting graceful shutdown via telnet" + fn_scriptlog "Attempting graceful shutdown failed" + fn_scriptlog "${refused}" + elif [ -n "${completed}" ]; then + fn_printok "Attempting graceful shutdown via telnet" + fn_scriptlog "Attempting graceful shutdown succeeded" + else + fn_printfail "Attempting graceful shutdown via telnet: Unknown error" + fn_scriptlog "Attempting graceful shutdown failed" + fn_scriptlog "Unknown error" + fi + sleep 1 + echo -en "\n\n" + echo -en "Telnet output:" + echo -en "\n ${sdtdshutdown}" + echo -en "\n\n" + sleep 1 + fn_printdots "${servername}" + fn_scriptlog "${servername}" + sleep 5 + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + fn_printok "${servername} is already stopped using graceful shutdown" + fn_scriptlog "${servername} is already stopped using graceful shutdown" + else + tmux kill-session -t "${servicename}" + fn_printok "${servername}" + fn_scriptlog "Stopped ${servername}" + fi + +else + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + fn_printfail "${servername} is already stopped" + fn_scriptlog "${servername} is already stopped" + else + + if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + sleep 1 + fn_printdots "Attempting graceful shutdown" + fn_scriptlog "Attempting graceful shutdown" + tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 + counter=0 + while [ "${pid}" != "0" -a $counter -lt 30 ]; do + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + sleep 1 + let counter=counter+1 + if [ "${counter}" -gt "1" ]; then + fn_printdots "Attempting graceful shutdown: ${counter}" + fi + done + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then + fn_printok "Attempting graceful shutdown" + else + fn_printfail "Attempting graceful shutdown" + fi + fi + + tmux kill-session -t "${servicename}" > /dev/null 2>&1 + fn_printok "${servername}" + fn_scriptlog "Stopped ${servername}" + fi +fi + # Remove lock file + rm -f "${rootdir}/${lockselfname}" + sleep 1 + echo -en "\n" +} + +if [ "${gamename}" == "Teamspeak 3" ]; then + fn_stop_teamspeak3 +else + fn_stop_tmux + if [ "${gamename}" == "ARK: Survivial Evolved" ]; then + fn_stop_ark + fi +fi From bab4a1c6c379ccbd0fdf5ac700180c8baa5ff4dc Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Fri, 20 May 2016 18:36:50 -0500 Subject: [PATCH 594/643] Removing the debug pauses --- functions/command_stop.sh | 60 ++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 36 deletions(-) diff --git a/functions/command_stop.sh b/functions/command_stop.sh index bb886cd0c..3deb8c12a 100644 --- a/functions/command_stop.sh +++ b/functions/command_stop.sh @@ -34,54 +34,41 @@ fn_stop_ark(){ # first start with the parameters from the parms line fn_printwarn "attempting to determine any in-use ports" fn_scriptlog "attempting to determine any in-use ports" - port=$(grep ^parms= ${servername} |\ - awk -f"queryport=" '{print $2}' |\ - sed "s/[^[:digit:].*].*//g" ) - - echo port is $port - read a - if [ -z $port ] ; then - fn_printwarn "no port found in the ${servername} script" - fn_scriptlog "no port found in the ${servername} script" + #port=$(grep ^parms= arkserver |\ + # awk -F"QueryPort=" '{print $2}' |\ + # sed "s/[^[:digit:].*].*//g" ) + info_config.sh + if [ -z $queryport ] ; then + fn_printwarn "no queryport found in the arkserver script" + fn_scriptlog "no queryport found in the arkserver script" userconfigfile="${filesdir}" - userconfigfile+="/serverfiles/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" + userconfigfile+="/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" port=$(grep ^QueryPort= ${userconfigfile} | cut -d= -f2 | sed "s/[^[:digit:].*].*//g") fi - echo port is $port - read b - if [ -z $port ] ; then - fn_printwarn "no port found in the GameUsersettings.ini file" - fn_scriptlog "no port found in the GameUsersettings.ini file" + if [ -z $queryport ] ; then + fn_printwarn "no queryport found in the GameUsersettings.ini file" + fn_scriptlog "no queryport found in the GameUsersettings.ini file" return fi if [[ ${#port} -gt 0 ]] ; then - # pid=$(lsof -ti udp:${port}) - # might need netstat here if lsof isn't installed. - # netstat variation: - pid=$(netstat -nap 2>/dev/null | grep ^udp[:space:] |\ - grep :${port}[[:space:]] | rev | awk '{print $1}' |\ + fn_printwarn "QueryPort $queryport found in the configs. Checking to see if it's still bound." + fn_scriptlog "QueryPort $queryport found in the configs. Checking to see if it's still bound." + pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\ + grep :${queryport}[[:space:]] | rev | awk '{print $1}' |\ rev | cut -d\/ -f1) - echo pid is $pid - read c # # check for a valid pid let pid+=0 # turns an empty string into a valid number, '0', # and a valid numeric pid remains unchanged. if [[ $pid -gt 1 && $pid -le $(cat /proc/sys/kernel/pid_max) ]] ; then # kill the process still listening on that port. - # kill -9 $pid - while kill -0 $pid - do - echo "kill code id $?" - read d - fn_printwarn "process is still bound to the port" - fn_scriptlog "process is still bound to the port" - sleep 1 - fn_printdots "${servername}" - fn_scriptlog "${servername}" - done + fn_printdots "Killing process $pid" + fn_scriptlog "Killing process $pid" + kill -9 $pid fi # end if for pid range check + fn_printok "${servername} stopped and ports cleared" + fn_scriptlog "Ports cleared for ${servername}" fi # end if for port check } # end of fn_stop_ark @@ -213,7 +200,8 @@ if [ "${gamename}" == "Teamspeak 3" ]; then fn_stop_teamspeak3 else fn_stop_tmux - if [ "${gamename}" == "ARK: Survivial Evolved" ]; then - fn_stop_ark - fi + if [ "${gamename}" == "ARK: Survivial Evolved" ]; then + fn_stop_ark + echo -en "\n" + fi fi From eb20cae44af9c54fef463ae0da2b0f4b6913256c Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Fri, 20 May 2016 18:40:30 -0500 Subject: [PATCH 595/643] Removing comments relating to parsing of the script (which is no longer performed) --- functions/command_stop.sh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/functions/command_stop.sh b/functions/command_stop.sh index 3deb8c12a..baa907a0d 100644 --- a/functions/command_stop.sh +++ b/functions/command_stop.sh @@ -30,13 +30,8 @@ sdtd_telnet(){ } fn_stop_ark(){ - # grab the queryport. there are two locations to grab this from. - # first start with the parameters from the parms line fn_printwarn "attempting to determine any in-use ports" fn_scriptlog "attempting to determine any in-use ports" - #port=$(grep ^parms= arkserver |\ - # awk -F"QueryPort=" '{print $2}' |\ - # sed "s/[^[:digit:].*].*//g" ) info_config.sh if [ -z $queryport ] ; then fn_printwarn "no queryport found in the arkserver script" @@ -175,7 +170,7 @@ else let counter=counter+1 if [ "${counter}" -gt "1" ]; then fn_printdots "Attempting graceful shutdown: ${counter}" - fi + fi done pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") if [ "${pid}" == "0" ]; then From 9d6c9574a6095aa51e13cd0cb50751c0f718580a Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Sat, 21 May 2016 06:34:15 -0500 Subject: [PATCH 596/643] This does not belong here. --- functions/command_stop.sh | 202 -------------------------------------- 1 file changed, 202 deletions(-) delete mode 100644 functions/command_stop.sh diff --git a/functions/command_stop.sh b/functions/command_stop.sh deleted file mode 100644 index baa907a0d..000000000 --- a/functions/command_stop.sh +++ /dev/null @@ -1,202 +0,0 @@ -#!/bin/bash -# LGSM command_stop.sh function -# Author: Daniel Gibbs -# Website: http://gameservermanagers.com -lgsm_version="271215" - -# Description: Stops the server. - -local modulename="Stopping" -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -sdtd_telnet(){ - sdtdshutdown=$( expect -c ' - proc abort {} { - puts "Timeout or EOF\n" - exit 1 - } - spawn telnet '"${telnetip}"' '"${telnetport}"' - expect { - "password:" { send "'"${telnetpass}"'\r" } - default abort - } - expect { - "session." { send "shutdown\r" } - default abort - } - expect { eof } - puts "Completed.\n" - ') -} - -fn_stop_ark(){ - fn_printwarn "attempting to determine any in-use ports" - fn_scriptlog "attempting to determine any in-use ports" - info_config.sh - if [ -z $queryport ] ; then - fn_printwarn "no queryport found in the arkserver script" - fn_scriptlog "no queryport found in the arkserver script" - userconfigfile="${filesdir}" - userconfigfile+="/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" - port=$(grep ^QueryPort= ${userconfigfile} | cut -d= -f2 | sed "s/[^[:digit:].*].*//g") - fi - if [ -z $queryport ] ; then - fn_printwarn "no queryport found in the GameUsersettings.ini file" - fn_scriptlog "no queryport found in the GameUsersettings.ini file" - return - fi - - if [[ ${#port} -gt 0 ]] ; then - fn_printwarn "QueryPort $queryport found in the configs. Checking to see if it's still bound." - fn_scriptlog "QueryPort $queryport found in the configs. Checking to see if it's still bound." - pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\ - grep :${queryport}[[:space:]] | rev | awk '{print $1}' |\ - rev | cut -d\/ -f1) - # - # check for a valid pid - let pid+=0 # turns an empty string into a valid number, '0', - # and a valid numeric pid remains unchanged. - if [[ $pid -gt 1 && $pid -le $(cat /proc/sys/kernel/pid_max) ]] ; then - # kill the process still listening on that port. - fn_printdots "Killing process $pid" - fn_scriptlog "Killing process $pid" - kill -9 $pid - fi # end if for pid range check - fn_printok "${servername} stopped and ports cleared" - fn_scriptlog "Ports cleared for ${servername}" - fi # end if for port check -} # end of fn_stop_ark - - -fn_stop_teamspeak3(){ -check.sh -fn_printdots "${servername}" -fn_scriptlog "${servername}" -sleep 1 -info_ts3status.sh -if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then - fn_printfail "${servername} is already stopped" - fn_scriptlog "${servername} is already stopped" -else - ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 - fn_printok "${servername}" - fn_scriptlog "Stopped ${servername}" -fi -# Remove lock file -rm -f "${rootdir}/${lockselfname}" -sleep 1 -echo -en "\n" -} - -fn_stop_tmux(){ -check.sh -info_config.sh -fn_printdots "${servername}" -fn_scriptlog "${servername}" -sleep 1 - -if [ "${gamename}" == "7 Days To Die" ] ; then - # if game is 7 Days To Die, we need special, graceful shutdown via telnet connection. - # Set below variable to be called for expect to operate correctly.. - fn_printdots "Attempting graceful shutdown via telnet" - fn_scriptlog "Attempting graceful shutdown via telnet" - sleep 1 - telnetip=127.0.0.1 - sdtd_telnet - - # If failed using localhost will use servers ip - refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") - if [ -n "${refused}" ]; then - telnetip=${ip} - fn_printwarn "Attempting graceful shutdown via telnet: localhost failed" - fn_scriptlog "Warning! Attempting graceful shutdown failed using localhost" - sleep 5 - echo -en "\n" - fn_printdots "Attempting graceful shutdown via telnet: using ${telnetip}" - fn_scriptlog "Attempting graceful shutdown via telnet using ${telnetip}" - sdtd_telnet - sleep 1 - fi - - refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") - completed=$(echo -en "\n ${sdtdshutdown}"| grep "Completed.") - if [ -n "${refused}" ]; then - fn_printfail "Attempting graceful shutdown via telnet" - fn_scriptlog "Attempting graceful shutdown failed" - fn_scriptlog "${refused}" - elif [ -n "${completed}" ]; then - fn_printok "Attempting graceful shutdown via telnet" - fn_scriptlog "Attempting graceful shutdown succeeded" - else - fn_printfail "Attempting graceful shutdown via telnet: Unknown error" - fn_scriptlog "Attempting graceful shutdown failed" - fn_scriptlog "Unknown error" - fi - sleep 1 - echo -en "\n\n" - echo -en "Telnet output:" - echo -en "\n ${sdtdshutdown}" - echo -en "\n\n" - sleep 1 - fn_printdots "${servername}" - fn_scriptlog "${servername}" - sleep 5 - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_printok "${servername} is already stopped using graceful shutdown" - fn_scriptlog "${servername} is already stopped using graceful shutdown" - else - tmux kill-session -t "${servicename}" - fn_printok "${servername}" - fn_scriptlog "Stopped ${servername}" - fi - -else - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_printfail "${servername} is already stopped" - fn_scriptlog "${servername} is already stopped" - else - - if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - sleep 1 - fn_printdots "Attempting graceful shutdown" - fn_scriptlog "Attempting graceful shutdown" - tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 - counter=0 - while [ "${pid}" != "0" -a $counter -lt 30 ]; do - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - sleep 1 - let counter=counter+1 - if [ "${counter}" -gt "1" ]; then - fn_printdots "Attempting graceful shutdown: ${counter}" - fi - done - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then - fn_printok "Attempting graceful shutdown" - else - fn_printfail "Attempting graceful shutdown" - fi - fi - - tmux kill-session -t "${servicename}" > /dev/null 2>&1 - fn_printok "${servername}" - fn_scriptlog "Stopped ${servername}" - fi -fi - # Remove lock file - rm -f "${rootdir}/${lockselfname}" - sleep 1 - echo -en "\n" -} - -if [ "${gamename}" == "Teamspeak 3" ]; then - fn_stop_teamspeak3 -else - fn_stop_tmux - if [ "${gamename}" == "ARK: Survivial Evolved" ]; then - fn_stop_ark - echo -en "\n" - fi -fi From 1c7b38738fbcebf9ab6390bfbd1c43379a8c143f Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Sat, 21 May 2016 06:54:11 -0500 Subject: [PATCH 597/643] Simple typo with omitted '=' - breaks functionality --- ARKSurvivalEvolved/arkserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 17e3e5d78..8a19c7d32 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login From 021df3d9ec408e95aa76c574f8fbca8a3d076759 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 20:38:29 +0100 Subject: [PATCH 598/643] adding in error checking --- lgsm/functions/alert_pushbullet.sh | 15 ++++++++++++--- lgsm/functions/command_test_alert.sh | 5 +---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/alert_pushbullet.sh b/lgsm/functions/alert_pushbullet.sh index f47ad7e30..c4a7b9924 100644 --- a/lgsm/functions/alert_pushbullet.sh +++ b/lgsm/functions/alert_pushbullet.sh @@ -8,7 +8,16 @@ lgsm_version="140516" local modulename="Alert" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +fn_print_dots "Sending Pushbullet alert" +sleep 1 + +pushbulletsend=$(curl --silent -u """${pushbullettoken}"":" -d type="note" -d body="${alertbody}" -d title="${alertsubject}" 'https://api.pushbullet.com/v2/pushes'|grep -o invalid_access_token|uniq) + +if [ "${pushbulletsend}" == "invalid_access_token" ]; then + fn_print_fail_nl "Sending Pushbullet alert: invalid_access_token" + fn_scriptlog "Failure! Sending Pushbullet alert: invalid_access_token" +else + fn_print_ok_nl "Sending Pushbullet alert" + fn_scriptlog "Complete! Sent Pushbullet alert" +fi -curl -u """${pushbullettoken}"":" -d type="note" -d body="${alertbody}" -d title="${alertsubject}" 'https://api.pushbullet.com/v2/pushes' >/dev/null 2>&1 -fn_print_ok_nl "Sent Pushbullet alert" -fn_scriptlog "Sent Pushbullet alert" diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh index 33cb25ea1..3861a6e52 100644 --- a/lgsm/functions/command_test_alert.sh +++ b/lgsm/functions/command_test_alert.sh @@ -12,7 +12,4 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh info_config.sh alert="test" - alert.sh - fn_print_fail_nl "alerts not enabled" - fn_scriptlog "alerts not enabled" -fi \ No newline at end of file +alert.sh From eddc0a8018d46f9d9c6c1f00eba90aa293f686d5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 20:38:47 +0100 Subject: [PATCH 599/643] space --- lgsm/functions/alert_pushbullet.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lgsm/functions/alert_pushbullet.sh b/lgsm/functions/alert_pushbullet.sh index c4a7b9924..1e34732f3 100644 --- a/lgsm/functions/alert_pushbullet.sh +++ b/lgsm/functions/alert_pushbullet.sh @@ -19,5 +19,4 @@ if [ "${pushbulletsend}" == "invalid_access_token" ]; then else fn_print_ok_nl "Sending Pushbullet alert" fn_scriptlog "Complete! Sent Pushbullet alert" -fi - +fi \ No newline at end of file From f0872c9ea6fa3ea9575da62ce74d10f46ef217fc Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 20:56:26 +0100 Subject: [PATCH 600/643] Update alert --- lgsm/functions/alert.sh | 8 ++++---- lgsm/functions/command_monitor.sh | 9 --------- lgsm/functions/monitor_gsquery.sh | 7 ++----- lgsm/functions/update_check.sh | 6 ++++++ 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 397ffdf7f..6de4741b3 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -18,7 +18,7 @@ fn_alert_restart(){ alertbody="${servicename} ${executable} process not running" } -fn_alert_queryrestart(){ +fn_alert_restart_query(){ fn_scriptlog "Sending restart alert: ${gsquerycmd}" alertsubject="LGSM - Restarted - ${servername}" alertbody="Failed to Query: ${gsquerycmd}" @@ -27,13 +27,13 @@ fn_alert_queryrestart(){ fn_alert_update(){ fn_scriptlog "Sending update alert" alertsubject="LGSM - Updated - ${servername}" - alertbody="Recieved update: 154789" + alertbody="${servicename} Recieved update" } if [ "${alert}" == "restart" ]; then fn_alert_restart -elif [ "${alert}" == "queryrestart" ]; then - fn_alert_queryrestart +elif [ "${alert}" == "restartquery" ]; then + fn_alert_restart_query elif [ "${alert}" == "update" ]; then fn_alert_update elif [ "${alert}" == "test" ]; then diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 64d11cf62..31297f644 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -37,15 +37,6 @@ fn_monitor_msg_checking(){ sleep 1 } -fn_monitor_email_alert(){ - # Email will be sent if enabled - if [ "${emailalert}" = "on" ]; then - alertsubject="LGSM - Restarted - ${servername}" - alertbody="${servicename} process not running" - alert.sh - fi -} - fn_monitor_teamspeak3(){ if [ "${status}" != "0" ]; then fn_print_ok "Checking session: " diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 240b0ca0f..971881c0c 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -69,11 +69,8 @@ if [ "${gsquery}" == "yes" ]; then sleep 1 # Send alert if enabled - if [ "${emailalert}" == "on" ]; then - - alert="queryrestart" - alert.sh - fi + alert="restartquery" + alert.sh fn_restart break fi diff --git a/lgsm/functions/update_check.sh b/lgsm/functions/update_check.sh index d39d8d688..527c0bed0 100644 --- a/lgsm/functions/update_check.sh +++ b/lgsm/functions/update_check.sh @@ -98,6 +98,8 @@ fn_logupdaterequest(){ else update_dl.sh fi + alert="update" + alert.sh else fn_print_ok "Checking for update: Server logs: No update requested" sleep 1 @@ -175,6 +177,8 @@ fn_steamcmdcheck(){ else update_dl.sh fi + alert="update" + alert.sh else echo -e "\n" echo -e "No update available:" @@ -304,6 +308,8 @@ fn_teamspeak3_check(){ update_dl.sh command_start.sh fi + alert="update" + alert.sh else echo -e "\n" echo -e "No update available:" From bf03a08f0621ff58e9880f120369ed2a772dcb05 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 22:50:56 +0100 Subject: [PATCH 601/643] Version 210516 --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Mumble/mumbleserver | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- StarBound/sbserver | 2 +- SvenCoop/svencoopserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament99/ut99server | 2 +- functions/command_update_functions.sh | 2 +- functions/core_functions.sh | 2 +- functions/core_getopt.sh | 2 +- functions/fn_functions | 2 +- functions/fn_getopt | 2 +- functions/fn_update_functions | 2 +- lgsm/functions/alert.sh | 2 +- lgsm/functions/alert_email.sh | 2 +- lgsm/functions/alert_pushbullet.sh | 2 +- lgsm/functions/check.sh | 2 +- lgsm/functions/check_config.sh | 2 +- lgsm/functions/check_deps.sh | 2 +- lgsm/functions/check_glibc.sh | 2 +- lgsm/functions/check_ip.sh | 2 +- lgsm/functions/check_logs.sh | 2 +- lgsm/functions/check_permissions.sh | 2 +- lgsm/functions/check_root.sh | 2 +- lgsm/functions/check_status.sh | 2 +- lgsm/functions/check_steamcmd.sh | 2 +- lgsm/functions/check_system_dir.sh | 2 +- lgsm/functions/check_tmux.sh | 2 +- lgsm/functions/command_backup.sh | 2 +- lgsm/functions/command_console.sh | 2 +- lgsm/functions/command_debug.sh | 2 +- lgsm/functions/command_details.sh | 2 +- lgsm/functions/command_dev_debug.sh | 2 +- lgsm/functions/command_dev_detect_deps.sh | 2 +- lgsm/functions/command_install.sh | 2 +- lgsm/functions/command_monitor.sh | 2 +- lgsm/functions/command_start.sh | 2 +- lgsm/functions/command_stop.sh | 2 +- lgsm/functions/command_test_alert.sh | 2 +- lgsm/functions/command_ts3_server_pass.sh | 2 +- lgsm/functions/command_update_functions.sh | 2 +- lgsm/functions/command_validate.sh | 2 +- lgsm/functions/compress_unreal2_maps.sh | 2 +- lgsm/functions/compress_ut99_maps.sh | 2 +- lgsm/functions/core_dl.sh | 2 +- lgsm/functions/core_functions.sh | 2 +- lgsm/functions/core_getopt.sh | 2 +- lgsm/functions/core_messages.sh | 2 +- lgsm/functions/fix.sh | 2 +- lgsm/functions/fix_arma3.sh | 2 +- lgsm/functions/fix_csgo.sh | 2 +- lgsm/functions/fix_dst.sh | 2 +- lgsm/functions/fix_glibc.sh | 2 +- lgsm/functions/fix_ins.sh | 2 +- lgsm/functions/fix_kf.sh | 2 +- lgsm/functions/fix_ro.sh | 2 +- lgsm/functions/fix_steamcmd.sh | 2 +- lgsm/functions/fix_ut2k4.sh | 2 +- lgsm/functions/fix_ut99.sh | 2 +- lgsm/functions/fn_functions | 2 +- lgsm/functions/fn_getopt | 2 +- lgsm/functions/fn_update_functions | 2 +- lgsm/functions/info_config.sh | 2 +- lgsm/functions/info_distro.sh | 2 +- lgsm/functions/info_glibc.sh | 2 +- lgsm/functions/info_parms.sh | 2 +- lgsm/functions/install_complete.sh | 2 +- lgsm/functions/install_config.sh | 2 +- lgsm/functions/install_gslt.sh | 2 +- lgsm/functions/install_gsquery.sh | 2 +- lgsm/functions/install_header.sh | 2 +- lgsm/functions/install_logs.sh | 2 +- lgsm/functions/install_retry.sh | 2 +- lgsm/functions/install_server_dir.sh | 2 +- lgsm/functions/install_server_files.sh | 2 +- lgsm/functions/install_steamcmd.sh | 2 +- lgsm/functions/install_ts3.sh | 2 +- lgsm/functions/install_ts3db.sh | 2 +- lgsm/functions/install_ut2k4_key.sh | 2 +- lgsm/functions/logs.sh | 2 +- lgsm/functions/monitor_gsquery.sh | 2 +- lgsm/functions/update_check.sh | 2 +- lgsm/functions/update_dl.sh | 2 +- 121 files changed, 121 insertions(+), 121 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 82b8d91b4..8e04aea42 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 17e3e5d78..30f34b568 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Arma3/arma3server b/Arma3/arma3server index a13da2112..cf720bb0e 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 1a2041f85..48ae9673e 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index aecefd762..4dc07246f 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index ac24012fd..2aa450534 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 8fe4042fd..ab8ab009f 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 84b161835..04cc4aa6c 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index e2cfa1d5d..e0cbc3d21 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 74755e92b..f2662d5c6 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 59f0bcc47..814e1cf71 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 1a4ad7f93..6612fb477 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index a169281d0..d4d2d05f0 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index c4555e9eb..ecee9ab39 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 1277563ed..05f624dbe 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 259464c7a..668f65810 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 53d8b1628..ea4c85292 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 90339be94..778c69a43 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### export MALLOC_CHECK_=0 diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index b7c08dd6a..b3cd29604 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index d60aa3693..ab75a9efe 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 864549967..40dc54266 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index e46a9a94b..4c93d73e2 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Insurgency/insserver b/Insurgency/insserver index 5edc7c55e..7f337536e 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/JustCause2/jc2server b/JustCause2/jc2server index c0222fccf..5db3b0a10 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 9fbee8f44..5380e71d8 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 67d4b1024..d70fce9f3 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index ef4710ab3..12a29437f 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index e64580c14..11a531f6a 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 1f0a3ce7a..878bf985e 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 1da4dc2ce..9be4d6573 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 05956597e..85ac0c1ff 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index c8c3ae07a..9bf5284cd 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index a9e1f2afd..cccaa7aeb 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index b1173fd90..e59d5c777 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Rust/rustserver b/Rust/rustserver index 119fb9115..23666b39c 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 8905df1b2..cad500dc1 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/StarBound/sbserver b/StarBound/sbserver index 9fa5e639a..3837c6213 100644 --- a/StarBound/sbserver +++ b/StarBound/sbserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/SvenCoop/svencoopserver b/SvenCoop/svencoopserver index 6daa9d75d..f58719276 100644 --- a/SvenCoop/svencoopserver +++ b/SvenCoop/svencoopserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 4f8d0d6df..3a13f4a37 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 0093b7721..fa05c0a1d 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index b60066782..7cf1c88ca 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Teeworlds/twserver b/Teeworlds/twserver index aa45d1376..1cfc86b53 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 32151b0ab..51bc754b0 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 9a3362bf7..fcdabc3c6 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 4c8e50635..00055db8e 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="150316" +version="210516" #### Variables #### diff --git a/functions/command_update_functions.sh b/functions/command_update_functions.sh index 65867df9a..ba7674448 100644 --- a/functions/command_update_functions.sh +++ b/functions/command_update_functions.sh @@ -2,7 +2,7 @@ # LGSM command_update_functions.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="270216" +lgsm_version="210516" # Description: Deletes the functions dir to allow re-downloading of functions from GitHub. diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 49eb5e017..821cd4563 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -2,7 +2,7 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="180316" +lgsm_version="210516" # Description: REDIRECT FUNCTION to new location for core_functions.sh diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh index 641dce7f1..f6032fae6 100644 --- a/functions/core_getopt.sh +++ b/functions/core_getopt.sh @@ -2,7 +2,7 @@ # LGSM core_getopt.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="180316" +lgsm_version="210516" # Description: REDIRECT FUNCTION to new location for core_getopt.sh diff --git a/functions/fn_functions b/functions/fn_functions index a3ddfc373..2ae012923 100644 --- a/functions/fn_functions +++ b/functions/fn_functions @@ -2,7 +2,7 @@ # LGSM fn_functions function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="180316" +lgsm_version="210516" # Description: REDIRECT FUNCTION to new core_functions.sh diff --git a/functions/fn_getopt b/functions/fn_getopt index d84434ce9..0b0e3713d 100644 --- a/functions/fn_getopt +++ b/functions/fn_getopt @@ -2,7 +2,7 @@ # LGSM fn_getopt.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="180316" +lgsm_version="210516" # Description: REDIRECT FUNCTION to new core_getopt.sh diff --git a/functions/fn_update_functions b/functions/fn_update_functions index 53f0988de..5513d5d20 100644 --- a/functions/fn_update_functions +++ b/functions/fn_update_functions @@ -2,7 +2,7 @@ # LGSM fn_update_functions function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: REDIRECT FUNCTION to new command_update_functions.sh diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 6de4741b3..60833fd62 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -2,7 +2,7 @@ # LGSM alert.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="140516" +lgsm_version="210516" # Description: Overall function for managing alerts. diff --git a/lgsm/functions/alert_email.sh b/lgsm/functions/alert_email.sh index 8c3d99be9..c3f56b5ef 100644 --- a/lgsm/functions/alert_email.sh +++ b/lgsm/functions/alert_email.sh @@ -2,7 +2,7 @@ # LGSM email.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="140516" +lgsm_version="210516" # Description: Sends email alert if monitor picks up a failure. diff --git a/lgsm/functions/alert_pushbullet.sh b/lgsm/functions/alert_pushbullet.sh index 1e34732f3..1ab99093b 100644 --- a/lgsm/functions/alert_pushbullet.sh +++ b/lgsm/functions/alert_pushbullet.sh @@ -2,7 +2,7 @@ # LGSM alert_pushbullet.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="140516" +lgsm_version="210516" # Description: alerts using pushbullet. diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 3c4855dc0..316e6b3f3 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -2,7 +2,7 @@ # LGSM fn_check function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060516" +lgsm_version="210516" # Description: Overall function for managing checks. # Runs checks that will either halt on or fix an issue. diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh index 8cc41a8a9..eebb14714 100644 --- a/lgsm/functions/check_config.sh +++ b/lgsm/functions/check_config.sh @@ -2,7 +2,7 @@ # LGSM check_config.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060116" +lgsm_version="210516" # Description: If server config missing warn user. diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 49498d2ff..df4b49b4d 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -2,7 +2,7 @@ # LGSM check_deps.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="050516" +lgsm_version="210516" # Description: Checks that the requires dependencies are installed for LGSM. diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index dff253596..65462d035 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -2,7 +2,7 @@ # LGSM check_glibc.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="020116" +lgsm_version="210516" # Description: Checks if server has correct glibc or has a fix available. diff --git a/lgsm/functions/check_ip.sh b/lgsm/functions/check_ip.sh index da6b35665..514949522 100644 --- a/lgsm/functions/check_ip.sh +++ b/lgsm/functions/check_ip.sh @@ -2,7 +2,7 @@ # LGSM check_ip.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Automatically identifies the server interface IP. # If multiple interfaces are detected the user will need to manualy set using ip="0.0.0.0". diff --git a/lgsm/functions/check_logs.sh b/lgsm/functions/check_logs.sh index 4d604cdd2..0ab22fb3b 100644 --- a/lgsm/functions/check_logs.sh +++ b/lgsm/functions/check_logs.sh @@ -2,7 +2,7 @@ # LGSM check_logs.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Checks that log files exist on server start diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index c9225c863..38aaf3da4 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -lgsm_version="150316" +lgsm_version="210516" # Description: Checks script, files and folders ownership and permissions. diff --git a/lgsm/functions/check_root.sh b/lgsm/functions/check_root.sh index e464088f3..914069d5c 100644 --- a/lgsm/functions/check_root.sh +++ b/lgsm/functions/check_root.sh @@ -2,7 +2,7 @@ # LGSM check_root.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060316" +lgsm_version="210516" if [ $(whoami) = "root" ]; then fn_print_fail_nl "Do NOT run this script as root!" diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh index 3d8a590fa..7eb35ba7b 100644 --- a/lgsm/functions/check_status.sh +++ b/lgsm/functions/check_status.sh @@ -2,7 +2,7 @@ # LGSM check_status function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060516" +lgsm_version="210516" # Description: Checks the proccess status of the server. Either online or offline. diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 28592b9b0..f8ee2439f 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -2,7 +2,7 @@ # LGSM check_steamcmd.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="160316" +lgsm_version="210516" # Description: Checks SteamCMD is installed and correct. diff --git a/lgsm/functions/check_system_dir.sh b/lgsm/functions/check_system_dir.sh index 22933fa79..18a0d8019 100644 --- a/lgsm/functions/check_system_dir.sh +++ b/lgsm/functions/check_system_dir.sh @@ -2,7 +2,7 @@ # LGSM check_system_dir.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" if [ ! -d "${systemdir}" ]; then fn_print_fail_nl "Cannot access ${systemdir}: No such directory" diff --git a/lgsm/functions/check_tmux.sh b/lgsm/functions/check_tmux.sh index d61604a6f..a2287e375 100644 --- a/lgsm/functions/check_tmux.sh +++ b/lgsm/functions/check_tmux.sh @@ -2,7 +2,7 @@ # LGSM check_tmux.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Checks if tmux is installed as too many users do not RTFM or know how to use Google. diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 748c986b2..f5c517129 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -2,7 +2,7 @@ # LGSM command_backup.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060516" +lgsm_version="210516" # Description: Creates a .tar.gz file in the backup directory. diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index ef9f54962..966b886b5 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -2,7 +2,7 @@ # LGSM command_console.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060516" +lgsm_version="210516" # Description: Gives access to the server tmux console. diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 348d74bb0..4710050f2 100644 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -2,7 +2,7 @@ # LGSM command_debug.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Runs the server without tmux. Runs direct from the terminal. diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 9fe4ac6bf..f15380490 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -2,7 +2,7 @@ # LGSM command_details.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="080516" +lgsm_version="210516" # Description: Displays server infomation. diff --git a/lgsm/functions/command_dev_debug.sh b/lgsm/functions/command_dev_debug.sh index 2c945bbea..625201df0 100644 --- a/lgsm/functions/command_dev_debug.sh +++ b/lgsm/functions/command_dev_debug.sh @@ -2,7 +2,7 @@ # LGSM dev_debug.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="281215" +lgsm_version="210516" # Description: Dev only: enables debuging log to be saved to dev-debug.log. diff --git a/lgsm/functions/command_dev_detect_deps.sh b/lgsm/functions/command_dev_detect_deps.sh index fd2d54bc1..88c28d5fd 100644 --- a/lgsm/functions/command_dev_detect_deps.sh +++ b/lgsm/functions/command_dev_detect_deps.sh @@ -2,7 +2,7 @@ # LGSM fn_dep_detect function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Detects dependencies the server binary requires. diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index e63742133..fb8e7ac1f 100644 --- a/lgsm/functions/command_install.sh +++ b/lgsm/functions/command_install.sh @@ -2,7 +2,7 @@ # LGSM fn_install function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="260216" +lgsm_version="210516" # Description: Overall function for the installer. diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 31297f644..58b6c90d1 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -2,7 +2,7 @@ # LGSM command_monitor.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060516" +lgsm_version="210516" # Description: Monitors server by checking for running proccesses # then passes to monitor_gsquery.sh. diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 26dec454e..cd34e3f62 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -2,7 +2,7 @@ # LGSM command_start.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060516" +lgsm_version="210516" # Description: Starts the server. diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 1f941eb36..232bf9f1e 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -2,7 +2,7 @@ # LGSM command_stop.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Stops the server. diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh index 3861a6e52..339cfeec8 100644 --- a/lgsm/functions/command_test_alert.sh +++ b/lgsm/functions/command_test_alert.sh @@ -2,7 +2,7 @@ # LGSM command_email_test.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="140516" +lgsm_version="210516" # Description: Sends a test email alert. diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index 38280eeb2..982bc53ba 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor : UltimateByte # Website: https://gameservermanagers.com -lgsm_version="080116" +lgsm_version="210516" # Description: Changes TS3 serveradmin password diff --git a/lgsm/functions/command_update_functions.sh b/lgsm/functions/command_update_functions.sh index 65867df9a..ba7674448 100644 --- a/lgsm/functions/command_update_functions.sh +++ b/lgsm/functions/command_update_functions.sh @@ -2,7 +2,7 @@ # LGSM command_update_functions.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="270216" +lgsm_version="210516" # Description: Deletes the functions dir to allow re-downloading of functions from GitHub. diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 10e3bfa5d..9c03e0e56 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -2,7 +2,7 @@ # LGSM command_validate.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060516" +lgsm_version="210516" # Description: Runs a server validation. diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh index 40b4aa3ca..1952dbcad 100644 --- a/lgsm/functions/compress_unreal2_maps.sh +++ b/lgsm/functions/compress_unreal2_maps.sh @@ -2,7 +2,7 @@ # LGSM compress_unreal2_maps.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh index d04b32853..bb5f78630 100644 --- a/lgsm/functions/compress_ut99_maps.sh +++ b/lgsm/functions/compress_ut99_maps.sh @@ -2,7 +2,7 @@ # LGSM compress_ut99_maps.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="301215" +lgsm_version="210516" function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index c135c0701..a75d2de96 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -2,7 +2,7 @@ # LGSM core_dl.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="050216" +lgsm_version="210516" # Description: Deals with all downloads for LGSM. diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index c7d4451bc..562bed461 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -2,7 +2,7 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="140516" +lgsm_version="210516" # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions would not load. diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index f3434663e..d3282cb44 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -2,7 +2,7 @@ # LGSM core_getopt.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="070116" +lgsm_version="210516" # Description: getopt arguments. diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 8d567fa02..523d1c4b2 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -2,7 +2,7 @@ # LGSM fn_messages function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="380216" +lgsm_version="210516" # Description: Defines on-screen messages such as [ OK ] and how script logs look. diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index bfedeb1b4..b862e8278 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -2,7 +2,7 @@ # LGSM fix.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="010316" +lgsm_version="210516" # Description: Overall function for managing fixes. # Runs functions that will fix an issue. diff --git a/lgsm/functions/fix_arma3.sh b/lgsm/functions/fix_arma3.sh index 6c1eb5cd9..49f4e830e 100644 --- a/lgsm/functions/fix_arma3.sh +++ b/lgsm/functions/fix_arma3.sh @@ -2,7 +2,7 @@ # LGSM fix_arma3.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="301215" +lgsm_version="210516" # Fixes: server not always creating steam_appid.txt file. if [ ! -d "${rootdir}/.local/share/Arma\ 3" ]; then diff --git a/lgsm/functions/fix_csgo.sh b/lgsm/functions/fix_csgo.sh index 39f14218d..0f8a4b8fb 100644 --- a/lgsm/functions/fix_csgo.sh +++ b/lgsm/functions/fix_csgo.sh @@ -2,7 +2,7 @@ # LGSM fix_csgo.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="010316" +lgsm_version="210516" # Description: Resolves various issues with csgo. diff --git a/lgsm/functions/fix_dst.sh b/lgsm/functions/fix_dst.sh index c1179ea38..1106b58e0 100644 --- a/lgsm/functions/fix_dst.sh +++ b/lgsm/functions/fix_dst.sh @@ -2,7 +2,7 @@ # LGSM fix_dst.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="010316" +lgsm_version="210516" # Description: Resolves various issues with Dont Starve together. diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 7fcbccc1f..e5ae37ff6 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -2,7 +2,7 @@ # LGSM fix_glibc.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="220416" +lgsm_version="210516" # Description: Downloads required glibc files and applys teh glibc fix if required diff --git a/lgsm/functions/fix_ins.sh b/lgsm/functions/fix_ins.sh index abdfd0876..5264b5c4e 100644 --- a/lgsm/functions/fix_ins.sh +++ b/lgsm/functions/fix_ins.sh @@ -2,7 +2,7 @@ # LGSM fix_ins.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="291215" +lgsm_version="210516" # Description: Resolves various issues with Insurgency. diff --git a/lgsm/functions/fix_kf.sh b/lgsm/functions/fix_kf.sh index 19aad68b2..7b5547851 100644 --- a/lgsm/functions/fix_kf.sh +++ b/lgsm/functions/fix_kf.sh @@ -2,7 +2,7 @@ # LGSM fix_kf.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" echo "Applying WebAdmin ROOst.css fix." echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" diff --git a/lgsm/functions/fix_ro.sh b/lgsm/functions/fix_ro.sh index 31044227e..7e3115f8b 100644 --- a/lgsm/functions/fix_ro.sh +++ b/lgsm/functions/fix_ro.sh @@ -2,7 +2,7 @@ # LGSM fix_ro.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="010316" +lgsm_version="210516" # Description: Resolves various issues with red orchestra. diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh index a43aa1115..736c648f0 100644 --- a/lgsm/functions/fix_steamcmd.sh +++ b/lgsm/functions/fix_steamcmd.sh @@ -2,7 +2,7 @@ # LGSM fix_steamcmd.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="010316" +lgsm_version="210516" # Description: fixes various issues related to steamCMD. diff --git a/lgsm/functions/fix_ut2k4.sh b/lgsm/functions/fix_ut2k4.sh index e633c0188..a0f07ac26 100644 --- a/lgsm/functions/fix_ut2k4.sh +++ b/lgsm/functions/fix_ut2k4.sh @@ -2,7 +2,7 @@ # LGSM fix_ut2k4.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="010316" +lgsm_version="210516" # Description: Resolves various issues with unreal tournament 2004. diff --git a/lgsm/functions/fix_ut99.sh b/lgsm/functions/fix_ut99.sh index 45d6ec777..58644c03d 100644 --- a/lgsm/functions/fix_ut99.sh +++ b/lgsm/functions/fix_ut99.sh @@ -2,7 +2,7 @@ # LGSM fix_ut99.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" echo "${servercfgfullpath}" echo "enabling UdpServerUplink." { diff --git a/lgsm/functions/fn_functions b/lgsm/functions/fn_functions index f9c62aa46..8e1e6c941 100644 --- a/lgsm/functions/fn_functions +++ b/lgsm/functions/fn_functions @@ -2,7 +2,7 @@ # LGSM core_functions.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Redirect to new core_functions.sh diff --git a/lgsm/functions/fn_getopt b/lgsm/functions/fn_getopt index 5cc3c9e20..a9c766583 100644 --- a/lgsm/functions/fn_getopt +++ b/lgsm/functions/fn_getopt @@ -2,7 +2,7 @@ # LGSM core_getopt.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Redirect to new core_getopt.sh diff --git a/lgsm/functions/fn_update_functions b/lgsm/functions/fn_update_functions index 3f130d3a0..79bfe3cb6 100644 --- a/lgsm/functions/fn_update_functions +++ b/lgsm/functions/fn_update_functions @@ -2,7 +2,7 @@ # LGSM fn_update_functions.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="230116" +lgsm_version="210516" # Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub. diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 3144a9aa9..257f06f16 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -2,7 +2,7 @@ # LGSM info_config.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="010316" +lgsm_version="210516" # Description: Gets specific details from config files. diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index f2f914726..81b434f1b 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -2,7 +2,7 @@ # LGSM info_distro.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Variables providing useful info on the Operating System such as disk and performace info. # Used for command_details.sh, command_debug.sh and email.sh. diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 982acf005..f70086d61 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -2,7 +2,7 @@ # LGSM info_glibc.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="130516" +lgsm_version="210516" # Description: stores details on servers Glibc requirements. diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index 99c51369c..df70e14f7 100644 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -2,7 +2,7 @@ # LGSM info_parms.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="010316" +lgsm_version="210516" # Description: Gets specific details server parameters. diff --git a/lgsm/functions/install_complete.sh b/lgsm/functions/install_complete.sh index c04296b64..f4b885a15 100644 --- a/lgsm/functions/install_complete.sh +++ b/lgsm/functions/install_complete.sh @@ -2,7 +2,7 @@ # LGSM install_complete.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index e1e7ee5d7..e6a298e05 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -2,7 +2,7 @@ # LGSM install_config.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="220216" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/install_gslt.sh b/lgsm/functions/install_gslt.sh index f09ee7020..96cb21459 100644 --- a/lgsm/functions/install_gslt.sh +++ b/lgsm/functions/install_gslt.sh @@ -2,7 +2,7 @@ # LGSM install_gslt.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="270216" +lgsm_version="210516" # Description: Configures GSLT. diff --git a/lgsm/functions/install_gsquery.sh b/lgsm/functions/install_gsquery.sh index c615ead74..2edb28e94 100644 --- a/lgsm/functions/install_gsquery.sh +++ b/lgsm/functions/install_gsquery.sh @@ -2,7 +2,7 @@ # LGSM install_gsquery.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="190216" +lgsm_version="210516" fn_dlgsquery(){ cd "${rootdir}" diff --git a/lgsm/functions/install_header.sh b/lgsm/functions/install_header.sh index 13cb7a96e..96c56a209 100644 --- a/lgsm/functions/install_header.sh +++ b/lgsm/functions/install_header.sh @@ -2,7 +2,7 @@ # LGSM install_header.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="190216" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 1cfe9ac7c..5ce29635e 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -2,7 +2,7 @@ # LGSM install_logs.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="270216" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/install_retry.sh b/lgsm/functions/install_retry.sh index fcd837d98..80df1a6ba 100644 --- a/lgsm/functions/install_retry.sh +++ b/lgsm/functions/install_retry.sh @@ -2,7 +2,7 @@ # LGSM install_retry.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/install_server_dir.sh b/lgsm/functions/install_server_dir.sh index c6a6523f2..ccf629fc8 100644 --- a/lgsm/functions/install_server_dir.sh +++ b/lgsm/functions/install_server_dir.sh @@ -2,7 +2,7 @@ # LGSM install_serverdir.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index cf31e355c..ba25c57a6 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -2,7 +2,7 @@ # LGSM install_server_files.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="270216" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/install_steamcmd.sh b/lgsm/functions/install_steamcmd.sh index 34bd0bc2d..7c733d289 100644 --- a/lgsm/functions/install_steamcmd.sh +++ b/lgsm/functions/install_steamcmd.sh @@ -2,7 +2,7 @@ # LGSM install_steamcmd.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Downloads SteamCMD on install. diff --git a/lgsm/functions/install_ts3.sh b/lgsm/functions/install_ts3.sh index 4313e7792..44d2b4231 100644 --- a/lgsm/functions/install_ts3.sh +++ b/lgsm/functions/install_ts3.sh @@ -2,7 +2,7 @@ # LGSM install_ts3.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh index acfa247d3..07b2dd539 100644 --- a/lgsm/functions/install_ts3db.sh +++ b/lgsm/functions/install_ts3db.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: PhilPhonic # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/install_ut2k4_key.sh b/lgsm/functions/install_ut2k4_key.sh index a0f32dd2a..af71c2993 100644 --- a/lgsm/functions/install_ut2k4_key.sh +++ b/lgsm/functions/install_ut2k4_key.sh @@ -2,7 +2,7 @@ # LGSM install_ut2k4_key.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" local modulename="Install" diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index c4694ff01..4ce5774f1 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -lgsm_version="230216" +lgsm_version="210516" # Description: Acts as a log rotater, removing old logs. diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 971881c0c..747b6dd45 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -2,7 +2,7 @@ # LGSM monitor_gsquery.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="270216" +lgsm_version="210516" # Description: uses gsquery.py to query the server port. # Detects if the server has frozen with the proccess still running. diff --git a/lgsm/functions/update_check.sh b/lgsm/functions/update_check.sh index 527c0bed0..6647524d1 100644 --- a/lgsm/functions/update_check.sh +++ b/lgsm/functions/update_check.sh @@ -2,7 +2,7 @@ # LGSM update_check.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="060516" +lgsm_version="210516" # Description: Checks if a server update is available. diff --git a/lgsm/functions/update_dl.sh b/lgsm/functions/update_dl.sh index 1ccd3e8d5..ee1cc361c 100644 --- a/lgsm/functions/update_dl.sh +++ b/lgsm/functions/update_dl.sh @@ -2,7 +2,7 @@ # LGSM update_dl.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="020216" +lgsm_version="210516" # Description: Runs a server update. From 0c7b20329c574f5e54e8f197e57fdca77969c6c8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 22:59:42 +0100 Subject: [PATCH 602/643] Legacy fix --- functions/core_functions.sh | 9 +++++++++ functions/update_functions.sh | 38 +++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 functions/update_functions.sh diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 821cd4563..2bcf7fb6c 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -14,6 +14,15 @@ if [ -z "${lgsmdir}" ]; then fi fn_fetch_core_dl(){ +if [ -z "${githubuser}"]; then + githubuser="dgibbs64" +fi +if [ -z "${githubrepo}"]; then + githubrepo="linuxgsm" +fi +if [ -z "${githubbranch}"]; then + githubbranch="master" +fi github_file_url_dir="lgsm/functions" github_file_url_name="${functionfile}" filedir="${functionsdir}" diff --git a/functions/update_functions.sh b/functions/update_functions.sh new file mode 100644 index 000000000..ba7674448 --- /dev/null +++ b/functions/update_functions.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# LGSM command_update_functions.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +lgsm_version="210516" + +# Description: Deletes the functions dir to allow re-downloading of functions from GitHub. + +function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +check.sh +fn_print_dots "Updating functions" +fn_scriptlog "Updating functions" +sleep 1 +echo -ne "\n" + +# Removed legecy functions dir +if [ -n "${rootdir}" ]; then + if [ -d "${rootdir}/functions/" ]; then + rm -rfv "${rootdir}/functions/" + exitcode=$? + fi +fi + +if [ -n "${functionsdir}" ]; then + if [ -d "${functionsdir}" ]; then + rm -rfv "${functionsdir}/"* + exitcode=$? + fi +fi + +if [ "${exitcode}" == "0" ]; then + fn_print_ok "Updating functions" + fn_scriptlog "Success! Updating functions" +else + fn_print_fail "Updating functions" + fn_scriptlog "Failure! Updating functions" +fi +echo -ne "\n" \ No newline at end of file From fa4bc9a14af5d1feeebb1be7b5b0417c81004882 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 23:01:10 +0100 Subject: [PATCH 603/643] legacy fixes --- functions/update_functions.sh | 37 +++++++---------------------------- 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/functions/update_functions.sh b/functions/update_functions.sh index ba7674448..5513d5d20 100644 --- a/functions/update_functions.sh +++ b/functions/update_functions.sh @@ -1,38 +1,15 @@ #!/bin/bash -# LGSM command_update_functions.sh function +# LGSM fn_update_functions function # Author: Daniel Gibbs # Website: https://gameservermanagers.com lgsm_version="210516" -# Description: Deletes the functions dir to allow re-downloading of functions from GitHub. +# Description: REDIRECT FUNCTION to new command_update_functions.sh -function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -check.sh -fn_print_dots "Updating functions" -fn_scriptlog "Updating functions" -sleep 1 -echo -ne "\n" +command_update_functions.sh(){ +functionfile="${FUNCNAME}" +fn_runfunction +} -# Removed legecy functions dir -if [ -n "${rootdir}" ]; then - if [ -d "${rootdir}/functions/" ]; then - rm -rfv "${rootdir}/functions/" - exitcode=$? - fi -fi +command_update_functions.sh -if [ -n "${functionsdir}" ]; then - if [ -d "${functionsdir}" ]; then - rm -rfv "${functionsdir}/"* - exitcode=$? - fi -fi - -if [ "${exitcode}" == "0" ]; then - fn_print_ok "Updating functions" - fn_scriptlog "Success! Updating functions" -else - fn_print_fail "Updating functions" - fn_scriptlog "Failure! Updating functions" -fi -echo -ne "\n" \ No newline at end of file From 7216f75217dfb307bfa26434ab42b1cf444a4213 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 23:29:03 +0100 Subject: [PATCH 604/643] Version 210516 --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- QuakeLive/qlserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- StarBound/sbserver | 2 +- SvenCoop/svencoopserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament99/ut99server | 2 +- 49 files changed, 49 insertions(+), 49 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 8e04aea42..3c07f7cdb 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 30f34b568..719cbe50a 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/Arma3/arma3server b/Arma3/arma3server index cf720bb0e..637910069 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -23,7 +23,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 48ae9673e..6a3a4cbce 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 4dc07246f..d2abd9b5c 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 2aa450534..7211aaf6b 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index ab8ab009f..7bf5dce99 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 04cc4aa6c..9fd3660e9 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index e0cbc3d21..ae3d8cb86 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index f2662d5c6..940115c9c 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 814e1cf71..cc66b0f6c 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 6612fb477..747e1f20c 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index d4d2d05f0..f62502150 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index ecee9ab39..64ccb7c8b 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index c118ee466..b82667778 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 05f624dbe..f1b20c2ec 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 668f65810..c352d9484 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index ea4c85292..79b8c8378 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 778c69a43..e752ec529 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -23,7 +23,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index b3cd29604..f287be9bc 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index ab75a9efe..8a5572cdb 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 40dc54266..b65090e8a 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 4c93d73e2..3af56de28 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -23,7 +23,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/Insurgency/insserver b/Insurgency/insserver index 7f337536e..229972518 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 5db3b0a10..ddc0eafd2 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 5380e71d8..385a46649 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index d70fce9f3..bbf73359e 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -23,7 +23,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 12a29437f..bae9c975a 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Pushover diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 11a531f6a..ed972bedb 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Server Details diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 4b4628724..e23c30264 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index a89192c53..919468d24 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 878bf985e..3c6f7630d 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 9be4d6573..e670662b3 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 85ac0c1ff..90c5172cf 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 9bf5284cd..043f46015 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -23,7 +23,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index f47aee840..77b09a5b7 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index cccaa7aeb..3073a9f14 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index e59d5c777..cfb8746eb 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/Rust/rustserver b/Rust/rustserver index 23666b39c..7c200bdae 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -23,7 +23,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login (not required) diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index cad500dc1..f9fab4cd8 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/StarBound/sbserver b/StarBound/sbserver index 3837c6213..232063344 100644 --- a/StarBound/sbserver +++ b/StarBound/sbserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/SvenCoop/svencoopserver b/SvenCoop/svencoopserver index f58719276..099631bf0 100644 --- a/SvenCoop/svencoopserver +++ b/SvenCoop/svencoopserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 3a13f4a37..69533c635 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index fa05c0a1d..e4fc40e99 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 7cf1c88ca..12eefa48d 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Start Variables diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 1cfc86b53..67adbe4c6 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -23,7 +23,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 51bc754b0..8019fb888 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -23,7 +23,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Steam login diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index fcdabc3c6..5b59c24b2 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Start Variables diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 00055db8e..707f4dc2e 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -22,7 +22,7 @@ email="email@example.com" # Pushbullet # https://www.pushbullet.com/#settings -pushbulletalert"off" +pushbulletalert="off" pushbullettoken="accesstoken" # Start Variables From 50bf63da60db50936700030f24bdd76710e04ede Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 23:38:18 +0100 Subject: [PATCH 605/643] now using check_status.sh --- lgsm/functions/command_stop.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 232bf9f1e..db353be3d 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -17,8 +17,8 @@ fn_stop_graceful_source(){ tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 # waits up to 30 seconds giving the server time to shutdown gracefuly for seconds in {1..30}; do - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then + check_status.sh + if [ "${status}" != "0" ]; then fn_print_ok "Graceful: rcon quit: ${seconds}: " fn_print_ok_eol_nl fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" @@ -27,7 +27,8 @@ fn_stop_graceful_source(){ sleep 1 fn_print_dots "Graceful: rcon quit: ${seconds}" done - if [ "${pid}" != "0" ]; then + check_status.sh + if [ "${status}" != "0" ]; then fn_print_fail "Graceful: rcon quit: " fn_print_fail_eol_nl fn_scriptlog "Graceful: rcon quit: FAIL" @@ -176,8 +177,8 @@ fn_stop_teamspeak3(){ # Kill tmux session tmux kill-session -t "${servicename}" > /dev/null 2>&1 sleep 0.5 - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then + check_status.sh + if [ "${status}" == "0" ]; then # Remove lock file rm -f "${rootdir}/${lockselfname}" fn_print_ok_nl "${servername}" @@ -199,8 +200,8 @@ fn_stop_pre_check(){ fn_stop_teamspeak3 fi else - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then + check_status.sh + if [ "${status}" != "0" ]; then fn_print_ok_nl "${servername} is already stopped" fn_scriptlog "${servername} is already stopped" else From b9c280eb3ba8fab20535d85747d95cee48da8645 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 23:41:00 +0100 Subject: [PATCH 606/643] ts3 check status --- lgsm/functions/command_stop.sh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index db353be3d..3bd868339 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -164,13 +164,19 @@ fn_stop_teamspeak3(){ fn_scriptlog "${servername}" sleep 1 ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 - # Remove lock file - rm -f "${rootdir}/${lockselfname}" - fn_print_ok_nl "${servername}" - fn_scriptlog "Stopped ${servername}" - } + check_status.sh + if [ "${status}" == "0" ]; then + # Remove lock file + rm -f "${rootdir}/${lockselfname}" + fn_print_ok_nl "${servername}" + fn_scriptlog "Stopped ${servername}" + else + fn_print_fail_nl "Unable to stop${servername}" + fn_scriptlog "Unable to stop${servername}" + fi +} - fn_stop_tmux(){ +fn_stop_tmux(){ fn_print_dots "${servername}" fn_scriptlog "tmux kill-session: ${servername}" sleep 1 From ebd35d2d89f908a2bfa9d3b68720150e3860f8e0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 23:48:39 +0100 Subject: [PATCH 607/643] corrected gsquery bug --- lgsm/functions/command_monitor.sh | 2 +- lgsm/functions/install_gsquery.sh | 2 +- lgsm/functions/monitor_gsquery.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 58b6c90d1..cab5daea9 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -66,7 +66,7 @@ fn_monitor_tmux(){ local allowed_engines_array=( avalanche goldsource realvirtuality source spark unity3d unreal unreal2 ) for allowed_engine in "${allowed_engines_array[@]}" do - if [ "${allowed_engine}" == "${function_selfname}" ]; then + if [ "${allowed_engine}" == "${engine}" ]; then monitor_gsquery.sh fi done diff --git a/lgsm/functions/install_gsquery.sh b/lgsm/functions/install_gsquery.sh index 2edb28e94..86025c0a0 100644 --- a/lgsm/functions/install_gsquery.sh +++ b/lgsm/functions/install_gsquery.sh @@ -5,7 +5,7 @@ lgsm_version="210516" fn_dlgsquery(){ - cd "${rootdir}" + cd "${functionsdir}" echo -e "downloading gsquery.py...\c" wget -N /dev/null "https://gameservermanagers.com/dl/gsquery.py" 2>&1 | grep -F "HTTP" | grep -v "Moved Permanently" | cut -c45- | uniq chmod +x gsquery.py diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 747b6dd45..34036000d 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -9,7 +9,7 @@ lgsm_version="210516" local modulename="Monitor" -# Forces legecy servers to use gsquery as vat gsquery is not present in legecy +# Forces legecy servers to use gsquery if [ -z "${gsquery}" ]; then gsquery="yes" fi From b53e42557a67664c9145b860d449c46779623a8c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 23:54:46 +0100 Subject: [PATCH 608/643] port --- lgsm/functions/monitor_gsquery.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 34036000d..a771b4c91 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -46,7 +46,7 @@ if [ "${gsquery}" == "yes" ]; then fn_print_querying_eol fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : QUERYING" - gsquerycmd=$("${functionsdir}"/gsquery.py -a "${ip}" -p 1 -e "${engine}" 2>&1) + gsquerycmd=$("${functionsdir}"/gsquery.py -a "${ip}" -p "${port}" -e "${engine}" 2>&1) exitcode=$? sleep 1 From b0257c71903185a491b224192ea6704b11e030af Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sat, 21 May 2016 23:59:53 +0100 Subject: [PATCH 609/643] incorrect if --- lgsm/functions/monitor_gsquery.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index a771b4c91..c1ac2e22c 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -29,7 +29,7 @@ if [ "${gsquery}" == "yes" ]; then port=$((port + 1)) fi - if [ -z "${queryport}" ]; then + if [ -n "${queryport}" ]; then port="${queryport}" fi From 2099e210ebd2bcd1abab165c3361466f9be8e472 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 22 May 2016 00:00:56 +0100 Subject: [PATCH 610/643] nl --- lgsm/functions/monitor_gsquery.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index c1ac2e22c..b93b15cf0 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -53,7 +53,7 @@ if [ "${gsquery}" == "yes" ]; then if [ "${exitcode}" == "0" ]; then # Server OK fn_print_ok "Querying port: ${ip}:${port} : ${queryattempt} : " - fn_print_ok_eol + fn_print_ok_eol_nl fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : OK" sleep 1 exit From 2da3487aa5e8827e43babc33db1c901c80bdf6b7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 22 May 2016 00:07:07 +0100 Subject: [PATCH 611/643] updated alert msg --- lgsm/functions/alert.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 60833fd62..0af644ae6 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -21,13 +21,13 @@ fn_alert_restart(){ fn_alert_restart_query(){ fn_scriptlog "Sending restart alert: ${gsquerycmd}" alertsubject="LGSM - Restarted - ${servername}" - alertbody="Failed to Query: ${gsquerycmd}" + alertbody="gsquery.py failed to query: ${gsquerycmd}" } fn_alert_update(){ fn_scriptlog "Sending update alert" alertsubject="LGSM - Updated - ${servername}" - alertbody="${servicename} Recieved update" + alertbody="${servicename} recieved update" } if [ "${alert}" == "restart" ]; then From 86d3d5aa74a30a98a69c1c7a623fef14c4846c3a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 22 May 2016 00:19:51 +0100 Subject: [PATCH 612/643] corrected if --- lgsm/functions/command_stop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 3bd868339..7878c5362 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -18,7 +18,7 @@ fn_stop_graceful_source(){ # waits up to 30 seconds giving the server time to shutdown gracefuly for seconds in {1..30}; do check_status.sh - if [ "${status}" != "0" ]; then + if [ "${status}" == "0" ]; then fn_print_ok "Graceful: rcon quit: ${seconds}: " fn_print_ok_eol_nl fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" From eb303423f1c0cfe7684dd90b36aacbc193cc03a9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 22 May 2016 00:21:23 +0100 Subject: [PATCH 613/643] corrected if --- lgsm/functions/command_stop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 7878c5362..89769d492 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -207,7 +207,7 @@ fn_stop_pre_check(){ fi else check_status.sh - if [ "${status}" != "0" ]; then + if [ "${status}" == "0" ]; then fn_print_ok_nl "${servername} is already stopped" fn_scriptlog "${servername} is already stopped" else From d72602c5c64fb6823b84e5936dd452d427faed07 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sun, 22 May 2016 19:21:42 +0200 Subject: [PATCH 614/643] Corrected missing spaces --- functions/core_functions.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 2bcf7fb6c..0fca7da03 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -14,13 +14,13 @@ if [ -z "${lgsmdir}" ]; then fi fn_fetch_core_dl(){ -if [ -z "${githubuser}"]; then +if [ -z "${githubuser}" ]; then githubuser="dgibbs64" fi -if [ -z "${githubrepo}"]; then +if [ -z "${githubrepo}" ]; then githubrepo="linuxgsm" fi -if [ -z "${githubbranch}"]; then +if [ -z "${githubbranch}" ]; then githubbranch="master" fi github_file_url_dir="lgsm/functions" @@ -69,4 +69,4 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } -core_functions.sh \ No newline at end of file +core_functions.sh From 8306586f0e22ed3075619f642067804c44b2145c Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sun, 22 May 2016 20:30:05 +0200 Subject: [PATCH 615/643] fn_printinfo renamed in fn_print_info --- lgsm/functions/logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index 4ce5774f1..0cc4212e1 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -19,7 +19,7 @@ fi # For games not displaying a console, and having logs into their game folder if [ -n "${gamelogfile}" ]; then if [ -n "$(find "${systemdir}" -name "gamelog*.log")" ]; then - fn_printinfo "Moving game logs to ${gamelogdir}" + fn_print_info "Moving game logs to ${gamelogdir}" fn_scriptlog "Moving game logs to ${gamelogdir}" echo -en "\n" sleep 1 From b7701042ea508f354803685339031106b3dcc118 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Sun, 22 May 2016 21:21:17 +0200 Subject: [PATCH 616/643] move stupid games' logs only on game start --- lgsm/functions/logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index 0cc4212e1..dcb87697f 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -17,7 +17,7 @@ if [ -n "${consolelog}" ]; then fi # For games not displaying a console, and having logs into their game folder -if [ -n "${gamelogfile}" ]; then +if [ "${function_selfname}" == "command_start.sh" ] && [ -n "${gamelogfile}" ]; then if [ -n "$(find "${systemdir}" -name "gamelog*.log")" ]; then fn_print_info "Moving game logs to ${gamelogdir}" fn_scriptlog "Moving game logs to ${gamelogdir}" From 1c14a7b4aab4467c67760640c166e9809c0956f5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 22 May 2016 22:03:23 +0100 Subject: [PATCH 617/643] Altered wording --- lgsm/functions/alert.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 0af644ae6..f3cc2b452 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -8,7 +8,7 @@ lgsm_version="210516" fn_alert_test(){ fn_scriptlog "Sending test alert" - alertsubject="LGSM - Alert Check - ${servername}" + alertsubject="LGSM - Test Alert - ${servername}" alertbody="LGSM test alert, how you read?" } From 09bff470f7b921ec71f88cb96157e4751c4d0621 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 22 May 2016 22:04:55 +0100 Subject: [PATCH 618/643] corrected wording --- lgsm/functions/alert.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index f3cc2b452..7bab460ad 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -43,7 +43,7 @@ fi if [ "${emailnotification}" == "on" ]||[ "${emailalert}" == "on" ]&&[ -n "${email}" ]; then alert_email.sh elif [ "${emailnotification}" != "on" ]||[ "${emailalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then - fn_print_fail_nl "Alerts not enabled" + fn_print_fail_nl "Email alerts not enabled" fn_scriptlog "Email alerts not enabled" elif [ -z "${email}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then fn_print_fail_nl "Email no set" From 425a0eb51c08be197815a175c49d97e09f00f35d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Sun, 22 May 2016 22:05:24 +0100 Subject: [PATCH 619/643] altered from fail to info --- lgsm/functions/alert.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 7bab460ad..640b04b36 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -43,7 +43,7 @@ fi if [ "${emailnotification}" == "on" ]||[ "${emailalert}" == "on" ]&&[ -n "${email}" ]; then alert_email.sh elif [ "${emailnotification}" != "on" ]||[ "${emailalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then - fn_print_fail_nl "Email alerts not enabled" + fn_print_info_nl "Email alerts not enabled" fn_scriptlog "Email alerts not enabled" elif [ -z "${email}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then fn_print_fail_nl "Email no set" @@ -53,7 +53,7 @@ fi if [ "${pushbulletalert}" == "on" ]&&[ -n "${pushbullettoken}" ]; then alert_pushbullet.sh elif [ "${pushbulletalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then - fn_print_fail_nl "Pushbullet alerts not enabled" + fn_print_info_nl "Pushbullet alerts not enabled" fn_scriptlog "Pushbullet alerts not enabled" elif [ -z "${pushbullettoken}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then fn_print_fail_nl "Pushbullet token not set" From 6dc74cdf99d122d550243d5398de1e1f2a3999c9 Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Sun, 22 May 2016 17:23:30 -0500 Subject: [PATCH 620/643] Folding Ark stop functionality into development paradigm --- lgsm/functions/command_stop.sh | 82 +++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 15 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 1f941eb36..b37346c33 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -2,7 +2,7 @@ # LGSM command_stop.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="271215" +lgsm_version="210516" # Description: Stops the server. @@ -17,8 +17,8 @@ fn_stop_graceful_source(){ tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 # waits up to 30 seconds giving the server time to shutdown gracefuly for seconds in {1..30}; do - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then + check_status.sh + if [ "${status}" == "0" ]; then fn_print_ok "Graceful: rcon quit: ${seconds}: " fn_print_ok_eol_nl fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" @@ -27,7 +27,8 @@ fn_stop_graceful_source(){ sleep 1 fn_print_dots "Graceful: rcon quit: ${seconds}" done - if [ "${pid}" != "0" ]; then + check_status.sh + if [ "${status}" != "0" ]; then fn_print_fail "Graceful: rcon quit: " fn_print_fail_eol_nl fn_scriptlog "Graceful: rcon quit: FAIL" @@ -158,28 +159,79 @@ fn_stop_graceful_select(){ fi } +fn_stop_ark(){ + info_config.sh + if [ -z $queryport ] ; then + fn_print_warn "no queryport found using info_config.sh" + userconfigfile="${filesdir}" + userconfigfile+="/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" + queryport=$(grep ^QueryPort= ${userconfigfile} | cut -d= -f2 | sed "s/[^[:digit:].*].*//g") + fi + if [ -z $queryport ] ; then + fn_print_warn "no queryport found in the GameUsersettings.ini file" + return + fi + + if [[ ${#queryport} -gt 0 ]] ; then + for ((pidcheck=0;pidcheck<20;pidcheck++)) ; do + pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\ + grep :${queryport}[[:space:]] | rev | awk '{print $1}' |\ + rev | cut -d\/ -f1) + # + # check for a valid pid + let pid+=0 # turns an empty string into a valid number, '0', + # and a valid numeric pid remains unchanged. + if [[ $pid -gt 1 && $pid -le $(cat /proc/sys/kernel/pid_max) ]] ; then + fn_print_dots "Process still bound. Awaiting graceful exit: $pidcheck" + sleep 1 + else + break // Our job is done here + fi # end if for pid range check + done + if [[ ${pidcheck} -eq 20 ]] ; then + # The process doesn't want to close after 20 seconds. + # kill it hard. + fn_print_warn "Terminating reluctant Ark process: $pid" + kill -9 $pid + fi + fi # end if for port check +} # end of fn_stop_ark + + fn_stop_teamspeak3(){ fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 - # Remove lock file - rm -f "${rootdir}/${lockselfname}" - fn_print_ok_nl "${servername}" - fn_scriptlog "Stopped ${servername}" - } + check_status.sh + if [ "${status}" == "0" ]; then + # Remove lock file + rm -f "${rootdir}/${lockselfname}" + fn_print_ok_nl "${servername}" + fn_scriptlog "Stopped ${servername}" + else + fn_print_fail_nl "Unable to stop${servername}" + fn_scriptlog "Unable to stop${servername}" + fi +} - fn_stop_tmux(){ +fn_stop_tmux(){ fn_print_dots "${servername}" fn_scriptlog "tmux kill-session: ${servername}" sleep 1 # Kill tmux session tmux kill-session -t "${servicename}" > /dev/null 2>&1 sleep 0.5 - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then + check_status.sh + if [ "${status}" == "0" ]; then # Remove lock file rm -f "${rootdir}/${lockselfname}" + # ARK doesn't clean up immediately after tmux is killed. + # Make certain the ports are cleared before continuing. + if [ "${gamename}" == "ARK: Survivial Evolved" ]; then + fn_stop_ark + echo -en "\n" + fi fn_print_ok_nl "${servername}" fn_scriptlog "Stopped ${servername}" else @@ -199,8 +251,8 @@ fn_stop_pre_check(){ fn_stop_teamspeak3 fi else - pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") - if [ "${pid}" == "0" ]; then + check_status.sh + if [ "${status}" == "0" ]; then fn_print_ok_nl "${servername} is already stopped" fn_scriptlog "${servername} is already stopped" else @@ -214,4 +266,4 @@ info_config.sh fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 -fn_stop_pre_check \ No newline at end of file +fn_stop_pre_check From cdefc548cde4abfa892eae944a2c340b0bf93338 Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Sun, 22 May 2016 17:54:18 -0500 Subject: [PATCH 621/643] Formalizing countup check and reverting upstream changes --- lgsm/functions/command_stop.sh | 89 ++++++++++++++++------------------ 1 file changed, 41 insertions(+), 48 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index b37346c33..d7b9ddd33 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -17,8 +17,8 @@ fn_stop_graceful_source(){ tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 # waits up to 30 seconds giving the server time to shutdown gracefuly for seconds in {1..30}; do - check_status.sh - if [ "${status}" == "0" ]; then + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then fn_print_ok "Graceful: rcon quit: ${seconds}: " fn_print_ok_eol_nl fn_scriptlog "Graceful: rcon quit: OK: ${seconds} seconds" @@ -27,8 +27,7 @@ fn_stop_graceful_source(){ sleep 1 fn_print_dots "Graceful: rcon quit: ${seconds}" done - check_status.sh - if [ "${status}" != "0" ]; then + if [ "${pid}" != "0" ]; then fn_print_fail "Graceful: rcon quit: " fn_print_fail_eol_nl fn_scriptlog "Graceful: rcon quit: FAIL" @@ -156,10 +155,11 @@ fn_stop_graceful_select(){ fn_stop_graceful_goldsource else fn_stop_tmux - fi + fi } fn_stop_ark(){ + MAXPIDITER=15 # The maximum number of times to check if the ark pid has closed gracefully. info_config.sh if [ -z $queryport ] ; then fn_print_warn "no queryport found using info_config.sh" @@ -173,47 +173,40 @@ fn_stop_ark(){ fi if [[ ${#queryport} -gt 0 ]] ; then - for ((pidcheck=0;pidcheck<20;pidcheck++)) ; do - pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\ - grep :${queryport}[[:space:]] | rev | awk '{print $1}' |\ - rev | cut -d\/ -f1) - # - # check for a valid pid - let pid+=0 # turns an empty string into a valid number, '0', - # and a valid numeric pid remains unchanged. - if [[ $pid -gt 1 && $pid -le $(cat /proc/sys/kernel/pid_max) ]] ; then - fn_print_dots "Process still bound. Awaiting graceful exit: $pidcheck" - sleep 1 - else - break // Our job is done here - fi # end if for pid range check - done - if [[ ${pidcheck} -eq 20 ]] ; then - # The process doesn't want to close after 20 seconds. - # kill it hard. - fn_print_warn "Terminating reluctant Ark process: $pid" + for (( pidcheck=0 ; pidcheck < ${MADPIDITER} ; pidcheck++ )) ; do + pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\ + grep :${queryport}[[:space:]] | rev | awk '{print $1}' |\ + rev | cut -d\/ -f1) + # + # check for a valid pid + let pid+=0 # turns an empty string into a valid number, '0', + # and a valid numeric pid remains unchanged. + if [[ $pid -gt 1 && $pid -le $(cat /proc/sys/kernel/pid_max) ]] ; then + fn_print_dots "Process still bound. Awaiting graceful exit: $pidcheck" + sleep 1 + else + break # Our job is done here + fi # end if for pid range check + done + if [[ ${pidcheck} -eq ${MAXPIDITER} ]] ; then + # The process doesn't want to close after 20 seconds. + # kill it hard. + fn_print_warn "Terminating reluctant Ark process: $pid" kill -9 $pid - fi - fi # end if for port check + fi + fi # end if for port check } # end of fn_stop_ark - fn_stop_teamspeak3(){ fn_print_dots "${servername}" fn_scriptlog "${servername}" sleep 1 ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 - check_status.sh - if [ "${status}" == "0" ]; then - # Remove lock file - rm -f "${rootdir}/${lockselfname}" - fn_print_ok_nl "${servername}" - fn_scriptlog "Stopped ${servername}" - else - fn_print_fail_nl "Unable to stop${servername}" - fn_scriptlog "Unable to stop${servername}" - fi -} + # Remove lock file + rm -f "${rootdir}/${lockselfname}" + fn_print_ok_nl "${servername}" + fn_scriptlog "Stopped ${servername}" + } fn_stop_tmux(){ fn_print_dots "${servername}" @@ -222,16 +215,16 @@ fn_stop_tmux(){ # Kill tmux session tmux kill-session -t "${servicename}" > /dev/null 2>&1 sleep 0.5 - check_status.sh - if [ "${status}" == "0" ]; then + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then # Remove lock file rm -f "${rootdir}/${lockselfname}" # ARK doesn't clean up immediately after tmux is killed. - # Make certain the ports are cleared before continuing. - if [ "${gamename}" == "ARK: Survivial Evolved" ]; then - fn_stop_ark - echo -en "\n" - fi + # Make certain the ports are cleared before continuing. + if [ "${gamename}" == "ARK: Survivial Evolved" ]; then + fn_stop_ark + echo -en "\n" + fi fn_print_ok_nl "${servername}" fn_scriptlog "Stopped ${servername}" else @@ -249,10 +242,10 @@ fn_stop_pre_check(){ fn_scriptlog "${servername} is already stopped" else fn_stop_teamspeak3 - fi + fi else - check_status.sh - if [ "${status}" == "0" ]; then + pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") + if [ "${pid}" == "0" ]; then fn_print_ok_nl "${servername} is already stopped" fn_scriptlog "${servername} is already stopped" else From 9f638e8fbb9587d958bd24a003546e3e7986e1bc Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Sun, 22 May 2016 22:21:48 -0500 Subject: [PATCH 622/643] Correcing reference to fn_fetch_function --- lgsm/functions/core_functions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index c7d4451bc..59aad2dd4 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -148,7 +148,7 @@ fn_fetch_function command_fastdl.sh(){ functionfile="${FUNCNAME}" -fn_runfunction +fn_fetch_function } command_ts3_server_pass.sh(){ From 21be3ad81ead148c82caa447e15584626bf6b4dd Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 24 May 2016 16:45:44 +0200 Subject: [PATCH 623/643] srcds_linux no longer works, replaced by srcds_run fixes #829 --- Insurgency/insserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Insurgency/insserver b/Insurgency/insserver index 229972518..1a0a07862 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -71,7 +71,7 @@ functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/insurgency" executabledir="${filesdir}" -executable="./srcds_linux" +executable="./srcds_run" servercfg="${servicename}.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" From 09a3cb679a57633d116f1685a416b24cd308d339 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Tue, 24 May 2016 19:40:54 +0100 Subject: [PATCH 624/643] As per #815 As per #815 --- lgsm/functions/fix_arma3.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/fix_arma3.sh b/lgsm/functions/fix_arma3.sh index 49f4e830e..cc3c2aaf0 100644 --- a/lgsm/functions/fix_arma3.sh +++ b/lgsm/functions/fix_arma3.sh @@ -2,12 +2,12 @@ # LGSM fix_arma3.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="210516" +lgsm_version="240516" -# Fixes: server not always creating steam_appid.txt file. -if [ ! -d "${rootdir}/.local/share/Arma\ 3" ]; then +# Fixes: 20150 Segmentation fault (core dumped) error. +if [ ! -d "${HOME}/.local/share/Arma 3" ]||[ ! -d "${HOME}/.local/share/Arma 3 - Other Profiles" ]; then fixname="20150 Segmentation fault (core dumped)" fn_fix_msg_start - mkdir -p "${rootdir}/.local/share/Arma\ 3" + mkdir -p "${HOME}/.local/share/Arma 3 - Other Profiles" fn_fix_msg_end fi \ No newline at end of file From 570002cfcef9a7dfde3a72a69ede759951a6bea8 Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Tue, 24 May 2016 15:05:05 -0500 Subject: [PATCH 625/643] Dang type-o --- lgsm/functions/command_stop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index d7b9ddd33..13236d0ae 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -173,7 +173,7 @@ fn_stop_ark(){ fi if [[ ${#queryport} -gt 0 ]] ; then - for (( pidcheck=0 ; pidcheck < ${MADPIDITER} ; pidcheck++ )) ; do + for (( pidcheck=0 ; pidcheck < ${MAXPIDITER} ; pidcheck++ )) ; do pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\ grep :${queryport}[[:space:]] | rev | awk '{print $1}' |\ rev | cut -d\/ -f1) From 552554627cf170fdc5856f73c6144841f29f2490 Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Tue, 24 May 2016 15:14:11 -0500 Subject: [PATCH 626/643] testing stdbuf as an unbuffer replacement --- lgsm/functions/command_validate.sh | 4 +++- lgsm/functions/install_server_files.sh | 6 ++++-- lgsm/functions/update_dl.sh | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 10e3bfa5d..6c852aeb6 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -22,7 +22,9 @@ fn_validation(){ cd "${rootdir}/steamcmd" - if [ $(command -v unbuffer) ]; then + if [ $(command -v stdbuf) ]; then + unbuffer="stdbuf -i0 -o0 -e0" + elif [ $(command -v unbuffer) ]; then unbuffer=unbuffer fi diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index cf31e355c..1a852bd7b 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -43,7 +43,9 @@ fn_install_server_files_steamcmd(){ fi # Detects if unbuffer command is available. - if [ $(command -v unbuffer) ]; then + if [ $(command -v stdbuf) ]; then + unbuffer="stdbuf -i0 -o0 -e0" + elif [ $(command -v unbuffer) ]; then unbuffer=unbuffer fi @@ -107,4 +109,4 @@ if [ -z "${autoinstall}" ]; then * ) echo "Please answer yes or no.";; esac done -fi \ No newline at end of file +fi diff --git a/lgsm/functions/update_dl.sh b/lgsm/functions/update_dl.sh index 1ccd3e8d5..d055bba58 100644 --- a/lgsm/functions/update_dl.sh +++ b/lgsm/functions/update_dl.sh @@ -14,7 +14,9 @@ fn_steamcmd_dl(){ cd "steamcmd" # Detects if unbuffer command is available. - if [ $(command -v unbuffer) ]; then + if [ $(command -v stdbuf) ]; then + unbuffer="stdbuf -i0 -o0 -e0" + elif [ $(command -v unbuffer) ]; then unbuffer=unbuffer fi From be315b3b3d19065f9e4d210344055c04944876f7 Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Tue, 24 May 2016 16:10:45 -0500 Subject: [PATCH 627/643] Use unbuffer if present first, then try stdbuf --- lgsm/functions/command_validate.sh | 6 +++--- lgsm/functions/install_server_files.sh | 6 +++--- lgsm/functions/update_dl.sh | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 6c852aeb6..71433a7b6 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -22,10 +22,10 @@ fn_validation(){ cd "${rootdir}/steamcmd" - if [ $(command -v stdbuf) ]; then - unbuffer="stdbuf -i0 -o0 -e0" - elif [ $(command -v unbuffer) ]; then + if [ $(command -v unbuffer) ]; then unbuffer=unbuffer + elif [ $(command -v stdbuf) ]; then + unbuffer="stdbuf -i0 -o0 -e0" fi if [ "${engine}" == "goldsource" ]; then diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 1a852bd7b..ffe0284a3 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -43,10 +43,10 @@ fn_install_server_files_steamcmd(){ fi # Detects if unbuffer command is available. - if [ $(command -v stdbuf) ]; then - unbuffer="stdbuf -i0 -o0 -e0" - elif [ $(command -v unbuffer) ]; then + if [ $(command -v unbuffer) ]; then unbuffer=unbuffer + elif [ $(command -v stdbuf) ]; then + unbuffer="stdbuf -i0 -o0 -e0" fi if [ "${counter}" -le "4" ]; then diff --git a/lgsm/functions/update_dl.sh b/lgsm/functions/update_dl.sh index d055bba58..5a40c802f 100644 --- a/lgsm/functions/update_dl.sh +++ b/lgsm/functions/update_dl.sh @@ -14,10 +14,10 @@ fn_steamcmd_dl(){ cd "steamcmd" # Detects if unbuffer command is available. + if [ $(command -v unbuffer) ]; then + unbuffer=unbuffer if [ $(command -v stdbuf) ]; then unbuffer="stdbuf -i0 -o0 -e0" - elif [ $(command -v unbuffer) ]; then - unbuffer=unbuffer fi if [ "${engine}" == "goldsource" ]; then From 6fd13b734db56c30f882e51c5a638ea88717e717 Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Tue, 24 May 2016 16:12:59 -0500 Subject: [PATCH 628/643] elif not if --- lgsm/functions/update_dl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_dl.sh b/lgsm/functions/update_dl.sh index 5a40c802f..466e06d7c 100644 --- a/lgsm/functions/update_dl.sh +++ b/lgsm/functions/update_dl.sh @@ -16,7 +16,7 @@ fn_steamcmd_dl(){ # Detects if unbuffer command is available. if [ $(command -v unbuffer) ]; then unbuffer=unbuffer - if [ $(command -v stdbuf) ]; then + elif [ $(command -v stdbuf) ]; then unbuffer="stdbuf -i0 -o0 -e0" fi From ee13687dbbfc64a3de57215e08ce9bbef6e9fb99 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 27 May 2016 20:25:32 +0100 Subject: [PATCH 629/643] Added file as a required dependency --- lgsm/functions/check_deps.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index df4b49b4d..33c6a745b 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -2,7 +2,7 @@ # LGSM check_deps.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="210516" +lgsm_version="270516" # Description: Checks that the requires dependencies are installed for LGSM. @@ -126,7 +126,7 @@ if [ -n "$(command -v dpkg-query)" ]; then array_deps_missing=() # LGSM requirement for curl - array_deps_required=( curl ca-certificates ) + array_deps_required=( curl ca-certificates file ) # All servers except ts3 require tmux if [ "${executable}" != "./ts3server_startscript.sh" ]; then From 0ace80d00a63402cd366f35b65cd1eb782c550cf Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 27 May 2016 21:22:56 +0100 Subject: [PATCH 630/643] Added GES file --- lgsm/functions/install_server_files.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 4b48f0a66..4b383a31f 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -2,7 +2,7 @@ # LGSM install_server_files.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="210516" +lgsm_version="270516" local modulename="Install" @@ -11,6 +11,8 @@ fn_install_server_files(){ fileurl="https://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" elif [ "${gamename}" == "Unreal Tournament 2004" ]; then fileurl="https://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" + elif [ "${gamename}" == "GoldenEye: Source" ]; then + fileurl="https://gameservermanagers.com/files/GoldenEyeSource/goldenEye_source_v4.2.4_server_2015_map_pack.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="goldenEye_source_v4.2.4_server_2015_map_pack.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="3148ac38acc3642b0d6d64f51f27de15" fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" From b321f33ea8a98bddc8b86c70ebdcdaffd38d0218 Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 31 May 2016 13:36:21 +0200 Subject: [PATCH 631/643] wrong script name "info_status" > check_status.sh --- lgsm/functions/update_check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_check.sh b/lgsm/functions/update_check.sh index 6647524d1..bea812079 100644 --- a/lgsm/functions/update_check.sh +++ b/lgsm/functions/update_check.sh @@ -169,7 +169,7 @@ fn_steamcmdcheck(){ fn_scriptlog "${currentbuild} > ${availablebuild}" unset updateonstart - info_status.sh + check_status.sh if [ "${status}" != "0" ]; then command_stop.sh update_dl.sh From 9da16d2268c45bb08230eaeedcb106caf9bd06c4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 3 Jun 2016 23:47:02 +0100 Subject: [PATCH 632/643] Updated appid --- BrainBread2/bb2server | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 7211aaf6b..204bb6ae2 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="030616" #### Variables #### @@ -58,7 +58,7 @@ githubrepo="linuxgsm" githubbranch="master" # Steam -appid="346330" +appid="475370" # Server Details servicename="bb2-server" From 4e7bd4436493dca8413f0acc8d178ef397d88221 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann <marvinl97@users.noreply.github.com> Date: Sun, 5 Jun 2016 12:41:33 +0200 Subject: [PATCH 633/643] Fixed lock file removal for source servers fn_stop_graceful_source() didn't call fn_stop_tmux() or ' rm -f "${rootdir}/${lockselfname}" '. That's why monitoring restarted the server when it was shutdown gratefully. --- lgsm/functions/command_stop.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index a5d18c7f6..0d2684d0b 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -2,7 +2,7 @@ # LGSM command_stop.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="210516" +lgsm_version="050616" # Description: Stops the server. @@ -32,9 +32,9 @@ fn_stop_graceful_source(){ fn_print_fail "Graceful: rcon quit: " fn_print_fail_eol_nl fn_scriptlog "Graceful: rcon quit: FAIL" - fn_stop_tmux fi sleep 1 + fn_stop_tmux } # Attempts Graceful of goldsource using rcon 'quit' command. From 2877b798b08d5db1f50281b9a02165dfa28568eb Mon Sep 17 00:00:00 2001 From: UltimateByte <robin.labadie@gmail.com> Date: Tue, 7 Jun 2016 19:46:46 +0200 Subject: [PATCH 634/643] New fn_print_ --- lgsm/functions/command_fastdl.sh | 60 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index ec7de257e..2b42aa5dd 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -25,7 +25,7 @@ fn_check_bzip2(){ # Returns true if not installed if [ -z "$(command -v bzip2)" ]; then bzip2installed="0" - fn_printinfo "bzip2 is not installed !" + fn_print_info "bzip2 is not installed !" fn_scriptlog "bzip2 is not installed" echo -en "\n" sleep 1 @@ -39,7 +39,7 @@ fn_check_bzip2(){ fn_fastdl_init(){ # User confirmation - fn_printok "Welcome to LGSM's FastDL generator" + fn_print_ok "Welcome to LGSM's FastDL generator" sleep 1 echo -en "\n" fn_scriptlog "Started FastDL creation" @@ -56,13 +56,13 @@ fn_fastdl_init(){ # Check and create folders if [ ! -d "${webdir}" ]; then echo "" - fn_printinfo "Creating FastDL directories" + fn_print_info "Creating FastDL directories" echo -en "\n" sleep 1 fn_printdots "Creating www directory" sleep 0.5 mkdir "${webdir}" - fn_printok "Created www directory" + fn_print_ok "Created www directory" fn_scriptlog "FastDL created www directory" sleep 1 echo -en "\n" @@ -73,7 +73,7 @@ fn_fastdl_init(){ fn_printdots "Creating fastdl directory" sleep 0.5 mkdir "${fastdldir}" - fn_printok "Created fastdl directory" + fn_print_ok "Created fastdl directory" fn_scriptlog "FastDL created fastdl directory" sleep 1 echo -en "\n" @@ -85,7 +85,7 @@ fn_fastdl_init(){ fn_fastdl_config(){ # Global settings for FastDL creation - fn_printinfo "Entering configuration" + fn_print_info "Entering configuration" fn_scriptlog "Configuration" sleep 2 echo -en "\n" @@ -95,8 +95,8 @@ fn_fastdl_config(){ while true; do read -e -i "y" -p "Clear old FastDL files? [Y/n]" yn case $yn in - [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_printok "Clearing Enabled"; break;; - [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_printok "Clearing Disabled"; break;; + [Yy]* ) clearoldfastdl="on"; fn_scriptlog "clearoldfastdl enabled"; fn_print_ok "Clearing Enabled"; break;; + [Nn]* ) clearoldfastdl="off"; fn_scriptlog "clearoldfastdl disabled"; fn_print_ok "Clearing Disabled"; break;; * ) echo "Please answer yes or no.";; esac done @@ -108,8 +108,8 @@ fn_fastdl_config(){ while true; do read -e -i "y" -p "Enable file compression using bzip2? [Y/n]" yn case $yn in - [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_printok "bzip2 Enabled"; break;; - [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_printok "bzip2 Disabled"; break;; + [Yy]* ) bzip2enable="on"; fn_scriptlog "bzip2 enabled"; fn_print_ok "bzip2 Enabled"; break;; + [Nn]* ) bzip2enable="off"; fn_scriptlog "bzip2 disabled"; fn_print_ok "bzip2 Disabled"; break;; * ) echo "Please answer yes or no.";; esac done @@ -123,8 +123,8 @@ fn_fastdl_gmod_config(){ while true; do read -e -i "y" -p "Use client download enforcer? [Y/n]" yn case $yn in - [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_printok "Enforcer Enabled"; break;; - [Nn]* ) luaressource="off"; fn_scriptlog "DL enforcer Disabled"; fn_printok "Enforcer Disabled"; break;; + [Yy]* ) luaressource="on"; fn_scriptlog "DL enforcer Enabled"; fn_print_ok "Enforcer Enabled"; break;; + [Nn]* ) luaressource="off"; fn_scriptlog "DL enforcer Disabled"; fn_print_ok "Enforcer Disabled"; break;; * ) echo "Please answer yes or no.";; esac done @@ -134,11 +134,11 @@ fn_fastdl_gmod_config(){ fn_clear_old_fastdl(){ # Clearing old FastDL if user answered yes if [ "${clearoldfastdl}" == "on" ]; then - fn_printinfo "Clearing existing FastDL folder" + fn_print_info "Clearing existing FastDL folder" fn_scriptlog "Clearing existing FastDL folder" sleep 0.5 rm -R "${fastdldir:?}"/* - fn_printok "Old FastDL folder cleared" + fn_print_ok "Old FastDL folder cleared" fn_scriptlog "Old FastDL folder cleared" sleep 1 echo -en "\n" @@ -161,7 +161,7 @@ fn_gmod_fastdl(){ fn_scriptlog "Copying map files" sleep 0.5 find . -name '*.bsp' | cpio --quiet -updm "${fastdldir}" - fn_printok "Map files copied" + fn_print_ok "Map files copied" sleep 0.5 echo -en "\n" @@ -171,7 +171,7 @@ fn_gmod_fastdl(){ sleep 0.5 find . -name '*.vtf' | cpio --quiet -updm "${fastdldir}" find . -name '*.vmt' | cpio --quiet -updm "${fastdldir}" - fn_printok "Materials copied" + fn_print_ok "Materials copied" sleep 0.5 echo -en "\n" @@ -183,7 +183,7 @@ fn_gmod_fastdl(){ find . -name '*.vvd' | cpio --quiet -updm "${fastdldir}" find . -name '*.mdl' | cpio --quiet -updm "${fastdldir}" find . -name '*.phy' | cpio --quiet -updm "${fastdldir}" - fn_printok "Models copied" + fn_print_ok "Models copied" sleep 0.5 echo -en "\n" @@ -192,7 +192,7 @@ fn_gmod_fastdl(){ fn_scriptlog "Copying particles" sleep 0.5 find . -name '*.pcf' | cpio --quiet -updm "${fastdldir}" - fn_printok "Particles copied" + fn_print_ok "Particles copied" sleep 0.5 echo -en "\n" @@ -203,7 +203,7 @@ fn_gmod_fastdl(){ find . -name '*.wav' | cpio --quiet -updm "${fastdldir}" find . -name '*.mp3' | cpio --quiet -updm "${fastdldir}" find . -name '*.ogg' | cpio --quiet -updm "${fastdldir}" - fn_printok "Sounds copied" + fn_print_ok "Sounds copied" sleep 0.5 echo -en "\n" @@ -214,7 +214,7 @@ fn_gmod_fastdl(){ find . -name '*.otf' | cpio --quiet -updm "${fastdldir}" find . -name '*.ttf' | cpio --quiet -updm "${fastdldir}" find . -name '*.png' | cpio --quiet -updm "${fastdldir}" - fn_printok "Fonts and png copied" + fn_print_ok "Fonts and png copied" sleep 0.5 echo -en "\n" @@ -223,12 +223,12 @@ fn_gmod_fastdl(){ # Correct addons folder structure for FastDL if [ -d "${fastdldir}/addons" ]; then - fn_printinfo "Adjusting addons' file structure" + fn_print_info "Adjusting addons' file structure" fn_scriptlog "Adjusting addon's file structure" sleep 1 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" #Don't remove yet rm -R "${fastdldir:?}/addons" - fn_printok "Adjusted addon's file structure" + fn_print_ok "Adjusted addon's file structure" sleep 1 echo -en "\n" fi @@ -238,7 +238,7 @@ fn_gmod_fastdl(){ fn_printdots "Typical DarkRP shit detected, fixing" sleep 2 cp -Rf "${fastdldir}/lua/"* "${fastdldir}" - fn_printok "Stupid DarkRP file structure fixed" + fn_print_ok "Stupid DarkRP file structure fixed" sleep 2 echo -en "\n" fi @@ -253,7 +253,7 @@ fn_lua_fastdl(){ fn_printdots "Removing download enforcer" sleep 1 rm -R "${luafastdlfullpath:?}" - fn_printok "Removed download enforcer" + fn_print_ok "Removed download enforcer" fn_scriptlog "Removed old download inforcer" echo -en "\n" sleep 2 @@ -265,7 +265,7 @@ fn_lua_fastdl(){ fn_printdots "Removing old download enforcer" sleep 1 rm "${luafastdlfullpath}" - fn_printok "Removed old download enforcer" + fn_print_ok "Removed old download enforcer" fn_scriptlog "Removed old download enforcer" echo -en "\n" sleep 1 @@ -277,7 +277,7 @@ fn_lua_fastdl(){ find "${fastdldir}" \( -type f ! -name "*.bz2" \) -printf '%P\n' | while read line; do echo "resource.AddFile( "\""${line}"\"" )" >> ${luafastdlfullpath} done - fn_printok "Download enforcer generated" + fn_print_ok "Download enforcer generated" fn_scriptlog "Download enforcer generated" echo -en "\n" echo "" @@ -289,14 +289,14 @@ fn_fastdl_bzip2(){ # Compressing using bzip2 if user said yes echo "" if [ ${bzip2enable} == "on" ]; then - fn_printinfo "Have a break, this step could take a while..." + fn_print_info "Have a break, this step could take a while..." echo -en "\n" echo "" fn_printdots "Compressing files using bzip2..." fn_scriptlog "Compressing files using bzip2..." # bzip2 all files that are not already compressed (keeping original files) find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; - fn_printok "bzip2 compression done" + fn_print_ok "bzip2 compression done" fn_scriptlog "bzip2 compression done" sleep 1 echo -en "\n" @@ -306,12 +306,12 @@ fn_fastdl_bzip2(){ fn_fastdl_completed(){ # Finished message echo "" - fn_printok "Congratulations, it's done !" + fn_print_ok "Congratulations, it's done !" fn_scriptlog "FastDL job done" sleep 2 echo -en "\n" echo "" - fn_printinfo "Need more doc ? See https://github.com/dgibbs64/linuxgsm/wiki/FastDL" + fn_print_info "Need more doc ? See https://github.com/dgibbs64/linuxgsm/wiki/FastDL" echo -en "\n" if [ "$bzip2installed" == "0" ]; then echo "By the way, you'd better install bzip2 an re-run this command !" From 2a9cab44561750b464940a08445891d29dc27392 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Mon, 6 Jun 2016 23:09:24 +0100 Subject: [PATCH 635/643] Corrected LD_LIBRARY_PATH --- lgsm/functions/fix_ins.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/fix_ins.sh b/lgsm/functions/fix_ins.sh index 5264b5c4e..3e86c070f 100644 --- a/lgsm/functions/fix_ins.sh +++ b/lgsm/functions/fix_ins.sh @@ -8,7 +8,7 @@ lgsm_version="210516" # Resolves ./srcds_linux: error while loading shared libraries: libtier0.so: cannot open shared object file: No such file or directory -export LD_LIBRARY_PATH=:${filesdir}:${filesdir}/bin:{$LD_LIBRARY_PATH} +export LD_LIBRARY_PATH=${filesdir}:${filesdir}/bin:${LD_LIBRARY_PATH} # fix for issue #529 - gamemode not passed to debug or start From b3363fcca2e61530df391ac83df1da04a2d93588 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Mon, 6 Jun 2016 23:09:53 +0100 Subject: [PATCH 636/643] Updated print messages --- lgsm/functions/command_fastdl.sh | 36 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 2b42aa5dd..b52ca4b0c 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -lgsm_version="210216" +lgsm_version="060616" # Description: Creates a FastDL folder @@ -59,7 +59,7 @@ fn_fastdl_init(){ fn_print_info "Creating FastDL directories" echo -en "\n" sleep 1 - fn_printdots "Creating www directory" + fn_print_dots "Creating www directory" sleep 0.5 mkdir "${webdir}" fn_print_ok "Created www directory" @@ -70,7 +70,7 @@ fn_fastdl_init(){ if [ ! -d "${fastdldir}" ]; then # No folder, won't ask for removing old ones newfastdl=1 - fn_printdots "Creating fastdl directory" + fn_print_dots "Creating fastdl directory" sleep 0.5 mkdir "${fastdldir}" fn_print_ok "Created fastdl directory" @@ -91,7 +91,7 @@ fn_fastdl_config(){ echo -en "\n" # Prompt for clearing old files if folder was already here if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then - fn_printdots + fn_print_dots while true; do read -e -i "y" -p "Clear old FastDL files? [Y/n]" yn case $yn in @@ -104,7 +104,7 @@ fn_fastdl_config(){ fi # Prompt for using bzip2 if it's installed if [ ${bzip2installed} == 1 ]; then - fn_printdots + fn_print_dots while true; do read -e -i "y" -p "Enable file compression using bzip2? [Y/n]" yn case $yn in @@ -119,7 +119,7 @@ fn_fastdl_config(){ fn_fastdl_gmod_config(){ # Prompt for download enforcer, that is using a .lua addfile resource generator - fn_printdots + fn_print_dots while true; do read -e -i "y" -p "Use client download enforcer? [Y/n]" yn case $yn in @@ -148,7 +148,7 @@ fn_clear_old_fastdl(){ fn_gmod_fastdl(){ # Copy all needed files for FastDL echo "" - fn_printdots "Starting gathering all needed files" + fn_print_dots "Starting gathering all needed files" fn_scriptlog "Starting gathering all needed files" sleep 1 echo -en "\n" @@ -157,7 +157,7 @@ fn_gmod_fastdl(){ cd "${systemdir}" # Map Files - fn_printdots "Copying map files..." + fn_print_dots "Copying map files..." fn_scriptlog "Copying map files" sleep 0.5 find . -name '*.bsp' | cpio --quiet -updm "${fastdldir}" @@ -166,7 +166,7 @@ fn_gmod_fastdl(){ echo -en "\n" # Materials - fn_printdots "Copying materials..." + fn_print_dots "Copying materials..." fn_scriptlog "Copying materials" sleep 0.5 find . -name '*.vtf' | cpio --quiet -updm "${fastdldir}" @@ -176,7 +176,7 @@ fn_gmod_fastdl(){ echo -en "\n" # Models - fn_printdots "Copying models..." + fn_print_dots "Copying models..." fn_scriptlog "Copying models" sleep 1 find . -name '*.vtx' | cpio --quiet -updm "${fastdldir}" @@ -188,7 +188,7 @@ fn_gmod_fastdl(){ echo -en "\n" # Particles - fn_printdots "Copying particles..." + fn_print_dots "Copying particles..." fn_scriptlog "Copying particles" sleep 0.5 find . -name '*.pcf' | cpio --quiet -updm "${fastdldir}" @@ -197,7 +197,7 @@ fn_gmod_fastdl(){ echo -en "\n" # Sounds - fn_printdots "Copying sounds..." + fn_print_dots "Copying sounds..." fn_scriptlog "Copying sounds" sleep 0.5 find . -name '*.wav' | cpio --quiet -updm "${fastdldir}" @@ -208,7 +208,7 @@ fn_gmod_fastdl(){ echo -en "\n" # Resources (mostly fonts) - fn_printdots "Copying fonts and png..." + fn_print_dots "Copying fonts and png..." fn_scriptlog "Copying fonts and png" sleep 1 find . -name '*.otf' | cpio --quiet -updm "${fastdldir}" @@ -235,7 +235,7 @@ fn_gmod_fastdl(){ # Correct content that may be into a lua folder by mistake like some darkrpmodification addons if [ -d "${fastdldir}/lua" ]; then - fn_printdots "Typical DarkRP shit detected, fixing" + fn_print_dots "Typical DarkRP shit detected, fixing" sleep 2 cp -Rf "${fastdldir}/lua/"* "${fastdldir}" fn_print_ok "Stupid DarkRP file structure fixed" @@ -250,7 +250,7 @@ fn_lua_fastdl(){ echo "" if [ "${luaressource}" == "off" ]; then if [ -f "${luafastdlfullpath}" ]; then - fn_printdots "Removing download enforcer" + fn_print_dots "Removing download enforcer" sleep 1 rm -R "${luafastdlfullpath:?}" fn_print_ok "Removed download enforcer" @@ -262,7 +262,7 @@ fn_lua_fastdl(){ # Remove old lua file and generate a new one if user said yes if [ "${luaressource}" == "on" ]; then if [ -f "${luafastdlfullpath}" ]; then - fn_printdots "Removing old download enforcer" + fn_print_dots "Removing old download enforcer" sleep 1 rm "${luafastdlfullpath}" fn_print_ok "Removed old download enforcer" @@ -270,7 +270,7 @@ fn_lua_fastdl(){ echo -en "\n" sleep 1 fi - fn_printdots "Generating new download enforcer" + fn_print_dots "Generating new download enforcer" fn_scriptlog "Generating new download enforcer" sleep 1 # Read all filenames and put them into a lua file at the right path @@ -292,7 +292,7 @@ fn_fastdl_bzip2(){ fn_print_info "Have a break, this step could take a while..." echo -en "\n" echo "" - fn_printdots "Compressing files using bzip2..." + fn_print_dots "Compressing files using bzip2..." fn_scriptlog "Compressing files using bzip2..." # bzip2 all files that are not already compressed (keeping original files) find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; From 0ca02af15f3b640a82ad545c77f86227faf3a612 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 9 Jun 2016 20:15:12 +0100 Subject: [PATCH 637/643] added some dependencies that may be missing in minimal installs --- lgsm/functions/check_deps.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 33c6a745b..09c170094 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -2,7 +2,7 @@ # LGSM check_deps.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="270516" +lgsm_version="090616" # Description: Checks that the requires dependencies are installed for LGSM. @@ -126,7 +126,6 @@ if [ -n "$(command -v dpkg-query)" ]; then array_deps_missing=() # LGSM requirement for curl - array_deps_required=( curl ca-certificates file ) # All servers except ts3 require tmux if [ "${executable}" != "./ts3server_startscript.sh" ]; then @@ -176,7 +175,6 @@ elif [ -n "$(command -v yum)" ]; then array_deps_missing=() # LGSM requirement for curl - array_deps_required=( curl ) # All servers except ts3 require tmux if [ "${executable}" != "./ts3server_startscript.sh" ]; then From 9970b5b798584a40331389102237c03627a7d7d2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Thu, 9 Jun 2016 20:54:10 +0100 Subject: [PATCH 638/643] added required deps --- lgsm/functions/check_deps.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 09c170094..ce616db69 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -126,6 +126,7 @@ if [ -n "$(command -v dpkg-query)" ]; then array_deps_missing=() # LGSM requirement for curl + array_deps_required=( curl ca-certificates file bsdmainutils python ) # All servers except ts3 require tmux if [ "${executable}" != "./ts3server_startscript.sh" ]; then @@ -175,6 +176,7 @@ elif [ -n "$(command -v yum)" ]; then array_deps_missing=() # LGSM requirement for curl + array_deps_required=( curl util-linux python file ) # All servers except ts3 require tmux if [ "${executable}" != "./ts3server_startscript.sh" ]; then From 100e065b4dc3bec9d90524312692a29452883ec0 Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Thu, 9 Jun 2016 18:58:58 -0500 Subject: [PATCH 639/643] Adding unreal4 option for Ark in command_details; Integrating yadutaf\'s startup parms --- ARKSurvivalEvolved/arkserver | 10 ++++++++-- lgsm/functions/command_details.sh | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 719cbe50a..c842f5318 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -30,11 +30,17 @@ steamuser="anonymous" steampass="" # Start Variables +servername="ark-server" +port="7778" +queryport="27015" +rconport="32330" +rconpassword="" # Set to enable rcon +maxplayers="50" ip="0.0.0.0" updateonstart="off" fn_parms(){ -parms="TheIsland?listen" + parms="TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?ServerAdminPassword=${rconpassword}" } #### Advanced Variables #### diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index f15380490..a64247696 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -288,7 +288,7 @@ fn_details_ports(){ fi done - local ports_edit_array=( "starbound" "spark" "source" "goldsource" "Rust" "Hurtworld" ) + local ports_edit_array=( "starbound" "spark" "source" "goldsource" "Rust" "Hurtworld" "unreal4") for port_edit in "${ports_edit_array[@]}" do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then @@ -608,4 +608,4 @@ else fn_print_error_nl "Unable to detect server engine." fi -fn_details_statusbottom \ No newline at end of file +fn_details_statusbottom From 678f8b83f8cc954e5822cbd728c42613f38de968 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs <me@danielgibbs.co.uk> Date: Fri, 10 Jun 2016 23:00:08 +0100 Subject: [PATCH 640/643] Removed trailing spaces from files Added "trim_trailing_white_space_on_save": true in to my sublime text install to make sure trailing spaces get removed. --- 7DaysToDie/sdtdserver | 4 +-- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 4 +-- BlackMesa/bmdmserver | 4 +-- BladeSymphony/bsserver | 4 +-- BrainBread2/bb2server | 4 +-- CodenameCURE/ccserver | 4 +-- CounterStrike/csserver | 4 +-- CounterStrikeConditionZero/csczserver | 4 +-- CounterStrikeGlobalOffensive/csgoserver | 4 +-- CounterStrikeSource/cssserver | 4 +-- DayOfDefeat/dodserver | 4 +-- DayOfDefeatSource/dodsserver | 4 +-- DeathmatchClassic/dmcserver | 4 +-- DontStarveTogether/dstserver | 4 +-- DoubleActionBoogaloo/dabserver | 4 +-- FistfulOfFrags/fofserver | 4 +-- GarrysMod/gmodserver | 4 +-- GoldenEyeSource/gesserver | 6 ++-- HalfLife2Deathmatch/hl2dmserver | 4 +-- HalfLifeDeathmatch/hldmserver | 4 +-- HalfLifeDeathmatchSource/hldmsserver | 4 +-- Hurtworld/hwserver | 4 +-- Insurgency/insserver | 4 +-- JustCause2/jc2server | 4 +-- KillingFloor/kfserver | 4 +-- Left4Dead/l4dserver | 4 +-- Left4Dead2/l4d2server | 4 +-- Mumble/mumbleserver | 4 +-- NS2Combat/ns2cserver | 4 +-- NaturalSelection2/ns2server | 4 +-- NoMoreRoomInHell/nmrihserver | 4 +-- OpposingForce/opforserver | 4 +-- PiratesVikingandKnightsII/pvkiiserver | 4 +-- ProjectZomboid/pzserver | 4 +-- QuakeLive/qlserver | 4 +-- RedOrchestra/roserver | 4 +-- Ricochet/ricochetserver | 4 +-- Rust/rustserver | 6 ++-- SeriousSam3BFE/ss3sserver | 4 +-- StarBound/sbserver | 4 +-- SvenCoop/svencoopserver | 4 +-- TeamFortress2/tf2server | 4 +-- TeamFortressClassic/tfcserver | 4 +-- TeamSpeak3/ts3server | 4 +-- Teeworlds/twserver | 6 ++-- Terraria/terrariaserver | 4 +-- UnrealTournament2004/ut2k4server | 4 +-- functions/command_update_functions.sh | 2 +- functions/core_functions.sh | 6 ++-- lgsm/functions/alert.sh | 6 ++-- lgsm/functions/alert_email.sh | 18 +++++----- lgsm/functions/check_deps.sh | 32 +++++++++--------- lgsm/functions/check_permissions.sh | 6 ++-- lgsm/functions/check_root.sh | 2 +- lgsm/functions/check_steamcmd.sh | 14 ++++---- lgsm/functions/check_system_dir.sh | 2 +- lgsm/functions/command_details.sh | 36 ++++++++++---------- lgsm/functions/command_dev_detect_deps.sh | 18 +++++----- lgsm/functions/command_install.sh | 2 +- lgsm/functions/command_monitor.sh | 2 +- lgsm/functions/command_start.sh | 4 +-- lgsm/functions/command_stop.sh | 4 +-- lgsm/functions/command_update_functions.sh | 2 +- lgsm/functions/core_dl.sh | 16 ++++----- lgsm/functions/core_functions.sh | 6 ++-- lgsm/functions/core_getopt.sh | 36 ++++++++++---------- lgsm/functions/core_messages.sh | 10 +++--- lgsm/functions/fix.sh | 16 ++++----- lgsm/functions/fix_glibc.sh | 4 +-- lgsm/functions/fix_steamcmd.sh | 4 +-- lgsm/functions/info_config.sh | 38 +++++++++++----------- lgsm/functions/info_glibc.sh | 6 ++-- lgsm/functions/info_parms.sh | 20 ++++++------ lgsm/functions/install_config.sh | 6 ++-- lgsm/functions/install_server_dir.sh | 2 +- lgsm/functions/install_ts3db.sh | 2 +- lgsm/functions/install_ut2k4_key.sh | 4 +-- lgsm/functions/logs.sh | 2 +- lgsm/functions/monitor_gsquery.sh | 6 ++-- lgsm/functions/update_check.sh | 10 +++--- tests/tests_jc2server.sh | 12 +++---- tests/tests_ts3server.sh | 12 +++---- 83 files changed, 282 insertions(+), 282 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 3c07f7cdb..bce6242dc 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -120,7 +120,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index c842f5318..263c61a37 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Arma3/arma3server b/Arma3/arma3server index 637910069..ae9c53ac0 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -21,7 +21,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -141,7 +141,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 6a3a4cbce..433f4a648 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -129,7 +129,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index d2abd9b5c..37972923f 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 204bb6ae2..bbf95484e 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -20,7 +20,7 @@ version="030616" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -129,7 +129,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 7bf5dce99..0699139bc 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 9fd3660e9..b03f7bcf2 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index ae3d8cb86..31a875448 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 940115c9c..83a2b0cd0 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -147,7 +147,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index cc66b0f6c..9daa48892 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 747e1f20c..c547b53f4 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index f62502150..68d2e7228 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 64ccb7c8b..1b347d1bd 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index b82667778..e7022e71b 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -20,7 +20,7 @@ version="130516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -122,7 +122,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index f1b20c2ec..f489912ca 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index c352d9484..d9759b866 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 79b8c8378..c6ca902e4 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -141,7 +141,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index e752ec529..f3231e6aa 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -21,7 +21,7 @@ export MALLOC_CHECK_=0 emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -52,7 +52,7 @@ parms="-game gesource -strictportbind -ip ${ip} -port ${port} +clientport ${clie githubuser="dgibbs64" githubrepo="linuxgsm" githubbranch="master" - + # Steam - 2007 SDK appid="310" @@ -125,7 +125,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index f287be9bc..7a42ce2df 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 8a5572cdb..c55237f74 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -123,7 +123,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index b65090e8a..06459e25d 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 3af56de28..a0f81c036 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -21,7 +21,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -138,7 +138,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Insurgency/insserver b/Insurgency/insserver index 1a0a07862..58e9b0a0c 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -126,7 +126,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/JustCause2/jc2server b/JustCause2/jc2server index ddc0eafd2..63e15f5c5 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -118,7 +118,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 385a46649..24a8c1fb1 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -126,7 +126,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index bbf73359e..165cf7176 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -21,7 +21,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index bae9c975a..d7801dc2e 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -126,7 +126,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index ed972bedb..5f30b6fa8 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -103,7 +103,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index e23c30264..f23677000 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -20,7 +20,7 @@ version="220416" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -130,7 +130,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 919468d24..70f4e7fd5 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -20,7 +20,7 @@ version="220416" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -130,7 +130,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 3c6f7630d..42296b71b 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index e670662b3..c329398fa 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 90c5172cf..aa8e59f97 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 043f46015..98d855ac6 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -21,7 +21,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -122,7 +122,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 77b09a5b7..35d7be4f7 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -20,7 +20,7 @@ version="060516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -128,7 +128,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 3073a9f14..346aeea0e 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -122,7 +122,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index cfb8746eb..677aadead 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Rust/rustserver b/Rust/rustserver index 7c200bdae..6be32778e 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -21,7 +21,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -36,7 +36,7 @@ servername="Rust" ip="0.0.0.0" updateonstart="off" port="28015" -rconport="28016" +rconport="28016" rconpassword="CHANGE_ME" maxplayers="50" @@ -144,7 +144,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index f9fab4cd8..1fe9cdb80 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -121,7 +121,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/StarBound/sbserver b/StarBound/sbserver index 232063344..ac1cfa757 100644 --- a/StarBound/sbserver +++ b/StarBound/sbserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -117,7 +117,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/SvenCoop/svencoopserver b/SvenCoop/svencoopserver index 099631bf0..94dc65f63 100644 --- a/SvenCoop/svencoopserver +++ b/SvenCoop/svencoopserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -123,7 +123,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 69533c635..73d824e9d 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -129,7 +129,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index e4fc40e99..2054c5aea 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -124,7 +124,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 12eefa48d..7a6491bff 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -100,7 +100,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 67adbe4c6..7bcf15714 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -21,7 +21,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -85,7 +85,7 @@ emaillog="${scriptlogdir}/${servicename}-email.log" scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" - + ##### Script ##### # Do not edit @@ -120,7 +120,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 8019fb888..e86cfdca0 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -21,7 +21,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -119,7 +119,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 5b59c24b2..5fe046c2e 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -20,7 +20,7 @@ version="210516" emailalert="off" email="email@example.com" -# Pushbullet +# Pushbullet # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" @@ -112,7 +112,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/functions/command_update_functions.sh b/functions/command_update_functions.sh index ba7674448..44610e2ca 100644 --- a/functions/command_update_functions.sh +++ b/functions/command_update_functions.sh @@ -25,7 +25,7 @@ if [ -n "${functionsdir}" ]; then if [ -d "${functionsdir}" ]; then rm -rfv "${functionsdir}/"* exitcode=$? - fi + fi fi if [ "${exitcode}" == "0" ]; then diff --git a/functions/core_functions.sh b/functions/core_functions.sh index 0fca7da03..536b461de 100644 --- a/functions/core_functions.sh +++ b/functions/core_functions.sh @@ -11,13 +11,13 @@ if [ -z "${lgsmdir}" ]; then lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" -fi +fi fn_fetch_core_dl(){ if [ -z "${githubuser}" ]; then githubuser="dgibbs64" fi -if [ -z "${githubrepo}" ]; then +if [ -z "${githubrepo}" ]; then githubrepo="linuxgsm" fi if [ -z "${githubbranch}" ]; then @@ -52,7 +52,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 640b04b36..4cf16244f 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -44,10 +44,10 @@ if [ "${emailnotification}" == "on" ]||[ "${emailalert}" == "on" ]&&[ -n "${emai alert_email.sh elif [ "${emailnotification}" != "on" ]||[ "${emailalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then fn_print_info_nl "Email alerts not enabled" - fn_scriptlog "Email alerts not enabled" + fn_scriptlog "Email alerts not enabled" elif [ -z "${email}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then - fn_print_fail_nl "Email no set" - fn_scriptlog "Email no set" + fn_print_fail_nl "Email not set" + fn_scriptlog "Email not set" fi if [ "${pushbulletalert}" == "on" ]&&[ -n "${pushbullettoken}" ]; then diff --git a/lgsm/functions/alert_email.sh b/lgsm/functions/alert_email.sh index c3f56b5ef..6bfea3fdd 100644 --- a/lgsm/functions/alert_email.sh +++ b/lgsm/functions/alert_email.sh @@ -28,7 +28,7 @@ fn_details_os(){ # Hostname: hostname # tmux: tmux 1.8 # GLIBC: 2.19 - + { echo -e "" echo -e "Distro Details" @@ -56,7 +56,7 @@ fn_details_performance(){ { echo -e "" echo -e "Performance" - echo -e "=================================" + echo -e "=================================" echo -e "Uptime: ${days}d, ${hours}h, ${minutes}m" echo -e "Avg Load: ${load}" echo -e "" @@ -124,7 +124,7 @@ fn_details_gameserver(){ echo -e "RCON password: ********" fi - # Admin password + # Admin password if [ -n "${adminpassword}" ]; then echo -e "Admin password: ********" fi @@ -172,7 +172,7 @@ fn_alert_email_template_logs(){ { echo -e "" echo -e "${servicename} Logs" - echo -e "=================================" + echo -e "=================================" if [ -n "${scriptlog}" ]; then echo -e "\nScript log\n===================" @@ -180,7 +180,7 @@ fn_alert_email_template_logs(){ echo "${scriptlogdir} (NO LOG FILES)" elif [ ! -s "${scriptlog}" ]; then echo "${scriptlog} (LOG FILE IS EMPTY)" - else + else echo "${scriptlog}" tail -25 "${scriptlog}" fi @@ -193,7 +193,7 @@ fn_alert_email_template_logs(){ echo "${consolelogdir} (NO LOG FILES)" elif [ ! -s "${consolelog}" ]; then echo "${consolelog} (LOG FILE IS EMPTY)" - else + else echo "${consolelog}" tail -25 "${consolelog}" | awk '{ sub("\r$", ""); print }' fi @@ -204,12 +204,12 @@ fn_alert_email_template_logs(){ echo -e "\nServer log\n===================" if [ ! "$(ls -A ${gamelogdir})" ]; then echo "${gamelogdir} (NO LOG FILES)" - else + else echo "${gamelogdir}" tail "${gamelogdir}"/* | grep -v "==>" | sed '/^$/d' | tail -25 fi echo "" - fi + fi } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${emaillog}" > /dev/null 2>&1 } @@ -223,7 +223,7 @@ check_ip.sh emaillog="${emaillog}" if [ -f "${emaillog}" ]; then rm "${emaillog}" -fi +fi fn_details_email fn_details_os fn_details_performance diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index ce616db69..fc366354f 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -15,7 +15,7 @@ fn_deps_detector(){ elif [ -n "$(command -v yum)" ]; then yum -q list installed ${deptocheck} > /dev/null 2>&1 depstatus=$? - fi + fi if [ "${depstatus}" == "0" ]; then missingdep=0 if [ "${function_selfname}" == "command_install.sh" ]; then @@ -28,7 +28,7 @@ fn_deps_detector(){ if [ "${function_selfname}" == "command_install.sh" ]; then echo -e "\e[0;31m${deptocheck}\e[0m" sleep 0.5 - fi + fi fi # Missing dependencies are added to array_deps_missing @@ -49,8 +49,8 @@ fn_deps_email(){ array_deps_required+=( mailutils postfix ) elif [ -n "$(command -v yum)" ]; then array_deps_required+=( mailx postfix ) - fi - else + fi + else if [ -n "$(command -v dpkg-query)" ]; then array_deps_required+=( mailutils postfix ) elif [ -n "$(command -v yum)" ]; then @@ -77,12 +77,12 @@ fn_found_missing_deps(){ sleep 1 echo -en "...\r" sleep 1 - echo -en " \r" + echo -en " \r" if [ -n "$(command -v dpkg-query)" ]; then echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" elif [ -n "$(command -v yum)" ]; then echo "yum install ${array_deps_missing[@]}" - fi + fi else echo "" fn_print_infomation_nl "$(whoami) does not have sudo access. Please manually install dependencies" @@ -92,13 +92,13 @@ fn_found_missing_deps(){ echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" elif [ -n "$(command -v yum)" ]; then echo "yum install ${array_deps_missing[@]}" - fi + fi echo "" fi if [ "${function_selfname}" == "command_install.sh" ]; then sleep 5 fi - fi + fi } fn_check_loop(){ @@ -108,7 +108,7 @@ fn_check_loop(){ fn_deps_detector done - # user to be informaed of any missing dependecies + # user to be informaed of any missing dependecies fn_found_missing_deps } @@ -139,7 +139,7 @@ if [ -n "$(command -v dpkg-query)" ]; then array_deps_required+=( lib32gcc1 libstdc++6:i386 ) else array_deps_required+=( libstdc++6:i386 ) - fi + fi fi # Game Specific requirements @@ -147,10 +147,10 @@ if [ -n "$(command -v dpkg-query)" ]; then # Spark if [ "${engine}" == "spark" ]; then array_deps_required+=( speex:i386 libtbb2 ) - # 7 Days to Die + # 7 Days to Die elif [ "${gamename}" == "7 Days To Die" ]; then array_deps_required+=( telnet expect ) - # No More Room in Hell + # No More Room in Hell elif [ "${gamename}" == "No More Room in Hell" ]; then array_deps_required+=( lib32tinfo5 ) # Brainbread 2 and Don't Starve Together @@ -166,7 +166,7 @@ if [ -n "$(command -v dpkg-query)" ]; then #UT99 else array_deps_required+=( libsdl1.2debian bzip2 ) - fi + fi fi fn_deps_email fn_check_loop @@ -193,10 +193,10 @@ elif [ -n "$(command -v yum)" ]; then # Spark if [ "${engine}" == "spark" ]; then array_deps_required+=( speex.i686 tbb.i686 ) - # 7 Days to Die + # 7 Days to Die elif [ "${gamename}" == "7 Days To Die" ]; then array_deps_required+=( telnet expect ) - # No More Room in Hell + # No More Room in Hell elif [ "${gamename}" == "No More Room in Hell" ]; then array_deps_required+=( ncurses-libs.i686 ) # Brainbread 2 and Don't Starve Together @@ -212,7 +212,7 @@ elif [ -n "$(command -v yum)" ]; then #UT99 else array_deps_required+=( SDL.i686 bzip2 ) - fi + fi fi fn_deps_email fn_check_loop diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 38aaf3da4..7de6ab228 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -40,7 +40,7 @@ fn_check_ownership(){ conclusionpermissionerror="1" fi done <<< "$(find "${functionsdir}" -name "*.sh")" - + if [ "${funownfail}" == "1" ]; then fn_print_fail_nl "Oops ! Ownership issue..." echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} - does not own all scripts in \"${functionsdir}\"" @@ -64,7 +64,7 @@ fn_check_permissions(){ conclusionpermissionerror="1" fi fi - + # Check functions permissions funcpermfail="0" if [ -n "${functionsdir}" ]; then @@ -78,7 +78,7 @@ fn_check_permissions(){ conclusionpermissionerror="1" fi done <<< "$(find "${functionsdir}" -name "*.sh")" - + if [ "${funcpermfail}" == "1" ]; then fn_print_fail_nl "Oops ! Permission issue..." echo " * Current - ${currentuser} - user or its group(s) - ${currentgroups} need full control on scripts in \"${functionsdir}\"" diff --git a/lgsm/functions/check_root.sh b/lgsm/functions/check_root.sh index 914069d5c..0ffb7b9d7 100644 --- a/lgsm/functions/check_root.sh +++ b/lgsm/functions/check_root.sh @@ -8,6 +8,6 @@ if [ $(whoami) = "root" ]; then fn_print_fail_nl "Do NOT run this script as root!" if [ -d "${scriptlogdir}" ]; then fn_scriptlog "${selfname} attempted to run as root." - fi + fi exit 1 fi diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index f8ee2439f..a2978252d 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -18,9 +18,9 @@ fn_install_steamcmd(){ fn_check_steamcmd_user(){ - # Checks steamuser is setup. + # Checks steamuser is setup. if [ "${steamuser}" == "username" ]; then - fn_print_fail_nl "Steam login not set. Update steamuser." + fn_print_fail_nl "Steam login not set. Update steamuser." echo " * Change steamuser=\"username\" to a valid steam login." if [ -d "${scriptlogdir}" ]; then fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login." @@ -36,7 +36,7 @@ fn_check_steamcmd_user(){ steamuser="anonymous" steampass="" sleep 2 - fi + fi } fn_check_steamcmd_sh(){ @@ -46,7 +46,7 @@ fn_check_steamcmd_sh(){ if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then if [ "${function_selfname}" == "command_install.sh" ]; then fn_install_steamcmd - else + else fn_print_warn_nl "SteamCMD is missing" fn_scriptlog "SteamCMD is missing" sleep 1 @@ -63,9 +63,9 @@ fn_check_steamcmd_guard(){ # Checks that steamcmd is working correctly and will prompt Steam Guard if required. "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit if [ $? -ne 0 ]; then - fn_print_failure_nl "Error running SteamCMD" - fi - fi + fn_print_failure_nl "Error running SteamCMD" + fi + fi } fn_check_steamcmd_user diff --git a/lgsm/functions/check_system_dir.sh b/lgsm/functions/check_system_dir.sh index 18a0d8019..6814563f9 100644 --- a/lgsm/functions/check_system_dir.sh +++ b/lgsm/functions/check_system_dir.sh @@ -8,6 +8,6 @@ if [ ! -d "${systemdir}" ]; then fn_print_fail_nl "Cannot access ${systemdir}: No such directory" if [ -d "${scriptlogdir}" ]; then fn_scriptlog "Cannot access ${systemdir}: No such directory." - fi + fi exit 1 fi diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index a64247696..cfac2a5dd 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -32,7 +32,7 @@ fn_details_os(){ echo -e "\e[34mHostname:\t\e[0m$HOSTNAME" echo -e "\e[34mtmux:\t\e[0m${tmuxv}" echo -e "\e[34mGLIBC:\t\e[0m${glibcversion}" - } | column -s $'\t' -t + } | column -s $'\t' -t } fn_details_performance(){ @@ -52,13 +52,13 @@ fn_details_performance(){ { echo -e "\e[34mUptime:\t\e[0m${days}d, ${hours}h, ${minutes}m" echo -e "\e[34mAvg Load:\t\e[0m${load}" - } | column -s $'\t' -t + } | column -s $'\t' -t echo -e "" { echo -e "\e[34mMem:\t\e[34mtotal\t used\t free\e[0m" echo -e "\e[34mPhysical:\t\e[0m${physmemtotal}\t${physmemused}\t${physmemfree}\e[0m" echo -e "\e[34mSwap:\t\e[0m${swaptotal}\t${swapused}\t${swapfree}\e[0m" - } | column -s $'\t' -t + } | column -s $'\t' -t } fn_details_disk(){ @@ -83,7 +83,7 @@ fn_details_disk(){ if [ -d "${backupdir}" ]; then echo -e "\e[34mBackups:\t\e[0m${backupdirdu}" fi - } | column -s $'\t' -t + } | column -s $'\t' -t } fn_details_gameserver(){ @@ -117,7 +117,7 @@ fn_details_gameserver(){ echo -e "\e[34mRCON password:\t\e[0m${rconpassword}" fi - # Admin password + # Admin password if [ -n "${adminpassword}" ]; then echo -e "\e[34mAdmin password:\t\e[0m${adminpassword}" fi @@ -158,7 +158,7 @@ fn_details_gameserver(){ else echo -e "\e[34mStatus:\t\e[0;32mONLINE\e[0m" fi - } | column -s $'\t' -t + } | column -s $'\t' -t echo -e "" } @@ -173,7 +173,7 @@ fn_details_script(){ # Update on start: off # Location: /home/lgsm/qlserver # Config file: /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg - + echo -e "\e[92m${selfname} Script Details\e[0m" printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = { @@ -220,14 +220,14 @@ fn_details_script(){ echo -e "\e[34mConfig file:\t\e[0m${servercfgfullpath}" else echo -e "\e[34mConfig file:\t\e[0m\e[0;31m${servercfgfullpath}\e[0m (\e[0;31mFILE MISSING\e[0m)" - fi + fi fi # Network config file location (ARMA 3) if [ -n "${networkcfgfullpath}" ]; then echo -e "\e[34mNetwork config file:\t\e[0m${networkcfgfullpath}" fi - } | column -s $'\t' -t + } | column -s $'\t' -t } fn_details_backup(){ @@ -252,7 +252,7 @@ fn_details_backup(){ echo -e "\e[34m date:\t\e[0m${lastbackupdate}" echo -e "\e[34m file:\t\e[0m${lastbackup}" echo -e "\e[34m size:\t\e[0m${lastbackupsize}" - } | column -s $'\t' -t + } | column -s $'\t' -t fi } @@ -260,7 +260,7 @@ fn_details_commandlineparms(){ # # Command-line Parameters # ===================================== - # ./run_server_x86.sh +set net_strict 1 + # ./run_server_x86.sh +set net_strict 1 echo -e "" echo -e "\e[92mCommand-line Parameters\e[0m" @@ -318,7 +318,7 @@ fn_details_avalanche(){ { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t + } | column -s $'\t' -t } fn_details_dontstarve(){ @@ -327,7 +327,7 @@ fn_details_dontstarve(){ { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t + } | column -s $'\t' -t } fn_details_projectzomboid(){ @@ -336,7 +336,7 @@ fn_details_projectzomboid(){ { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t + } | column -s $'\t' -t } @@ -352,7 +352,7 @@ fn_details_realvirtuality(){ echo -e "> Game\tINBOUND\t${port}\tudp" echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" - } | column -s $'\t' -t + } | column -s $'\t' -t } fn_details_idtech3(){ @@ -367,7 +367,7 @@ fn_details_idtech3(){ echo -e "> Game\tINBOUND\t${port}\tudp" echo -e "> Rcon\tINBOUND\t${rconport}\tudp" echo -e "> Stats\tINBOUND\t${statsport}\tudp" - } | column -s $'\t' -t + } | column -s $'\t' -t } @@ -378,7 +378,7 @@ fn_details_seriousengine35(){ echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game/RCON\tINBOUND\t${port}\ttcp" echo -e "> Query\tINBOUND\t${queryport}\tudp" - } | column -s $'\t' -t + } | column -s $'\t' -t } fn_details_source(){ @@ -551,7 +551,7 @@ fn_details_ark(){ # Run checks and gathers details to display. -check.sh +check.sh info_config.sh info_distro.sh info_glibc.sh diff --git a/lgsm/functions/command_dev_detect_deps.sh b/lgsm/functions/command_dev_detect_deps.sh index 88c28d5fd..a80fdb4c9 100644 --- a/lgsm/functions/command_dev_detect_deps.sh +++ b/lgsm/functions/command_dev_detect_deps.sh @@ -22,7 +22,7 @@ elif [ "${executable}" == "./runSam3_DedicatedServer.sh" ]; then elif [ "${executable}" == "./7DaysToDie.sh" ]; then executable=7DaysToDie.x86 elif [ "${executable}" == "./ucc-bin" ]; then - + if [ -f "${executabledir}/ucc-bin-real" ]; then executable=ucc-bin-real elif [ -f "${executabledir}/ut2004-bin" ]; then @@ -32,7 +32,7 @@ elif [ "${executable}" == "./ucc-bin" ]; then fi elif [ "${executable}" == "./ts3server_startscript.sh" ]; then - executable=ts3server_linux_amd64 + executable=ts3server_linux_amd64 fi if [ "$(command -v eu-readelf)" ]; then @@ -40,7 +40,7 @@ if [ "$(command -v eu-readelf)" ]; then elif [ "$(command -v readelf)" ]; then readelf=readelf else - echo "readelf/eu-readelf not installed" + echo "readelf/eu-readelf not installed" fi ${readelf} -d ${executable} |grep NEEDED|awk '{ print $5 }'|sed 's/\[//g'|sed 's/\]//g' > "${rootdir}/.depdetect_readelf" @@ -55,28 +55,28 @@ while read lib; do echo "glibc.i686" >> "${rootdir}/.depdetect_centos_list" echo "lib32gcc1" >> "${rootdir}/.depdetect_ubuntu_list" echo "lib32gcc1" >> "${rootdir}/.depdetect_debian_list" - + elif [ "${lib}" == "libstdc++.so.6" ]; then echo "libstdc++.i686" >> "${rootdir}/.depdetect_centos_list" echo "libstdc++6:i386" >> "${rootdir}/.depdetect_ubuntu_list" echo "libstdc++6:i386" >> "${rootdir}/.depdetect_debian_list" - + elif [ "${lib}" == "libstdc++.so.5" ]; then echo "compat-libstdc++-33.i686" >> "${rootdir}/.depdetect_centos_list" echo "libstdc++5:i386" >> "${rootdir}/.depdetect_ubuntu_list" echo "libstdc++5:i386" >> "${rootdir}/.depdetect_debian_list" - elif [ "${lib}" == "libspeex.so.1" ]||[ "${lib}" == "libspeexdsp.so.1" ]; then + elif [ "${lib}" == "libspeex.so.1" ]||[ "${lib}" == "libspeexdsp.so.1" ]; then echo "speex.i686" >> "${rootdir}/.depdetect_centos_list" echo "speex:i386" >> "${rootdir}/.depdetect_ubuntu_list" echo "speex:i386" >> "${rootdir}/.depdetect_debian_list" - elif [ "${lib}" == "./libSDL-1.2.so.0" ]||[ "${lib}" == "libSDL-1.2.so.0" ]; then + elif [ "${lib}" == "./libSDL-1.2.so.0" ]||[ "${lib}" == "libSDL-1.2.so.0" ]; then echo "SDL.i686" >> "${rootdir}/.depdetect_centos_list" echo "libsdl1.2debian" >> "${rootdir}/.depdetect_ubuntu_list" - echo "libsdl1.2debian" >> "${rootdir}/.depdetect_debian_list" + echo "libsdl1.2debian" >> "${rootdir}/.depdetect_debian_list" - elif [ "${lib}" == "libtbb.so.2" ]; then + elif [ "${lib}" == "libtbb.so.2" ]; then echo "tbb.i686" >> "${rootdir}/.depdetect_centos_list" echo "libtbb2" >> "${rootdir}/.depdetect_ubuntu_list" echo "libtbb2" >> "${rootdir}/.depdetect_debian_list" diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index fb8e7ac1f..49532e9ba 100644 --- a/lgsm/functions/command_install.sh +++ b/lgsm/functions/command_install.sh @@ -13,7 +13,7 @@ check.sh install_header.sh install_server_dir.sh install_logs.sh -check_deps.sh +check_deps.sh # Download and install if [ "${gamename}" == "Unreal Tournament 2004" ]; then install_server_files.sh diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index cab5daea9..89e78578b 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -34,7 +34,7 @@ fn_monitor_msg_checking(){ fn_print_dots "Checking session: " fn_print_checking_eol fn_scriptlog "Checking session: CHECKING" - sleep 1 + sleep 1 } fn_monitor_teamspeak3(){ diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index cd34e3f62..31e8232c5 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -88,7 +88,7 @@ fn_start_tmux(){ date > "${rootdir}/${lockselfname}" cd "${executabledir}" tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp" - + # tmux pipe-pane not supported in tmux versions < 1.6 if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}" @@ -177,7 +177,7 @@ logs.sh if [ "${status}" == "0" ]; then if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then update_check.sh - fi + fi fi if [ "${gamename}" == "Teamspeak 3" ]; then diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 8bca6779c..254620915 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -77,7 +77,7 @@ fn_stop_telnet_sdtd(){ expect { eof } puts "Completed.\n" ') - + } fn_stop_graceful_sdtd(){ @@ -120,7 +120,7 @@ fn_stop_graceful_sdtd(){ sleep 1 fn_print_dots "Graceful: rcon quit: ${seconds}" done - # If telnet failed will go straight to tmux shutdown. + # If telnet failed will go straight to tmux shutdown. # If cannot shutdown correctly world save may be lost else if [ -n "${refused}" ]; then diff --git a/lgsm/functions/command_update_functions.sh b/lgsm/functions/command_update_functions.sh index ba7674448..44610e2ca 100644 --- a/lgsm/functions/command_update_functions.sh +++ b/lgsm/functions/command_update_functions.sh @@ -25,7 +25,7 @@ if [ -n "${functionsdir}" ]; then if [ -d "${functionsdir}" ]; then rm -rfv "${functionsdir}/"* exitcode=$? - fi + fi fi if [ "${exitcode}" == "0" ]; then diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index a75d2de96..b87c04891 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -31,14 +31,14 @@ fn_dl_md5(){ fn_scriptlog "verifying ${filename} with MD5: FAIL" fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" fn_scriptlog "expected MD5 checksum: ${md5}" - exit 1 + exit 1 else fn_print_ok_eol_nl fn_scriptlog "verifying ${filename} with MD5: OK" fn_scriptlog "${filename} returned MD5 checksum: ${md5sumcmd}" - fn_scriptlog "expected MD5 checksum: ${md5}" + fn_scriptlog "expected MD5 checksum: ${md5}" fi - fi + fi } # Extracts bzip2 or gzip files @@ -98,7 +98,7 @@ fn_fetch_file(){ if [ ! -d "${filedir}" ]; then mkdir -p "${filedir}" fi - + # Check curl exists and use available path curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" for curlcmd in ${curlpaths} @@ -126,7 +126,7 @@ fn_fetch_file(){ fn_print_fail_eol_nl if [ -f "${scriptlog}" ]; then fn_scriptlog "downloading ${filename}: FAIL" - fi + fi echo "${curlcmd}" | tee -a "${scriptlog}" echo -e "${fileurl}\n" | tee -a "${scriptlog}" exit ${exitcode} @@ -134,10 +134,10 @@ fn_fetch_file(){ fn_print_ok_eol_nl if [ -f "${scriptlog}" ]; then fn_scriptlog "downloading ${filename}: OK" - fi + fi fi # remove trap - trap - INT + trap - INT else fn_print_fail_eol_nl echo "Curl is not installed!" @@ -147,7 +147,7 @@ fn_fetch_file(){ # make file executecmd if executecmd is set if [ "${executecmd}" == "executecmd" ]; then chmod +x "${filedir}/${filename}" - fi + fi fi if [ -f "${filedir}/${filename}" ]; then diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index f9bee5039..648832332 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -25,7 +25,7 @@ if [ -z "${lgsmdir}" ]; then lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" -fi +fi fn_fetch_core_dl(){ github_file_url_dir="lgsm/functions" @@ -57,7 +57,7 @@ if [ ! -f "${filedir}/${filename}" ]; then exit 1 else echo -e "\e[0;32mOK\e[0m" - fi + fi else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" @@ -161,7 +161,7 @@ local modulename="Restarting" info_config.sh if [ -d "${scriptlogdir}" ]; then fn_scriptlog "${servername}" -fi +fi command_stop.sh command_start.sh } diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index d3282cb44..15f44944f 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -65,7 +65,7 @@ case "$getopt" in echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." echo -e "\e[34minstall\t\e[0mi |Install the server." echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." - } | column -s $'\t' -t + } | column -s $'\t' -t esac exit } @@ -93,7 +93,7 @@ case "$getopt" in pw|change-password) command_ts3_server_pass.sh;; dev|dev-debug) - command_dev_debug.sh;; + command_dev_debug.sh;; i|install) command_install.sh;; ai|auto-install) @@ -119,7 +119,7 @@ case "$getopt" in echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34minstall\t\e[0mi |Install the server." echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." - } | column -s $'\t' -t + } | column -s $'\t' -t esac exit } @@ -141,7 +141,7 @@ case "$getopt" in b|backup) command_backup.sh;; dev|dev-debug) - command_dev_debug.sh;; + command_dev_debug.sh;; console) command_console.sh;; d|debug) @@ -164,7 +164,7 @@ case "$getopt" in echo -e "\e[34mbackup\t\e[0mb |Create archive of the server." echo -e "\e[34mconsole\t\e[0mc |Console allows you to access the live view of a server." echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." - } | column -s $'\t' -t + } | column -s $'\t' -t esac exit } @@ -199,7 +199,7 @@ case "$getopt" in d|debug) command_debug.sh;; dev|dev-debug) - command_dev_debug.sh;; + command_dev_debug.sh;; i|install) command_install.sh;; ai|auto-install) @@ -231,7 +231,7 @@ case "$getopt" in echo -e "\e[34minstall\t\e[0mi |Install the server." echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." echo -e "\e[34mfastdl\t\e[0mfd |Generates or update a FastDL folder for your server." - } | column -s $'\t' -t + } | column -s $'\t' -t esac exit } @@ -259,15 +259,15 @@ case "$getopt" in d|debug) command_debug.sh;; dev|dev-debug) - command_dev_debug.sh;; + command_dev_debug.sh;; i|install) command_install.sh;; ai|auto-install) - fn_autoinstall;; + fn_autoinstall;; mc|map-compressor) compress_ut99_maps.sh;; dd|depsdetect) - command_dev_detect_deps.sh;; + command_dev_detect_deps.sh;; *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" @@ -288,7 +288,7 @@ case "$getopt" in echo -e "\e[34minstall\t\e[0mi |Install the server." echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." echo -e "\e[34mmap-compressor\t\e[0mmc |Compresses all ${gamename} server maps." - } | column -s $'\t' -t + } | column -s $'\t' -t esac exit } @@ -324,7 +324,7 @@ case "$getopt" in d|debug) command_debug.sh;; dev|dev-debug) - command_dev_debug.sh;; + command_dev_debug.sh;; i|install) command_install.sh;; ai|auto-install) @@ -356,7 +356,7 @@ case "$getopt" in echo -e "\e[34minstall\t\e[0mi |Install the server." echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." echo -e "\e[34mmap-compressor\t\e[0mmc |Compresses all ${gamename} server maps." - } | column -s $'\t' -t + } | column -s $'\t' -t esac exit } @@ -385,17 +385,17 @@ case "$getopt" in d|debug) command_debug.sh;; dev|dev-debug) - command_dev_debug.sh;; + command_dev_debug.sh;; i|install) command_install.sh;; ai|auto-install) fn_autoinstall;; cd|server-cd-key) - install_ut2k4_key.sh;; + install_ut2k4_key.sh;; mc|map-compressor) compress_unreal2_maps.sh;; dd|depsdetect) - command_dev_detect_deps.sh;; + command_dev_detect_deps.sh;; *) echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" @@ -415,9 +415,9 @@ case "$getopt" in echo -e "\e[34mdebug\t\e[0md |See the output of the server directly to your terminal." echo -e "\e[34minstall\t\e[0mi |Install the server." echo -e "\e[34mauto-install\t\e[0mai |Install the server, without prompts." - echo -e "\e[34mserver-cd-key\t\e[0mcd |Add your server cd key" + echo -e "\e[34mserver-cd-key\t\e[0mcd |Add your server cd key" echo -e "\e[34mmap-compressor\t\e[0mmc |Compresses all ${gamename} server maps." - } | column -s $'\t' -t + } | column -s $'\t' -t esac exit } diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 523d1c4b2..972688a6e 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -35,9 +35,9 @@ fn_print_fail_nl(){ echo -en "\r\033[K[\e[0;31m FAIL \e[0m] $@" fi sleep 1 - echo -en "\n" + echo -en "\n" } - + # [ OK ] fn_print_ok(){ if [ -n "${modulename}" ]; then @@ -54,7 +54,7 @@ fn_print_ok_nl(){ echo -en "\r\033[K[\e[0;32m OK \e[0m] $@" fi sleep 1 - echo -en "\n" + echo -en "\n" } # [ INFO ] @@ -73,7 +73,7 @@ fn_print_info_nl(){ echo -en "\r\033[K[\e[0;36m INFO \e[0m] $@" fi sleep 1 - echo -en "\n" + echo -en "\n" } # [ WARN ] @@ -92,7 +92,7 @@ fn_print_warn_nl(){ echo -en "\r\033[K[\e[1;33m WARN \e[0m] $@" fi sleep 1 - echo -en "\n" + echo -en "\n" } # [ .... ] diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index b862e8278..f8bf9c9a9 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -23,7 +23,7 @@ fn_fix_msg_end(){ else fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" fn_scriptlog "Complete! Applying ${fixname} fix: ${gamename}" - fi + fi } @@ -31,16 +31,16 @@ fn_fix_msg_end(){ if [ "${function_selfname}" != "command_install.sh" ]; then if [ -n "${appid}" ]; then fix_steamcmd.sh - fi + fi if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then fix_csgo.sh elif [ "${gamename}" == "Don't Starve Together" ]; then - fix_dst.sh + fix_dst.sh elif [ "${gamename}" == "Insurgency" ]; then fix_ins.sh elif [ "${gamename}" == "ARMA 3" ]; then - fix_arma3.sh + fix_arma3.sh fi if [ "${gamename}" != "Teamspeak 3" ]; then @@ -54,25 +54,25 @@ if [ "${function_selfname}" == "command_install.sh" ]; then echo "" echo "Applying ${gamename} Server Fixes" echo "=================================" - sleep 1 + sleep 1 fix_kf.sh elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then echo "" echo "Applying ${gamename} Server Fixes" echo "=================================" - sleep 1 + sleep 1 fix_ro.sh elif [ "${gamename}" == "Unreal Tournament 2004" ]; then echo "" echo "Applying ${gamename} Server Fixes" echo "=================================" - sleep 1 + sleep 1 fix_ut2k4.sh elif [ "${gamename}" == "Unreal Tournament 99" ]; then echo "" echo "Applying ${gamename} Server Fixes" echo "=================================" - sleep 1 + sleep 1 fix_ut99.sh fi fi diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index e5ae37ff6..59a0983b1 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -11,7 +11,7 @@ for libstdc_server in "${libstdc_servers_array[@]}" do if [ "${gamename}" == "${libstdc_server}" ]; then fn_fetch_file_github "lgsm/lib/ubuntu12.04/i386" "libstdc++.so.6" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" - fi + fi done local libm_servers_array=( "Double Action: Boogaloo" "Fistful of Frags" "Insurgency" "Natural Selection 2" "NS2: Combat" "No More Room in Hell" ) @@ -19,7 +19,7 @@ for libm_server in "${libm_servers_array[@]}" do if [ "${gamename}" == "${libm_server}" ]; then fn_fetch_file_github "lgsm/lib/ubuntu12.04/i386" "libm.so.6" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" - fi + fi done export LD_LIBRARY_PATH=:"${libdir}" \ No newline at end of file diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh index 736c648f0..9b85cc47a 100644 --- a/lgsm/functions/fix_steamcmd.sh +++ b/lgsm/functions/fix_steamcmd.sh @@ -31,10 +31,10 @@ elif [ "${gamename}" == "Hurtworld" ]; then fn_fix_msg_start cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${filesdir}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${scriptlog}" fn_fix_msg_end - fi + fi if [ ! -f "${filesdir}/Hurtworld_Data/Plugins/x86_64/steamclient.so" ]; then fixname="steamclient.so x86_64" - fn_fix_msg_start + fn_fix_msg_start cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${filesdir}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${scriptlog}" fn_fix_msg_end fi diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 257f06f16..b48176cdb 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -26,18 +26,18 @@ fn_info_config_avalanche(){ serverpassword=$(grep "Password" "${servercfgfullpath}" | sed 's/Password//g' | tr -d '=", \n') slots=$(grep "MaxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]') port=$(grep "BindPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} slots=${slots:-"0"} port=${port:-"0"} - + # check if the ip exists in the config file. Failing this will fall back to the default. ipconfigcheck=$(grep "BindIP" "${servercfgfullpath}" | sed 's/BindIP//g' | tr -d '=", \n') if [ -n "${ipconfigcheck}" ]; then ip="${ipconfigcheck}" - fi + fi fi } @@ -56,7 +56,7 @@ fn_info_config_dontstarve(){ gamemode=$(grep "game_mode = " "${servercfgfullpath}" | grep -v "#" | sed 's/game_mode = //g') tickrate=$(grep "tick_rate" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} @@ -66,7 +66,7 @@ fn_info_config_dontstarve(){ port=${port:-"0"} fi } - + fn_info_config_projectzomboid(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" @@ -76,7 +76,7 @@ fn_info_config_projectzomboid(){ servername=$(grep "PublicName=" "${servercfgfullpath}" | sed 's/PublicName=//g' | tr -d '=", \n') slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') port=$(grep "DefaultPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} slots=${slots:-"0"} @@ -93,7 +93,7 @@ fn_info_config_idtech3(){ servername=$(grep "set sv_hostname " "${servercfgfullpath}" | sed 's/set sv_hostname //g' | tr -d '=\"; ') serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed 's/set g_password//g' | tr -d '=\"; '| cut -f1 -d "/") slots=$(grep "set sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} @@ -112,7 +112,7 @@ fn_info_config_realvirtuality(){ adminpassword=$(grep "passwordAdmin" "${servercfgfullpath}" | grep -v "//" | sed 's/\passwordAdmin//g' | tr -d '=\"; ') serverpassword=$(grep "password =" "${servercfgfullpath}" | grep -v "//" | sed 's/\password//g' | tr -d '=\"; ') slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} adminpassword=${adminpassword:-"NOT SET"} @@ -134,7 +134,7 @@ fn_info_config_seriousengine35(){ gamemode=$(grep "gam_idGameMode" "${servercfgfullpath}" | grep -v "#" | sed 's/gam_idGameMode//g' | tr -d '=\"; ') slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') port=$(grep "prj_uwPort" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} @@ -153,7 +153,7 @@ fn_info_config_source(){ servername=$(grep "hostname" "${servercfgfullpath}" | sed 's/hostname //g' | sed 's/"//g') serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed 's/sv_password //g' | sed 's/"//g') rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed 's/rcon_password //g' | sed 's/"//g') - + # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} @@ -192,20 +192,20 @@ fn_info_config_teeworlds(){ rconpassword="${unavailable}" port="8303" slots="12" - else + else servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ') rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ') port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} port=${port:-"8303"} slots=${slots:-"12"} - fi + fi } fn_info_config_terraria(){ @@ -214,7 +214,7 @@ fn_info_config_terraria(){ port="${zero}" gameworld="${unavailable}" slots="${zero}" - else + else servername=$(grep "worldname=" "${servercfgfullpath}" | sed 's/worldname=//g') port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') gameworld=$(grep "world=" "${servercfgfullpath}" | sed 's/world=//g') @@ -265,7 +265,7 @@ fn_info_config_unreal(){ webadminport=${webadminport:-"0"} webadminuser=${webadminuser:-"NOT SET"} webadminpass=${webadminpass:-"NOT SET"} - fi + fi } ## Just Cause 2 @@ -280,13 +280,13 @@ elif [ "${engine}" == "projectzomboid" ]; then # Quake Love elif [ "${engine}" == "idtech3" ]; then fn_info_config_idtech3 -# ARMA 3 +# ARMA 3 elif [ "${engine}" == "realvirtuality" ]; then fn_info_config_realvirtuality -# Serious Sam +# Serious Sam elif [ "${engine}" == "seriousengine35" ]; then fn_info_config_seriousengine35 -# Source Engine Games +# Source Engine Games elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then fn_info_config_source elif [ "${gamename}" == "Teamspeak 3" ]; then @@ -297,7 +297,7 @@ elif [ "${engine}" == "teeworlds" ]; then # Terraria elif [ "${engine}" == "terraria" ]; then fn_info_config_terraria -# Unreal/Unreal 2 engine +# Unreal/Unreal 2 engine elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then fn_info_config_unreal fi \ No newline at end of file diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index f70086d61..fa69c010a 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -55,10 +55,10 @@ elif [ "${engine}" == "starbound" ]; then glibcfix="no" elif [ "${engine}" == "terraria" ]; then glibcrequired="2.7" - glibcfix="no" + glibcfix="no" elif [ "${engine}" == "unreal" ]; then glibcrequired="2.1" - glibcfix="no" + glibcfix="no" elif [ "${engine}" == "unreal2" ]; then glibcrequired="2.4" glibcfix="no" @@ -70,7 +70,7 @@ elif [ "${engine}" == "unity3d" ]; then glibcfix="no" elif [ "${gamename}" == "Teamspeak 3" ]; then glibcrequired="NOT REQUIRED" - glibcfix="no" + glibcfix="no" else glibcrequired="UNKNOWN" glibcfix="no" diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index df70e14f7..84c4810db 100644 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -70,29 +70,29 @@ fn_info_config_teeworlds(){ rconpassword="${unavailable}" port="8303" slots="12" - else + else servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ') rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ') port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} port=${port:-"8303"} slots=${slots:-"12"} - fi + fi } fn_info_config_terraria(){ if [ ! -f "${servercfgfullpath}" ]; then port="0" - else + else port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - # Not Set + # Not Set port=${port:-"0"} fi } @@ -134,7 +134,7 @@ fn_info_config_unreal(){ webadminport=${webadminport:-"NOT SET"} webadminuser=${webadminuser:-"NOT SET"} webadminpass=${webadminpass:-"NOT SET"} - fi + fi } ## Just Cause 2 @@ -149,13 +149,13 @@ elif [ "${engine}" == "projectzomboid" ]; then # Quake Live elif [ "${engine}" == "idtech3" ]; then fn_info_config_idtech3 -# ARMA 3 +# ARMA 3 elif [ "${engine}" == "realvirtuality" ]; then fn_info_config_realvirtuality -# Serious Sam +# Serious Sam elif [ "${engine}" == "seriousengine35" ]; then fn_info_config_seriousengine35 -# Source Engine Games +# Source Engine Games elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then fn_info_config_source elif [ "${gamename}" == "Teamspeak 3" ]; then @@ -165,7 +165,7 @@ elif [ "${engine}" == "teeworlds" ]; then fn_info_config_teeworlds elif [ "${engine}" == "terraria" ]; then fn_info_config_terraria -# Unreal/Unreal 2 engine +# Unreal/Unreal 2 engine elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then fn_info_config_unreal fi \ No newline at end of file diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index e6a298e05..d19eaeddd 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -171,7 +171,7 @@ elif [ "${gamename}" == "BrainBread 2" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/BrainBread2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 - fn_sourceconfig + fn_sourceconfig elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/BlackMesa/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq @@ -241,7 +241,7 @@ elif [ "${gamename}" == "GoldenEye: Source" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/GoldenEyeSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 - fn_sourceconfig + fn_sourceconfig elif [ "${gamename}" == "Half Life 2: Deathmatch" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/HalfLife2Deathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq @@ -289,7 +289,7 @@ elif [ "${gamename}" == "Project Zomboid" ]; then echo -e "downloading lgsm-default.ini...\c" wget -N /dev/null ${githuburl}/ProjectZomboid/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 - fn_defaultconfig + fn_defaultconfig elif [ "${gamename}" == "Quake Live" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/QuakeLive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq diff --git a/lgsm/functions/install_server_dir.sh b/lgsm/functions/install_server_dir.sh index ccf629fc8..c9aabc829 100644 --- a/lgsm/functions/install_server_dir.sh +++ b/lgsm/functions/install_server_dir.sh @@ -16,7 +16,7 @@ echo "" if [ -d "${filesdir}" ]; then fn_print_warning_nl "A server is already installed here." fi -if [ -z "${autoinstall}" ]; then +if [ -z "${autoinstall}" ]; then while true; do read -e -i "y" -p "Continue [Y/n]" yn case $yn in diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh index 07b2dd539..e2027a42b 100644 --- a/lgsm/functions/install_ts3db.sh +++ b/lgsm/functions/install_ts3db.sh @@ -36,7 +36,7 @@ fn_install_ts3db_mariadb(){ echo "username='${mariausername}'" >> ${servercfgdir}/ts3db_mariadb.ini echo "password='${mariapassword}'" >> ${servercfgdir}/ts3db_mariadb.ini echo "database='${mariadbname}'" >> ${servercfgdir}/ts3db_mariadb.ini - echo "socket=" >> ${servercfgdir}/ts3db_mariadb.ini + echo "socket=" >> ${servercfgdir}/ts3db_mariadb.ini sed -i "s/dbplugin=ts3db_sqlite3/dbplugin=ts3db_mariadb/g" "${servercfgfullpath}" sed -i "s/dbpluginparameter=/dbpluginparameter=ts3db_mariadb.ini/g" "${servercfgfullpath}" sed -i "s/dbsqlcreatepath=create_sqlite\//dbsqlcreatepath=create_mariadb\//g" "${servercfgfullpath}" diff --git a/lgsm/functions/install_ut2k4_key.sh b/lgsm/functions/install_ut2k4_key.sh index af71c2993..5a0837af0 100644 --- a/lgsm/functions/install_ut2k4_key.sh +++ b/lgsm/functions/install_ut2k4_key.sh @@ -21,9 +21,9 @@ if [ -z "${autoinstall}" ]; then echo ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey" if [ -f "${systemdir}/cdkey" ]; then fn_scriptlog "UT2K4 Server CD Key created" - fi + fi else echo "You can add your key using the following command" echo "./${selfname} server-cd-key" -fi +fi echo "" \ No newline at end of file diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index dcb87697f..ad309c7a0 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -93,7 +93,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th rm -rf "${legacyserverlogdir}" fi fi - + # Count total amount of files removed count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount} + ${legacycount})) # Job done diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index b93b15cf0..bb1679e1f 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -12,14 +12,14 @@ local modulename="Monitor" # Forces legecy servers to use gsquery if [ -z "${gsquery}" ]; then gsquery="yes" -fi +fi if [ "${gsquery}" == "yes" ]; then # Downloads gsquery.py if missing if [ ! -f "${functionsdir}/gsquery.py" ]; then fn_fetch_file_github "lgsm/functions" "gsquery.py" "${functionsdir}" "executecmd" "norun" "noforce" "nomd5" - fi + fi info_config.sh @@ -45,7 +45,7 @@ if [ "${gsquery}" == "yes" ]; then fn_print_dots "Querying port: ${ip}:${port} : ${totalseconds}/${queryattempt} : " fn_print_querying_eol fn_scriptlog "Querying port: ${ip}:${port} : ${queryattempt} : QUERYING" - + gsquerycmd=$("${functionsdir}"/gsquery.py -a "${ip}" -p "${port}" -e "${engine}" 2>&1) exitcode=$? diff --git a/lgsm/functions/update_check.sh b/lgsm/functions/update_check.sh index bea812079..c5c7a8359 100644 --- a/lgsm/functions/update_check.sh +++ b/lgsm/functions/update_check.sh @@ -90,7 +90,7 @@ fn_logupdaterequest(){ echo -ne "\n" unset updateonstart - check_status.sh + check_status.sh if [ "${status}" != "0" ]; then command_stop.sh update_dl.sh @@ -99,7 +99,7 @@ fn_logupdaterequest(){ update_dl.sh fi alert="update" - alert.sh + alert.sh else fn_print_ok "Checking for update: Server logs: No update requested" sleep 1 @@ -234,7 +234,7 @@ fn_teamspeak3_check(){ fn_print_failure "${arch} is an unsupported architecture" exit 1 fi - + # Gets availablebuild info # Grabs all version numbers but not in correct order @@ -295,7 +295,7 @@ fn_teamspeak3_check(){ fn_scriptlog "Current build: ${currentbuild}" fn_scriptlog "Available build: ${availablebuild}" fn_scriptlog "${currentbuild} > ${availablebuild}" - + unset updateonstart check_status.sh if [ "${status}" == "0" ]; then @@ -309,7 +309,7 @@ fn_teamspeak3_check(){ command_start.sh fi alert="update" - alert.sh + alert.sh else echo -e "\n" echo -e "No update available:" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index eac77ae7c..f2c84cd6c 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -85,7 +85,7 @@ if [ ! -f "${filepath}" ]; then echo -e " fetching ${filename}...\c" if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then : - else + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" @@ -99,7 +99,7 @@ if [ ! -f "${filepath}" ]; then exit else echo -e "\e[0;32mOK\e[0m" - fi + fi if [ "${exec}" ]; then chmod +x "${filepath}" fi @@ -126,7 +126,7 @@ pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:") if [ "${pid}" != "0" ]; then currentstatus="ONLINE" else - currentstatus="OFFLINE" + currentstatus="OFFLINE" fi } @@ -136,10 +136,10 @@ ts3status=$(${executable} status servercfgfullpathfile=${servercfgfullpath}) if [ "${ts3status}" == "Server is running" ]; then currentstatus="ONLINE" else - currentstatus="OFFLINE" + currentstatus="OFFLINE" fi } - + fn_setstatus(){ fn_currentstatus_tmux echo"" @@ -150,7 +150,7 @@ fn_setstatus(){ counter=$((counter+1)) fn_currentstatus_tmux echo -ne "New status: ${currentstatus}\\r" - + if [ "${requiredstatus}" == "ONLINE" ]; then (command_start.sh > /dev/null 2>&1) else diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index e9604c7d9..7ea98bac7 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -72,7 +72,7 @@ if [ ! -f "${filepath}" ]; then echo -e " fetching ${filename}...\c" if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then : - else + else echo -e "\e[0;31mFAIL\e[0m\n" echo "Curl is not installed!" echo -e "" @@ -86,7 +86,7 @@ if [ ! -f "${filepath}" ]; then exit else echo -e "\e[0;32mOK\e[0m" - fi + fi if [ "${exec}" ]; then chmod +x "${filepath}" fi @@ -113,7 +113,7 @@ fn_currentstatus_tmux(){ if [ "${status}" != "0" ]; then currentstatus="ONLINE" else - currentstatus="OFFLINE" + currentstatus="OFFLINE" fi } @@ -122,10 +122,10 @@ check_status.sh if [ "${status}" != "0" ]; then currentstatus="ONLINE" else - currentstatus="OFFLINE" + currentstatus="OFFLINE" fi } - + fn_setstatus(){ fn_currentstatus_ts3 echo"" @@ -136,7 +136,7 @@ fn_setstatus(){ counter=$((counter+1)) fn_currentstatus_ts3 echo -ne "New status: ${currentstatus}\\r" - + if [ "${requiredstatus}" == "ONLINE" ]; then (command_start.sh) else From 2d2d8941c33f872994ad29631ae865a772494584 Mon Sep 17 00:00:00 2001 From: cedarlug <cedarlug@fistfuloffrags.org> Date: Sat, 11 Jun 2016 21:26:28 -0500 Subject: [PATCH 641/643] Adding in parsing for realvirtual engine - allows arma3server to find its parameters --- lgsm/functions/info_parms.sh | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index df70e14f7..e0b63e585 100644 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -28,8 +28,14 @@ fn_info_config_idtech3(){ } fn_info_config_realvirtuality(){ + port=$(grep "^serverport=" "${servercfgfullpath}" | tr -cd '[:digit:]') + queryport=$(grep "^steamqueryport=" "${servercfgfullpath}" | tr -cd '[:digit:]') + masterport=$(grep "^steamport=" "${servercfgfullpath}" | tr -cd '[:digit:]') + # Not Set - port=${rconport:-"0"} + port=${port:-"2302"} + queryport=${queryport:-"2303"} + masterport=${masterport:-"2304"} } fn_info_config_source(){ @@ -70,29 +76,29 @@ fn_info_config_teeworlds(){ rconpassword="${unavailable}" port="8303" slots="12" - else + else servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ') rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ') port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} port=${port:-"8303"} slots=${slots:-"12"} - fi + fi } fn_info_config_terraria(){ if [ ! -f "${servercfgfullpath}" ]; then port="0" - else + else port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - # Not Set + # Not Set port=${port:-"0"} fi } @@ -134,7 +140,7 @@ fn_info_config_unreal(){ webadminport=${webadminport:-"NOT SET"} webadminuser=${webadminuser:-"NOT SET"} webadminpass=${webadminpass:-"NOT SET"} - fi + fi } ## Just Cause 2 @@ -149,13 +155,13 @@ elif [ "${engine}" == "projectzomboid" ]; then # Quake Live elif [ "${engine}" == "idtech3" ]; then fn_info_config_idtech3 -# ARMA 3 +# ARMA 3 elif [ "${engine}" == "realvirtuality" ]; then fn_info_config_realvirtuality -# Serious Sam +# Serious Sam elif [ "${engine}" == "seriousengine35" ]; then fn_info_config_seriousengine35 -# Source Engine Games +# Source Engine Games elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then fn_info_config_source elif [ "${gamename}" == "Teamspeak 3" ]; then @@ -165,7 +171,7 @@ elif [ "${engine}" == "teeworlds" ]; then fn_info_config_teeworlds elif [ "${engine}" == "terraria" ]; then fn_info_config_terraria -# Unreal/Unreal 2 engine +# Unreal/Unreal 2 engine elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then fn_info_config_unreal -fi \ No newline at end of file +fi From 6bd687399a841dca498e54a093fb8f303925c483 Mon Sep 17 00:00:00 2001 From: igeighty <igeighty@gmail.com> Date: Tue, 14 Jun 2016 19:48:17 +1000 Subject: [PATCH 642/643] Update monitor_gsquery.sh this fixes the monitor function for arma3 as @MPCP10 suggested --- lgsm/functions/monitor_gsquery.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index bb1679e1f..9ac2c405b 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -25,6 +25,8 @@ if [ "${gsquery}" == "yes" ]; then if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then port=$((port + 1)) + elif [ "${engine}" == "virtualreality" ]; then + port=$((port + 1)) elif [ "${engine}" == "spark" ]; then port=$((port + 1)) fi @@ -86,4 +88,4 @@ if [ "${gsquery}" == "yes" ]; then done fi done -fi \ No newline at end of file +fi From f3e0172514ce087068e5580ab00a21f99f2d627f Mon Sep 17 00:00:00 2001 From: igeighty <igeighty@gmail.com> Date: Tue, 14 Jun 2016 22:48:19 +1000 Subject: [PATCH 643/643] Update monitor_gsquery.sh in the previous pull i had made, i mad e a typo, realvirtuality i got a bit keen and typed to quick. sorry guys, i have done a copy paste with the new spelling and it DOES work. sorry, very noob error. --- lgsm/functions/monitor_gsquery.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 9ac2c405b..99f6f1dcf 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -25,7 +25,7 @@ if [ "${gsquery}" == "yes" ]; then if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then port=$((port + 1)) - elif [ "${engine}" == "virtualreality" ]; then + elif [ "${engine}" == "realvirtuality" ]; then port=$((port + 1)) elif [ "${engine}" == "spark" ]; then port=$((port + 1))