diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 07f7d555d..7ec533282 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index efba11b51..bcabf3e27 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/Arma3/arma3server b/Arma3/arma3server index 62a760104..82484e3e4 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 14995f4cf..5aca78b93 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 91fe6bb56..5026662a4 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index e5e071271..946e6c2d9 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 8ff2d159c..8348aafd2 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 3473eed80..3f08a563f 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/CounterStrike/csserver b/CounterStrike/csserver index e2cdde7fc..ae04a04d6 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="060816" +version="211016" #### Variables #### diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 895ec1583..fb6971bbc 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 87425d00a..b5e93a15e 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index e6994789e..8faed4600 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index f6cd2b34e..092374517 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 342ccc97a..f147c480d 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 7440b369f..c5baebe29 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index b987c9685..8c90086d0 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index e96d304b8..2b6805c38 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 4b8b531e9..ad9232079 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 20e28b2d4..4251c1093 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 8a9fa69c5..d96a076c0 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index edc225016..571600dc7 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 081362d2a..9b53028ae 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="300816" +version="211016" #### Variables #### diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index ff324c434..3e3ac1001 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 2716a27e9..bbdcd7d2f 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 0a45df162..b51756a58 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 2e28481b6..90c88c882 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/Insurgency/insserver b/Insurgency/insserver index ba49fb494..bf25a1e16 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161001" +version="211016" #### Variables #### diff --git a/JustCause2/jc2server b/JustCause2/jc2server index af5e1e0af..069d8d5cd 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 09ad60899..43fb5a3bf 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index d05cd9a79..937d5eb3a 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index bddcaae9e..3a26a1442 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 6317fb9bc..859d1f9dd 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 #### @@ -91,36 +91,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 4057d2825..7decb653e 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="290716" +version="211016" #### Variables #### @@ -59,7 +59,7 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" executable="./murmur.x86" -servercfg="murmur.ini" +servercfg="${servicename}.ini" servercfgdefault="murmur.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 4dbc1e276..923858313 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 54b6ed226..76ca3ae37 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210916" +version="211016" #### Variables #### diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index be02bfc0e..abdba83e3 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 5013110e2..913248223 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 5074af33e..870cd4e50 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 143c382c6..d0af5d50f 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### 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 "<hostname>" +set rcon_password "<rconpassword>" +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 "<hostname>" +set sv_maxclients 16 +set g_motd "LGSM Quake3 Server" +set g_forcerespawn 15 +set rconpassword "<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..ed96114f4 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/QuakeWorld/cfg/lgsm-default.cfg b/QuakeWorld/cfg/lgsm-default.cfg new file mode 100644 index 000000000..e3da2497b --- /dev/null +++ b/QuakeWorld/cfg/lgsm-default.cfg @@ -0,0 +1,26 @@ +// server info +hostname "<hostname>" // server name shown in server browsers +rcon_password "<rconpassword>" +sv_admininfo "lgsm <lgsm@example.com>" // admin name shown in server browsers + +// motd (max 15 rows) - this is the welcome message displayed when you connect to a server +set k_motd1 "<hostname>" +set k_motd2 " " +set k_motd3 "Available game modes:" +set k_motd4 "1on1, 2on2, 4on4, 10on10, ffa, ctf" +//set k_motd5 "line 5" // etc.. + +set k_motd_time "5" // time motd is displayed in seconds + + +// edit the lines below if you want different gamemodes on this port +// matchless mode +set k_matchless 0 // run ktx as a regular match server or as a matchless (ffa) server (0 = regular, 1 = matchless) +set k_use_matchless_dir 1 // use configs/usermodes/matchless instead of [...]/ffa (0 = no, 1 = yes) + +// free modes +set k_defmode 2on2 // default mode on server +set k_allowed_free_modes 255 // allowed free modes (bit mask): + // 1=1on1, 2=2on2, 4=3on3, 8=4on4, 16=10on10, 32=ffa 64=ctf 128=hoonymode +set k_defmap dm4 // server homemap. server will change to this when last player leaves the server +set k_mode 2 // server mode (1 = duel, 2 = team, 3 = ffa, 4 = ctf) diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver new file mode 100644 index 000000000..78449e81f --- /dev/null +++ b/QuakeWorld/qwserver @@ -0,0 +1,144 @@ +#!/bin/bash +# Quake World (nQuake) +# 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 +ip="0.0.0.0" +port="27500" + +fn_parms(){ +parms="-port ${port} -game ktx +exec ${servercfg}" +} + +#### 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="quakeworld_server" +gamename="QuakeWorld" +engine="quake" + +# 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}/ktx" +executabledir="${filesdir}" +executable="./mvdsv" +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/RedOrchestra/roserver b/RedOrchestra/roserver index 66b85d98e..6d4082ec6 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index ff5862808..c80e188e9 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/Rust/rustserver b/Rust/rustserver index 6e5f8f76a..9196c1ec0 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 35b78d831..21dfeb281 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/Starbound/sbserver b/Starbound/sbserver index 197d93ee3..5b572669d 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index c89ffb88d..59b9c750e 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 972e60903..b16193239 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="160916" +version="211016" #### Variables #### diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 4a9496d35..cf754b700 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 2c0af6bd5..527b7324e 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="290716" +version="211016" #### Variables #### diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 8ab31bbcb..a16daae1e 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index fba75083f..7811110cf 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index a5ff70a61..ff84f9979 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 3c82b7e7b..3c6b76cc6 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 780da1fb8..5788b40ef 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 771882279..652ac3772 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 35642cdd6..f400c20e6 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="211016" #### Variables #### 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.sh b/lgsm/functions/check.sh index 751652c2f..25fead75b 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -11,6 +11,7 @@ local commandname="CHECK" # check.sh selects which checks to run by using arrays check_root.sh +check_tmuxception.sh check_permissions.sh if [ "${function_selfname}" != "command_install.sh" ]&&[ "${function_selfname}" != "command_update_functions.sh" ]; then diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 3b5e52005..1411e649c 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 -# Description: Checks ownership & permissions of scripts, files and folders. +# Description: Checks ownership & permissions of scripts, files and directories. local commandname="CHECK" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" @@ -66,7 +66,7 @@ fn_check_permissions(){ # Check rootdir permissions if [ -n "${rootdir}" ]; then - # Get permission numbers on folder under the form 775 + # Get permission numbers on directory under the form 775 rootdirperm="$(stat -c %a "${rootdir}")" # Grab the first and second digit for user and group permission userrootdirperm="${rootdirperm:0:1}" @@ -74,12 +74,56 @@ fn_check_permissions(){ if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then fn_print_fail_nl "Permissions issues found" fn_script_log_fatal "Permissions issues found" - fn_print_information_nl "The following directorys does not have the correct permissions:" - fn_script_log_info "The following directorys does not have the correct permissions:" + fn_print_information_nl "The following directory does not have the correct permissions:" + fn_script_log_info "The following directory does not have the correct permissions:" + fn_script_log_info "${rootdir}" ls -l "${rootdir}" core_exit.sh fi fi + # Check if executable is executable and attempt to fix it + # First get executable name + execname="$(basename "${executable}")" + if [ -f "${executabledir}/${execname}" ]; then + # Get permission numbers on file under the form 775 + execperm="$(stat -c %a "${executabledir}/${execname}")" + # Grab the first and second digit for user and group permission + userexecperm="${execperm:0:1}" + groupexecperm="${execperm:1:1}" + # Check for invalid user permission + if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then + # If user permission is invalid, then check for invalid group permissions + if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then + # If permission issues are found + fn_print_warn_nl "Permissions issue found" + fn_script_log_warn "Permissions issue found" + fn_print_information_nl "The following file is not executable:" + ls -l "${executabledir}/${execname}" + fn_script_log_info "The following file is not executable:" + fn_script_log_info "${executabledir}/${execname}" + fn_print_information_nl "Applying chmod u+x,g+x ${executabledir}/${execname}" + fn_script_log_info "Applying chmod u+x,g+x ${execperm}" + # Make the executable executable + chmod u+x,g+x "${executabledir}/${execname}" + # Second check to see if it's been successfully applied + # Get permission numbers on file under the form 775 + execperm="$(stat -c %a "${executabledir}/${execname}")" + # Grab the first and second digit for user and group permission + userexecperm="${execperm:0:1}" + groupexecperm="${execperm:1:1}" + if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then + if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then + # If errors are still found + fn_print_fail_nl "The following file could not be set executable:" + ls -l "${executabledir}/${execname}" + fn_script_log_warn "The following file could not be set executable:" + fn_script_log_info "${executabledir}/${execname}" + core_exit.sh + fi + fi + fi + fi + fi } fn_check_ownership diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh index f68fd9a52..4a8a381b4 100644 --- a/lgsm/functions/check_status.sh +++ b/lgsm/functions/check_status.sh @@ -21,9 +21,11 @@ if [ "${gamename}" == "TeamSpeak 3" ]; then fi elif [ "${gamename}" == "Mumble" ]; then + # Get config info + info_config.sh # 1: Server is listening # 0: Server is not listening, considered closed - mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep 64738 | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }') + mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep ${port} | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }') if [ -z "${mumblepid}" ]; then status=0 else diff --git a/lgsm/functions/check_system_requirements.sh b/lgsm/functions/check_system_requirements.sh index a46c3d0e3..3040a8406 100644 --- a/lgsm/functions/check_system_requirements.sh +++ b/lgsm/functions/check_system_requirements.sh @@ -14,14 +14,13 @@ info_distro.sh if [ "${gamename}" == "Rust" ]; then ramrequirementmb="4000" ramrequirementgb="4" -fi - -if [ "${gamename}" == "ARMA 3" ]; then +elif [ "${gamename}" == "ARMA 3" ]; then ramrequirementmb="1000" ramrequirementgb="1" -fi - -if [ "${gamename}" == "Minecraft" ]; then +elif [ "${gamename}" == "Minecraft" ]; then + ramrequirementmb="1000" + ramrequirementgb="1" +elif [ "${gamename}" == "Natural Selection 2" ]||[ "${gamename}" == "NS2: Combat" ]; then ramrequirementmb="1000" ramrequirementgb="1" fi diff --git a/lgsm/functions/check_tmuxception.sh b/lgsm/functions/check_tmuxception.sh new file mode 100644 index 000000000..d23fd88a4 --- /dev/null +++ b/lgsm/functions/check_tmuxception.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# LGSM check_config.sh function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: https://gameservermanagers.com +# Description: Checks if run from tmux or screen + +local commandname="check" + +fn_check_is_in_tmux(){ + if [ -n "${TMUX}" ];then + fn_print_fail_nl "tmuxception error: Sorry Cobb you cannot start a tmux session inside of a tmux session." + fn_script_log_fatal "tmuxception error: Attempted to start a tmux session inside of a tmux session." + fn_print_information_nl "LGSM creates a tmux session when starting the server." + echo "It is not possible to run a tmux session inside another tmux session" + echo "https://github.com/GameServerManagers/LinuxGSM/wiki/Tmux#tmuxception" + core_exit.sh + fi +} +fn_check_is_in_screen(){ + if [ "$TERM" == "screen" ];then + fn_print_fail_nl "tmuxception error: Sorry Cobb you cannot start a tmux session inside of a screen session." + fn_script_log_fatal "tmuxception error: Attempted to start a tmux session inside of a screen session." + fn_print_information_nl "LGSM creates a tmux session when starting the server." + echo "It is not possible to run a tmux session inside screen session" + echo "https://github.com/GameServerManagers/LinuxGSM/wiki/Tmux#tmuxception" + core_exit.sh + fi +} + +fn_check_is_in_tmux +fn_check_is_in_screen diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index e9f8f6b4c..23162ac97 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -218,7 +218,9 @@ fn_details_script(){ echo -e "${blue}Pushbullet alert:\t${default}${pushbulletalert}" # Update on start - echo -e "${blue}Update on start:\t${default}${updateonstart}" + if [ -n "${updateonstart}" ]; then + echo -e "${blue}Update on start:\t${default}${updateonstart}" + fi # Script location echo -e "${blue}Location:\t${default}${rootdir}" @@ -227,6 +229,8 @@ fn_details_script(){ if [ -n "${servercfgfullpath}" ]; then if [ -f "${servercfgfullpath}" ]; then echo -e "${blue}Config file:\t${default}${servercfgfullpath}" + elif [ -d "${servercfgfullpath}" ]; then + echo -e "${blue}Config dir:\t${default}${servercfgfullpath}" else echo -e "${blue}Config file:\t${default}${red}${servercfgfullpath}${default} (${red}FILE MISSING${default})" fi @@ -290,7 +294,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" "idtech3_ql" "lwjgl2" "projectzomboid" "quake" "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 @@ -393,6 +397,33 @@ 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_quake(){ + echo -e "netstat -atunp | grep mvdsv" + 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 "" @@ -435,7 +466,7 @@ fn_details_source(){ 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" + echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp" fi echo -e "< Client\tOUTBOUND\t${clientport}\tudp" } | column -s $'\t' -t @@ -672,6 +703,12 @@ fn_display_details() { fn_details_ark elif [ "${gamename}" == "Hurtworld" ]; then fn_details_hurtworld + elif [ "${gamename}" == "QuakeWorld" ]; then + fn_details_quake + 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_dev_detect_glibc.sh b/lgsm/functions/command_dev_detect_glibc.sh index ce27d4875..7703fba34 100644 --- a/lgsm/functions/command_dev_detect_glibc.sh +++ b/lgsm/functions/command_dev_detect_glibc.sh @@ -37,4 +37,4 @@ while IFS= read -r -d $'\0' line; do done echo "" cat "${tmpdir}/detect_glibc.tmp"|sort|uniq|sort -r --version-sort -#rm "${tmpdir}/detect_glibc.tmp" \ No newline at end of file +rm "${tmpdir}/detect_glibc.tmp" \ No newline at end of file diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index f2728ea74..c66834b98 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 -# Description: Creates a FastDL folder. +# Description: Creates a FastDL directory. local commandname="FASTDL" local commandaction="FastDL" @@ -52,7 +52,7 @@ fn_fastdl_init(){ done fn_script_log "Initiating FastDL creation" - # Check and create folders + # Check and create directories if [ ! -d "${webdir}" ]; then echo "" fn_print_info "Creating FastDL directories" @@ -67,7 +67,7 @@ fn_fastdl_init(){ echo -en "\n" fi if [ ! -d "${fastdldir}" ]; then - # No folder, won't ask for removing old ones + # No directory, won't ask for removing old ones newfastdl=1 fn_print_dots "Creating fastdl directory" sleep 0.5 @@ -88,7 +88,7 @@ fn_fastdl_config(){ fn_script_log "Configuration" sleep 2 echo -en "\n" - # Prompt for clearing old files if folder was already here + # Prompt for clearing old files if directory was already here if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then fn_print_dots while true; do @@ -133,12 +133,12 @@ fn_fastdl_gmod_config(){ fn_clear_old_fastdl(){ # Clearing old FastDL if user answered yes if [ "${clearoldfastdl}" == "on" ]; then - fn_print_info "Clearing existing FastDL folder" - fn_script_log "Clearing existing FastDL folder" + fn_print_info "Clearing existing FastDL directory" + fn_script_log "Clearing existing FastDL directory" sleep 0.5 rm -R "${fastdldir:?}"/* - fn_print_ok "Old FastDL folder cleared" - fn_script_log "Old FastDL folder cleared" + fn_print_ok "Old FastDL directory cleared" + fn_script_log "Old FastDL directory cleared" sleep 1 echo -en "\n" fi @@ -152,7 +152,7 @@ fn_gmod_fastdl(){ sleep 1 echo -en "\n" - # No choice to cd to the directory, as find can't then display relative folder + # No choice to cd to the directory, as find can't then display relative directory cd "${systemdir}" # Map Files @@ -221,7 +221,7 @@ fn_gmod_fastdl(){ # Going back to rootdir in order to prevent mistakes cd "${rootdir}" - # Correct addons folder structure for FastDL + # Correct addons directory structure for FastDL if [ -d "${fastdldir}/addons" ]; then fn_print_info "Adjusting addons' file structure" fn_script_log "Adjusting addon's file structure" @@ -233,7 +233,7 @@ fn_gmod_fastdl(){ echo -en "\n" fi - # Correct content that may be into a lua folder by mistake like some darkrpmodification addons + # Correct content that may be into a lua directory by mistake like some darkrpmodification addons if [ -d "${fastdldir}/lua" ]; then fn_print_dots "Typical DarkRP shit detected, fixing" sleep 2 @@ -244,7 +244,7 @@ fn_gmod_fastdl(){ fi } -# Generate lua file that will force download any file into the FastDL folder +# Generate lua file that will force download any file into the FastDL directory fn_lua_fastdl(){ # Remove lua file if luaressource is turned off and file exists echo "" diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 030b5a9dc..fad00a977 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" ]||[ "${gamename}" == "Factorio" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Factorio" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${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/command_monitor.sh b/lgsm/functions/command_monitor.sh index 33b86e55d..b11015e40 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -79,7 +79,7 @@ fn_monitor_tmux(){ fn_print_ok_eol_nl fn_script_log_pass "Checking session: OK" # runs gsquery check on game with specific engines. - local allowed_engines_array=( avalanche goldsource idtech3 idtech3_ql refractor realvirtuality source spark unity3d unreal unreal2 ) + local allowed_engines_array=( avalanche goldsource idtech3 idtech3_ql quake refractor realvirtuality source spark unity3d unreal unreal2 ) for allowed_engine in "${allowed_engines_array[@]}" do if [ "${allowed_engine}" == "${engine}" ]; then diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 08464b405..489013e3d 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -245,8 +245,10 @@ fn_stop_teamspeak3(){ } fn_stop_mumble(){ + # Get needed port info + info_config.sh fn_print_dots "Stopping ${servername}" - mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep 64738 | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }') + mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep "${port}" | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }') kill ${mumblepid} sleep 1 check_status.sh diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index de66fb55f..86779c4d5 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -116,7 +116,7 @@ fn_fetch_core_dl } -# Command +# Commands command_console.sh(){ functionfile="${FUNCNAME}" @@ -258,7 +258,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } -check_tmux.sh(){ +check_tmuxception.sh(){ functionfile="${FUNCNAME}" fn_fetch_function } @@ -299,6 +299,7 @@ functionfile="${FUNCNAME}" fn_fetch_function } + # Fix fix.sh(){ @@ -553,11 +554,6 @@ functionfile="${FUNCNAME}" fn_fetch_function } -fix_ut99.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - # Calls the global Ctrl-C trap core_trap.sh diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index e23ad3111..d07f82d04 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -300,6 +300,8 @@ case "${getopt}" in command_backup.sh;; dev|dev-debug) command_dev_debug.sh;; + c|console) + command_console.sh;; i|install) command_install.sh;; dd|detect-deps) @@ -329,6 +331,7 @@ case "${getopt}" in echo -e "${blue}details\t${default}dt |Displays useful information about the server." echo -e "${blue}postdetails\t${default}pd |Post stripped details to pastebin (for support)" echo -e "${blue}backup\t${default}b |Create archive of the server." + echo -e "${blue}debug\t${default}d |See the output of the server directly to your terminal." echo -e "${blue}install\t${default}i |Install the server." } | column -s $'\t' -t esac @@ -405,7 +408,7 @@ case "${getopt}" in echo -e "${blue}debug\t${default}d |See the output of the server directly to your terminal." echo -e "${blue}install\t${default}i |Install the server." echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - echo -e "${blue}fastdl\t${default}fd |Generates or update a FastDL folder for your server." + echo -e "${blue}fastdl\t${default}fd |Generates or update a FastDL directory for your server." } | column -s $'\t' -t esac } @@ -619,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}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${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..cd46717cd 100644 --- a/lgsm/functions/gsquery.py +++ b/lgsm/functions/gsquery.py @@ -22,8 +22,12 @@ 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 == 'quake': + self.query_prompt_string = b'\xff\xff\xff\xffstatus\x00' elif self.option.engine == 'quakelive': self.query_prompt_string = b'\xFF\xFF\xFF\xFFTSource Engine Query\0' elif self.option.engine == 'realvirtuality': @@ -109,7 +113,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, realvirtuality, quake, 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 dc7486c85..7982ebd69 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -27,15 +27,15 @@ fn_info_config_avalanche(){ slots=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') port=$(grep "BindPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') + ip=$(grep "BindIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/BindIP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + ipsetinconfig=1 + ipinconfigvar="BindIP" + # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} slots=${slots:-"0"} port=${port:-"0"} - - ip=$(grep "BindIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/BindIP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - ipsetinconfig=1 - ipinconfigvar="BindIP" fi } @@ -54,15 +54,15 @@ fn_info_config_bf1942(){ port=$(grep "game.serverPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') queryport="22000" + ip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs) + ipsetinconfig=1 + ipinconfigvar="game.serverIP" + # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} slots=${slots:-"0"} port=${port:-"0"} - - ip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs) - ipsetinconfig=1 - ipinconfigvar="game.serverIP" fi } @@ -112,6 +112,10 @@ fn_info_config_minecraft(){ gamemode=$(grep "gamemode" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') gameworld=$(grep "level-name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/level-name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + ip=$(grep "server-ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server-ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + ipsetinconfig=1 + ipinconfigvar="server-ip" + # Not Set servername=${servername:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} @@ -121,9 +125,6 @@ fn_info_config_minecraft(){ gamemode=${gamemode:-"NOT SET"} gameworld=${gameworld:-"NOT SET"} - ip=$(grep "server-ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server-ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - ipsetinconfig=1 - ipinconfigvar="server-ip" fi } @@ -153,7 +154,25 @@ fn_info_config_projectzomboid(){ fi } -fn_info_config_quakelive(){ +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}" @@ -162,18 +181,38 @@ fn_info_config_quakelive(){ 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 "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - slots=$(grep "sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + 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}" + 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 "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + slots=$(grep "sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') ip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') ipsetinconfig=1 ipinconfigvar="set net_ip" + + # Not Set + rconpassword=${rconpassword:-"NOT SET"} + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + slots=${slots:-"0"} fi } @@ -191,6 +230,9 @@ fn_info_config_wolfensteinenemyterritory(){ serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') slots=$(grep "set sv_maxclients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') + ip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + ipsetinconfig=1 + ipinconfigvar="set net_ip" # Not Set rconpassword=${rconpassword:-"NOT SET"} @@ -198,10 +240,6 @@ fn_info_config_wolfensteinenemyterritory(){ serverpassword=${serverpassword:-"NOT SET"} slots=${slots:-"0"} port=${port:-"27960"} - - ip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - ipsetinconfig=1 - ipinconfigvar="set net_ip" fi } @@ -303,14 +341,14 @@ fn_info_config_teamspeak3(){ queryport=$(grep "query_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') fileport=$(grep "filetransfer_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + ip=$(grep "voice_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/voice_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + ipsetinconfig=1 + ipinconfigvar="voice_ip" + # Not Set port=${port:-"9987"} queryport=${queryport:-"10011"} fileport=${fileport:-"30033"} - - ip=$(grep "voice_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/voice_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - ipsetinconfig=1 - ipinconfigvar="voice_ip" fi } @@ -323,14 +361,14 @@ fn_info_config_mumble(){ port=$(grep "port" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^;/d' -e 's/port//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') queryport="${port}" + ip=$(grep "host=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^;/d' -e 's/host=//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + ipsetinconfig=1 + ipinconfigvar="voice_ip" + # Not Set port=${port:-"64738"} queryport=${queryport:-"64738"} servername="Mumble Port ${port}" - - ip=$(grep "host=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^;/d' -e 's/host=//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - ipsetinconfig=1 - ipinconfigvar="voice_ip" fi } @@ -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 @@ -515,4 +559,4 @@ elif [ "${gamename}" == "7 Days To Die" ]; then fn_info_config_sdtd elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_info_config_wolfensteinenemyterritory -fi +fi \ No newline at end of file diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 3f5740571..fc5ab6b60 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -44,6 +44,12 @@ elif [ "${gamename}" == "Mumble" ]; then elif [ "${gamename}" == "No More Room in Hell" ]; then glibcrequired="2.15" glibcfix="yes" +elif [ "${gamename}" == "Quake 2" ]; then + glibcrequired="NOT REQUIRED" + glibcfix="no" +elif [ "${gamename}" == "Quake 3: Arena" ]; then + glibcrequired="2.1" + glibcfix="no" elif [ "${gamename}" == "Quake Live" ]; then glibcrequired="2.15" glibcfix="no" @@ -80,6 +86,9 @@ elif [ "${engine}" == "spark" ]; then elif [ "${engine}" == "starbound" ]; then glibcrequired="2.17" glibcfix="no" +elif [ "${engine}" == "quake" ]; then + glibcrequired="2.0" + glibcfix="no" elif [ "${engine}" == "terraria" ]; then glibcrequired="2.7" glibcfix="no" @@ -104,7 +113,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/info_parms.sh b/lgsm/functions/info_parms.sh index 7be827c7b..7cfdd8b8b 100644 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -26,17 +26,6 @@ fn_info_config_quakelive(){ rconpassword=${rconpassword:-"NOT SET"} } -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=${port:-"2302"} - queryport=${queryport:-"2303"} - masterport=${masterport:-"2304"} -} - fn_info_config_source(){ defaultmap=${defaultmap:-"NOT SET"} maxplayers=${maxplayers:-"0"} @@ -44,6 +33,16 @@ fn_info_config_source(){ clientport=${clientport:-"0"} } +fn_info_config_spark(){ + # Not Set + port=${port:-"0"} + queryport=$((port + 1)) + maxplayers=${maxplayers:-"0"} + webadminuser=${webadminuser:-"NOT SET"} + webadminpass=${webadminpass:-"NOT SET"} + webadminport=${webadminport:-"0"} +} + fn_info_config_teeworlds(){ if [ ! -f "${servercfgfullpath}" ]; then servername="unnamed server" @@ -139,6 +138,9 @@ elif [ "${engine}" == "seriousengine35" ]; then # Source Engine Games elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then fn_info_config_source +# Spark +elif [ "${engine}" == "spark" ]; then + fn_info_config_spark # Teeworlds elif [ "${engine}" == "teeworlds" ]; then fn_info_config_teeworlds diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 4a96330cd..b3894f950 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -39,8 +39,8 @@ fn_set_config_vars(){ # Checks if cfg dir exists, creates it if it doesn't fn_check_cfgdir(){ if [ ! -d "${servercfgdir}" ]; then - echo "creating ${servercfgdir} config folder." - fn_script_log_info "creating ${servercfgdir} config folder." + echo "creating ${servercfgdir} config directory." + fn_script_log_info "creating ${servercfgdir} config directory." mkdir -pv "${servercfgdir}" fi } @@ -272,7 +272,11 @@ elif [ "${gamename}" == "No More Room in Hell" ]; then fn_default_config_remote fn_set_config_vars elif [ "${gamename}" == "Mumble" ]; then - : + gamedirname="Mumble" + 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 @@ -289,12 +293,30 @@ 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 ) fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "QuakeWorld" ]; then + gamedirname="QuakeWorld" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then : elif [ "${gamename}" == "Ricochet" ]; then @@ -387,5 +409,4 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars -fi - +fi \ No newline at end of file diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index b4a6fa22d..ea580221f 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -23,6 +23,13 @@ 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" + elif [ "${gamename}" == "QuakeWorld" ]; then + fileurl="http://files.gameservermanagers.com/QuakeWorld/nquake.server.linux.083116.full.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="nquake.server.linux.083116.full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="75a409cf08d808f075e4dacdc7b21b78" + fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" @@ -130,4 +137,4 @@ if [ -z "${autoinstall}" ]; then * ) echo "Please answer yes or no.";; esac done -fi +fi \ No newline at end of file diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index b31bdc102..4bf9ab903 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -15,7 +15,7 @@ if [ -n "${consolelog}" ]; then fi fi -# For games not displaying a console, and having logs into their game folder +# For games not displaying a console, and having logs into their game directory 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}" @@ -86,7 +86,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th 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 + # Remove directory if empty if [ ! "$(ls -A "${legacyserverlogdir}")" ]; then rm -rf "${legacyserverlogdir}" fi