diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 07f7d555d..3a2f62064 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.xml" servercfgdefault="serverconfig.xml" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index efba11b51..940ffee80 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -82,6 +82,11 @@ servercfgdir="${systemdir}/Saved/Config/LinuxServer" servercfg="GameUserSettings.ini" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/GameUserSettings.ini" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Arma3/arma3server b/Arma3/arma3server index 62a760104..e09959ef7 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -96,6 +96,11 @@ networkcfgdefault="network.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" networkcfgfullpath="${servercfgdir}/${networkcfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 14995f4cf..07dfccc4b 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -62,6 +62,11 @@ servercfg="serversettings.con" servercfgdefault="serversettings.con" servercfgdir="${systemdir}/mods/bf1942/settings" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 91fe6bb56..9f458c29b 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -87,6 +87,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index e5e071271..67c3f5f1f 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -82,6 +82,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 8ff2d159c..b2c7c49b1 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -87,6 +87,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 3473eed80..43b726b6a 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -82,6 +82,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CounterStrike/csserver b/CounterStrike/csserver index e2cdde7fc..9c75a6aa6 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="060816" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 895ec1583..0a6c49e04 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 87425d00a..36114ccb3 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -105,6 +105,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index e6994789e..12ff1df51 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -87,6 +87,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index f6cd2b34e..c4e2610fa 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 342ccc97a..f0b8520e0 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -82,6 +82,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 7440b369f..0decebc06 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -84,6 +84,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging @@ -162,4 +167,4 @@ core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index b987c9685..c4cb47902 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index e96d304b8..973f72c16 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -81,6 +81,11 @@ servercfgdefault="settings.ini" servercfgdir="${HOME}/.klei/DoNotStarveTogether" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 4b8b531e9..4ee289fb8 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -82,6 +82,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 20e28b2d4..28ccec4e1 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -87,6 +87,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 8a9fa69c5..18d0058cf 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -82,6 +82,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index edc225016..bd73743ea 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -104,6 +104,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 081362d2a..12ac8a165 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="300816" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index ff324c434..77ef2a03d 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 2716a27e9..3285f810e 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -76,6 +76,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 0a45df162..9c1a1040e 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 2e28481b6..a72c59e05 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -96,6 +96,11 @@ if [ "${x64mode}" == "1" ]; then else executable="./Hurtworld.x86" fi + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Insurgency/insserver b/Insurgency/insserver index ba49fb494..77c32f9c5 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161001" +version="211016" #### Variables #### @@ -84,6 +84,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/JustCause2/jc2server b/JustCause2/jc2server index af5e1e0af..2966d9af0 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -75,6 +75,11 @@ servercfg="config.lua" servercfgdefault="config.lua" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 09ad60899..e4dba3329 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -82,6 +82,11 @@ servercfgdefault="Default.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index d05cd9a79..37dc67e5f 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -82,6 +82,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index bddcaae9e..8db8c6638 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -81,6 +81,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 6317fb9bc..230da0fa3 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -4,12 +4,12 @@ # Author: Daniel Gibbs # Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then - exec 5>dev-debug.log - BASH_XTRACEFD="5" - set -x + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x fi -version="210816" +version="211016" #### Variables #### @@ -63,6 +63,11 @@ servercfgdefault="server.properties" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging @@ -91,36 +96,36 @@ 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}" + 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}" } diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 9e2b022ec..f0c18a521 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="290716" +version="211016" #### Variables #### @@ -63,6 +63,11 @@ servercfg="${servicename}.ini" servercfgdefault="murmur.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 4dbc1e276..4c9dcec4b 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -88,6 +88,11 @@ executable="./ns2combatserver_linux32" servercfgdir="${rootdir}/server1" servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 54b6ed226..48f22369f 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210916" +version="211016" #### Variables #### @@ -88,6 +88,11 @@ executable="./server_linux32" servercfgdir="${rootdir}/server1" servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index be02bfc0e..e809b1fa4 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -87,6 +87,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 5013110e2..896a7370e 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 5074af33e..19800bb87 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -82,6 +82,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 143c382c6..711c406eb 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -78,6 +78,11 @@ servercfg="server.ini" servercfgdefault="server.cfg" servercfgdir="${HOME}/Zomboid/Server" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Quake2/cfg/lgsm-default.cfg b/Quake2/cfg/lgsm-default.cfg new file mode 100644 index 000000000..d59e3505f --- /dev/null +++ b/Quake2/cfg/lgsm-default.cfg @@ -0,0 +1,15 @@ +set hostname "" +set rcon_password "" +set location "The Internet" +set website "https://gameservermanagers.com/" +set deathmatch 1 +set maxclients 8 +set timelimit 30 +set fraglimit 30 + +map q2dm1 + +// to advertise your server to a public "master server" add something +// like this: +//set public 1 +//setmaster master.q2servers.com diff --git a/Quake2/q2server b/Quake2/q2server new file mode 100644 index 000000000..5a7faaab7 --- /dev/null +++ b/Quake2/q2server @@ -0,0 +1,145 @@ +#!/bin/bash +# Quake 2 +# Server Management Script +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="210516" + +#### Variables #### + +# Notification Alerts +# (on|off) + +# Email +emailalert="off" +email="email@example.com" + +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert="off" +pushbullettoken="accesstoken" + +# Start Variables +defaultmap="q2dm1" +ip="0.0.0.0" +port="27910" + +fn_parms(){ +parms="+set dedicated 1 +set ip ${ip} +set port ${port} +exec ${servercfg} +set deathmatch 1 +map ${defaultmap}" +} + +#### Advanced Variables #### + +# Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +# Server Details +servicename="quake2server" +gamename="Quake 2" +engine="idtech2" + +# Directories +rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" +selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" +libdir="${lgsmdir}/lib" +tmpdir="${lgsmdir}/tmp" +filesdir="${rootdir}/serverfiles" +systemdir="${filesdir}/baseq2" +executabledir="${filesdir}" +executable="./quake2" +servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" +servercfgdir="${systemdir}" +servercfgfullpath="${servercfgdir}/${servercfg}" +backupdir="${rootdir}/backups" + +# Logging +logdays="7" +gamelogdir="${filesdir}/Logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +consolelogging="on" + +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 + +# 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 -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_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_fetch_core_dl +} + +core_dl.sh +core_functions.sh + +getopt=$1 +core_getopt.sh diff --git a/Quake3/cfg/lgsm-default.cfg b/Quake3/cfg/lgsm-default.cfg new file mode 100644 index 000000000..caccea760 --- /dev/null +++ b/Quake3/cfg/lgsm-default.cfg @@ -0,0 +1,36 @@ +set sv_hostname "" +set sv_maxclients 16 +set g_motd "LGSM Quake3 Server" +set g_forcerespawn 15 +set rconpassword "" +set g_gametype 0 //- Sets the type of game. 0 - Free for all, 1 - Tournament, 2 - Free for all(again), 3 - Team Deathmatch, 4 - Capture the Flag +set fraglimit 50 +set timelimit 20 + +//Here's the map-cycle. When fraglimit or timelimit is reached, the map is automatically changed. +//Otherwise it would just play the same map again. +set m1 "map q3dm1; set nextmap vstr m2" +set m2 "map q3dm2; set nextmap vstr m3" +set m3 "map q3dm3; set nextmap vstr m4" +set m4 "map q3tourney1; set nextmap vstr m5" +set m5 "map q3dm4; set nextmap vstr m6" +set m6 "map q3dm5; set nextmap vstr m7" +set m7 "map q3dm6; set nextmap vstr m8" +set m8 "map q3tourney2; set nextmap vstr m9" +set m9 "map q3dm7; set nextmap vstr m10" +set m10 "map q3dm8; set nextmap vstr m11" +set m11 "map q3dm9; set nextmap vstr m12" +set m12 "map q3tourney3; set nextmap vstr m13" +set m13 "map q3dm10; set nextmap vstr m14" +set m14 "map q3dm11; set nextmap vstr m15" +set m15 "map q3dm12; set nextmap vstr m16" +set m16 "map q3tourney4; set nextmap vstr m17" +set m17 "map q3dm13; set nextmap vstr m18" +set m18 "map q3dm14; set nextmap vstr m19" +set m19 "map q3dm15; set nextmap vstr m20" +set m20 "map q3tourney5; set nextmap vstr m21" +set m21 "map q3dm16; set nextmap vstr m22" +set m22 "map q3dm17; set nextmap vstr m23" +set m23 "map q3dm18; set nextmap vstr m24" +set m24 "map q3dm19; set nextmap vstr m25" +set m25 "map q3tourney6; set nextmap vstr m1" \ No newline at end of file diff --git a/Quake3/q3server b/Quake3/q3server new file mode 100644 index 000000000..6c2e4d844 --- /dev/null +++ b/Quake3/q3server @@ -0,0 +1,145 @@ +#!/bin/bash +# Quake 3: Arena +# Server Management Script +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="210516" + +#### Variables #### + +# Notification Alerts +# (on|off) + +# Email +emailalert="off" +email="email@example.com" + +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert="off" +pushbullettoken="accesstoken" + +# Start Variables +defaultmap="q3dm17" +ip="0.0.0.0" +port="27960" + +fn_parms(){ +parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set com_hunkMegs 32 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" +} + +#### Advanced Variables #### + +# Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +# Server Details +servicename="quake3-server" +gamename="Quake 3: Arena" +engine="idtech3" + +# Directories +rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" +selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +lockselfname=".${servicename}.lock" +lgsmdir="${rootdir}/lgsm" +functionsdir="${lgsmdir}/functions" +libdir="${lgsmdir}/lib" +tmpdir="${lgsmdir}/tmp" +filesdir="${rootdir}/serverfiles" +systemdir="${filesdir}/baseq3" +executabledir="${filesdir}" +executable="./q3ded" +servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" +servercfgdir="${systemdir}" +servercfgfullpath="${servercfgdir}/${servercfg}" +backupdir="${rootdir}/backups" + +# Logging +logdays="7" +gamelogdir="${filesdir}/Logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +consolelogging="on" + +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 + +# 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 -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_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_fetch_core_dl +} + +core_dl.sh +core_functions.sh + +getopt=$1 +core_getopt.sh \ No newline at end of file diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index accf6aadf..8eb822ad3 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -85,6 +85,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${filesdir}/baseq3" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 66b85d98e..788c7cb7d 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -73,6 +73,11 @@ servercfgdefault="default.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index ff5862808..60a9a6b19 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Rust/rustserver b/Rust/rustserver index 6e5f8f76a..19e3e4723 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -100,6 +100,11 @@ servercfg="server.cfg" servercfgdefault="server.cfg" servercfgdir="${serveridentitydir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 35b78d831..852c6a518 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.ini" servercfgdefault="server.ini" servercfgdir="${filesdir}/Content/SeriousSam3/Config" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Starbound/sbserver b/Starbound/sbserver index 197d93ee3..cbe75f260 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -76,6 +76,11 @@ servercfg="starbound_server.config" servercfgdefault="starbound_server.config" servercfgdir="${filesdir}/storage" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index c89ffb88d..2e9257204 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -81,6 +81,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 972e60903..5eb44c96f 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### @@ -87,6 +87,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 4a9496d35..60b521a4f 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -77,6 +77,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 2c0af6bd5..5b7180515 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="290716" +version="211016" #### Variables #### @@ -50,6 +50,11 @@ servercfg="${servicename}.ini" servercfgdefault="ts3server.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 8ab31bbcb..7ad17233a 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -72,6 +72,11 @@ servercfg="${servicename}.cfg" # Teeworlds can also auto load any config if an a servercfgdefault="server.cfg" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index fba75083f..db4bba201 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -72,6 +72,11 @@ servercfg="${servicename}.txt" servercfgdefault="serverconfig.txt" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index a5ff70a61..0b60ca9d6 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -68,6 +68,11 @@ executable="./UE4Server-Linux-Shipping" servercfg="Game.ini" servercfgdir="${systemdir}/UnrealTournament/Saved/Config/LinuxServer" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 3c82b7e7b..c841a2199 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -56,6 +56,11 @@ servercfgdefault="UT2004.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 780da1fb8..a094b0daa 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -76,6 +76,11 @@ servercfg="${servicename}.ini" servercfgdefault="UTGame.ini" servercfgdir="${systemdir}/UTGame/Config" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 771882279..8fa9f4bae 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -65,6 +65,11 @@ servercfgdefault="Default.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 35642cdd6..54815accf 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### @@ -62,6 +62,11 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/etmain" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/appmanifest/appmanifest_10.acf b/appmanifest/appmanifest_10.acf deleted file mode 100644 index 9217b6129..000000000 --- a/appmanifest/appmanifest_10.acf +++ /dev/null @@ -1,22 +0,0 @@ -"AppState" -{ - "AppID" "10" - "Universe" "1" - "StateFlags" "1090" - "installdir" "Half-Life" - "LastUpdated" "0" - "UpdateResult" "0" - "SizeOnDisk" "0" - "buildid" "0" - "LastOwner" "0" - "BytesToDownload" "0" - "BytesDownloaded" "0" - "AutoUpdateBehavior" "0" - "AllowOtherDownloadsWhileRunning" "0" - "UserConfig" - { - } - "MountedDepots" - { - } -} diff --git a/appmanifest/appmanifest_70.acf b/appmanifest/appmanifest_70.acf deleted file mode 100644 index e5d6f2807..000000000 --- a/appmanifest/appmanifest_70.acf +++ /dev/null @@ -1,22 +0,0 @@ -"AppState" -{ - "AppID" "70" - "Universe" "1" - "StateFlags" "1090" - "installdir" "Half-Life" - "LastUpdated" "0" - "UpdateResult" "0" - "SizeOnDisk" "0" - "buildid" "0" - "LastOwner" "0" - "BytesToDownload" "0" - "BytesDownloaded" "0" - "AutoUpdateBehavior" "0" - "AllowOtherDownloadsWhileRunning" "0" - "UserConfig" - { - } - "MountedDepots" - { - } -} diff --git a/appmanifest/appmanifest_90.acf b/appmanifest/appmanifest_90.acf deleted file mode 100644 index 7de939d34..000000000 --- a/appmanifest/appmanifest_90.acf +++ /dev/null @@ -1,28 +0,0 @@ -"AppState" -{ - "AppID" "90" - "Universe" "1" - "StateFlags" "1026" - "installdir" "Half-Life" - "LastUpdated" "0" - "UpdateResult" "0" - "SizeOnDisk" "0" - "buildid" "0" - "LastOwner" "0" - "BytesToDownload" "0" - "BytesDownloaded" "0" - "AutoUpdateBehavior" "0" - "AllowOtherDownloadsWhileRunning" "0" - "UserConfig" - { - } - "MountedDepots" - { - } - "SharedDepots" - { - "1" "70" - "11" "10" - "71" "70" - } -} diff --git a/appmanifest/czero/appmanifest_90.acf b/appmanifest/czero/appmanifest_90.acf deleted file mode 100644 index 2373e5421..000000000 --- a/appmanifest/czero/appmanifest_90.acf +++ /dev/null @@ -1,31 +0,0 @@ -"AppState" -{ - "appid" "90" - "Universe" "1" - "StateFlags" "4" - "installdir" "Half-Life" - "LastUpdated" "1390662869" - "UpdateResult" "0" - "SizeOnDisk" "41586625" - "buildid" "63549" - "LastOwner" "76561199609699388" - "BytesToDownload" "224501136" - "BytesDownloaded" "224501136" - "AutoUpdateBehavior" "0" - "AllowOtherDownloadsWhileRunning" "0" - "UserConfig" - { - "mod" "czero" - } - "MountedDepots" - { - "4" "3196956435784640171" - } - "SharedDepots" - { - "1" "70" - "11" "10" - "71" "70" - "81" "80" - } -} diff --git a/appmanifest/dod/appmanifest_90.acf b/appmanifest/dod/appmanifest_90.acf deleted file mode 100644 index 704e4d1f0..000000000 --- a/appmanifest/dod/appmanifest_90.acf +++ /dev/null @@ -1,31 +0,0 @@ -"AppState" -{ - "AppID" "90" - "Universe" "1" - "StateFlags" "1030" - "installdir" "Half-Life" - "LastUpdated" "1390652241" - "UpdateResult" "0" - "SizeOnDisk" "41586625" - "buildid" "63549" - "LastOwner" "76561201453793332" - "BytesToDownload" "236411088" - "BytesDownloaded" "0" - "AutoUpdateBehavior" "0" - "AllowOtherDownloadsWhileRunning" "0" - "UserConfig" - { - "mod" "dod" - } - "MountedDepots" - { - "4" "3196956435784640171" - } - "SharedDepots" - { - "1" "70" - "11" "10" - "71" "70" - "31" "30" - } -} diff --git a/appmanifest/tfc/appmanifest_90.acf b/appmanifest/tfc/appmanifest_90.acf deleted file mode 100644 index aa3f4e2a9..000000000 --- a/appmanifest/tfc/appmanifest_90.acf +++ /dev/null @@ -1,31 +0,0 @@ -"AppState" -{ - "AppID" "90" - "Universe" "1" - "StateFlags" "4" - "installdir" "Half-Life" - "LastUpdated" "1390765182" - "UpdateResult" "0" - "SizeOnDisk" "41586625" - "buildid" "63549" - "LastOwner" "76561198445953036" - "BytesToDownload" "62362560" - "BytesDownloaded" "0" - "AutoUpdateBehavior" "0" - "AllowOtherDownloadsWhileRunning" "0" - "UserConfig" - { - "mod" "tfc" - } - "MountedDepots" - { - "4" "3196956435784640171" - } - "SharedDepots" - { - "1" "70" - "11" "10" - "71" "70" - "21" "20" - } -} diff --git a/functions/command_update_functions.sh b/functions/command_update_functions.sh deleted file mode 100644 index 0c35eb1f0..000000000 --- a/functions/command_update_functions.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/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. - -local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -check.sh -fn_print_dots "Updating functions" -fn_script_log "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_script_log "Success! Updating functions" -else - fn_print_fail "Updating functions" - fn_script_log "Failure! Updating functions" -fi -echo -ne "\n" \ No newline at end of file diff --git a/functions/core_functions.sh b/functions/core_functions.sh deleted file mode 100644 index 287a50897..000000000 --- a/functions/core_functions.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/bash -# LGSM core_functions.sh function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="210516" - -# 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 - lgsmdir="${rootdir}/lgsm" - functionsdir="${lgsmdir}/functions" - libdir="${lgsmdir}/lib" -fi - -fn_fetch_core_dl(){ -if [ -z "${githubuser}" ]; then - githubuser="GameServerManagers" -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}" -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 "${red}FAIL${default}\n" - echo "${curlfetch}" - echo -e "${githuburl}\n" - exit 1 - else - echo -e "${green}OK${default}" - fi - else - echo -e "${red}FAIL${default}\n" - echo "Curl is not installed!" - echo -e "" - exit 1 - fi - chmod +x "${filedir}/${filename}" -fi -source "${filedir}/${filename}" -} - -core_functions.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_core_dl -} - -core_functions.sh diff --git a/functions/core_getopt.sh b/functions/core_getopt.sh deleted file mode 100644 index f6032fae6..000000000 --- a/functions/core_getopt.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# LGSM core_getopt.sh function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="210516" - -# Description: REDIRECT FUNCTION 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 diff --git a/functions/fn_functions b/functions/fn_functions deleted file mode 100644 index 2ae012923..000000000 --- a/functions/fn_functions +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# LGSM fn_functions function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="210516" - -# Description: REDIRECT FUNCTION to new core_functions.sh - -core_functions.sh(){ -# Functions are defined in core_functions.sh. -functionfile="${FUNCNAME}" -fn_runfunction -} - -core_functions.sh \ No newline at end of file diff --git a/functions/fn_getopt b/functions/fn_getopt deleted file mode 100644 index 0b0e3713d..000000000 --- a/functions/fn_getopt +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# LGSM fn_getopt.sh function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="210516" - -# Description: REDIRECT FUNCTION to new core_getopt.sh - -core_getopt.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_core_dl -} - -core_getopt.sh \ No newline at end of file diff --git a/functions/fn_update_functions b/functions/fn_update_functions deleted file mode 100644 index 5513d5d20..000000000 --- a/functions/fn_update_functions +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# LGSM fn_update_functions function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="210516" - -# Description: REDIRECT FUNCTION to new command_update_functions.sh - -command_update_functions.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -command_update_functions.sh - diff --git a/functions/update_functions.sh b/functions/update_functions.sh deleted file mode 100644 index 5513d5d20..000000000 --- a/functions/update_functions.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# LGSM fn_update_functions function -# Author: Daniel Gibbs -# Website: https://gameservermanagers.com -lgsm_version="210516" - -# Description: REDIRECT FUNCTION to new command_update_functions.sh - -command_update_functions.sh(){ -functionfile="${FUNCNAME}" -fn_runfunction -} - -command_update_functions.sh - diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh index 9ad4c7baa..72ea95c5c 100644 --- a/lgsm/functions/check_config.sh +++ b/lgsm/functions/check_config.sh @@ -15,7 +15,8 @@ if [ ! -e "${servercfgfullpath}" ]; then echo "${servercfgfullpath}" fn_script_log_warn "Configuration file missing!" fn_script_log_warn "${servercfgfullpath}" - sleep 2 + sleep 1 + install_config.sh fi fi diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index ca6fe9607..489e0a8f4 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -1,6 +1,7 @@ #!/bin/bash # LGSM command_backup.sh function # Author: Daniel Gibbs +# Contributor: UltimateByte # Website: https://gameservermanagers.com # Description: Creates a .tar.gz file in the backup directory. @@ -9,51 +10,188 @@ local commandaction="Backup" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh -info_distro.sh -backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" -fn_print_dots "" -sleep 0.5 -fn_print_info_nl "A total of ${rootdirduexbackup} will be compressed into the following backup:" -echo "${backupdir}/${backupname}.tar.gz" -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 -echo "" -check_status.sh -if [ "${status}" != "0" ]; 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_script_log "Entering backup" + +# Check if a backup is pending or has been aborted using .backup.lock +fn_check_pending_backup(){ + if [ -f "${tmpdir}/.backup.lock" ]; then + fn_print_error "A backup is currently running or has been aborted." + fn_print_info_nl "If you keep seing this message, remove the following file:" + echo "${tmpdir}/.backup.lock" + fn_script_log_fatal "A backup is currently running or has been aborted." + fin_script_log_info "If you keep seing this message, remove the following file: ${tmpdir}/.backup.lock" + core_exit.sh + fi +} + +# Initialization +fn_backup_init(){ + fn_print_dots "" + sleep 0.5 + # Prepare backup file name with servicename current date + backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" + # Tells how much will be compressed using rootdirduexbackup value from info_distro and prompt for continue + info_distro.sh + fn_print_info_nl "A total of ${rootdirduexbackup} will be compressed into the following backup:" + fn_script_log "A total of ${rootdirduexbackup} will be compressed into the following backup: ${backupdir}/${backupname}.tar.gz" + echo "${backupdir}/${backupname}.tar.gz" +} + + +# Check if server is started and wether to stop it +fn_backup_stop_server(){ + check_status.sh + # Server is stopped + if [ "${status}" == "0" ]; then + serverstopped="no" + # Server is up and stoponbackup is off + elif [ "${stoponbackup}" == "off" ]; then + serverstopped="no" + fn_print_info_nl "${servicename} is started and will not be stopped." + fn_print_information_nl "It is advised to stop the server to prevent a file changes and tar errors." + fn_script_log_info "${servicename} is started during the backup" + fn_script_log_info "It is advised to stop the server to prevent a file changes and tar errors." + # Server is up and will be stopped if stoponbackup has no value or anything else than "off" + else + fn_print_warning_nl "${servicename} will be stopped during the backup." + fn_script_log_warn "${servicename} will be stopped during the backup" + sleep 4 + serverstopped="yes" + exitbypass=1 + command_stop.sh + fi +} +# Create required folders +fn_backup_directories(){ fn_print_dots "Backup in progress, please wait..." -fn_script_log_info "Started backup" -sleep 2 +fn_script_log_info "Initiating backup" +sleep 0.5 + +# Directories creation +# Create backupdir if it doesn't exist if [ ! -d "${backupdir}" ]; then + fn_print_info_nl "Creating ${backupdir}" + fn_script_log_info "Creating ${backupdir}" mkdir "${backupdir}" fi +# Create tmpdir if it doesn't exist +if [ -n "${tmpdir}" ]&&[ ! -d "${tmpdir}" ]; then + fn_print_info_nl "Creating ${tmpdir}" + fn_script_log "Creating ${tmpdir}" + mkdir -p "${tmpdir}" +fi +} + +# Create lockfile +fn_backup_create_lockfile(){ +if [ -d "${tmpdir}" ]; then + touch "${tmpdir}/.backup.lock" + fn_script_log "Lockfile created" +fi +} + +# Compressing files +fn_backup_compression(){ +fn_script_log "Compressing ${rootdirduexbackup}" tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* +fn_script_log "Compression over" +} + +# Check tar exit code and set the result +fn_check_tar_exit(){ if [ $? == 0 ]; then - fn_print_ok_nl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" - fn_script_log_pass "Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" + backupresult="PASS" +else + backupresult="FAIL" +fi +} + +# Remove lockfile +fn_backup_remove_lockfile(){ +if [ -d "${tmpdir}" ]&&[ -f "${tmpdir}/.backup.lock" ]; then + rm "${tmpdir}/.backup.lock" + fn_script_log "Lockfile removed" +fi +} + +fn_backup_summary(){ + # when backupresult="PASS" + if [ "${backupresult}" == "PASS" ]; then + fn_print_ok_nl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" + fn_script_log_pass "Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" + # When backupresult="FAIL" + elif [ "${backupresult}" == "FAIL" ]; then + fn_print_error_nl "Backup failed: ${backupname}.tar.gz" + fn_script_log_error "Backup failed: ${backupname}.tar.gz" + core_exit.sh + else + fn_print_error_nl "Could not determine compression result." + fn_script_log_error "Could not determine compression result." + core_exit.sh + fi +} + + +# Clear old backups according to maxbackups and maxbackupdays variables +fn_backup_clearing(){ +# How many backups there are +backupscount=$(find "${backupdir}/" -type f -name "*.tar.gz"|wc -l) +# How many backups exceed maxbackups +backupquotadiff=$((backupscount-maxbackups)) +# How many backups exceed maxbackupdays +backupsoudatedcount=$(find "${backupdir}"/ -type f -name "*.tar.gz" -mtime +"${maxbackupdays}"|wc -l) +# If backup variables are set +if [ -n "${maxbackupdays}" ]&&[ -n "${maxbackups}" ]; then + # If anything can be cleared + if [ "${backupquotadiff}" -gt "0" ]||[ "${backupsoudatedcount}" -gt "0" ]; then + # If maxbackups greater or equal than backupsoutdatedcount, then it is used over maxbackupdays + if [ "${backupquotadiff}" -gt "${backupsoudatedcount}" ]||[ "${backupquotadiff}" -eq "${backupsoudatedcount}" ]; then + # Display how many backups will be cleared + fn_print_info_nl "${backupquotadiff} backup(s) exceed max ${maxbackups} and will be cleared." + fn_script_log "${backupquotadiff} backup(s) exceed max ${maxbackups} and will be cleared" + sleep 2 + # Clear over quota backups + find "${backupdir}"/ -type f -name "*.tar.gz" -printf '%T@ %p\n' | sort -rn | tail -${backupquotadiff} | cut -f2- -d" " | xargs rm + fn_print_ok_nl "Cleared ${backupquotadiff} backup(s)." + fn_script_log "Cleared ${backupquotadiff} backup(s)" + # If maxbackupdays is used over maxbackups + elif [ "${backupquotadiff}" -lt "${backupsoudatedcount}" ]; then + # Display how many backups will be cleared + fn_print_info_nl "${backupsoudatedcount} backup(s) older than ${maxbackupdays} days will be cleared." + fn_script_log "${backupsoudatedcount} backup(s) older than ${maxbackupdays} days will be cleared" + find "${backupdir}"/ -type f -mtime +"${maxbackupdays}" -exec rm -f {} \; + fn_print_ok_nl "Cleared ${backupsoudatedcount} backup(s)." + fn_script_log_pass "Cleared ${backupsoudatedcount} backup(s)" + else + fn_script_log "No backups older than ${maxbackupdays} days were found" + fi + fi else - fn_print_error_nl "Backup failed: ${backupname}.tar.gz" - fn_script_log_error "Backup failed: ${backupname}.tar.gz" + fn_script_log "No backups to clear since maxbackupdays and maxbackups variables are not set" fi -sleep 1 -echo "" +} + +# Restart the server if it was stopped for the backup +fn_backup_start_back(){ + if [ "${serverstopped}" == "yes" ]; then + exitbypass=1 + command_start.sh + fi +} + +# Run functions +fn_check_pending_backup +fn_backup_init +fn_backup_stop_server +fn_backup_directories +fn_backup_create_lockfile +fn_backup_compression +fn_check_tar_exit +fn_backup_remove_lockfile +fn_backup_summary +fn_backup_clearing +fn_backup_start_back + +sleep 0.5 core_exit.sh diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 9cf79be84..af30b9a27 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -292,7 +292,7 @@ fn_details_ports(){ parmslocation="${red}UNKNOWN${default}" # engines that require editing in the config file - local ports_edit_array=( "avalanche" "dontstarve" "idtech3" "lwjgl2" "projectzomboid" "idtech3_ql" "refractor" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" ) + local ports_edit_array=( "avalanche" "dontstarve" "idtech2" "idtech3" "lwjgl2" "projectzomboid" "idtech3_ql" "refractor" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" ) for port_edit in "${ports_edit_array[@]}" do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then @@ -386,6 +386,24 @@ fn_details_refractor(){ } | column -s $'\t' -t } +fn_details_quake2(){ + echo -e "netstat -atunp | grep quake2" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + +fn_details_quake3(){ + echo -e "netstat -atunp | grep q3ded" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + fn_details_quakelive(){ echo -e "netstat -atunp | grep qzeroded" echo -e "" @@ -665,6 +683,10 @@ fn_display_details() { fn_details_ark elif [ "${gamename}" == "Hurtworld" ]; then fn_details_hurtworld + elif [ "${gamename}" == "Quake 2" ]; then + fn_details_quake2 + elif [ "${gamename}" == "Quake 3: Arena" ]; then + fn_details_quake3 elif [ "${gamename}" == "Quake Live" ]; then fn_details_quakelive elif [ "${gamename}" == "TeamSpeak 3" ]; then diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 5b741a126..4eae90e17 100644 --- a/lgsm/functions/command_install.sh +++ b/lgsm/functions/command_install.sh @@ -18,7 +18,7 @@ check_deps.sh if [ "${gamename}" == "Unreal Tournament 2004" ]; then install_server_files.sh install_ut2k4_key.sh -elif [ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Mumble" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then installer=1 install_server_files.sh elif [ -n "${appid}" ]; then diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 217650dbc..da5a0d710 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -622,7 +622,7 @@ case "${getopt}" in if [ "${gamename}" == "Mumble" ]; then fn_getopt_mumble -elif [ "${gamename}" == "Battlefield: 1942" ]|| [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_getopt_generic_no_update elif [ "${engine}" == "lwjgl2" ]; then fn_getopt_minecraft diff --git a/lgsm/functions/fn_functions b/lgsm/functions/fn_functions index 0d024beb1..758af3dbc 100644 --- a/lgsm/functions/fn_functions +++ b/lgsm/functions/fn_functions @@ -2,7 +2,7 @@ # LGSM fn_functions function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="210516" +lgsm_version="211016" # Description: Redirects to new core_functions.sh diff --git a/lgsm/functions/fn_getopt b/lgsm/functions/fn_getopt index cec7b51b4..0302cf1d5 100644 --- a/lgsm/functions/fn_getopt +++ b/lgsm/functions/fn_getopt @@ -2,7 +2,7 @@ # LGSM fn_getopt function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="210516" +lgsm_version="211016" # Description: Redirect to new core_getopt.sh diff --git a/lgsm/functions/fn_update_functions b/lgsm/functions/fn_update_functions index 7c3be31e6..a424d3352 100644 --- a/lgsm/functions/fn_update_functions +++ b/lgsm/functions/fn_update_functions @@ -2,7 +2,7 @@ # LGSM fn_update_functions function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -lgsm_version="210516" +lgsm_version="211016" # 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 53df875b1..a242c89bb 100644 --- a/lgsm/functions/gsquery.py +++ b/lgsm/functions/gsquery.py @@ -22,6 +22,8 @@ class GameServer: self.query_prompt_string = b'\xFE\xFD\x09\x10\x20\x30\x40' elif self.option.engine == 'goldsource': self.query_prompt_string = b'\xFF\xFF\xFF\xFFTSource Engine Query\0' + elif self.option.engine == 'idtech2': + self.query_prompt_string = b'\xff\xff\xff\xffstatus\x00' elif self.option.engine == 'idtech3': self.query_prompt_string = b'\xff\xff\xff\xffgetstatus' elif self.option.engine == 'quakelive': @@ -109,7 +111,7 @@ if __name__ == '__main__': action='store', dest='engine', default=False, - help='Engine type: avalanche, goldsource, idtech3, realvirtuality, quakelive, refractor, spark, source, unity3d, unreal, unreal2.' + help='Engine type: avalanche, goldsource, idtech2, idtech3, idtech3_ql, realvirtuality, quakelive, refractor, spark, source, unity3d, unreal, unreal2.' ) parser.add_option( '-v', '--verbose', diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index d5f283404..7982ebd69 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -154,6 +154,44 @@ fn_info_config_projectzomboid(){ fi } +fn_info_config_quake2(){ + if [ ! -f "${servercfgfullpath}" ]; then + rconpassword="${unavailable}" + servername="${unavailable}" + serverpassword="${unavailable}" + slots="${zero}" + else + rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + slots=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + + # Not Set + rconpassword=${rconpassword:-"NOT SET"} + servername=${servername:-"NOT SET"} + slots=${slots:-"0"} + fi +} + +fn_info_config_quake3(){ + if [ ! -f "${servercfgfullpath}" ]; then + rconpassword="${unavailable}" + servername="${unavailable}" + serverpassword="${unavailable}" + slots="${zero}" + else + rconpassword=$(grep "zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + serverpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + slots=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + + # Not Set + rconpassword=${rconpassword:-"NOT SET"} + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + slots=${slots:-"0"} + fi +} + fn_info_config_quakelive(){ if [ ! -f "${servercfgfullpath}" ]; then rconpassword="${unavailable}" @@ -475,6 +513,12 @@ elif [ "${gamename}" == "Battlefield: 1942" ]; then # Dont Starve Together elif [ "${engine}" == "dontstarve" ]; then fn_info_config_dontstarve +# Quake 2 +elif [ "${gamename}" == "Quake 2" ]; then + fn_info_config_quake2 +# Quake 3 +elif [ "${gamename}" == "Quake 3: Arena" ]; then + fn_info_config_quake3 # Quake Live elif [ "${gamename}" == "Quake Live" ]; then fn_info_config_quakelive diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index a203a2c47..f526b4328 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -73,6 +73,9 @@ physmemtotalmb=$(free -m | awk '/Mem:/ {print $2}') physmemused=$(free ${humanreadable} | awk '/Mem:/ {print $3}') physmemfree=$(free ${humanreadable} | awk '/Mem:/ {print $4}') physmemcached=$(free ${humanreadable} | awk '/cache:/ {print $4}') +if [ -z "${physmemcached}" ]; then + physmemcached=$(free ${humanreadable} | awk '/Mem:/ {print $5}') +fi swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}') swapused=$(free ${humanreadable} | awk '/Swap:/ {print $3}') swapfree=$(free ${humanreadable} | awk '/Swap:/ {print $4}') @@ -105,19 +108,21 @@ fi ## Backup info if [ -d "${backupdir}" ]; then - # used space in backups dir. + # Ued space in backups dir. backupdirdu=$(du -sh "${backupdir}" | awk '{print $1}') + # If no backup dir, size is 0M if [ -z "${backupdirdu}" ]; then backupdirdu="0M" fi - - # number of backups. - backupcount=$(find "${backupdir}"/*.tar.gz | wc -l) - # most recent backup. - lastbackup=$(ls -t "${backupdir}"/*.tar.gz | head -1) - # date of most recent backup. - lastbackupdate=$(date -r "${lastbackup}") - # size of most recent backup. - lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}') - + # If there are backups in backup dir. + if [ $(find "${backupdir}" -name "*.tar.gz" | wc -l) -ne "0" ]; then + # number of backups. + backupcount=$(find "${backupdir}"/*.tar.gz | wc -l) + # most recent backup. + lastbackup=$(ls -t "${backupdir}"/*.tar.gz | head -1) + # date of most recent backup. + lastbackupdate=$(date -r "${lastbackup}") + # size of most recent backup. + lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}') + fi fi diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 655402584..f7f333d63 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -41,6 +41,12 @@ elif [ "${gamename}" == "Mumble" ]; then elif [ "${gamename}" == "No More Room in Hell" ]; then glibcrequired="2.15" glibcfix="yes" +elif [ "${gamename}" == "Quake 2" ]; then + glibcrequired="2.0" + glibcfix="no" +elif [ "${gamename}" == "Quake 3: Arena" ]; then + glibcrequired="2.1" + glibcfix="no" elif [ "${gamename}" == "Quake Live" ]; then glibcrequired="2.15" glibcfix="no" @@ -101,7 +107,6 @@ elif [ "${gamename}" == "TeamSpeak 3" ]; then elif [ "${gamename}" == "Mumble" ]; then glibcrequired="NOT REQUIRED" glibcfix="no" - elif [ "${engine}" == "refractor" ]; then glibcrequired="2.0" glibcfix="no" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 5c241aec5..eebf3e7c0 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -274,7 +274,6 @@ elif [ "${gamename}" == "Mumble" ]; then array_configs+=( murmur.ini ) fn_fetch_default_config fn_default_config_remote - fn_set_config_vars elif [ "${gamename}" == "Natural Selection 2" ]; then : elif [ "${gamename}" == "NS2: Combat" ]; then @@ -291,6 +290,18 @@ elif [ "${gamename}" == "Project Zomboid" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Quake 2" ]; then + gamedirname="Quake2" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars +elif [ "${gamename}" == "Quake 3: Arena" ]; then + gamedirname="Quake3Arena" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Quake Live" ]; then gamedirname="QuakeLive" array_configs+=( server.cfg ) @@ -307,10 +318,10 @@ elif [ "${gamename}" == "Ricochet" ]; then fn_set_config_vars elif [ "${gamename}" == "Rust" ]; then gamedirname="Rust" + fn_check_cfgdir array_configs+=( server.cfg ) fn_fetch_default_config fn_default_config_remote - fn_set_config_vars elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then gamedirname="SeriousSam3BFE" array_configs+=( server.ini ) @@ -346,7 +357,6 @@ elif [ "${gamename}" == "TeamSpeak 3" ]; then array_configs+=( ts3server.ini ) fn_fetch_default_config fn_default_config_remote - fn_set_config_vars elif [ "${gamename}" == "Teeworlds" ]; then gamedirname="Teeworlds" array_configs+=( server.cfg ctf.cfg dm.cfg duel.cfg tdm.cfg ) @@ -390,4 +400,3 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_default_config_remote fn_set_config_vars fi - diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index e2778ae64..43e8f2567 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -23,6 +23,10 @@ fn_install_server_files(){ fileurl="http://files.gameservermanagers.com/UnrealTournament/UnrealTournament-Server-XAN-3045522-Linux.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-XAN-3045522-Linux.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="553fed5645a9fc623e92563049bf79f6" elif [ "${gamename}" == "GoldenEye: Source" ]; then fileurl="http://files.gameservermanagers.com/GoldenEyeSource/GoldenEye_Source_v5.0.1_full_server_linux.tar.bz2"; filedir="${tmpdir}"; filename="GoldenEye_Source_v5.0.1_server_full_Linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="ea227a150300abe346e757380325f84c" + elif [ "${gamename}" == "Quake 2" ]; then + fileurl="http://files.gameservermanagers.com/Quake2/quake2-3.20-glibc-i386-full-linux2.0.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="quake2-3.20-glibc-i386-full-linux2.0.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="0b8c7e2d51f40b56b328c69e986e7c5f" + elif [ "${gamename}" == "Quake 3: Arena" ]; then + fileurl="http://files.gameservermanagers.com/Quake3/quake3-1.32c-x86-full-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="quake3-1.32c-x86-full-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="fd7258d827474f67663dda297bff4306" fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index 4bf9ab903..32ad0deae 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -29,6 +29,9 @@ 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 common logs directories + commonlogs="${systemdir}/logs" + commonsourcelogs="${systemdir}/*/logs" # Set addon logs directories sourcemodlogdir="${systemdir}/addons/sourcemod/logs" ulxlogdir="${systemdir}/data/ulx_logs" @@ -57,6 +60,17 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}"|wc -l) find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; fi + # Common logfiles + if [ -d ${commonlogs} ]; then + find "${commonlogs}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}" + smcount=$(find "${commonlogs}"/ -type f -mtime +"${logdays}"|wc -l) + find "${commonlogs}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; + fi + if [ -d ${commonsourcelogs} ]; then + find "${commonsourcelogs}"/* -type f -mtime +"${logdays}"| tee >> "${scriptlog}" + smcount=$(find "${commonsourcelogs}"/* -type f -mtime +"${logdays}"|wc -l) + find "${commonsourcelogs}"/* -mtime +"${logdays}" -type f -exec rm -f {} \; + fi # Source addons logfiles if [ "${engine}" == "source" ]; then # SourceMod logfiles