From 2a413f411a30f2f0ae382e4f57d3a5cdc35f1d64 Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Wed, 31 Aug 2016 00:50:05 -0400 Subject: [PATCH 001/729] adding QuakeWorld (nQuake) --- QuakeWorld/cfg/lgsm-default.cfg | 26 +++++ QuakeWorld/qwserver.sh | 143 +++++++++++++++++++++++++ lgsm/functions/command_install.sh | 2 +- lgsm/functions/install_server_files.sh | 2 + 4 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 QuakeWorld/cfg/lgsm-default.cfg create mode 100644 QuakeWorld/qwserver.sh 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 "" // server name shown in server browsers +rcon_password "" +sv_admininfo "lgsm " // 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 "" +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.sh b/QuakeWorld/qwserver.sh new file mode 100644 index 000000000..2ccf69536 --- /dev/null +++ b/QuakeWorld/qwserver.sh @@ -0,0 +1,143 @@ +#!/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" +filesdir="${rootdir}/serverfiles" +systemdir="${filesdir}/ktx" +executabledir="${filesdir}" +executable="./mvdsv" +servercfg="${servicename}.cfg" +servercfgdir="${systemdir}" +servercfgfullpath="${servercfgdir}/${servercfg}" +servercfgdefault="${servercfgdir}/lgsm-default.cfg" +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/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index bcfe36fd2..bdd9038f7 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}" == "Enemy Territory" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Mumble" ]; then +elif [ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Enemy Territory" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Mumble" ]; then installer=1 install_server_files.sh elif [ -n "${appid}" ]; then diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 78057b680..7b46b4d15 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -23,6 +23,8 @@ fn_install_server_files(){ fileurl="http://files.gameservermanagers.com/UnrealTournament/UnrealTournament-Server-XAN-3045522-Linux.zip"; filedir="${lgsmdir}/tmp"; 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="${lgsmdir}/tmp"; filename="GoldenEye_Source_v5.0.1_server_full_Linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="254533d4643ad2fe6f1f3ecc4f6b5e5f" + elif [ "${gamename}" == "QuakeWorld" ]; then + fileurl="https://s3.amazonaws.com/linuxgsm/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}" From b207aeb74c72a5f01b26ac7e7a7033223d0be4ea Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Wed, 31 Aug 2016 00:57:55 -0400 Subject: [PATCH 002/729] add config --- lgsm/functions/install_config.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 5a856f8e6..a5b30da18 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -389,6 +389,12 @@ elif [ "${gamename}" == "Quake Live" ]; then sleep 1 fn_defaultconfig fn_userinputconfig +elif [ "${gamename}" == "QuakeWorld" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/QuakeWOrld/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig + fn_userinputconfig elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then fn_unreal2config elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then From 1cd76f5ec6904b091c509aefa09b258ab0ed338d Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Wed, 31 Aug 2016 00:58:10 -0400 Subject: [PATCH 003/729] remove script extension --- QuakeWorld/{qwserver.sh => qwserver} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename QuakeWorld/{qwserver.sh => qwserver} (100%) diff --git a/QuakeWorld/qwserver.sh b/QuakeWorld/qwserver similarity index 100% rename from QuakeWorld/qwserver.sh rename to QuakeWorld/qwserver From 7b2d298d7a05bde48117131e9802952d1c4175ae Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Wed, 31 Aug 2016 00:59:14 -0400 Subject: [PATCH 004/729] add glib check --- lgsm/functions/info_glibc.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 9bc71172d..f83d44f97 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -74,6 +74,9 @@ elif [ "${engine}" == "spark" ]; then elif [ "${engine}" == "starbound" ]; then glibcrequired="2.12" glibcfix="no" +elif [ "${engine}" == "quake" ]; then + glibcrequired="2.0" + glibcfix="no" elif [ "${engine}" == "terraria" ]; then glibcrequired="2.7" glibcfix="no" From ef4768823c87883b04fe6ac0a4cbfdac34723b6f Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Wed, 31 Aug 2016 01:02:32 -0400 Subject: [PATCH 005/729] url fix --- lgsm/functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index a5b30da18..d9ed2c308 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -391,7 +391,7 @@ elif [ "${gamename}" == "Quake Live" ]; then fn_userinputconfig elif [ "${gamename}" == "QuakeWorld" ]; then echo -e "downloading lgsm-default.cfg...\c" - wget -N /dev/null ${githuburl}/QuakeWOrld/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + wget -N /dev/null ${githuburl}/QuakeWorld/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 fn_defaultconfig fn_userinputconfig From 4c963d69ce7a7f3c9062f6125a6060c805af912a Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Wed, 31 Aug 2016 01:11:50 -0400 Subject: [PATCH 006/729] filename fix --- QuakeWorld/qwserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 2ccf69536..7a43b4b56 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -43,7 +43,7 @@ githubrepo="LinuxGSM" githubbranch="master" # Server Details -servicename="quakeworld-server" +servicename="quakeworld_server" gamename="QuakeWorld" engine="quake" From c3964d17422bb08a72101cc389b7db9357c7d015 Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Fri, 14 Oct 2016 02:51:20 -0400 Subject: [PATCH 007/729] adding Call of Duty: United Offensive --- .../cfg/lgsm-default.cfg | 4 + CallOfDutyUnitedOffensive/coduoserver | 145 ++++++++++++++++++ lgsm/functions/command_install.sh | 2 +- lgsm/functions/core_functions.sh | 5 + lgsm/functions/fix.sh | 2 + lgsm/functions/fix_coduo.sh | 12 ++ lgsm/functions/install_config.sh | 6 + lgsm/functions/install_server_files.sh | 2 + 8 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg create mode 100755 CallOfDutyUnitedOffensive/coduoserver create mode 100644 lgsm/functions/fix_coduo.sh diff --git a/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg b/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg new file mode 100644 index 000000000..c865268b5 --- /dev/null +++ b/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg @@ -0,0 +1,4 @@ +set sv_hostname "" +set g_motd "LGSM CODUO Server" +set rconpassword "" + diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver new file mode 100755 index 000000000..9e0c737a2 --- /dev/null +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -0,0 +1,145 @@ +#!/bin/bash +# Call of Duty: United Offensive +# 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="mp_cassino" +maxclients="20" +ip="0.0.0.0" +port="28960" + +fn_parms(){ +parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +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="coduo" + +# Server Details +servicename="coduo-server" +gamename="Call of Duty: United Offensive" +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" +filesdir="${rootdir}/serverfiles" +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./coduo_lnxded" +servercfg="${servicename}.cfg" +servercfgdir="${systemdir}/uo" +servercfgfullpath="${servercfgdir}/${servercfg}" +servercfgdefault="${servercfgdir}/lgsm-default.cfg" +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/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index bcfe36fd2..9b0bdcdc8 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}" == "Enemy Territory" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Mumble" ]; then +elif [ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Enemy Territory" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]; then installer=1 install_server_files.sh elif [ -n "${appid}" ]; then diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 388846276..d71278b9e 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -546,6 +546,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +fix_coduo.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + # Calls the global Ctrl-C trap core_trap.sh diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index 41e1ecc2f..4c1d7bfb4 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -37,6 +37,8 @@ if [ "${function_selfname}" != "command_install.sh" ]; then if [ "${gamename}" == "ARMA 3" ]; then fix_arma3.sh + elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then + fix_coduo.sh elif [ "${gamename}" == "Counter-Strike: Global Offensive" ]; then fix_csgo.sh elif [ "${gamename}" == "Don't Starve Together" ]; then diff --git a/lgsm/functions/fix_coduo.sh b/lgsm/functions/fix_coduo.sh new file mode 100644 index 000000000..09835eadb --- /dev/null +++ b/lgsm/functions/fix_coduo.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# LGSM fix_coduo.sh function +# Author: Alexander Hurd +# Website: https://gameservermanagers.com +# Description: Fixes for Call of Duty: United Offensive + +local commandname="FIX" +local commandaction="Fix" + +# Force glibc fix +fix_glibc.sh + diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 5a856f8e6..e6ffe3edf 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -256,6 +256,12 @@ elif [ "${gamename}" == "Blade Symphony" ]; then wget -N /dev/null ${githuburl}/BladeSymphony/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 fn_goldsourceconfig +elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig + fn_userinputconfig elif [ "${gamename}" == "Codename CURE" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/CodenameCURE/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index e1b140bb8..8d54f07c2 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -23,6 +23,8 @@ 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}" == "Call of Duty: United Offensive" ]; then + fileurl="https://s3.amazonaws.com/linuxgsm/coduo-lnxded-1.51b-full.tar.bz2"; filedir="${tmpdir}"; filename="coduo-lnxded-1.51b-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f1804ef13036e2b4ab535db000b19e97" fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" From 53d2a0401dbee86fc5b7d15353341e72db8904f5 Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Fri, 14 Oct 2016 02:58:46 -0400 Subject: [PATCH 008/729] adding glibc fix --- lgsm/functions/fix_glibc.sh | 10 +++++++++- lgsm/lib/gcc3/libgcc_s.so.1 | Bin 0 -> 627675 bytes lgsm/lib/gcc3/libstdc++.so.5.0.3 | Bin 0 -> 2886540 bytes 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 lgsm/lib/gcc3/libgcc_s.so.1 create mode 100755 lgsm/lib/gcc3/libstdc++.so.5.0.3 diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 6408e3339..bd793d72a 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -40,4 +40,12 @@ do fi done -export LD_LIBRARY_PATH=:"${libdir}" \ No newline at end of file +if [ "${gamename}" == "Call of Duty: United Offensive" ]; then + fn_fetch_file_github "lgsm/lib/gcc3" "libgcc_s.so.1" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" + fn_fetch_file_github "lgsm/lib/gcc3" "libstdc++.so.5.0.3" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" + if [ ! -f "${lgsmdir}/lib/libstdc++.so.5" ]; then + ln -s "${lgsmdir}/lib/libstdc++.so.5.0.3" "${lgsmdir}/lib/libstdc++.so.5" + fi +fi + +export LD_LIBRARY_PATH=:"${libdir}" diff --git a/lgsm/lib/gcc3/libgcc_s.so.1 b/lgsm/lib/gcc3/libgcc_s.so.1 new file mode 100644 index 0000000000000000000000000000000000000000..acb442512fe19e4f151d7b6b7cc49933bdcaf5c0 GIT binary patch literal 627675 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

<_lre&6h)Fv|Rr)4ZsaVUy3PlcO2 zhx?&~thoOMqoB=bwnayREQiooV`x*_A~*PV4%@uV=^$Q_kFndB2IC!VQCj~NzkVfV z{7-8#N!0S=*XM~XJBVN3VeP-#ZTo|JZy(O*a}30Leinti`1Q+JFVXK#W?4=<lbG?OAkVf*eq>oTvgHU0d{Np8ZAg1f$5Ekzm&F zJLT9VS@Q5C4Zl{zA-Z_PR(0FK^sa78wog95Lf#9>i}UIiXZJV`WshSLdmM$+#SmWp z3xUZCn-@-(AK?@+UA+2*w%u{BkW9YQ7Ja4!R9ox+(i(j_ZAX&1l*Zs)1UwOW=B=TS z7Uy>R_m8ga_uoN#c$Hs&G|&AC9ny5s9zA_ak+#L7J|B5ZaqmMtNZLXj9^!Ae)*)L8ux-KfS3 zSR3Tf#T!|5@|9_6E6<WZnw>U0dG|(DIiqzlagfPJR2p{151L9)}{~ z|ArmV>m%LK>%5tcUU$h+{-Eh~!3_@iU&-^xqt`Wj-xYf8BQ3pi^m^r5*X4Hj-yOYz ze6qud^Rxf?w}52pLlK*2B6hop*nE?$1)*e(ZgG@~UCG}zE7>$LRXQ? zj26+NL%d2P>3k(`A!w%~4K-{UBY0Qqo$>k}2;S8tu~7)n@VvvS(RpMm=L=rPHAcwk ztF^){kiAD}`mnB0U+j%-St{5U+Crr{8NJD?JAy1?8|X+I=x7^gjSY0H4RpK>bb^h} zL5R+cEI*=;kiHG>;ayd?#SXAEWgP?_#sUCw(@xC9f$2}_n@h*qijqjSRmX3dJT(~e zxik;Pe1q^hMc;!l-%t{}7{tHl3NIYT<%w*LN0wLZqqd|)(fdI`@6lQD&wJ5%tePX# zHwjK1cSdi@TqmGkZw6@mmGq>c+$&5tHr?1v9yO-hHk>U9Q zKR?C04l}YR>n^nO=<~h0i$%G*7{>s-x+$_DbyFqYGn+I*5vSgu_|r* z7E~eYj9!^Z2y}EhpyMxx71@{xS4Nt@3Txo0X2RiobTi>9di@zQ!REn5P}vJ z9NP%aYSfdCM4X``SwA}&y)w}_caO*w_lTwr!oHHA`q>aLdYx#~hwmXZuPcc(-%19X zj>*qbTI8Fh%}>UD$}aeAULAK+PULRN9}--+t+yI*@W3r6tuW+%FqZ8hG|ylV2o2Tg|v@;(uw6YW9|7o(BCsk>+3WnNMXdk<;-4btf3d0HcON z5e&x@fW!4Y5Du>-b~bEk$oEDTs(xedcf4wz-Q)%HEYDUb3a>6_!R5@eP7H1b{ybTZ zj-rF`g(tJj!VN)ZaJojSgYb}rrcTDN;(cu`Eu$DLM9_elA+f&GU(>EgGMFq?Y5bR< zkimISO&mIlzg#vRoPSe3COKu%=B2!tUyDH-4gMPGQ8e{Nc?e3fYBn|dFeWtfH|?ji zW!C3w@X)`S;P*X8!h7>GeO%2Jmpj)UmBM5>%00S6+#y54YHSg+?X_P0EP(B;(UlhY zTc!s$@&H3t37;MkpFDjJ`1BBBcTga9`{l$Ai%=b1J$W+Xw~{*nocMhY@mtwloDi>~ z;GQ%WnV6k~ynT_rPqf#Si7>(?Lf@Uy)!>)5+D4!=p%HZA&$ai}urklOu46|lR;YLl zl{}+|pa67sK3-fiBC&dcbn&WCLM~#~QZs^smhNQ#cq_+ZXZqKJr%Z{JG~3(#Ez@@q z<&IV&I=J~OFP}LoI_UE0UbHG%X&Y=NZRwW-&Qr*5M|LVod>>Nh97mT25q8kyM_7Pm(?Yw#nsj*4%b z{51}>q#8HjKP9(j^L2f%><`N3DVrh6JddY7D!Q3CXC(0i?UUQ;yb{_bqnjr^MKa{5 z_~uCBcRPkPF1^MYSKK?}50zh`1#Jar<#r+$MKMH!yCmk36)ac?_iXaV9gt z0%$$5G~&ro4I3vP&47c2N{DY9e6QD8+|e^ZhuUjjt?r0LI_pVR^_8+(wmeyO{TLcg zT4z+a;$3*CPqBee79snagsgFJA`&L^tnwPk^cv{(^G46mkp3zc9Fb~RU)``_@+HhY z$?`EE6%6zl4fJq*4+i>7N$khyr}LZ|AFCYbD5=Uv9Hkfc=0!8lR3>8@YmP+tIndA$ zgS&_X?=s-w8@h=BLK~_Z)<^7udW|evg(;{^AI;2i3h_ERyc)Ym(`}aum6pW}lpY*} z^g_NlVP-g{#+Z3l{Aq1^sNN*8t7?UgHb^50B#rQMBD@cBLmIQat zr({(vaf^j=ydn`eklqxi1=Uu`kh)9j`1UYr-Cam0cM}|&aeb3^E2gTrZUF%i^>xsNYM}Z|Z$DT)x6Cx>Xz)sm^UstQgs1?^7djAPT9| za88ed{>H++0yUR;MWed}BGkk;12fP;&yZVLd$!!l z+H>Vo)}GI*DO~u;?NOeP?VNCKX&|2}ptlxlvawnQVrNG}4XYUG1zojzwMXdmQSC?^ z8?SbBGCIqvMNVdWwPUq{sAVB`lUK_^Y+mNNppm=My7t20I`Z0!-4*3tZ7gZmkbAXL zk}XGwe6>^E-RIu)CK0@4v>r}3U$~{lKDXNQvG&{4P_sERN+ERoLehqbS3fF%#?F&YM7VJq-ilI_D@!|r#%z{cyX*$-9hPe>Ot#EI z+Buwz4h%UK=+hQkmQdhWksd7e3WrY`4tpi-!sqUA*eHB@!9l;L2iZ%Sc;1Nv zlkQIRS_;qsT(>+D&=b{-_w~v^CX}bWBcrWu>UQ)^cLt1-<00jgWjkOl57?eEd#$ZXf0L)uZNFeeALzCvYrR@?=Sm~ZU*=~q zx4%OrHAfaVImecU$X~d@nvep@3Y_g++U9>%0{sp2(ListBA8ip{!T4x&#r`*MSn`) zjJ$Soi!Q^9A5gU;t!3;WM+iHns22_eCpPS|FGN~WK*`EL{XoY@p>OlWu$E{#5+bPD zJ~kn>f#l7X_rW_02m%^r0%XF}qT$mdJ5@lWBs~DGd1lJIiG!1NbE;P}B-t_qilw*b z&%OLv^J$vG#r#>LiHED6R=LVhO`a~cP1kBCX=U-e>GSOK8TR~k`+T;2o^PMewa*Le zGvOWDF0{`V+Gh*7xFXflE$U)L+P&!(c(E{uH+_Y@Kh@q}tg2mc(5<5hkfJ~(2@ol1@Nod2M@yRij>18~T{Jf8w5J+c_ zmUr~t>6YO2Kkdxxd!iVzSCb8%D6s{PGy9g#t&=zyUKg%W8QXN z*eL!|P}ag3xA3ZnaxczN;ML=Q<@O`rIz^tB_lTAZ`TM!;m(WGxbTasQ-;Z2m?T;^N zf5i^k+kVd_*0{eK7wz|K)fjiMpL?XWf4rl+_DgziAMW?OMS()bp97J%-!nO&-KaRI zWV4Y9^P3h~`{UKVU_bW?wMkT>=^Xtmg5Z@T>$s6&8^DsAvO7iv{5Z$pz1Q9q-dA=L z-hKw}&JbSqR>N0gyNBPZlSHp?6~Vh#WnJGjnH~gn{)Bf^4{v zM1(IcV4WvchKLsM?>3Strmq^+CXp2P>D>e%ND!O#BR3rfvJ}e`sbFU2k2g5qcCx|C zJlq4kngCu0>$9DLw}-*Iu_t(&FLL-z0iM)G&7@+ujJNB4XI7R2dY$awNTuTGs}5H` zBz~3_Mbt{am2G46J0uwIIo9sI)wDx8$cDlpy%Swx@lh8l&4x#lo09{wvnj{35MH>r ztTd4G1ycFSilL=`B6CAM$?t0xEM!3}CiT;ZU;m+5b6crNC{0?*{NJ#&El7TK>U9=D zX0mTA>H-=o#Os4>c0Qab>Dww(Es{rUHUiuI>36qYn6mYgUsJg zf4WHn%GW~$_*?s@**KcM>Y{GjU*CKCP`_ShAP&ue$kVSU146`m4k6AHUZbD&f2uWp zeWmapk15K>|5VMO9pFE}+TYb}`vJYT5AlDB>#52A%z?{h?}K zU|&BcUnX%nV%EETJ=xl49_rfuRT$q}d&hrke3u$qSNZfiSP1NZeos#@{&(B{6(P`b z`|S7)#GyG5dGxz25Z>ny`L6sA+n;RhGb@7eXXoSRP*h&x>@59u*1qmx@NO)E_l$7Z z1$c+#f>#TV7nQ~fWT;7oYkbLO(9JmkB3MR>bL&GEAtZL&Z;Xb2-qb zh36lvzx99Y+Fw<-{oQqLPyNlF?E1TjnGnwXY<~mI-VO}ya~E^ji?t5y<-pMXa{M4? zf3e3w#$YcN*XF~H1yZp?GLv1=i~0(egy zYxBP+cq{(L!5hD`@Dc{^fS%x89KhT5V+VJI3`EZLG!zZL^Ki`|QB`uQ z?fueE=skeZrdF@%J_4(kvsCEhYARf=gN?RaINUb;0bQzH3=yqpa)w^1Y(Tqtqm1?=~1o~#48l$lr$jpQ=wmn$V3;Z1CA#^bEy z9Rw5G1keRY%oPrR{vC0pd^kYf#s>fL@S6fW;aS55byqw? zc%gs2kSIF#PawT{^3qD#f7;i(uAI-V@MPqnJ~iB7c(F}`l2I3zdsE6L_w&l`<;8M; z8M=DJ%2-QeFE>8f2A z-$d)rU##&Ru^aR}V;B3|@HLHZiuE^pH~QOj;jWGEV(YKm`dgq?`Yz7*sXNnOd2)~| z&e+F#`^6$rQwF@p-X=<0b3;#wH@Z#&?|c*Q<5-fchI_{XKiP#@DNL z_<;I*a+k{f_g(An-Gv%ouiCn}zp87<4%}7wd~=k>_cQCSS8ZL~U&S>o zkL+@PGpxT)Sbx20>*D@)YyRzP{r&InMbBQf^#|17tw)KTM_GTpYU>ZEzr(D*NAJ@3 zdezn+P=70{HNJ0Jf4yq!|D-=#uW?7L_4WGi7#ru88UZP+POKi1?6BorsNDIBemDGv`AbHM7AF{f<)i^>IoKZE zWUE3gW4#}iDL{ z`s(QB#_?W!{Rx!Ujw~Ndord=x@;|MbE83VQA#Xr+d!$+EIU`ndMmL?%S--wBy198p zYxL#Vr>Iz09o?iz-1EShx=cO9!f&(af>m>T6KQqhKckb@u7mo`LrL#rry{=5D?K6M zS5OAcx{Q6wbvJci!HLXSkyt$}v7yvxGGayM4J9`nYRkk5uhQLz7`$jj87&?`jcMN6 z(=8@FBTQxbNT~0K8q#xuf8JL_&+T`@Z$mhHg%d`y&hzTmYCDWj15z+_bLpEy zJCF;zVD{tu9MmCOHLIy{a7k2=Xx6qHSypQC)POqZ-;{Wg}O{%Xn1U7JXRZo9x@e84xgd^Qh9; z1x<|)m&CrJ6W#TdR>3#2WK3ymZE516K8%yNMSCBJq5P+0Ju|`Zy5&rgncgP_qp7j2 z1mVavuC+GfXkiXbePw2iqgG~hJ_=KEDAbn5_X5Mx^kkbkIW$kteBIcw>zNQV%b2{FNx&^ZBmJE44`X;W&Y@9NND}GMEC%ZB8plz71XoB&Zz~0xAJe=AJy|k*7Zf z`Ij7_@%CrDT?Xqw(>kleM?a}C*66H+DOx# zAKxvUoG6skqt!JNY|ot@-?xC#&G?4-Pmj>}F1iDKZ26BiAE8u$bdqY*B+suoF&t~3 zaIBXigN0-5*X>xZp{bjdCt!4!LK%Bla~<5}Q<=X&8l+%y9w!VK z^1d)CH#uD)P@13%CAkQQWsG7o#9V3Z?*J;ZC@Z<{LnyzDf4GhR*E<+LR=~+}AEv1B z`ch=9%lNT=#k{^o2E??|u8jYTqVWp@jUPtt+V}z0-S{n@8^$-+a&IZ|zuTb#$@Pup z>{@awW9*{^0n0=u36NamS>k?;zhn=dz!(J&p0Ee4xd$ukL2d5A@9n|6SfilH&GukX z?m@~PT$p{}uAH}rpU!*8DW6VzxDLDFU~yw@_%NCG5dTtd#*Pi&QU$%QM_N9^A1|>& z!K6x-|B02Qi6=^umC5mC$+d~irF(TmTDC(4FQFASy!Y2b$aKaYmG|5#KG#dgXI6_l zMEX`Qu}%?|o;o4Fi%#U$tI1?_La>WR=PPp2Q>(q~6)is0>S(pvYN##j8MR2ua(hKf zB(>_NR+NGxAJ0oP_tqQHWDwF)TZ*DC1i3u=|LN2l~Qt_FKWOH}psHfA_IhDV~ug}t?_uyzXU zs@)&e?j3R=y~NbsT3P;TLJNMiN~+Z#XeEt=K4R6QNBIp44O^=nW&wSr+J5-wBta)gH#3`b9xVMEWt&`ia<9vvOfjA%sA}=3e4>>)kvBxF= zDz`b5>%Yz#zj%xKA1-R<_1`A9V8{LMVIXeIfynDW5qJj2ch|o>H0eE*II5<^f10db z7yKgS_}X-mr^ z@!=!3b~%qV_TCC!=wFxEzUL)xCRSIt{YAuN1_)<-Ev}~MQ(LfK%rC82BKo1n%y0Oc z`Ar^Ap{K21D||Kv!0)P?|6BOIge&6kTdz-f`1v?{JHl^}e=8b+{m);*Z#z@L0+n6a z+Hy8zAKK7I6QyztaM-yeDln#O#FPA1y>jwryU>rxQ(M+vHVd|ujImcHWw>FZZSoh~ zeQ5kn^)(j1)I}`gDoM`jvEqh;!eA4<6Vg55SaqRtaNBn)h9vJ-ATJQk7 zHgD{G*&Lny&@^&iVoNK=B|7)Kq%FJGO4FJ3P~C&drQBU~5*s2Kh5kHPcr;epAo%*x>2k5x|X!jVj?A zl@k0FVLzdO{r+o0yqvR=WaieEP5v1Azd)XNKIxwt8ndtu!?l={)qJ%xK8(ErCMsk9 zo;{_pe5UthrGWzYqjgLyW4!AoIreVzQnmKrW1UF%C!A`{{Pk#_LA>vufvmJ~f;HJr zks+|J6cGOEID!7U(a6IE@GVFvFQYK^oM1~FAd$JiTe54O92Xi`yhN_x&nVCoj%iN}6`Xxi9@RH9pVyKkfQCMEy*ppB#yw%aORBIzdq- z%0f!85OOC;p!85WYl}VyrEQC$kkU6Xvzi*8qbC;bqK@_S3iQwQ^lYxDUq(fw_i<|- z!C7QEeromRM*!9qeU_eVtGiHa4zr$~rKb_DC*$cth30gLAO7?_nYm!1_fN*5wY?8qs9!er#BU7O9O*()IR>yzjeljh2jroc0&L-Mj~9w4yKFf;B+u3W0%yks z%KW!aV7Mz(I$9lFR|du0)06k_;QQBtdw8QYuD<_@xhlCeOZSE&@WT;<=erR zALvWp;LBP1@;e=tcSbcd_hqs~|APTy>BH6Gpxm99$w7zpW2a4$nqgdJV zNa~&gyc;#zkMj&eevG1?8;7=~>Pq$WoN72tC|YFQNOz*7f7kJns`9q7uhPMW^yt+TuJ7R z+_RJH*|Q~?YwcN^1Tr&IBA#rsQV$~@0qi5`i{YuHfv1#@=_Y^7{L#_=AGXL|Z@+Hm z?R8~HkI-Ise#OYSbN2cq^h&Y4J_BOz$X?HN-E?QKKgk>{u-6N~ai{I|zc61t+Uq{Z zO0m73Ag`myUiUQ%)Pudg4}Y?$v8%n_L&WUPUf(b8q}X1cgHZKouTQluy4ve`cy)$r zR=1yJuzR=HdjqT3UY}9~YhQ!ayS-k{d~vYy?R7b@da~EcFqSTv(M(TZuTMRak@RA( zPoCs+aN@qRV>rKJTEVS207W9;7um5?phSQV1{x-mRwAV9& z`Ce$R*JyDf`OEV3XX;`H_WDR*72E5kB3NGyVfA9KUt`iZSo!w)2w?5VUe}nLiiM|(XV zkOlVoRTNylz5WV>a`syG&e`kF@+oVt2k1*^ulLfI&|bfP6kiSq?DfC&CA8Ns=}Ty@ z|DrFUz3$ML&|W{FFQL7@OJ72J{VRP5?e%PZ*|EKDJiORmU%)fjYnk-6p^pdldeI0t z-PK-imqWD!dmZ;nH#>X1P@ZeSy7h4^vj0~>Zu4&i<3fAAR)!pVU2Zci-(J6hyVaAu ze$;*|wAV}QS)skY)t-G&_Ii-t=by6ICvfMgi_a)!UYDK(>+80XW7=v;b=W(&AO{5@ z58omlr`ob%1>dD9Y;ir}k?JQVSIu(tYAh|#R)etsZO|%=9|cGauSeeo4W$aSNDh7VA`yWTZ_k?j0;q-p1AQ7OkKcArsAq2{L;b%+RRz4F_aP;oN{08H_`M z0dXH+!GIo?i<4dahA=cXTLlN}kRKV0Wf~iJko8mmW4ggOn;v93`(_VRaNC8Wv4&-P zD8aA>3)}-W8WyDbMm{*`ahQS2u4s$+$17j|QkG;cnw}f(YG$7Ifa(?r_Es&yLjKY4 zX-sUMS?mt>F>pyz~en9(XEV=NOD-1|#;9EO8;grPe+)X`w8+g=h}>&szKUZKlQ!&u{;87@vo@ z?V$yTzitalcjktKr04km))6bx-(sD?pGx;Ei6SirdUxb8awzxIXNtn6JYnfLv8#6CuHt^~B%(I#GnWr=BGEZjK zh9UPb-ag2G@>S`}PhGJ)`to2AhgtOB)R*5S@UV;e^6Ls)b+0c^kxSd7zB~_)Bafx| z`tkrZ>``BS0bAXJzI+ni^q?=>*Nnif;Fu~lBzDyX5p7iA$gAp!1LK*L>FTZ9m zdeWCC8jM}gmz(7-_NXuW7`R^b<)=TNC0SQ}Ion|Oq%ZG4m+U}a?gxM#^yNsw?onSJ zXRvpqFSjuJyhT0f%f1FV287smI-&LH%*3AO(WVLgt&;n6+B&sTem zn_D_#6e!!wI?(?=*)}#08+`ASYZM_2;)4H%2e$Wh;X%9rL`p%jJ;=u45iat#MQV<) zY3#m=G>OF7uvlm>D*RjjZsTvlUg$D?dqN-nR%sd-f zpX_<`Y_Z7+26e8WQl}88R6L7+tjl>teyU0K(UHY*<>RZ{ezLbWuFR`i*z#n2pH!l0 zABe`#4@7zBIh&^PQAw}O8S_)+g67v~$|95--^vXdUw>i3{w^Ej^=x#*J zllGt@tfVSgZ#yunKdUGL8NB1PiTsIN{Z@@|Rob zdh?_$NeZj5?Owl$3gOLX!c-EhMXB`|tu)mr#N?jx1*Qi10^6rSk49=MKhqx7#)I5c z%szMqZ2kz|P*dYGCGjtN^=mkS(Lb?zYLKRB`PTiC@950>6JBi<Aus6iQM=k%J^4PG&)eS{vn8>D<CDQyT z9g&q1Nj$^{GE=CT>-OX09o6wQk;JcgOpbQqozB?zshhmki?8-B85miza_iW-(!udl zLkE#-%)r6sHIO~TTRpB!HmuED ztt#%y&+eQ!B(teDwx8FJm1d2Go{WtwOW%OA=yj!OAEW6*NK|GmNM^Vg`F6V<3m|FI zLQ((Y<*SvXACc3^KEMjeK_%FUNQclcoDkuBnBc#J2TJ^Vs^&ZVSKR{brTOooVicWW z)hU{=BcQ!&Z-95)7H@2S4n(X?tcchJ+0-;1q#GRgwPs7T?xO3Mc6w^`h^EWqwB8dA zMwX9@dG#F-PkXf5^(LKstwsZ5`9^Kcb>eK)1Yf4UYFG6+gMzwvHsU1=HZET34M@KbaH|l7*rEO< zuG0g%cDhft(^&r?{|5e!*J{nsD@Nf;S;0d69GoY4iB$&tzl?kwqQvDKNU3a#zGm|u z>6XvesxO#W5B{X-`y2Q{!7D@ewVZ@xD!sua(61R`RDKlo5K$meO|%30XNXgDyw3)1&yE(>a^Q2_YM4Za&{EP1NwbCiCQ?er{7g zH{00%n7KZfP|T-XJ%X#*LYuzo&P#1d3A{>mheHtZXUWGqVhDvXLnXpX{vooYxfHZ; zs@mUhzK-?}GvFr}aAn4}Y>j;!&me+W1;)_-5n@AR>V!Dn$>=~ytJ@o-7n$V9bM^Mv zm%IUXs$^Z4vK`a*#K31>M2l-1Rfzo!dSzbo=YA5b+x+hw?9|C$k%cUdA%4UBYv0k} z@0wzRr-8aKLI@PqoF`ctRupr>i+D6yN`pDSa`g{ zz%Sc$fco6xaUok!o`_N&6A7s(hNU;n?Q2t@i4mWbhl#_;@X4P4eI13u`Cnn9<5lHW z3yx4&Ef^iv?IGfzJ^7Y@u(q#XLfh+vDuKwv%8F#Acb%cLvOGDlOh_@buYgXF{+Me& z$=ctg_PYHJb5Yu%mmjqehPBV^{jlB!(G<}AshSvdz*w{*bQe;ft}LkKw;IJM3Jk*V z=g*Z~|8JT-`(jc5dw(vAEF>%F|Bu$>y*T|ttGcp6OR#rN7W{uO2&}+A-Ahi*$_hN6 zRmkxt+;5Y%lx{Ax0(&w0vU%?X{eR8+|LIQj|God9f2|Mm`-eSe;*YpAQo|>&9?t?o zP}5iWF(XNySFrI5&MSzY>nu&4#f(tQF<*lHrJpcj`S~_U#Cj%2ES!d%In6hj&m&ry zyWn(ZLq%qGa_e!)_P8x?&6hX^hGJ_?WodkG{~k19n(CRI{&NHQ zv5S$99pqOz9I5UrJaP>ENESzz)36D-bMF*0cDQhTmIGqr=q>XLn~+A&@wxg&XPA|p zJK52*QCEhUmo=N=*dExY|k=g;A*I{u_Oc1bgRXcWwkJp6AmtFwMmRvvg6&p-$~ z0RlDzF6de({kitjMWdJn8s^-}#S4ZYmW~yGl5hmYEd2}O)@1}Q0X;Lv|AU zHF_scDe_U_HIHnQaWUWr%ABhA0!qh7nxUSaiupVGmbvvFSg$#;=k ze7n5p5pq;|FjBY6Gk}_%r}EP}N~C%~XjsiH0J=>U z9rQ7;VS%Xq-A~!E(ZI~JW_Xu{PwAVX3+5ytg_va?7lN}5!DPcc;b;gh(=7v89B=ZX z^T5s<4z5DcP+OLVDY(t!D~J4a-(i{1bT=b)p2|;IOc!&H0hlhfi*EgT8NvN+S>o)e zyrRL-OuBp`y1cb6)>elzynnhCW1#uo79S_!kUz+f`V~0vZcs~MpF_Ots9?T7jAvlC zy!e?a+O_$MdEmiuAXUq2pu5k|EGr)u`YS2ijQ{(ioP4;lWwdykzTFbYZbs44G*1Q| z3s@dfbZM5NYqVnRhrp*!=|^~AWU^tgWGcRY{;0osV0P4z<)_9{^&AXd>J2xyOGm~y zi?&!~*F8sB`GC}-x&@WGNJdlRY8Gf*)Z^B(T&Ik1L~&)bkZ~tRdk~I`iKt{A_kSw` zxqo^n+S1YACg(Xk?ScLy6^Svy3FzO?`pYEzi}o|(e?^XzyGLjlhD*f19YK(SL_ga4 z<3fMTR?&ajMUMX5jj{xnN>==h*WQxP9@4`{##&dFrues#!)1B312WuF5<;vWhL`uAXNcF2zn zh#ma+IDR(#7+lDYr{wf@KOg4Pt_wfZAN+W6ALGYw_$C2Dw1@Fg{HUT$zz_46@&7Cz z?)3}dM?-n!kNA&$oa*+*R+j&^hOxx=BquiZNyZbo_aR6_J|W6Da0CN;B_*c;Z=~nU z#+<+PzJHRzzY6$~dtG!i*y_F@2PFUf1MU5@96oYqyGLigu*U;)V8Tb=77`h=%i%wv z|MkAV@-3VHKVZBC=sY_hJEp9>2KUijZA~6i69qFZ3e>P5Mdd{aZFD}Dj%n;mi32&g zeNYlmXkISLnwQ%oy@lo_+SR<=B>=sc7cV+LFeweqsRj(iO;`tKY9zZDncEOoYFRY% z71dp+Qf@L)#w?#o1<;%%7uXsb(N<`?L-G9#a$9I?=4Pj4p{<#nk2ZI2dWYFWYgkZ( zuaq8kP<9Av&lSF0?8r9>S?8(f$}HMh!$ZZoPJbO*mPzz`j7q-peF4psGdW5c${L(W zwCG`ijZ;uPU*YZTp8`eFFVfz>tiR2%V0RP%&q9%xc%rjF zA~@o*z!<`CvKA;19%()}A}1GVqaj`Imvj6$2rp@e6M7<|2tSf?wf9edx{x2o$m{N&9|JY_3i+Y_ z;KvCcF@EgNw}2lv$zx!yG{f|OAAvnO@OAOytn;Lw%l`^9%7!rBGXGhLNA~PxZhpOK z`C(tw`+>io_2)hZu8wnm>V|WfE}Yv%f9_{2FteOvPI0#@HlNG9@cH*;twhATN;idD zSpd8V`46y492E~8N0;)=rWM@O?BkXe#@l();O=-jIB!2llb89`uQm^K(4yy6{u|!Ov-X89&GIE%5i&$m4*Yiy?X8{5olq>A!Qk;m;NH z?fCOw@V8$>8)x~md;T^Puy|$__}hP}+zI-ZKojU+E$_I<-+oJua`*J_V5QfE{^}3< zZ|`UHZ|7S;{|S5){g0qcc0T2;=hwU@E|i}G7u>E7n>XD280`IQ2MNcBRwf0(+y4m{ z;R?V@6-rEVAqoGVCu&_B`)qDM#f1VMj(|~NK%*!oFJNVU2Hs~LDf-c^^d8rb3)pg) zpLxMq6$KCKrN~#wk?lSnqJZ7EX?Z*Q} z5#ED4B3$sF`HOkg7o_!FC6+BPq`L1y@rgh%P{MJu)C#ovOg zU~ae}2}Bp-^wlOlp=bjCb>*2w#?L9acw&WR^^O0wY0*$Ayj|nE-Z#0eAQG$n_jrXj zeu|6_wdJ|)lg)HY4%r(TFt|_QO9uZ3y8-{kNR~^?h!$m)1jpl6BZ@ zyyZ#uo5tAt)7<;&rPRg{ZWIN5@V@!y6a0Pc{S)kc?QNlM71c$VNt|h4i)-(U*B_8w zufKQV7H{kTcI4J1R#aNTLZWd^sY_buAjtDfEBOnS+coW+)ab*MwGjU}qLkgNUx-!= zH|r_)Oq(BzeXOqMSKN5+xv%(BWdTvwNwQ}WtR_~JwUn|p#2Eloy7);laJg6xwY zbE)#%te8vNi@Es{Yr&A419l=Yg&UE(NlaPxJC~ROuOO1KQzAkM&v1a+N#cr_XjcjiRNRke5{&mizuWnJt>w=>e!Awjq5zmEQ*FlqGdsQW?@2f1=y> z!}?#ttkwByMSQIvJ2NDgJ*`MaY=9!fc=BD0Tz1Cd4{hH&>+5Hpuu&l2Qq8@!6TkbY_E*WUir{Vdyu`Cc7 z_~BlFVzR0<|5B0S-%lwm!ro0>eFh)r+UXiNtUc62uQ(6VBCb zsd2-(;a!m0$63qvaTO(lOG?_tRq~|D{ovH(|3}>0z(-Xb{o~oNk_eGqFhVM^qNX(| z5do>Pf;6OVk}AO1>g zR#Zf)H*Sg%Q-~PJ|NEVD@7}wcO?dHnet$nL+1-23oS8XuX6DS9GpCqUMDQb?@=uQX zldJyZ^A8iepaa(9B350W2XJ~g7u`jQ$MUH$MQ$`n6FnU%9?#zziwp4hLVk=Cm#9CJ z_@~X2YD~<~ipyY_=jMk$?nAuDf@$fM*$}47Tr3z*7TAXl^|Tld-iMOWrtS+2-vr7+2saM`@dHNDh)ajh>9G6dJJEf*~bu`|Eo z+Pco+3ohhie|?1^Z5|IMBhxf0$~Yz2;39VI-j4@^^@=j1DhWYFF@lsU8!5^lAEg7M zXk?^FjSz-s1C6*EsdwlkP?kZ^YmBhF34%OY@^iT)H#~G%jFM5LM8;OZ=a%d?pwD8t zekg4*p4Mf{Mo}4s;swU%7JzC+-tV_jPeu<)lCD z;v(BkoYDsteYZ%a#G0uw`lirJIy(9`Galy9cPH@pzo0M8qVLpr`cjh97jAX==XXo~ z!j4NpC3IvcegDLKf8}*lGgF2IrsNppWCjNS}r-4&ZpEwM(i_Ls86?}-xBH;~_vfdq&V@wp;Hh+8YYorrWET&<( zW=$en-m=Y4B~xJpF=h4SGUjeWxJFtDh1Koj#`+f5L%N|US-h)EFX>#gasGfnavjP?|XSrZDtxZ?!M5K!02f^?^tc`k<4i4W(+5T$QNYXE(Ii8Yy*1AkBlA2u z6?g;OlHBtjU^+x=jqt&K2;G4X^Pw|a&Wc-L(Ow|YP0H}~V;R2Vkm_^AdYK*31D3y+ zp&?fu!&!wwejRJLqC?&@QWg%3s@JDwAyX$UFfDU->WiKl)beW#?oT=YqOMTC1yu)9 zSUGyXXF=8el**HsA77k>!whX$a3g_@#su}N@lt>FsP>|+=q~kfRK4_2j~xHgHb?*N zXh5-FE_ut5tc`2SQd0ykpct;o=t5~Zr2hNvUgv2J6zBNv3P$!9Lku{*A2Vv2tweV>zmuvj4maK}WCo6qX?#GD%FV1lw#E@_cBNYJS z^i9+WWI3~AB4y;6m_~1V4ySgU>C*5hCNp6aW40-u19YBvrxxleHAymRtOn*zb6TZdz# z&+zu^14~_;6+uNY{AZOi(jZ)ekwYg@tzC#}xw^;RZhfC}|Gf0P(hY&~4G_%@Gu5I9 z1^}Wjb0v@F!fSev;fa$C3BX}g5HfRsM_)rh`MgcoP1Vac@Naz!F5-g>HCsQv5p9W= zUu%8(tjd457~?BD`+8}1Bn>UQ;$2|ame7+7iP~pffO_c8s`JbW@zAuj4a+g zjh*A2f?@PrgWLKPdKc}V*WZ3U^^bUYb4sY9W@F_UH5)@C68MLicOLo2T;p9>s)RR8 zQdvX1Hc_45L55Ocj)ofx@*2>Wt>k94!5pJ{C9uo%v}uJ|(MQ2ovB%+7YDtZt;vdl7RGx*V+LU41lpJG>pEmjC+-KNXXaE}a zL!x}&aFbt~m=BrtOw0*y$Q)IF<&R_QKg*wcb{{?Oy+6YED~2)|*^5MWdZ{ST3FC}t z#5R>nZLg&4Wj3|`X?wr6Bf~JR;WwS^YwWL#W*#$@s0zdU>j2eSGkFORB{=4=8z;bz9BlX&9|VPjYl zaaK`lYSqDTR_N#=fWnz|09GQp&WZ;_lh&6VZ{9BX3!6)9{bv+i14a^x= ziQ5g5C|)#EBIDp%A*|x4WGvg;>aZ+agH<26W@UiOxB6jP(M++))ly;Xh5d+M&_v@` zbi4x16aD32GZ==6a3mZnCNHj|RTu1;{+J4MOWG}r6~kQF=rgS)(7AN#RJiVSx~>i@ zp9g27PXmGIbE0Kz|8%^0Q5)rJNpYflWge+~t&2L$>MmbgBUu#yDQZg0CX4m#CT4R1 z$>!TJ2-sMG+N*&5*%QZ=d-_no#Q%*%H@MWV(ic<1t>ew_N&dx+MV5T|9r-djS&m7* zmVD~4tVj8xP6Ou*5i#-Qhrso7iCGDt#MpJz^3{)i7)9Oe_*7u9~qHq6{_^&7?FzV^l#m+C!=IowMBk9Gs3m8N*zCkoAe|SKKc73!8t) z`RhL4(vKYKmX9*tyjV@W z^l>-I4!!q9CH_~KNbh|#FK&9ljw`@q*Lf1`56FJmGy!qHfS@pPD6A;eN~j=gh{;|l zmsql03PhxTwC^-emd01A#%w0bdI>q72{UP-;KJ0YpXzlk;J_b}ORzISp z44>e zhoHN^w-xV7XZL z7C0GQv6SNUM@O8LzH-^$t0kY|=?lQcWcC;G5VOAt6CvLIo@t5q8{~bQ{f#rcONpUn zc}Ee$CKqn}=*asfNiG;b%w$H}_V+RaQyBJ_^V+t*(_Qvg>8*JCdjY5EsF+yv##qZ$ z_x{HjO2Jtfpei^=?&+!cDfaec!S~AXoS$xcdp?KAZGSBJ{Z#S;M)3V_OrQ7{Q=roh zFE|!`IndxVw6~fLo#O90#`d=ms9yYw?+N}lj!UHXI%-2Vy~^Htli1r&KBCDUE+8!X zXWQEgsjPanx6exBz2~!kdw&-TV5;-K&;rmt0z>ydngvywfj)0O; zEUFKyOLFBmn8@}k#wAcK>8RImvy=#qD^JYAIydIOA|G}%148&o z?FJb|$j{zD0L#I11bY$})4zS6LorEJ0q0H=k_WstKPt&pm8*C>L=)38+UA;@Gi|G# zAq(yLINunhU^YO8&5?9N?74{`i5u-=M1#0aXL0~eUtc&HXulC%C<>)s7Tvc&j-!8O z$E#g)*5>c6=E;&TabRP8|0FeV7SzJ~%P zYKbz<9)@By3>)Hxp%lH6if8CbhRG4eYY?t^0-OEX5FWzL4CrN948NCU@ZU?@Sz-i{ z!7{|7aV`OrJb^YXGZE#Jkr5d(P0Z!!W0pN`?B*X^@xogqQ(?_{MAxg zJ_`BI1mn9;gP%|`x=(}K-*ruc{gm;ziEur&xEhBPI1-e{qn-$7vgc!-2*1LxNB?Z^ z=c50WN#{eq52)NGpPMirUZ?mS`F!YvY}(U=TSjs7;bD4G^!$%@KKPjlB=bQg2dBkb zR7!Ev!t>7_riF>XVUlUF1?q*<;(s_jj(%F)MFjpgr^Ob`-soe%-Qdk*jy6=?fMGmUB~NkLsG{?Qn%$fXXU;ze1>qC`;= z?<@V3n(sK0;TjC7rbGobiVCWN3W`dLAF$5yYL|_Qt&}$*$mvK&(N#v#)wBaIxnp>a zlfm_A)Nlp}^zptntfx11?p}P>~Dy4C|~q* zOvC7H4(n`sE&kp9Px5awE{}=l-=!13S0tz(`1>y^@~VsGbHvb+^#l;^%; zZz1${-0i}nNUFIDYd#O!p;WpBL)J@HqQTYd8!4QiZ>otGAp}#|33F~}3OvnDDh{^% zyfdt%N#Tbbe|%ip4OPfdVl4CU$=m2Tyny>nlyY}seq8&XN&9!t65?F#pE|5oSQL>57WS7N}E>yLA{fg#=X$DLc1q<(_vZV&Uj zK;W+$-aGv5ZzY9)wgrE2&+vCiR@-#KxAccl(VPBwXA3%W&nsKu`r#2CZa&{6{h8l8 zivIqmr~V#+({s4~Ql!6mN7$d}k1w0ms0`#RaMS75A35yX)*tsvQrU^@;vAlISp9j1w7T(k)?{j}GZJpVt zWIfwk{^(Y*yc5t!5AQ+l1=3X0EGJJ7cS5(*G5Q4@m&AN0tNmTl{?K>PzE0Y2P163X zp4(q4?booqF6}oaX@3d=e?9b%Y;X)}HQV=$|9c2uCAL@ob6R*;2V7|3hfCkTDke9V zP*)Gb1cBDnhcKV64lA04hZf-9xqbCCq|1DZK1dauchuaDOFdp6ZbY@lr@>Nf-?~rx z7`HC%jA2+nV3os>CbC^iLt@d%_LIuh4%2gq^mC>MdNKMz_~Q!{izlOK-Ra2H?c?ifA%IjjiETe>3k9C23jZJZ)`5{Ln1$K5EH&52UTM0k$4J{zvn`$ z2dLR6yxd=D6)92-U>duxjOUj!qx0vxO%+J)7?kH)B7<@ z`f3Wi)`)yG7f(l#YVh>0SYgI^D*SZq4`qwLP zPyMe1n~$*ncZjOH|E&1_r=J3|wW)4Rr&tDj9c8KHajN-=*wLwI z->m`OpK3Iq>ifj+(ErkYHrjJ? z|G-V8jGw)p`9SRH#dr@j!+A=wGV=m9nENg3hVlu2vnO7Mb-K&^^&1d|f5*!s;B}gJ z39v)MFepJk+e^qm;sy88vx@EaOf|2OSKs2R$VwmDiFJ%mQM z1lx*7M1pNR9Y!I2974j&34^WSL!Qc@7BZpN*Ftf@98ve8ti3XN#)Y?aBGucoMN4Ns zDh?fPGBOaj?Fw|@Y;`|9WEMwTB0N)vhpqMz44Yu!XW{dhWTp=gdgZ9xOC7Wis~_Q1 z28QLW^dA9&M>71r6`N3V{Jgwq!32$K2lyxSS@iat>wi@0N zT<%#p*eFa>_`_Ta=6-FkHWFw1NwW_@9GDH>^IqO&&AdE)HOXCS#lO*>Eh`sy>H`*S z3{46*SSn)9zi@{Vdo4F3q?H$bnQPtw6YGQm+=eDd2|c{T)sFzIkciVZgIjVSCpfdH zsO^hPZS_p^X?e~VV`n2{_{#asa^Cnr zczR*J+;EYpU6lC@{G=3ZR+e^4c4!c9H-Lfb2epob;dBk}Ij1%)fl8!*DR{SV{i;() zfBJ&?1u3EHbsW*SBulSr!?5C@N3d;N>g;PV2T)-PyJJT2_nF}=1y|C|Q((Z1%O-pu z$3L{|()1D3=IM`oK{13&CUDIIaNDYIE6#5$F7U)@XqC^_9KF{OHfva8x2=!7Vre13?|273N&&m;}&czt1yHzGdq?vvQEy-e2B7P7=|Ptv;@h zM`j9h@uZJuR<;8G?IDlwWv1kSl_%&EhmD))tvp`NuOT$Kzt6<<=zm-&3jZX2{-k)8 zn}>pPb#fk-^|8}6e`5g-y%tc8@JC#-NI^coh3iLBEN`d7;NHKt{O<~ZSAEp*&hHM- zwhw&-4SS7IIVbRF*e1WpoX<=O~PjW0wm^xN=NJn8k50iOpR z5Q!bh!DrLU>Pe-_=ZhutfsfMOr7x}$f3lV!Fyz?SE>a-i@(d&h7?#17Om$tF9)HxE zX9D3Hq5jRe7Q&OE7F>g6_lIhRbTPVDtI3cvYVH;meIOd{STKvrg?_SkE@e?N6)Je* z2chYx(vq04Xwhf2$Js2WJL2`*BZPh)A?(lFOAxph`)J=?B5zyo+wu_>KkvCL4z3)n8nO0k z`$m+3>N=Fcybfg`0X9%vaLlLeR8T!&e+!m zzoPO`ha{)iha@xDnK7&D{KBrvQ>5d8U@PZF*QGEvLZX#VaC4SYJvOd5L^%=1XK~d` zO7tIgf7W?^p?5@JV&?2To6?d5N}bkjTCtGv!Z3ApmE}i2iQ}ln&)EG;&ElnX47TT^ zwy(DQ3obz3!fXV$&t}fezFI#a(mCU!d01qF$S>mby5+yf@2te6h#%v=dxVIn{(G9A zBYWV#l~1hVNf#5@MEw?Dl8GvA7zzc5(o^*aic~#ND-d$PmcPNtNw`Erp`Wh zO)@(cDY{U-SEBw*;ve_sL5w~N-`V1F-ha~nIljMn?Hk~$^hah)e{gVcIJhti_cs(~ zIi^?S2;-;TALhI-`Y0#id#>}{f|o;hIo;t^P+LL!;s70vZcWL-NiI3Pg;QLK2e=$N zF37m}ZPyP;5q~r{6D(KtDk3B8qoi9fsE3+DC&Y=Z{jd_IFZwT$PtvE5SMc#YlETRp zDe%g`D`U_4UiSOFJ|9)@fTR2;ez(>qMgO5EdE<$^k7rz!-)GcPx?l*(vh|XzyiJR? zYUOQ}m%ykPq1L<(IFW&7+$si#{akR5uBGPyb5Ky{!))9LQ(Bttfr+J`L$B&)dQ}5O zLH0MigQ0Z9Uqnw;r*p)WUe68Vj+;S%SKNhKE2+fej(H%RivU$i+-AJ>7xb(mZ)_6P z{Km0zT7as~wS0!)fGGC@m;h8q8MP65C5?6fXA^PSJ{wLN)Zf^yqO1kg(BB#Ri*UBP zZ&y(c{d)ki-FwfTl~I9fUog$re#%e7X{rUG7j;HO+-Elj4Vg$a-5a|Nvx=LGge?_vSz0uIk8iV0+>5NSQJ%f>QZmzlVKqTd@z zGrtWz9lgUWUWrwomCxR29*-X}LCl4Sh{Ua3EqN#Zb?dqo%0GSY@^md#21UN}dDxVU z5`L#An~vJEex;&Z(r4={ypQrlRC2EOk${AIkP;f%@C(w{nWv%wzFX^;OCi_`*RL6X z@u&Jg|2P_rm!M{FbB=O(Fn=>Ke-M?5wkkBFJ^V#mUuOuEc>)FN0Y4q+)N%9L=MMIC zXt>wbt*ohVjqpGEt9bct>Nt>^O1CNYpM@W5s(?$GvfhV)3fz+Rye|WrP$FWJrvqzP zLXWNQMVSMNjUVdS$x8YC6F?t9aRK1v0qAs*MU3}PHUNRx!p_3LX+K)pKh$&k(|T`@ zTtx8q%AVVQxW3o^|0M0d-E;d#duT86##8RThjHgfeasXJg`iK#ql~wg@xQ5Nv2^uP z23eIpBTnk%`I+*(&U%idq&R(I)q75rmu|#MVo)Gd%sK)Z)%|U8LVOPLgyG;=m=hrY zyka2kKZT#Q9!EF$F8XSc`IxLc2Ph=yY;aYk|Ek@Xf^uH`r8VtI2|%^k&`p*+mG)fgRa znD`bgpgOw=hT>I3^rnJEx?f0iC06C*SM76cWMpC|URE3&u(7eMDk*JB#+j=b_rWW}H!G-6AvuAx$a%~zoOqPK&cL?IQ525*ype8+qc4_khQ zIS4f=I|?jB?QNNWU(|X9RZT#C&DHo}Tqx65GXo#c5$Z4`>+2y{6w;U8atwq%m&$?$HZ9aglH{cIJc#jcosm}%Z7@b;z&u`(A{awfsCFpDA9s8pj* z;7Qfs^TssRX~MZE+}ZFVX+D!;U;ZMVLR*Ll3=KD?b=r7HeA|lxDP$979h=+@)6jXWQjS}jWz1{*oZFyk#+$i_(AjWmA5Od z;%_+e&I=a7ZQAIZKU^QDhe6RWAVe!5C*~8$w{(@xq8bBAH zM~cNUIc)_dwww|p2cJs?pEX``E(t#893G#Mz2b8h_7A$_GqXEBj=fkbOTghosXRj{ zqfZ~AKdv>yx|3IA#Cf*tIBLraxGuG2i+8*|`mw-&z0cv`zip4T1OEv`LVJYoijQ~7 z67X7f5u!hgl~MuiSSIEtx8pcj#^gAoc7v-cYjy?LRh28@TAU55?1sp{tG_#>zmC+z z{+{3xB}sps7!_MYto}A4uF`vdc6|6$=}ec-GErsNZ;uFt6nf#am%FL|8wlJnC-LL) zrYu3n^$73b?(njc!7Fj}>8%3N^nf3*+Q^3=$%z7?F)G@%@@?k$m%i>2eqsv2KP_V6 zorH)Iw;0t~y@%0RbazaatoajHuOmbHo7ZE1Z$MQZaers`&>#5UX+9?Pdj?2PqV{Qx z!1RO9gTpb$0`dX>M_&CX1x%2O#b@X!A*jf3&3}1mP3$GL$YPPjCin-9!Ov2#fnM0D zZCO-5|676bj9HmlbDzTYalwq)1Dy3Y-a~z=&r(7&AOm?#sJD0l_Q!{^-lCLR)cdMp zi&|`%&MDxs1&XH=q?%+r7_J(qLwl+da}=iMW$@@D3?goCADU{ zx$PA+yaQzdW5pH+{Q<7>ci?y?j;E!c3#Go#3tb*rFQT*}czY!b2NSS(JNvkizQt>7 z&frQx#Tg$t(=Wyu6!(hfN1MfuSvEh?gdcsi4qGd84!QU-^ab!^h{KQgr+qs^|EW*mE0xt5ngM9tS^H;L9P9 zifRiFDU*nMHdFcAYF<1+h`jmxM=^b0 zqZta{eWHpdj(!UBcM9~G^V58E(=sql#erWIe=e1JLu_f$aOtJD-Y#q=XspSi;8%LdW1yUY_^*Bfg32~7Fz9ECmL?%P|9*X8c-{O~q(R;cx zI&a@Nzi;uvL}45lC^u&zb_QWIXZK}%O5_oh6!&;GVSfP(!5t8TsU6WRknrRG;;OEM zUuIii#naL~h8I~{rjgl~{CB?(k)$^;@?r3Dlf$ukklb=ZoWz{~_p;@Dm&A!a8SD6` zJ3nF6qvQa%SjDUZe{C>o`4{lKu4a^y(Re6F@Z+{~@jdYNtZoh}f`c?ZGz{eZ;>Q&4 zkv^#c15C{Hig5rcUBdkE{a`-lnO%+Cyz@0sP}{!ehv?BgwY68;a@OLvj~dldgw?c{j=kAY_;-k8PwUBdi5 zMrK+M%zp{O)6&i;WNgM4JdU4uKaum3L9plHC#+7Qd2e${!7_9FF`vx&Faj++VQGY) zwX{YjSl6QACrj#Oyu{xgEtP;C`VU4*ZYTmPoTU?_VK*(x6|zs_nlXvv-6~aZrVA9& z!hQoj^iAHmX}Bw4QCIa(ZRc`sNH1&;G|r}W!QiT!<~g{xW5(haPMB0y8bx&jkd#Ng z$eCqc4wnLLFtFXC(%1-2*G9XyU}A@NH-J%aoZug?wK%a4DpjDg%%;qM!WZFNI{Y|Y zC|S}@exNV?(soP4$QL`fhyhPG=MiIzGiZ<3)qWKM(RU~ANT}y9@p#44?8J|4d-=Rn z)yZP7k`Dl%$293g;k2I*o)qjun_at{!(iiUx4%K!@A$%QucwW>seQK36Spz79=lQ& z7bel4PUB4)>c2#I*#fUN0p3ueHN`?JjcD;qiYlq@z;1)z6Svvr!WZ`$OFf{ankoghaWJ!ho&)wrzLPA2Ng|z`&s0_*Y5OwJ8*C%q z{57}}l-tkld%)s_O>R}I7=h88zvPjSOE!r4Gf!5(qeir117in3VUL>)FaOSA1A$R* zK(#y!g9n;gE_aw9^5a?$Wqe3`Hm{9bfK_7BIxj*3adR&x#?}BX11~vxA)(2lashs1 z6In759Z5{)cT6WWSgrWuHPaAGj$1VmM^3pz4`D_vPZ*!L`Up3m0KvlbJ3h1Ui<#Us z-te}MXkOt$b1w+)hUPo?k>WrM zKQZZ8Ps(}^&CILFevx{1jS+=Q#otT#yR!9M1zOGu0w=N6AVlb+dlC>*T$1sd?)W2< zr2kcW6@QR6HbnPeTLHVnNcC5xn}fVD0h_86%&!F{h8v)61evJ(vVnyZVWB)SG8jq# z;QI!Jb%@p|Au!i|=|Jtg_{Gk8*k@j2$l=b#a7W*_@+|=*7jb5Lj0Jz#XIsDD@jm(2 z@o(}^@()t!%^a9}Hr?pY?R)`Xl`d-tdv2d}R|0pOIMGFnY6Dhk^i?(AWqsLco-REt zQ9VH(G6_`3mHA|87g5>QaQZ3(XzPn?bN741bh5OMTaRVa=~Ig?Xpt1GF(SUjJg)*h zQ_5txhQyWKs0owkvRcc#qb95K9?qF9o-~c#QV|LME@G$FRc8KpF$_Kd@0VF z{nH9A@wPb5ni?N#J$Ktq@^^2Pl7N$OnZTNo;9GnN`CFPrKNhRHz!t1`vHZfk8k2^1 zu<(E*zIcdh5ZdfP_$+Y{1_rjzIss#Vt7feAoLX;yX-E&qpwG)GDq_Ks@FE!^5*NZJ zvN>;a8%s@0IN&0#u@?U;gNp{wy#al1Ik-EJR;D6QiTndys!H5!NNc z(}Z(2SO{B;=VH&ErBEbm;ojJTVCm;PtXE5&@`v39<9RHbtifm%`Oi4qc=V%H!z{Qb z>3FnKT^`eTTndHW@<|-?ALasdt?)fjKdSxzcQ^#^niv8^Dd8V3fx83V$fjZ?2Hr9q zV9l5%z{_zHZE(t;cG;_J0a;6sh=1Zh-I@@CGPK#W>d+(Rmvv+S;ux0y!Z;;6wMW7% zS<1dTlmV!UcMwItyZU>62T90cf5_rOIxG6qt?f#z@34W&T`XF~+oaoApIq_@c^q67 zBL$g%zY|?kxx+po$q0T8$4c+#c~cw953U*_Dl(XePqyGw`w3aftTM@sH7@dKZ*xB8 zMbM|HT0!Z@w0?c#yBg4ASHkne{+@qZ=#TFYoq=MfGsN12^Pf>z-Tn1tW>k6)q&fY` zdbdz|df{Vo8Z5?Y6rEVkB1wV+%Wt*?{o-!)bw&K(0b(Nlt=ozJbV7x3Lx9h+&ll+B z*>U#SFZLOdnWV49?5oNZHFp;L4~TaQWiOSeoc@*kOXu(Yi-X0ZK;{zYG>(umjwC06 zs#DmLdm1FtlPw@?2@(m&BL7*Ce?XE+B>+{#dC=_ug~Tr9sM+2dBR3)&Z*dX?GnG>* zA_EO3!tC()R3m}z1p4m$2bufT9?}QEFhNQl^R^(a!=NC}D?v~c#d3nl9M4(eA~2D@ z@dEN`f`k;%r5C6p^R^5hq8GJuD#O-^?V+S|;k_Q=&54I8Civ?d9k3(>j zdL54kYva-FCSP|5$c~SIFOUtwzc0rjFn?Ynj=|_Y9^Y)Wd@GzzXwPfQYZzCaIcExp zz}tvWw>rwnYp#`LS0*+veF@$vmNm%E3%0`V`vOE;s-=}K?k1S)XtN`c&thPs58FIQ zeZO{oz{$zPVfRmK7ykexFZ_+3*(Wit`?PyEM$nOi$dMndc9@O zX{(_^WJY?;%^(eFlL%!(3u3{7>4_2KZO>kF5S6pa&n(9YfD~;=t#`E67FQk9!q2td z$QJx+Kji#CC{+xZn$Y}tFpZcNzuge(5l8AxNRC9=65Z(n0;MaM&m2>mN(k(e( zK@@^}?)-yrE0iTv3syVadP2Y?*v?T4wtAY!1>5HaI%De_M5_@rz#_wQ2&4u!e(@w6 zJm0+yzPswjHdLO}h3So;3mP_|;hZghr9}^K$k3Xs3!-HHiGBNNGugKJ1CAVS3&wC+ zy3w&Y;;A3hz=fD$v)haQI#odE1fk+>6Cht0Wq| zSd9h9wL~4QeJ^uS;MYe&-C}btQ4{4g8=0fok#CLMGYL^QuhHeK-#@fS-T~`giNyXo z&7Vq7o8Lbi{m;@xa??Mp!Wu7YumZu%xj%qGMTm=I);{}(M$q5Mq4aC}83n_TVo?}s z#ejL*0vol)FP=o99gY-kx(VV+!O%M@C1yhgM+r}&?MAR&>S){i5q_`OOy&$F%8K8c zfm?EZxA*41f~S~<7>y9NTfU;`VTZ0ArUrF_4_GT66S2HhzeI3Ubx&9gd%`EbPWl+?SMLZv8uno51#>Mo_f?TY5Y_aZ~#& z-z$^`3Uae5!woOjx5jJjOo>XF1qsvkK{virgr;xCnr@4`0L;c$`1xb$^7WlDepZ8P z$@%Fe*1gCt=oets1Xd2W91M=xMVSGATJEO1yF6}vL+EGwUgzUQi`{TQkF57I%)6xh zp?A@q`?s>>_h8A7jJrZGWWwaY_BjK!?FsiS(!;`nPk3o%66e9k02@!9jN?rxjlv;_ zs=JoKf5rW_XuCx~96x=6!mo*flFt!v*plDavN&d=MV z{oa2bj-Ssu!6^W7_*p3JUtoLgv>=k3Oc0^8InD{P_%W!XELLvU(~8(^M>L`^jN{h_ zn@Hlt>_YMD5ENH(etC&ya`}TgLV%hx75;(D<`l%71Dj?K)HW}L_WWvWMrvq4VPM~^ zeKLD5$Ej0H-3~#>#;4P~RFGNo&f)mAsRw=ylJ?bXpD2H$DSO9h+p%AtMBe_oNVN4a z$lJpk$-n;WQt@vM))>k8m)Q&dr~pIYAM6axAcifoB+xboX))UVu^IkQ{}LXu`;Ra$ z@x-q1&$T|!5R~Ta07`H+UFW}s3*}gtirZx^j=bjcv@TVhE=LIKY$N=o%4>&KP+q_b6wl) zR9L;X*%!m=A*O{S1MKjW?!lIK02|)HRwHNJzw+9yCTH*(DoRo!T;{w5~Iax;7 z26!_8V$B0-1!>%$#0e>jm|s}LWbtTba2JWp1}(G8j9|7!q)Iured!)z)fsFvn_&rn zAMj$f5>Y`e{2r!&0Gl>qb8gas-=kNVc^ygJ*_i&zHVdWa7ydy>7Ps1pRLla;=+Rwj z_1*?AUrE4J#WafGF6OY5??OgIq6DPtBRz)#8)4&szcz)LL+U2znV(Kykg^Ky?)OXnP>Sih$PHms$h>>7C32 zDc>1D{zuTn7&`;pD*-zp_9#iRAzOx*`B)g==Sf7Jy}q%#m>aQpJFjwsQ!H{i@QJQ; zzGv0odvhVGuL0TD>9XK&_}7B8;OkoN<_o^dw<;-vR{*1ts$c4bW8XYy+66pCIj0Pv z3a@8tpaID%4P1{*yA3e8=GOf<51whv&CrI}8sAdBbRsaye1ugp>D|gu51T}{5*~1h zzU=rX`Q~E{_O4=1TfpQ5E&O%}-&qe-w7#%Ke(F9Tet$|H( z5Zf0BQhTWFXe+(;bGp1RVnNwhkHtP)xtdo|BCmN09p>=}cQaz=H77$SAd4(^;WFxb z3O0>Zcnvh&c!whiN+N7|j;;UJk*cvg!SEn9M_m_D`fgnQuu9ZTS~{bGE?0zgPJEyThM%r10NdOZ><63jgBn z@UxB-{x1doyPJFCPZZIj1pcgI^0&)qgVJtyTc!QIQZ8(!N5DDi;g!uu)Iyo z8kA^MmYTM3KxI0Z+i${rgc>wd7DpNs0g^2k=abD4t5uSnmj^>=C{y|iDgZdn?g%FA z5vuq0Q!i}A3)FeHKqr#Z>OYxJE_`>sN|uxy2H%fij9mCmgE~1feE(f(y$M-3GJu-YRh~ZlYr=wT?&cX}i@5#O5d+TcQ*WA=Q zzD4ZTk%t4f94WrWY@5Fy%{dId4S0e0UWesw0)Jih<_!e8VE=$GmnNYs#0>MQuzjN( zyuipgm(eGn>SmBN?@b6Sq&k);cLF41(SEokc**T6@jHIZ@-Wsf)4;N0uigmXXNwUY zZ@F)sz%u$k&-mpFe#Fjt+Z^Vtg?4bZx`c^|{!J^Q2-yEUR{YL7D*W!Oj>qrR9`Gx1^yehO zZ&if+L)bk%uUT%`%LoM1LuVXz(+TlzZcpJrhjIw5bEDHRRjq9&>&_aHS$d4)Z{Sqh zrlmD{N2Xx62?gY@wnT9YXr;>=_n+|7h3^A@AwSbCd_(E1ak34lA2GhA=_o^+fbUZf zvL5ig^%p(jd)krU+xoJMf1~0r((xPeHUU@U!B)N3Rl@TidiDjo#7mWoaEY-u^4F@wsF}7yY}X-(CEiB>1iRo5ByPiiW&{G5kX5 z2qq`s_iM;h5BT|y2)|EZcY4Loif{kv&*a>=Z_dGg5}(#BVVw%oeL+i^Zzg zVsSQBruY$0`A6!8M2d6OH&tvAISX*I8!6S{op5C$#j1L6@p!%!=2c(5my4&P*fAbm zs9KirPlhMw%Sf@5V2l)(sRx(wPi^t^Ff#H`kqj&Nl=)X;)us+{V}WD-0n)+xZ(gxW7UW@}{@;4=8)Af&n1}00iz#jbV@x3n z5~#f@j#}#1|1D~*_=W*`A36-ZA|YycLGSHAg7iKHr_oI>oOsY%-4LU9AXcY}UZId{ zu;MaK?&8ZR0v5GgyK-R3p%37OIP{g^&0`-;i@u{GZ3W#RkQTwjwY07?f1X8^qJ`@p zS{I{l6az9co<~Yw7rdqaKk0ju-Wurp1YU?kU)*`-4eI`@`WTfLL#!2*3$B^oVNFeo zV1J}orYIeLS!YPv83&r``9s))I46wpfTJ3ZQ!RYY>lxon!8hH(_kONrWK@n8-%;Nf z-(SvB{9O!4J@EJHgOsA_Yh(P4Le`EA--R%2-;BR&VKpcZZv#>f_^$kt_&&WRhVQsz z#&-)>U~Z@UsO7RfvrlRTXEjq&|4m)YR&TtMo9zn688zaEf!1sv*#CQ3tG5!vZ;TvzZV^%GvGs6q32E`9mFAhdb zT_`>AS9*AEypKvpe1!!Zd3>V6IdQ$wzMuG-t7G{7nzKgud#v~#|Bdjy*uwW`fC3&T z;(MXsJJ!MXbxPqk!uP-Ep&m1T?}x)r{=Nh#N$|Z}sz%km665dCZ;bCVu)@cVZxpU4 z@$Hiw-#zV=haG>7;d?!2%{Sujm#|XDj_)`N->INF34g~3zPS#*t0{fo2;U!lBYgGi z6@MQG6dPac4@rD{@fT$7uaT9>C5j;Fd%0pdRYBj{<{S@7$sXVQ>4M#?c@SVRcgw{t zQtJ*BdAD3_-f-c%&teGrbOO+Nk(ET?H4j~pxI~uuWaD!{iZMn1^1qGG;_G_A=f>Xg zxkm7raYXnO9R+_5{Er%wH-F~FOV%?kW^I`XX1VWr$M8}ARA8`>CXH0-$VkPi^h;vC@aG_4pX+A{Skt4R0h$4|jE;*mOmXJ~=nAsdBLPrPfi~55>jfrl9ZT zqUp84k4TKKCKsoNu#fgpvnk&fW#N1MFFs0L@ZTSyR@Fx-zD07rX!0NFIe4 zGF5z!ryg77C8#Ejb3lWjRkZS*h(UPGbFT%%gF9GB^;Nv9R}9ljckm1?9`djpH{k|h zV&k}8(J%&Nig?pSKfNOJj~+&pOq{;e%XhFm$_}j}S1ZcViiYV$`Sz++)~0@~C?EL@ zo(kTF^CQVu+2L6iXx2)bjnX|Vac&~l)`kLBS{HjZZQxv41Ri;kIu@*0_qy$`Ro&yD9^| zHHBS)b(Oi~d%c-TK4YI3cVQG|)n3$v>{~m(S>Q(7)T8LfOVx)__4d88B45bOwDWsP zvQRHSu%+?@-^(5+RY$)G_k>jbFtB;f5A?E3rvA*!*YIKAfe2NJR+6RNlpQ)FT-BaZ zc?!tS#oNQeZ>DSW@)Pp^0$T*5&?C`DM{SLMuI+Q(t!Bw1B2IR-G;6(!bj`-#e&mH@ zH3knzx);)~kO+_!?#S}hbxHExwSyc2v9^pbf6A)L#@bGfTO=x*n?B7R;;?q)+#df zihRZK&qEW;-q6IZg2@`9}`w{x<9H!ZwFUA>cyPc44@6W;Cj)f_;C1ajkP z*^3YM`Gl%W;Motuo$6cEXuq%#AJmkS`A{PB0jE>^OnE~B8Ujk}7WaJZAcB$LPX2+e z(u3KN;4b-6Zt4S+r!5D6p`OLOGKR`~kF0wbxaZgEDkCNRrL(@^D^V)<7hZ&N$L0z0 zAPUOBRUh&>x|*%LQ|2>f=9o>F!LYdN!AtvFr2UO-FP9AZ2&UjNz+eH>7z_e9a5VsY zCIn0Wu6&a*0wtGFgl>+-{>o{LqWG5l283c=0g%(RxyX$3Yjbh!T6XM`wSIV2Zhk9< zX7qbDiF(B+ZCb8&Nse|2r97q^86=FeA?m#5TpTkUtxwBWpe-qT8-U+Jw{KFursYQ? z_}mXWLtXQw{tx}nbAAF7(a>@QevBzkd;on`Joa(~WO4p`1^J7e1~F~*UXE*_mnUQU zB0W)`h`g84w5%LbR?Kc^CJUl)HB)(ag!;KO!>CrrF3@NqlEFu-#g>eBY|#ZEjIs5f z0lb(2;{tXbfZ0({2vPLA_=oSVpq~RxKQR#@t7E(cRDMVA1FfWNzeC?GQXlHZ7dUdb z7VKKW#M{vy17_VGmO&4fA-)=Jz@3ZfTG7==)hQv>g&=uUGLnCLsY7zuL~I#UBV`Cp z8z~1_BO0^eZ6j&d}TT z+OlW2tNKq*CyxJr*_=IEegEhrhveSIKSsG4_g65`uIWAlP;8=wUT3~HbM7AHpl4ha z8}vsp{>kRMe{Ek6H1BpNRkY@Mh!i=lTzPQ3qC?_V-EqC8|C71`I}E);Vq2C*HT_$93}lmGb`4`+Il) z2#`7PSyPFwn{xDQKZ!c*w@EDg6=-HlzvbVwMNhRReKTb_iF=3D9En+n;fH*;;Ra^s zKZl_?2R^d2w(Ggj+7VhjnM*EF-PO+s{T=orm6nu#ov?@z-4kkc38G9u7Ya-bi{n zn!(5BcQgxKfMZukZ2(gdqd}5eX1LLdPg03_GPOD%;zSBd6?qQQ+nfimG5R6@t02Ls z^&eeDeHV%5U`}Web2q4BM`(&w1v_?QO95(zYlip#>5R5pexH3$=zk3KGc!HID7J?@ zi!-MCkQZA+o+gfSAjS`BK*M`JM{Z4#J>(qkG&TAd?*qs(1CzAkt3v019l{4$#Ts*^ z&=})uh1B!lg;6X*FdLxUOn3>iflO$KNd!3azBr$bM6fuW!p@NhpsghNG)BjiYxgpQ z!?EwLxfmq+z_nhjk*ZVk9wnE!q)X8EJjP&7Cl+z~K7QTl0#E(n==(DT_)r3udE)4M zXPy`+XN^AEDb6w`y~%#K@oFl}^Jt?J6upIn^e_7U*>`39AEEra_5JyrwpZ9u-Z*^c zN|Wo^&Ej zAM4~RW=gAcw!*EA)&?sT@-*bsnFeZzV{OBzG}zUQDPq53T;iu^fD?-9Y>hdaemaU@ ziAGYf2OJq2jhl?MB1ejc@h99MTm+3TH9i@a;BhxFWgwY?^J3@?!39*NMZq)t{Lezt zz$zE^Q6Gk>TFDWHB!Jf{jtHW8nK@=DB#|bkjY?I4{T`>GJzE$OaiLZ0r#A)saNZJ1 z?ZVOUf6eGqgz$zM74TQ|cfR@Q4$8y(4}w#)S2y4#qBnykdv&c7kBF#v#I@j^%`6@= zv~ay6=;9%qIQ&dLBJ>YfXA@Q1!OJwNB@`3R2W-onsgGl{qHA^QXT&U6ZBGSrp@ZMJ z7z|)0wsL76oJg&v4olkc37lT!8{}Lyjja=jxYp8K*OcRD1XcmBlj}d&vUey4_`VZU zM-P)+8ZW;#7=9Z==$WJRvMj9vx6@|e7x{n_^m{l;nE_H6z0>YLy4EG|4u5Z#dQsI6 zaK1T`C~+;sa>ETWcYp+rM_Te&aG}FX`ZnSXhu8TnsWf*1*OOTn0@xon6e_TSYjx7olk`6Ov3bHQ`LLEEtO)6ZDB2Tgf(WD(?jQB zlmQJk4lK58Gk*|202rEc^HA1NaOqQG6@`!9%74hfFeE37HNLKQlo@$wwEep|VX zqww_as5KaOkFg7qc0R-Z#TXl*=r#&Qk=K|k3%N8A((|c4i_`TY8FzkwHwVA&d>&vB za$hA~2Ep(1egge`ThG7>#YMmJN96Wj%Rdl*GY##=kUH*%f8|w9L$tzd0&9v zjF&M_4eufx3Qh^{YO^kt&f5UO`-PaJ?H{wshcnY zOYQy2(pDn#XZ#dBp6koTXe)0U5MSzHjyR^uV)#^K2L2QIbMd1IJDbRVz5DR|_!IO- zH-0=wWuo{o2vl_A#|e1eBR?>alk%hKf}`WdDvU$|KYov&y7S{s{7Qbzg&VKf;hK+Y zB%ge8oyx8vS_9~~rl-?bi{F0D)?5~wXk@uE`K?MkH} zTp}Jj%Hcs6Vc2GQjm$+N;Rn;^oOB>Ur?m0}6cGK?%NRsjIO4@6XX{#04>TaHA?1tT zS7!MB(l^|g`g1-@4e$0;9_M?xZ*5wf&{>4L>389`O7gc$lH<36PD1(rd;I9baIPW* zLq8GsogNuqzWBY4hSY3!ITMl}@{3OI4zNL68;t zrQ=Rdia8L{gMIlcbkz8;R#-Sq10#f2q)L+Q7nA*0kD;iwX%Xb9q)N!iYlQb?s?s|L zsC9yEEE`0nYhnRmPDKOgKO>xTl0ft7;cNyyQ#i5i8H+cjP)&pnrXptoKYfHCow;{B z)Wpa9x(#2k{PN~>T}p>5-3VWr1kPl@iEivhulNJlP6VX`K&iFYN6in&_t7LYtULH^ z(B3D!$s_tfvs3JZU()_bX}@_1+gs;0WXsS3b0SurmTKwNze}Ghe%BI8l~Xoea=m3u zYs@8iTzi@8&I8173HSUFcugbM*Wf366xgqIux~Dz6BjZNJM;*ZJ6h!;iqg~gmkCuJ z#u4B%syjX-lH>CUt#EgI{1!gT83D6o(&n$^!(s;AUy)gxA56ON^T# zYbz$xXg}4&O^axE4%^i=V|H@}4C1Bbd^7$(d4H|E--qv)Lz1q7BM- zUn@-43jJDPrdF60DU?%u*hVNE#(#30;+z02@O~-qUb^Fd2VS^U?AOTx^hyE^cOtA0 zR4E6k^zn+i**%*|;it6!r+8A|PTIb2@9iP)G9LE|h;J>>Ll-$#hAG!;i;gJeLqicquiXYdq)B z!;GzY?7sQeY5!AcKRIdpb9--Z^W#(j(cb~#;>QNu{e&pjMJocQ_&0&lhEiQQin z@#a8OQ_SyR#!|U{JraNAa;<_4>lwXq^El3E6xLEZHdN^GO8GmGDlYkLc>jR)Aa)Nj zIO>d+@TX#`Ss{pw1|pdHM%{o6K>L4B}Uzo@?nxuw?aOY8Feqo zhs%t*zsQH_M%`-pFw>}8D<7^h>ekDLtBtyde7M%AdtE-J{g6DmLmu@Rj7K-!s@2xutG0Bh{MesA zF1=emXUga0^7$0`{D6EuO+G&&pT8rYpODXa^7(1`e3pEEQ9h57&#UC~_vJG)y^Xqn ze6E+z7s%%g@_8aZzxX^pYqcx+@6smxD^U{n9EAL1NF#Uz?OfoE-NS6pkt29+=~HFD z2P_sDp=?g1=1QD&&U~9AGWGs%V($;^;e8cvDwfw*$m{Tgv!0cpF~GhBs?? zV^Jzl!g*9Y&$gdC{W;H>@f_-B#eKNm9g|~(&)`^d+D{k<|19o8aN#%flb!#OB3l32 zML55Ji7vs>UqQJMSvWj!(fZTxInao#LfE0WI$h%93cRrnycfj;WC0$$Hlqse>@Kna zpd&$(pAgzL5I=w-LPbVP5m|Z6Sj>orN5zw4DWF!UNsNLYagcZqhYKI&P`>j$=&HUz z^<4y>_S9mjDEYj{X`x-wCU|eLWJ@jzZBHBbU_d1Ijskz)wq-kB|9`C3zcnI{%56To zyBW9n*=fG4*1xg$!G8X1lC}Cje8r zd$NpJ;UdgpqRkImz8;ZQ>1Y*`uWt#Wp_3A%$%^mDxcof->#haWUPyL?<}F1#5Z$6i z?D>E!noK^e+#OwQ_t$BjD?L4Qn}r_-TH;t@@?xPU4Eldz&|`YYX}@1qo>v~e{WEUk zZ?_l!?Ii&*R6rnxA*nUk=FlJ|3+`HZAMxcVh*74q-z>#ZCRCtOR-ac5zP#4$oD z2Q&Vy`No-z)vSl_Fl4ivSG3#LQAj!g-j82-WOfCmQoqt96JyYK*S^g)Xk z{F8{!WrEMD1wG>P97N}c@VN`R@tfnbLG)*C&-e^IQhXY6fX|i~MuW+rf#eXvFyN3@ z;*CC`?LQoU#t1&k=l94T9dq``_=9Qk&GC6c>_K{u_}Kc`c06ZNnL}E}d>4Nah7bRj zWy|ar#^D9C5&zgkI8p{!=^}_|e;Gwv$y$({98XT>f|KuLS&$H*r*xX1=J8ENw9OS* zo3zY?guRDg{mSnW7WuvTy&cg5`2QD4}$iUG|+G=$nBT%#ZO; z@AT!I(F1+&CDPZ=q3=zsHI9RUlPBMs>cJ{CwBCws!ufGR&YXUXo*s*l1Pb_T*Nlc z`)a>wK>YiqhkO71UkiMS$fG38_LqCY=LP5en|pk}n?9e%R;aHODP!R4X^aLAEHzf< z!t>%JV)Y+eaLxOOa#g2MRHigPW5>wUgYrksZmQTZ9o;vrtJdVgin4ii1&Re_IeR%xw5SNwTsu>7x5v>JW ztXeQmO8FLDiJ2M2zM1UhoC8^owvbO>LZd|&n2&*c%U-zrTi(FEaDDA9pckPhozMfD zX8n&L;86ki$NFlLqHWLHyl(IDiXxnH47P>7zY0yew9ntFKTTd<)CHH=9b^;#+`{Jf zU{dr$`rkn4S|YU0a`Ovcm$pHbLDIRZ z;g)>JG}qDA*EOX9+mV3DgK~PEmtT>uVorq}mi;cej_C13Dp0tG_rsA^U3KqI#nG;p z{+hb=H%0Y_P?D>^tMQuj_Yv%xyT8Z50rods^=H#5^tr}E`4b)UKw>D}TthE^ojx|a zcO=f3F4{V8SRqbJcKyhU;$g>W)qZW1UX&ZhbP*REQErHCcj$4!uMrk52YmB$V2HZ= z4f$)8*6=@;asHGC;7K-}>xXxo^oaE-PlUxM$A(!N^SXFzJ)@vy<)K79KT(tbkH z_S;YCwLQj1)9@tK0{BrLN6e*xm2;` z%qH5FH`jd9*$(mT@KPu!9E_xo%4sEYwUb^cx?OoTDZrsqJ5kgEXv6C??^5&w7;5)v zhh%|m2u#Y%N=!ElzT6kDh3|k~>}5Q_k502t;Oz|oIh`s9<=%7TtT(oC2I_SLfeC@V zO2G)b>H;sV#yAP($KWP<*9wZ!RPH`qp_+TITz4EhFL^*uW8+~61fWyz*)c6a0WYO7OoI*=> zQ@CSTKZ`DarQeMgODpNw}i`SalT49~|x&8G4tw3crKqj&8U8 z&5p7t@0K?Ez$i!Sm-3@|GCo?DtO1{Cqq-_a?YHwCu(+=!xu{sIl3S?>R>UB^di zw$9tbbpvj?NVl#Q6M~MWefZF+a|bQhU4R%=f00ZWLx7G0EBu-6tQTjB$Yjmtl;f2* zuv{C)m(>QFd^L}Pv-qVcyvrBv$e8=zdQJFgIQO0%UAr&?c~1x3@u6Td5<9g<#V;H_ zAHqgCH;wmKo{p|Ps1wkX@~c$+2iz7MYu9(Sa(9>N< zrGs74!9j{w)h;B4JnmaNA-Y4yo8IWX{F5GCY83Se@9NaY8aH{P4}oLk7Xyyj=54Z) znJ|l#@xBdsBsFV5617LgnHXxEeoytiJfs+c=c~DwPY_T?nBDjCKD@(Zu3)SAJfJXX zpSQq*T$obsDw=-=Qd-3KGOly-7uObM9;&bW5nMAPBxfzmzQmckzbq?&eKJU&_2x-- zqTWXW80k5Ds|mX#IBcNm{NuthKLAAvBoG$eAP~IKyHq|>eajEQaZB69{E@0oxQ9H| zA3|5fNWDb;NUU^xD-fA#2jaM62A8qmL%NP^O%P(g)k-wb8W-fLYXf7D)d!K6TtY^j z2UMkyj*#?$_qom0RhABi5t|e3y!)eFPczEfp{_F|k^_gwqPDBdkJsP|wv(7taSEIS zZdB{oXLrl-GpgEg2a_KL56Mec>?$LtJuj)ftDSx1{|H2JyCRdZ7q-bAXOup%p7k2%XJp=118T-wm%2B@DAHxGdDEEpCF4+q zJ$OeX$o&b#8Eg5+7yb|aMfr83yk1*03B($~SG8r_y*A2MX^R+!(UwiezX|n9d@qOI zi`iEQ_N$0G>B|T}L>}B$7gc!81|Y<@wTS!uJLG-#llcB!N#CC-?+ZE!Q|hO9A0eql zL=sbp%rV#S?eZo@sy29<1Hn6d;cSSO4i0qS7W>;K;9U&zx=;Ir_j!;nv}mjF+gI~b z2toM2Gf*cbBc*Z*O$zOVujV3|m`~`zM;7k;Vfp0Z@23nO{=?%NLOFVQtsZ;;n_qhQ z-Pr%q%a?0q!}Q?udieudA>t5Av9Y}hRzIaB4InP^)l7qp(nGayQK#Dc0Dy4)NSS0x z2D&h65C_2KD>Q0K9MjEz*-w_*0(u6l+bXzuDJ@TmW_SSg_61boFtWmus#AoiEcQbo zqtu)IP@zz;%xRfTc7*D2cS`V%S(ubNTHYqT!B=7AFqhtdo(UpDaTUHE&q6=V$d|ku zw2j)zdL+E)Td%tN72>%FDsctA9|$s;G^KITwE&Gj*YHp1TY7mn7W!(s@FMJ7aHUcH zqPB=(8EqN-9qXWzo&Q*Vx2~RLsv#Z<^f~N&(;oITk`!DCXQM#%?9qcS0_ikQM60?x zx_ZHDf(LdP%2#UTwXbkOws2>}_wq6#3Q6#6ZTSp*T)L>f`aV;uC+ zEnkw6NjS9VL%aqd;adf`G^tj<6jgh;04c}4a?QqNgFG#daqyKK0q!BXBzU_}GI2&i z^lkfggZbEgE<&!nUhEqU*4~lkX1>n~QBR-}5VaSQw$UG}%GB#}9KxIdAVm3bylPgT ziuXst@dE>)JytMoFK};Oz=ZPJfB(3Ry5eZ7wDDb$ier3s}BS1A;cWTsmgZFB8cvH=@<<;4IwNAR`Nl&dG(pS&pS9A0uy+DNWeh9mZ0XDy7 zJu+Y5ufA496uzKQ@uF7rVt6kUE1V)^xLI@;VzH-K8Yvt@wHzrNNyQAu$p~+|2Wz*& zv1TC@B$oEX=`R>~{`~+p*1UYMJ75yme;07W{Ws{}^m6f#0v$5=!1PSxrjcxZlLclu z!JMeTB;}WDy|VWj0Q(CBb<|b?mx`0>Tr)5sj%{T;RQzB)Ue)W;A3+j#j|BJHnC+J65Dy|%Z<|6&0#)B)jI-@gP9WYX&=#*Kec z{)~0j6FUWD)6Zqdar47*sPu~|3qboaxqM9AkJ7`!AdZax|6}j{8j`a_IdU??se8~3dF?X)|k4T;-y#hU6%Tl{ndK2^+I zFU%MX-&aL6M*r0ef2kRMVDI6Fs_@2?r$Oc=0-0nGLd^VD_Vj%f|2ugyzVb2sLb3cO zOI}lLkaN4JwkMD!dHd+RNXjW4<~3Sw{MECI0B}OZyIQmA{Xaefo8n zgsuFY2MJNjS&6U`w!dNi<@h-2e-&5;gYEnu81&8j-=M+|jTwGZ-{CF(f2>HnwMayu zSg`S50SV#1jNMW`I-n>?O|gvjG3V%lTn z=fAon@Xu7>=cG{B^%-63BYvgN_p0!7V}^f&jOru2#s8Ix#P`A^Z2Yf3CWuYWKN!l|u{;%jee#QU4XdILNnBh<8JG{mJFBOSdVG=g}Ung&b|F0w4GiLsg zAU4`EPBh6eewxFZV2)6jL%E!$*l*eAG6E9E_?~L}(=^pH2cwrA|BTQGMUU|k=&_z6 zU@ik3b2M2hMVP6>MVPjbb zAb6vx5sH)e7^0Y%o_L*6QtGEx#@UwyS^Na04dP8w<2Q-S){L&3#HLE4Wj~k{B^vE? zqav6j&2Ig2cX)_KcDYS97=)Xm{6(L~R1WtRp| z%tS+K$JQ=)?3koRy6VOa=QLsIvB+Gj>@680esEVuVLhL37)|qf$1&qO!}(h~J%Q*#=N}-jZttgjWk+y z_e>%m>S$CaA|15>aK-Q;GJxP2F7jf}pk%W;-;$kua!ic$`OHioB0Bvb;|s#eGm{hnieAPZdzibHKGiJ2BCjDguSeNM>^r~MUP@6%i*-V4U zugANp{=`k?$~QGv^*!8)w=uM%uV%c4L{-05%hJl-?5|^-@a3BHH$6icSv*O~-KNRT zadGOP6ptj*+r1L^G2!%3PoG>-+U*d4E2r^A~igHTl=w!NJ6(VOrB4~5K;Q$&=87}lv1%~ zqDYig#-(`S&@n;G9@^Sp5JU;+dEK1AVNm22 zhIP||m)l3vEI63HQ-wr3{aWP^Z&Y>3Vhj_Bv8)*+BA~CB@ zT7=#qm;>5(Xh$NaR?C=dZJZM2buZK&U@jpT3e1gZZ$s;+J@n1_{(Ba!6sjvP6GP@+ zHMLocozGGM2X047N+THFa#!Ijel;JJ z8aSj5>wn@(iJ8sS2-&Q2jZNERzI652fua9da+ibVt4DDoNuR;NI=lSuC6eQqzBG>8 z*d+p-nJ|O1+c_`YRi#G%SG<(C#{5Mtb2~q{eZLj+gJ?pw-L?zXrp79N2 zX|PHg^b-uA7)pKE_X&WkL>@(AfC5pB~^(Ke1TdqxfC_c5e#h8zIKTZ+y z?6V5Vi|V;U@ewyMz0I3KADlRM51QoYXyn8n|5vPY^&fKbH2|Zj^F1ksxKDO;)R1R8 z($o-s$1}X%Ar?a0G1++YutVMygIGiixq4mrLS@M9Kd{$2aqTnhL);X81??4sY@QF4YC!e+iSY@t+F`>Cc_r8~-ws zLjJ43HBs_Ev+wwo{1>V4-Iq!Fqr-pLug~;b{4*d23(tm0*!X`462kwD-Mz^Febt{{ zr2_Ad8V^|9cl?I_tMC`c41Z?d;Vu5N6^XAiMFffk8~-1~oBDsa7yeIEfj6tb8>9GV zxbU0xUv=hJ#SDLh;~5Vq5);EDZ2Vi}8691{@GtYx=>MgX_&pd~j9F-Z@sW&YoTkEW zjv4+4$1~n#vJCwXld$n`jc1(QgMYIv6smuspCi7{xI#sdBvH^Lk%Kr@uXwt{d%S7@ zMKylbP_yK40%=+oi(}+yI4y(lxefrG7btlwao+z_viB!OK(#|(e7>NvTjIke@ZG_J}((uW$Ub4if z|0Jxx4f_kzNp=49lqBwGSIOpPkr5Exlr|3fl$P6bv zs(&y$aIvZ{e>N+Wk_9Rytu*$H#K=Bz`8Em3OpM$9O^JEhDaVV=uI*IKVPWwpjJ}x+ zWq;%|JG(}7lXRI>jY!Sycnxg%tc&xSS$bn7r;N8MIm?1Zaz3LC5t$rAe^bKwQ=qEA zrkQF#A^jdcdEM+eY2wNR&+#f!Ic92l+$+5Bex}y9+NCe+)nPnHRbw)K9pprHWUS4u zH>&Tn<^T#4;&v;c0*60^Q{-kP;c;G)gzbTi2XUbK9T}B`X#HwbwODWlxgwv(*(J?> zWhP~>t$Y_{eEKfWS*oXu{aTQu%h%Ee(^ujjq7!HDd-m~|80kw2r*9?E$w*zOK~HAy zk{psA0HS#OKlUWPOMwiW6qUr6c&U>3D&mkN&Oi%8xunu(%byliOC_oF@l_&@Et6w} zII7d>dUE^RxE=m(-E%T8M(hy#ykPKLUXW89RAYW`DMorS;K0nU$009eTr5nF{MxhM zo|qpyoI?^r30i>;h7!Y#N)PtN+P@l9^;t#+`88)Sl~wHY@KL5W zk32m-m$IJ4^bgrzd;uMw<4q6Y7hj-%>xsmg*|XJ8Vl-tnSn(eG$8n;Db*K3^2?OJ%^v$y{oFE5m3PjBqrCqOexV36X(m$K_AV8DZWPc9P*@%ad@FHFUnj}HWqgDE! zj=$e0{1`+j8*J+LkTBQ@0$7uYGmI7W~}u?`nP3#cK%rtAnyeA#IFN ztkoi#N2nhtd}r4N|00B3PaZt@acz+BBfL%_@#csf)%qb*j310NP5No*xuiYM^mAt)WF?euDC^)1@ zsVq@M`1~HNJA!+khog=oXCC> z4pZ*A;RSi9#-g(>Be8a-?Zbj*jN&fm1*9=N2f{GynsaV7Ms;H`Xmn7{4shbDnF{ z98M{ZtGjYAQ)tXC%1Ef=3)iNpUpR($J6mc%n(+1-ZB6xoRhQH|E~uTJST{X!%btF! z&>9QuZ;~d&bg49tA%czv?fVP+(?T+M?Rav>^h6mg?ARzS(NzJ8J_oU&CQu!b5%mhyTM z8LH%kR=aganv9eiJBZYoZNwiwpJ<>WaWW*(Kh7FvMn=9$8n}|u7oOu6Nv4x6YR*^j z&s0GIW2AUT=Nzcrj!80}DTmL3u`cAgB=cW&? zbEv{I8TxaVe^zHG`&1NKwvNE!c$y4#(-jXxr71*P;7nYpnpDMPabln)PqiNOmnum*Q)ZZ!C zren@LWtCse_uPmtW1Eg6Py}hja7?%hszNaxc(tp# zj4YGTGsntnSGC$4u^_>ix#_4e%~0h8jVbP%<2)W&5^RyWonkIwE`f%@v8#Hfr~p%K zH-PQ(P(K;l!l|A&NV|d*kjK%j0?|iXtH5XyxT*tE#Y>)ds-~rq*XhiVBCnsfzl>v8 zp_D$^@@M{k)cDs#WwIq>=aOnk=2|jaDR58Qg4SuN<(~1WS9s1(o#h#8OXw#`W|+j6 zgjTvqYq}_o>wV#rYZaj)4ZdM~yw6KCId3&)G zmLzK5RC^xwDRJyzDH7kxohgRRQ1?;uh)P7U}gBP!}6#?@zv*eCN(Tw+UmjCeMi zaP>Ys?i;p)YB}PEJk9-q$LtqL4xM0Bek;|szPZGVo|~(-OkFn`rdEGf$}q>aRh=q( zA8OJ+a#h_=ic@EJSlJ*`pR#50qmg4$2f1#S!`{?WPU?xS+aKkra^*);Tvh9gyQ!|K zdyG5Ek`y6aulC%;{~6vZB}*3$Qwn{_*k()V2d=>t-%CXfQj*eLRmE~Ir=KdRa1sL< z8F-k@A&8=C4vtLSv9-|XHH>YpU%L&~A(Kuil4k$=64e=_HRJp;Q6cX?IvVQI0}_5E zZ24EY9iGy9e{t`6KH!UR?pjUgR`2b?tY-5v7;+MWtGW=zjB|+FM+lEb2Ql#d z5iGp$@uJ>8Vkk|HJIM;^eTBwgqszloHLISLV&x+1%Uqj|F(}ux82L~G0q)6#Wmi^y zmFu|#Jx$;p6R=8^MD^uS1hGODLpBJVfZ?)F`D*X} z6i=a?pqcSSK>B1XCXp2X2@a#1=87w;JSPMuC{E@YoKXAv^kKPM@3OkNj>_>Rp35W3w`$D^O2;iOi{i0 zp$Jmu%Vqd%Fy8}WPB4^DRcl2fI_J{MO_AmlZK+N1tQx6$iubO~&E$vTS2cj7kv0hi zq)gXZ;cjWE^WVq$0w@Q|64-RS_I@ei3p)QI8Y*2zzMuXoJ0#NgsqK^gp!3T|yr=ln z_t7B7ddH`Z_MDuW?fFsaaL*4zL)4mt7M|2xBcsIQb9_=tg+U8n$vc`zFy?L}FFTAvx`+ML3Y5f?LyOs~+2og^n~v+b|G zZoM@7m{H=J0_g$I0Ao3qUtj8~dYLld*K=J}*Q%QeSJkH^k!BMK!PJdl9cp}G^B*34 z^ihtw{`geZyDZrEYOvmsRzL2xx&f}u%++MXjepZKW}=rfuBu?wbJF-XR~$F~O|R3n zdCU0p&J~k2#mV0||Z`i7&o1%*N9((0d;Q3y=8Dv7d=u}7QXFRG1e6~mzS zkFwwh9f+r;^aygO_dj|v$&`|OnZ24dNK2LnmPL~A+}SRT7Ag^stNMG~DJl=zs6-8B zTo}V1w7RO#kf2OK9N3{DMa^gm8DF1h&&EyilSr1js_&%@qat}aGLmvNVj@P@5qOQk zqL4D1!!AV9EJ2OI?hVI^Zn~-;msblCjh0*cf0Tz#e_)J1ILLL!nY~1Hvx>@Sd@P9_ z)q-$T-a{zgS}aPmecP+P7atr;d-wq6P3nn2)^5z(4%58po{3_?L?E!utzoI9KBLfI zM-Q9rDMleXT}ojGs?U(g0ag1(PBy9X;Qy;7vY6U&AH7IRYPD~uc9b#FwB7q#!^|q3 z;=?2C8Kw1Q$od2#t@GN(x3;^gOUW@|_d0{~7@9c7rbg_*r{OhhdwUAO`lt^!ek`T7 zWsLM6EO{lr6;U0;l$TgIB&ucm7ki^PqGe0- zpilX>l9%YW(*00-^|pHd3w>(9z0`{#4KU&}G+>9T`X6X?@0=#WDJI>DGGiDaenSZ1 zk`9mPZwxIs3ohH2;?1gW!{bLg0+QKpjaKayj2d>*f2hDS#eZn2=Y)EH3+V{=;f-oG zjmlHxyG=$Qn!S6hJd}5>)PTI(iJ@z;{1wT-li61l22}a9&0kGbEM%E1NaHU)b-JtS z?=<65=Tj^B_bMiAeNY(@5LPG0`2$n@!Sj|~%fTi^ryB>G=+dD(eu!ybdv@qfp&(hp zw@h@a_W|KPo~94nuZ8z-Bhs_yw-y}ttn+Ha=RDB8~6X>UR0Y_w|^?6vxfsRWiN zo^KZcxvFKAu{_^7$S{!5RL`H`PR(Z(fDLa_0MhpnqUsFnQ%L_8?2{Z<4N9}Oy@~FE zJtwA7_tH+^;aOV8=k*4&U-AP~$FgHTkbXKZ-Mp*~whttBA?Owr>e=)ASZvSAy*905 zOk8zSV)dAdXySAzdH#_`i16U5Hu?j@Y?6yAf_EszwnyQro&s0Y?5dvZnUDR6#^Oj7 zy}iSBw5#=`1i=oa<6g%?&aJ4a%C|F#z5OHW=|Xw>r}dOBPcK_f3*_mq)>DBzJ!w7N z#FNEQI1RR%`>%V$d}Ry^x~eA;RI<9N%gA~T`Bcv`PA;l2jAxEqveAvI%WsUP$RM$z zaQP>2Hp}9y-bNuNXQxNg`JGAUB?k3`lV9>|*P-}*(7y`tDf#^z`k{2j%J>&hCM!o& z%BP$3@5MHE+;1zj!OK0@_=8uts@LJe8iaWO`j%vofW7uFgtDz%S%vDOuaz9EuIZP; zZmNyq(@^YqEV@0g>jN=)ff0tuGwcmr`d?7KQm1;3uU~80n~1KXvN&+++I%y8#GtT> zote&dhxlc$OVL?n7M-ZPdlH%3IA_O`!Mw-8d3yKu-ket7*s@@|O zxw-QNbu-3Q^@PN073+axUsD4t_5R~di4dlJo@od4|aKB6{(hoDanX-L$5{fGvi8i^VyigT7kGmwA|W8X!f z3LUc*6{DPZx99_->8;$y!JslB@UYMk5eOq{^vn?`p>$J+|Fq*>leNHes#bSZdti@m ze;<$vZl*M@nQt6e?|+TnoYMNJlKY=`VzA??9t{v6RyVh2@yZa0nEAKgGmL3} z@yPSz$Wx4~bb93Z`>cwmhL^S$W4hB^Rf%{=o#d*L?WE#?<7?UPA#J>>yCiK^;SzRf zz$4*PsnY9Qbfx23{LTINZqi`RL!*U`Yx@s`8UJWYUF`xsJu*e1)(Me$AGa!6dw>UN zezON5q};<;$=2C%n=tu|nab;lPIAF*=M;X_T&^Rq0W%hzr(5aYx64?tIo@DNb1+RI z=(i_{;83ejraA*NC>$LhSpJDVi|9nC>!j4A@8c;_PVH~vVEQL(r1MRqRdiK0=|F&q zUn#WJ*+KyR&xAsIF%M?@G$XtoY5m($KAKKftX$bK*Hv|iad)+=>U{3RqZ-sK!nNG9Sg2pbd-C{%(Ef~w@?-8U zF$cV!R|!wwga02HBI|^NDvXO^l5((>XW2#~6EbVjJW9=zuFdHks$7qC-SL1?uB*&) zO}kS~6QulI+MR8}&&qc(W(zp4Y?s+xW(iH9WRc9Zv`P65%!Fm}f^0*DE35<8wngYb z?Sh>~(N;v|vzt&lXb_qtaT&`rZzmKxcO;L#rsVXYW3#dGAr(D6eW$DXB_n_XE>)5H z_#FdfKZ6jIa~G6cb}7010q6Ejyff`7NfNnA;wxF}Dj|Hhw#$0+djGkn5EzXKmCJBS zw^ClBwVkSFBH?I32|dx*jwkB<+uYDQUD2Bey^bfyJvN)Gk$>@*MJKvlrg&wXDZQ2B z)ICM6O__1#z~-3BL)k1f3XjS+_BZ%!l_2SybQjMacvtm%JhuOhe>Shh#~EH9HmEa| z=c<IA+P5r2$IQ!`nuteUN%$JN>?&GOchtj!DQ9V^>ul;Fryedr`sZR+HBJu%fZT= z9n)eiAx92l|JLz|K~|$N(D6GNAF}$z+dc|S(bdn?hi&OFm({?(HUF=ezgU=8E29kk zWCx&YGqbi=80UL(bIU@1aF+KR9)=D31c}}9#INYWx_kTSsXVzEvKR89{ zu~N%go8o%<>(d<__lC#X(SwnvMRJdVf3gY4kHbYqB-h8Q0R2trB~% zpVs@oAXs}IDj3Sri2VFfo8;%&Lyg7?$(v>-?}~RN+nDu9lq_Jgr&`4?@+SVul&d1< zOqUZ#JbR_-9-1@#AtY>brq6J)jg0!e<{cne*71D3|7$~LvC97TH^Rve4J&vC)^2St zA~EpL@t3fEn)8=4-;~5$e~KhVZ3s+;FS1$S;=rnN>ix$IRSMw@ugMBk zJgF>b0ME?jomuNGi%ulN3yi8r>|htS()PrgKQO>C{X0rj)02y?{T=tgh%HX1GB(UMzY zs(Y&3+bVO-AzB#%-#1KHufEZYQ*~f_20O4Ttf^|`oM39}J@wIaRMUzrJWOBzv|64@ zJ_P=ZQ46U#;bgT4=`)rpkwL%zmoioi;me7gl4WKJzNiXrrz%dORYfdjw$c5- zvo+B!Ii%Ep@Dldv_k>CBHeG2*XdTv0YAs$rPO^+#K^_=7SrEHdIC#x-m(@~?>T;d? zN;sb_8ycR(Hu_mhDgSDbMrcK@O22J9dH<^_{Ygd@k=`lI@W35!&~`Hy_cADYDnkY+ zKQ44R_625a4M$uXV{xBIY=$YZPn6A}?s!YyrkZbm{JJEXw=Wv4WH#*65m3tMs`?9_ zOs++4&nmyJ>if*FKT$1ySM_T1xdV5z-60)C)mIHSGQUsLJfvHvr|;)wSjHMSuw+xbcS`EQRhOjR ze9J^;zg?TEk~*kx=~(gk(V?>9rNir)$NxpHsyE41?h0L1F5|AqRn?z6+8dyN(=M)gS=BbOTxg%Hk)s}HzaD{F=B+0m-7iJ(Ar;Tl#$bfS zP?5oq#fPNHUW!+~V=*xYffmWv2c_a`FOz81P>XC(a2BCSF}ggG|5mxOBuWQ=U&o&% zMP`REs+iA$SJR+C`8quS8%q6VXrKY>@p1OQ*&DE*)u;>K^J;| zc(}({59NIy8HE~>FYO|NorWJ48C`9xBw`_<;5H)u{8X@5hzm?82$BsyT0Dsu%yRIa{gw@Whbp;omS<5*iv zGxS?EDdnoZoD30yy_Bt+qe+R;g3W%Ofn*}NhZ_8RD7q3>1N#8?L<*6uXu7IDAloIi zcY#u?z79r3Zy#&@dS_Jlhw$G~Efg}jYo7oE)^J&GHfG5VJB=OfkC{>SG)&5F*AS(p zx#rqRMv*A~%$?mtP>FljVP(U4lWh{~MSK%&{D)@7)L?@eFGeHFUDaElCR9g@j%+-W z|JHs$Ml=VJLUELQ>-a2GQj8m=uU7y1j+aDPf6W-Cxf;8IAQE&twXo`sCD{98NZnCx z`dDxJ@V+DdZ)fsGRiLeXE>p}#AuT~!_NG-$rZfnZH0n897p_V;j^OvrzX`t`R2uNB zRvN}L$vii8wkOe=Xtusc6Dq&ip5a1!+*iV(_Z>-twaj)8bs6to!Y0Um;=n@E)bTI5 zTg-f{al~Ga`cJV?V6Y&><{=OU+$Gc+MUP%=tR=uQHBYN-6oVe-I8Z|UDyj` zqDT^~HTbRAld$}a_OjVutDpRUKlnq}9e+1Q9A`7TBi|vZ_uoAfWeb;Nd&Dg;-}qzR*H&QoM2o6$|PL6f~jDp0lX^)HkXS~5=q_5Oy)NbKe!p_fQp)lB;n^fwZe z6~)Fn(c4)D*E_A|?Xej))^*hTA0ueTAFatH@1^zrKle_oqE}+KbqiyEm!QHJIjyyS ztls63lQv=6(>c6Xa_6a_J0REbWQezE_5L>`f^g2*iM>gWF;>pFsz1cAF#1E#_G~4; z^}Vz7^IoaQKq+HXLghrL*tz<=cdjP&N-tB;1z|@0H5@UfIl5R7BU> zcf&DV4@9W9YrMAXp?&^uo0!D5V?rj}+A-5_r?Lu>E4IX({7X4_rFk5(gm1j8EaB^s z);nhV``0hn>&Bq>0o7xv@SF>6YcBuC*d+{Wl|(^vL{%wbC#Cu>A~CcB@_~B)`KR_O zpz|W*aaEs32n>hNlp@pdsH)H``>fV)Kl6eJsz7&yvw()$1G`%#5q5LWGGU^4{~i57>f4-9YKf6CKe z2qeRtD$~`f^8kH5O9Y9h- z;qg1@uc(BFze`)Hno=8sP^#P(X2FJwP-V}!SODl zSDJ7u*01BX9RmTqM>=Bsxy?knT3`;u<~#H^CF)nMi*qq;h$-~ zX!Xy|JyqAge8lz3t**P8$NnwFY_Ku&W1TUnB1;o))Y$Nn7tMT~CyDzrDxq}kB+;z1 zC6~XV{q>wY9mXfqMjPb*bMEW?*V5xrdFvlS0@dPBr9V@i;Dm(kjWl?aL!Gn$m9Z2_ zoCKQ$;_Dli!Ky@>M^WwgM=$5~+4OZc!eIR`lw^OW%tqKg0rA-%8Mu{wv(ufP<7zK7 z&Rm_Y#JZitMsBz<1RBx)zC{tg5#kI_h-nM_28!lE1ah8?$ctnIPWXdl4f|bfXAl_E z7^3k$RGBunI>I`FK52#d?kj`XlC1NfG5$+5dOZNbG+_s{j>g#0Y*Zu0U(AiDL1cj6SMF~WaAtrRo7IX{a42!FqX zU+EmbGSO9a8<`=tkz=#36bZ+*DjAQbq)MsrTvNBqG0~f_;&d@=)_z15r+iLo`^}{O zA3R`g&EPn^tPB`*RB|R;IT43M*-$ljc;G|oM#G27mAL5+e`t49pnZdpH7doV*W@=| z@%t%TKcuQ8TYgIlWa<45S%neW=vnu;$?XEYQ+4-DIXG!`yys zbSyay&S3R&XB-8<*kUzNvFePw*`Zhs^J!#Am_OsZzPZ951&AeRYSDzzQ9XdERw5kB z91g!A(*MSPVI=R_kmv$c*0j(?Mu$}JUg z`~*k$@3^H9W0)`YjP}c5!y#IqX5;R!JcEKMPgVDwSK@Xed=`mK*=Mj z$)LVE+|ecpCcRh83tT|Szx9Q?pjGb=PzlwS@xA0Oe~`1cqWJfJ>d;&3IMP@5?!V@G z+c&4gl3#P{3ztG8utdttbzOg>2{zAjVQy(&e(qAwjNIJu#fvIDIiCD%j|@Sn-$?7G zcXVrMG+W~MOuR#LQe!02j;Q1r+UMtbmY3zv$PJO}L1pgv?Cd2a-t1hTZ|r#$p1i`+ z?8Sve`HQ@ZXXMWFj2)X>kW-%RDbFeNR6r)Z2O;UcNu!BbF0DV8G}72qs~yjE8rOwf zS8=W3YUf%`fJFp&ivSl5(6l6GD;97#Nij{Dt!HW4ImGaJsiwLAq-n>oD`M=w;3>Ba9KP_s4R7(^N4B8~W6$@N0zZ1q~goLiJ%vcyvm_HjXB$M1wtjUl_j(uxTaa*OhF%9FX3A~3?8o8zs>&vWPda`VePg{39hygVzA z4d;2rhe*WEx_O=yXlCOp-zp?pqDG;ikVL-Npv}}A)b~=5%;KbcS~^bIQu>X$5?+IX z6f}N)c-VmROfHO8gtxwe+1*s9M_%;uvywJpLiU{OCFNx9veNRr3isli!Xj^ZzBbpE z{0q&O>Ds))UdVmpYe}kH>ZfF7J;cJekY5QSLzxtPE$*Ac;lucSn{XmKiH`^kG)Tty zFB};^K^K?g^*8c~2YWct3kmm)@kNC@l^}yuuy5cqDxBL4_y70!E`iS<{1@psQ*s?N-~vg?zUg}LGIGH zRQf;_jxm?N?jsxyQ&j?RP`_|Ed6XydFFGT-YS|T$m+&vY%uDCZ$kJv{$(}TOwl;gx z-09jyQzmML$)mz5ELk#PLQX|R;gS+w=DCYXb90LFv7Mg$C8g!dwdr%_YZ>$AYm;X2 zFOzEy*A%XFu1Q>TBP32n1wS=pLE54uR7&G?V^TwTj!G$T~^V4${<>oD(GyYvC;yYzirAJh9QqZ#%Dy-1A)bq3daqYvvRoO4)T zfBs>8i-~eC*Ck^(GnLDF7JNPGS>6p{1K^EZ>$vQGKjZlVy0i~++27mmmlFR);|}Zl z&O59R0_|?{-u^82ZM;hZquG*H`OM+K}R3HBdwT zBigBWIKMc*q9SKWK9y__isI}kEY8nflJ5yQ^KyKl(cGe;nO*3~FVFFmmdC8Wd$c(1 z+9~{{Smagkqoo_-uZ(7n#lG-IGenw$|6BY)-r(;j>C!(a@fK(Qx51H*3Xk-URy-mZ zqAv56M%&tx0!mcDCr8iq!~CA5Il1<0-`wTi-=XDe^qex#wkPTO}-q{$F{H$eY$` zREH2I&sE*IkeUkP=faHfHY#koR4;LoGBc30e-#a@G@CDslpF11+|RQF6M8cyJ6lvx zHK55ZRov7=NolAu5ZkTIqu+M4KVnR=n|!0x#j*tRau8<>{Tpj`0Hk119UdhC;vjGke;lmrqI0o|}H9mOU?f zacOyOes)RzGWW2H++!j{d`>}WasD}lxw+mVZ^b!f<)t^|=Xxs6S>!D&%3G3~drsj6 zDHn_?%N`t6y6-;Wq$e6=(jnZsIa-EWy_;pRd}V; zM7_){EiTKU{}ag%vNT#T(eLMETdamsZrt>2{}^iGURLNSaF=+Ciri(Tg(cKrnnn{- zr^$E;#cVvj_(NdIxQK4r9;NOJKb{+ULV2R1*C1S6SR(B%8g@nWhjSM5%IztjtB1C` zbKDEhsQ9rg`HcPR5nlMFOYhDpabsu-m*$6i*vDvY_p*WO1wF=SEuDKDpxmia>{cHv`J;AisDK z;-2X(TCQE1>nW9oxeR2ew^Q?TP3N2vp$6mSLPm%P4Iv<*B!q@%q(aG(CNusj-bt9MD|AxyGb^V0rpL1F6qC-Mel}D|NuDp9`VY$bfQ{*nrCkOLPeds;s z4Skq97W2*EUe2PzrDLVCSXx||om)hgAzOw9vkOZWm-aBKHdTrY53P!$3a&+jAA2FZ zM8}Q%#z;zqox(iQO?{A;otq<>O>JW_sb$W}*D~`p{>{qMGV?V4&04HwF4p)rYq^%W zT;ty?pO)#<_&2Lq%PiLTH>*g?EYkQl>jo|J291BS3bo8ajeoN|TBb+i->eEPvqIzF ztO6~wK;z%694#|PhX?<}!_cvleNYi!}btTB>C()t1_X72`G{{pT{+ zYFdkIPic0s($v25AtL-(dw5GQedV6kQ~qUGLAo`R zQcUh88WrY*3EI{9<+OOz=%>4|#GP7E>ZM*DC7q~?M{6^r5-6d3s)~HHmOXv;rIRPk z&eoE1N=i$X7ngb~R9Cs8j2dx-mNQp7^CB&0o|coNoq48~lc(htX~`qB++r=aR9mIx zU7?+Gk(QUEx%2Xi@;&+2T&LybYk5W1vzE71J4egERJ;BnEx%N|Udz8pyXYcqiAO8+ zX+`t2)YOZ#q6$DO@@T~~v{4sn#j~}u_+O|M7iq=C+Ne=l3FK*3KzrCl+AytTnR?Vp zFV|LFq?MLxD^_S_v$eA?(#ndoGD2K@mR44#oqe`eR-u)7c-C(6YUOmcFVf2AX%}A% z6l-T_WESSq zuE_Tw)pQxE9v$VSf{ZE5DY7J=TUtUD>Q!pxUh2tN#0UsYCbu@Kuw;~`>Q$ot;VY>=Fc~7a!Z%ylo#fdc--arRB9zu!`_k`H5nYy$m3C# zg*IL$n&mdh=>Je^bx@AeermQ~NSh7S5y)^Vd zUPZ_&FW*SJNXdOoq+3WZ;y7W#S!h;qSy8^vtrZsMETLIJ?AoHzQtV?XZHc^6FN|tT z5l|yjQUu4Io1%G3WPFLd5$<5f6M7T6p(6leA&=SAE0IAf3Q8HNSz3yPUuMiHg?+2Y z6@k&CM=O5vsk|30_vFJcS*w*x8VjkkmzFYc!8`{k&G$)hbDuWlwCmj3NVhhpkWnxa zVcC~Z7Gdc|_jILkNd7_ssU?pZwy^hB#)6W3%S`5%PT?6*dqdMHYM2D+4zEBjqQd z;9KbD6qOa^EXwy3=DJg*V~AZDrJNPly^>Z;M(WkkhSs$Cm^m42bcYI@o8CtSvK3ts zBPg!D^AICE4G^0ALPkg|5*4fHmB2jd9GWG8?wUQMn$hevpqWLs!fTb#R1x$@w{kH| znVKF~uP=7XmNDDU9^NSLF@u+QD!wtiS=3{O?=84d^zFu{&){aNLbfZ+(}dT$^{M7H za98;Lc)73`k9((E-^RMa%S@E}d$|9t?OEQ9VbQeU?``j`d%-PSsknP> ze#QU)jZ1hN_(iuqk1KCK{F^BE)^+Ze;d|?yU`y2dQr4_nVkGRnx9#ok#Fq z=32N<`E{4R8uWpUVB>vVdJ7l;_ku~k>C)YFXHxEG4hd{z&ZYo#K1?{UrLjxj0A@Ve zrSAf>SO^ycgW!;9AnU5q1X=i&C-`)iUL*LYF8wjEU{jag3buj!!DJR?CQau(m;yF{ zSzywiyL2Cz!5q#i3&5NigxlPuj|2l?raZH%*#kC!cY{H&2~1*@ zV;h(O4xWL(7rONMU;}$Rd|(zETkZqfz-D=7FV9|i2Awkr#~!9+!Imz4HkidWxiT=B zt+scAHDD9i1h#RdC2G+}UxN2DY&SKMxGBySWDRu~qspu#v-KTID_12|78E zVeo9;gDIesb3LvF+rUaN(AK4|2ebZ3{(%MmVonXLd8lfN zp#!FYDSMfJ1Pj1QunAlb2L27dV8%!A3pRp@nWV2Be!+&1;TKHq=+ak!ZQwe2-bcR3 zGq@K_`J_vCu(7=W91b>t8DPez@C!D8tHG4d&{wbqYz2ehez2euy}KNGU@DmLIs6K; zWVH$`_>%Gg*08B~C)oHO@&#-;K)x`c*>aG40Rutu1#})FonZ3Uq!Ucyvsx`+0T>YX zxWl@WXB$#yEVLcNp0L#E8@NUrggTs0gm;tuQdoTzFkB8qZ{GR~7U>leRCjSV2L1)ro z{V{O|Tfr7^KiF{MVLge(Y5_0>OgibXo(1~A6<{NHAJ_su2L{32V9Lpd^)9es$YI^h z{;HIrhxMso1K$@fkmq5C_0{rx8uA5$rz2l5>kRk>o6dw^PDe>fhF{P(0)D}^v)~s@ z8415&!zlO#8<{8GFVDQS(d1ijNQJ%q_VDbgz3s?gVW@}L6 zg`^YorI0UR!+7!qbWS8+1XIZu!HdWjFbF1IkN=Ag>tn!-OAhPv!64`ZYbGHdFlowR zy%|iNdRX5p?w~W9=XCTB%mOn6rytgfz#4Eh*aSWX1~W*fxX*xJ!I{Lnko>yrus#m- zWsxsn5L_Y8S25oXHi6Ax!_|lNJz(3lhjm8|{`e|wGFY<^y$5|c=njHf2EiIIsQ~$c8DIQO}DtYE8!$vRzYyk_v0N4OJ^U+T*84Q9M zU~&oZf*D{9SOYeK0k8#3DJ6g9J(#!{zQJ*zuM9bZDK{Z!FbJ*#Gs+L^+rS1e00zK> zCGb~)UVsH2^a5-GeW25eUVv?2Gnlm$y^v?nS%4gu!7rEvW`GS~5m>Msy9Bn?9M(6A zdoB3`wt!ur^QV-XLihnw!5VO(;A-Rq`tB#4U;x|+W<7vDfi2+R8%P)XP*cDxFbnj7 zKClsN0NcPOF!{H{EAC(y*aEt5gzpE@3$O(&0DTXk$MOtr5cl$saxTwcjXeJjeUN9cRh}Es2YCjQih2G$=>!AdLV13abb^iGdU+3S1C#$izR2^_ zKZr3)t`i=>&t@$QLkcJNW`O?jT>}eGBR*KUIE ze;(F{gGv8F55O$20Bitjz&7wPu;y*#13KS9KJpAEl@sn=3&E5<$Omiz8^MP6 z&;zjPee?iq`v5(tAl$#v12F4D>>$|q5q1y^29PW0Yp0yZGq?|I_?U9yf!|LkCtwYj z1qQ$sVB4pZ6ELfj{E%lb049BoT)n&plfedXHt72j`G8H}8ZZcMkmvpA57-9o2ebY| zI+yYcrh-`qNT)o5Rq}k0bb<|Fi@XN|U~&*WScdyo=mA)B2t5FUUFdw|xSew@^;r+_~2S}*`sg2^WnFIWIJgAL#waR(hM(3>H|3)Xj-$^hcz(CO5NsIVtyh6Ta6OnZfqVgdU;u0aowwo+jsy!* zkq=mN5%K{WFGfCK)->b;I_DxEFl8R{xefnW$Vc!h}Yyz`N;1{d`gW_IBzTA%g za`FWXR*)}XvIqHsE#7Xu5zJWDt?vYDe3Tb3WjXxbL4JTKV9m|wE$I9S{DN)ZI(feW ze!&1305ev?Zw=`N$AE2MCg@y6zJLX{kS|~ZxDjjtcY!sx!Y|kaCe=a@OaYVq#0&bs z74p7{c)_M>;sqOSCth*CgLr?6{~F>21GUHrY^+00V9n}o{XVeZXOuI+HI#38|8w-H z4nFQekHElM_yv=H!MwP<2OGeed%E@Kz$S1v==&vlw3=to4F7>!2)m_*Z}SYgX`e;XFNX$zo2tH z{DO@S!!KCy2>gN>zk^?}0o)DNG{Wzl&FI8LAD9Iu+yxzQB-jSd29q~ZPC?(FD5qe{CiDo*cm}-(oqwjBf?1$@Ep)*&Fyk+z z6Kr^vbb>9Vp5t^u7}i5JWQcY!tFelQ3Q z{sr$}pq>HSz$`GZ9X$k_cA$q~atnG0HgHJDUcr~i*L&~}CW9HTkX|szXL`y&->Z}x zumx-alU^fV!2+;Lo?j=uzl1+=Hp%ex&OeU{jK=7l92N{<8+m;8e+tU=VBr8#x`N3(Oj#>+VP3?-X613O0cSV8Kvb zUkxUms_PrT7H}8nbL)B#Oy(fcA-^L&Fbym?P1p0lAXoz?57+g_z?2cX-U>E?`@sM> zxRLlc+hiOV0JG$I6!{^~;5slkn*0FU&LKbKc?|jSd!EOVA7J2I@&nA^NE#p50^SD( z!RNplzT2@!oHGunOw{#M z(3h&~3&FOF&^s{s5?yZu8`E@sCzvux*E_`>9Q+vWlSwDo24)FPfnP8%6@I~BI{E_^ zOhI51x4gd={z2z;=rP!KJ@N)yvI!6R7833$;sdV*n{tQ` zY{?})Fe#7tzydHR@4>-;gkC;+0VXY`ya*PMUa+8$d1Wf)3 z=>luOEU;+>@&J7+k%ze7hCIMVuuZUv^nq>F$a53%-i{uDSzspE0G5Gm;A(NdgZRZA zY!P>GuegKSGq~5lH<$&cf(>96*arHfIe{r)%g@MPu;EU^fmv&iH<|M<%DC2WZQyF<>f}nC8Ly>rA*}!P z-;vUEbHe*NIpzH*f8Rtu0ebsh@2@?^)y!4IRmnAYSAR|88i%{Pk2qJyaHG4R%N4_^ z$E&-0ywS8G!parHsmH5W;e{s-Z;A-t8_jPMUSzi#8Li`T_u$NU@onXEq~V2^g#UpL zxoo_wvE5s@bpLd@tmnS)+lKFp_K~>R_4i2bkA&v`Yd=Slj-&O{Tbe{Kir%D5bB*Lm zxLUb7 zxvcvAXlZ@t|2qkMCxIiAz=n_dX`NjEuYO|!{j@T!qy1TSM=(?`m_)2+d9?hQP9d<~ zA5C~GOkZ@Z2rR$fMBnlsjsLg8Tk%Av=}6v3^K5^%!V6mY5sh~L(f9wi!dvnDxAEJ< zAI-hx_nWY{c8aa36k`2o+K2XdW3^8t-lF$un{uUb?R$^9AH18ZlFQy!4KZN5$+F#B zw~e%)UU*pz zAM2ucxi$t<>yfQoF`Rn5`nKVF5d1G*SUN00kL3Pnqv(z1(bD<%h8JFDe?)(b%WaD@&vtL!-iK`EvYz|GZyUZZ+DGDM*WV+# z&%K|1DAzKs+qizpbr0A7=Fj58LZOW~k4T>4*B(xukK|YRW6C90=$A}ioNM8j{@R$c zDXSxFZXr+Mo8~idj}d;)IrP`hLWiN%=a2AdLc{u*@vkF%BH^3ADZCZ#DAAIYg%bQ| z?~f$P%#{Ax8ZPVCY2J^S5PoO5#lkfg_SahFGQ(Nn*Ns22@U0ghN5We_EBu-xj6ad^ znOwd7GS4S{T=LsvOQ+?3%{X}H>h0Hh9{j~{Kia%F8vk~`!k6`IwL`6E3oYKQ=kNSk z5;5>QxkSprlFolCmx2d-FE1ADf8u91m-K1h1t&ga+`rHLzs>gn@Ix-q*Mkom_u{{U zcb{^}?{mRABkX?e4|0kBufQ%Y@vjR)U*0ExcbfMu@CWAoN#H45;{R0eH1qxpFxk96 z3mj$Mf4RQD_PBXJ2E5LKnQ zG2j0le9XMx06uNr{|Rg|@1F%Xa|z9Tq$$94K+;CKtY@6m?{?lT;;QE=;#$I0!L^*L zit8?}d${D+4nDxOiR*FmopRt`3(wD+?_L34=i1Bl7T2d-z5OKqFSrhI{cpxE=@EXd z_zTFRB$J7_n=>!h;#N2Z{CdJ3T|YU&;i!odH#b-16?{lZ{7pL6Ssg$5`~9c+`-xjB z*ZLT4LwGNJ2edtF8q8Ue#Y7S*m$0bpA9#feul>OQ-Gh!B1r`bVN2j z{OrTeh-g2^*3G*H+`DkUD%#!TMQBJFNmBS5Z&@}Jc2wkZI?bd+K(+CN8)Gw zPrLM&#n10bd+_V#eI|Y~>r9>bb!mIH^rtSHp5fTxlZC| zacn<(@Kg4)F8%80xNK>6AlS$76 zp&?~pHSQa6@2$)}hWj?$Gkb}{&HGmTbmE6CI+~-bBxWA%$It3DUHaGJCoi_2B-%a& zKkqw_Qt`79Kk}V5$As8)7UE~!U0wR|;%9VhKUMg-Z*7-8Px#>ql>=KIHR7iYKP#gB z*yOttKjZH1J&*R`J{9+>K4>JeYMc@orKtaM&hUHVbjlm*nTqcQ^^-?Rob=KemwYD@w+blU6J9T z8^U>dsnG`&9d5wS|6%Waz@sY8zW+J9dtyYyRnelNtbmlZsH-BPqOOXFiZv=CRctoq z4?#n+Lcpk0S4BicT@?`(+f@-!(QXxyR;sHar7g9wBGMMyZKV`j`na}~(n_-L=RPx= zoFr#AkovyA>-t^Kxvo3kGjo6Eo_qeBnK^S#&W>HiHx7k^w2g^oJ+u;i6Z+!|=r^L@ ziT(r+eTcZ7==;5B?!E55rro})9sBR2R8^icvnxmZjKE338Sasf=%eVH3+O}W*5r!x{II#~R3W4XlMz3+KGfez-W>;LL~9jSPbrQw9($UaFS z&Sp5{y5W@WOZ~y=a&O|Qn_+NP!+E%KUM@}!yEv}vaVwlAz6E@4=e*2#S{kH|(I4%h4-q#M{YvzOe3dpD z2WNW$8=|j6A9#y>2+ljy+n71d9@IReA5=iU41HhH5Ao24h+Bt#IQq+_4}8Rm!DA09 z3n%vWuG}NS`M{ggcYm(WcZ{81dUHm?8TziV^K);`Bsh!tp0eZ5PrNyCIGLXq&O6?m z#c=xb{bk3_o8FwYa3=oDa9;Q3Y=blZ=Z5o|Hz#-i@aD{dGrQSvp7rJ=;iTW+mHS-U{Am}*bzQH9v+P&9a-Rw3d)}O_aGE|aoX5R6 zy$|I6X#K9-ozgcRadBMNY#2`J!@}dT^uzIRw!xY2j78pdn&8xa#P8RN&q!NebzRqs z;4FsoeX&#SZ6^&U%r~*S%;_#Wo8i>KIY8{3?Xu&l!_vO^^BcYyE&iP0%^3!#?{9bI z_7^*+dUML)1UK=`@6H@o9X7(5^s#AEcU~^eLO3ITw=4ILBL1ure}2z*sta&r%*nvX zz=;b7X{%?(oREYMVhxwsmHR2D9rUic84PC|oM(%0#=>d(gSm$kyB=dt9h}X4N8Gv3 zEWk;?DdXGWw$$G}Ri1X1!x{CbUAZ;l&-E^jYrNkGN4`DoHJ(eo>_oq_fIfu2-@!aD z*uq=8;>Ss@JWLyjjZttm|G97;lhAK3pqD&mp$}}`mAjI2uez5!l5j$ND_zfj%%<)2 z>dYBw^wGTjqmFvXBZEHjmtDF2_9Bn9F1_pdQs67xFMn=0pLlbI!s*Ai&!>s6tuBtM zpNxaknCJYZD@V!`gVPM>RI!6}E>8k|wtzkaJ%v8??_Ig~q+K5Anul=K!&&zQ^Q>?P zyYgszKD86h+Fguwvi7TU*>PQi{rfSW=62=&h>5_JE{?0r5jaY<=zD?7y*X8IR>65d z>w*)i+PrRaD1TXg-q^)6r5!5JSgoWoo;T%0VNRG#Da z=JY*;`OP+V{)$I=e~lgScO;xzIGF2LCc>hh*p0r)=)cxEy;%z_MBjw{Li&~H=N8d# zM8B|zekb~+=otn){qJ|E)*shdZ~PmHel6*}^dZtrL|=DKMT?K+uQV?56V6J&nh^h^PJbcIT<*yJm+a|PT+9%-}9V%yg5VR z^y}4n-hamwogmZ{hs-7W_80^31=ys^Ti*eZH#hVUz^~p zhvWGCCw5vojbkB6$L2w-x8bb!<_w0@d*9+dkA*X`8%`aZDmcY_PQVHFY02GyYaPnv z>({lmh{93({~`Y z;4G26u61!-Z8H+i#FGr?3UAINIGf>|C3cXu@yB%y#o+|`Etq1Q#c)Q!DK>7bg|ijT zb)EBajT_tGj6S(ICpd`u>4q~L&aQ4a6X8rerFdSm;4JTklY|rGw{eP|K`aE|NT7G|%p5&f zgfkM(4|%Q^_}jPI`<8izBz88zS$_`W^WJc_xj3%znO_c8@rzn=a{_Sw>dhGpXWOMM zxic*|pSn1%d!?~(`d!wND;LgsZ%!SY@e>T^O>a&DPU3Qt*Yn<-<#1L_G@OUMIUC_@ z{g&axy*az!^u4krcd__H>VcP+Hbey?w7oVxj3%2 zmK(@vGY<-9J)CjfaCX932&YS5ciHLxRrW8s z;Y8q+U0vKx6`W;onmYSDQJ#0|`F$>&(#qoHS_Wr4oI8A!{a=^2_jy+xHp59*x8yDp z&Zpj-?QnKY=66~;`{UZ%={J=2sx5pCk3_$RNu|rn9fEv0ycv-uzBgG0s*vwQ%n0Y{xaH^=9&3-wh`WCo;9A=zAdJ;Vgr5Uy;0; z;Pk6+$-OI_+b6WQrE5%C1ZOpzL*<%**EWB;IB7WPhT@#fa8|`=%OZA4zs{QZy5gK+ zaJKWiTgBcDEQ1qjY{^|%B(Fv|<7Sxqds9o-eMnay8wzLW4aGU*;8el6M*MNNm&;BJPWZ-_+zhFo-;QrD zyQ@v-!NR^h41Xn`8SAW4#3D3i0*y zuD;4#AAzH8_RdH2QS_k#`Vjg!`Uv_$eu$05a5lj?i1QBhN;rh9Hu^4OxohpW70$?8 zJjQ7kr#GAB^Sj}M;bgnvjE6HWUN|o)Qxlw}a0<2GLiB43=%vgn(QidxsNRIL2~OWz zTXF-X{qE&SQ~v(n)z{Q9)ZuN0bG&+X}Y5&_aEW#-zRN( zxj1!j#?R$<^@MYhHzxrndv{Cj1MzvNi{tWnIhOl9m?63my5Fz&dB?@r`{XR zXBW3~%=%E;U>BUej}~r&{>QRESwJ5m{V4R~(HCk1r~kuAJ=T(A`Q6c1!lI9(PZ!ZA z(Kn+%r*nF<51U4>9_KgyI_n9Ckc`ov)miTvlLBGd7aPSmL*Yz>bAAy!6~}yr>?q>!$}q4NPR4Zv#x+IqF;@ETLFCt{buyNzgxIIgj0Gv z;|-iD&I4P%>DhL};Pm~T;k?(CBfgZuiNYbvj%6k+`WX5+`ja~AO@B_HPonp_UP7cv zp--VN)>qfV+0+eZC!Eq`@&4TZ1g?KLqh&1m%Y~kG5`hzavL*MNl;`)}oGLi|pK8fH zDV$%pIIi((E}W%#&I)hNGV$l>;$?3Zf4bpphcgdOv1_^CaOM~|PJh7fwlUUqEsuf| z;CDugaiVa_y5Y=*v#1-+QaJLPrp5AF2WR**#W`6x@oqSMPvm;*hBFdQza_=&xtc5f7+2a0egERWYmagwFy82;o1oIJ`^QF(b+ug+(4rkj-%=No)BBa;oUP&yoX?Bo)tfeZtmv&=g7o62_cofpH{t1VW{v#RhUvJ3`kaj-fJkNHHzzME0oKw9yRd9O$nDK8f z?40DynG0v(YQy==o3jkg;C1|tt&N>$8NEE#v(0eA?;FkzZ_ai&qc-sS$eqjW>c9O? z=KB7qB{!xBXB3>#aPI8PagC8tI4L+SojI<&X2V&u5r3qfU-R~PDV(O?wB&XOr$E`) z!5P1aX9U6_Kd<`9!ij&}QuMvEzNfHX0Ot|$`ATnpM#35SJASiRIG1{JCc#+@XQFT} za&g@2A2=B}w+ZJY7squyErv7i_xygfa1d9yoOgg$qhE&pXb*jexXtKSp=ZU?F}?9a zuG!L4nO}<77>a%;`Wp(^2oXOH&iG7mP7F>O&IQs&m%IA8tIy1bv+WNpxi=)Q0-Tj_ z=KirI_oi?z^|rGK&frhDHhpj|a&cUJPd-u*`V)I+;?I@doWXErZDGt4&g8BfslTys zw*I-L>-+p>&%YM^(5)>6|G#xE`jO}_mGU5++juGZCiI2ccrE(5=p$0re~fKU@4Elo z24^w9qrFJVA^%z8F@6M3qdvBovhL$u*5PpG{jIPsZ@Fl%;SU6wVhe zpIz7CFgSzxo$$DDkoNl1?^2FKKO4QXr|H(a{Efj0^V{N2cedf;%!jiI&SjlBu5n`} zoSofpHo+PGPmez3y6zQ|Yzz)t0iDXE-xCO-kE55z4js#^|F=JaK7oFc^r_#U>#7s| z9gO~@tAev`N8vnXqu*3OA0qu?^xM$CDtSEZoyS@@b9Z|8N%3JT`h^Abl1FKT_D6pu z=N-!FZhttd|Lrl3a_<%*-8l5y(L3+{exs|O!im9&d|~>?!7h%w{o!nb^DFoPzl-A< zw^qVgy3263GfR71%bVa-wU~ReKe;%rywsWOH^C{9x+Om^JA>iO%bEIr!Q0MQI76-0 z+^;baSme#AgR>dVheh&Az)AXBi|(HbVxq&|a;%A4vVUImTz{qx0abhEr&a zUxt1?`sGDzG{cGQQ`klpeF8m0Vn;t*V?y7vDGwaBh&po2`g}P0Rp`GE{c-HfdGx)B za2ED%)!#80;?0=_XYs!L4zRRQ$eWXdljzf`=YWH}Iji9;+po3j`?aq6-wJ1FuvO0i z_}$rOssG-idHxEgQ2h@>zZ!k9HY|e^-M_Gn82UK+V)Z{C<L4>VG-QrJcoeHwkS`tQqSz6nmD`X7#d-l47f ze@+I`vGVor>TeU_tj%-w@#f5eGrNCl(f!dRoMbng)o@mI!`TXFV>g`MOf}oP;e_D? z4=?WXcsRql;WWV++YM(CoGLiqlJ@@KOwW2w!%5~juX}Sg!$;wn!l~_svkp#R2zlXKhjGX? zw`Jjk;S{>IgWQ70(9i8`!?m^;4rddbaZ)CDZP&kxGZ9Yd(AJ{s{8@1N4r|r_^KmK* z)K24wv~dzn6waW|{ty;@8hs2sOZ`s1=)JZK`UHB0Jx{%2`!bFGpw4>2Vn2jFgML&2 zeFVKax;6K84}FNZDEc7!E_;ElHkl1)9Gr_f+c3{W7NehqzEB;kMn4aIedqM&>pIws zeiQnx_ttvd9vDYik7?EaTZ0X+b{Gn$367T!A(D(mUwd5PwSjQz;PgGdH8+X#j{Rm% zV2pXcD*-18=b0{?_U{TVhqLU2R{gHse#~U~e&bq8ZiF-U#MZ9g1u$#4o#>aM?{bgn zy5{;{$b4{8Yi^B#2=*1A6NaYg)_Gs&Neu!;auCuKG*ENu61ovl-5! zvx;*{%kcN?)?AcqI@GbNZic~G4X2_ArwmSTw8#3=Wv3C&I5^yj70hcPoP}^$IdW{+*nJ=d9I{E;?~ z!3m!4y=DoaPoNK@Zd3NjUL~T60qi*pa$f4QCykNN0|zo6YFAp`XyXU%JMT((&vMT-=(w zuLx%tocWiu=4KY*l)=ef+S>KGnXA1U;q)Kh+Vvf7R~;{eQw!(b&Si3OR>4^hr?vEYmz@Nh z1e{`X%W^oY;83)VdAaOt6o23p^Jka%bGcbBV9Trjg_v|xaEj$M8qT(EIJIzwPAqO` z9-JyT4;3j_3Qh*ji~<~K&-HL-UFk6g(Vn8;j(*vs!ur0Kb3I*ESU(*7u5TCCk4N7- z>a7ove?$}_SGVSV*4d7WlYx_{^k`!jC%^;R z{#C8HcZ%2<3TG=EXRI1}e7irc{yh%P?CRFsi(=|hjX>qdBvNf*jx$KddzXIat($vsTV36S{)RyQWqDFW@cV_O@`<^JqBp@|=2aPA!~% z*BU!ld2{B$S)Av{%cLIjVG2&Tt~Iwn+7$8PtcSC#8_rHRL#GxWYx-Y_KizO5a6dAa)K8vsoi}GBoUzxNvF_X6oJnxj=Q$U6bK-EKO~%eh zZ_Z*k+wz>Fyg6&(G~HnA9N^8_1}AW%;mC^Jp z+M7I{NxAIIg3~ywHTPiW^`xtBB;iDFZOu*T?2q}sjsC>1hO-RLDV;fHzTb>~9r{x} z^dX5WM}J#uZj+qv9M)cD*EKT~&fMGCClp`*$D1<_&g|K(x!;N%`G=Ey{krVL;6(0d z)!%pe*qbvS&agSg&PU#ym2kGgar{~5&DjKJ^PT3I(;9D%igJ%J*ZA|gH)k-Md3UuI z{f78hIBVhDC}l_5%5K_Q+Nmzedh_nW_lon-4@Z9++(I@|aFRuAG^5X=e^+em?OmSj za2DOun){n@TE5ZltE-**RnULuwdS@9=U?8OQE*1zYuey%-kd0$$bBArudY5m8_p~^ z(Cd^p%h54mu-Qky2|77H4G>C zfO+;h!o_jb-FP_T9&FX`5TEGHX@b-A5bJo!E9}i#1ZVyH)}sGwnT8X2xV7uI{axRf z-VA3IoI-UMsAPOa-(}C)Wn(CurUiv6#f({ufZj%9(`>7kQxs|o3!)O%QM>0EXfq928xJB;>xjosx$MLl$4w;7pT z#BLV-c8|2;uk^EiPj<~y><&dY3f&o;clKBGW6{^4zt=-AwrkPvdYX4v+;FUXXN+Ip2UT;e5dOtM0(jPo}K5M*p=h7kL*H>LM7+w8l_5J4Y!S??XT>0Q@Z6#a1YXM$~d(=TTcRf}$thi)Np z%g{wS>BJ|wKAX{f*R6BSnG)@)x6`J%>P^xQMv||z=I#aqh}*9a!O=+k)z;jf!A|TCod;(poVw0-&b-rqE+3Hy5uZXvzt);dkx_@dT<<`yhtvGJ zc`xmj!ES#Yf22%1kxi@gI2yRU1IM}6`f;7^LXW0nKIU4KXC%FU+}ibjQjLD1(R-!u z+J}A?>)eORu+7$GyYH^{iV&SZKeK>7N_-amX$ABW?P~7}CG*a|g%x_UHTNF8z)geN zeK7qvM7&%lo8a8lnd9d#jmTDXYzet_PX81Ad}Qbv{amUo?K%4UWTKbrXyi{? zo!{MQ)4T4`q~C2sKRLijer$22-%fPxy4KwFV4L1GHpsiKYthU9oVDrA+Dh^tPW;mM zT62fH^~S!`*?8ht{<7zNxKYv2))~9tNq3FHZEsk!ShfeG+LKiDw zSM>6mTq*R=bKcfZUHy0y`p5^~>j){+E=iC6Vt0Dp0}@?7uAS}ZWXx!@&8g%ohilw= z_*&PvC3+cao7Q{0L&3NaLN^*&iT-Uc@Wm1B_Fdze%u`h#w&vdI%yHf0$UGI?V4lMk zup{%-GB_WJoqu`fCF4cyM|!Oo_=h)VC!D?;&ArKIT{%+j{#<72M0^y^uwS?8?`?Zt9_1t(f_$$-5Sst^*z^4SZa#B#!}z0AGXw6hIZ&6 z^iexyG05Au`P6qU`&CP|80|sl+c?``&-SS~);a4fmFt-7EhpJSlI$=n-)Fobv)e6o zwf(ZCX4-Qt^+q=Q|*kUCfcYUwCtyR>N(5)lcj!Z5)Y8_U1sxz?`cw$lw~szzirv`eCoEmg^~7y zJ}ltSLd)LhQ{T7FS>RLm8nvSLe% zpMaXX*&lrdT{CFdSC$=6x+&ZYzp6|2XlpeC4ls@&DoHB?y`a`VV$ND1{ z{l-6GUy0UZi=)-uXq0^k{nk0(_iNxqcCDK2cxvoR$--+;9~^($?EER&v- zzvzErHLdYkpZW&O^{WT{L|AI5Tkny+)UEeOzx5iIeUJ2OyU{Q0MnAV3eQh`TvEAs0 zcB3!tM!$7RH|00_zQuaRotgGo zcS$&C~rj z?r@H>4h^Gu#X2eBvz#IS72m)Qed_mZ7t_SNE#XZVNPRPiE7hUWhvzxs@A!dFSr#L% zQtw&=7<~UnI~8;|hg*Hc=SgQc?RLZ;EcI8dR@upvIcN1c(f)_U4;6n$U&lvUUpW^3 zXnTfL4=%I@yk_QBxzbljn#Yf`juPKy+6liuV|{&#-}*?r-|p+n>1zMLtY7`dR4i8K zI%)Q`N+b5U)`g4>W@N}c-YE`ePECk&On5KttL_k+-}BjP_ErD#F@>viK%!UJj|T4P zqjv0VZ`fD8-0LHYzytf9=!`4>W%Ax%CCAZrR80l(rbC!9@DMBbRXgpsF2C1m_WAGk zpW&26R~+o;e2@D!1k`pJyg6jd3Vzd0T7CvyK797EsdtC(=;<$^1C=^YRynoygO>Gz zB?|^;q?g(j8;q+bJLBp_{>!|_)$`jOE_I)eb;Y~SkFn3BkWK+hcjw$~(|zu?=|0~b zn=a0N=i3Wek@aT{^#iFP>b=KN`!BToX}|iZHJKI7v(g2zcG{HbnZwmC%l`S{YJqPI zpV)sq@Js6lhpT%_p0nORRIMuA6(sb*AvUUq4i(xfhuS20puaY7__(-*)r@7o;#WzZ z|3k+%G0i52wbs<5GlRI=Z}?ykx4!n$BUB<_rw6H3fzzKGq+Yk}^pWZV+x~oj`ccU| zi>SZvwbRNDRR7q=UNK1B)7xG?Nd2d`y>gIxa$h?>NX3JbAfXw-+pyK=3x8x1J#{hv9}+oKKsgG6z}(wtUv8%e{dxK zAJ{Be|N1cTY)SuH@b%ThZN5N%?-4fVw+=9U;w*bSwR!eIlUVFmYdez13}VcxXAH8qwpLg?t0Ac#TBNL{7r4d<*LkloLl~0oHBHqqw9lE3`fxj&FXOlm zt#^IuLlf+E;WVoD3D3|z=l;ge;`3uujD61C9@uKDf7-g<_doZbl&v1M=KHe&^@xew z=Zx2Vi~TBXF0_3{?hO9<0JZ%9ouu@%{xz(Gbyw|h&Qh~HAK!j{(24dIOI;#2Bll2! zK6RJzv(Gt@%k3vE^_aDvV{Y$D`p;C0Oa*iZ^j>Y<;ro+c{nPPD*2UkzpvCf9sk?nP zrGHGU=Ev{u^cyW}opmY+#@QS9#R@xD^Lzv2eU!7%{?IpYVIMVDvRcWiypQ_OZ>RdG zze>cD0eg8L^_tY?-<;FirP5xt?N!ihdmS{1c&fy1##)J;AzF43=Iv!~?xUXD%id13 zToV7>%ih^X-BZfxTcvXPk(_=}IxxPUdTDP?H}7rVv!D8poThro>D#iMv8C6*1^cP_ z``pEC%is64|Fy4rs1MPmcTtOv|NppbIjceX%qA1pI7dKD#e0G2W_JUq&k!|zi$FJG;W4+W)TbK`(*o%6pk4o(C_EL}UWhZ;7AMO=; zsu#cCV=wN-ujtrIda1vciv1R;c`n!g*I7E52E%L+vV!@X4gUN=eI@ zbSgK=mlDl+Z@J~W$gW_AN9-PH9rV?yiZQ~^qUs%M;M+b~A4;CGdJSEr*YF2^l{M9s z{-}SpHQ;GW{ZR6E7EHi}f8ZSf^_U)5CBKy6hlGEtbq*_oEyBOY*PGLKd;|XIW8q4Kc2C9g{BIC9*BX=Z z`F9BaabIsvKkyCsyHDMztI%1Dm*xFA0n(o={~!E*XG#3L?>UR}*@1yexO;E+CzQ7@ zYx8@pOVU2SbAR!IuQ#Wk_y*kOSC6>tXRp-d4SgN{oz^+s`IFA`b$QFXv!Ce5@3wxT z4*xi7@X`45ZT7bOGdW4JVPW}y>kz4fo34)g{LbFp)4l=pE$602XSDhX zQ&&>@~wZJMI6daJgHU<5%k~?k&XnewWG~Zn?e0QV&_fohWuYld@yU zq(oU+VgJ+Q;cSv#CEInxukguC#~oJE_(?LR!tY43`IgN!;`CFpXir8w$)4__ZQs zR%sw7*z0oX?+nOJXush$ZP6rzX9`F4y3SrJ!{=ADg?i~N&MF7 z?bbn$$*`<%@4q81^g6u?4p**|e(zCVo7v`ob7MWCeKT~w6J;;I-ge&~^fYRp-_a?3 zG8;Sj_K{0$lJst8Fvl+^W}Fm$z45JUjB}-4!G*clQ2y^lT+OAw)Sb(h9dYovay7>- z>BL;N3=jEhl8o!JYci(2q9dlzF;ClOgy*76}JkU;(+XGH+jOVW0^i!Z~#L~_3 z6v&y)X=LLg1z?MLYu=SljE@J8lLU+^S?3a2Z8pUu-5{#uD*J7hlWgMWtAs~0pU9&b zcK4|jf&WL@E)o>Y4q5fgn?4$BTf^+BT zACr|nWZWq2>mOvvdd0*#duHQ&Y0IK<9<=-`WQ1YAP!^A&O1uJdj~`@}e$yBA&vFJE zXRQ=KCsrMshuTA|VR|6ic6B}tdu`v~A^eqg%(}<&b3riWy<&zZow=+p4;cz)qCMHV zO9nG(WS;mr6LX%!e(Ev)GV3OJ2y>s)ziH+U{vULjKW2T`x!tCFFoZgnTYGx+QGBpj zo5G?mzu9g;%GO)-wTwMCy6qlm_4^vWU13*P*Zc344O{zrJauhPO4;%MXgD>L@ovX| zHiaqUTkRzAV#QF)sqVDF_rN~HZv=aT>2LTHwWn6!Z9C7_mvfFMD*UQaC18SE)L!6- zuUTpzFo=+=>OZ$caVw}oB<>6Dk1%(r}rxm?4h|Kag0 zD0#GkP4Jk}8pKu>toa>-3wXS)LSnl=WJXM$?^B@~){9epD*PjGt9U7WJC|!Fu8g?+ z5x7%IrjL?gK6NlM1Q~&hK_(zI$V_AovH)3vtU%Tv8;~u?4y5F0(j!BV5y%*10#bv_ zMCKq1kR`|pWDT+b*@EmqN{%5tG6Wfcj6o(KHONe44zd7Qf~-K+ARCY^$PT3BSkfay zkP*ljWCBuy%tYoO3y>wq3Sd0gG@kbkeSFFWC5}SS%IuUHXvJ&9Z1RXq(_DzBaku31f&L;iOfM3 zAWM)H$Qon=vIW_Jl$=0%WC$_>8G}qfYLJ=89Ap8q1X+QsK{g;;kR3?LaMB|~kP*lj zWCBuy%tYoO3y>wq3SWAT`KLWDc?bS%R!U)*u^@Eyxa} zWCZDvA;<`13^Dj6lX96ObBYCNc+EfGj~) zAZw5f$QEP=QZkbC$Pi=%G6tD|)F3mFImiNJ39j6lX96ObBYCNc+EfGj~)AZw5f$QEP=QgS-!ks-(kWDGI^sX=BU zbC3nd5@ZFk2HAjYL3SV|XOJElf{Z}MAQO-pWF|5PS%54-Rv>GT4agQ`2T~FtJu(Ct zfs8>WAT`KLWDc?bS%R!U)*u^@Eyxa}c)vH{tG z>_AG+B0Vw$8G(#JCLlG)Ok@tS09k^pK-M4|kS)j#q~vVUBSVl8$QWb-QiIGy<{%4@ zCCCb74YC2*g6u#_Mw1>Hf{Z}MAQO-pWF|5PS%54-Rv>GT4agQ`2U2nl>5(DG2xJU0 z0jWV|B6E-h$P#1)vIg0JY(aJ)C1XgB3_(U9g^u8SJ!g%7sD18=y3Pxw>uG%Y;r4tw z+gSXd)__VPCV8;n0%qB7*YoQFB?qty5sD$;L49_4Y{kn=EhN4fgK%1-$Rr|HWm z`?+VIeM)HPx!=6(YoY4NmD7(t{+N@GJ7&a)&~Yc9d~*1NUDI{*eC$@Tq&2@@~BoHF&J%hr!c{i5X0RY!;}j!SH$7UJN{x z_yj0B0x1)224%+}YcR+i{85A>pu|VPQ$V@1cV0{7T#oUGPgQ)=GXA8|%h4?9*fq#r z;B#K-ieBtfQNrm<_ zCk&}d5%hADfj5H9;4#upwLWzs7@5NA7>r$`F?p@e z`ETw}oyH^>haQ^hQ%udO43z(Xlbs;RS9X8g`41+Jmq8v4nEbQooul5T4%3@PPOvZ0 zKK0`>^}ZN8Ue{?}2>b^AluhHg4$RO6u`P|BSF#qUTH)kZjYC;fnYLvwwq z9~imIr>-DA3EmDy?`D($L-+Wcox(6E<&T18U8*biasz)#y?NL*Lcm zghAe3P%UC4=~IW`Pv}XFk*739pVk;(taSp(9xT4+Jx1MS}(54A$96g&!4xKDgSWvazsFBpEB?u zFb2vvo&ed`S1F@U8*B#05+8cWr;Z1s;DKNqlyNp`Fb$qSSbblQPcefTa5&MSl*TCN z^lMQ3NQ1H~odKm>p&#h$Ee6VU)(nor_0V!&Xd|p%)z@7Zl>U`nqnHq`?g6lyjA??+AE5Nt@sBsdGpddefBOU>cNpK&3TCz<~r~U?cu# z-}0$?!qK;Ny*Gn(gd^{0Oo1{_gjQ=zfEN(XfR$j`yUfF28oUh5ADf;2^XDJt%hzv> zE?)?g@gxq)cozJLPn`yqf#-tFpxBA7Wt;}%;2riH(T&8L1!SpChXo|Sk|#=XdA8k@6>_k=T_vkN8qzx&kDV8&qZ zAM)UmdjF@6j~I-BSHf!s`-55V5HPqyw^t109V?Xp<$BK_{jtSNvVCvUkC&pCBW2PB z|7FsHGAAbuHiL%}&KeBv*+#s93q@K^lK6TpbUGVna~NrPE~k$yTp0m}821Z8|q8_a;> zZ}bq28H3S7O&An^WpO1K0>$4lgK>i?gBei#RsFTU5rc8CH_-`$Nl^UF8jKun{4|&W zo$&w^e}hM841>}hS%awoerMiLA&q6=`RJ3N@S;a*3=P!!n87qCyx<_evyLt^m;i5( z_`wz+Kph zoPwSG>38FFKTjGAUg&q$C2@mUP}(8*O^snt+9PT(VK5C!eK#A-fKuP#i!{a!HiNRB zikE2&U##mXZm=1YdJ0{l%NI461h13$OEo49hQ^z)!O&$UY%nyzgbju+H(`UJiMpPm z29u!7iy4qfMU2GmKltJvW`m`%z{$x=wp606U=}z|3n_wm;`0r5nN=h7lR3K2L1%U>v!&_5};f! z%?5+tGuIt>h4`H`?PM_gq~^yAra-CBEOH-@D1JYyF|w3-g!W54&p*})zUX(p%n?iR(lxxYm;JJ&XT8e!KtGPZ zq5Vo5RB!71A_n82C1FQBc;6DNyG9X7DU9^tKrXLAkEe zpp>H-lzA@$ehm!1WAXu;B;H_jwe~M*FawHzp?7tB)L;^n_zWoZA6la^3QD^s4Q4=UubLwoqBoC)C=g;3+UwkOOwCBV6zU#4Q35S-`DZY1|z@H;grG92RfWEsMhOn z46MMPjKQ)GbvSJ>yg`SP27@2zaNJ0 zcY6J#e(zTwi5~{j868gk!SAe-lYcb$iC-}Usqmlu&UyqI(;P}(O8N_&R4>TnE{ zu)NXZzE7G(oKJo5Qg0=LIQz@#K0k&g(`KK~?;e!I|O)v`%@R5#B(#%4iID`)XfT6L}s|A2G95CJ2kiysl-wL17Aoi25x)@MM8j}Ovz)lmVxk2fTso|1gQXTaoF z`6vMx8LI0c4Zce_@wI?@TH?PRaPIe#2GuvTA5l>JN`OPaG&o88I9kV-8H|Ik5+6BM z`xP^o1Z6%^;eh^iFi`GiBA~OM1J}r5? zE=TMH{xgsGvf&!TCkC8xBm9Hag&Z*(-XE?hi3g?yFN^ z7|eiQ2#%pXu@@X0(EEJn>2`~rA8_u6)CIcTGN9OP9;fYPK(QCPP}?g5FT+min*ry3 zx2!CnstKnr4)DJKlZKLv_& zNFU(Nv@~eiXEEvINP*u1gA+Bzz^e&o43>Q>;Oujx!EX?s1)cf+3XL&?DT7&q;VX^a zV9HEvjX-t8VU+5~039z29`nJw53`%}6gDHbqgW+Rd2h6>!#ls#;?l zJQ7|CWLQ^e(DBotsxf{Vj2Mg>jDwD!29u!UCwQ*-H(B@32pA$91tp&tI2Tm40W}W4 z%BJY?OrqpiP8=WOc{^W^+tEA6HOv#7l!1#S;#%GBli*N-&EUykur8pVlYti!P8iI9 z&N_K&z}c^igVOJ^psedc^|~KL!E*?wKv~B&gL0poF_;BM5e_#5)Yri%crlm;F9L%x zZ7%{!KTd(p{BT{s*#}5~l3yBp0gO%47@Ds034;d`UuMElgE50~qfdg;Z!@4XzBcOi zh=8&Vh#HK8vi?jMOoB2#MP~$@HN%m!N~PGpE6MH2lGcG zjmu8krTZ&0t~8nc5B7r84DvFx${5Uo`x6e{pyNZJ%qtO4`fnL1`^pLMGB69C3Wjgg z^Lxx-%3#)D_$E_-U=V&3lztfp<-R@%o(X0_xt`Rl03Y@s{yRFH0%biByjk0-NE-9|}0*ZW@&9EdxrsWI?CB=Lekq$~bt5=t0?+4L+>Xl^INcBZzMXmxGA~ z0rhXeN0?{9@WO!luIRxV!LmmKY9$zaEa2?J$H55UG&li2LyH3ZPXqPvL_p01!{5{E z-8eWIUKYF;j3)!m{zcYc^vQr4O?(Qx2@F4_$DufQAK~EBy8WWyc*1G$LWy6j`$-y< z_|P*N;|4R}L&V3I1k?;rJ*)du0+jp7H0WGs;8enqrMf-ipsdrILFp%v=S(~(yeugC z$nyc`Ib;Hq^+hvSE%7gCeF8jD;z7{|mzni6DCskx=tD1ReH6Tca2gbS@Fm@zWuT-_ zfKx#AeXTD8Pmp*}@>MB4UPnRadiepL;UYQ%UJpiJ*7X&9C7|Asc<^vgE!XXu245r? zdsWxFS`koh6K)2b>+m%_{x^ft@3IDiD|J7M8EiHf{-KUf7|a?h`;m@M84SK2aQ6Gs z24kyqIP_zU&ENv@>kW;;H+8$F43?$&=ootSmc|q){kH6Fjal#{(VJtGPsZH?#~+~d zcsukRjbX5!ew$p)2Q=U&-qq{o*cy#xKhf)LwN_)wVDzUt9Q>Kaw87ZVb$y1`X>2wa z|Ah{R-_w{enD}Kt%_iSav&Izo0O7Lt^?V%%r5tHc#^nt7ApXWb(ETO@-cEdMy`FF4 z;5C#ryFvGx=tp{fNP;p>WWe=eZ(~4h0+YX{U9p$`O+fut!oOwxK{&NZhZ7%bed>35 zot^l-)+aMMe?Gn9j1wvFHqyubsORT6DA!vGd>4#=5>S5={bs&)B={$7H?c*}`&n>0 z@yS2y@t|z0wi5-9lXy_G)tz9jer=`x?0 z`;M%(n+3&g_;YPHYOv6KfwYlN_5Rv{rvJ=?FGm9GO@7J02h`qDZ~xGk-mdLt4Tk=y z?^DwTqdV}I^eONbF#Io#DNx3zG${8iSy1Mg{4tmlzSHK*^5pRNub6zoE!v+5 zI1*hPl=NwXs#V){67xsb*ZlYM=_BanCec_o!@rW=UMPr!XZA=kN{Jl*lPxdf{O36#DEwm z>xz`YEGY9wgwM6eeMJIv_?*j8hxpVhpXU8tiC&I0cn4UA(=Wu)#7= z`g6iyv%%p0wzEzw1D$yujvS*A-cb1@Z#RZsjyNd&rWrgF4Dp>LxzCA%5ikwPyqZ56 zIpK|_mb{&)d_s#O2Fg078N3^e_O+esE(tpKMWFPX=7VhYXE1%R?c5KBzG6G;!UQON zRQ0oENuyGHNKN*U^2az%eCnP4hnoJh@o=4Q29)t8bcF4UNo8Pv!Z8z0f&&Pr4RY!n zx_zt@^7b<5<;a4Ufn|K!Y$n(Yo+b)&=>9cjWIkOmq|=2!=_C0=k4Nu}%Jaqo8OgL*We3XulfimvI4JJUjpG%o=8Wg)~h{gyg_Tna-HmLa2i^NAj;l~Z8 zO}uRC%Y9uLI2lZXvL4QWvQHP`vqN&9#+Qnm`>z=I8sYFa;0KgS9?Q5deDHcO8n&J1 z9?|2uPF?+cJ361*e0#pW;_@XQjsz%vH5&{L*Z!7)5}z>GY~q6_>i9B)2~f({Y{Egl z0xIdsK#5P7aI-*P}c9L=CyOF_POCRhf_eSZpk8;p;#)mswJ7fY9e!P9N$`B4^J zO*nmq?X0gN5nG)@I03!{M$Y8Bd0_qsux9qD@)z^@m!75b4}!ZO1<%&`#z0w5q(Euk z*l0c9rosIQXTUyS)`WxS*v`H{7?k-q3d+7!9NY%R#@Nn#iz!g*FAK_e6F%4QLAhT{ zf|4!`I^)q;+u3gmf-e)_49faDdY&GCv!FAMov-U(U0|yP^t0qRTb%`FFSPki3+1@T zcJ3GBWwv^T^x=zj`ZV|k;rJ!C3c^cVYOC*1N5KiUI*M@Qa=tzfhQFo9$rKo)pNGC} zt9|{%SJ>(Zu&j!90fV)+`jPkv?nS!H6x(^vEOm|TJl{&y>GEd45c%*;AZK5Kg^sh| zpS(`Kc~8ELwz?U08sybi6}#Tn&oi2A=RJiacrSj0`TW;D;^)n_x(ZC*Vyi8rOT=yU zJurN$?Yuu*cAKq!M>u~hc&yWoleAs<94Ko_m zv>rR-W9}5zkR? zXu_oh3DU`b%s|5H*!+EbBLRl|&{>#DoW>rYI)?!0z0*?WwE`DA2P*HAw> zw3|r}VrtDNmD24=+Sc!z=DfOM`jpD@>5bFqh*!_3F++!UjSdSr@fCG-4VBUk`FcL( zl$$%5aR#Yjwltvpch+lccHOgxPElSlqp5sa^>s6*Ok==oXyBi7>&vT~V$()R;B@sI ztz2GSGo!w;aY{pdo;iI~dHLk}8ReBtO^mH))A6gPHBO;XIIXOXHICw9oie$;x+*lK zo=)KoNiX<5w^ZF3J+D4Cqw%~(-M{i?WdQxUSa_9w)H4eW_0t=jf!MLLCfU86an;kO zkFTw$Kf7UStYTV)tCVf-eDvghV}?4CGHre8zcJ$UHDl@DPyg4J+~#`8;LuGUC|pUM z8~3X1$8eYse(p}b!FqvTwTR<8L%5=U{EW)Ig&uV(zZ0{klxW<-L?kks{2_H-Kh`f7Xj{ctd<%Z zX2h7BReg7arG*J~4cB8~LwAHAOX(Rbw`(dYS#9fys@)skt`2Qm9J#a9x`~B!(<_<#NW7pZp}wI}tuMs5eo9q!z4CL1(77H? zIfdM{`hr60`ig1O8m?Ejb)!Fq>9gH@IhS+wDW~Y>KE+F=+i{GSs-iAdTcIxTQdLcv zJf%^6+e_7?b=P?5rpM?8YNnSe#*(H{-R7m5Jgp*DtM2nsRn|97t5c78sbaD$QA@m3 z6?OG9rmB}asPdOA3*t9C70xwWK7GoK)#^!f?_R|hYY2zt!(^^;E-8wMD=+%L( zKKSdGX6mDDUz({W{`RGry6u1d3sX0DtgLswL|cK+zC6FK_-}00RH+O8-ocmM>xxsS z)XOcV>O)_aE8v?axAo@ZPUui?=T%8Z>vh41qz;4fs`l{+_+>>6E(>3_3C}@ zlzQL<-GcqVay9|0xpSbOvkRv#9ym30l%t5ux4svcxaAe@PxaVjRWeYsxrKTgX&yIz*?eiZl?@=Ml*y$cQKYq2RmKeu7 z4#MAD(ZSS|8okNW&7_^5n)7rO;*q4QW98%b)J$q+&&)V;Lc!-X#+PDc;My<4mt@bZ=+3>dXNmKD`_!NIs06xe&+V9aig_}% zyTeVMum1ie*_rcOc6*#H%i~TkoknjRdhXMxC)(-5H9bGud-K2Fg`XcVz4@Ek`FVGA z@AIa&YC4;%ZQd87AH@!h-itlXcwgL`ab5VuOFO-tpZC64Wh#!G^R!65X*g~+zXcPO zy|>0%HuTw{uj1BA9*px0UHze=qsF=-EzGuXYpv#LG1u3<7y zpQ?FqFilOUZja|7W(7NWTJcs*yJAZH%!;}xRpk}aCeN5!&4&E2+IFRWx5T7+WJcW@7i|7G+v3CGPT+ydCjd6u8AMW%ij6g$luZ$)xGuYsP>JF;U zcZbybI#XJABVfrLRA1d4(phZiL;z2P=`j~)<@@6a>uZdZ)x(#VguE06EcR?A$94psltcExe-s{BoR{P0dS z^VfFOiJeP$@$HV=G7@&tUEi+jZ1RbARR=HLX^%g?gWI3F6dek>AH$a!Tf0`ziS5dc zl`2EvGD~*Q=RZ}V4(2V7mmlPpwdA32d40vyYV`@hN_psBQODNh)L5MgJk%bej&%hb zwd~x-DjHP{3TeePB~>-mGdsE8p%t%u3In0 z>TZ`o&i?9yd!CL3x%19pXlBEds;{eUJ-2YAI`;8Bc3ZDI%lABC+X7&^x^d4_SMp-s zG&N+=9{bCdt!|>ko~NDM&`_m5*zFq6UA*VXTowD!o~Lf>>+042 zCh?9vPn_RlV@rGg{Obs9-gJBUxKa=MuToFi^VE$~s?}3HOZM|UPo}T9Lpwf>-K`O3 zN?o0r+{1K>_dH!?L+pl{sg3I6r}nt(>jw<`FW%#X?8{fyR`VX4GefEq_uPVc>FBJE z&klE|e)Zc-f7+N3c zboS@w*YivIliMoJdp}`67BtS{ze z?5*l0%P9HU{H?DjbpY#7rzhldIOP;`-`aMf&Sv@89mmh&uMp?v{GIR-yF)s8cSz+$ zNY~f04!@%-;XE!U=e=1eY9)`Xd7J?mfiOipzN@QBkLrK%P~`jGvH4{~dqMJN z>XELxo7FRjQ#_B~?&2(Noc2jvZmfxx? ztIO%KxEO4tfujr24T%s9^}MlmdtyivJrEagLUqHkCVDy^zXk1^pPRlK7r=YXv0@pb z58^?B6^mP%FkpsiD(IVdAkM0U{1Oi$-ZPUJ&t|3>p`DuehKpNl!WaFZOElBm1A0ZX!)^b-Xr`&vkB;Wz#+jSzvS;)cI01{qEMv}iIKd$4f@T^P+lOTRLj%5D6nXtHeGcSSSG zLW^j3G`YN`k)Dethw3Wmjc77<--|U#F~ZBu{~t%AEK?Y+Dmm!?kO0X8V5q`81n$P} zGoF*qm=m6Umg+OPNmPxwBQLwg=JGtVIhW^|{MDa-{eiOy)R+r%_>Rctl-h!(txhPZ z*rYpJi|(YiK5B9=4W~04(Xzu4Egz+)MXgPa8%O@@(kc^^hHodsntsprX`Il zMvYRo6!R!Tb?GTnN>C)9tIm>|IVKH@BJPfDHhGhVvm$OpQ`c}J-U1T0WohT)O6&Gn zyB*h*i;C^7wc&j0M%XlL*tw&%HoPCP>ofJb$ho(*Hk4pNp>?%+^ni=e1!cC~GMRe9%tq}h9?KFkuTtm(|=!QK` zXu0`)qGidRK+`cFhEHq3K`;D#JN~0?s{6=-7Gp+?N8)ssP24Y5T$0p_KC_qlLYuhj zKDX#glKLB8q=K&cDi!oOcu_e#vq@G958_>9`{^uuVJ;nrVoqk#bSmxLN|?^RP>i&KvDH}SE#w5cIfUX5LLCt_jpog{Ga zE`1YyW(!s_h<-={$9JtYaeD#&jx;TXB<<`p#81{mimVf)dH;0y}b zKy$sJ)zmE#5{qp};Is)G_d+eUp;+r^YNFLi@MuHTq4HtFM$);-k!3g)uL2GIlH}0Z z`ihpCdb%zN5{HI0G|_FzP}OxS>ad9_P!_7>iOQ}d_(rx94Dn?{>A1Mb3LC zL7RK-Ap2No9-SC%>9>a_$A-J@?Brl;uRSKYfZk~r*+t4e+n5+0?y{#O1*#rP~U-I^F~?yWoGKzZ7NlTRXg>+Zy8y|+GV2ZfgPT4G$dw|@KaBjitA?w~s~6yCgxIduvboSZE%Q7;WjTBa&moz4egfU~6xk zkz7FUtqbfTWpAxW3=j9#`lLYBTTe`i)O+jN#6a0w*Chc(^wujA!_B?*#yC(pD-~xi zMt9mfZ3*dp_kk3^Xl_s0f`@zZ%XaaqL+`OGAp7+fw&1dR|H~HE(#!uySp;R&W>9Q5 zVy!eje%6>0V>Fi@m$l?L|+7<~rf?>90tp4C2+j6>Fn3|%1^bYfENrjz6&@Nv2 ziW<8Dy31H*3okv#8hh9X2XekGDYGBBERKY6plIyjf3r<7-Iv^+5*#h~UYi18fAY9} z3FT2|yp#LCWf52B#pYdzrB*i%36nm`%B`r_-Q6hOIrYe&TFOMXdF0BN`f$96yFW?=ClKAQqz|50dD!sQtn{{^RBp#grqtD@8f!Q65S~O1hS3QW3HEm{-%4L}|XClC0V5e3h;wQvG)-vKBwY zAIBAsCLeEA$0rgHiJ|Rx_+QSoLBD(333DM?$d3+pXgg@tgV%m6c zf;}m{r!Gwejb?VLJ$$(Do@ZM?b>d5HOUT}Qy*<3_*4ylXE&cnR)MZdokJ*$m_xKl5 zmqAKz*^{#PfKTkpgq^`Z?F(7G!f*Bkb@z}pEVdtsX!~J@BK?Hlo>`hkM0xM5) zwk@>uA{QmcN)K{va-hX~+>#m|C33e73A5LDI5j*{crLkw#ap~?4VAVU66(l%Ik8wVrCz8LmEOz>kgY@7T5D$IDHrxbKiHR0KIp&pMRfm@JtBeEGWBffdpg=hNBEuYHs#Dd z=YXU#(N5Lue1@bduX~|!>B*tVPf1lW?3d=IA*viyAPrgRsTQXyDP2}es$v%3wYoLZ zDCKigmN$E|OIjn1)UQib-s0bGOGi5F=ys(eZuNMNrlUf4eb1*aD}CUbsVWFN!;jMt zRbKJCG-P%6_-m@7(ocFuCiAKhzNn=V_ltvU!O%rU zCjo}N-l55n%E`@64wXLbm?S{y!WJb#Sv*!_3Si{_lw@$TKRPP~Fm!KB0=IaZYixkS z&Sk3&wAGjFupyzlj@`DQ(o;N}1Rr(`uO&w+Kkz|vsNU_rPJ)!Z{O4q-h)%7IitQCt zzclyZ_HnQk^)2`;dUPl5k_@l+;-2U zxQ{J(xVQJUi&tHKm|X$c?+>yCmz{sAEv&@@%u87WWfZh0WcCF$DT^STWwwMYUSW-G zk+5qx-?og^KU`*8PInTUQxuS%;&xk7VRvz_UA*!ckJ}Z{9mk8d@X~v{Z4VpaLO!)6 zW%eU{j>gAcK1buZpW4t9uMzd#pgRfqNtjWi*LU0jziz~_6R*I^#VF89^;KjhC2LY>{!}xXM{F`M??P> z!CF*PUly#PJ9b3S#b*Is^qR^{9Zq7QKO(8(GfUL=@rWwXw-(c0kqrG)Ow==y!5>DVfss`H zS>%mPI1CH$X)dj!|C*2hm7t)!}^+O*`0JU)w~z zpE4T0@g**Co)m6Bp@wNEqRBN;i2{m`eucYHMW`~^Qqvs3N5_y_9UX{4N+3C-Utp4a|;*nFt_g6wsgoR8om0GZdUjcWBMsqmBE@OzBdjt=;u_xv;UET z=2KGvKbI7Yv%{<5yaV!R?cbB)o2%+unu2u|=xCt^>i2Ro%kj;HmIj=JL<^Hbaolrb zplL;I84jsEHz^t)E~svw4CB8}imz-8mIw4Zo1#~eWfRuu-kYW- z1;Z2tJ}D`>Ox8I9K4lmhm_WLRrE`!*Te z+Qz!Sk;H1FeN9h>G`Fo&l7X%5YFje6wN33w1~<2-+&7ct(A1X3Cc~QAQEf78lnc1p zhJ>|tUbP`%R8a9-NirJI|7&dEt<`jo4GC*a{m+Jkxv~blojebw`a0GI+*D<^M8gAR zD|q%3;gZ6>O6Swp>5EQ%Cn`^|Q(YOIY-KBCPi=+l3&~`oe3~k#4(}$(ZCuHEo02h# z>74XMx1=xnnMIU8HLEuxG2ZEiar1{|t1+L&B)QSd=F?LGxV6E-rGh-J82{;$QC3Ac zd&~vtwDvpRb6z`Jy%1;rhKGA+tY*FUWk9cNNTRS`%dGnEGpoMc2hJBd1`96twK#j& z>H5@F7ipSVHBSCE_YeIOg=uvksG_kM)&6k?w6oPKT+WvX>wP%`diCzZ>c7pb`W(0O zrDC$aR|eFhjdQ^q?seXBrMgI0jg>6%*>gFJj2fllRFf2Oe^SIJNfG;Zi(`lNzT~KQ zFzbx>%y=+kn!76=f+rSYCF}Ee2(jWLAYHo0Gdl9VeR2Y%)%2AKkcRcoCIA^3*lX|j z)`j!1JQ8J|Rbnck+JTyx-J2r5aGwY(BJ{6}OkilL0y9$;SZ5M&W^REzh;i<38Phzn zI9!a**v#Yds~OQ+-y;*Yw(Xe-ty?mp^`Ksvu=SmcXkEH*CTz{?oe8bCWkl=b{W4+e zb&hLgS1H`g1DR9(M&?xi=(uV;w-pce%GG1jhX*@dlcps2q3g!+PA8z>#=J8*LyCW! zk|D+Gr)5a-0W&kCc=GHFDXyH8A;oKt%#h;Cj>?eYTNh+V@k0wUr1;W+NipuWTEBe2 zZklh~?#-CyzQ;RlGuwMpMzro1%!I95GNQG2Sw?Klh}Pca8L>4ZTHkhDE5_wz)!6W< z@0Xgs$mzl`65wHf^5P7rudZtfH8#^3CpfKJ%oDjoUza)64`fdD8;+~i*SgNDbGoE; z#b0Df@x=NJS$til6#p+%iWf9ws3`8vl;ZoBIBhX}Qh9ydQg{t~z^-|W@v1ys(D+v* zWqE&;W;gv6X@>LIx%n?k&zjMz!`Rd z7b>7AJV$Q0lqR|}gSuaFUN_ItUOHK?36+V~-+!{&p{F>mcBQhAW@b|P;!G-E>%4M( z4mf31M1h;1bLpR?PH#7YDt7e*?%cmDrEfBplF^n_rn;`qRPjY6b=Y5*)K!+G@WjpB zxzpR)C0YYNyL%{ux_@(Cw-_($8!PYzNW-b-x^|>gphS%DUp~3#>fYF_X zoZ)!2!hTjSdeoz5W=g&4R9(-_R0`pK)p$Xs(hyy1>_*4co1SXoVFmquX+~4P&UpIr z%1kDKyCwBfRgdc<5{fYoYu(7JrYz-uSxS#*EG5Ios!aX(*CkcFIa4(im8)ecsapNb zShdSh#p&{-i0_jkdfuRCNNJ5qWnDZ3-s7*MdlPbx+!9ASkC5BqG0SV}n?m$MJoZXu zDz(2cj`}cU|KyN^<3Zr{MIP5A07zT+x+#t!rq$18yn~20A86~%$+4A<^|cax?bZmi z*){N66MExNec|a8@%~#9>o-bLCD1QbfkRUjSgQoY%j^;PU1=uLCi~F)?L)O&^)e~1 z$4=g*&1Mt&i_eJnFRm?XYUY(Z{w}8#M*UhR-khTN%82AIY^D4yt(5;dEMHTDB2o@T z9Vn1{n^C$k`Nt&TpOJ+BTU>r^L$EPK$8C$9KHf;GYvKbfXh$3bjuWb)|HfgW8bo%e z%k8oC8-T&d0Mp|D;E&4dWhOq@9y<|0!udG<&bT0vl@BBM=5{WcwaAd__@n-2)s`6j zx5Q{w7)tpEslk1BCA1|{`xwAmny~5}EXQ(&c&SJ4H2T^GJ7#mAE*?j3#gZ{KSU~3O zh*FE0sp)|PFt5bK@Kzf=X<In>+VP^ocq_aaN$K4ZUg<2DJpyKb3qaD*Kv-WiE8DRT} zd!uYu(+nejcLT%6tC_o0^NI%D+e69V`=SAIIMpqT(dX`nC1dS#{qK)b8`bBw#>6<( zy!Lw_mH`emuFcWPu@ASV1cVFxz@!6tQRLZl1BadBM0@}|Ke zKnFOkagj+QdtN*%kF*ezI5sGnOKVyq{L%}0=~z9lI6>}R#nY$5vNa3V7m5|t&js7{ zqOLW{?NF2X3rM!Hkv6L~1UNs~}sJ_jL zJ~POrdbeikF9x*)_HluVF2Jm|dz9%VgTmc;O8K<1l1Y=OTU_oSa0eRP5o)w#m6sai zlG3nBy}z+$mfe~R#L3@pfJVys5-My;`JCpGkugRL!6-2etFQ$+o{!Xl1}b&LxRr~e z<9$O%$uL#gMt&yI4+gtb?^dZA>3&bug3yqLiJc7%BUFb;HJAGvDoTba9Y!v>(Cru4 zNJEvhCXITVYN*hyfewo`_M5=5CRM7T8mcByeV9E|O$p?QOA&qUR146&NOElZipLWeHH&nE` z9bIdvO1o9>G;&!oD10U;y=iDpx5xcy)sRLL-|vHPUB+-L(+#%n{nBs?&5=6NF!M@7 zM;w37uKLkrAa?q1Nf26G$&hf{=4SW1A#NE;I)149qCPr_IXw-PWbOnJgBGWOn8Kln|IFV{Y zB*BbhwE#_?HzQ^_4X&=3L>uBmP*?(TLl~0wC@d81j8c?(gBFUO4l6QOiQv5*=A}6p z3pL+Fs7ce(Kf-DvXI>&1|Hs@`L=C0u;Dnx@k$O_^=0eXdk9vQ zV9gc%(bPyU43n*0WM`Nm`>*WQd&1-h_u%V+fyyh zL+^fpem+_;2`X8P7=Xu}cW>hwY!QboPymKMu>Ga-55z7N0;EN z|40qx^$jb8d?2u>t|d^ud^y(B^lvSg4uY&lJr#=_hm&Z=f$K{{Wjyvh%aX#9JLn>dsQg2w8hE|sc^m~nj^~PsWTF~^n6H0bom6jzdt){%` zh!*eFPS`R(JuOY4y5`0eSecXodQN#HOHPwkQKXu4u1zaXN{#Xi#bxz4&3#LH%9N5Z zV`$2CX_;fv;JUuG8s2QRhBIz#tquFAQ6RP2HI>8STUu+wo>prJV(bvkC+%Fk+G-6y zw^~D&J6fBI`?j}M!!sB`TUV0bv|7Vk>hnTr*XENuTbqkNccrBPcMNnLhW|8*a9JY` zW2S5FO-s14rUiSS24UWiM#{~hnwkchb$?pIO?cC!fo^}G6~Z55ww{LBYG}~Msbewa zX}y+h&=RVvs7W%u(H@DDCuHmM9MdYa5a$_b?rtJcImr}$0btmx7VEp9BIlgYc-bR1 zfv?yF`X05Z@ilx1%9f2?@lhgMz?t~8j~OVR*otb5Rhp;aJ3lGF^Pf%$KJ=NC;ESG3 z3I0)P@CBG1i>FKVbdn6tnNu%j&>Qo42K~RT9jM#4L}RS8JUM5_+0+T!Thz>*3tOD> zjtA_93LFSg-AucjO+fl|BMlm6oroEXH0_U6|FU(C<+S=A)eU(>x(-=?=@yGmYpwN= zr#9;2gw9yZD)ZIX1)WjZQim5haj?WP8tAOzhO%J!36;U>8v5N?#rSxiH27!h{HxXV z6>3ILrkQs-+X^sZ*H>23>vuV>79T*NqpUNh)|LSrQey}!JuC1fuex%2#X7m-$AMS| z!8H`DZB?hUXrddfGbszx!DL>tPMb27%wE>1QKpi)6H^$|49tmS^yL+cD!TRIzb2iX zm_Yp%`FRKPFNf1HPNGUz5&0&pV!u z?Ao)OSIk{|V`kL;Y*p)6&o(Qfn_sk)wVBtd4rf+G$EpvS%5H7uIhV-wcpPTx1(``? zy!v9MV>!`#wAoymqrOv_(NvbIPfKPrmAll(9UV(W_T^6;*NZBk{nZy59kZ6T9v(|; z`pXTLCc{&f9_q73Ryob7Gzmfu$iXL&{-ArwZZB-l@W7{YHeU9&eZi( z*Db}4hKfM2aZyVx9yMbteFTLnQ^1a$rA!aiEo!b(_SKkT6tICAK3msQ-_jhYuMFU2 z^F^Uiqs%dyZv#_)gs!KtrB3Xx)ob1orM0$DPsTy5v?@DiPV6KjU^C|0f^|PKHcYgJ zrSlY%i$@iQW!y?b8I8a7U(+7?Hq%E zIZCJ40o|)Wk*yrsB1!aWDq#Q7x{cK&@MZmKjMOd6%~zmo029EifgluSQQsh8(bdX zor&}}1qlQyLY2Xmn&yBoG|(KX#hz50Kf~`;_AefUNp@gPpt3O(s=;Ip&mJp6%jt_$ zq^H%Fp8zHNL!lDgc00+M1s_XYaHULg*x;0t)FsbNMRHD{u^yc;(9%FR4zZu2-a0~b z#jv=wD)-ZdsIk<(-U@y=!`pB}bnu9HnoXdRk?}xy^BwmRE#=L0a$HPB2$1>}bYC=L zncOgdW)$uSuiJy=jf%1vT;-1?f~i{nT!HL#YV?y3Z#M32I<%HQxmMisSC1D zdBc7H9^(YsJ2e$J`wMR{)Psw<6_LO2P$)wik;N2oE=_&{y`sl#{19-Si<|M+c`X9x)2iIZi2hK3zp2t`KU|l4f}<;ub{{(iO)bjn}7_ zq%F?Q;JS3BLk%pxCtdLdk@YD{(=0i-^ak=^&Xm?{LJld%rz@_HCts&8F9(yFFdR{t-ewG5(2ds$%_-60@@qDwldQKi~ zB#m~>iZmS?$kN<>gF85UH6%#?$$-vbvmLb)@9@)T^{mfmMy<+vby;XpbsgQ{pjOc; z_M7Wy&a1IpL1#Fr^N3J`I83s-DNqv%o`A0+KIf$R=|U^rbflxjP+k?n9Ey%|RB2^> zO$EKQz(JjJq$}d(*e2R=bfz?yEXknLtD9F) z_hX&28B>|?A|TCiP;)?)1{QsVL;olf$}6gyur3jz5yv@KCWhshEC;wEgJm@#n&V^& z(*w0F{51^PCzv6-btgK?N&V7^22dguwB1R?a{_qu*t~)d#i5^^R6K#7gaxXq@%|b{ z7gLP(E_1NpO^PFuxzx#IOg)O{mh_v0%FWXkI=kGt!m%ixQIR3V4VhBBf5$c;!>v}iDQeL(eU;$?ogcLbnZ8y%@9m;i71LK4Hgvm# zTIDLsl&H1G^zD=yUvf|*FR>hjg+%LPg7ht9eOW7=)7L1oJZqKXDj#xEC1-o_Y6op( zg?~7xQ0|_kaZ$^^=~p%Gqxf)9%0A15aOb5L!t0Us%@pt~JZX|lA}r5P!JLmgDB7r?a3oU>F{x#V)kRsQU} z%B!w$&dLUyfrvB3@r-1*gIe`j=J>0eGgMdkvx6#ex^}3snclm`IV*LQ|GwUFmB-%X zxXPcmIJFzhZrtviMm5>|Zw7R>{hRZ4ZpeVny1SgW zbNdeGb#A%ad7YnRK<7uhoVT;^UgvdQeV_9>yWQ`cPHYVdztQuKgNnuTr^_F3&eEo3 z!3LWDkaG&ldFvJZ?x05T6uZxE=S-}`E0whBVTToVe#Bvgvz=DB^HJw4Y!ro9U_Gf0 zHQ$QG6QOYc4or4z1wm-6c3k5z)`Rm}m1{N;pEPO2i@x=h^iak$-;M*LohnzW&0VbL z`#D$|mpiSwCMb*f_e?4N*m?+I>&rq}Jnb2Wt4}F@!D+>^E!WkH_B`lWht0NVFMKYO z+Kku6#8;fxS^ui@I=8*%yv~ttIHyx?Pg1M3Sfg)nTshy5$QQFOf75Bh z`NaYKFp5oYXFz#*4L({=i{A-7G`rc*Ue*>{yW#{&pRISkAnK zDy=NyqbOtE3tPzQ#YgOT2fCAqbbsHudXCC8K9ASygUsrGDP#J>#XXM3f0(IUm{a*C zQ>i5WIHI#H3Jv$Dk1|wRe{nue{rLYRAK@n9oHIeKoc788Pr3Qd!Q6cn;~GSt54vy9|L40z+{{0wOi7sfd1`gtaD5NHZkhW_e?wdRZetE_|z)KTyC z)t8yeklw^rex1Q2!o@O>e1wbA(H7SCpBc)H-n@d}XG(v# zK*rJcKk$3=`dwW3%i41=6@Twv&KXe0M;U$TphEq{o;d+yNBK{g(B2$stgWsK*3h3$ zYB#-nheu}hjlo5DF$sTHwc%I%^XGP?U$Gc+rP>LH)h7He&j-M1ZKfEtRePq))CkN> zwPPs(roY-OlmIjOO1(WKz^t@^F+NqEK+ia}EhquzejAuSY+x2&ojhMR+Q96k_8ld# z`3M`BM{QvKuz^`{ZOnYFG@D0{*#YHjvY}~uY!IK!i0#2A#^%Bnx+gZPp&UoNHdEGh zG1E3qGg-GeCO>@O%7hzY0>Wp)^xYB@pr6}wbUdy+m8a|0IKuMuwy|pel)2EwsSDx| zQ8GRp9>o_YT3#Ag9M<9R+s)hb)cMm6_#Zw3-x4swbkgmK`S+`BPGK2~d=It3C=UPo zB>ZFVOq~7@wJ|7;{!K~vWp~BUzcQ?hu1W^@A{k)3+7lGkI%<^sW=$v-3x!Xecj{*G zw>ng{gv0b%68?Q^FHTqnpJ6a`(V%-0>;Eklf2B#mP_;29Oyjfe!zrvz26!VDKo-mY zVzG2L&{yr=38y7SE1DXMp}T+s9?-LE*k>BysQSS~+yxIM;(nEo`;XnxvSIH@y&q1< zK07h{ml$kWetWCUAExZ;#WytuOE09F7%V8D2Nhkewx<1&p8c&mNYd8x(<{bdNrR0H z@`0P}Fy#>+du}cn6z*%(-9!#I8amt{k2JJUjU>*Q(`+JcG>9dGObYHZkxj{c7$#fI zBm6zC@%*fPpM0A3GSSc-Jat~wR8x&3d7JC?)7r(n3b(h?X@yVdHunh<`4c z|9d`-C?wj@R_F{hmf=_v9LXif1_EXl;C8GrmdDgyWp$7kkHvRO&=3-yYGK4n``24B_S#4WU5U zin?HJNGcvRsyvED3sS^$l0!v`2maWZMkB?3N<%F^eSn)1d4L)+R#6|ou{C<8Sgxmw zOK|b}y=dDeqSwyX%cB<0>sH|PgC=}7$h;9U&=71!!PbRs6v&2_x^k(te=&anK^7r@ zalIPfM?!0ljiN6NJ2^eGmdapFlMOWzMq@8D+iljPTeC8b0rS%pY)V&fTU= zTt1z?=*Q`caw~yTKr87oxC@535jmi8=#H5mLV@h&(%>t}4f36%5a9>Ah4@u6xJ*1$d&A1k)T zgtb0%ncfbR0h}^UJ6lxWSRHB-)zTAJ7wx~kklLey&O%Jhii#^jH6fgg#(xquWJ4hp zCP4KD(nZrY#?@7fy-fTkf%7klt4;wY3XMxHE~H~HB|8lZp=cM&gX*L_d}nWYd8nbe zy1tGkv{OvJD>5-S!Qn#B^S2k$xGqF9vlX-~Sb+k;=S8Y=%p{&gRl^tIZ>ErJ_hcdU z*vlfx$AfZVmRHdyhCaNptJ8WyAx5)c%c8302xE>CJ)!@*g|rod{XKde8Ck(p-U!p= z#O$)f>;YN2a?Yrs6bV@3beKI@xjopG3T8@Bd?WFAFADkSxl?c>X0T|bK`a?!wW@}T z_2{{{Z;Rw?FgPYfTwCKsZN2t!A?-qY`CLrlxxMh|ii>LM%P3aNA-jJfT(T`XF@JkStoY^ukaKMsBjEFDCLbWjZj{kJC2g6{$}gvy(7)Fl61 zFO)pitt*W)T8(iFLCax&ICcSN#;jl$2qt~cBgzLLh9$gcTTC&5CW-cIK#aSTg@PUi z8Vt5_kg!r4(v_-EW!Jk^j+(0)>zC2~Xj-zjHHIXGWeyZF)g!vn(cqUFGWZ%wBfeQ0 zZe#)OL@Ys136aOfbfv#z27^Zm!gzeG#xUj_^ay>!8$N%^M+NFlR4#{ZNz8sYF}o8I z#ZG0Br+S3-7RYT)s$a`Q{(6pK&)pKnD+Xa0X9X<+9`3^NU8!q6(XA)}!&|Da??}kj zBf8RAunT8&L_>NCEhTfi(gA>+6#-GcPofqa*_C=EK=l^7PMp`3Zt@ZRYSdXnOJgXo zw7Rjm1&^ut??N;q7xf5rrN{Orx{I3-Z!r`%jMa6O^(b*8OfMv6f0>xQ1Af}5PIj+) zZ3<8OVj|{OiI{hzI~!`Hi`Es(2)&dH@O3gk9^67?u>=B`y*1QhW)f-)G*D?gNG0FA zU?c)&QA`YOm*sfzc|3MYgD9f!gwrWszC2h~y|e`Lg+Mv>+c$|Gh4my+S5Y)-lPmjc zYEt{ACG{ZM8vBNDT20k4jf^JKo2`)jS1V*k=pH+4^U~VbM#rGjoK{KKwMu$dlyp>k zz{7ggy1Mxz>n1i@Z)~sGgo}5)@F66uYX+Jc@d=&0$Yi4Hnwu`{iWJ=zB^sl|L25V7gqBKtE4w9UKg`NHB1`!{j*XP4m7_^c>Ow>K>tvY!|$)K?LC8Y>k z9n>UxAQo~kq@puAiJp%MF2Ry+bPt_G-%0cwixGq4p*vx;<5{E?9mkMSvA{9&cf5|o z9&QMurQWhvY)|UKf3GT333g2r+%^4*MsJC>2=Tt!oa}MEL%g92(kc z4KrJG|OG|1h-*8yQE@R|2st5CmKp>h-m93CHwH30n zF?qAv9Kt$hM4?(qByOK9`LqH=9<3xgGmUiq5ha6N7W~MBA5R#wl?WPrla^FACZ5)E zh|nuC6+xp>`no~5XQ}C2gpK+n&!EzgX-hVwExBI5YmH%TeV{f}TZU<hfqDMz(^8(&+v?LFNwjsiCMUNYks5BOy2e$}sJc$mA zh2+88C{m*VPND^|z$L>20jqDBM2lkrk$yx@C(%hUkt4%pW=j6NSlGd4Y;^HYqAj}A zQhH1e&00!tso>P5^pzeiqu&*^jN0>D86`ezY8iFc!^>!(qAsKHDmZl+&C7tErKnZ(rV382qA&Gu6aA*BP1KHO*TTpq>ZXUA zX@H_O(>N8J+DtR`a5WvTsMWMY1*cZi8a=$2HY)03x+7)V8BCvX+YU@N(*}sLN@r3Qk>4GxYEZ3MlFdYEZ$cE9g``TuB=gwURcg z;M7Xmp@%Ez2}P}-*Hv(81%0lEL-dQHhNunSYlxBzQHc!CnKd;;N2zd#PSJxQ+N_As z_KXTw&_DHH1$E{-5llp9!Jg47TuDJaSV?CpB674%g;&rkdT<5(s)#6)efTDYwJoPf zdT=?NpomjzX}t>9(k?w%OM4U%_2S0Lq|i`9ee_@r%~V9xY>NsnrYrT}VtPao(KbF; z;cCjovN|iPrXhN07FyQ=6>g?gda#+cDB{#6dQOF#=m$O6L|yn^N)%KTjaA_)D%XQm zbhaX*kKCccL3&LO2I+T2L@(>XH%_droF?nRa;jBC^iw>pkbq@$uO3`R?<*pDdKTYD zv4%40rw7Yuwj#n;EK}j7bhRFYU(rKW@0`ppeHlxt#4M#o#!1uxHw|o;B?b29QT}vT zOk@lfy)YIqp5s3?7C7d3a#Jki;P@jI-yF%OB-dZtl^(>%x?jZPc}zgBxNwYqR(j!&=9&=pRh_&Id=8aWPN6+lLW0m zp9x7?1;ch&NPMVp9k%xN)F(1JP(Gn+j6obsJ@r|P89IbZmU`fyivruaQte2hYX_ql ziKl86A$*Z@5uQf!UpK6QyXfzqbrn8!qLB}*C-8w@IMxZ1`|4&oHx`E%!yk#o(4Q%O z8jIJ6-0(5fU5x@VrKKPKd`v8!JaKt-OcsBhXJw~x`vSO9f4aD1NB{(B+-YaeX15mWN=BokCH-4Kf% zS|ZxVnKyI$;6D!@PsqRBB}7xsAle3q$F&W_hE+uSy1Kic4FbJ4Q(V2sJs)GNtH(0o$L96Dc|DK0jvMy z$?|)+>*R{7-{XY^J|?(o5voU5^0+6t`wk*;6!v5J9k{AX%oA}4O0$0jD zmcuM+rRP{^M1D^@0CUCF?^%Vgj|r}yaJhO0QI4m`JpujL(~T)y#Gj2vth+SB{LlQQOaACIPz^^}ZtayMRw*wZpr;Qsg+#Ga9{Ztf@1nzEjiv10dqixK;~ zjP2`wcpYNT%h&<#$NM7of{gWd-!TiZmtf*vqo4hPwYf9kEws9!9w9&qeGt z85@%~0kb*pAzb6`9sR+0eGRwUUI)1s=OXqtH)U6^iSBc^Aok8_BIAd;$73wcdiNX= zo80j|wAQQ}+y^Yg&j(is;$eBEJ)!rUPoXSt>TCoje$T;=(MrAhZ34z!{3HtY%eO^p z)7*z|y4cpCR(YYD(1T1UU9c?uys|}mL1typspi%053}hb% z^N+zQ;tsUd+p>IGr`_CaJ7~;6yY2LFKScc+L)^VC(mHv{5zo_jBZRxxWm=~p!w~PN zg+%-+%`+4Mk@<-y;@K}|2*~6H{_$RhD`ih(J|||S=U8Z*gE9a+@8!vNL+tlj6hu~* zmUjapUg26gojMCO;MKZ;!gkJ|fM~WhT0}jaR->0^}B*0&^LL1bA}`+6%6feKLnx z)Jo5>&^Y0~0OpD-@{h2O3EeKp!A6r>>YshQ`>lhaE~uyLei#FAcA1QM+#?quRxV>X z?)@-wWLL;od-wG{5evzf-+f*sVwE!1$^FC?h%J(_0{7nY5UY~0ZtmB)xT|HX*nP?A zh}FpA-q+oMW3_CYtJeV@-g+g<;QPynF6W4rbuIsRx8O?MS8*7*u#)#SlQ{1e0p?>b zfLaiR!B@ZMRwi@MH3qZ5It(NJoLcuZOl)%McqY!H)9t9FoO*7)JTe>rmzUEZEzfap zT8Y?_=>pl_(+R)A)L z;)%$5n{nP_6(y&56~?7D<1fa@B{BZuttj|52fc>6m6YP*6%C+FxS>Q*4l4e=43vX+ z4pfxYJ!WIfXmiLtO^QNVkEfV4afhJ@lf0kmK$_I;NCV~R;Y0bfIdtBI1}Ue4X@4A(S{9& z_c)acW!hXMp%;o)JorG6W`3QgNLulzQ$U$@mZ8X1ykjXSv$x-*FrMOpoV~e&XDW(T zyf6gHk^fqvD6Zn;jsj&~6MBuFSn(|=`!+`%jzLmVa*EI049fgvJ!f-uvy*rp{p~?f_gRnekM|i|Df>DOi&mnU={Xh}S`;g5cP1=$ zVFp(rS{+~go)^LJanLo=N7UmQsB2r-^XUFWuY!}eVH8HsdhS|z2hB%N^o_iGE=F)k zThve98WeWB7M9IBa}%hI#Y}x@26E7s`+VNGGeB(`>_=wifh98Y3SuwdA9~8G{NsHa zSIVwqJ|`VPKQ)q0y{=}`fA)7#+hyOK&Kf?22JhFbX5R;xhdY(FCp|ck=m(Jib9DAQ z%&uvswyQjCquISF7wn(wHEMg>@IG=B(!A`i+-@ub*c11B08!Db#-IVU8z~ylrECWGhW2QitI#9SP}cH~ z_gq{l`wr%_pq1YHIi{b|!A0#RoDw8rU0T*9EJ(e+FnAM>*pKN_A!De|f0e>^hv^LJ z)3pOooJhN=3d{}NDN~-r!%-gvEyjiO-V2TXr$*~6Ny_^B< zF$TAr^U%Su0GBhMp+5jeeU&ZC$7}=jzK;QyqJ-K7vZluZyu*Owx&g4L8ZJ=u4p|hk z4152V0UKHXI03~G15m)Fcl7}P)O~-YHHUpAeaW++TkIkiH^KG|7*E>|ch5n=v@hj$ zfr{_95AvH^rZK=h=UTi>Ibs@uXahaRVk*m}T5t|7T5yxkaEI$Xe+>GUj`yRT7WHZs=f`vHhH=}}K7ZhyXJJ(|;LQ!dhJ(PSyK z?{q9&m2asY^>->eAJJucv{R=pC?nr;UADk;Em9Eu;3PDg=Q*Nfy~01#+1+Q8-H+omxE85~x(q~pOmI~o^xkr)$UE9I24Rs@Cm6vDB(<1-ybZWg_FN7N zu!W9XvI3pPN%;ZH6<5D!DZ)M`xL(9%I2LHNyoH{d5Ee;wK8T1J5Pyw-yzk&j*}FL` zz!rLrg~myp1YoYX`aK^a>|=uK#7-zLZbf+~^=!s4_8EwIFRsGnWHu$Q!``@@B7%M4 z5A#-v;P`O}t`fmds}WqyLC+D;B}@$-NyLg_>T3S+o`EZ6FXk{OVx{L;XlyDQkt?o# z&v_8?F~QZlGtuNzA)R-cFm*jR($v$1CBoFTA}CBfLj;AXXNsUO^(+p0{>P?pTUmV_ zd@>Znq<;M4Ey0ztJ9Ah!)kHT;6*M-LjmQ;Ozo!&JJ|?(cLg@6#P?2}8Fm(*#($w>W zCBoG6MNpV}fd~pyFBCyx>N*a3Ze~;1)c?U@v0|9|I{$dz#g(!j=CE$6iEfxGXlyDQ zf!h&W{hp6-^>NU3(q4Ga`C_QZ+bB%^97JjAMZywc>ct``Oua+|g{hZ{pfL3^4tnN5 zmoRnOK18e-rk=__-ZOEf>=QVwn`)vPrV1LH$42CetKV}zgnUeJ?bn59?zK>nccn0O z131#utAr)O)T>2Mn0k!}3RABYL1F494toAzQ@B)*zkrAp!_@x#!zCM zhN*(arm_*a;_CN|fRK*~F1$HPcTR|=uKPB#+sXK%v!qmG(P?)+?1cj-) zL{OM|4+lMevMF4u!NnNqp%|tP;2-Z0Tq(N?hjmj;bi-6ZWAoUETygb#MncHP1lP+5 zb-4;E^6nR=jze6U`hc)RnEIdy3R52vL1F4{5fr9A%t6mBYzmwDFs7=k7^c3-Ki>Cn zrR+yJtea}08>R{xo61JyiYvxbgndkKodUmp^-!qDdrX-6C5Y10$Au-r)F(txnEIp$ z3R9mFL1F6C9Q5FA7HR6AxCds%Fcte>Vd~kqVpWL4x~V3*VXC09scb~9xcWU8LdeGi z*8xRD9~}r4dCv(`F9JuJ`gdW8F!gy66sEo)g2L1nMNpXf5(hm5U7}R$4<%y7Fm)jR zc!%Oj*##WdO*PRCQw5DpWh1aYg{$8)3PL^(x?VwOE0zhgyjO&&ye=u9*LESU1%~H%t{YHkFOY6<5D!9fW*LaP`6L;m7@c!wlQ$G=w z2va{5L1F4=A}CD#Tm*%wUvSW)@l1qE_4^Xs2Fhv4f&AkghAU`n}56?;7Zw#b677`6WuUX(AZQqB3E27%R<=41lKA|^15SvNXz?|F!gH? zrKvv&ON6Qa7C~X^&mt&H{f`I=Q-9&0=P2kBrk*kqcefnTvexpC_gq{lyPm_ksV2H% zs-Ur{Y(%cOVwMFV9~1KV6}?I4K}BABt>By=YKc+ba`vX^jJH^4+U3=lL|;VcKcDXs zgo?aw(ts;Kl?HT|2D}S`FyP}O&?Ete0d4um>&KO{e`3CFfQfDxAZTm=Yt9u{zh^Iq z`k0Wv7NKo@p(3wX8c+m+G@yqx;8+lZ0k5_YF&qY*%Rk=rxKefthjjx?bi)8aV*^-o zuDJR=mm=(ALcX^r(V4xWB5z-5z*V411A0pX-UC4x&=W14;V_^*|9Cs%O4&a%UpK%+ zHw+LoHh?wfimTsK08t+k^3O!*!4XiAcYrjYI|$N%KGJ{y2*QB%C@6-*fb;psyAfB) zUdCbF02AFXK+xC#)|@M@e$V9y`pBqya$? zgaL<@5iuMFT*yD(i*cpw6&%(LFwqSI1dR<~&AH<0_wbVx9~1K1?u&KTqoE>is5D>` zsM3I8(twXZ5C%{-7E%C*0e=4R?u9F5|HgdX02AFXK+xC#)|@M@eor@u`k0V^Ef>O3d-QIGn~xcWV3BkW^>>myw7Yye3e;kgfCk<{u2Oout5WqrXv-tTaw?3Xz#z!rLrg~mx; z0AQ}T`aM4(>|=s!9@d0c%;#LqJy4|Gi!{$b5Jj2~A49|lq_a&$q%8Ct z3ystKRiw#Rzo!a9J`TE`Md*cjP|jJ@9Vfy_I(@{ zQWkoSg~sXB0+=hVe$TrI`nMWg-`)XQ0rLP^P!7~jzm1K?<%5>Rb2KR+b_gr zamRaR;isl!2_`xn>pJf2ho1(|ot!kAHU|G#5lnlZf4raKO4-kFn3Y=TITjk5!-?jK zD`r^;`XA`42>W9CST_&^=tr`Iout;O_FTku3uE|C|UH&9bYB7={F%;~(!oaK-&U zhgmd&zB-aly)I+Y;wzy2`X^^2DD_aU?Mz?V7W4=HJt0i*t5ux^+7tgmjujS07Xgj= z6Rv*G8@T#7=sFHPYTg1AP5vI4f%lk#X40nvel=$0f1qWRbHvNppgw&#d?YhI))`sc zN;DcgnK_*2{Lki}ga)PLszIkAQrYKLD*0GxuIF7`{hoRNeH?WCiO_ABu4tXBJ)4x; zr?KF{3=~-w9t&b$9Iljo50eDgN`EerPQ5>4(!S*yb*}y493tKcqj^O)>#Ox-@{+=- zOk#$l!>VQo<%+A{lZO<2Ovrx?9p|g%0C%3J4PCezfnm>J1+{aN>zihxuff&a+OUx* zhtAcmygB+KYLJ#s2C2r?6OC9r+6L)$7OZzYis_N)${=-t|La`ox&jWLD+;>uZpkIu zs|T0$us1P^cYaapT7gqlxFp=LehRn@a{~ys|G37YTa*;Cc5=v8$ODe6VC^8iS`1fp=`gwJc^l}kx1tQUFX1C zaj_cA70mqUS};G=-UWsWLuY!kF`J^&iy0wm>pab~$WmP+{>D5}WxKRNxd@x;Y@{~n zbf}%{;@O?7W1~X#T5a>va zCL+DgkGgvDnTWX{^z-fGqRx-IIP?8@$m;xrYc%M2-BB00m$G0#9>O|5>0(3r_2ckU zF5W0OiU+#RPrE#4052+xy$h#;irK+G-urN+>}xp830mnn78;w$2IY#Y-}5lSJ|?)% zAA}Q$E`)TK5@GfeAoi;|6ltI1;_S&RoM+0y`63I_?h9O8JJRk8UA(uWACJYI*9pD- zvM@#Hyxz3|Y4j8M+2G<07@niiVMU%UY$UoAT-bg!|9Cg!N~7zU&w1*6nM>!;=(7#t z<%+1oZ(z>WBLTlkadg*H`XsZ4?e$Q4Y^+^H; z^G_L!naUibUq@$SNvMhBR0)VJW!=oJQ$>)Q;!h&e`m3y!Mqoy^kf`^8hR!p^B=Ju1?=g3~H} z(?DGB;`gsP6AH0KApT^8Uf){}S30Btruy#5f_iem6 z8X8f?OufFvrZBU-u*9hE&ge&G^<2MPusg10k10ORq+c+7tOHBK;>y*W z>*1^4^C06SfrDd*4IyGL=jnW`Hm*L_~dl0$EvfeD8Kohz<>&$9^on2j3=J?;`0cOg$65W>0v`(alRN3^W*{NtU3D`ofLFiTqLITjk1 z0c*|`SHEW}gnUeJ&Bb8%J{F@qT}HT;497cZoiJ(_oLq7(97f@gYra7E=!k9ozqylvNDXm%KY)ZI^0bUDW$v=FM&b?~1Jl zSb4pUX5Mhj4hpV0qMTKTbf{M&(~k>)e*LM)yrTEMfayKaB@1rsc%E{^Ql|GE%&V>k z@0Nd}4YNN~c8iHz@7Ea646%aS{pgF*i_47hs3XUc(w`ai6Z~u8YAx?E5XXNA)c%n>Ebe5wl4UhR#=5!~L>naf?S;IR#xEf&y7Z714P;Zxe_ zE(=3grO!=VREh_&m?e4&UO14e5S6XD2VsS);APGYqMjX`1XpTTq`s7G*RoC)Sy+QB zW&fS|tRsT{Dbx2e(e>UkL4XThQd-1dCh|%L|BUgp;H?u1RJ+Xi6MsmA4%marEZDcPQE;5tW!o0Lpdi3m%;OnU z!SURf^LPSP5ESz#9&`%Iu7cX6`%&%pXsLU2IU8S7+E)Nqq-{gb!;D+h zHRHW}p-K7d90g<_?ZbV;5H3$IUue>B1JX;o8%3%@DnmMK?4qH0de^9(@^rK5atJFpv(_>c=1}CEE8WZ}x3&ZS>;|=7v{r zjZ#Q`_9!B{o}P$k-F<#G7!NDPOPs|%g=m{XP2uxqhN&$3OfVp?#fC^<)2G6~y{mAd z6vE!7&l&^rkp&`+++uLQR9qp;ok*V>KgK=tv`ADG#}56P3Xq7D&~KC~&xT&3LzrbV(JGxPeQG*8!Rjz-SmvJAC{F_ZVl z7o4emaY6($#7v$g7T_4zE3C{BXEAdF)~XA?(jG?fsR}acnMT~GAO-6*ysd75Q0ZgL z?R_Y6v{5^4e1!H7nRx={$%RL1{;~+s5x+5aKWtwuxLg}}hQX!ME@Kg?0KVWV?GdPy z8>nTqm5yYl7>KXax>aGx!_Sg}DSb`pLIbfyJLyI>R!c|9`J%}uGa}eb1-EHGA0I=- zf+3=O5b8Nl1j3m(*XAE>!u%EtYnfp}OOImn8TjoUp=>3B@@ue2g$4D;dq=~l^bv(9 zTR7^ph>q8#Yb>}XIvoNmo zYXev4+6%qbY?pw^tadv{soUGt;ea?WbAAsq1p2tXx;ln{Dbw`^cB*Ss`#4xCz0!cq zbX`0*2F#SLM-A*e*L-*?lj{_Nxvb*SFB$d?Tz^5pRkSvaN*wshtH=UY>3Vl&v^FXo zY#{1gCt*4jl^zqQ^f-pKZ$f&@UA-p7NzW^b{33-d?B#krR?QgIV=nh6lvKf~uA3Lc zOTkq5KNtd+xXREKq8flmh6Sj!=fTSSD_lQR#>1MbVTK`ajcdhKRsqox#YN_Km4V&t z@?-L0HYAKSS$?Y_aFgrOvl0nV>AMPBc$({9@Z_gL}hiC>pfpQf$+4hbetjZ zfa{rvMjT5q)!x5^4Px?J5*&Eaud&VWU!@P$VBCjwgyP+_IE675%c6)sLH9l%_7CycbY z?i(@Wa6XM0z~Ri?z6lPgv%4AhrxxZSW}bH~`bB~Jtu1&iggYNYaw9Xn-I3^K*GIsZ z4K$jA$QG5}r?3V4xLbN#vE0mb*oOwJm-|V#6=tZU(j3mBNcm3Ja~LbkDT@*mrBZsJ zCD6_OI&d1}f(eM#wn31S%;2MQ3C~-GUi-V=otqNB7rmGIOL1vXE z17Bj;4XEdW5$+c*x57*Y{#U^Yzjp0~$*5Udq=CH-RVv53e*!cnmP!vdV28Me>|=$Q z3|zvnS5Ab1ligLLtT2;-S1VZIudX#it*}S~A6M9d8SbgBI9MwE+JGJ5{_R35%w%9k zUKx1vSQt3Zy>NvUW-@S`f)(bv$F^8ukp_kow%|DTnALHxRC=C*6&AX;53s^a2HwT6 znjj1exvz-mBqjsjSFpm~Zr_zwZIK3gF)m7#HSS?r94vahf)$Q*Z&_`HnGBrEupmmi zpvnFH47vJYo)zm2e<{QG#oL0D+>c_^`xXinjPpUI*DFNfbocK4tO&zZ>0{`d2KIRO zd6-a|wOO$udEJKJ45=13Z=W_xaUtQZ50(fk3r}}HJ=cl|>lN6M5_hS4Yjq-=OqzV$ zkNlov(71EO)$ch0Y5639gE$HW%SyT8>i3+*OeVD9wICK2&+Xi%=OOK%JPF3OZ{C}) z?{F7yKOJ)z9D4Kw3-c;eu7|I9a3b_`*wue3zJq|$9n^K8`>~~1PAlQDj#slL)FC!l z#yoEKgBo=mA!9l2DJZS3<7BM8n+g#dFJpf9Zq{;;jCFF4Wi1nAtib(LFT@U(v2N~@ z+PbLgAu?9%e)b8ZFj2<#b-#dRny!<$UE$;i_sbkRRL1(a_Zf}YVKUa&{WPY1T@RPB ze(trM5t}As{oV7M5t|`n1KeHCLhMKx8|dZ(#=6dvu>(CGl!I6!SQ;YYLct=!VE*xr zz?HJQahMCrO3$&-xNP}JE*|HL5*`O39|v7Q^n_8L;TcBJj^gj9aEh$>@T_~uc=dW*26jyQeo4~yAJSI#M<0%fbb5YTY15g-}l2cq)1*w-t z6)1|o_^8hz^^aF!hr|>ghA*K|(JQz0QIzrR-@i=5ezZ-F}b9K+4x<_0`u#u?}|l|De05tL7SL&}i6|u)C;-b_+aj zjntNR@NAHFaW9&>0VChYlaa`<>778lS=%!g{^N2GT-vamK9FwJ?!1QR%PRzlrd3yv z*5_78X6qYe7p}ZibWL?H^XY9R}u?IYWYW?Ty zXA%j~tn)?Adf&)AewDlE$A6DA(HEP9|pBy1Xql3Z&{$Snecxg z`#6{@g5&?3g-1w;?psu`lIZM4$~OJhYL)Z#QZ55drjWhHDv(i ztVPqbcCgvitG#iF0qLZC;`le$6P$+TS%e@DQF`-i!#Mso8-V`! z^|34SF{%x>8_Dtw=QuYSJ$@+1xy9)5c^v2FqQ@&a&TU1HFXj0EqwG7tt0>m@XLe`z zB%G6Sk_dzZNkW9sI|1oks?>net8_4QQ9)3wD5!v45J9;%yejtIP_JDq*M9B2;`Lhp z@B7W}=A2yb?|J?_58r(A&NnmP%)C=}vuBqr;(u1P17S83vo}HHn(L@uggKHWYOleg z@mXVdVv3&CgP-Mecr&0sR`!ONq($%OP3xj(rv_-)+rfHYPud{;z#_DNETkG;L>+5x z(FYvml$0@T!jw<3FG>Rb!guc;RPd$7(7++&^yn!LmRaWS;w?LB>;mMxr59W*?lf)* zmU^)mdm7NDeI1}<$8B97qC0@D#0wQn@v?F4yNBpaK-b-j;Vs@eE(VfF3C>G6OkRDB zRtt-_jeQ*!Uv^*}A6H$l90pbGCcvudLtu__ZW^Q1!wb-V#lN`)m~zE`Ff(_*5mzGi z=MNGy1?<3L6};FWqu^U)E7rkslQ2CImA+e87cUz?7W4$m(f*&1c=s67Sxq|L?W7Pd z_M#NlD6dBIS%T_v5pB3A6yptKCqlO+qmQ{B6eqMU3J;r7CH}f!hNb1$#rT~=aiK2w z4-N;#4dg9$XjZ`;xI0o@q<_R%U|}>rhn_!w8W@c^3O{lg_;n#wEEh#-mX(h87OWUu zV69Quk+_JzmET_wt06Io5#4%3xC0CmjES&4Zy`EB~w(_P@ zc`K=WGt;F^?WN$|t_ktt9&kWXRJZ#H-VO(fdxl`JM0GjDq&8Udiu>q?8$h?q+IamD zrhRdLeK}gHRXY!~D*pSbY3OwEWx}l4Gga|z7v_XOyHVA!xczfbHL#dFd$lUQ9bGa(M>wNS~VDa2|t%~p7hovU~#-jG(d-!w7 z0C<|fy&vLC6#)OnfE3^NeA5U>wg+(k*2wjCjc-Sx4~#=+2U!|o^)7z!D~xggjOYsB zp{|%70kD57fQLJQbOG=yHuvI3&fFLQr?dHww!$VDSafOw;K^Gddq|J9>v0Nzg9AH7 zz@4}fD1Pdw6%lZAHh`x$cME|Dc)hJEer{85rTR)46Y$AWRs4MYMIq4cuGPr$!a8^p zSj=0jieJ1Evo(k>S%EHnX%ZGQ3$(jr2y(o9QOgjRFk|)!s`#~?bMWUDTM52ksES{2 z0(S#|e|sx_;~_X|f#h)$W#2o_f@hmI2BLE5&h9djZ@Ks#5z0<9f^~L zQ}HIIdGSwN#Bi{1Dn8&$__vMbI)i)Q{(Nzcwu?-GGk6V{UtFTO3^|SKJ3|t?5O1sx zVd4CgtaNn7;NRKC;_%^BQ)t*y|Uwoc<&&fuTvL2J#U zlGAvulNh`Mhx_DP!Xbdkzp@vO&{;T?hRLe) zDyBRP5*N47H)Bq5`3X~H1ylpJ(qs<~V#V$BVh}M*R+TqPt=K$@hwCGE;I|W~OnWov zoT_{wN*twI9vLQDuV|<$zo*3^FuC|RoumKCqVTxTV!EET{=Y4JDX2>&&0c0f^Yk{j z6E@yfGnT3ScVjLt)Z;PbNt(#Zl~LkSeZ|pXqVwScvx@b0~rWZENPx;gJD9{xy?8e!g-uf<{vM&%^H^dVzXs*1<78tgzCo{T4i90L zo{WPCPX>*c;*+SpXyRzD;jsb+NXr$oT;rk4Z00~B=4zHm{QiwFfn38)H%nx$=|Gr3 zHffN}nU>8tmd)9fNiUg44v;aH1vJadm9n7X=T~54uHj?S_*oQSyh{ShW|m0&{)2`V zpz6Fb30G{$q8lDn`Z!Jq4O^DsEc_}u0XG(O=>S9;wtBQj1UaRd-2t`EyDoxEX$j05 zwi$zY8f45UZA7T;F02Islv_IDaYr?5H)v-Bm6VRX1Xk_uyCQ;mmv%e@P={mP2wGoq z90=O5<2(?}mgSTjg*!hDJAG0=L`+F?H(@%wjV%BJefoUGI{N8lH4 zN46bX1pTpFaOym=!|_Y7tX3V3rs=BEi?wp9vi5;h%5;N`xRbw0DQ1Q{^BDL`AXRJ( zbty0n&q%}Q!WVD>zj24mH7k%Qn`(Y%4BsjZcN*QSJMnuPjsC7Rmg+vhF%!%^ES`rb zcdk+c32JW`1AjE6ioL{iDIgvHs5Y)TCz)*nw!lUY=}jOX*9!+PFGsJ~KM(OvnO&Jj z>h0K%8$G6*ZTKr28iMKck?JUw&1T>iO{g?WWUiS2B%46~JJ8Bs0aqJc=T6*?NG5vH zG}`A@^|=tm96xK(8a(>6Xx19#9KUAKEae`*X4WEH(wPIWm9{^Cvk^-{+dpLBe-5c) z&rz3>)9{QmjDAgqVU|ez)Czhwf&9E_aQ~n5tBp6Y^;EoX2Wzlt)XuBo{X12~*`TX3 zvF15dFXPswTgBJe8I^w_Y@4s7ZF{fa0M1niSr`uBW&3ty0I6bcF>knYJ@j+Z7eqP;sA`1eDq*e>dlGY!v3!&uiy7~*C(WUhG> zGMj4tTr682D=;Rcr!vR-BG!q+xi-z18iwY%_Rr9M0ku*O0m9 zG~~^uI`Qw&p2o?=l%C{HzTpI1`&R88i{h&u?~anI;+O?a)wVudmL|Rg+s|=wGNl{c z$vgYfcJxKGtsDYdm4DAnrMBclE#2%+x)G|%PN8%&sz_p(88rIg*E$+}U!9i53 zDMzmYwAG!qGlC{H$8uPDq5Be+9-D7c^Zh_Baz~d$$OBkDN-uU7bqLp0z0&peL`Vhpozkn^6E2C6Gf+b5)$UQJD)pdr!KB3lfb4X~_KIxy zqPWs)+*X%I$m!_e(%tU-84+?!6Cl^RYin%ayei%6zKC%NIw|imAlJD=`$Y&(tfkkx z+pffZBek0g8E{=cVzg3E3FbY|z&`}3Vt=D91E^DR{1%FX8ekv}7x8QoCwmh_t|2e7 zMCO_|QARd_{MmDqk~N|9zJLw)yDPIo_beM8cl&^HwwJYK!xQe{J|Uzm8=iDufP1NI zIOtaOj1XbNQ|=X~gotIs)9#@w!h#&jh8Nt{y+cS%5jMQ&ezdU$5;nZ#F2?#A5=7YW zvfH~`1X(s5a*x9SDsW2J@T$82^a~JS!)tE&r4b@*c-_4iHmPiQ!@ZgNQNvI#VBnt!sbUW^oz}JRS8C&Gs$PT(>C%VXKZgdF20*5-R;7=+XI>W| z!}Z5@eG!o7TrT4QvKJgEearo2ON5kh!oB03ToNHIIpN-OH?)Y5 z*Kl8@^j~fXwo)kv+++*0MCO`RXihePd_52ExoV9Tl^zbb`IFoD`mnPsH-C3eiicw! zv)uf{ol+e_j^*Z`?lqgje0HT$X8V!|5pHVJ-47AVO~*WqzP1z#xS3%}Fylkk2{$v% z@7Oa#NVr+Y%&n|}gqv}5YRwX7xtV3^;Ho*5o7v|6nl(qbnPV=h8`%gqbIox@>D)}3 z7cgu=Il|3iGYxA&DmNRNFZV`>aPvsBDC){dAdo68G27AEK`!BDsab?E4-nyInYjlo zvn!Qw^JI*c888=v#3if!HYgZ1a4^Qe&w^C3$xIKpnTjv1jfdR)kNeg+^lQ5Vc7_5gq!uv%M&9+xY@vzEejBE zlP$ytNg#7gKAMwFHUG*5N?i;p=+bt^?xO9DY7lmo}i_qiVCvpW`FZZ!w?GA%>m|#ltogwIna#J zHCDpSLFTuC5oEbJ*tD#f9}@XH z93jHZzGh&L2oY|MG@I%~h;VbX={+(+gqvf{M_^)5vT(D?e1w4!1bk!*vqa{aTi|du zf&8wEm3nC*{41RwaC3oqC>lJ=&1#d?E*$d=yKXKs>#(w83-c65ml z;pR%y9tSo%5SE*(%;V8+9ju$Dm^WsHWe40m)$}~N1`=+rGhgJ?K*G)S=6tLv)+uGV zxxp0H?5e`ejb;OwA8jbh;VaJk^dH!<%jn` zE!`DR^cs_KY}jX(qWjEcu&_hl$Wrug<}(}&ER<=t_8ZI@d&7Ko`Ml9I9T6cy(VNWN z-63Krdb7#O4hsq>db{}+b0%P#J$Bw*NTs6usNL*e$Hk zUWD9Zj;kSwQ1o8&LOik&ir!})#Pm&FKJPa_gR}wJgrWz{yfzUc6n)A(G$cZVqEDO6 zH8w)ge;EF>I4DOb`mEVlbLbU{K4;#?JWko#$79fpydH+j=M|W995qn%UkvPeN((7^of(g23ldOtzd0GREYE^6Cpy;hs>XwBSa|r zh?$IASV1nK=ws$fFG7T(PngV00tB>V3$sM#ny=w-Hi7)rSaK&~{_4^<18%-$K3^Yp zpXKHUW^=@h9LvoQO_u>74UFaHM`j+F5p=sOpC6k-%z^+BZhm6+M{Aem=BK9V&aj|> zn_rvjuvDdS^BdDSzXlR+erw(yRs#t)zca(I$pjfKH-9ikpp}6OvV8t%7WRn{;pSm; zT6Tm8H-9p#&rRp%zs=KF(t>h?n~v8dGeU%$t~cPC2oY`?@7x+2;im8Ps_7EpX3YDc zMU+dpnca!W@lR^wAvfPOH(+_< z7j!~yzHeqb0TOWYb8`chJ+TQciM}-b!d%0(aPt>4*FFsxLM*=ZJYvUm|>w6EjwI9O>x!J&5eO7=3+-&Sk z7#<MrfPsy0v#a+}&j0~8*}^Q5 zxuyx4lT9Fh|7yJG>I#%wIyB(sFz=+}!|t=(9OLa@6OMVXr;qi{9~wfzo<7byxn_xy zb+gL*1M7A$5W>yzUPJ5%7O~u%;C098EsdK~y!X!tp@5rHy*-gtaAR?rH##~Ct0}_G z>0akEql|XloavQgDGgkZb#s=t105G2!p+%UHcoN@BHWzg{n9U;nU0H>M<;_G-2DJ+}S9@hx*;DrP78ot_<0=di z*Ui77K^!%3^8f??K1dZyP!G77iZ`l_hul2Y%PkE492^`wM|t0F4UmAF$9or+M~HB9 zlK0D=2oY}1_p&BLh;VbEw*YJFSC*~9&Bfl5+z1hFF7^7K5+L9vTbLy>*E|A;vkBx6 zTZ=~;a0b++rw80T!@CWerR^-s&GWo5M}}iwV%N>h-Y;`QDB$M#-tZA&K6~E0z}t9Q zga|jcco!WJB9@z5z3uQIjhj2XH?eA2DB$KLUS^{jNY>3uy`7_LAmQd^UW1b&$a3=v z?}TU*2yS|N%g`yQ+`P(rwR?mJH?Q{Ew@&BgPERk1Y=oOPc=wzdA;QfYz0Ct7M7VjA z=hs{|2{&)?8lNB82sih82Qwl>xOuC0{EjqkK8evXThKJ&=5J$^;;4a}qZ#;otDcHo z&-8$ssrbFM@sOKmc`stz_k%Oxx_ORwuzr99+`P!^IW9tko7=qWFcOk0*wc4=`?^Mm zaC4703XBeHgqzoS_jQgC;pRT?F>Eqo18%Z~St4`I6f`HBK>nu~sA;lp-Wzc9KCgSn zu(K>TAN5*ghhrYBn~!<(yM<7|&Bwhmv@;lVSvQ~XrcQ_u;pUUxR!oS1_womsgI)`e zCykrWdACJp*?^nRdw0O6kgmeb7rZ+$f*~Z_e9=2FJAy1XU-mxD4=c3Xe8qEX?dgZS z`*4^K92aiB>OGB#pSq{N<~>}q-U&DV(5rX>bSxY?*L+Q^9ZzGmS62&rORhC*(p;^S-MAvYiN z#$(;&LmweGAC`+NK>}_*?OlL{KR|?=|L~g6j1XBj|LMKCGeU%$Z+VMrY=oQd;M>!Y zjd1fl&utqZ;3iv`B{J9i0*A8+F3@>kP7_a`R8`@BJb~xT*Y>5i#t#sr`i~h6M%Z&6wYGZU_b3%6pRI&G%9;}9e}Ro~^9Vm@V}uAd>-is{k%5hHv(R4>mIH3Gg;^r; zE?Rh$O(1?bP8cSZ-xP%n*$p>KTln^psHJ~Wzp&3NMLYP{V1KYf-^*_89sLa$L<{BF z%k@tF?^lNT?AG4dZ&?x{LeWaUWy=t;6z$@7#DUrt6i~FM{{gl?3k4MIayy z(f$cFgcOR7@#}VpY=oj?{qK53h{C_pDt{gJ%Aj_k=y?CunhP?a=mh_9>?kS6&TBAe zW&y@nD7peG3r7tUZN^_z(y)8Ev`Oh~Bp?u5D#eO9=)}Y&E zYhU6Yz9>S3n@jznQ$oaY^F+V2UszDU%~k&FdLa~WbG84(B{h(6bB)iBriKg_Zl2_? znH52nn+t)`a6ag3q3B+J z08SVIA{4#OKjEqnu@t@De;zxQWtubX&z%^?oBcl6RxGp;uiKj@e`mkNUp*>B-vnwO z3fk{Kb7F|Dx7Y5s`d&r|HL*m!&3|}XSgk#S-tM=-Esnr7+2`-@PsVBzAVSmw{yyx+ zsYJcgKiQ3Jgs6}Brymy~Lexk7_hv_k5cM(t{u&#wNtHg~e;;+jBq8dP{`|gCE+Ohc zKaRUmDT^p?WtjbEVyJlSKIK~coc1h4v{%i*=glA$JIM5asHymywegUsSNpT!+(s4= z5OtSdln9W3sDJaHhr41E?DIGJWk*Gb5cM8E69=xqMu>W!&zCX=h!FJw|Lsl@B1C=2 zU(+N&Ku)$WOJuG&6&__1h}ZiXzw86IbphNg{Ujjjr~c)ag?(m;`i=i0vVDq< z(7KZ)>bL&fJt351iTa)Y?g?Q&yU%~`-;0`3iTZ<|6J0G^qW`QDJsZ@1iQ#^E8XI(@D$S3z zxGu60susjvY#$*))w;1SFgPhxJqM#;CZ2;~AXOLQc)-yERU0z!8$;szPfQP}nu>3# zjfYhI!ryv5KDRI(*#fG5<)1MjKmw}% zyPO^y`)*!@$Z|R=cG=trk>zwu>@en}DN(V$T&vh;Vd5taZBx z5sn@o8;4_mkV`l^Db^d!4iMq!lvw+f0RoP)g?KObFx^`d?b z3QEVDO$hPEEyE03nW0%V6V674vIl~M;0HfV^_5th%bvP+cJO$htp|CsnKReCftKLQ zwUAjN@&0$<*#w62?>8D5ZKHJg%N1-?`TJp`lYL4jdiH}jjvF%X~J^3lpVn0BVQ8G-cDlvUPu+|N&OtO2F*{wn@tMwqgsUt zw*s<1#j-6ef2Sk%5IPuGpuC~1zaChlXKwKEe(nuDyx@Hr4xWZi9BzP=Tyq!v%@Ubw zZbXJ`0=b6G$bTFA!-J>L^Od^b2G}=QtuKdv7}>I1%;!5{-=fnZ;Hv~T8Cy^$TeuI0 zAm&C(K49Q~2B~5tOlQt?yj!ObZ*o$YqPiU$font1XYHzT0aK>p#MWe;?zsm@7OUX> zQB`>+(_R~nw2gWfYD!Jp&9s3TNIO#x-j$yAAk#)yt*Om7ywoM2S1}*Q3(1s*9SRBwdm!?^$%9EJb5F1C6d-R1< zf>E`7uPS#i@!4aMcu;@4BE4rT?`GmDn4nFb(SPKn<+LN;Rks5bnmn(c0>kW^2x`XE znqaPQ8f1ygHQ%7fYy$Ya-g?3W@?Xc&@F+%5H+f6T%u%@1vNPvxJ9GL1keRc2q*62o z<=cIVpIzB_ZDA-7p8f{}F-jgGIPGv)ksQB`w!D(=6tJ{<2DJ~9nMC+-N(+HU$uk%*3O)7q+xbmbfJaJ zi$C<{4&eZah3ZnpM4`TRe!{satxvivXR1)&I0JKQr(VcZp?=JHdU5SkzSP`OzmD@6 z-3fZzQvW%o3iY#`C#k2UenLd3pX*#&Q?KfxSddUZ-`UB9*Je{)3Yj3(uj}NqdxC_@ zZcGsB7dunYdP{xVKQi!@6KEmSZ{)O`o@SvcS1?hiU*WHQOXy*srUg(T`r{Q!(F6=Vk%7MoQpNgFr*$p7sy42=Yu~}-?B@K6OABoY4mVg! zmdIRl3NmFAnDr4fSqnOj9OS4A@L!LceNS7w51Hlak#n|UY1SRt4bIlY3Hw?i)=7G7 z0IePwJl*6*_M=1~D|AK9ZsQJ?%`TpzY0lh-_M#2lUqZ?te?+&(lQars@c3YP!ns%ppTN5j&fA9`Es=S@CLk@Yk?fC{?-%d zLLT3e?{5OSXgYKF^_b(hn{g&wTutEIRRm5O0OKVa30wvm>*QUx!eZ&g1afeU)yWOC zIB^ewhdAcR*{xA%^#KCMw<7QzYgzUrfd}^zXphcmw)}MhBe)VIzo*5D&j_42g229M z_}$g({Ki>}$|9&M?DwHQgVRT>bn-5R;o3Dc+=i2P^X82KWXZR&64SUzWcC8U5tAQB z{;5tJMvg8R2-yZH+H*@@@YIQIr$XP|95O^-^i=iIOrW}Y0|Te}Vg{yqFN2KgyBOqF zKh2<|`Yi^%tG{NjewnI+0KeGJm(W?(L_)KytArWL_ynLU|7y ztM6q{vivZE>Y`zgesvoLYWaH{&*eXe^l^&N%L_%e6xmDUXpsw;A@e_%*`IvK$RYo! zM3+B5ijuFm(aR5u^v6-JC$d6hSCK;@X29TV2HZD9$NY3Op$l;g1$sC6Zpq6p(On%uFYGbZq$*bl;J&JdflO>Iz zw&M>DlIN_3+FnZd6YHkmflomu|A`9*zoQg(1CFbHr>|Ji`cYf-5C_>a(q)N&Qj)yf_+<5WCxC2L4P)e4+@FcIhxa^;rX9ZDmF}7O)G~uhMYJ zTr&@e*;JE_cA@%F(t?@SLmkcEBqytzLmeZHnbQ*LSWzEBF273DTR5J_$;idmKwWY# z(ws(D;c6ez_5N)4eT=F;7i>oL)plfX;_z1pUG^f~Un>K8_7bQk%it$4nf-Or zuCGX<^)hs;NW+a{+jk<=)5SJE80wjV-p_J3OBET%Lp@)(x3xXgt%8=cz!|2)A=K&Y zyILtm%S|&kw-j)5TJWyN^-Xxtu`%Pmd<|kP<6sfr9axAOOe>p~aC6Q=thJ5hx_sc+ zw2?DN;{umoIW=ueoXC`oxT=ydML9Fr+GM4N1Fn7(UfN^ohk}iOe;}B1<-bWXID` zUEisQJC8z0)bw`GKL>Ch+iRSA9TiRLUkO1kXo~8dV&FdysS0n0q+L1;FKQrq!D6yR zqL-j&6G-wYNHaiK!fyqe(RZNz$$wTuJ?>W+I8%4wPiTyq@$T^J5l*P_t+S#@{jM;f zZ#0Dyvl;jcAXVW=$ktOk*Mi|&4Mg8qOqNKz^cPvO2_&m}qq@ngE_n%7GPB@3Bsu*- zM@CD`Om}yGz_Y>udpkyggX%v(41gnxo%UodajKXxD&9@nt3)~ zefOUY5u0yg#TbA}#cJyxiE7zMR*yywVc?I1RE3=&X_pS8ku?w-$zrlZ=9(&G$tI9& z>Z7`4a}al4hhQ|rEOq@Xz$aQSl$*O5Fl_Pc;yIVli1Fas2~5n?UkS&g0dWuZQ};K&4tWmMw1S7^vlRDOm-7S{)_J*S%Ph zS~Veo64wt${fW|rkS%^)q?A`j&&GUD9>ns~wC_K$y{(L4>uXwFwVVEC86LG)4#lR^ zbeV-(jKE2w=^L6S^A=sppuew~FEJP%>Et6A#8~&sxRx%*;u0HlI@LqX(A0Y3*9!}v zHo6VPJN2$riqZA08_Isx`bZ+Y^Y;bXL6iF5L9qLpA_4u>ihHUE8A%lM|S$ z)e1=G69`5#vYWgA=mt1gk=3f|*^5+mOSTwvC>x1Yj2Y@b48is=BOL#Vf&T-fYWX@O z?b6{^sStf;F>efOqnvvb!`qY726nfSA)X~OF+0i}GJ+Q4m z4uU>0BPu_Qfqy2XYPk@ScIj}dRER#Ym@JXGW;66`0?8`+)ay#9PR?Gu)&tSp?C#d5 z9z115KJ~P*jIxu^erBlu83cV|MpS+T1HTATwN#L_ONU#fLiCBnWQoi*rO1*^AUXSN zlv(=pO+&LeJ9l>vXg&^xscOT4ne~) z6LOk=Uvon+MEsbv^UXn$r~C%-5?vu=G9Qolau%Ho1t!&NC|;*EELukF%(LHxTM8eC{Io4b?-ZQ0+ev>Z=z)ZK2U~*%O^_aWf{%`~+E42hC^2 z^3`Aa>E9Ly*1~Fv^C8lcxpkFl*F!pDEKY9iK4^&yS*AT?b}RPk&C~HR0DBaVRp4hK zMK7T{l3!t6>(Eftk?50>A9%=JP1TfqHF+!=wytVCc3f3;16QD`f#?CJs@d^;uZ?;M zUFWFG7>xDX=#P(YP-^fdyipC_8)p$FBVWpC>*>~AHLu|~x%ibAgWA-loM}1&%rpZb6Z}p{o!h`C zCzfd@5Sa{-J8$uFd}KIow!)uGk#VzjP~|Jm z)Fyb5@c-uWi^%>BMCeW7V~E}OyvLYv8$amaHR9H{4D&kc<`6GypwuClzz62j{+o!X z7`Fn=V$<=AG>o0YvysC(S|Inu{{3#<&8X*rU?|)ojDY{Bop{E5>RQAev#|`fS!2W= zx3Pr#3drg|VPm=OG*HEV(#8th>RpH(w6Xf`2a^zc%EpS_C%`8EX&WnX@0pL-KWwbr zeP|0}&)Qgp`xp*s{&P0g(!FIQVlUXfYU|!M3$d4MUv+d34@c}3+lDUgl5-I|WMkcv zeU3o)^y7%Tx3@&XtKXyHPUGJ0{4B)&Nh&*y`@84vLF~N!7m#TQLzW9bA;0Ij5LhH>BA;2gBmyQBU6IoTPL46 z{Vcl5B}nEotvdmz(-8E`@UmDd`$!UVP>3z63E%|P{0E`k4uan3XX}Co$i$ zp%#edYMQu>FV+QSCgMr`gv2k=1syseo~I8={0eP$K#}(LKS`-?u>GK2hZ*?4LaNv; zOlM{3ct#q=7Ca8aBkG#`ImpI~gk0a#$!h_|WHl)`Z6rF~*Xxi>KPU7-G^VeTs3};F ziS1|T`z4xDaNmbo`I-79i6-jtcutS&_XfbZ_Buj1^bQ06Lr7IP9x^z_r@#$TA#DAu zo^K)cIi@~)#b;N;fBIcScWRQ^iDB{?Os0Dzsm)F1hRN45neMVQNk);6A|5w%JX2)c zd=4Z*AZ}U+Oc^&i129!*CA604y^M^p?jzSC92c&LEpaBwsIoC*M!-&n?RK0jnF+md zG6R1Dq>9a<&Vtf$ylXuLW7R$kK~~7PISVpD)%gbEMA;GA+8v>towUk4i4>{$XY>Qj z$O{JkuaGMCE_G&2$1~C}R<;?2nIh4C9Q_gmig~_Xz6jT8)7&@uqQTRHdfkVx=Vr{X zG2?bU0kN4jmf<$RW|1+=#uDx|Wr)qTv0V4OIf%`%u>$w;%Md%k#_GFARv|Xm#){on z+1>MOti;`ZI${fLcbB_4j4h&b_-2oJ2BGx9x0fjO8zb6t>LBnlAXUSE5kf1{;UiNa zw*B8QOK=syC_u$1K*mir%1BUku75fIM+bw-?Jq%Q9UE*Vlsnh-7=n!#AMpOgo@j12- zYhz0KV~*76=}!)kjFNTpf%Mvj&C1&3mh3~v*Xex-V{4I;k~K?#^trZOi1aS`bq0{W z2XKvLZPu5L!ZuN--(AZ>MCsBe3H84{Do8n{KjK7PXFxITIoW)8)nqpMr_R8t3nD0^ z^zz1l2DK@Spxn|1==eIvEWtnp8B0osVj|QT+@NCw^)9&y`*EEiUz{02`%8WX@#+li z7Wpuw^fY$Lu(7DZmSl8E`!;}%{URAcy5#6nfQ&pVD#$6heI<}l`>zXaOi61tZ*2Qx zLqwNMoDF2$4=09*Q!-^dkg8>vH9=)1e?#Bb89xO3qD3-F&fN`U!WI)Exh30%06A{_ zc_C6F50usET8NQ0U!o6$bkAbGmB`q8O&ItsAyv#!7na})8Z~%E8U{wOusUbLV+V(} zCqb`Fk#W-=2?+wu6BP-Si;@7f0S#6>jN zfX+^=VBX}JJAqbjB>DhOkae1K&L?|r0=jG)y4&21Bx%gcxwsb0LqvO(4E!FDD)u7N zS#>S^!`iqi!(#~cd%W>gUt>kl{xK-QAHiZ8H)7iC6IFce{r#01D-|#$Nbbqxh09fZ zok6o}CzsD;GCw*O-`KgC-G%Tu2rMF2g%u22TIA zQ9}%Ze4{wNqf4taBdLyqsLH$0=mL)F<+tH1Kv4S=*{Jd{Oj_R*NxOy(3tKK-TE2`) zJxG8(XI>O`8gtpKN9oy1=BW7fb1*%*c~%d+%Ln71W`_7;GYSpVtL?|X2x{9 zyfyJtavYWDbINq3SeEuKWJXmsG)n6~x(RVxAZ_qrhp@oJF+qZ=I3>b{hQ=hiFFDHP zX`wqtz{TOsw&NEIq;61E`8~|Z&u}M3uET~Y4G5}Z399@}8YHj>C&oO`_pc0oqrpW%fY?8&KB)4BY}yX?&{S{uUm5hI0Y4FzIAI=Cp}+Od_F?%{8eF&n1`E&~e_^ne z23JupXLY#+ zHGl*4c<+_HTK_8u4toRGU}#Gi_)Q>Hp@9tU(Wbx+QXwow_9{PaSX!pYxM_);2?BA$ zr7lxs-1H+%ATGBy;&QmCv-bp4>BQwmKz{Rl+!4p=zc}YaoqVt{juq##F$GV9?m5+( z$vl{U+X~TTLDUqGe>uy8Xhy+KRFShn+g?Z%OvX}`voeV07R=a;=&B%EP*4wjl(Ra> zTi-aSLFU0)%&)eLXpe7s(tdYH6>C799;V|NX&9Tl7>$ja>5!Qsy#W)SmNW<7y88FNg88?feCkQxCLcFsYMdTfCu7)mE z6`&2i%2f9>s zL~qj82CLQRjiD<7^mSGX&8%tN2;QXoBqg@pz6F0ZBr){k+-(qa$Lj@Mm+ia zI;HYXrYp&uBcYxmYI7{Qd8dlnt0&ZTqJA_F>Uyf?4&)VAr;o$^FGg_xi-G?cB<_Dv zXC>))MjA%<=tQPS-2Z}}AmE%;SE)g#A$Q(JarH-l*45L+6LIwnQN`6wqKd0$iYl(2 zMb%70S>o#YUHJMLBicKkfqyZiimj#|xSE1Tt_nt1=|rZ;xVa3O5(FH6qT%#GC?fA% zarJ7XSXa*zPsG*DqKd2Miz=>OAgZ{!g{q08EOGUBY=|rvu6AYM_kvWh#?%8>Q}D=D z!RRWTz~u;J+zddb1Xbr9Xfw8IDq^ZICLqhI-&?3Ld#C7+s|k znIhxna%4&na5~~r=hmSpB5$|2$`?giSFaUM#MM2bimQ7?6<4nlRb0KEs!5Vc~%c;u>Jbd^qIij13q$dn-9ybG-b>d|>Oh^s>px31nOo`|bA zi7Kw%EULJAi>Tu2eyZk9x@)8{M2g5l~G z2L5(P6+4M~;A#pUxhfc4r4yMVN`k<)d>O)jb7RnM=AHpR93x=!R82Ei4RqQD0fvYKaqFl}==e#D0oQ2?EZ0 z(5~!=BJv&;SBD{PU42YE5mz4f`D@_4z>SkgCg>t5m)~W(7O5$@kCsGR#b8IIZ?&c z=S3A)U!ZDcqAYQB$v`}$&4~84GVpgms@PiUfvYKaqFl}_OP6lC07iA)KqPG{_M z`^r#6-pk_ZHAu0pz9OE8tA|7tS6>xXTzyScarJeoCYyUEdv!=94hD7u?asjO3yB-` z)B{&j@W@rc=pLQO6d5X^FFi@lj-W4;_7h3t*dW|C*tbcqKd2Uh$^nWE2_Bq z9#wNU@`|gYE>(&JqgOv+;C}^)^B?uV)f7B(RWQ0rCo)CG%@5EM1f2759QnQ}ipcvw zT>TlKb@fB>L|pwyRB`oVQN`6yL={&*rD|rOEOGVQc1p2exOyQ2{}M2? zDi~d*6PY68<|<@L5O6B7Pz|1dBJ#cvS9c@Dy85MfBCdWVs<`^KsN(83qKd2EQZ+eT z^hkg{9dOfz5$*M0;P-=6v8L1mS5xrFRl(>goyZi4Qx-BM2srwIHKdBYL_Kgd1&>@6jIPp& zOp!QcK~E6KpIL&>37&@{@)Ek<#-nli2ikn9k3(pd76-b)LLB%U#~Yf%fq4x4C6M?O z7j@=L$1~C}I>3@MMaInvWJ(ao{}9@FIP>bfT%e`ifIaZ=G^J>ciauxH ze+!9M(NYf_NWmiq1fv5iIa4Hd8R!WD`Lj!L488(Iy`)Yh1 zgb{omgn@q|q>7EB9ypMKM-B)^2Uv2Z$hcXBObG({d=K_}*Pw{J`qqJy0aynLtpg9R z0`|bwXW-ckMzr@O1OIzS6?>I>;6Mr){yqKSHY5>(m1WQt-$D!B{Cv&J-Cpzd%nA z$e)KB5@#NTBJ#?u1AhXw4jg42=mQIJpbSi>IUHERz+VBWV#iSr97w?<2Lz)7EICso zo=ZTc1c7{hROBBMdf-3`9yuTw z9bn0sBID*a=m`S(3(D~j>Ub29*U~zm0ayoGSqJ(75C^s_!($MP;4ugW{whcnn@Bxy zAO(*c5R4A6n8y=WRj}d2Ou&8vs}b+F1u410W6@GXtNWW<-16Gw^?g z#HZM(2M(m*kpqI!0hWv>9w6i956A@7{6!dley>vJb+it+0IUO@tOEnc5DtNg;Z`vt z+FQoJUjwOPlc@&|q~MVQg0WJToGCJH));o`lb!Csk3#&3I%=P<8Hxwgyi_>HM)RrS8T`o2@L9 zbv`r+KaFHWdk-@3ABR-2ebgma8lI7cv7SjV%oG_n&p=NQa9UL;^;{K-$ggTC0PFMs zN}ZEC;pu8dwAX=w-xX5D8d8^BX?R8&#yVe+Iw|9(7cwQNI=i5)#I>5vpU_eO*2&ja zNu7V&pcE}o=XDJHn;=zeD|N}0hG(QMS%J&q%}Q8Y|5diBlFbB?vhASf{_;jXT~2J=_;&;#PNGBDfcvEa{JjRhrdD%-uKy z2?G`(6K>uod0Vca7yle)Ze``<$B|oc?1L$s_>_VFHKd9?#dH>*j#vCE#0v(68TeNM zRrU)LUdBD%f^iQPLA9l+CVB&s3nmwD!Ql=Shq!9RnDZbiJ7X;R*c;}yMpt;lgFivI zefl9b!p2O}Z-rPHt=$nrpdQ;BDu3AX8JOXX4DQ&wZXB^u^1NH)+}5q9c2ewx`j3A#wgerUX@|0)L&li@jWMiMtrfUBOkB5xD+m!R(q~%8A`wAiBV8(IjSt5#jUIZ{Jz6|YVc-y?peSd{{bxyZQ=B( zCrT^m>Bg9(+-)T-{H@6J(*Pr_(lrdcyxM)<_Sp@ifK zFTvr}YvLhg+$=`{399*B;LPW%VO+OLcbvE$N~fpJSE}wZ=gZ}|i@2>Vlb)VM_X5ryAHp$iXW)8+?1wE%88)dq*hU8e}T&UC-dZWGL82D2mRcs{FnWq*$ zvo@|euP1cdLe#iOH@w!m=my=^`AR1C-;Bf)^>a9e(*G#&9wr`vO6s<8&cSNMZjBP( zV&aciBk?2s7HrrVL83pOK34ur3mL8Rv^gPdxVjv{w#bm(soSDsQpc>T9&kE}9qZIB z4>LsrYDZgT9fSP*A3QCIa|ZgZ6$cgb8)~M=xS0(kK_G6}^ZCiPxZ>%L`szO7)Y}5@ zm%^ZVb|XjCeavCwn{&&m`?zxz@MJ?YIC}>(Hs=;r_X&rNG;cxuNrw*#9?gxe?m@?V z274K>x>#6P3kIeh1HU1pifQVsFdfGiPE#pPWM{{Y5?Zr3}X;W#9-Gw_#d zfzR<$UAEE8GSB%P1%*wbxn)=7-)X`(Q`Ei3DQy-^YFn4;a)^mfv-j?E-ou&l z{)&1q-ak_h#@p=(Js9tgft#C9iH!GQT$N-a72{pNz~{4Us@o$>Ctqc}B}H|6D*`#* zspkJ?N;KY*5{`Evstd>a`BQKkhH>vGsq1&>s*;c5TZ?O)udqq75urr}y{Vi*BpB~~ zL&7qw11aNu2F-%;eih6QePorvcwa-4V7y=R!toYwRF}t@7>svSqE>$KBpUA{FppA; z=lHT?>x?`aZ~OEz%@2qqh$Ps^xFjZ625t=tz+uiblyOr6JYfNH5-AgKu zqt%aCUmL8~$+MNREthF8dsEp;8XUkOt?=%~XVugpiCr#c;*%Jd2EKl6ey!B<{Y{21a*Qt)85^bzC27s66lkL@Yd_b2S9g>NjV zAM!GKJx$ZMF_?vKlf&@I?e}vQn%3`{B3wSx6&y-)M&h^C;JmzIvT(9IWy=kta0<@{ z$vT(?g;UwYBu`L<(@5qd4^V~E<^04=r*MWE3Y2?J;Y^Pzk5YxR=wgy5slwSjkR*A* zUpS`@4erG6-3sUOH=s$r7_D$#U8)DD&M$`Ae+=jU?N=cF(V*dWAaGq$h9s@}uZR*q z`y3aTtOtp$m?+Pxs{R+!qAAEz_|>k#mOC}sZ(-trNl5(uqztUx$XAp24<;5aMB-t0 zXRXBcA2Bg=3=;qICS+Kt>YRao(zC}S0juBk^lWwu>fDwl55{4Vsk`HnGqqYVv33K- z&@M3xc18Lo%sia9WvprMQ>XzeBa=q@{qh3;$bOL6ondaUu4o$ z-;rNq5+dmUjoBy-KVU^Pz}^ex}z!W^tb45 zu5GUF*0dXpNxZ_V!U9!A?-0b)3o4PBTyb2K@KBi0flaJ9IZAjoH6f)hE3S=94*j)> zok0~(Ms{z7cG3$qt4+m6k;%W(Osta`Xrwf$!DnHr*WdJqF*@Mf<{Hq^*@FL>A-p{s!q5^i)-z9a&7!eXw+;mO(F6 z$+{Tp0=X2_qADMa5@+dk+wcsjB-;5l=shORUOWp^R$tIKJ?Eg`qr@e8=<@WOl?{3z zXK&WIOt;2b&$%7dSs5j+(s!MV6GBRzm1CKhlZ%{dbx}^OoF_(!>-1hErsX`JiOJ^Z z=+pJW<5h6)%{Ha-1}5_P_`);wrweK&9%Ld)IhZ8BE7L!tV&xtG^)w!ppTUc_RMT^n+{bz%A&bCJB7Pgk#Ba1%H&sd03YoSHTx>5ON zWINKyIWgTfS{PL2@1YsC;QY*&OGsWBxqGqYu$|$>L*-3O z+`khG(h=@*6qc6wG!xIe8uOyQ`^Fv|GO-;+Ie%iJ-w>7VcK!t$UJHf$X+(!$XKgqz zuq|xlt~e^)HkvA`vVUaO*nPrHH;anI`{zTm2DduTU`I}^S$a@xjPZg zrkbTx%2$MmS%b%%ZdfBy&7w+!c6=1t7PfPj4f`LqsxrX~R@U6$b!RaygHnr3aj*l; zuEqQ+?BYImX}Vd8gHuDZ246UJaTrZ4t+s=kLfgV#?vEJ!zqD1AH$`Us+zyS>%~BkE zg=R0G1P2GXbB|6pOL0(Pr53XW|8X{SOgF3TVAIgHaD>aB3H=WTM?_|$-Cr(9H%oDF z1AK@&nSz#*Qpc#L7Te#MJ1iPO61=Zew2=+w}he)w#Fx-8x zNxDT;P+;3FvYqChhXZA5Y3a79XP3!Qt`+XPIAW#dV#9IO7g?O{9vqu)QB$ticD26l zaQDsozwGS1R|$4<+&tKc_eUw?<~h`rumIJ#;ccZ%k#X|{6A5JTUJx_O-|gI#zlY>J zu@)Vcv;0WPH@TMP496J;?>VYKmIUuYWg1HS;RFDlMS<>2#tbCG-Cpu7?gSM* za~&=Kh~k?fC2Jh5ivBV0oDk6^w>5^%v)3#Q5vOF{>#%w5S?uICmnoSVcT~~yt-6Is zM#Atsl&SMda2K0y;%~*9>j6q=w?_mGDZ;{Al&?oN4{qAw2F;M)QFc)S?X-?C z)#-BhT~w<7h9zOHEiKu16rejfyhG2&lHB!VRMKg90l@3^+aSTsC|WzZ(}8S2H|Sfh z!lO_-1X9E1%~HDJI^@#q)S_3lx0HfIr*62f z{oe-f&|nM4@XxAq@s|>iLfgE<^}`9kj=p_d;NgfkYn9F|$Iu53lL+cqU4RpJQH8$t zTHXiiTuIAL9L(1G@KpTa1053leO-;zUC%>8J3Z?xD^glMZo zwOm9Fl>#5HJ0dqaUFMw{u#G7Mbm%7{Cd!s%Nyn}a0w{*@@uE`K8qMd@>D z(%HK~`Y%!X2{q~LHoJV2LTW@^#PzXQt%~MFMgh4;v}2k$upmkk2h@O(OcLHN*1xBC zZIe4MX7bkAD79L@x69HsY=RnaAyeCMSWedO9#PX||N5wL0}jw;iw~Q1`o1Z(Z8pPD z4frQ*l!46#{WTW2um)RB8Er=D)>wIp&d`1Krld2;*GvcF7-pKu!$8k^P%mPO0;L3qzU4E87E_c_-MvSmmofaadIVyS2NBQ@jt7&2w{SW zi473=l?l}gFfs5`6R5ogj8=-Cn4)L(;Ac4<-VErEmAxS*Y0*1+)4J%Po&mojlO3%0 z^`s5b4=h6aLm}1ZdepJz7Ja}`PDvTlB24)dcY`GXe|oxi4=VV7lzn%Y6vg&-bx(EA zPFQw^U0`8n*@FD`{)*+OYx?^PAwYQx{HtQ1-j}s3~y@l$S_DECD=!C z%DHx@rDmrt8}Sk>zHGxfJ}%$57zX97M#HN7Ltr+(M1C?}8JUH9y{X?rd6;skKbe`k z-;k>j`|BHt={$B|N_lVGXXSm1Y$?lIZsNKVqSAM>tK+v?kOe)#a`4G1NEIH=bXJpz zcV6n_DJMu_jq=SdmnEnU8)?HuA%#z4Er4!HMjvxMNX0Fy080;!<9>q5t&OGSq`CMe zM5?Bh_X`dOsao=RH8d;lZrlS&6SVROdLnA+Zzbw@u3@2EJP*(b*6a@6z7(?b0v68o;QmyA2R3Ga~wA50q9MCFt=NS|5!ms!;dh(P>Ds|T-IX=*8*g{zB{~T2HET&Ic zrc!r*F~|p6t)T<=yo`0mShTu%psiB(9zi3$Eb}HUR;l|gM$dQ_M@LyI^{>5HdOTnR zYERvNRw@9F5P0B2oT)sE|6o8;4?fo*0QmG#>cHl}^;UKFqtJ&&qO-j$g;>2)4}XPG z_JAQB0UYdz>EQwUHUoI1ElB49zhQGvJ$l~S062%uf2OX3jj~v0ohS{tX0=D z0UYkvHUREj3gD@FO9Fu3?nxcl(Aft@Pncd?R;6H^@|2_yu4Uk;C2KOAB@L$6X#v@Pahp)?JVXzxK8AJ3(6V-Nut|Zn^ z!_bj9S=bHUz%)<&%tZ_b3%kJwoC*Ii(S$vqD=sWjIhI*u^6UZ2!TeOQ#bwB@n{N+{ zUx#>Ii(mM|+W-oO->d<@w+2>fod7TFy2bW@@ff0118*&wU=OIp);6>_ZSA^~?E(L# z2hA-WmF&9H?VJJIaJWytNv`jso5>G3N{8rE^1U$BXSon3AGr|fD_m!jzk{x+FS!!c zslnCqMf64Ln~!jAw4BlGKsQ*WRNr>AxHlUXRjn@QE<9OfZ0<%;I0P{HH}*m`D;tMW zKUuX~#FR%s;#3psHq0q5KYptDYGL0EG}(oNSgMsZ7ew@vRr{NyR%{-r6Rp~~CSb!X zXB?eV?Vkw}hgnT)`-#RY8mjhR)8b_?IdzJaWBrpwwNreHiPnVGf46X@pbl+l_96?K zVO<7y{KlJVhBCF!^_YvZEx!Lo(ga>E3=-#CS9S6ejh9@|Rr`&!I6}IeVf_ndwv6m| z1c@uG3-kQM^z6^lVlLK^)Eev4=H9w%*1q=NFzwit@NAv6A8eCL0dL^sa;beB!*4C> zgWMNbmt!^>3)90VT6_B=VT09dr?nU zWlXmqOf^m##5vRAoMUm$u55bAJaT{xvn-$yJz2_v8q?gJW17$JLI;eG9OTf165pky zp#iAc$4*mf&5xMlh4o6FzzLzSX&sz}`+-5Yv0#<-MWnFVV_gHtE{Svj)V%7R0MaGJ z=(EBWCu5#^8M8`?2({!5I1fsc40*y+(ba{;wE361bF zt}Z?W1T8F^ffgCaF0L0vQEflT_Yqy(1KUPnySFCzNLF$;JS=R$PgN)PY=n6e-geYC zqP;S@T{_^078tRdR~Wc&LaH#|ma?QnGVrVnj2(G7dM_d}rr$@VI01Y7SiEFX4XE$@V;S>+{{TFNfZ-V0VK-5xgLPVPE9V8;l4h=hSV3sQwo zqAmqy;8__M-T4GAL`25)0%VF4$Zd_`JHvuIMYmaP`6-&BJ1q-Kbywh+3Hlxu&qGvb zx>CIe;wef7?hr^7KFV|{AQOM@cwDv1X0|oh0*ek>>##BLlw{-ORrHGazlGd)tr!Jo}S%pqrK6wr<>GYkjm9{^Gvk^-{+uvp2ehjI? zN2p858F*F(M!!yhVMHX}|AQVUkXvN}ev<5U`qjc2(|Ej6&tnbNMXj82-oI1joDEia z1Z$pM{^Aps3YGIaYg*-A4BN&y`RJn7PToB@S0Q9!IDqS^NE4qAo+6v}$X5jXORN>c{F73gmOw#Z# zj>mCrQ3wZ$Iy(K3j}6B=Oc=&Wfw86Q1iibXF-^OO$e5-_aRPYXQM#5A-#;NtHTPC% zKYzfk?ddi?sTwNlC0o8e7YWimIg9c310$Am7X$ZSkScsNb;+55XJuflYcLG)F%wAK z{Dq8D&7C|EZ;@?Ps<=38<#og7zKXNFgA{%d1$W(wBNngiacPt{ANy``)M5@C?DCc{ z8uOxwyqTL}9QUI6x(lq#s9uK`pBcf6&kWo%Ao2Zo>Z~{u&&t4X;B2-Zmu)(xABVFM zk$C?ZdE*4e+y?E)Xz;3}A~g2qX}I<+-;G^Hl|Ru1C6~uA3+(dCdU9DBa}>6G1zeY` z4UOH=i?+kJ(6&8}if(e_a(U?8{*};FoJLBn2w`zHr(-x(rU7ja)yAC;IWSx5 zw6?79s?gn~eubyi#)K%jI^^sMkcRm{t_e-MJV4Gx2_@Ht>YatlQR#xy=Jo}$BQ&CW zVDkrdv67vkW>*HtIq2b%>q9e750De;1GyozqS6MPu1a=?p2xU&om6!@kUgP6y#wSJ zMz!R|&}CQS4!6{^Yhl_Ze#EGwg zz&}4ABO>v-8On$g$elP;?5WZ3X>=#(mcg@z5Ugl2($o}0pkS3{*&1c6IgF_$V|PH1QB&!^fe4tpfy|qe{LE4GIT{u;HuFyA=T!tvy!wL6xXk~GL zH06YQH?*cnfV_&sY{~nfVr->SGPubWMnvKxp=eH=K<*z{U0!UCx=ViYxcPIa?u~wD z8E*a&s=)eeXb?8s{4+Fep%2-Hn}3CNuJiMml}hQY^8!S;Y3VMmj~H&+`Uv{klYdg;)^BNGkr+78P(I*+?c^U|$N{aPXbhejExLKm- zV9Y&4xLHTvkCvI0O1QZUqosRdpoE*PFH?%61`dX1AaEm)`2GnYkDKZE?Bj8to4lYgNndEW^!?x@*d(fyd2G znmC zX^W(Av!6a0o#}%)@Buw`O9HxNh=aejGJ$^I8V(E=U#riRm6U)A20Yq~ks}+v;98dVTC5+2dw= z-5+cf#N%cUeZ__V5pMR<{kjH-aC4|$7Yz{M=5XC(Xn+VeN9d2hM6YDwX1V?d10x8y z$reUL#`Mi_I8Gq9?Odf^m<|6*W_sM5r4I&!XSlggXSedlJj<+`i}Wh2EE(Kftan`; zbh4cAmgsFA0z|mERJX=~%?yO$<{A2lV7K6!p*gM4Vdq7LAZI2UW$tl4-syjt8W;c$<1|o<@&%zxVc$> zvnoJ@o0sToy99`EbBn$Xjq^$tZeFJU+!`Rl&8>P*y#NtzZqpOCWN>pIMoTZp>MGnE zizS7l25xp{;PSWA@ck2}dmK#1Z#W+Jxj9!Sv++S#7U6MozP=wFFNnv@<$Brn011_p|l<@08J?ruMySw3&k z4Tc1WQ1n(k{dylU6unJnSMdw-D7s&Ni#g*l%^W-L)*qKtLPF7d>P4H{aBsulBpoaPtGbAz((1;pT_BLtmc;+HmtDJp;_}x?Psfk9AGV0uK>xexmmU zYnS2Xr@FxozaWpBU+XAwgfi9P21@Z2@v6C$mzQ?K!lsxxv0`c zxam6GE4xIv8FqeX666wYW;rJh&*0`a7%hDtj`_mP`sMge4@M2#tYF}-hQ#-8nC@{i z9sl5X+~?*y`erOo{Am}ToA2ob|efqS(M!5OA zZgWk52si)KZ(}3%$`NiV=gEy80zR^Z5s~;x8JZI(kek4={DN>Z&oRf&YR;95{mwGn zOgTHyp=QhzhMR@X)tDLv^0-;snTrd#bZ!H%pv9VPgvNxY@uN zp5;T{*51&$r++0R+-&6R8(RqpHyb-UK*S7gHgzs-=T~Uf&1TN4p#TwXHh0=x5FoxgH|i?BZMlMtg{Gv#YbT(nh%1-FX-T>DdT3dpHAv z>3W)Qv!}Dg%HZZj7%e>l{Vm+Q6BB@=25weo;HDr|csA2LZl>d_j>mm&<~t9!G{4f| zbF-GS?0gULxLMa3ePV#fx>?WRxAXYl6I?b4H`_QPFg6|{+-&O{tPvo>&Gyb{OhC^@ zxY^P9sGEm?n`~i3WK7pVbK(SYZ&`*fFkOY3N(On{9PCt_>UW>v=E=^!<^Gs^d-@3H z;z2&-?dc<(m6c1BtefS|pIEoOfe>zvatg5{7{qXMw9^Hrw+wEMbKX1GhdgeMcXkC< zYMgL$f-^ig3wt*fCpzuU3o@E@bCOevrPOml*3HSzHguea2sfuVRdAB?5aH%j=hxnu z+??iYsN58Un+u%?NaE!ZZZ2|8Z4e;B&Be~FN*m$kQfKQWfsJtU3}+I0(kn-}xy-49 zl|5}wZ-CL#-=2X%;w2G(IgO(RZr;hj>TEN zyV*lLZl3B~QW_w_&C{G;cLj)WbEcC$IzWV*vz=L3Tlt?S@K?Aw*O`|H5aH&0r_Y%l z0&cQ}5s@+d5FCyZ$UR|&Qgv|#v`WtLxOuK~7dA`NS%#bIos(<(V_t05%?-}4(|yR} z=Ecs5L;QT^yt&a?dv<^bH#a$3s`-fF=4NLrJjmeYHs=jA%Uk};dGm57Qd9{EH?MGZ z46lS_-Q4cfst6#%&8wVg!6snV&8wY7=oF6&!p&=(SGojpt^*E@SV28eKTmop5E_H2Zkdz=T`1&DBSuk$!I8L8Qu=dR!^>#dv5Id{V+pRU5qW6r%8K_3!sKJVN! zC4dY!Uvxgr^(!>oe8~wNx2M1CJcz@*=eTh573T;he)^vNs`E(YdMDg`-`U4q36;bu`Ud~2K$ zd~2M6`z@pj_n_`^GaWzqc--ga!_FwIn|$cQ=jJ2M`#9za;&Jncvk?owhX^;HaT-qw z5Lq{0ciz|$Ai~Wzow=1Z!p*mxW19jS;pV$esHKO1k8EK?B))$RhvNitSFgrP0ayU6 zk{>;8{^XQ4^t;b+^LOX7a(~Rdb@LDB=b1j_aq~~79mtZ-&A*&Gdk2VcQ@Ksi7wO!z z+}R8Kg1qx)*liH3$sRYe+-t7$t-L)w;y#HfpTW(jyB?dW2N`b0-FJeCX1JN{UIfoQ zH)Y+d;%-4#dWdi{$9-mNCN~pq>pp>vaI?TIm=GYs&6Il-`>t1xaI?^zQ4$~^kSZy1 z^D4Iz;byVBYE57x+$?eDpOC@L-!NMGajd|?&2Mm_$Wa3~*D-L{L*o0_O!v5%j`N0B z2JUn7zs_4|(l!?1t((6(Rj>6BkDDR4HX0x{-nEe99y%vLgqykUm+;TC5pGsfMcUmPOg`y|B)jI?>LeUZKcijU7JW?g) z?ken+UhP8BQSKd;7i2=w(e4x2QPPf`*I>}}G>oxObO}}#jv6T1h=JPzQiVx$pNi@D zCCB4FMO(PK8y zQ)>8-w|p*h4_#gf2{)I!TgOyF!p#bI`Q!jH++6AYS$QcVmqcf}S7S#@=jK`N1<3#r zZmx2hgH!2S`)aqKYhWYXyvY4%TYv~R*SqC&14OvF!EFh*y}CdkRkG1791$SG%}wr{ ziU1LAZgzhgo59Ua7%d&bKnXXWC{~K225vsVz& zNtGOOzYn_MG$HDf?#y06E+Oh+H-@`WX^ZGv7&?8+c^E2QyN|m8uhU}eK-9Sm+{KV8 z{5aD+qNd}o9*_G(z1E!q=T@-@kEqwV1#u7YhOHp85@hN$1V(|7q$jv?xI?mN@`d}g2j-hBWyr4#iBHz&AS zHbni={rOVAAdjfOy8SSdOm(5(eWL#6E`^&0efH14{+cK&>hJEe&3shpiL#{r;eK4~ zV`Y}1>R;}Zp@A#1rmFBg*h12&YK6b7ykHTkhQi|(Wl~j#XJQZWatT#)!gYe~I!&mW z2*1}juo0>z!~H64gsQpWCVK)Kp=w_E`PKmCwpQD4q6R=E}?5c<1=-}|v zc|O)B*Kl-5_|AoX#b!A@Dg51x0FmW%Sa|#N01=L!9R3M+IntNYk>O@oGtxOaAv|?i zfCxt?hI^rBJsaWZ>ETN&ZG@wf!|zrup2E>7;UNu!T*A?5;a#0GINBJarhmiUBOIND zotUEsjvip(J_f16xzs(5rsMUG$9;}=3V#oGk22ZgXqWKNb3DZ3Xy5P|=o+!{INCpa zG!-Di(b3`NtpY?idTMwij{ROP;pl1M9%#0Q2uH_-TQBtx@RBXWgV~TV{S-WkQ;jy< z4^5vQ#xyzMCL953zdClXQcY(gZsQ}cqxpS>y8pfrA7Q|Di{H7(yIHB1kvrK1*0o>f zqf^PN_d6H`udpVLPE#v9T_z3#S8rcxpy^Q+r8Kv(3 z?Z9~~Cq)M)PJsh*zuQhY>E)=&x6mkrp0}p%g_LI}?Sz|Y^bw89&>7b3nJCXIDV%O3 zKlGl~CDPYZtj(y{T2Q63`mFR!WD?_3n_)mXkoL6uTjHAu9Ny_qvIko78w)DV0h&QF zW#g~q3AUPxKWpU78ni5*S;AoGth*2lM8YZfn|%P0*-t{?KTNkGn9nxO*#ymc3~i`= z2F9JZ_j?d?tw)JgSVCDZ$)g0kBs%p)h^6>5UNUC9tbK;@lEuxaiovIs^Wns8|I5n@ zk#NOvUQTU=oMdfUCrtYVogho6nlT>9EPNmGy=MweA!-eu#gxZ^yv`D5AOc^{LcqqR z`I=tXEl6fz-y%!N0O`xL!ZeUt`11;zLDJK@C9rvE*5y)le;{Kktt0wfn8rD-cwZwz zNpjB{cL^SqL-Xdt^g=0QJ_nnyWpB<}FbRsiIlk}@Ql=|2TEiDGus7!|+($BWole`K z3qR&ic4eWkU|?@9UigD#nMPa zOz{IB^@^90rO+~5BypziLxD&Bp-`p=ts41Hts2=8CVs0%W>o97YGgOD_*;V}1Lk6J z4E28U_qx@*b78<$;9Dey@#?rWGNa4Yyl-K^6(E7cwtqKR!1TcT*=8^j3%_9hd$GKQ zH^{oc8DMYDpT*k;HBnL{{LOZ;LeEZenO5=o7>q@QT)$sO_BxkQwHJ>cKM{Ie=ul6G z+K|>U%@4`PX(D1C*L^NRJy7bXzx#;{hHhlul8azmL8m6ba=TbB)R^3L*K*+k)fP^H z2YxKBmL3JU>aN`Z%ZJ1|XXIY=RnGpqDC4^!lb2ynEN%QRl#K6opp@iUQ?cu{I07J9 z)=sH9}1 zk>s)KZI$d!b=i!0i&TRdjiBbNI2lbzUNOv84Q6%%FlaPH4eb8b@-;3TU(?m`zKdkz z4b9|-H(RQ~tVzsiO<~TPx*_N6#RNWvr&jX4b+DLoE&&&JZLH)ew<*%{B-NMN?P$0HcPXr# z2^EkPFGeA)ijNrB75`zND`;||(WtKNZu4huk z*g=q1#XJUf#n}vW#TEux6}uQDD(+=ayz)B+6*UG!x)n_rsFiPW2v&Y0(msiLHIWTP zb{08AqePm|vO4VUmqmE=!(Q0wq8ll-zH)VkYNL%n7O z)Ox%(mMpFdwG|(oPF{!$h;VBu;jiIP+weK8Ib!*l-q0| z)DFDmn>@W8)Q(c_wf&)XZhQq7iU};;oeH4qgO@|iq9@&UQ+<9Z)b64-ZVt7_9Yk+f z0JW!})#pR)CF-uNQ2R>tv5kQLwJDLzMlhi$X--$XXDzP(X8;` z(CSryPb7j4;dL3fjUZKvKaoVcOc=kWR|(;~#Ef*zBNN`4 zM>f354vF{Qkr=0%EV>TW50e&5!kQf(&fPM(urbt=r7=^RLLDLM!KNptf zs)W!kW}JmTX;%^2!eS#LV>*nxsc{0ySzu>)p&1$MpW!7!m)*EM7G5C(dci!XD`oKG zn7iRs(yp&aqSZ2VXOM<##kSWNsON}nYyi~r1UTC{Y5qF)h$Dp&RQX*2Khg=*69gHC-WTS)rP!!D(jF;-Q@L5o>N@ ziO@NV5Njc4gt~bl{@S9`(xl~wK0FbzR{T7HT{jgf!Y=8wHkQR;SZhU>@&~{rjs#u9 zNGxICu7Ff6_>=?fGGUBFB}5jnn21P>0D#G|8U?K`&^E>NYZP`R1o;Q2|N2Oc-8NLiB>g zL`0&OpvMU$f5b_^=_@SZ&v81#^D%14*B3%PM1-IMIZG+X_;(s1DhDe7oad_*MzgHx?5S8Pn~NB~Bn&-UHQ*Wp&BRv64Bnh9k+2 z;%*D0#m=PA^?d+O_6P83>=*cof=ASIauJ(qhBF=-g94ptCYA^_V5_H_SYBv!N5p2B zeEFf*3lW=XVkrzjd&O$=KZIZ-Sv?w=VBl7VR4sl(674c!G_n$6BUwyDWK5@!F-{=a z05if_)D&_18VE+SocSRan~Jl*c%ecGtQ?N49C*nbK6OyckiQIqJ~1OIzkz{!6QpXf z5t4S9Fnp?n=o5>Hh{Q`5(BlM>Z*U$j+qN3&;h9P`Z1S|2$vvCr2+Tc5Gk!_AQC->o z=AR6;lp~nd%N71RaUqZFV??heVRBPi@ z8}47|R?n$26V){;uQ_P9lr!a8&u&Sy#6q0tCaIJKRPO+GXNPPbUS>gne z<#ek1*@)XeLNJ=h>0+Gf$}?D{Q{7B7tHy-AN-;|=L@e8TmM|JWRs=Lu;iRt{nSh58Do0wC^$u$L& zAThT))%we!E{wC{S5AVun$%CWxB%+e=1^P+b&c#Z8Sc1mPM!;OtCVnL5Y%l_!W_(z#1(RYzGfiQtH}18Z#4!cc}D~{q+9Ydmdu7z zP20%Pi=X399H~S9s!)Bp1J&hNpAyduq554vs4wv&4ask)zTBH?pD|EhIR$EC3q6-J z#(o)8!Y5}T3%-G1#qztG=EpZ1-?IW%u#wNTWd=+5FF*1~qgZ4iv=;;+VzK+mlzABFu~mEU|aDlG4Z4z$Y~ zor(jF%6H>2xM_T4&-}85p~drA0+X^m^$0 zysomphB)C~+oaBki0iE^lPhyEQfPrXA7|hmfmGq!sC#v$;X$2(u}+p26&caTpvMT< zt+83%d?$*qcSxNt1JqG~QsKuT$K8t0tou9xPTARz2`cu=QctdpfhMMm@v=rIDe?SLs< zQS8U1&RqcY>kv}saLimw6pVGUw5UkDM31a70`^j91-GLJ z`&p^8CgOSsgwz>D-_ingu4Le@fmGqC)V+45;X$2(u}+p26&cazLyr-#KZj^9b-p5X zZa`c=3L$lV0Cv#=b$-jh{TWh)U#ITXnT7{-3dTBFT2y32{|-Gyz#iu+wMXXXm!X4L zb@Rf`j zz6nC=TymRIv_PG&F>v38RN+Uddv&JaL7jrJPL>uG8POj?j}fr@;lB82Y3H9(=Vt(Q zZQd*=Z~p~vXn{HhGjNAP;)Wk}ug)|)s8cZ3$rQ#i-8a=f*-&D=E>e>?MrGyl5hupBoFsy=cCEnQqbT!`I=Ii!5-v zHUqa5QiZ>g^sUF^!RN-r7H5MQa~I=oKvYMOE9ZXv3IT41m`{-5pC%|HDiRM5AU#F^ z|BJybosQ@^-8a#=CBlAQd-M#Xh)=`vv1v16IolYxS3|1s+0>ae6VJ-P*p>WJb5tZg zWezcMDZ!urc5fy^Z)!e{*ez=@ zd>GY4-G^=E?lZn+>GiCezAdVS+dnXY56ow|8xc|A8>q9`Ogt+CqdV1*&uZwN-W>77{-#KHWjD^McHJI{ znc0ZFz8zg**X@(IXcuB{Tqm)9iS7l6y?LX=`d57$Y;|u)G{kj)`!0XJ)~$@y)r5yKOipmj$@F_W|cL&7*?U9T+Q( zz5Fw{mQx6_W;wa^fjuTRIVjQ;%zuN$sK(F6b;y3u^%l2^mHjYzn`1G7>(Rj`h$bwW zgz8>uW$Q_ZC#~}(ez}$1rY+)CtqUc7m8DOCBCYR(Yk)g23~1%O4BP{dD!hQ{tSl4H z%D~wA^I%x5x{fzQHr`K4xQ>;)0n2At)|TwEalmw4t0$7_=jfh@hOG$_)!C~t&D|_( zl|-|$AN31!TpSA|y=J?ob6+$a6r0tPzPvG2^pF`s-s;Tsvo#o0!%K*vYW%&%v(?Fk(5~ z7`S~PRk$H_7L+*%+jMtnB8Ra#bk45ZP;Wpeeemt&xa?sBmpu&JBakX}19h|_6D~}L z*!F+HEXKtEqad9@iR&N2RPBigJk5`NBoUdD7);X4oehNB(`}enk$I#qw|kWuAJZ} zuA)Sq10+V(eg)&S2TPt6?NDTQfnDd@d*T`xC~l<`xwCVuyvVo5=DE_@zEYHV{8plT(o>Xke)ZR@{t}zznu=G*FDXB zWOeZ{Y#Pzt_bu`fWfeb3sL%eOAY~W-I2Tag)X2a}7guQws9*WU0Lm)95*u)|e~X#{ zlqjx+j*p%&4})TyQpLrCFcG2yYLx|0kD^<#;ztL5ah?zDEBY^p7ai0&@L^!_+3b|T zBT$7YNn1s&TL3!gi=+=(MV-zBGW7hQAiHS)QXs?j?eT4NQFAtLMC+4$#3~vy1<1%B z7Wjx=G;S1-@^7N&85m=(2%8P8qe{M~ag@E(Fr? zjjGttZi5igJ&XDFJ|mX%DFgRwNEJRrU09NVXJueu6bs8a4<6e%!d)P&qm1Yukr1P5 zpPQ@H{8jj$X{<1D1jnFQZ6cf_qiIueoy77JoyQ?o=N5^j5)YvLvAQN!tj7WscbhE3 z6FrRJxnTzGW03f_Fm+aviDzYCcwqc8*jO%$<8f7I8zKH2bo`93u}oU-J1D{Zh{e>shiOw5sQ8KleefeiQUO!EN|d$EeI z(%4mxPcHqH$^6a3_}X@j%+_kTT!f9diB%-`xZudk)JuzTyp$hPkDoWChf|i6T{n2J-*V~F(kRB)>N*-p zyUyFSW!_X3zj11rm#x0_)p!`+a=+!5BX-Ir53a- z{LCC%W%uM4v00YoY+^=L=lvk9&+z)hO@Xvg4S)6v%s#1Y*5AuykbXRhe zwq)wvpnvv>jke-=MmBj>l@4PXe+52!=&EwB0bX@1L6t6~K^zB*?2{kr^-l&{XfPi$ zBzx57n9A&*bRSgdej02;4`q*cPW&f>mubKs0?eK^1M9lb-}q~|o<(B8|yJpifluY{ysCR{TeLhv^FuF z2pzCgqJxQLB?c5At(%F(6AGJnqPvMD5)ZSK9wwHT=*m)hnpl3~$-0R3GO<)*MbyT> z?o6yWaRfgdkmzG#rHP{*VA+>mg=dY zJSziZpZ^zq9u*nUry^5~K)fM3tU+5GZIcVEhyr>hv%Z&&t5qve{@8zKj7G6&cYzkTpgi{tmRaF%$EXw^%p|ByY8d zpkYlW;valo#BDN3C2zOPy^47DJKNyrJ}<3GcGtsb@*RFF^u2V8!!l@(Qr|FQIX^LQ ze}h!v=cu#FOgt+C!^whKS)-gRY&4)RfT&2^oW&9nBVeBj?U&1N|1Y<*ZVg?kUWfU@ z1XMABfjbovkEK%=;|x4217lygFpP@C>ln~u1negu-d=_x@=n!PLzk-Z&=Mw~s;3#a z&qJ#4-PFZ614k=afQPZF1u%??jObUP#|YRhv2C}*T~{k_jLw2CRaNVONzaJov}53Q zfy9HP)WtXh&&t49)tgckWkmNvrWjTG4QT7gqP!KM#nAiXFZtXmbo@%XlFX?M^-NJ4 zgE4t$iQ2sz)K#K>Gz02ts`@VE6;~&Y#7~?uVma?Ia6f@m;isvyl1w}+1EYI%A}SJh z4WP#e*z4d*|Fe-hZ>_lcJwW5?IpT@9dakJA>N-)y)$>FZSI?)a$Du57b@g>g2 zo`HJ_qzW&k?zx(V2d)Z6SLsAlBz}PAt;)lF12zo{jz{(ucl#khKdcp|Ru5>;H?EvmS>M^th3MyfiBvc%P7V$(}y;W3k^)^w()!RiCSNBoXcheOT z;D%H2FI7e?=K}`rXOJrVEOpP-G(2!sFuF=7@NZ*Cd_)v7M%6wam+ar8d#${?#MK`G z8dvv=C*tbeqKd2ch$^n$E2_A9A5}d8Wr?d3XDY>l;p)W<+)E)uXV|1tB0xTd*})Y@YnU&Eg7+#4;i@pO&=9LO5Jlc4G&xujIPp&sK|)^ z7J7_;eL*SiuCzcAc~6V0KLIqZJ|muptIvumt{xRtTzyVdarGEgJrQMztMmHdpIVII znPvv=WsoYooVw>~8XmYR7+s|kQIUA+8<}DR?6P|JwLEmMmG`2!x&tZ3)tAH*arI?U z#no3t6<1#sRa||Is*a;9adlvOrC2ar?Zm+C0ja{J)IC?z@W55U=qjCvij3%f$P^=B zzXNT^SQL@>hPXNiapUTn;)%HWmZ;+D+oFoA?}#d{zDrf#OIJt$J`Bi$;p#^W+%F(; z{-f@>nuZ6i3PxAyL{wx%e+NBAz`hU%`tKW{h`bNP)t>&SHBcb#MQ4v6<5C&Rb2f>RB`oNsydrZX0P^agD>qff-mheaC<`H4I%2D zt7&-Ps$g`LPDDlGl!Z(&0`|Mm3UPI1<^3S84o2L#`lEOvuKpydxcalG;_81y6<7aD zRo_Qf=<1oc6U>6)>c7{NVX2JY98D*OU<&w(^Na6m9Rz>=dP zvCBY@5r|J}gk$hkC?YSU-TD_{>?doI2-$q2qQ$-w;j*5)vU!lhc#Ah^Bs?R7Ck=N8X@E1_y zKr`b&PgsZpn-<|?35;0IJO=I(NW7*;-E$xf4;&DT4zT2?$cSEnOfdrS&!Mefha&P? z8V6PbFb=db4m`>V$bl11$MbKD;Q2QO?$3~T{*AilKpGx6AQ&BB$x)Gb{tbGJKztT% zvwwwSwv|_A9IyZw2ih73dIJy#R2VM@GJ+p>WZ<3wslsEZdk&=Gfdhik0hWx1;UFXW zOvo73_?HkXnxlxk4#t5s0E`12jRTJZ5C<;225(z1VmaS4aQ_R5uX*BM_g1$~RnqBJ#Qz2SNah16_>+ed!*D;K6xH(HsseV&E=^RN=AIJqOb8 zzyZPN085UFjObO+V+8EiAO_&UU8~wqy$`xn)pb06X@n8{(g*|hLr4`qOkIpK@T?4s zRhQM_asQX4oqE)Gw`eoj8%Oj zRZ&LtNMwppweN+t9G?QQs*PwWb>p)-dLzqZo&1$zTAcRd^3|$(4a;Wnir5 zR2W7@;{SipV+8CbE%86UauiXmyr}@Jli&B1I>+J$6)jL_D+X?RNPN|hy5!2hvobK& zc~t78jOeb&6r*Zi3vDUxgj>}{Hx+<&p20HN&YRX?`(ng$b}?{ohE(B=)FoF2o|S>I zo?bAFij3$xpvMT*Lk?`x*Gp7**%LOn4Fh6{$Y*VchBU5>M4ImmPBceXI464l=}GkLjo1(q(@7WWhf{~vi6Ll`b5b{` z__^G~XE@_ILycKH5sD!;OrD&qn+OfK3pK;8#x@AH^(lmC&vOjimmyXDZIHCfglncl z?EJ@IR>`>)Mn&SS9_TRw5j_kY5EY5@FJS`qls0%=h}UY>=QSTO6aFk}gi<&l zmK7?VkMl50byrx)Xl%&B`G*mle;Bw6AaVYoPU}oOD+8kwEDdL1ap(+Wicz)emnn50 zd%61MiMd$rs$XLmf$M)3%&s}(YNcp~3Ys!-TSMadpXtnc9RA+%xT^CDp_$uJ`p!ec zpqg@2og|A}8U_B~PdzK~MixIOS^bG0&|=>f4Ood%aDIY}=nlvkqiR14t^5>pRQ0z^ z1KuVAt~Z>|(wS8KT|DB%h|6ZEh8I#F$%GHQ1cxlKREry#!Zug`c=QT9gy`ox!h9`F zVV`88D#k*ix+^4}e}arrwI^VqyJZoI%b%ew=u+%qELKcFmrZ5h&W2Rsn$*QO6K{Gv zu1fn8DxGAh{5juUh`U{JmLk)vkyVHAf|`Q}F~Q*Q>SgheGNKovfEd+yJKTZzd>M@M z%dJ*pRzqq1)Wu-JBKyn5xbKTpD`d6qh)KS+yoB^%zQ3xMLyl{6Eu~=Qw=g@wjSp7NNUlqsBQ_;SI*ckk@T(u4H1L z4M<#I9UXOC;(bi4hD!2V*cVnc{T<|dorynQi^PwtH(|rh@Dg4A?5ZmJnHDly>n%Oa zWcTWAo6EM;;gH>HwM56Hk6Amb?>Q)Tgk8PV&lC)(H>$b)ke`3vleRc#pzoS-P;q?& zH7YWqCjp5Ozy$z$KAwZK{;hpbU;d+ZXcN4j3xmd0ifontxXr<9%q=Vb3HvJG$wG`p z&NgOj%q=YckWEJ#H=+KdeKz#=-01QT+xipOo5|A{d3Z%(In@}r1&}KI7t>i`CXSzr zPQ&OX9g2#K=n`a&5wQ6_>-LSvU8|M2T^}ipr}snM7usx|X~O!nCTx%<7{4#JIXcGg zjW!>lY0SMif0LBk*ufDYf3y7q>S!$Oxy0swr}YE$pCsJ45KoOF6~6z;z}2`IQyq>m zo&M)vj!(l$it6xr0AAsPp1H%Udq=|jDnG?rddeCwsonh;g==jaSHv>2oE+3*9!gSW z0|JYk_DglW=YTv5dAz1%{f4sk-?v3}))V=YxxiqG3?o8ZaXWXeP zb^Qiim30g(cG_QIlVl@&3zy!MO(5cp_uhei8ODLM@m@QP7H?GB$C&7icR3i8kzYIs#=9EkQF=1RmmQlk6tA-KHJ|Sgi4lphk$5?ZD$BsF zVF5VIQB4`qwSmVBK(*6W2(EHEf2`H{bS%gD<18+Lok!!MG=IFs_bl{W7|9S$#krC> zFoZO++^Y~#;dO+@tUeyk%D`BABN#^XPRJP5E;YO2h{**#f3>AwVksobDNC`ZAqBM* zF>vcas_>UgmyIj~?_kk}c>dXb4%OAFPGF4>coae9dr%6VzJ!eECde718s84>bk4#2 zt#;_)**KX1XuNtYX53brQ%EmlE%dHgeJq-cSk4Xx?ruoDZbF?oGx4kpjFqzFs7O5j z4?RY}zI!v_qG#xLuVa2tq z#Dkmhoct#4GB}|n?!O$d%_gQ3?XeUUT*A`;PVdR>Da6i_*7WFxyll-r953#dlAVJL z+(VEmJeukB0j){LXC05L((?#8#VC5~o1^`w(w=8os`PrM4a1SGVEf*NnQ3(%U|PFT zNV{hEBo-m{s5&naA2%NO&a=^YA20oecpXg1g56cuqocCY(h}$~YX;6g1vh`iqR)8L*4DCS>v z&#$aQ65C$F#3!dCw`;vR^SIQ~+nCBrs)ENZxjw@K)y}#HoJu`uonvPt7}w+^s_cn9 z@W@qvq!%1*$|1yHTZxvZqP!Q_8boz9n8={kLhY~8cguN8n!p>qD%_0eEaN!5AMyHW zxHnt6iE+U(zZBMEdP;Tw8T)C$zh|MN4KITa;x%{+gIVwvISijdJ^qVxSgQBV0=(c) zS8yoJ!CB}Ia6b9|2bL-rD-Sbs!zdWX^FfkZRl#^RG078D!32^y$pciuL^(fk(MR>goAXFN2!9zbTP@3RKXM;NRkg-3Uz804eo7*!lqZDx{v6LJgWClommTN z&tbe?+J6<|AN4=c3u_=4JBK3JURoLp2Fy*Bi{j*YUCUFBO7;e3Tpgr2>7b9&gn-W-zwD#4?w4kS| z?7YBYwAItjw4fKN>;_u&JcZNTN=-5Z^lDLMj|7R6tyP!dxnps`%(p&oGjYn?$(XX% z#=4m~`}`Ip&a(zB&dgbs-xoQ1u+BwRbFB58+d-XegTyne`!H9z2KaNlY&a8h63Ds2 zDnJV}a?T49S6RD}n2~cm6O)b6o99@wu_klL3X0v!#LI6&;(6AmvyMwV#6+GF3of+O z_RPe#pE2!7bL$6aJxyK7aZK`>m6j{zD06 z#oWvIG=ISX>y6w@Vj6Py3M>v<9b0Bv7;;YzEFQBGXJuL#a<8MsaJ)&JYGq$mlxbmV zxihfnY5#ZN-!0PCjk13SwnOcl1(~+N!l252^Ubg=53KihGgVdxv)Q;c#=d@XrbQZY zdeE%d6!g)XR&(rEK5?XNr4yOT7gka~|GF@<4AZm?zCpnU);ZYBk6%C1o3=l&{n~mY zk!hROv{wQ%ZD0703(g;bMV9?NP88{trZue|o3k4OQ;@XZYhT$k+0H8M$_58^HSOw{ zwSOzlH1*8DthSxg@PC-4w|8%lp^^PLw%xy#o7U)Kf$bo>Q~ZC}snT(glXT18MdpdbD7?&0oO!o0lw7mCX*!rrK|w^!L(K*_Oa! zp1lIcslU}nK$SgAv-l#^x6H1Kh3y~fb4{233RQ!Ks5cf@I9t$!&V)r_ZdzI}CG*xEdKyJwMqOb^q*A)#2{yMI z2VLl&*9}=ne{(=8JDFB|c`voawo@7VqdB`uuTZGA3urq7MyaXRS>UffrRa((yO^n= zJnXdDq20OuokVX}yqSsnc3?rO7Ft~OxWvOuTz@U*MSketyOiRUPjGhlk%@dyF?GHD zK5Wu9@XD7ErCF-1V2Ed1P!w8HFVi-dDypnkU{*JDD3ocI#;_T_S?Uh^Xf>xnLAj&`5sW{fNQ;M_W~P zb70mx)CT8+bh9)EU!d8G6>zYBXnLnivor_)^vzPg*lWr%&5n1l9*+E`$RQzqnlZiR zz*dzF4$Ov!e%+X9mge9hn!Pp_4wi?;EYCDcbMRWKNK}TszVnyqjhdacV7C6#5qI=G~9{HTWIf$|I5x)tzx7pzE6kF!T0GPBl;QC6*B{*ufgW%v)IXv zjV>A=vsK}9%{u!?R?*z)$aSm}_7-E4C>r$%ay|bN&H@H0?mKbzY*qN;EscDnd&xVO z<0muv?ZDUtMNM09!Kjn-QL zzPkf}ZMD9q3ZR>HZ-w8yavr`l#He$gw5)UoBYc&+@cW<8ndTB%(o73W zAE5zXgl-=G)&A7$SiCPmSGUEN*Xla|>X(t^OU>;g;9AV|&`fhB{Ib6PS23W9)&D44(u zCJd;kh`xx52@w@B=bRODj(q3b>h7Ic{r&On^X#o#r*2i7@OpH`aA-u2Ue z3)82UrnB25-6O|T|B8rPr((6LF*7vs$=$yx)5L+VSbDR!u`Si!iUIUY~#=F*r)!{=u-Tp)-Ggu#3+5xjgL6WX(@y22PvQ9Zm=Zaqo)UNLIuYy3{7xMWbt%vHx%rPkVB>- z=Uv!obzbYC^RHk>!(zxvphewmpu>i4T@#>NfiA^2{dL}=p)EQD=q{kE@g8KIw{>U) zB#{#AXK@?xy6Y`9C-1T$FT&z@OV;se@kNVaP~4n^DE=6jt?XT(<)gFladF;XITg>q zla&83Gj_k6LDwL5;%kZNa_qo7<$vQoTJAfnJ9(DB++^vtC`I~iPG$U}BeI|;SdQiW z4yhu8na*l5@wSTtJkJeNSfjk}&0`6w^=8^|QOLt<)o|eQOGY1aJ;=+ltZKn2NUFpK zyw%5Hz~}~vTK~Y(IYpm88+|lcJd88&av)VC zj-o7<1^?3Uj)LV?4^UM4E-dex1;e~ktQOZyL@m9ooC4o9ET@aHQ0Dcq=Ct+qCCAe9 zSvV_y(8VFvR9;IeFOtePGF{5F+%&xH)d8N@5e`U-YI{Gyy>K9}Qvmu)RO{!N#216+ zb+sNn3A$O*e7Xs(7`HwfoCg@wVZVKS3yCF}O z9&6I^OaO;_wGM&%mjZaY&XN$g6GyqcBb(a?!0?GBB`WXehAvpLOs`K|JXPgAUuA9p zG5#@%c;8r7w=dVrGCQ+xsEMOP4eXfZ>y-PFH!a?U;to zV@)NKmn>9yuh)gUKEMx!^4>TIM-7l#ycVlfLw+<|G@kwc<8f>-m_c^YQwccMu&|3h;!OC}M04z39Z_Chw#Auh7gn@;odM?Oe2I|zRGnr^%v-x zcbqFxK_zg?dI^1z_w6USP~8#iKrdXSRJT^N;LAMo%3B>k1w2`0Z0z6 zhT*ps^+4|PtnHYM#=`V)KkL@sNZ4#OzTRKqTXmxOkg7npT36%PHl0J^7id~Dffj#Z z=I32u6?VdRgUVX8T}g|?N?7c`8ZJ!J5K^{{)64et;9L3XI0APSL+#7(7@1sFa7?pDsk9tAkYXqn& zVN`CqaZMT1jR{jtkOm3Pv;^l^g0rgvy<{FaKt@;=(72u?WkHQ;?#_7Cdln_(nC6SW z;v!>u6AcYO)jm2!skJ|0j@PV{|0GTbH5(OxW_%MMZY)^&JrSwd`0C~;*3=vgg4S#`6GSs**){9ny;e0_e^wcOv4tQ8MrbK&r^IOqT*O@%PH&s%3)N)?y2+bGYB6AUuu;6~AbLO5-B&i)cU+1hQU-R{Ldewbm|Y z)D{|Uz%bXk)hX_JF^U;EW$qcu8aa2$8Ok1c#@s2&8F|K(xwxd$dtfVVf4Dxr|HlZv z=f}YN7!u$Aqb?<9;L!|>evO1-TqM5#2R%U`D+@ik>P`C9)E!lCx>7G-Ug}!S-D2Lq zQ^lMOR&fk#o?ZOXla_Ld`8qqTvMzvagQc`>;g;Kna}`1shU0^tf;92@Fm6NhVFvhI zz`&~qsUoYG&diy3Gy}uatk>Z%R;!hJ)`fUenUta*4oY5ugHKCSayu!xvy}WQ)1^Il zl}Q@@MOhrz7B%2Nt#)oNc*KTVo(z2`Ft&7^asTdUOw$f8xQ2{rdXzBgx6-wgc>f7u zs#&)~`vni`S+%-)4Nk3u%DTx#k6woa>7Hy{tkDYHa5n?*en=I$in`>?z@r%$>*@zX zyvzg=H-8}$R7ZUSaby%mreK9L=63kHy7=Z{9Lp!MBwED@@W?K{tScw>sN_tg_y!eS zu+AB?qZ@69UP9ZGap1!1JAav_)E2I?1)H7G5B9-f=|bnNJhThAWsQ9et5d-ir+=}3 zl(W>>QP*-XLZch32XwLXBK$J>MmN|4cJ8Yk zR5&^hlq$H!ac>HddRVy&u63qw50UjKq2M~F&RKXhyL7?mc|C#baE9Sr;nbY zJN&^dA2|m-TyTRkYf^~xsSD&rXJx4kI$agq?7V<+@pF~G638y6fAh`Y4^?%2;VAzELQcn_%FjAXVg3rpo|Y={UaT!a?;h5Qq1`5+qLIF^HHZFXAHc zt6nH6K_F`r(JBKe!-l7vV{k8> z4Tqf(okB#|@U(L^4)Mmuu;GaF3ie=AkZss-%xTgkfYexF!wb$Q>q;SE!;8*5tWdrO zh7B({UD}6`VZ$rVXk5AZP6-=cb!LNpJ|b**&8dxJypISQUUx2qO*$LiaJJ(l;@b!t zK6ak&6(YihPn;>BiEkrp_|)mwB1F(Rs^GZOKN2FshOeFXSA>YL;Tz}Xjj)xGcWU;< zatl>|G6#c1T2#A6DUKS3dKUxl4oDUGo9VPJgXhpD9arP5xwsT9IOv?{?;oy#OkA!C z9(OkG@{xYl|0clQXPraXCghHNKdS>uDmd!=e0qr73=R~$?fkJNL<$-KdDmH$A0m8n zX~Fx>+J+(WS~idmo&1450&cQ}IE6yS^u4GiK{cymiBd1&0>CQx+2`gjPT?&!_5=U^&5hGW~Ea4^7$bm+_ZEDFF*`8ZG8lNox#nh&c}=o zSSQ@X*WR$}1dwnuuKD%60Fsp|q0cH^;tV&-={T-CeZB}cllr03HAlFatuLt@+6Xsu z^yq4t+)U|X7`Ak7R@W1-7Wjy8vxYu?bBG8x^Yq-XE3x2WNb>dN=xjfiaI==4i^1>_ z;bwu}kCvrz^8py>v(c5p%@&v8f(xSt4t8hY^@UWCE12$cFdg4r77w`jyYt9$Fd~X< zJ~#h#UT)|kJ~y@Q0=A2d&rMH{z#{G=!p(}h1sw1Z;bvvs9?OQ02sf+fm&S&OaPuTx zu*gTiN479762HrU(h>x+-T=ie1r@A<=GyF{Ewnl*=q$s{cDiHrfCfG{Pto7!1dwgG z*IBR`Y$YHK3xqr`|3s*8-L`5oBedvQYH#F`|FhhLmT1d0KFMoXZpH1P><>t+Q_;& zN)H!ZpaPxE>ZwXth9Qb}a*)|NL zrE6fIgqsl*$x#D0-(%o?0;wXcsr%ea$NQAU18%m~-Ej2c5AX!sJX!Y!TLtmC*+pNm zIYeaL?52Bl3=!exV7(z8BErp~y361Y5pE9CpMZ&e$->PM`V$O{AmAoj7#E43Acn&U z0$EFNE%YL{gMwK;H)rdE;ouo=F4X0k2V)*J>*gZ88Y_#TfzQpw`lbuRPL>ni61}Z$ zhzK{A>K0f(%+MHaF4IqjyS2ZkpQ+!N5|r(8^DN!zlu}5zxmtgfT?z>|*XRqerett) zt*+W4sL-77*6FoizRwQf<~e%l_z)3puGcq?%H-w-z3PI{M!30Ef4e$Fgqs)Z>u|#M zOBQZkqIaTkJ|f(_O#gFvh{(Emx!zSLM1-5$^n^lmW_qmyle_R$1xH(U!%Hi`f7U8d(C3-(PUJ##~XXxcuhKO);r5<~BhzK{& z({C&d5#i=0{q}hwBHY}pD`0i=OBQZkq&xKY5pa_&jEjuvjqoTzAUlO)yA{o*%RLpBakYs;`8F8Ty)rqPOWUCI?W=ET6aQ^`$$TP;|F08WfZ?S}1yl zo^eBf7>eGh%O!(?e2VVX-(k-9Of$#M`}C)^N+F@>KE0z#DI^rVUw2*=LT35=pMIfz zP@$pdem%OBBtp>#^|8_=O(=RmKQc3uq7UicKw6({Leax|X44Q6iaxCmmM*bE(Ia|u zsf|$dS^Wf-M!y`P=yQ5q>7iFBdQ^YFb3p0xc?kwhk6VU8B1Nypoa3m0qInFw+K?); znCU)6)A5aE@qnT?>3%7^=?&czP;{3biDnDpQ*@7Bg<0n#LeYEl(^&0&L@0VtpTH99 zBSO)~^l9+eM}(qJ=;LmP2t^O+*mfTQMcKl*Nc{dEnv)=qwRZ&`iopD}3f}U$`L_OY zP0)RYn;+@TAv3ZKH$T>Gdj>SnhMS-0nP7(B?ZVAZbyak*j|ewE(|f|T%W(5^U9=-8 z$mixadKZ?e3~qj_+f*opgqz>#cLtO~!p-mX0BkZD%jb`}(!9_G+1h{7bGn9zaPwz< zHl~N~rf~BYy?j$9H-FVfu%!7m!cE(48w(NPrsMX!K176@+TB!Y0|Kc6&+S~=CBn^! z`(wi}mvA%c77v9j?EJ00DMm~Gb_U|)X5A6^%{Po1xVfK!cMwuVa;W>bAJ!yJqBi#H;x4bq)gq#29 zciV=Da8tQYUF0L+CR>P~h=h#kLvT1jHEZyh*xH4g6S$WoYQ@Z znRT?TG2sb;rOG|Bpo1NW9Fpz#O;bs@NZ#Z2? z3pcyEmslCxdYaI>BJ zNhcoxAKAjVNPN(P<|GJY9mme{|2}=5%*6 z#@M%!b#tK`D_tdpn~U5rMWKywbFn+S)JC|u)V=)T&_=kq%$&$CkwdZl3DqRP{el^|?93{cfv|_}m=h zUR*mwWKSRG{&7=?2sdZBP3H`&6t zNWA|M4krj?ox4`4LYx7uf^&Rsu6OUnW@$RhaPtDUI4>CUe6wzDcK?_WKt4AwbO#O! z@|nx^i`;c*hls43Tii=31&HD1R`>FiK|%hyxy^mc4j`YK+g<*GL$H(zH?MGaVCM@U zSvRkAPr`KbA;Zn9-Ra>b;NSFi7opug7lfPFy03N!5#i=_Zi^^Ftfq=I!qO zvqD6;x!c{`D@25wceoxp+OJEvd6!#wVTcGf_qd0#OQdu2ZgAtKzo$sGbl`!>SOUG4#FUp^w-yw!bTlaGL#Y$09^3W@jsqd5tx zS+%i5O^|i-L7$rk+zzdR&NAG5+-;l;#@t^wpKxd45N&ASbMr~J0CU6dWLY;4x#KaT zd_=hUl)H6lfEaEbb{m2`rXZi2N8NjS29VFq=iU3@Q$R%F<}vqvj9>r>H(zk~O${N# z&6nKIaZvSLkahEA*D157zv3RiVcxe9ZocXs!NgDB(_eEREnV+~n;*JYb_sI{H$QS0 zm6jvi{Mh}v)JEa2;8S-sI^3^IxcQmeue4-YH$QhjyArmuK^k)_={k&-o^cN1Ja5+Q zhEIM`2)M})!Yr>Dq>8Lzy3fsY{F1VGz|BY8kytnR*hIk1N8Jx`2S*T}n@8M>t`8C6 z=Cf{t$sr=#eA9hvM~DbF-*)Gf+6Xt_b&qWcZG@ZeyL@Y^)CE4Wh4{e-Nc>DQnvB`P}@+Z3D9S-7efb;oj3d zM1-5lYZMa0a1(DZTo4rGb2H)IIh z9}#X=^0L>3h;TF4`vi^jZG@Xuz4<{o;3HcY7l{X(;8B7=_Ek7x=t$P&^Ofp%1KccV z=$T8RMjl^HV*1Qbw54}_xMg-WTYD>SEe6q0w7j`oZ|(hkO_0xQ?QOh9`5__{J=ts2 zC_oHF+j^~f2L<^Q?c{xg?Jrmu`-75wiU>sqd0TdbHbT+C-d~s?k_!}N3*#d3`v+)Ff@OvaON6toJa_}rZ8 zZ8T<_kJ$D|03Kh@%o=0*cfgu z@M>Wun1Xz6F7u}529UpeF82;?FNK7gXLy&7Ero=eE4(wNgplFpD(|1tOBvbP&-AXr zj+V~Nv%K?CAtKyd?KJ_X(zo_CUbT*)jc{|5_sO;p5pG`KjhGiA!p+TIGq~;71p=vp zi@X}cLPVC&E#6#AeBVa6xz+pgG}xAI?JF=^x;q9+xcOwhQXDmK)7^}~OF-iN_k?_I zrsMO<;sG~jc&%qCRhdQj+??eV-0UMhHy3%$v7m~LzkDw7KEmeeBf`yf-n|1uM7X)$ z`}vFz5pHhu>VXM;-@hnV>$(o5>&G<$MPACWZi;W9`n%qR>4(1 zMX&Zc;G|&s%uw_OPlYt9Vkml}H*7+{2G3CRChv^!WMC+Iv)2rR|Fahj~4cX`W)1n65p&9(a;@0kSwy2d;Pa<}J3 z1E{Vc>b>5hmj%_DMRc#%v|)(IB6^><3ag3ltPpjdcPn<|bfVtxt#U#eA?jn^Iio{F zi2Atqe(6jVqCVk0RB8h@se(h^4`DZq7NS1o&FU7GBSbyyB``E;M6H3L)5o!~2vJYJ zQ7Mich6S8RNu?)D1m zgoqGzzZb)S%eN7t9`IK64G|&g!`?fsLqv#r&^x29kAR$PVO(TP?}tYT0@=CW;G0r9 zs~D@~cuw1b&wQeO?p<|d&}W9I-+C{c8w`DGL)7oQ88-z`wjt{G-h0!7e1@n$cn_`* z5h3c2UUqo3Y>4`k_sgY0LAD|4A6~C@0p$D@5cN-QDcm&leeRzVCr+0Y^)K(a#sRAI z>9VB$?R}abV67}e)f3*-!J#X%rmDz3Y#}}|g{oHMI65Pps!rteMVVC9ky+S7d>f%^ zcBCNeuF*o(oX7_aLK~rKD$=Xe27FQl6(S9Hg*HOfijfyugoseJa^$N`u;t*G%cVmY zJiQGIj8JtBHgJv}s5+W~Hy%<&?qa%6)pY!^vUot%ue`0d;F)Sn?trRad+SH}h)>mD zylb#{iH%Ry-@L;rOBYY!=+wxddSNc%==8`3nLY#1t1Ox@>bIzFu|9&q%O$PaKgiOc~LDT=9TjQPJVb<}V?T_x*gE|33U-e+%^@CIqzP8X}L78~H?Ezl9QIMf6Gt|3>3Fje0;lqA{|FxOA z)-_n53!lCb8>u{eXzD?h@0jJrPPQt<58dB}EfB*Mq3lcD+XJa;r|8rLdr-pG4G-X@ z+Kd`wkNcAvZwH`fyxR)fmFZB)it_rf{#+2$ z>feziTr$K~4My?1O6*HZO&mvb3A(Yt_m;HTB={pWX|0EpwH;l2i*_gsZG3m9*3TzF z!|#a0Q~ZuNB)$}cQW8dG+q1q${Ed5IR`jst%*AM20zf~_y4dzLNTLba{wo9TZ%7sS zfI6)+@n{Cd>R1{+*oVYT*X^j9YSwdC;QL)DIa+k8-D~Xq_=@Brn;59>IQ_tvC`{#b z?L|XuGNr-#`(U(CjPx`ligPRAz{|)6C*EY>y$`7(XEB|nWa4eF3Gkv~^s33h!VMSO z-XA8943ocNfo)$1Q$~d;58_y_T7AQm6sjs3V<#T)&rj|q+`PcI2ov<_T}<+#vG$V) zQ5(M*D51$Y_6UKY>n_ zgNu8k8SUShD5L$2-5G+onHqy4>|z|{D+#duoCX#ZgU zf;sbVi?eAVqy3|O$zA_t!HZEd+CSOPfm8n~!yoO4gV8p9#*yN9K8mb~Ll9Y{_lL+_ zrD(BZX74uVHelg+(#nkIQiq$O8PChbNY}>EL%O0Bro`RsJIlSFfhV0D>A-YZ5qRLxFd4014sIRo))xFR`mv-6Qq1qmEV zoUTQZ0aK3R`qR1;sYO$)DPSSDwqyNl^%>siW(}WuDi#@}h}DQ`?P!}w`NVR zj8+y+wYU!2TZc`50S<@J!P6&!^+nSxJ`rwj9Xn$PGQE!f0uEWY#wj*3enM zF&M07Y(zK>2gYSExETMlN)WMz&Rl_D_9lom0M{}1)rid81)f@a@SdJ+jI9f!~^unP@=& z2*6bsV95puen4P+Va!@^1?XLGycC;YK@0CCJQJgpx00y6X#Dtzz7BPguc|3e-vGNB z9MyBI+ptaWJoX*BE)B{t*$F?|`|pOBqv|mqSD?eGREIUPf9KL|+E}A=3&Fnb`zu=<0RZzD46GYD{J=?}(e42(`drK_#!ZtPapvK(+8 zG(v+3*F$7h2M7ym*#LwW0{w?6BM_Of7xpWB^kSmtA~Ku(Ks!O$55VaABft*RioWAd zuF4YJUi);%49vzoC#$W)DS6M`O4UCJTRQQ~OG3WDK=sHczG(46Rll+II(N>Fv|E8e zveX&Y-OOIwk`?1W%HUqa#U!pzMKN(b9I{f$CdhYyn)Qw`YwquGRBoTlJ%MF)3$Yay zv4z4n@gqV161-L|;l(SL;k4xvMe~XicR;bkmwX8WUYZ*N#>$reEwKg1u@)Bgkt^Q> z3zg#g%)!#JX&KV%9Ns=&^@NZ zu9FU1X$?g#>nB$4XDZzbh?ZQ8%>O_!zB6VmkbW3wx`7py?1m^pON|j@mP)W4C5NEr zbPrM(Lki!DU-Ap|UR{C|#;gS$@5eHIjPEv+-K5&FKLM)*f9xfpPeGd8pq%E=$>F%2^HlyJ4+5d5nvmPl8W+=F!foPtSb48`$P$t52{zhy#@!kD$bOId7=wD#5pNl>7smO<@kkP!?Z(Qo@y$?@lqbn3NK(t9;dq0Zj!zvw{+f zuWT_DED&9la8>17V=_wM1mZ0j0}4km2Gelkg{Lia+Zq@oICn~}gvPmQOc{f3%pcb` z(MWjn95m9>7%^t8USkc%MNj<+dcw%l*=-IQzs)M*W^}Zz_Tqb!fi0)tJam5MjF1>E#+%n@^y{1 zg)}ari7Md&&3ikhbeU)AP3w(h-Z3-D|FzE00)r*X))MGkOpWz_t$MWZt=C%DAi|ZT zel^SFkhLJK`YF3_gL!wjixc}Dn8`fePQWSe;Lx%s`|zYU#bTzkqdhNrovnLT2WNW| zzh!m$;ojN$$m$tQk?(H&--im0;D6>rh|GEl!WuE_B?dSyO-0DleRX)y7XSY`-PZ+J zAO9Jr`}2{DMR!3$FD8~2J=hdILd~YZWk|g7|1eMqUK-DNA7;G4kn5OEW89iIemsu$ zxegl#9fy0Ps|2r@r(BLD+^UIn8Rz2ZSg?6wW*@E^QTD`a`BzBiSj>ZN{MUhb+U@4R z{2KBvFU~wL&*ov73CHn2i-%=rE8omD<1%F8S&$i4;J?gSFogZH;BJ`nEJ)KeG*3GV zet|TuSbqY~8ius+EI8vMByrthlE)-D56aOF2Vu15D*Q7Ke%utNGemIyg}fjCgia#- zxWG*yc@kU-=t9Cg391=A0rS9i#&BD0!M{1M$zf(MqRr5s<}h888GJ_l)?Ku75tHA9FvDPcjg?0&bva{8EI4A<^|h094atjZb85a zvj$F`7+H401Oq+AVxF}5!kY@t*5A$w=8K7cepcpu*|>Vfc;x#4|F59@@7VCK5t;QX zgf(`S!$Sb(%VmgizVw3wQ}O?=`BDsU1pYJT%YNiy(bJKziixE~4>m=QRkLaEBog2J zKMe5JYW7qPJmC$ToqkU-?$4KbKpZJ2Yu(DWe9 z)8=DSf^)L*g^|XP!|^d<_vbqc`Md_$M@m@Q(tY z4$1kl571G z<_quB&G`^z@c!9uf20}5eBsTrIsZWCUAJ2@($-n8;+(*G52Ca|<2bsrShF=^#uB9P zT<{K3-e+CmMOcW07h$t`0T#mH1z3Q{1sLurn9DD8;&mvS7crlr+%H%*+aVWVA>v_<_;IR5s_{(TzDZqy?XdAIUU{TGzTHxd zXUk_)x8b9<#&dX8lKNl+(78iUL@h5D-Ip2-MmC>SfdzvI z9K8sg(dS(N`2APN^;T*Fz692!AEDG`IMz39@Ry|WJd`?igRLrbmb6wgUO2J0Dy(GAu+40ASE z-!jbKU|A`IT{c)17_Ql9)nTZtjaFMx?2T4`QS?UZbWx%ktp%dwY_!f1C4Zx}O%xP! z8Fmj*1AbF~J@aJZ^$lP4E+g^Q?(o5QM*Qd9L+zN6Go73C?Hg25T%XVCcnMhVWuF zLwL89A-v!V=jp|L4B^GM3^!Pnh9U6aJVSM^^(Gh$uf8^c8Y!^~Ca7zIb|x5Lf~m|{ z!P*O6ME#e1v7F_E;p%7!_|9L%zBPe5O=2k%6qul;33`}dxCy42V3`TdHNh1oxXlC) zn&4RzykmlIOmM;kIk>b!?X^tM!UWw-Fw6u~O|a1f+Zb%HCXGjcu9FXBQNY<#r5wJr z%}Pb;Db=hR_wm%%1yE~&smbTzHex=%^q=|`D@ddkzet$+xgyj8e(xo9 z92Yf_LO#l!x^^biI(#fKm0t+8Ip125I)6FT7E;2Ap-@}$tF);%J3(zFh24%tBhp%? z?Y+IAwvloh!^22hK5d(tgl0tANx9echT8rUakV1TJS>Efj?3t3l%8~&NcDxKP&L+vTm-@P4bZ+<}{wFCr;^pPrl_n`I_+Yhs$4w|wL zop%_5(P(5q4sRSp1`^?CQ{C^!X#;xh^$`5<=5>U)Z}Kh!?_)?+<$sX0%Y>_@LpUQc zBOQ}>*IBr_WwCLQc>f>t1c6k|ov40@w15|qUlu9N{iZ$8vj zGWc2jp{|y8eN7Urk)c~g8m<%DZeyXIBesdYP&W$t5X;>xRYWlvA{Pqxwzhz}RnYu~ zIPA0>fy-69!T*$Ew6Xw@AxW&h6U}JEar)ia%BHI1UHQkh>j%J~1OIe}aK`1X5MG3zBx3aMg5(KCzg% z$e2C`JwYJV>TFck?R}_rkNvn)f~a=8FrgPTMRolcc!MET zmDZ57%Y>_@L-c~h#6_Z)kR?GN_0uv`*Hc)s9!rEfv@+VCdUGMv(W_u(zYoEvc1Py$ zEa{F4eCvYIph@n22>M1-IPob1?>MBY@&Y97GU2M}5Pf4Yagj0o1M~!e)QB#q?le}H z+P)p?>~asnp(i02&37l~+|UE?lwbg#8IIUg<6bo9oC=6dGsBscGZyQFJKe-`a*EjM z875XSXH+}HW}19ea^9?g*enyP?hLwDDOQ_%9RwT6>d~5K7+X_pCCO^4V> z784g4)2~5K5J(kaHFg($2Gt&Y02gzJM%|JeuN>e7#tW5`gO$UTm4m;kQjEHoA-5$m z&?ja@<>MK6Qz2EAevq`wgsY}Q^ohm9MaJ}OWJwT6y|oC{Eti$_VJto^3T2BcDTZ2` zE~Q4mpB8mw`FapbQj5AIP_0`q#jRSk=0G<1b1rU2#;x-)-&2P{sYc!YiQ_3fE7At~ z!q@33ez%F|`SY#**mfE%GFXE_LlAkx;`zTpJDda>ePA(Xt-kQdNwZ1WJh^GXOt*R-r5J6g*;B3$_wVYbjDcQFJz@HT|#sXYw5 zeUPfkCP><4!d25Dto+Q#ehOE978}=;F?|3sK{fRv+-TKY)aqxT-lDPOckh)@>-|bK z3;TDn9UqEJ{f=!cQTw3^P)G67q_Oibyj}{yXf)Lz=h^mv{pDG0vKCIAt5S^&RkZWb z12_Z0ICn4v+s2$|#3}~fT1Zu8Iwb8f;i~Bn{bw=wwl5@}e}ha=O^u{et+zw96OZ7g zvN+YkIMtFH7JArss+EaqXX(9|v&fPA2?U*DPSl=a;N?Q9Dt{q~cA0S1bcl|yn7Bwh zZjX!!0x90SNOf+ExV-~{(VSEV<5Wi;x=NkuWTH`LB`RZ%+!YXXiaAmH%?!NVkl6nr zX_pCCO^4_di;0Vj>3g6j2&AT-hX)F3^#_Sk-=km37mT3#E6$qb3+4Fr4HlmAwPoYJ zekRm9vdQnDT32@Vk1;dK7s;V$Am&B+1~D`x)d)wx@=da^tftEKh1$9%#xfP12DRN+ ztm37mP&-*PxEW`}^4)W(RsqM#_bH$nXT<}5q3!*bKpo$h=mS)z43cbEhRV;_#@Sm7 zr?K*Lza={L7O3<7pjsC+F2C?8&c0Vqg}O#oi>Bv6J=>guYd~Eq8_VY9P%n^^_!ul4 z?&}wjb21$@W^`X$(y2 z?ifCDX~yGMsvMkZ-BQk4Im~?I9imC9&-_UB3@ldVpN+A*zQ@8={^ie!eoOV0f2j5t z3-#5CFlb<*=Tc+svmfQqZiGDPDhO8WosE7Gp&IPN98R5XFF{f&r!tn6j?xjsaFT2D z(L<8=amd7-?CU!x;^#NyXs+&k3!GHZTx_gXuS)nh_6K~Tzd@-xP^-2fRNslXF=7vP zFv8}UsgC3EnI0pSUdF&Z6H<97Q(0o1fk!ehEF2mG0;*C*^*YEnRr_rS{0thZ8tUwY zE{|ue0aciQsy<}keh#U;XQ_*E1|G@4Sp2y##F_ya)!#tIsoH}r+?2+hKg%A*U-aUf zw48bXrOt!naDm5&rAIJu$3ZHu3w6nrfk!eh*7GB*V|2B|#!h>Nl$R|X!*z*y&W7~+i`kWu|AWSpwq7TvkDDvGd2 zB?MrdIqYNBdD~jtt7XK}xHpA5dq66$9(Bo;fk!eh*7KIsNg366fK0`y+D|~M@g|CJ zPS5Io3_qKJxN{E6ly-iAb~1wYFmR7SD(`CQv@V0+RTfv}teqgJbNZRj!`PI;`dJHJ zDhi4AL&m9sv-qs`Ll`>a#h14LIynHvmzkeooEgD*GH}O1qW#o;U()gRW%0n5@rSW- z`ejJJpq7|sT^N64ic_`UhW6d-Fmxt}FVhisu4b9+mrrpHp#^;Tkb(O-B*ve*?@K!V zR9QUmWx|KwBZn!2^|Kc60uua(j8nB|V7==71`M5v;>(W!oqAlv=*y+=A1Xb>EkC{JpYx;LD^@?;?jOgY~nPn8>L1P-L8dy$0IdAHmR>EWRWV zce+4`FKd6t5sneueq-QX0I9rD)O}yl@!4hZz?aF_kOrm<`odabBBT0Z=y3ve7B;?= z_%cO&*#^*g7D9Zf`V%f3VF6#tGjOXwD(_>a`@W>(zm~-VU#1NF6gf;8^o6y=L`HQU zii{Jmw?kX}Bn+Kt;!7do&L{}+CFd!esTi^JwG7-FA(dA`-S;IOUso0ne3|ynd&ptR zpf9W?CNipTgB~Yf*T%lL8zW&k^Rn*2#JdZi^D%_@5=Gb20=_h0;5LI)-d{|obs0RH zHtBfa%RKi>q?j`33u}pqjOsSX6enQsfwt{`Fm&dNFYOU`N?0bjJK_-T;Kp!ibrJG|VO5lfF@;7)+V%TuV+x(wdAEFSo>;ymo>ei`(I zwZue5^)zIP6R_WhwvxnhR*5gO5qEa5O!iCDr*Y?k5ler{z&#GBya%ZJzNF*Nl*I#I zR^_~p9HtEV!dh@q4H?xxK*p)sbKb@`O_{g$&;LBNgAf8_a>t`)7kx_jXGQ|nlzd^hBF&H{)#Fur5I}fl-_RGw_m7)cF z;RU$mYFv9L?-+I8mvsE2vUuRjnp!U*hbe=;u$Gv}sE(t^I02hK(OR-vsoJ_m^2kJ- zf%AyqgqR#v9vORP$={ppAm@Wr#ZjhK9pr{zKu%Xbz571tXs$GvPuEd4nH_Zvv% zZKBRfGVw?ThQ}3dhus7C&!OU~)Q+vFB~pII9OT6H9l)4=0y6$IMCx8{r;(U`mB?EV z6=u#`jN4^VosCFLWK{peR08(cEIcpQ4kfxhlMR}of?mvomO3qwBK{Alg3p&3vGha+ z?sQ1y^{39PnRp}vV;BD}6;np_Tx5z8D6cvZcJZg35vyU`(9V8V zLk9da3_nxKh^4<};QkD$ycemnpiDfHfuUmxaG}d?SP1)=$f*7kdYph=QV#caaFZw+ z8J2wPM%x#;ZZazAesrygpM_N~M*egq?y9>>6) z1c~z>b$XbIM=~(B>{2?RH$vid)uPWp);QIQ5%k@=DV*z~yRF>iDtd=S1P#lbsG@iJ z5ifVLir!_B)c6U-%I|GMd3*e{WaW;B(d4^>Rygm`Es~`FF5E#uVQ{Yo1Gf-TdA~B9 zRc7Lm3=DIPSy`jZHPoQzB4bQsRM$shoPfO++V7X)(lOrN83SFa-Y^|Mz{ZHB&t>3V z2&ue<)WtXhk7Qu%t0pkSZze%T^`($;s&;OUQX4QmvJ$r?+qcA}`|U(HO{zYD*zQl! zDBOij7CvI*X1gEBP{3(ZnGW%Sleyir7;o zRx!D7Ct`<9tV;4DTzMy+HnHl-Lvs*2Vq*Ep{j(5z*2HQj4{ky1ITNdwe4+tjM@_6z z@~**%9W#B^EP3w~#9lOg)hhY(K*U})ZD^aEzX`EdOsqqtuDJV=)t%ElxwjD#UX4lP zx+G_TxrsLo9eX4<-Gta%acl;5VXtK8YKXm^l34F5?>0m1#$-L*yh*%YOTa#rPA)*X z=g&c5mHH2X+G82jkFb1Z)h&WeGXD@d_KS&9+koUOj9cQXCX#uW^Ds~u&Z@Xk(Fq`i zjg7(8IwHz@l{!Z#6OUwI9L^dT_oxhNRR4xdagHx;t)i6Fe%wmIk0MoIFSoggc97 z7JLE2swe4+=U2e#G9^p)yvk?eyAcV`x&g`bb5vJEBi3UQ)s@!_gIiJS z1Bpf}ANUy0NyV&RB$}1=`g@pXD8Jei09=UvLI{U!aWqOttFHt^yG*!7I)sPCS^e)Q z$>jjM>=lX&fXUW-{GnX_Aa0KSMmK>3B?JR43tT zoB(d82uvB(bqG_nFMzf{4h+rAfuXsXI?CbCHOWBz1`5#(4ZWCwyB$(_tEe+;CLYPa zSXl!Y;tleUQGG3BoNCPrF*6s>RgEGOl5cdwo;=a7H+c|lMJAb;PPW4`9GPrl(PUk0 zZ;>e`mX*97lQ1&X#B!1sOhas%iB(KKc_m`gO{_{X4>#!|Gfb>{^3@v=n`vVC$;;0{ zY>qh*)J|qIHkZ!Xh4q{n2&E6c+pg3Vj9B_Q2JTIeDt|R~v?3F(l@77(m%=R0=@->E zNM}$+_3ebI+8uCncU}u{xZK?20E}|EdA)&fTeuU1E;paN;kHn32x2A1^JsF%S%@td zD3)1HMTFvO_htBWjuA^U4X>4f#Ptt#R+5QFGBBkIShElnj?=H0-UC0Qz8nuEPQbn! zo5e01PpxFzLc0T&y!Ll>#jO^gmSq)sbAWU>JTyS;!a)mxbo_E~fat;=xUNig@=gno zXyIyX2+7WuVaqV(l3lvVpFLOu3|1>vs4PxAovtUf%n(zTQ5pJcBQ7llx?_Ep&UlD(T&4WXRcC!yn$ zedc4Jj8iJVc7IHSWZ#oog;1BmJGKJq_tnM#+Ee%&h?nf&KJ=kq?X%e_1BRgrQQ|Wc2C@oIITOg>bHjq{!o5p@4B4|Qu+fE0*t}saP7M&NaO_kd!+%^5Aa>#D zBY})qgjwTPR>30i15az-r#$3#Z;DaaHjU|#~QO?B*_ z*<+pAEQ&3x)CKS1V8qf_FmSJfRNgx3Vw{0TGB8%v8HO>DQGFBiI03s8`hG)e6p_6$ zYcY-kw*jp5{AwItSJ9P9*?CaU6tw|Nv(FN>b0?^)Mg3$Z)HPI{$}kXDCxX%}7_RnU z;BthO*MvGN$;2ZW7+s|kF_BR{7@6V(>@T48J{!5S*NLmc5jU=$Bc6z>>qQk;H;5{( zZWL8qJ(sHUC|zN%uEAlE1;eFp8Mu5sit^r|?z@_Xhpq}nSLsAdB(DFU#|hY%R#WPn z-Y6n_lenr7H?CeFo`|cPMHN>s6jfZkNK|ok3sq+h@`|f}W2a@oaP>+C?hZ)hokQJs zH4P746^yRZ30xyWM)l2*ajJIb>iE9wWhf&15^?o*fX3BJ#S?M$GEv3V%S9Dew}~pQ zZl~(xqAYQBKux7sFkJ1)!0ivIyr$HBSJUv&Rl(>UorsBy>LJJ!Ct!aGZP;}vBKsLk}U80Jsw@`KF za>mfrMp$fEFkHQgfx8n@dF!eBuBPFktAf!zIuR2Y)w`g_3D{jQ!yDodU}fJfuI>hC zT-`06h^u#qDz4rssV2Y$tNTP1SML{9Tz!D5^Eh2$uTI3C z&w}CV_YB-$A(h7;-3?q#!$VgEqpNfRKlTh6)qg|AsoIyr&D^U|MD~N?s*SjD^?-OH zu0ABHxcacD;_4%!imL~yI`i0Mx_S_I3s^8*y_$i0J*4tBQ1^Q^4G&!vjPB8in8>KU z1$vx--8CP#&Tw$BvL6>$?*M3AeL_4DSDzGBTsr|cj$Sbb)I~gAiF=FX!7`Qh; zDsLlo-_qxuB&I01V*4%K}}p@{6S#8r*BarL-(BCdWds<`@%sN(9kqKd2E zQFTg?S6uDd5}%7Qg3mM=xHm%L^FQjot7&-Xs$g`LPQ*mwlm$Ib!0uif&sX3>6D#{i zarG{M#?_z16LIxtQN`6?L={(m6;)jQjjB@(Wr?e2w!>5Nj99ua1NT%&<+Y^lyPAfF zt_nt1=>$F=g~TZfnc`F{J^`&Kt_7^@EGui>DR|8YfI8zn974-k;=t9cfW!JFPVF>@ z14kIR#~|_i19j%i#3LCPD`m+sk$C#zP;F*kzC@PPO78XuV};sc0M+2f#Q`$vAK= zD_{?_z||ei;lQ&DT>dzj^7c{p9Z17N2LxlKEIB4Js$Yj5Cs46>U3{i^J&MS#VjOq} zsBxgGaiAtF#DVM9!&gRdD}aGp45_@6srwG3;h_V9(E*km6Ny=dOmPAg4@1MfeK=6v zIB+@u<3J7Lzz$Zx9{6Y|J{M*LpXoAiUxvizpVWN^((up$!RP=>j)}zQztH0ZD)z++ zbVmaek)3ZGcn_#?pq6o<7S|{`@bVI@0*qMtR0i&FNaeMo?mLi%hYkov2Us#b^o5M- zvB(ssTJZ?9jpzz1yS8y)0s!Mc9pk|Dtbh&_fax@c1IHM+uR`G4!+{|T+>wyVYfs&GAPo;4 z5R4A6 z_Z>*XLk9$-11uT8qy`z)??T3@RvcI#>%aySk=@KV@DWhsKy%|j9axA1eI_YIb2w1U zz#R>#ypGg;2h#A+0l`=)OOA<*>hZ`FCs6Syw6Af@wz69p2c`fp4zxB7+{_Bt11f^& z1R1gP%M9E%A(i(qb>D$BJaj-XI>3_geJ04LejhSUwc@E5*p;~HWo5TD4txUCIMB{G zP{cVx2hP715A88x>ER6Av5?B^Ox<@N4G$dJ}h)i(;6^}vNd>)F(?qD34 z2EaJb(Kv7mE1&}h=HqdBMlAg*1NUu6z}7A(A{c z88>;m4TFlCyOr{L;DO-!qnWU-9};@*LVn!mt<<*?Vx2EU%=wCbunY6HDplB6{Hf2t zZ3?M82e~cQ1V7X8y43?br+1J*4^&YrCcIPu6%2m_SM`3Ps%Nb&5A3w+TkyIm)@e$E z=jI88`ULS^Wu^F4o+{peWD|6bH_+US#vR%2hz&9^UCD!;S3v9JAhgUo^=#CNZ$2fz zz~bQzHfC8#CxO@y`N+O7r$LkPZ52DC+M5t;au)KVS>+kHRUlQv?~z2iOt?`x#NlB5 z<(JMxK5Sgbg5x11o__-#H|konC#ET*x;0^{_ASsB^DLe-zwxkH=#WMAQ3}V!va<4V z>-iKIIBOteP&P-EVive_Cj)mcr1G{?r*$SC$-r1KON)t&>iy8;1nilZ)eo?jbG9ev zjfWH08e%BtcNWa9S#}K`qT%GX^n3>H5=iBxs55IBymnb!6?Gsq>q?Y<{h=XHO*yJ) z81bcX;0J#0T8fvmIHz)+{1Gh%Wkn!-NIL{*%H z#`GGk+LE@iGtb|G`G_}u1U$a}ooHgjpPuC&w6YFi*urvHb_jdZ&svRw4 zv@Wpp^o-$ZJ%VX6WcORm&@t&_*2e024vHOSSFRmo3J27t2%L+Vf2{1o|QZhaLF+fD-%ECW`#fl{mm12c+&dpe}@x>09^ znRp}vqsMe8CKBfnWQr58o43O6-d=>u`6jutmzPPUMow)r8d^ACL{2`^fR%NwM^_kj%DVo24t zLQCjuQ-$repQ73}4#6t|&^PbHlv{_x{OTaZUwT^2Vp5y^7=`O>8&^Csv+(mItg8*{ zYIQ+qalQR=A&81bSiVJ9vACBOLbqG&FRBJ*7=KB2m*b^cze+R1Jo|4H6f}ud8g{k% zktWw~gQNTHTJ`-&ZR%33E7PeX?7ai_dzelc`NflV*2FbfiypEMugXluV6ri|Jq1tV zw8bM!Xh&3YIAbEQjRKDwfNI6YZ6J1_qzdO5%1#0L|1`=4?7H5LfQej)>RI;3iw-5Pp0_L8F7)(=6BeY$xMri5cJDZ$uJW0F7i z&!35J^RX7aQ0nT(x>}tZT3l~`jSZ8H2rPz+#a*=U$NtuSK^ew@w6TAYX8zc}8e<{G zgjM=u|1C}Yv471C#$LQpt;@4wf9ywOmB}xjgkxU`b1J=fjxRelHTV?#j*uJET@Z;A ziL;SWNsP0Ms3c+XV+3$90*UA8XlDSbr+fmz6;D?<&1ydhY^rd&#pSU5C|rP47;o{J zD(4{>$q-K4q7-vr2x(-wUm>ErR|t(=Qx=b8V61&P45Rvc$T-ywGjMmdn0rHoHI`F| zh}1HADZcu`2)?$$z+DW9>tE`!sb%182M2hCvx6L}qg5FzZiTf0;8O&Z|AKn)rfx`l z{{=bYRP8s~DOC$Cwkprd8iOgm8Yz`7#*Ki=^Et&Tbr}U!9^H<}Hh@b+F-fjeuc*g=uQK&Ma6Wfn z{mb#@FSIVGs@bnh3h2;#s;0W*xzmz=~Wa0PtqgC1@i_tMvP9{+>@O5gUy{SnSIhriK4zG4>dmJ@@ z16eE3N$k~X4Un0O1q;E@j$q)9gH+YKLeef1u8|ILZDTR`by-N{|_KolGn%$;W-Fb~dq`oWFR`FZm*4y-cirvL@PDwU3E4NFL5cte=TBOs>cJRds-gHA;?J zjMyL(Yn;qI7qQ_c)+9L&J9*U+Cf3xs7yTe}Z|PLbX+|vl0R#6lNaa04ogI~lM=~(> z^Ct9jOk`AljZAR@6~}eLVyMUxod zT_tp20Cncf#3LCP9bn0LlL};1&qJm-ReKp$!}l;jb)~lUrCsndQWZhilU6mpZW{>L zGSU#YEMQ?-ja%FVpzWzMaQ*oI82j${DvIv?*?LPt5+FfHfsoLom(Zm5CLp~^6ObCJ zAR=XfgZK#M11Pg-L#roP6d&7cV`905>*}eBh-tXu4N6wyk=FH5QGtbV< zZuagXl$MpTcRhaozD{m0ffbK#LTbHExfv}np1D`^ViY%za&E{+YN_`>5>;iLlRJbCz4iMi|<5!tCbr$me z^F1iZ?Rem~UM7E|!F&|Uy(bIXKe9M5;6;zVlqso#z*|3GhyX9Q%3rFK?zt>qa%oh% z1r7FKjmmwb7-UVZLNy=E%tIKMJl}eATAAF&vzfaOOv-)g>TM|=s20{9a4PSR#ovVg z%Qfi$#;+4@KK1}Xa$ij25Mm0jG8&IWeXr_sQaNw32~JeGX#IMQ03NsH!P^e0{O_61 zI?CWtRBhEt!p#P)lNjf|9Mr;gbfi@0U$BtnzCFEiz{~KReI4J!VCKF@4s%`Y@*8dg zmDJ3v$P@i#fc2&mBiH=kWSH zcf4G_^ExMY!U5El!^@o9a}HAFm3;0*x|qWY`P@m|zvS=^bnfIMG7}`oC_amsdqyMk#|xtPj}{zCWM09{Dl?FI!r5FVv*C7T#$ccO`#ZXnG^&~% zX2v9*KiG(GNG)b=10AQyek>!oF{|y(r!diW-70p0UHU}WI8Ed-fQK)V$ zLX&FNM>P^AjHgGTx{U};imeB?B}}9$3f1kx(4@BYV8w(t=A z>L|-;7z)*GKMhB2f?_g7Z9hO zX+%!*T2;b~17QY6TGeVBX1tJ`Az{?9tTiz-dHvKT`V6YICbWAuunTwG#$3*{K%vLX}LWMW+!w&8_@%GyzR3s$^xDInmfwPeYEnc0zT&a)bNxUNm~OqKi^W-hcI#<|KlAZW8ByE_ti zE<)ulw(_uRNh#SR%v@&eKxRtGe#|Ui7lB@7&A^<@DJ!gYIx~5Rmb=FKVtSd(OPI+U z6SW0+J=65plYFu~aePta$_<{in$5}OhHZaLuXMKiIN;Xj?pE0*)cl78QYbBPz zWWSobobjhG!3i|P%9>E7X!8Q**1``9bFa4=t`2im$r;R;2>aZdtS1nAy{PMHvSc(f zWg*^TRO#+a{)3 zBoW8P8f7(@gc!YRHKcA%e(77|Vj{el&->+%xv6#NuJsQLazC+FVFOz>#K~P-5ZZoc zJ&~1ao7A;Up_yx6cFGB7e`pc4f5eU=xzVJqeNM9-7?|Ah_D3xfU6bW3VONrYA<=eK z>`FLm|5cstYKPFQs-0Qqf0!lrcY0Xhbo(nTyZ@>;snb`7wteg~(*K98DtSCK>u+B- z_!MSI-TE}N9cmB9OvP>oqbniM^yOPjt#3e<+_84v#s8y9Rnjmtn{2<^|KGK#k|CkR zEPFAwQ~zp@0N$ZVv-Ejr?|i!$)9}BdB3;lSe<-lcE4JS_)yRal$#MT8D3yDWefx<2 z)k0G6v(F4%+F(z>sc>qSSU{C@3vF+(f0+EgY?FpzPFUa;d(lm)1!NdR=>BdEZMWIH zBbV$*!ZykC7sCQO?TwfGUj5ryaf5QcIPtOOY}F?RLN6efkSqGZ0kz6EWs2&!#+xuJ= z?AJ9}NPoRSD#^i}GP$vtca3f5r>u{92P{#cz`N^cI~7KGldYxTZ*WS{6;*N;bDeCg zwB?)~SaR6Ua0f7xnY%V)LdtRGqxF=`%b0n^tvD|#J8y5tV+l=@O73AM@8RZcvp&CpGu4(flisTm7bme)nOp2UExBch zpf(#wGY<~t)^$c9D#>O^jV=w$@}9QaV2(&O3mY{KZVzm8n>h2p-Ba4ClIH`nytnL9 zTm~hZB{}#L&2H-g2U|HWUY}}~M_A>oQa&RHd#&?H<^PJ;2OL_Mrc~@+ray`xX51-t{&XZX6Zd-H+pEqR7Ribyps|-jK>4!hF`4inp2; z;I+HqzvxmzwOSQ|Jp<4i!fHykFlYUr@L_?3P-XMletuQM zntSg|Weu4fvWEOR6>G+#r}B^vSi=I&JQxaVCV&|ekqdTA@bLZ?!qV zg*B3+T0I(qWQ{go%xX&BWR79Y*KY(D&#T#xD*2h2hBbej#3=*E@X|${SsqJhz?w;K zEA6AMTa`2mGe_Fx4x%B}WE$42Ig1vCH9tRDruf`2bG*Ik%TpD+u<$7s=mUd>s4K{O5Kq zRf;IMQM|~uRQ~f*v1!$aRs29PY+l$pJ3#E>sc*sN#TQx!h+8~14WD0rsX?0ni58bm zL8+I|s2m_!#lt>FsaIa>6Cj1X#?P3c@{itidVqAO@WCcbTs`>%lziV>0hf3azv<)Y zNXM)Sg}ARxH}NRs+S34~TTZ(W>YaBjpo-R6bg`2R0x z0!W=Xbs}z59YQIKLCt@|ayPM7RqMkLd&^+nEyz)|eh)L=2{L58s+B)7sO7yNgC!DM zZB?s7X!1ddiP*^+T5AMN_z|M~W5&eXb!~hBb9mP^|MT5ZrC27p5|uL^H~Vthk}-|9 z(6-KA4D0uAtigYonRM@vo;Bv~K>m%M|Ko|)!7Vt+(>-kb2@Uvf^!#7iv^bT)KQvg! zF+4f+a{RlIyw_#>T2FAaZEN=s<6*ygY*m6=14FOF>yZemzm+`?#&xXQZsUFSX2WR7 z4P$;o>%>_6ZUiH09v{UEq+4Hsj3(B^odiua61PO~RGdX(?w@cdljF#Nk#*ezN;jkK zZGhucW1_ar8-rIEAz358rPY)F^33mH>Hm2ur)Pb{F2AQm8$Q_4vm5h!S==u0QzAVZ zR7CnrtG48)J59^YK)SDWDfYX4fsyKWvq(Q{N(?WhHW1&Do!{Te!KQSkfyQ9X%RkF{ zVmVGG15M#6IKX;k5q{`lpo&?523j|!;YZ5`8V`Qw53(-6&H9Hm)a}O6X!-T(z=v5S zD2-^zd8fKP$eg?2eEukF2I3Ir^n0B-Jbm*gagfB`+lLDE_Nw2BFn@9)pV2k>x#+Pj ze{Le5Vbj|~-sV;PTF|KfQZzp`G&1DwHz2HFdYC5;sBW{FCA=@S{!a2*XE(c&+3P2v z*16V)TQpsRE~swzGq(|kN0B&WFu1YcJqbo4bLiZhz25xv*Jb zeTNAy)uuCT&axU_i2RGKPCJtFndMbyJ{ZSi%w2*RB(o({-UTuA%%mOv2Ed>vj&V+9 zaav`PH##dmkZF>}q$e;<#+dY6rb!o*UcofEV$xSL%^vZOO+A2PoSE^h5K;Fjs`nzw zF;Ux2!g)wf-24};o-gopc*oEmGkXCt^WV2tFH^xY>)i^P;Kn2y0L_$woO5q?no4+~@U z%jkDAQYSNUE@J|z!~hm3^RC5crQ?H;w9Isq?ueuP_a8E! z&7|V3HUxNq7v``A}uO=2?97ixXouOvUq;F2V|_J+IG$*Hk>O&wSPe|B~=_ zf)(TkC>m80@D1c?Ff2I3YI-w@74)#Oii~TRPUmByEa+*?Xl2$V$8y#OjX&n$bJDu; zF4A}}Y5Wf6OP!XRgtvM;zzf>J0m)IV-X^#k4ivNxKr=-(|AATjT2?_POWvX5$+R}i z`V^;qL09WW#2Fuh^gyeE`xheKgT7l&D@;E_8p^%!6kW!`qteHRAlRlz!BSZ4|MsE~=+_#+ zfz|^W)f{(NP~if08PAsq)MKXz=j)DDv_$cw;Q4 zma2kRZpPVa(zDJ(NM9YjEC3p8>Wvaduc;pZ!zWBSR~5Xud9qUH=tj;tZ>}nMs}|ff z0RQP+@b&>Xs)3yOEAVJwJwAHUaV+EiQ^rJ@80?OR(vbXFCtbT^yC{+;=3t(|&cg2a z4o>reUpR^3m92KiPr$u`Uv)Ce?%A#-l9`sCWU}p^i@^MXLhD(KoLyYm?w!5`>0;}3 zOq_fW5Ifyy&%ZdhH7sr`?BYVZ=U5C;L2WY^jk9~^vbS|Co}PB`M7!s2^q`@|t&&|l z#jen6BR2Or?~?1g=w=STtzGa8eaiVL0`&z>#5qq~2K5cjvpIkDg!&C(E1GJ_Gi;{w zx|!L`?Ya%;;tXpTPI;0h^z!O3bGF52es!kyQeR%*ON%3<+d}IR>_bzEzY=CHwl2#K zGLwscON&y>BLyq0FB+P8SI>PVnOIz`mv4k;tF7I>xfC$Ib6>7X>eFIgSCqcg+Jv)F zE*4CL`&xJOK*n0D!B#WFmyDzNfGR-OTQ|+X54t!Mrb6AD6}0#ZXMVx;R&jg$5UH$1 ztD9+&wip(hF^5Z6f^Fsl%;KV6uni}L&Qtwf4AI-UEzzC74)v-LvZ@u_X)UgcT?dfV zY-~ihGbmz?N1}S7iK9`M+X@(A>FIh%5kP+4eH0G|7x}f66+E|^VE`OdD6*%hhq4bzYyk&@n8lY+) zpNfm|pK*>?ty$wBb_iAL7h!kB*P-)vWQ}e}RBiB7yAZN##IVv;ZCGJv2)Q*16`)3g z;Ikh0p1c+9wJ^Uo^>h+Etd%SP1}?~MzPXwD9JShY4^CZDtODwx;ftB0M#=&y`! z+gA9wI1`rp3lH93kjnp%x&$NzkECD>?Zb#(OeEeiH4Q-}VDojF&*k7fhSeGmZVCPA zd$H@R)@DWA;fv#CYt6ys=duX{k;EZyH!A9JvxEh;LCM@@29=yvTl|PHRRG5NC zQZTv`fniK!)LjofP9S?Anq6qYox*#prp+(~7v67Km*JWeIL-v;4H!xD4xFDr&~m5n z;FUru|2yVO1*y12n`B%yYd~lPmcYUT7C+#^U6O5iJfHOcMdhCxa*mv3ZMY3~Pg|#B zY52Dd4Z(E!NOgdUvl~%&1DuJ8jJorI#0g~o0jj#1Kih@D68ar>jxT z$cZx-;hDdg6Bj9a@YPQfE7 z82wtrMny*5bQFyf$Zm*P@52AmuSVXe-hf|;(XS@nP~N{&LwPn>Lt~ip?4d{ToV+uX zKP7Ng_C2tzi=B^K*wm}E2m2}H?(YYz}UcjdwB4XONFn9stgcq9eG zv*@?ZMYSc~(kpTODz!Kt1~p$$AGfx3&7-8|@lx||%$NRHZZe)mn`9i<76oviu(j76 z9QgFxBiAp#6defvv($e$Dqly#Tu;;hNC=qZ$m17A9X32f=5y?wlxEWF_Cy54fHsH>{Zw~|F{9o zRgYMe+T(4d)uU!3r7H2RTlJX5YkOYu&4xSG;}%O`V^`@sCeutZtJ1XfFitng%Fbw5 z=~3OH)a6WA?s^`)jgZQpFZpOV6^~eSCcyA3kOsTyd(=H9-cv^1n^87Sb<~T{j$m8o z7G2<+eJ7TuWkYuiM)gAv;!L%Mrr|8GhhEo-)6%H#VEYwzPHxdk=j_d$X*=*5+P3Ts zTb2C=ZY-~>2(@UfGy1WfSPQRo`1(NNmNn*0%&kT1oIbeFm5r#S#++U)y}J!A#}OXb$0=|#u-=`B9CJ?QFN`tpE{bl@9hWVI_JyAVMSw3qSB&`PJCDb zDjor7lk;JZ1T-1Dk)rDzOwOTGB`%;FoT_Jr(CFrD@FwTM8i1rTqpQ{jaMzk;RYZ(ojzSc!)18<(?48#vU1#`dV z!TSMH`Oi?70ko2F{05zaYA_IolX#rOiEo9#$Il>RBJmL#)Db6;ebGF;`*a)%7VR}` z*yr$@9%jUZ4F{c0pqyrdrP=U|(~G^rse!GAX2T)pWw>WLDr`9H3~e7G!iHy^o0bH~ z7-7Q^=k=R{ifqk>mz{D0JBM1&1*IoHA_nGJ6{o3M{E^#~h|IeZq^Ai{=E9liwKAi{>v zoZd}C1i?{7-#C3DAtG$}*7@*)5D_+f=j>P$upzx#FT744?mGuD?F%jPKoyP}hI$PT z-dafIzsG!9m%)#h#no7ACN89l4mckeIWo!W zYqiBpRP>^AVoZqa00)ZRb^cfvB1Jsm-gho63=w`vx9CHMuZuDDyoviNMISqbeGLL` zvWGE|QTG~jCr%)nYthk$XuIfy;pQ(+@$Esd^i1`)a{)-GX%Nxe{KpxCK5NL<+&t-Q z#m>SEjc`-B8)k)waMN+>E>Y33UJo zH`Cmui78HVvz!~pRkLwQW~vN#Ut-P?Zf3gIR0?f`n_2FNyi{(McVEV^nR%U=$W3Wgqxc%TF!WE z9fg}sufruAq5%#T^WdEhsr*IEH{49d`I*@iJmBW<&i?aJZv|u~CUJuZH?!TQJa<@6UrV@I$!&va!yv-V%I?uoAtKz&b&J?5mI61~LwxHP zGU_%$cj8pDAAx_@f(lkq6IZXIOLbhjpKKp<5#+C2;I85`l|+3tqRLPWSZ#*H^i;bsX&%lUgD zJmzv5L6saeaFgV+yn~R+&!KL(nT*#diwE3n?smr3E1ty7mTnIi3u3t0(Y=0chzK`3 zyWQJ`h;Z{PcXd2Ogqs81j%S64aC5NxDadAO7H$r8KgGZZ0zR^bF_BUCIr=~#d&pv? zUY&t%6-_hTobDb72TyZzu3N4N!Y5-M)$`^&cNu0D4H<6Eceh^|23h9K^W2TCLPWT^ zz-@{Rn;sg?&4up4aJ4pT`V#l;i9y|ln@ipHXCxru<}&x|%mgIdT<%_pIVFXgE8Hqg z0cj=*H&?nV$owR3u5uUPhKfOin-{yc4Nv9fYWKn`LL1@cdiVQfAtKzo+PxKvpQ%T< zd5yb;ozrazH?MR5*$^Va%?<9(njs?G+~|(GCWV_XW3-&>vGNNy&z_76H;fv%If@5w zJf!mPW4_^LGX8W~Jm6-jTfQ7VTgWQRygA!_6oD7SaC4D+{tY1_++6IAx+p}1o0qz8 zgGi>7aPxBa-AhA6xVhG?h}q592sf{C+x9UCxXB*IMB@4n9>ociFOO}z70v!_3I6?t zUAa}X#ZYvs8|@#&OjGm@_Xb$#p|7SX`XBepa{?%)m-ai|ixVrGQ1mXhcE6ye(L&L? z-6`7wL{s!0w_HY0k)h~r_c+cO!!*6LKj?l|Jpl6i-8h~-h^|GqXvrp!-MBytyTVD z>V~4p__<~AfTG*o-sP3zD{}&h?sSKt+kzO1?s6~0S!WQT=>6`qnC%TB6g}Xc#1v}~ zq3DzD+1O7QL@4^S`;8YOLeXd3*d~L3qU<3a*n-6OFVUSi)$D7R_%JdKsZhr3WDhLqG%`e>A zn}doBH@|ata;lQL&Gh-b+oECu5^f%M-#aq_2{(Um&%`2Q3TkftJ1v0!p%%>^xnc`E!?a%6q_-O5V&~*58h@-M1g;pQLigmXh1;pSg%vs*$$ zxcQI!eyb1>ZYuB4RR#ec*+YD>6cX>hgTryE*^ROG@U_@hQMRYIojKl(^Mhb%ZsvQN z8PGIXSy`H!1>Vg#HBz`))hitnl+)YJYTjEzLPWS(=+(Y5f%-aoXFx(zpLdjq2Z zWVl(!+tVWf2{%vocAcGogqwA}%_O4Kr8GC|d)H!ONakh(?@cE}gqsb$7MF&IaI=xO z1%s5l?QHB-;02iGuW+-C*A&4uh;Xy5cgy7=BHV1}ElAjaK&q&Nw;uy(N(nbRdcDHa zb+mA^lXs1k!p%D|S`Pn^)cK$)8k`|I((X&gS=gffXJAeHGQym zWuE{tYx)rH!o(CM^X5?RAI#fkAcUL4yaKEUrf#{FG~8>;-J8^HxH-oA2u>M_={0?< zw>`8{V}zUIyn*3fSd9^Gj`v!u2@7g&p5xWvRH`{8+s=vJMg-0v!p%t@|G#Vy;pSxT zk1na)Jl9*BSQLbtbG;ZyVoC`&=XoP*hlp@T0MLmT1dLhl?#QhO-e zJl`wA%$~HS_rPd5S%`^n^FQbiM-AM3l?U%FNafd|Zn&9@w<(JU-0bgVRY4~id9&>t z;2mFY5W~%p-qkfiMAr1t-XGgTM7TN4D>pnugqt(G>6lxk=DwD2v(%fF6(YjT*y8kSh#tEmy7+sfiyR7^3Dwx0dv#an}?tnE(kYo@!n_~BErpEy`~KjIL#M*)7!IV zg*L*?JH1D-?j&>bE^lr35D{+P?fE>VbUnh&d%fZ-Lqxc_%i{;{jg4^gK5yj46mEWk z(Q@v>X(!zLYY<*Uh*1MKOL_3-Ln{Ai<{NG%<8PM518!d8y@GM)Q^o-|FY^v#g%`wd z^BS)`RyBhNH?Q+{Vk8VA+}!5f(KB|iQZnB4X zH9jQXe~9kHsb;&d7$@`QV}_f1y|yJmurxQH@)~3S5pJ4!^J#Bdn*cK0Jm?kS+%Q3w zdGi^MPj47RxOvE1zaT&~HxGODNFJ%%%$qNI4|EG4!_Akx2kDbonR)YN?;(s}00}o= z@%Bs#AWABEJ zVJVq6Kk?=z>Je@p^S({k2sc0TmLckQ6~tW=H_4Cm)L)68kl+WZ||3B0c5!OkJo}^(E}>nJn7xvB}9aq z`0Q#(49!i;pD`z>$Z#{_*PaqUhMQ6UmMsZL=FOOYs6qk~ZpQs9xTvO~H~62G{If9K z{~$ck^t@Tl=ffMuP2pySe+@#J%*{;y`3k@xLN2gTM^m_H>>-zd!}$R52NKAy8_+fZO-qZaMZxf9Xxn|sn~)V&`b#R-(Z5jzYwlHCQg?!66e7S;3h zB~g9lcQIP_(6AzkYyd zinj7gdIS|2injMZ;qs@Mrnj9P{M8K-kWjRv|Iir;NGRILe;6l73Prp4f8zW%^pokc ztA7K}H+?1vMZ5XWtPT;GKD+y`&rGFg5C6Vip^Z>c^*)-iGMc+RS-kbGyHBdLPVy|wtjvjM1-Qf{reCsQ%Wd$ zrr$Gx2u1t(>o$irLeaDQzi@&`DNvL>jETheztEjHf$R^kuH<4XXcbK~+??dEYZ(Mo zb907&9#@m?lDWCm zzqEXa2sfAc4Z*48rG2@d*DkaXZeH$xx-mqAn^*WlOG8Asxz=w?w`U`~)@b48Rer(X z5D{*!^JntJ*EYh<_5Pn{r*Ly5M$0M25C}I97UIR6Ojz!xJa}J2;{Dgu4L6hVer551 zn^XMeSVw+gwwXSs`9(VnVz@caZ-NO`Y|Qj|p3jdZ8AQ0b(tn_DhzK_?_D?Jd5#i<< zzYdsSN(nbF^|#$<5O9+{#HZmP@&0dk6sKB#1E$YtB>R%<@G*5n-zvJ%Q1m9hE%J5D zG)1@hDx^_mP0`!@!Q)^g%-clzhv5+ItQxBD+)X)+WY zcXBhXZ13?qab1+USDrk1a-2K^a<6~>fB=05sJ?dJX_g1cg4h2@qjUb4}Fa{*>(jl&OjOga5&~K{>t7|L8w< zafk>}fATZKt7T2ppZ#AD!xWJAK^vk)`5 zP;~~j2OK?6wKWf32T0{##e756WSp-@Ou+-He(kTnT`4}78Bq0G|Ki~WF;xAqf4ED|B6~f^j@@OBo`Y2Jq((o?IVwF1|l3a>wSmF@P+|o_M#mlIoKtc;giX< zQ{?txAtD^@92tt?HFe7^&@Pck^PnPIPo}*h?=KA?=Rm;G-jUI#2k5?U0*>~Hj9U|+ zs-x!UnUUwR1FUOB&C!05`{x4F+>+_Ef8>X$AtD?d5V>JWh{$w0C~^XKIg+Q-A&~|Z zLL1@exX9%5Lqs?_KGK<|v~Ei{Iw5jx!bUhcG4f$z@)V9viu9`!mJ*Jh8`<6_g`>SO zYEB*oOgK6nD=|k89DR=m?-NMnH=}MinvC--Nx=h-o)P&G?taH?Go7}LoVCgzhNImg z3lSQzG1F;}$cy!UDJ2{o9qEW}8$>udCen0)LBLV=5D#WU zM%^#rQJiY|I=k_zaktOy*dTn?0&Y&YY&i^ycV`UD#68kI^6Wo;273il57CN07wv+h z#Hq`bN&SR6tjy+#F`*{b_E>`LHzl;x;!O*c`B7Ld& zDt=hb1io|4gU4Sx1x2Hg_z3{Q=fzwfxp=Z z$qEU}w8==S?4H=3cyBWV*ITEJ9XnMyx0}cLRr<+qlwv_A0wW1R1$2}p(Aj=Gc!MF8 zUyVAg%ivAR;;OX{!VT8wqp;SMFbZrYCK8)&l!_CWd_K$Xc|SP{gw&LqArn!!1F2I) zfv{;I=CZ`p!w_Tfw+<25s-rLiNtN9XbJ)&5Qlr2(K9CCR7YjP&U?fp^@=3hlfeFhU z%!4-)Qu#HhnKQd71;CZcdJ zQm2RlVbem)Wr?XTLQKNnE=1r-9fi3_Dtqi^e4y|c>wFKV!+7O z;WM)+;Z#EbiO8paBd|>1bp||m(;@NwXX>;rgZD0r2Pen-4}tQg4hDp+;Qa@XQFjgs z#i>rdip5vIk{l31YRYcNL_iK8b&7xx)?T7&mYDhh!~*=ij9`4M1F{lHWzXJ%Z@vDJ z91wkq1pzT9oCJiGIE_(20#fU1oNG*2?gAdX3n7)?le!5=GCry-9tPy%PfaIYcIMvCUS^VVw5%6agV@TEG{G zk(gTHHl^->(ip+$tOK$KNo8+C#%CaZf+1!}H4M=y%@9`NoC6^NDSjWb4-dBU`)^fImG(xOK|I|@2{w{=7co)VlzHR(($yXv60)p16hc+(=i=W zWUU=~|A-H{XBRNLn{9%=CkHhywpGU%{sT#2>vMoO(i8E=@j zOjC4KHEv3S^?$ zwVwF$y=0C_xys#c~HhFKp7qJgK&Wf%N@XjHw;qw z&8gEm6*pU;d#oD~Ayb0xu}=K39Wv^kjiPa?lNYm+6W^k_a3e@aP1y{Y;OSjRo#MnL ztbIb&EHU*thzaHFTm24_+@w=>JgiNyO4P%2Jf z@=TWBb3A#(38^VpLncQ27Nkxw;)G2LF_$H#?t>VNzjYYxt$M`ABdP2G|3U5{G-gJe zhX20gON@B(B_B7(=8})qIHyBMum<4@VJH)pJDLY?0;KXgQ8y!=goh(87$VR~Mx36+ zT*|0B1tsHDvm4!sA0mH}I^t%N9*nq7h9j<%;fU+xDMx%JT5-OklN|BBk1NI2(23?e zcx@n+?^8D;o{U#1izi0B&T}ZDD`98YOiX0d?SxWs0+YwG{F7J`66ZJ}HDwiKV#L=W zb&3%uY+Aq@F_4(b7qNE7-!6>ylX}DlA*t*xcj1kZU!pO4aymcwL_1 zSBu76N}T`9)9OW3=~Yb7sCzX5dTiIb8#e%ONgObHBXV><7bp68VWOW)68&77=;tz4 z<2Vq~&v8FvX=4J9qw?Ujg;ahXb;Il=JY=?DVPEJ8F3BPB{3lArsb{rbmPQh%#+D%l=5>qdQD8%2( zVD-nE*$t3XcEP=PGsHJ&%rKjV|G&&mtX{KOjdKEJC0O-wRa*oE!K%Z9*APP1gtE+u|+hLUlrCXerw#+@uky#IlDS{+4|Ud05p|3LZ~-eNKn^<<>~ zf9ag)+%i_!4Cz-HZZx;?;8YJHTLCDZK2@mNkSl9u25_2i>)(Vu5Q_X%0 z+S%BnB`?kFSrVOfGNiLkhIH1+Q_{H->UK6lNGIC;pcGp}C*J45I|ixzd#M{bC*x0+ z#S?V?1K}{0urq8XCK4|df*vO@IeH(AKEgbZpfe#gr2%Au&aII;1)T|NH&Hc9OdSsK zJt{s9D%)e^I{PmqRrdSHxak1QlkUp#E-Px4`%x_D+zcU6==hgXEP*H-*2q3fWZY$YZVKRQOCIDzcq z2XI>l7ssx%!tCiU3wDU!3GmB_=ZJz63o^AbaF)%zAQ1I1x6zb5atv z*I?vSfsy!j`bW5h&V=QTrM#Vse=!!`Fo9K1NB@}DO}>r}ki~ZDcX{ERK6y>bP0!k=)cq*nI4B^F&PO;|8V>d1!Rrr+{SS3om%$sB z#RC?8@gZri>!6=(B_TAbRG1Jt>Eb&$f)~0WSnaD1rOnMMYva$JiNjA!2$ajMow!O ziElf9#v93*u-xT5c&j0mKY+R!-ei1YSv)bke?E#Lx)M6XX7Iv2$f$b-O2w(#MGs?h z1Rf-Y*SKbeSEuywu16{7V>ZYjo`Ly~rQv8D9=wK-nE#k>hBp~6N1J3k2;vuYenXC~ zgTAqqm`Ln@P$*6ydq1?2Z&QP4cD(5fOKapiOCiL!UASgp3HWx92k$vZsf5n4nV86^`wH|p0sGuXlsXgll@dWTu9+a}ln&w>DB#pa0de$3>=;=Z zj?U!4n+K_UepVw0Rx&=YEFK2&Z_ZD;4*JPfa4Q-TFJ42TIMr+yjQIKa)FA4ulae4V zg{AWp+u#5faVaE+@aR1cUKXVC-(kK9Vlw_+Sv(QME8jp7T?rjxGcl3aH=)ir0sAg! zORzCX1kt!=f~ZqEhfwej7!Ehmc_#$uKNKcbRG1Q zt>9T`NZkK}j8o0-h1q@H_Y7iUxeK;hT)>`!krRcH_;xA6%@XjfKM&pzNaYt&H_Kfz z-mEMh1aYPHJm3yQ}H*dDCPXjmKokxf5jZ77q&Ba z@H#>&Kb<F_R$?Nf?yJz_1nhowE476)b)nyeskNe8863iG4V&SsIbpwVRPF8 z`OadtLEkRIl_^WWH<>fM!$>Iq8bY)#gYPJd2UE^t*6L?qtt+8(Y$hfW|7eFECtwdf zfTv0^AD(*SbrdE}C76h7b6&&EUM6s}mj`bGr1Be5Hyf{Hyi-{`2;1JXP_3zhp0Smf zNZkKLp*Vr;pP)T)gse=2E#M^sF%$XD{cM9_d*XyrECJts=fOJ(sr)0-(x9K|+(Us64HWL#Wb+c+Wb{Is%o!nw6_Nhij1j?KhGM%@l56(?Xn0`1~oP`8=*x+3i? zVx=6$(=AKU0?zE`!8-`4{Pon$#FvcURu&H^c1fi_P(s&1U)V}aB>uq!Jx;)$jY;nU z%tVQaFW3rjDtj3wPDPlAXPMvNzi3S0@eCfk3n7(XkGh%olJWLsaaDV$Kr-=t@+nH` zdcukCGjKhqdkyP`+jIf127<)%AHd>TT}xHFip$ih@HH_9njYwF*IPQJm%FP`%J~FB z`m^gLFqjv)xOc&W*9cPie=^_9b;)=JZIbaI(yx`nx@qd5n`{ODih{)b4-|@1wf8~W zg$SN{nmGfx&Jwmj4y?vHPJ4Lv6c66BkhuRrJ-Gjogx_8k4?NpDL?SA6&>Oab`yY_F z{{b1NnmrOXwm&;c4kVt43(jQTO?wSSP8Ht$rf=nb!u<~>aO;8xZ!#qAe^58~-jeaI zW%1x-xxw0n*~3&qhu946e?a2?2TH}MX8#K9($`a+3(jOVHwXF79yUVfnqWv-0?z%- zgXiGXR{o3BjdRKPM`iJZb5En2rV={DW^m&JGU~=qXPj#Gwb0glMCTG)=^%349A_Zk z83ZBDbpeT40?ysQgSQz{`O~SJt#mTJv@9Mtx6(Q;bD$X0AvO~eiHFUh#|dON!S(IM zFQz&dM2^kf2_xq?ggCeGFrtSNaIPf}UOPzTN2wdz&_Zpn_X$!5DH@dkrSeX)qDb{>GU}dw6yM58iS}51=hlycr>%M5ShPp~@jhO*@r@!-{gRQ}J*Hxpbk9-&P#9)$O`_rE}nu7kd@ zm6*t=+Yp7~1nk?PximCG-3)1G3hSgVGch;P0>0eCgSQ(}`OB%Bp-#rHDT@cbT+#rO zgsFqRu$7p|sQW1NI01Vs=0oSx7ibLQqCc^%uXC)Nm9yk%kkh~`55oJJ_YO+vI_Mi)!M~v)qiz*c z8K+ud$Q}5XPKDhMK<2!Nk1^Eg*&KN>w+-ZsoYi>sQk~vJa$eqMt9S=dmrlk!+30Md zB`vW1X&1xo*_<9jfi~G$4{DV&pq4D9K_eFijSI3so2j$rshU%-1zKV8Ah?!u{Qz6l zoOa0$m>s**QZ=XVVxBdLdH-pTycv9IEa#)u$eZ~*^Ze78H{u?pYL>o7;PQn8F6sv3 zS>F-3AwuBc`(QEqB!SG!39O*SoUG>o9H>uVQbSZaw>p854G8?eR^~M&upb^-IZamr znBRp!ziSEnNQ?6Z6PVMFz#Ze1s`ysrMrf;L9@O*fN2!0g7Wx8v2@Mx7qTzL&@!^2F zR|1I1?;t9Sy8v+M>`IVU=?Wg~(rbBeOLy=PEq$1WtkNSq6qdfrL&wtZcvwD5F$&6> zRZ))itXgt(XSJ4Nbk>=2%$hY;j)k-4%CTeV#XRmR^F@@SR5$b((_ zp`fKdYS67LU?m>hQvUJ>uARX{R_U2M6wdCB=*@Wn{kG-ZGDL(>-(w3Bd zX&)ZcoWDllFeh^~Ws%6{B72G)C9+iH8WzZ`jdhk!SICDBQ2qv@bG{x!sU}dC7g;2- znaHjphlrdka-qmeL|!lQKO!F!`Mk*YM1Cjoq{ysuSbueqO+|JQIauT*%FN zlZ)1zZPQqSAE2;ueve@`tnoz}PL1KW;cRa3Il5wxcu6TqM(bug-v)5K;5qQQlV+-D zee)c6-G*ZuD;CIWh60>#SP*l~SRTAdkg8s9NZO^s^^+maBCH0_+CoO%=_nGXnlp?( zHD8Rh{VjwfqfNC>&4Nd<#itVUC^md*qF5mB5CnZl<(e&zkYg^8VY^X(i z0y*cK)=-Nd!fcXr%T%Z}`5W+@!eXdRZKXWFufZAH>y|o9_HcfGtHRdkleC|&M(C%rv8l@-g@1gq2 z0;nBCt=kZ4$47|XHV0}aK`YIM+F8`?8=!WR=I`4CwFk#L=e)sCdrA|(`%rs{?Z=r= z``w4;?VMNf-WnvM>1SpvUk11@5&YX3W715~B=36&j!8{qAo%ro@R~rXdOjrWQeliq z0>WobSdfmHvp?#x+L*|w+Y*^^0y)*Tp!osPgL7_&I*|8ebLQ5CI!HP*83UC*SkwbI zLmevWy&TUGGID8)pw7A!HQL`oFu6Q^QpQKi0Z%2O`&FW7l6MG#{rVe6bilzSp5?_L z!GAyv$Ci|V(XRxAezD*@{7Jv6fp4r9kM=-UQ!CMKb>P>;9T`G)`NI;A>tHCXFNQ?rC#Hr@|l8@%vT#vM!hV3tt z>3*vWZl3(sb8&vK*LQA2>WquPEj-K(pIRsu$omw6KCvJgFVBN_8lN-7YT@7uo^sF1c@j?#;NA~yb#TG6P8>&80x?g=zq?C=RzIvEDY=hZz#p2 z>krH5dpqFa3Ex^Pn&d@bLf>c#Cz|o#wT4vnszNp#+qw)4-x3i0VKsQd9TNBdP$W(@ zXJ|(>cQ%{L*@T(QpFR>z7{KR-AT>$57tL5z5vj>~IMXvm zVV>~M)v2tE+U)fdoyyJ_j)~Tvs>@Z*_-_GH({w67{p&%vi-TtKzJXvT**rQ~nFp^b zq{??7X_pEYBtz^NtHDD9kWse=io~hr)W&S=&nrRN-T}d6)SsQ3cB@EReSxfqZoeZ^gE22jiKyBZT>W(>3yG*278S7lE=Pasm zHr%%h)qVq@4wCDk)sG6WZ|w~l?W!Z^rIi(f5g!9ZigUG-p3JyIL3qb z6{O1F4@tXJxF8wA0>^^vaJay++L%j;=l>w%R4W|EtZwDp7sFK0nCoFqxkXT$$>NvA z-W{pSux3zwt|Qe&SkPk652gA;cc`y5r}{nB*ZWZIie)bL#(1bTafP6wqwKN&1>#PE zthxw-;qX2|tVO7rd$6^Oj=YRYgt2G<(Z;&4>By)XJzq52HSnt#s3QV_Sk;piT2ip%WIB-^|QM)&l&f1_s0 z!XppQ0qO(dpFU4R6?)BMX!wo2#!VQjoP30)Lhai*&-H-I73y^5Y>*CqS8n}k8>m^8 zaHFxE&}=aF1x-E~{ti1n1~UF9Pr`e~E7eqQ^dfceHjq5NwIJtPoB+)VL_G^WRsZQK z6qrxdt^V!V{2lqSp~L24=!f2kZd*gUgJ1U0(?{aEOsN5PA)!73m0j!ATzu@?u~e_s z_)a=P@7gmh^r{wmU^jH0S^&!?M8GtsQz?#3b;@;|efXkdE1iluz4DOPUZ>I>RRyUI zI+f+@XDuCdD%)wtS~}@eW#+YUZJzj2 z$9a{h?mBh4Q>_hBJ$0(Ca~MNn_tvR;&c!)MovBmxo#FG5>Zel;oYO8rYKTrXbVh^H z_E4Q_-85+;Jjm{r!)()r5u(%kj%2M>Nhrnw84OVxf4+N{>7(e38cZH!}g z7D7+m2XPet2UN!6d`wv0Cp`FHLaN9M)LAqYkEUR3Y%vURnF^Waeh-;W)t(4PZ|;X# z!^?9z;f(h3i7>>UbwH{>yWzTRfr=adV52mh3Co+qgTD|`MFvx6MX7i+1w&wpuy`^I zKZ`e%Y3>q~O{dCFUaHmbBHjOw)212L;X8@Yn<`Hub=ONCQ?66I-&Q_<$AeVVeT!{# zi09#~eH|w7f#od!9VArbIP+O;DjrS27@QR_wAn^Il)l#A=TusYb{;oF;pAZi{HOGZ z=Q_{chSbwK6?IN8M(UtWr8}>UN9q}!%5uhmD*hpz%68^%LF%whRdznX{UQHZoyvEf z0h|0II#uXAiV53)UZ-j}2i76=f=<W{>^v|LsaJKZN}Lmz zzx~&AA6hxHE=THhooZXY6DEO37mm2IyFN1B_z@kqi#s~g$|3b%QrRx<>Ri4Zsdqj@ zVC>@VP6y0s{=45wsz-(Q!B+n^r_LxGKKxt2p5q29}eAXUE40H|HZQT+rgjnr~{ zv{v{G0{dleF+bCphH>-1jw8b^9_;P}D#KX?lRz#&3>!OR`GrWR$bRY^p;SDYf^j%~ z*rdszrnw)XP&&sqUXdmJa&(nbketu7ZVn(`0D4Bfa%`0`lFUq0qN}O}IGt+6{m^!U zpm+HhR`z}}HPd1SsG5DC9+FuWO`PIut!(!kq{~~+NP3f%-K;s%6|BROz6qBzP^7*WSVr4!zHV ze+*Jp83w8M{mF1{GKBpYo99>QeU7QmsQ3&u{HNb}bSII`AO_hNGn?*_q`EYj8)V;%r$MFIY$TasWAn97ICopB2YefN5wHH9EkLX3CgPkXD!*NJ3Bi3Jp z)KHyr-F~o>VcU&$m4y(E3wiKYK&r@O>Z~XgkEUR3+J_;?3Yq3!0+~+L{vKkEtO$+u ziqJ%#w8}k%9BKGB#DQky1rPq8kSg*4brwyby}Z`)Hym8b!uU;h)&e0bZ2W3Qj>Hl%ei7QQj>Km+c|gx zQs?SaWvA*;q^9UpzVimdJyoX)oeisynxVs8!^vc7CY`g3>$uP1C^0y`37@lM!t(4m z4t^9;6?{wxy-0+U-%-uV2Vp#E3g?3v^YHjZAg#YvdwJfWU-?NUl zJv=Z#?81I?fwcPyONh2{3%lYRiMRL94v=W!vS~m%T!+O<+hi5qfxyQ*zK*fgNMYfk z*+4qo)+9hW7XCQ_NasBb17vyi0azyDT^^nnAj+zKh)~zvVMWTW{xkN%@oxD;LMyj= z2I3R%KJ=;(idMg|7*LN!RYEAMdM*MV?>P$trJYiR)%)N?i1*4Z389XKcVj({_x^fK z0PQN|yDH*++Jrvzu6_}Na^_$(VS-{6Hf;o`|JUUM$SOQz36Qfc2`jP-cVkZkVYYuqy(juzbhMfV8fHk#@g941{zq;Cw5TvG;26;Ma##5tq8K#7f4aDHs^V z%HnI_v5igJA$RNCTwUGZ`N zX@EH1jojx`duT!saDeX7? z2c29qsiRU-TufDsdzj^8_mg&c#$2UXiK&VuwL3MA(x~7Pw0G58UGTqdgxc~cliI8C z8;yG6A}j5h=iv0IjS4UbIwl)iHApd%<~WF|Mk^X!#ZkTS0qg|`TK*_@s>UE@Ew7EN zEoYt?^jtz(V;-~GkpSD*ToVM1rF7An)}&dJRod;7ae8v{v}#%3j)n1EkD_`3w4Jia zgBx)=q^Gy2ZS}{oE&0NUxb{TC?P$Q6__V!93a#3LKj#ToWfu+4Q{RjgVN(SruOi3jnCmL3sd}3HYvy(L(y_AoIwaoxt4mBRduVO zzZnxO8aRV)wN<%R_o4-G;Iy+4Bu2IJw-6lmT-ab}3wiKsL8>Y)B<)h++++w-k-o}L zb6HzVWSUzaCDRF{xt!`^BGcS1gbAd{t&KF~bkOo92#( zjEPKhJELeifr=kNd!NzIyvxE(m(05@BIsDX@hbBklkn@EqcZQc^c7}$_6Hl`=Pr|% zk=^bvx_n>I3-=Ma#c}Mj6SE-`miH?U{@;+8|EaUdR6Lr3fjTV87Ui-IbE4Y=0A9}k zndUmU^h>8|kB0X9b+|EAzKvS~U7B8vfn)}nn81TS1yV)Mq%OuOcr*oL^-&ncM5ei= z(9;RnhalcRA5~Ns>D~%mn#x8`n1QBV;K4r%sUi^bTs2qLJ6iUoSYa|yPw zK1e5@U4t9Ft4Sr9eH_fw#cYH{H|Gp7yPODfjhG+Lgt?Zcz71uC>cnBV|HTCEe=+ht zM~M4hwAn~Ho{@%;9!W$c#QiVWaRT-^H7u+5nJAsJUa0;A&`{kVOoZxLVhYubVhYu> z#T2UN(9{!9mrz}M6<(#zgmSkq^7ut7E3%xnPc;P(sR~A_B!P!m5ytc`6pGWdPpFBv zMfXM(Ip+)2E0JTUZW1O!b+ed4b&Hrn^#U=4>Q5+*`*hnPZjrBMH2@0bxvEhC*?gc58gpxw#*z$hlgm@`r;B)qTQ5sO}e2s2&hgs9qzcP(4Uf z$5EG1ZGy#y6@zLAMqXEhR-_(npK1yoQWcE!NCGcWLm1P&P$*8*eiv3_w4-va6RQ1? zHdL<{CPMWFF@@@lVhYup#1yKBY3e&jg#y?&%CcB7sD8}I`x2oQd6u?MH3bi;3PyS) zfv5Tq#`O0H<23E_umb%6X{nqeLiHDbhU%@tM5x{-rck|IOrd&*m_qeVntBqCkfb_s zmSwSGP~FPN+lkPMtfcKzO~FH|f{`9cL?w*r-6#|%V7Dp6`}}sJik!QJ>Q%@wRPPZc zLiJuTh3b7`3f23?6skvQ>P*xnRFC2#0xJg9j*Pr+2(8HRw0){6ct}++QYDF~gxF6} zC{DnB57yiVq56!N zLiJfOh3a!O^<>l~ROk1?>kybw?lwl=#R#p)D%w8P6g;FV7^#v3?oT0%>B~_lPSb9S zeeO^xs>pd!sP09Mq56_A5vnhXDO6t(Q>eZwrciy2rq1G?$x-cFj)Q^OKszz=x+BDm zdfGnK6g;FV80nEjRKl1(8HM5mZ2lc}z*tg!Q>dPTw4wTzFcGS6iz!s!5mTtXE2dC= zkEZ??$_mv%ms;`%T8!$a#JsN&;`~S3r<#I?R0Shdl88ze(?7zF6RcDNQ)hG0 zqX4>{fSWc<;CUWK-bo0pNCVnF)f7CWDj4aJ1ip5L5T`5@iqo_|fK{7!E^>YpssoTV zRDTjCLiJ}ch3YS23e|s$DO7)@sqZ2cQa!yru2m+K`xzte8-!Nm1=>E<6g;FV80nEj zR6?AxV8;pMPA;~ro|{lbPF&So-vOt8ppC|RID}>@As3B0@5a@w$b@pgV&wgR(2Bf5+b58MhXe#80oELq5LX%OIDy>hrPy01qKcd%L*P%KhCppY zpbI>Nz=wnJIuj<8JC~8iJGWM3IBlOm3LX*=j09LSew7GeOs_zpIL+M8VBOFNRpb;K z0%rg)1WF8nqild9@X}JtqB{tD!^ryyp%rB2=ToH z6pGW#{Q}m#?NCKdnIW(ifFaP(5O|Oca0Iqtpy&<)-!bxjL1;zZpzRY#!9xOqu~F6> zl`y9NfE_20JG-7`^%#ySa+(+d3V|8Lx}FMRS;lGR&WE-6TvU)Jd3 zabDNrW-Bw$R6j=EAcR(=4Q+8w!!yz_Hub$U#W1Faqfnft{V!N6@NFoSJG6>J5IoET81Cws6Z9D6-@+S zn=U|Ub8H)YJ(CILp1{a!kI;(LrY)t?@QgH!Z9XS$GK}diC={n@Uj=I!KC7wR5lsYO zoBSC=Y4h53mPHS=c?~1)2832*8*M3-hG(Q| zntTE4odA=K)mlEXjDR+vQQ{az|O@w{oU2L-!?3=Uf!R&HE&8%jI?9pTqRcY@GTyZX1q$a0R)~7F?KagR4|*!_htO>I_vwGP>NV~e)paEFEi+-k~{eLosIYbeIp?e8?h z_`0X~e}ZtjorKf?lhR4ADN?2Mb_Vo?d1_af_=1}AIh5fJ^zYa^P7J9*@_o0uiDrC; zgQHOEQUvVllZeqDK0uNdXT=fB&p<6WKOv0i4k#I?X+Hp~Vk8DC?`_k8cZfjiWs6ulv+~|k?xRe2?1ojg ziS{sNeCTJmREe@$UCSKyIq#DZt01VL+*2%ff~oA&bkvHo(x~o&Fs5HX7^i7Zf-JAc zaYfabsU6r-?J?Z&Us;kULQjBCM&DP-0#n`EPfM4d2*RG zRHcL$=Jz8c-|!L~tX>s{3}bo;Du~m}Z3i-6EQfQA3e|e_S{Q8}-(p!c7TaGf!CeI2 zn{iZ|_85m6GwtLM|4-C_miGoU$1cV7HCGw0S6Fbq{UDAo%`p7q9WGDwu*Vudz#xsyVq2HY?cKHQ6cMt{FnkMfQc3HH2)GJCcz% z9-$Q($b6Qmf={lBTW!}8Ix+_>&Q-Pd8H$cSY;7-RW{=ItT&SMGF_iqn%)6Lb9gWmz zZl8zMio+UazQxR+u0-a?>Mi(iF#Jq!7CDyxN)MT>O-fHso33`%*%z6zJ5&n{OzNDq zS3NhN+M#xhdO@LZLd|SjnJ1$>|NGyT#5n_F*OZfr>l=(eHQC1z>s`0SR&Nt$gRpSx+3gF4w=y2A>EZB%!SdB+*5^2U(D#xvMR>s?%lZwu;BK`-9 z*6tw3UwXEDCiR1jk?Njq08QjLG&)Wq@jONo3^ZWFEjHAj@~`? zySSXv$_tZDYT{a~MfcjrR;OoUGTE6py<(bE7?m)l|&TOr8#PIdn`bHe$SoM685(OfX!&z_FkFigA0OIv@!w#xZceB-g#{u-MkI}vzf zkWKj{BK~|I>KoKy2&BySS#CbmXyh?dt z63%yZTt}(ZbACCn)dqIJuRps{{UZ`_B5`&yCYf>8fm_1@aGIl3$HE`cYGz=zTr;}yRhuNS~crf}L;JhjP$a_OYJE0C}v=MWmbwkn>H zhOza=aE$4F2;(%n6k;dK;euXct-cQ>p_?NLvSop#Opv8}ZN&}i*?TyZ;X zUP5{aTOqrq_3^DDCX~CEk#`WG71>0aCDZYYG>pAx%~1(s`bOAs0`?uy+PkSTG7sh+t))hf*zD?FZ2A)ERj57j>tcd$!?AKwIT}k1vtkbqP}2 zOiDZDSc>v5_vEf3q|T7ubZ?8Y?9Jgxc*0a_b{}Nq9YbhEMlqip(3@0zZdDv# z|0CoUqw1Y+;fB8XKGln?%c{4Zd4m=sZ`Yx+^t{r0nb#JlgZwK7Pi7U;j#c_H@p0pU z?>!Tp5Ab^56E8)*`3G{aRhos^l&P145mPhgBk$U8p<%9v0dG05)oVwGB`B7EV*-j! zDJNUIzgoJ9bN+KdEo{e( zl-2zg?5Fv!&#o2dGJH8rgSRo6`EOIh;N+b2YbLsO(%wRRd?pnfO0x&zhmxWB7x;k5c97YWnets#tH*`(XaMo#e|=RSqn*m)H!<_}G06O3Wd_!6 zl&j2qikbOykomK-r%Gn4kC_=Ag3SNCi7;r?YMX&^Qd5T`1FPT8^kQZUYTJS?_s8H8 zRh{sWGqqW9F@8OV&@Vm(eue4=TzNQg%UsjnV_@}M7P{0?@7Jqz;dpuste%&KE_Kyy zka$pwRK>vRc~9ulK;4#G=@Nds*y{N)U9JX+g5%T-hc5mo%Vih_R?olbIO-BOW~pwa zm5x>~HNO+O(o%hg@#fm*sE!Rf!kNO$zaps6D(f16xb*x+vd2Qdw*o&Ih04{Y?BmeogESXIG6S8IE){$p*;k&|`$^hNUaD z4zjSy5749ANM7cu2~s?DY#_S1$EO)_Wm=> zoUi&VNiSJm&>1DWvdzV+8P}q_kN+l$qHHlw73>v#XR`7-p_f z2auUoatkw)jWC)U)SOY4fA7t7rTjW(^84}mXRFUFX?~=b&eS%p^b+O9pGxzvj=+SnyzDt$bdoXkM>9~M~sl=oz zMca*KZhd@xHUCo8Y-5;fm9J#R6!_=wRu5p3&4%yyRo+P^8}U`D2wNdPl=y3?S!>Gg zV{!4=uT~uh_G+_`vR_v3cj+;4iIso7`enj@siL=qo`}P(>eMFxrH1lSI`C`e`S+?f zvCO0j(}=rA=y6oF$5xZ-VZ=Qx^ms@m&Pew#;y#BSgYo=lK}&l_opcY=%B`VCH~UvC zM5(RNBW2wve>3zQXlE}>_YD^YtNhQv4cl_xC%DjWs>B(G=lyr(4sh z7^AmTGwfG^aHMbbCNq~$mlXW++oJS3OxG?59P&R@8z9rvR;qUG_R#km^*|!sH>GQ@ zg>G8D%a&TDnUlXmj|`h%drI|4=~{zsAb$W8lb^KT=dsIQ++{nf^eZ0_`sLd-aMk{! zI@8rPq1$nGcG>@MOP$K=!U7HLFE0Nt1yVZwLg?Gi?hyYUzE=5Pq1&nUj-mg>Eu~w> zcMrN>VUNH{m9pr{X6_mJ_NUud+yTbhg=hVbDy{N)q1!b3tyBM5n^n#?G@6R$+pBP# z`bT>Ntnvrw7GI3^mfLlE{*U%NGvxmcd<*K@ul%=}k?vO2S=mWJ3uoE~NB*xCQU-r$ zSYW3;375h@1R%{A?VT0+?y|q1_P=~nrs3wWz!mn2-RT8Hi4vIpeh~UzZ6|QxOC?h2 zo5DP+N6^)4?2FI&zY198T>{^N_4bcg$^U!hDa;oH1@iB(-@)PgzZa-H)|Fos7P!ZL zyo!jc&^LqmLRjDdyL%PwRTc;>tK5NLjCdZiPaX5WC{-Rtdo*N$#~NdEJJ|2M;Jj`w zQp(@|z&DIue5$NqyKNVx?T_XJETh7}YPXoaGvQP)O`Sp8UsX6dR{2&UP9ApJOy>Z$ z9QHH#@KAmOGY{{hmEg38h|pJ3*uD{)=aa$et$LngMPu;eeyah4vR?i*ezR(X%mt*-N^lkOH)X_e0o+zM{CpTv%w+OmwGj7s^1 zbaO#4zmYQ#I4|AyCc?!RJX8EzaJk5zWFVk#r^+>uT>uB2UfOR@R~gj zAA?e>Od)sz-S*-7%5Ud9b7{I;3c>M#Tfvuh4ID;OYpY6dW8jvXrO1RDgt`2!q2CiFiD4hY=_ zJHK6!?v_GuDcxQh3xXBS=oRU1DFm+y+zK+C&P&tXsuDaF_~wsuI<5U5zE=6Sfm=bo za~LT5(N!3*>?OxBe3NTw_9-~S;5|oWC=%ygsHkR$Kb!!-cTr&5V=+Y?KEciP z!dr{K!=0eQC$GT=0HR7+#Vc%O6+SidyZ}+fN9w}o>AedA#4eus8hoC48aufurHjYM zY^(6urX2$$qj=s7lzNUYgf>2j;^Cj7)blTah(U@^o;YWYRruod4FjZ0_Pdwh?bUtu zVD1Y&H3^h>lda8t*mMh{DyJBCu}KquE8biaP+U2kL#S^d7T&^KHL#I?(+)Ri`u>T! z3k#IpEX1rfmw|U-iMkd`!VFVevil%FcW`?9ZNZY0U07)qmy`OO;)NQi_9G_=<9uvsSC@Xo$V$W8N9avC3W#Gu{j`L{DXZ zgc)xK87z_VpmWyL!?}`+DdTR#$$WESy ztznj&h_gbiPE<*~GwEA)52p3oSI)-kC7E>3m7dkx%LJb>F8twV45s;rEP1A$dJoZo z&lnf}(h>Ky|LO1!9ky}~|E@S6e<^_|lqq|PdLRziR<{oG84ifCRTm@4eABH(P-jXP~J=OBHGIv4va|m zJ`}4B=u}m`sb%qXmGl}nAJ9Pcz*<~PJ~V@u;2`xpHnq7vl$!uFSX~ywSM+^oBJ^E2 zM6JY`^%4X1T*XD?l-6yw3;(IC1=2G%;Du*IF*wm{@&%N z&@6ugUJmo8RpxVa{rum;{OOhX95%CjQ$p5&8c3^Cv04?*44r&&4`|6eAuv1469QJx zfy@%!&r^SEo>KY@RL!vR6rQEJ9Z1P%mZz8x#W9ZRvHc;> znlSk(#g}I${rGH>;IZHCRilmiWqp{E0F&>io(D;hd%+u8u#4s;ow^w&j; zhqdYypof62xe?P_v~5@fB9R*GXK>27a<8)H6zv%L5-fo*(JalsNeRJ0rcuZoX= z;jNK}hTxHr*|^tR^oNs&ORnfI7Uu3Z02@uw-``3~=WzgwEdPo7jJ)qqtVsFGO;PyvXc0Va{Q^?;J!VW@ZWZ13WxoJuxsC*Ge;MnH@o0HnU)w6W;|X-q zFEW4f607LWEf^W!gD*D$UEImFj6s;HCbw*JLJVD^@k8q~)J^qaeDZ1y`1|h(2 z9~IrZEu`ME?yacwzF`<_zesJY-bMF+jal}A0qp@CZI8>t2M%uo@IV`g&If+S=3eyR z+3Q1K1H1oFQ*461N1NsV9=jP~dl|8oolggFtXG>5xMLZB$B$nc0(^H*(G#0H2Ed4k z3l>;K&ur|9FNa7SBPK4HY85?OYiH$JOem=P$*OzAy%h znE_f}(ibIO+}wfdmz1N@^<(d$P+)BwpP>u}Gp zG5<8&U_8nc{rF9VEDUyo$6`qSWRlu$(3!&ec@PE?Ckwm5o4Cx2e&Hg9gN5DTLtY90 zHpztDr!ziS6lE*3$mH35RzUeh#fr<2UALCqH+~h;brs+6ho=E79DXzU{LuX~`7{^e zJ?_YaM~>=*;lekojL&VT3Woq@|ISgUt}<~b4YIAai<$EPL|oKZ-H2<7%TJJN-dfmm zGhO!MAXd~;&4UnwY^(fQX%(AC(JAVY3g4%v!xZkIm}$8&dUojQ;R=Mk9k-}iq@&mn)&Ol zS^LVrW!`g_f!RiNE7T?*1^kJVk4xooOut&(1EtSZm*8qN9%h73QHOdXW3y_y*I(hw zyV8A7KG1Dy_Z&R`#;NctG`*Qbk3TxX<5E@kL_8Z*)uZF-^oXs3#~!TV(v{$txt&?u z)QhghMPc%+0XK%|K^{v?=a-^hYou%}Mc1iSjV$YPxTR;~Ai|SD9p-oxswb8Z#kaWt zzyW!EF%ZV z21Y6&_H$z_Yu!({#%mv6@(4}{wVRaU zEZhqU!i@!0(i4f=O&{tULUu{C6QE`}*MyKRDaM%9ZaxIpsb4Uoqz<7LyaDG!iIM@2 z*jDY9z4wGrammn2;MMA$-67Pqr1e>VPB;~v@C&Xj9tnZgZaot{GLT(-JYL#eyUnMy z0z?;g#kNtq?b{OqBqMnM3~M*wtE!XNTmbjRyzQtDqQ5e`o!a5;_Dm@E6-M4$2(1X8 zmQpexX?R8&#(}&9qZgGhrawTTI01Y7SUhA>9gkui*J5Z**bm=?Q|ECfjGB*SwW0&M zrYcGWNPNgjsrr{ZB80mZp3i$CRgfYDk zh2k`GTVeW6Q=n7lM%9L|qN#I>Qdp`x1ILx1Z)f#9L^(6?3ycKuElNh-0EAZL8Rkm` z>G=CqajR`6i><>JSm&tPh>eM-BpVN}VpPoEE#&5-Tq6V3PVC2Z9##$4{Wl*vLh0m4 za}d6c2orDgMx*$}JA^Sk6iA$A?i;Y`y#%e+xyBiNAreuHq^@(wspxhgsu?w9?h1S- zXYQ00mOX04+$okbYQ>bf_(-R3fv@!aKAeqM3;O;ZBkvQ0R^$oVQga%fk%p1WNH|6% z#Pff!;{cATpavoajO^)%!O=VSO_dK^G-uE)r0gwTqd!F(1@$1~C}yld;q zMX0v5d&U;LsZ46oM}wMI;^5OpFt;NkuNy)u@*4A{KX{c%3jSqP9G@*}gFv13ZZDK$ z$MFmkrm-@>+>$y$|L$l^(=RGvOp{TZ0G@Z0p=F5opAe>*djqUr@I^gUr<>R4)aq!g zyKMRTEM&;=WG}(f4@@Zc2qW)b2(8HFw54Pko{@&Jt^RPt%S;gB<}boH&D<#y@f6uk z%PKC8sJs*Ly0794{~%@M@vd8ORPnPtJ{sjMz`k2tO|b+Hc6m#gjQPn#-mGnKj{C`4 zx)Z$2tX_o&pP9ge&y2j&5aRvswApYvo{@&(z}fUxd~DM({V>QzCB*a3C>tj*`bJn! zjDW66Ryt#^n~u-E6$h}(SQU?SLd_L1Tm^Q;j&59*Mn3~zJ_4>w);nYObf@p&?es0j zaZy>hw@;iI))9<7Zc@DE$a?sgvIUe?v*7X)f zT-U4PNbrbY?vsqX=Mh?w1GHrVRVt2$bU3L#2H|iKk5f4DbqMgs4}?((@wgf4h!e=2 zIL)%UOhCbsdwezA>nzI*=ovLU;&g-L%qT0PhDV(~-2%umYIw|f4)jvhaLlPVF+@ZS zk2||h4-lhn+Td-ai$SB==My z70w!_dO9O-E^s zF}6~v8QNqIqY~mJq3BMWK<=MdU0!U4wo88YwfT!v_h2wsMw@>+E3rNs8AOaW|8mAH z3Lx8P^KWPG#-N;8sVu#7eu#)RmG0yPh|#94pTJm~x_xbC=we*)f$Bt?cw-6n%m5N? zR?{=eD)8Z_F>()U)bIik&My}d^0Bic;pk%j5nOzP(_ZNBbA zn?-s8)`C=R*4AGg2ocfdae8hzlw%+utE5=(#9;fSM4KggF6P`vM4P4hF7(W-RHDu0 zm@VB66D8VgwF5tx$OL{nekLL>iV*KVA>?Z_6`xZT548Co=lXfN+pUm`{`A9=QLlDKa2 zPkx*=X!A-&-hPBuE+H9k{$;<+?Z2Du}PmuKLo=AtKuB zu6uP35z*#Ay|G$|h&Bi7t^-3vv^i9N3?=$Ci#99t$CwyFpiTBLDq&1t2f}dzxozfI z)(dmMuVj|5&Dr{BIC(~!i*#noV9qnly17`d!OCKk;cIh=-oGUrWI5q2)fcx55z*!{ z-3kXbGZ99cr|Cz+-P&I_PuH(c3F`Lu^fUB{9V#Kw<{JHFb|oa*T&uTWP4VSww7E{_ zSMI8!&GmX6l<#Xnw7Eeq!-o(b5pABO_l-!`=0?4GQ|Kew+@`->6C$F`3-y(qLPWH= zU0;RH`8A6+cj&)%hKOi$r@rR+5D{%&tS4+w)8=8!mR^C?RkS%4OA2QV+U&^4<8P--Uq}#MkBuy?j@Qh&EU0(PxH;X!BhC`mzua zZJw{+IyXc_o11kmRyV(9(dGrZQ$HVpHrd0dg!udiMsWhwk~p@jjNI3-EI+UxX315) zMEB~9Q-d)x5N(Hr!Ps{_PH z^hTYT6;$L)^j7^Ht{Gox=Gb|g{-mT55{cd}uXGK(M51@-E~`T?Bhi29=Q{=snyvjV zJ+e|HBGJ3`bFt7zBzlj&AD3_H@_DcR6{7XUCK5fSXEqNJk?7<4Xx|VKi9Vq>SNe!V zpVALwY4qz6i9W5@R~~vrqR;5}aUG{@?L#nWx(E{`65Wk!j^cMa2c_AVaJ*xlS93mpo2lZIo z!tzUrL?6~)VVU+3k?5m3dWnxfqU<5w`hpO@e+0sDnz>7`&_zPo7KkTx6exmbn75Io~^HY5|T)T`mKhq8N1Qq$( z{6=4cr7BRJZ0+A_zMwvUM4R8~xBFK@qRsDhe{3?om(k{rx;lF4Q;_BJCq1WIh=?|S z)@Npgh-mW{z5M)iZT?$7u|4z=ZQ5?TXo!e59k=J+5D{%^_xws9(Wd8isT>l~X2kum zaac;Unc)r@oTklhFq+^(*k69?TlFxss8$79rk$!+c+xsrZLg@j#pJ>g%vP z@uyt^ZN9Ik+CJiI^9y|)mOb(DKN5YVPYOz%qC}g&=}FT=AJOI?`h+V&M6~®_+= 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%0A)a? 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 literal 0 HcmV?d00001 From 383c89262b96fdfcbd9143c9475d6b156a942174 Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Sat, 15 Oct 2016 06:23:38 -0400 Subject: [PATCH 009/729] update motd var --- CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg b/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg index c865268b5..9768294eb 100644 --- a/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg +++ b/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg @@ -1,4 +1,4 @@ set sv_hostname "" -set g_motd "LGSM CODUO Server" +set scr_motd "LGSM CODUO Server" set rconpassword "" From 81fa3d5681d9f59f1b1ad0a5c7db4443aee7d361 Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Mon, 17 Oct 2016 00:49:39 -0400 Subject: [PATCH 010/729] adding Call of Duty: World at War --- CallOfDutyWorldAtWar/cfg/lgsm-default.cfg | 3 + CallOfDutyWorldAtWar/codwawserver | 145 +++++ lgsm/functions/command_install.sh | 2 +- lgsm/functions/install_config.sh | 718 ++++++++++++---------- lgsm/functions/install_server_files.sh | 2 + 5 files changed, 554 insertions(+), 316 deletions(-) create mode 100644 CallOfDutyWorldAtWar/cfg/lgsm-default.cfg create mode 100644 CallOfDutyWorldAtWar/codwawserver diff --git a/CallOfDutyWorldAtWar/cfg/lgsm-default.cfg b/CallOfDutyWorldAtWar/cfg/lgsm-default.cfg new file mode 100644 index 000000000..63766b13c --- /dev/null +++ b/CallOfDutyWorldAtWar/cfg/lgsm-default.cfg @@ -0,0 +1,3 @@ +set sv_hostname "" +set scr_motd "LGSM CODWAW Server" +set rconpassword "" diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver new file mode 100644 index 000000000..ee561ffc8 --- /dev/null +++ b/CallOfDutyWorldAtWar/codwawserver @@ -0,0 +1,145 @@ +#!/bin/bash +# Call of Duty: World at War +# 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="mp_castle" +maxclients="20" +ip="0.0.0.0" +port="28960" + +fn_parms(){ +parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +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="codwaw" + +# Server Details +servicename="codwaw-server" +gamename="Call of Duty: World at War" +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" +filesdir="${rootdir}/serverfiles" +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./codwaw_lnxded" +servercfg="${servicename}.cfg" +servercfgdir="${systemdir}/uo" +servercfgfullpath="${servercfgdir}/${servercfg}" +servercfgdefault="${servercfgdir}/lgsm-default.cfg" +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/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 5b741a126..ae1574f39 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}" == "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}" == "Call of Duty: World at War" ]; then installer=1 install_server_files.sh elif [ -n "${appid}" ]; then diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 997bc4cc2..dd983ddf1 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -8,372 +8,460 @@ local commandname="INSTALL" local commandaction="Install" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -fn_fetch_default_config(){ - mkdir -pv "${lgsmdir}/default-configs" - githuburl="https://github.com/GameServerManagers/Game-Server-Configs/master" - - for config in "${array_configs[@]}" - do - fileurl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master/${gamedirname}/${config}"; filedir="${lgsmdir}/default-configs"; filename="${config}"; executecmd="noexecute" run="norun"; force="noforce" - fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" - done +fn_defaultconfig(){ + echo "creating ${servercfg} config file." + fn_script_log_info "creating ${servercfg} config file." + cp -v "${servercfgdefault}" "${servercfgfullpath}" + sleep 1 } -# Changes some variables within the default configs -# SERVERNAME to LinuxGSM -# PASSWORD to random password -fn_set_config_vars(){ - random=$(strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 8 | tr -d '\n'; echo) - servername="LinuxGSM" - rconpass="admin$random" +fn_userinputconfig(){ + # allow user to input server name and password + if [ -z "${autoinstall}" ]; then + echo "" + echo "Configuring ${gamename} Server" + echo "=================================" + sleep 1 + read -p "Enter server name: " servername + read -p "Enter rcon password: " rconpass + else + servername="${servicename}" + rconpass="rconpassword" + fi echo "changing hostname." fn_script_log_info "changing hostname." + sed -i "s/\"\"/\"${servername}\"/g" "${servercfgfullpath}" sleep 1 - sed -i "s/SERVERNAME/${servername}/g" "${servercfgfullpath}" echo "changing rconpassword." - fn_script_log_info "changing RCON/ADMIN password." - sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgfullpath}" + fn_script_log_info "changing rconpassword." + sed -i "s/\"\"/\"${rconpass}\"/g" "${servercfgfullpath}" + sleep 1 +} + +fn_arma3config(){ + fn_defaultconfig + echo "creating ${networkcfg} config file." + fn_script_log_info "creating ${networkcfg} config file." + cp -v "${networkcfgdefault}" "${networkcfgfullpath}" + sleep 1 + echo "" +} + +fn_goldsourceconfig(){ + fn_defaultconfig + + # server.cfg redirects to ${servercfg} for added security + echo "creating server.cfg." + fn_script_log_info "creating server.cfg." + touch "server.cfg" + sleep 1 + echo "creating redirect." + fn_script_log_info "creating redirect." + echo "server.cfg > ${servercfg}." + echo "exec ${servercfg}" > "server.cfg" + sleep 1 + + # creating other files required + echo "creating listip.cfg." + fn_script_log_info "creating listip.cfg." + touch "${systemdir}/listip.cfg" + sleep 1 + echo "creating banned.cfg." + fn_script_log_info "creating banned.cfg." + touch "${systemdir}/banned.cfg" + sleep 1 + + fn_userinputconfig + echo "" +} + +fn_serious3config(){ + fn_defaultconfig + echo "" + echo "To edit ${gamename} server config use SS3 Server GUI 3 tool" + echo "http://mrag.nl/sgui3/" + fn_script_log_info "To edit ${gamename} server config use SS3 Server GUI 3 tool" + fn_script_log_info "http://mrag.nl/sgui3/" + sleep 1 + echo "" +} + +fn_sourceconfig(){ + fn_defaultconfig + + # server.cfg redirects to ${servercfg} for added security + echo "creating server.cfg." + fn_script_log_info "creating server.cfg." + touch "server.cfg" sleep 1 + echo "creating redirect." + fn_script_log_info "creating redirect." + echo "server.cfg > ${servercfg}." + echo "exec ${servercfg}" > "server.cfg" + sleep 1 + + fn_userinputconfig + echo "" } -# Copys the default configs from Game-Server-Configs repo to the -# correct location -fn_default_config_remote(){ - for config in "${array_configs[@]}" - do - # every config is copied - echo "copying ${servercfg} config file." - fn_script_log_info "copying ${servercfg} config file." - if [ "${config}" == "${servercfgdefault}" ]; then - cp -v "${lgsmdir}/default-configs/${config}" "${servercfgfullpath}" - elif [ "${config}" == "${networkcfgdefault}" ]; then - # ARMA 3 - cp -v "${lgsmdir}/default-configs/${config}" "${networkcfgfullpath}" - else - cp -v "${lgsmdir}/default-configs/${config}" "${servercfgdir}/${config}" - fi - done +fn_teeworldsconfig(){ + fn_defaultconfig + + echo "adding logfile location to config." + fn_script_log_info "adding logfile location to config." + sed -i "s@\"\"@\"${gamelog}\"@g" "${servercfgfullpath}" + sleep 1 + echo "removing password holder." + fn_script_log_info "removing password holder." + sed -i "s///" "${servercfgfullpath}" sleep 1 + + fn_userinputconfig + echo "" +} + +fn_ut99config(){ + echo "creating ${servercfg} config file." + fn_script_log_info "creating ${servercfg} config file." + echo "${servercfgdefault} > ${servercfgfullpath}" + tr -d '\r' < "${servercfgdefault}" > "${servercfgfullpath}" + sleep 1 + echo "" + echo "Configuring ${gamename} Server" + echo "=================================" + sleep 1 + echo "enabling WebAdmin." + fn_script_log_info "enabling WebAdmin." + sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" + sleep 1 + echo "setting WebAdmin port to 8076." + fn_script_log_info "setting WebAdmin port to 8076." + sed -i '467i\ListenPort=8076' "${servercfgfullpath}" + sleep 1 + echo "" +} + +fn_unreal2config(){ + fn_defaultconfig + echo "" + echo "Configuring ${gamename} Server" + echo "=================================" + sleep 1 + echo "setting WebAdmin username and password." + fn_script_log_info "setting WebAdmin username and password." + sed -i 's/AdminName=/AdminName=admin/g' "${servercfgfullpath}" + sed -i 's/AdminPassword=/AdminPassword=admin/g' "${servercfgfullpath}" + sleep 1 + echo "enabling WebAdmin." + fn_script_log_info "enabling WebAdmin." + sed -i 's/bEnabled=False/bEnabled=True/g' "${servercfgfullpath}" + if [ "${gamename}" == "Unreal Tournament 2004" ]; then + sleep 1 + echo "setting WebAdmin port to 8075." + fn_script_log_info "setting WebAdmin port to 8075." + sed -i 's/ListenPort=80/ListenPort=8075/g' "${servercfgfullpath}" + fi + sleep 1 + echo "" +} + +fn_ut3config(){ + echo "" + echo "Configuring ${gamename} Server" + echo "=================================" + sleep 1 + echo "setting ServerName to 'LinuxGSM UT3 Server'." + fn_script_log_info "setting ServerName to 'LinuxGSM UT3 Server'." + sleep 1 + sed -i 's/ServerName=/ServerName=LinuxGSM UT3 Server/g' "${servercfgdir}/DefaultGame.ini" + echo "setting WebAdmin password to admin." + fn_script_log_info "setting WebAdmin password to admin." + echo '[Engine.AccessControl]' >> "${servercfgdir}/DefaultGame.ini" + echo 'AdminPassword=admin' >> "${servercfgdir}/DefaultGame.ini" + sleep 1 + echo "enabling WebAdmin." + fn_script_log_info "enabling WebAdmin." + sed -i 's/bEnabled=false/bEnabled=True/g' "${servercfgdir}/DefaultWeb.ini" + if [ "${gamename}" == "Unreal Tournament 3" ]; then + sleep 1 + echo "setting WebAdmin port to 8081." + fn_script_log_info "setting WebAdmin port to 8081." + sed -i 's/ListenPort=80/ListenPort=8081/g' "${servercfgdir}/DefaultWeb.ini" + fi + sleep 1 + echo "" +} + +fn_unrealtournament(){ + # allow user to input server name and password + if [ -z "${autoinstall}" ]; then + echo "" + echo "Configuring ${gamename} Server" + echo "=================================" + sleep 1 + read -p "Enter server name: " servername + read -p "Enter rcon password: " rconpass + else + servername="${servicename}" + rconpass="rconpassword" + fi + echo "changing hostname." + fn_script_log_info "changing hostname." + sed -i "s/\"\"/\"${servername}\"/g" "${servercfgdir}/Game.ini" + sleep 1 + echo "changing rconpassword." + fn_script_log_info "changing rconpassword." + sed -i "s/\"\"/\"${rconpass}\"/g" "${servercfgdir}/Engine.ini" + sleep 1 + } echo "" -echo "Downloading ${gamename} Config" +if [ "${gamename}" != "Hurtworld" ]; then +echo "Creating Configs" echo "=================================" -echo "default configs from https://github.com/GameServerManagers/Game-Server-Configs" -sleep 2 +sleep 1 + mkdir -pv "${servercfgdir}" + cd "${servercfgdir}" + githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}" +fi + if [ "${gamename}" == "7 Days To Die" ]; then - gamedirname="7DaysToDie" - array_configs+=( serverconfig.xml ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + fn_defaultconfig elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then - gamedirname="ARKSurvivalEvolved" - array_configs+=( GameUserSettings.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + wget -N /dev/null ${githuburl}/ARKSurvivalEvolved/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + echo -e "downloading lgsm-default.ini...\c" + fn_defaultconfig elif [ "${gamename}" == "ARMA 3" ]; then - gamedirname="Arma3" - array_configs+=( server.cfg network.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Battlefield: 1942" ]; then - gamedirname="Battlefield1942" - array_configs+=( serversettings.con ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Blade Symphony" ]; then - gamedirname="BladeSymphony" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.server.cfg...\c" + wget -N /dev/null ${githuburl}/Arma3/cfg/lgsm-default.server.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + echo -e "downloading lgsm-default.network.cfg...\c" + wget -N /dev/null ${githuburl}/Arma3/cfg/lgsm-default.network.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_arma3config elif [ "${gamename}" == "BrainBread 2" ]; then - gamedirname="BrainBread2" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/BrainBread2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then - gamedirname="BlackMesa" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/BlackMesa/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Blade Symphony" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/BladeSymphony/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig +elif [ "${gamename}" == "Call of Duty: World at War" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CallOfDutyWorldAtWar/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig + fn_userinputconfig elif [ "${gamename}" == "Codename CURE" ]; then - gamedirname="CodenameCURE" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CodenameCURE/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Counter-Strike 1.6" ]; then - gamedirname="CounterStrike" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CounterStrike/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig elif [ "${gamename}" == "Counter-Strike: Condition Zero" ]; then - gamedirname="CounterStrikeConditionZero" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CounterStrikeConditionZero/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig elif [ "${gamename}" == "Counter-Strike: Global Offensive" ]; then - gamedirname="CounterStrikeGlobalOffensive" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Counter-Strike: Source" ]; then - gamedirname="CounterStrikeSource" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/CounterStrikeSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Day of Defeat" ]; then - gamedirname="DayOfDefeat" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/DayOfDefeat/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig elif [ "${gamename}" == "Day of Defeat: Source" ]; then - gamedirname="DayOfDefeatSource" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/DayOfDefeatSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Day of Infamy" ]; then - gamedirname="DayOfInfamy" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Deathmatch Classic" ]; then - gamedirname="DeathmatchClassic" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/DayOfInfamy/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Don't Starve Together" ]; then - gamedirname="DontStarveTogether" - array_configs+=( Settings.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.ini...\c" + wget -N /dev/null ${githuburl}/DontStarveTogether/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig elif [ "${gamename}" == "Double Action: Boogaloo" ]; then - gamedirname="DoubleActionBoogaloo" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/DoubleActionBoogaloo/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Empires Mod" ]; then + fn_defaultconfig +elif [ "${gamename}" == "Enemy Territory" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/EnemyTerritory/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig + fn_userinputconfig + echo "" elif [ "${gamename}" == "Fistful of Frags" ]; then - gamedirname="FistfulofFrags" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/FistfulOfFrags/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Garry's Mod" ]; then - gamedirname="GarrysMod" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/GarrysMod/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "GoldenEye: Source" ]; then - gamedirname="GoldenEyeSource" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Half Life: Deathmatch" ]; then - gamedirname="HalfLifeDeathmatch" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Half-Life Deathmatch: Source" ]; then - gamedirname="HalfLifeDeathmatchSource" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Half-Life: Opposing Force" ]; then - gamedirname="OpposingForce" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/GoldenEyeSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Half Life 2: Deathmatch" ]; then - gamedirname="HalfLife2Deathmatch" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/HalfLife2Deathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig +elif [ "${gamename}" == "Half Life: Deathmatch" ]; then + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/HalfLifeDeathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig elif [ "${gamename}" == "Insurgency" ]; then - gamedirname="Insurgency" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/Insurgency/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Just Cause 2" ]; then - gamedirname="JustCause2" - array_configs+=( config.lua ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + fn_defaultconfig elif [ "${gamename}" == "Killing Floor" ]; then - gamedirname="KillingFloor" - array_configs+=( Default.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Left 4 Dead" ]; then - gamedirname="Left4Dead" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + fn_unreal2config elif [ "${gamename}" == "Left 4 Dead" ]; then - gamedirname="Left4Dead" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/Left4Dead/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Left 4 Dead 2" ]; then - gamedirname="Left4Dead2" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/Left4Dead2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Minecraft" ]; then - gamedirname="Minecraft" - array_configs+=( server.properties ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.ini...\c" + wget -N /dev/null ${githuburl}/Minecraft/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig elif [ "${gamename}" == "No More Room in Hell" ]; then - gamedirname="NoMoreRoominHell" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Mumble" ]; then - : + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/NoMoreRoomInHell/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Natural Selection 2" ]; then - : -elif [ "${gamename}" == "NS2: Combat" ]; then - : + echo -e "no configs required." + sleep 1 + echo "" elif [ "${gamename}" == "Pirates, Vikings, and Knights II" ]; then - gamedirname="PiratesVikingandKnightsII" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/PiratesVikingandKnightsII/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Project Zomboid" ]; then - gamedirname="ProjectZomboid" - array_configs+=( server.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.ini...\c" + wget -N /dev/null ${githuburl}/ProjectZomboid/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig elif [ "${gamename}" == "Quake Live" ]; then - gamedirname="QuakeLive" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/QuakeLive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig + fn_userinputconfig elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then - : -elif [ "${gamename}" == "Ricochet" ]; then - gamedirname="Ricochet" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Rust" ]; then - gamedirname="Rust" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + fn_unreal2config elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then - gamedirname="SeriousSam3BFE" - array_configs+=( server.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Starbound" ]; then - gamedirname="Starbound" - array_configs+=( starbound.config ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.ini...\c" + wget -N /dev/null ${githuburl}/SeriousSam3BFE/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_serious3config +elif [ "${gamename}" == "Rust" ]; then + echo -e "downloading server.cfg...\c" + wget -N /dev/null ${githuburl}/Rust/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig elif [ "${gamename}" == "Sven Co-op" ]; then - gamedirname="SvenCoop" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/SvenCoop/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig +elif [ "${gamename}" == "Starbound" ]; then + echo -e "downloading lgsm-default.config...\c" + wget -N /dev/null ${githuburl}/Starbound/cfg/lgsm-default.config 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig + fn_userinputconfig +elif [ "${gamename}" == "TeamSpeak 3" ]; then + echo -e "downloading lgsm-default.ini...\c" + wget -N /dev/null ${githuburl}/TeamSpeak3/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig elif [ "${gamename}" == "Team Fortress 2" ]; then - gamedirname="TeamFortress2" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/TeamFortress2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_sourceconfig elif [ "${gamename}" == "Team Fortress Classic" ]; then - gamedirname="TeamFortressClassic" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "TeamSpeak 3" ]; then - gamedirname="TeamSpeak3" - array_configs+=( ts3server.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/TeamFortressClassic/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_goldsourceconfig elif [ "${gamename}" == "Teeworlds" ]; then - gamedirname="Teeworlds" - array_configs+=( server.cfg ctf.cfg dm.cfg duel.cfg tdm.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading ctf.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/ctf.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + echo -e "downloading dm.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/dm.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + echo -e "downloading duel.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/duel.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + echo -e "downloading tdm.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/tdm.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + echo -e "downloading lgsm-default.cfg...\c" + wget -N /dev/null ${githuburl}/Teeworlds/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_teeworldsconfig elif [ "${gamename}" == "Terraria" ]; then - gamedirname="Terraria" - array_configs+=( serverconfig.txt ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading lgsm-default.txt...\c" + wget -N /dev/null ${githuburl}/Terraria/cfg/lgsm-default.txt 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig elif [ "${gamename}" == "Unreal Tournament" ]; then - gamedirname="UnrealTournament" - array_configs+=( Game.ini Engine.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Unreal Tournament 2004" ]; then - gamedirname="UnrealTournament2004" - array_configs+=( UT2004.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + echo -e "downloading Engine.ini...\c" + wget -N /dev/null ${githuburl}/UnrealTournament/cfg/Engine.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + echo -e "downloading Game.ini...\c" + wget -N /dev/null ${githuburl}/UnrealTournament/cfg/Game.ini 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_unrealtournament elif [ "${gamename}" == "Unreal Tournament 3" ]; then - gamedirname="UnrealTournament3" - array_configs+=( UTGame.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + fn_ut3config +elif [ "${gamename}" == "Unreal Tournament 2004" ]; then + fn_unreal2config elif [ "${gamename}" == "Unreal Tournament 99" ]; then - gamedirname="UnrealTournament99" - array_configs+=( Default.ini ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then - gamedirname="WolfensteinEnemyTerritory" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -fi - + fn_ut99config +fi \ No newline at end of file diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index e2778ae64..663275490 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -23,6 +23,8 @@ 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}" == "Call of Duty: World at War" ]; then + fileurl="https://s3.amazonaws.com/linuxgsm/codwaw-lnxded-1.7-full.tar.bz2"; filedir="${tmpdir}"; filename="codwaw-lnxded-1.7-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="0489697ff3bf678c109bfb377d1b7895" fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" From 663962b996c9f379f97c4a6727f501d9ee78b59c Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Mon, 17 Oct 2016 01:42:25 -0400 Subject: [PATCH 011/729] fixes --- CallOfDutyWorldAtWar/codwawserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 CallOfDutyWorldAtWar/codwawserver diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver old mode 100644 new mode 100755 index ee561ffc8..f07a7ae5b --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -61,7 +61,7 @@ systemdir="${filesdir}" executabledir="${filesdir}" executable="./codwaw_lnxded" servercfg="${servicename}.cfg" -servercfgdir="${systemdir}/uo" +servercfgdir="${systemdir}/main" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.cfg" backupdir="${rootdir}/backups" @@ -142,4 +142,4 @@ core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 3430bef50fee26b6c0bcf3415bf9703759103bdf Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Mon, 17 Oct 2016 01:43:48 -0400 Subject: [PATCH 012/729] update --- CallOfDutyWorldAtWar/codwawserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index f07a7ae5b..199e34810 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -47,7 +47,7 @@ githubbranch="codwaw" # Server Details servicename="codwaw-server" gamename="Call of Duty: World at War" -engine="idtech3" +engine="IW 3.0" # Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" From 2c67ce74a9d6ce213520844df4880ba35ec44baa Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Mon, 17 Oct 2016 15:59:41 +0300 Subject: [PATCH 013/729] Initial Factorio support --- Factorio/fctrserver | 144 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 Factorio/fctrserver diff --git a/Factorio/fctrserver b/Factorio/fctrserver new file mode 100644 index 000000000..916a94f16 --- /dev/null +++ b/Factorio/fctrserver @@ -0,0 +1,144 @@ +#!/bin/bash +# Factorio +# Server Management Script +# Author: Daniel Gibbs +# Contributor: Kristian Polso +# Website: https://gameservermanagers.com +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="171016" + +#### Variables #### + +# Notification Alerts +# (on|off) + +# Email +emailalert="off" +email="email@example.com" +#emailfrom="email@example.com" + +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert="off" +pushbullettoken="accesstoken" + +# Start Variables +updateonstart="off" + +fn_parms(){ +parms="-fg -ini ${servercfgfullpath}" +} + +#### Advanced Variables #### + +# Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="Krisseck" +githubrepo="LinuxGSM" +githubbranch="master" + +# Server Details +gamename="Factorio" +servicename="fctr-server" + +# 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}" +executabledir="${filesdir}" +executable="./bin/x64/factorio" +servercfg="data/server-settings.json" +servercfgdefault="data/server-settings.example.json" +servercfgdir="${filesdir}" +servercfgfullpath="${servercfgdir}/${servercfg}" +backupdir="${rootdir}/backups" + +# Logging +logdays="7" +gamelogdir="${rootdir}/log" +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 From 3b6336c388aabb0f0ee49d00218620d8fa377a6f Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Mon, 17 Oct 2016 16:22:45 +0300 Subject: [PATCH 014/729] Factorio update scripts --- lgsm/functions/command_update.sh | 2 + lgsm/functions/install_server_files.sh | 2 + lgsm/functions/update_factorio.sh | 165 +++++++++++++++++++++++++ 3 files changed, 169 insertions(+) create mode 100644 lgsm/functions/update_factorio.sh diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index bffa4e6ea..13fff9e90 100644 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -19,6 +19,8 @@ elif [ "${engine}" == "lwjgl2" ]; then update_minecraft.sh elif [ "${gamename}" == "Mumble" ]; then update_mumble.sh +elif [ "${gamename}" == "Factorio" ]; then + update_factorio.sh else update_steamcmd.sh fi diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index e2778ae64..aab2a716a 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -112,6 +112,8 @@ elif [ "${gamename}" == "Minecraft" ]; then install_minecraft_eula.sh elif [ "${gamename}" == "Mumble" ]; then update_mumble.sh +elif [ "${gamename}" == "Factorio" ]; then + update_factorio.sh elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then fn_install_server_files fi diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh new file mode 100644 index 000000000..3bea70bee --- /dev/null +++ b/lgsm/functions/update_factorio.sh @@ -0,0 +1,165 @@ +#!/bin/bash +# LGSM update_factorio.sh function +# Author: Daniel Gibbs +# Contributor: Kristian Polso +# Website: https://gameservermanagers.com +# Description: Handles updating of Factorio servers. + +local commandname="UPDATE" +local commandaction="Update" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +fn_update_factorio_dl(){ + fn_fetch_file "https://www.factorio.com/get-download/${availablebuild}/headless/${factorioarch}" "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" + fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" "${tmpdir}" + echo -e "copying to ${filesdir}...\c" + fn_script_log "Copying to ${filesdir}" + cp -R "${tmpdir}/factorio_headless_${factorioarch}-${availablebuild}/"* "${filesdir}" + local exitcode=$? + if [ ${exitcode} -eq 0 ]; then + fn_print_ok_eol_nl + else + fn_print_fail_eol_nl + fi +} + +fn_update_factorio_currentbuild(){ + # Gets current build info + # Checks if current build info is available. If it fails, then a server restart will be forced to generate logs. + if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then + fn_print_error "Checking for update: Factorio.com" + sleep 1 + fn_print_error_nl "Checking for update: Factorio.com: No logs with server version found" + fn_script_log_error "Checking for update: Factorio.com: No logs with server version found" + sleep 1 + fn_print_info_nl "Checking for update: Factorio.com: Forcing server restart" + fn_script_log_info "Checking for update: Factorio.com: Forcing server restart" + sleep 1 + exitbypass=1 + command_stop.sh + exitbypass=1 + command_start.sh + sleep 1 + # Check again and exit on failure. + if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then + fn_print_fail_nl "Checking for update: Factorio.com: Still No logs with server version found" + fn_script_log_fatal "Checking for update: Factorio.com: Still No logs with server version found" + core_exit.sh + fi + fi + + # Get current build from logs + currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | grep -oP '(?<=Factorio ).*?(?= /)') + if [ -z "${currentbuild}" ]; then + fn_print_error_nl "Checking for update: Factorio.com: Current build version not found" + fn_script_log_error "Checking for update: Factorio.com: Current build version not found" + sleep 1 + fn_print_info_nl "Checking for update: Factorio.com: Forcing server restart" + fn_script_log_info "Checking for update: Factorio.com: Forcing server restart" + exitbypass=1 + command_stop.sh + exitbypass=1 + command_start.sh + currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | grep -oP '(?<=Factorio ).*?(?= /)') + if [ -z "${currentbuild}" ]; then + fn_print_fail_nl "Checking for update: Factorio.com: Current build version still not found" + fn_script_log_fatal "Checking for update: Factorio.com: Current build version still not found" + core_exit.sh + fi + fi +} + +fn_update_factorio_arch(){ + # Factorio is linux64 only for now + factorioarch="linux64" +} + +fn_update_factorio_availablebuild(){ + # Gets latest build info. + availablebuild=$(curl -s https://www.factorio.com/download-headless/stable | grep 'headless/linux64' | head -n 1 | grep -oP '(?<=get-download/).*?(?=/)') + sleep 1 + + # Checks if availablebuild variable has been set + if [ -z "${availablebuild}" ]; then + fn_print_fail "Checking for update: Factorio.com" + sleep 1 + fn_print_fail "Checking for update: Factorio.com: Not returning version info" + fn_script_log_fatal "Failure! Checking for update: Factorio.com: Not returning version info" + core_exit.sh + else + fn_print_ok "Checking for update: Factorio.com" + fn_script_log_pass "Checking for update: Factorio.com" + sleep 1 + fi +} + +fn_update_factorio_compare(){ + # Removes dots so if can compare version numbers + currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]') + availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]') + + if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then + echo -e "\n" + echo -e "Update available:" + sleep 1 + echo -e " Current build: ${red}${currentbuild} ${factorioarch}${default}" + echo -e " Available build: ${green}${availablebuild} ${factorioarch}${default}" + echo -e "" + sleep 1 + echo "" + echo -en "Applying update.\r" + sleep 1 + echo -en "Applying update..\r" + sleep 1 + echo -en "Applying update...\r" + sleep 1 + echo -en "\n" + fn_script_log "Update available" + fn_script_log "Current build: ${currentbuild}" + fn_script_log "Available build: ${availablebuild}" + fn_script_log "${currentbuild} > ${availablebuild}" + + unset updateonstart + + check_status.sh + if [ "${status}" == "0" ]; then + fn_update_factorio_dl + exitbypass=1 + command_start.sh + exitbypass=1 + command_stop.sh + else + exitbypass=1 + command_stop.sh + fn_update_factorio_dl + exitbypass=1 + command_start.sh + fi + alert="update" + alert.sh + else + echo -e "\n" + echo -e "No update available:" + echo -e " Current version: ${green}${currentbuild}${default}" + echo -e " Available version: ${green}${availablebuild}${default}" + echo -e "" + fn_print_ok_nl "No update available" + fn_script_log_info "Current build: ${currentbuild}" + fn_script_log_info "Available build: ${availablebuild}" + fi +} + + +fn_update_factorio_arch +if [ "${installer}" == "1" ]; then + fn_update_factorio_availablebuild + fn_update_factorio_dl +else + # Checks for server update from github.com + fn_print_dots "Checking for update: github.com" + fn_script_log_info "Checking for update: github.com" + sleep 1 + fn_update_factorio_currentbuild + fn_update_factorio_availablebuild + fn_update_factorio_compare +fi From 88f35767e2c2bfcf7ea639ec9e73b491edee0d23 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Mon, 17 Oct 2016 16:30:06 +0300 Subject: [PATCH 015/729] More integration --- lgsm/functions/command_install.sh | 2 +- lgsm/functions/install_config.sh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 5b741a126..030b5a9dc 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}" == "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 installer=1 install_server_files.sh elif [ -n "${appid}" ]; then diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 997bc4cc2..97d12c972 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -169,6 +169,8 @@ elif [ "${gamename}" == "Double Action: Boogaloo" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Factorio" ]; then + : elif [ "${gamename}" == "Fistful of Frags" ]; then gamedirname="FistfulofFrags" array_configs+=( server.cfg ) From 4047ea2ca34899c5efe4a7c4607042fad7599075 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Mon, 17 Oct 2016 16:37:44 +0300 Subject: [PATCH 016/729] Missing stuff --- lgsm/functions/core_functions.sh | 5 +++++ lgsm/functions/install_server_files.sh | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 987ffcde9..10af8cfcf 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -444,6 +444,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +update_factorio.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + update_steamcmd.sh(){ functionfile="${FUNCNAME}" fn_fetch_function diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index aab2a716a..30216d7d0 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -113,7 +113,7 @@ elif [ "${gamename}" == "Minecraft" ]; then elif [ "${gamename}" == "Mumble" ]; then update_mumble.sh elif [ "${gamename}" == "Factorio" ]; then - update_factorio.sh + update_factorio.sh elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then fn_install_server_files fi From d8c1b2d6012992dc179183bfdb530c07a737db76 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Mon, 17 Oct 2016 17:00:14 +0300 Subject: [PATCH 017/729] Extract dir --- lgsm/functions/update_factorio.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index 3bea70bee..6f449bde3 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -11,7 +11,7 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_update_factorio_dl(){ fn_fetch_file "https://www.factorio.com/get-download/${availablebuild}/headless/${factorioarch}" "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" - fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" "${tmpdir}" + fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" "${tmpdir}/factorio_headless_${factorioarch}-${availablebuild}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" cp -R "${tmpdir}/factorio_headless_${factorioarch}-${availablebuild}/"* "${filesdir}" From b0b21d888b95a79c6b69c500bc35831c5eae1575 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Mon, 17 Oct 2016 17:05:24 +0300 Subject: [PATCH 018/729] Correct folder --- lgsm/functions/update_factorio.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index 6f449bde3..00c75012d 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -10,7 +10,7 @@ local commandaction="Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_update_factorio_dl(){ - fn_fetch_file "https://www.factorio.com/get-download/${availablebuild}/headless/${factorioarch}" "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" + fn_fetch_file "https://www.factorio.com/get-download/${availablebuild}/headless/${factorioarch}" "${tmpdir}/factorio_headless_${factorioarch}-${availablebuild}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" "${tmpdir}/factorio_headless_${factorioarch}-${availablebuild}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" From 3e33596836432fbef53d2f048003bf69a3e80363 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Mon, 17 Oct 2016 17:09:44 +0300 Subject: [PATCH 019/729] Tmp dir stuff --- lgsm/functions/update_factorio.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index 00c75012d..dba918df7 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -10,11 +10,11 @@ local commandaction="Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_update_factorio_dl(){ - fn_fetch_file "https://www.factorio.com/get-download/${availablebuild}/headless/${factorioarch}" "${tmpdir}/factorio_headless_${factorioarch}-${availablebuild}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" - fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" "${tmpdir}/factorio_headless_${factorioarch}-${availablebuild}" + fn_fetch_file "https://www.factorio.com/get-download/${availablebuild}/headless/${factorioarch}" "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" + fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" "${tmpdir}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" - cp -R "${tmpdir}/factorio_headless_${factorioarch}-${availablebuild}/"* "${filesdir}" + cp -R "${tmpdir}/"* "${filesdir}" local exitcode=$? if [ ${exitcode} -eq 0 ]; then fn_print_ok_eol_nl From 7874986b94b484230466dc977960e2130a24152e Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Mon, 17 Oct 2016 17:14:50 +0300 Subject: [PATCH 020/729] Tmpdir factorio --- lgsm/functions/update_factorio.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index dba918df7..bc8339bde 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -14,7 +14,7 @@ fn_update_factorio_dl(){ fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${availablebuild}.tar.gz" "${tmpdir}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" - cp -R "${tmpdir}/"* "${filesdir}" + cp -R "${tmpdir}/factorio/"* "${filesdir}" local exitcode=$? if [ ${exitcode} -eq 0 ]; then fn_print_ok_eol_nl From 3c136bc1a265d01a1d8a61869fb467fca4e00ddb Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Wed, 19 Oct 2016 12:44:41 +0300 Subject: [PATCH 021/729] Create initial save --- lgsm/functions/install_factorio_save.sh | 14 ++++++++++++++ lgsm/functions/install_server_files.sh | 1 + 2 files changed, 15 insertions(+) create mode 100644 lgsm/functions/install_factorio_save.sh diff --git a/lgsm/functions/install_factorio_save.sh b/lgsm/functions/install_factorio_save.sh new file mode 100644 index 000000000..ed71fe166 --- /dev/null +++ b/lgsm/functions/install_factorio_save.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# LGSM install_factorio_save.sh function +# Author: Kristian Polso +# Website: https://gameservermanagers.com +# Description: Creates the initial save file for Factorio + +local commandname="INSTALL" +local commandaction="Install" + +echo "" +echo "Creating initial Factorio savefile" +echo "=================================" +sleep 1 +${filesdir}/bin/x64/factorio --create-save ${filesdir}/save1 diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 30216d7d0..b4a6fa22d 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -114,6 +114,7 @@ elif [ "${gamename}" == "Mumble" ]; then update_mumble.sh elif [ "${gamename}" == "Factorio" ]; then update_factorio.sh + install_factorio_save.sh elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then fn_install_server_files fi From e13c816940a13ed2041345e08d4d552693501697 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Wed, 19 Oct 2016 12:48:23 +0300 Subject: [PATCH 022/729] Fetch install_factorio_save --- lgsm/functions/core_functions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 10af8cfcf..de66fb55f 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -479,6 +479,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +install_factorio_save.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + install_gsquery.sh(){ functionfile="${FUNCNAME}" fn_fetch_function From ab7f487a5525b9ed38f9fe378b7e18d2f282fb8f Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Wed, 19 Oct 2016 13:06:12 +0300 Subject: [PATCH 023/729] Factorio configs --- Factorio/cfg/lgsm-default.cfg | 23 +++++++++++++++++++++++ lgsm/functions/install_config.sh | 6 +++++- lgsm/functions/install_factorio_save.sh | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 Factorio/cfg/lgsm-default.cfg diff --git a/Factorio/cfg/lgsm-default.cfg b/Factorio/cfg/lgsm-default.cfg new file mode 100644 index 000000000..a433fe726 --- /dev/null +++ b/Factorio/cfg/lgsm-default.cfg @@ -0,0 +1,23 @@ + + "name": "", + "description": "Description of the game that will appear in the listing", + "tags": ["game", "tags"], + "max_players": "0", + + "_comment_visibility": ["public: Game will be published on the official Factorio matching server", + "lan: Game will be broadcast on LAN", + "hidden: Game will not be published anywhere"], + "visibility": "public", + + "_comment_credentials": "Your factorio.com login credentials. Required for games with visibility public", + "username": "", + "password": "", + + "_comment_token": "Authentication token. May be used instead of 'password' above.", + "token": "", + + "game_password": "", + + "_comment_verify_user_identity": "When set to true, the server will only allow clients that have a valid Factorio.com account", + "verify_user_identity": true +} diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 97d12c972..0489a915d 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -170,7 +170,11 @@ elif [ "${gamename}" == "Double Action: Boogaloo" ]; then fn_default_config_remote fn_set_config_vars elif [ "${gamename}" == "Factorio" ]; then - : + gamedirname="Factorio" + array_configs+=( server-settings.json ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Fistful of Frags" ]; then gamedirname="FistfulofFrags" array_configs+=( server.cfg ) diff --git a/lgsm/functions/install_factorio_save.sh b/lgsm/functions/install_factorio_save.sh index ed71fe166..36ef169cb 100644 --- a/lgsm/functions/install_factorio_save.sh +++ b/lgsm/functions/install_factorio_save.sh @@ -11,4 +11,4 @@ echo "" echo "Creating initial Factorio savefile" echo "=================================" sleep 1 -${filesdir}/bin/x64/factorio --create-save ${filesdir}/save1 +${filesdir}/bin/x64/factorio --create ${filesdir}/save1 From 253f5db2ccac98f86729c8e4628c150584102ae4 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Wed, 19 Oct 2016 13:22:56 +0300 Subject: [PATCH 024/729] Configs --- Factorio/cfg/lgsm-default.cfg | 23 ----------------------- lgsm/functions/install_config.sh | 6 +----- lgsm/functions/install_factorio_save.sh | 1 + 3 files changed, 2 insertions(+), 28 deletions(-) delete mode 100644 Factorio/cfg/lgsm-default.cfg diff --git a/Factorio/cfg/lgsm-default.cfg b/Factorio/cfg/lgsm-default.cfg deleted file mode 100644 index a433fe726..000000000 --- a/Factorio/cfg/lgsm-default.cfg +++ /dev/null @@ -1,23 +0,0 @@ - - "name": "", - "description": "Description of the game that will appear in the listing", - "tags": ["game", "tags"], - "max_players": "0", - - "_comment_visibility": ["public: Game will be published on the official Factorio matching server", - "lan: Game will be broadcast on LAN", - "hidden: Game will not be published anywhere"], - "visibility": "public", - - "_comment_credentials": "Your factorio.com login credentials. Required for games with visibility public", - "username": "", - "password": "", - - "_comment_token": "Authentication token. May be used instead of 'password' above.", - "token": "", - - "game_password": "", - - "_comment_verify_user_identity": "When set to true, the server will only allow clients that have a valid Factorio.com account", - "verify_user_identity": true -} diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 0489a915d..97d12c972 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -170,11 +170,7 @@ elif [ "${gamename}" == "Double Action: Boogaloo" ]; then fn_default_config_remote fn_set_config_vars elif [ "${gamename}" == "Factorio" ]; then - gamedirname="Factorio" - array_configs+=( server-settings.json ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + : elif [ "${gamename}" == "Fistful of Frags" ]; then gamedirname="FistfulofFrags" array_configs+=( server.cfg ) diff --git a/lgsm/functions/install_factorio_save.sh b/lgsm/functions/install_factorio_save.sh index 36ef169cb..8a9850818 100644 --- a/lgsm/functions/install_factorio_save.sh +++ b/lgsm/functions/install_factorio_save.sh @@ -12,3 +12,4 @@ echo "Creating initial Factorio savefile" echo "=================================" sleep 1 ${filesdir}/bin/x64/factorio --create ${filesdir}/save1 +cp ${filesdir}/data/server-settings.example.json ${filesdir}/data/server-settings.json From 057f1fed234437e88067ca7433909afcc253b2b0 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Wed, 19 Oct 2016 13:32:50 +0300 Subject: [PATCH 025/729] Details --- lgsm/functions/command_details.sh | 2 +- lgsm/functions/info_glibc.sh | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 2ae4632f0..7dbbd5e52 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -290,7 +290,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" "idtech3" "lwjgl2" "projectzomboid" "idtech3_ql" "refractor" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" "Factorio" ) for port_edit in "${ports_edit_array[@]}" do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 655402584..3f5740571 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -23,6 +23,9 @@ elif [ "${gamename}" == "Double Action: Boogaloo" ]; then elif [ "${gamename}" == "Empires Mod" ]; then glibcrequired="2.15" glibcfix="yes" +elif [ "${gamename}" == "Factorio" ]; then + glibcrequired="2.15" + glibcfix="yes" elif [ "${gamename}" == "Fistful of Frags" ]; then glibcrequired="2.15" glibcfix="yes" From f7e99e6428b07e3edd27911c9fdd21888a81bcdd Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Wed, 19 Oct 2016 13:43:51 +0300 Subject: [PATCH 026/729] Details --- lgsm/functions/command_details.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 7dbbd5e52..e9f8f6b4c 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -290,7 +290,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" "Factorio" ) + 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" ) for port_edit in "${ports_edit_array[@]}" do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then @@ -298,7 +298,7 @@ fn_details_ports(){ fi done # engines that require editing in the script file - local ports_edit_array=( "starbound" "spark" "source" "goldsource" "Rust" "Hurtworld" "unreal4") + local ports_edit_array=( "starbound" "spark" "source" "goldsource" "Rust" "Hurtworld" "unreal4" "Factorio" ) for port_edit in "${ports_edit_array[@]}" do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then @@ -340,6 +340,15 @@ fn_details_dontstarve(){ } | column -s $'\t' -t } +fn_details_factorio(){ + echo -e "netstat -atunp | grep factorio" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\ttcp" + } | column -s $'\t' -t +} + fn_details_minecraft(){ echo -e "netstat -atunp | grep java" echo -e "" @@ -673,6 +682,8 @@ fn_display_details() { fn_details_rust elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_details_wolfensteinenemyterritory + elif [ "${gamename}" == "Factorio" ]; then + fn_details_factorio else fn_print_error_nl "Unable to detect server engine." fi @@ -685,3 +696,4 @@ then fn_display_details core_exit.sh fi + From 9fccb196196457e3144e970b76ac67c9358ce202 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Wed, 19 Oct 2016 13:50:24 +0300 Subject: [PATCH 027/729] Update fctrserver --- Factorio/fctrserver | 76 ++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 916a94f16..6ef50a96a 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -5,9 +5,9 @@ # Contributor: Kristian Polso # 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="171016" @@ -27,11 +27,15 @@ email="email@example.com" pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +# Server settings +# More settings available after install in serverfiles/data/server-settings.json updateonstart="off" +port="34197" +rconport="34198" +rconpassword="factorio" fn_parms(){ -parms="-fg -ini ${servercfgfullpath}" +parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" } #### Advanced Variables #### @@ -91,36 +95,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}" } @@ -141,4 +145,4 @@ core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file From 0526935d32c1671d313c16486c578fc776537d36 Mon Sep 17 00:00:00 2001 From: Kristian Polso Date: Wed, 19 Oct 2016 17:44:24 +0300 Subject: [PATCH 028/729] Typo in fn_update_factorio_currentbuild --- lgsm/functions/update_factorio.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index bc8339bde..8122678a0 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -49,7 +49,7 @@ fn_update_factorio_currentbuild(){ fi # Get current build from logs - currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | grep -oP '(?<=Factorio ).*?(?= /)') + currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | grep -oP '(?<=Factorio ).*?(?= \()') if [ -z "${currentbuild}" ]; then fn_print_error_nl "Checking for update: Factorio.com: Current build version not found" fn_script_log_error "Checking for update: Factorio.com: Current build version not found" From 1f0c6d96030c337f1e6a8d03df06d2fde374882f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 02:43:31 +0200 Subject: [PATCH 029/729] First shot for #1098 --- lgsm/functions/command_backup.sh | 55 +++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index ca6fe9607..369228ab1 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -9,10 +9,24 @@ local commandaction="Backup" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh +# Check if a backup is pending or has been aborted using .backup.lock +if [ -f "${tmdpdir}/.backup.lock" ]; then + fn_print_warning_nl "A backup is currently pending or has been aborted." + while true; do + read -e -i "y" -p "Continue anyway? [Y/N]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; return;; + * ) echo "Please answer yes or no.";; + esac + done +fi info_distro.sh -backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" 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 fn_print_info_nl "A total of ${rootdirduexbackup} will be compressed into the following backup:" echo "${backupdir}/${backupname}.tar.gz" echo "" @@ -33,8 +47,8 @@ if [ "${status}" != "0" ]; then while true; do read -p "Stop ${servicename} while running the backup? [Y/N]" yn case $yn in - [Yy]* ) command_stop.sh; break;; - [Nn]* ) break;; + [Yy]* ) command_stop.sh; serverstopped="yes"; break;; + [Nn]* ) serverstopped="no"; break;; * ) echo "Please answer yes or no.";; esac done @@ -42,14 +56,47 @@ fi fn_print_dots "Backup in progress, please wait..." fn_script_log_info "Started backup" -sleep 2 +sleep 1 if [ ! -d "${backupdir}" ]; then mkdir "${backupdir}" fi +# Create lockfile +touch "${tmdpdir}/.backup.lock" +# Compressing files tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* +# Remove lockfile +rm "${tmdpdir}/.backup.lock" +# Check tar exit code and act accordingly 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" + + # Clear old backups if backupdays variable exists + if [ -n "${backupdays}" ]; then + # Count how many backups can be cleared + backupclearcount=$(find "${backupdir}"/ -type f -mtime +"${backupdays}"|wc -l) + # Check if there is any backup to clear + if [ "${backupclearcount}" -ne "0" ]; then + fn_print_info_nl "${backupclearcount} backups older than ${backupdays} days can be cleared." + while true; do + read -p "Clear older backups? [Y/N]" yn + case $yn in + [Yy]* ) clearoldbackups="yes"; break;; + [Nn]* ) clearoldbackups="no"; break;; + * ) echo "Please answer yes or no.";; + esac + done + # If user wants to clear backups + if [ "${clearoldbackups}" == "yes" ]; then + find "${backupdir}"/ -mtime +"${backupdays}" -type f -exec rm -f {} \; + fn_print_ok_nl "Cleared ${backupclearcount} backups." + fi + fi + fi + # Restart the server if it was stopped for the backup + if [ "${serverstopped}" == "yes" ]; then + command_start.sh + fi else fn_print_error_nl "Backup failed: ${backupname}.tar.gz" fn_script_log_error "Backup failed: ${backupname}.tar.gz" From 119a2cefa0432e4e5a2b429b1a9a991490f583e5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 02:55:23 +0200 Subject: [PATCH 030/729] typo and spacing --- lgsm/functions/command_backup.sh | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 369228ab1..cdcb51856 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -9,8 +9,9 @@ local commandaction="Backup" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh +backuplock= # Check if a backup is pending or has been aborted using .backup.lock -if [ -f "${tmdpdir}/.backup.lock" ]; then +if [ -f "${tmpdir}/.backup.lock" ]; then fn_print_warning_nl "A backup is currently pending or has been aborted." while true; do read -e -i "y" -p "Continue anyway? [Y/N]" yn @@ -29,7 +30,6 @@ backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" # Tells how much will be compressed using rootdirduexbackup value from info_distro 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 @@ -38,7 +38,6 @@ while true; do * ) echo "Please answer yes or no.";; esac done -echo "" check_status.sh if [ "${status}" != "0" ]; then echo "" @@ -61,11 +60,11 @@ if [ ! -d "${backupdir}" ]; then mkdir "${backupdir}" fi # Create lockfile -touch "${tmdpdir}/.backup.lock" +touch "${tmpdir}/.backup.lock" # Compressing files tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* # Remove lockfile -rm "${tmdpdir}/.backup.lock" +rm "${tmpdir}/.backup.lock" # Check tar exit code and act accordingly if [ $? == 0 ]; then fn_print_ok_nl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size" @@ -101,6 +100,5 @@ else fn_print_error_nl "Backup failed: ${backupname}.tar.gz" fn_script_log_error "Backup failed: ${backupname}.tar.gz" fi -sleep 1 -echo "" +sleep 0.5 core_exit.sh From f7571bd13916bcfc338f55e408903d814136a724 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 03:09:04 +0200 Subject: [PATCH 031/729] empty variable --- lgsm/functions/command_backup.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index cdcb51856..3cd3b7d44 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -9,7 +9,6 @@ local commandaction="Backup" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh -backuplock= # Check if a backup is pending or has been aborted using .backup.lock if [ -f "${tmpdir}/.backup.lock" ]; then fn_print_warning_nl "A backup is currently pending or has been aborted." From 4c8b1f45a2bc9d8d548262073c39f8ba215e1ef8 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 03:27:21 +0200 Subject: [PATCH 032/729] If there are backups in backup dir. Fixes #1140 --- lgsm/functions/info_distro.sh | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index a203a2c47..3416e8133 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -105,19 +105,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 From 13f5f661b1777ce4832b5c898e6a3c0c00bd5acd Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 15:01:22 +0200 Subject: [PATCH 033/729] mainly imrpoves logging #1098 --- lgsm/functions/command_backup.sh | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 3cd3b7d44..ea51fe415 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -9,38 +9,43 @@ local commandaction="Backup" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh +fn_print_header # Check if a backup is pending or has been aborted using .backup.lock if [ -f "${tmpdir}/.backup.lock" ]; then - fn_print_warning_nl "A backup is currently pending or has been aborted." + fn_print_warning_nl "A backup is currently running or has been aborted." + fn_script_log_warn "A backup is currently running or has been aborted." while true; do read -e -i "y" -p "Continue anyway? [Y/N]" yn case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; + [Yy]* ) fn_script_log "User continues anyway"; break;; + [Nn]* ) echo Exiting; fn_script_log "User aborted"; return;; * ) echo "Please answer yes or no.";; esac done fi -info_distro.sh 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 +# 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:" echo "${backupdir}/${backupname}.tar.gz" while true; do read -e -i "y" -p "Continue? [Y/N]" yn case $yn in [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; + [Nn]* ) echo "Exiting"; fn_script_log "User aborted"; return;; * ) echo "Please answer yes or no.";; esac done + +# Check if server is started 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 @@ -60,12 +65,16 @@ if [ ! -d "${backupdir}" ]; then fi # Create lockfile touch "${tmpdir}/.backup.lock" +fn_script_log "Lockfile created" # Compressing files +fn_script_log "Compressing ${rootdirduexbackup}". tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* # Remove lockfile rm "${tmpdir}/.backup.lock" +fn_script_log "Lockfile removed" # Check tar exit code and act accordingly if [ $? == 0 ]; then + # Exit code doesn't report any error 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" @@ -76,11 +85,12 @@ if [ $? == 0 ]; then # Check if there is any backup to clear if [ "${backupclearcount}" -ne "0" ]; then fn_print_info_nl "${backupclearcount} backups older than ${backupdays} days can be cleared." + fn_script_log "${backupclearcount} backups older than ${backupdays} days can be cleared." while true; do read -p "Clear older backups? [Y/N]" yn case $yn in [Yy]* ) clearoldbackups="yes"; break;; - [Nn]* ) clearoldbackups="no"; break;; + [Nn]* ) clearoldbackups="no"; fn_script_log "User didn't clear backups"; break;; * ) echo "Please answer yes or no.";; esac done @@ -96,6 +106,7 @@ if [ $? == 0 ]; then command_start.sh fi else + # Exit code reports an error fn_print_error_nl "Backup failed: ${backupname}.tar.gz" fn_script_log_error "Backup failed: ${backupname}.tar.gz" fi From 7df6c286e231c70cdc6459382578aafef7a91930 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 15:42:47 +0200 Subject: [PATCH 034/729] Better logging, output & compatibility #1098 Also improved compatibility with older lgsm versions Commit for testing --- lgsm/functions/command_backup.sh | 51 ++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index ea51fe415..63cef9b42 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -10,6 +10,7 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh fn_print_header +fn_script_log "Backup initiated" # Check if a backup is pending or has been aborted using .backup.lock if [ -f "${tmpdir}/.backup.lock" ]; then fn_print_warning_nl "A backup is currently running or has been aborted." @@ -22,6 +23,7 @@ if [ -f "${tmpdir}/.backup.lock" ]; then * ) echo "Please answer yes or no.";; esac done +echo "" fi fn_print_dots "" sleep 0.5 @@ -30,11 +32,13 @@ 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:" echo "${backupdir}/${backupname}.tar.gz" +echo "" while true; do - read -e -i "y" -p "Continue? [Y/N]" yn + read -e -i "y" -p "Continue? [Y/n]" yn case $yn in - [Yy]* ) break;; + [Yy]* ) fn_script_log "User validates"; break;; [Nn]* ) echo "Exiting"; fn_script_log "User aborted"; return;; * ) echo "Please answer yes or no.";; esac @@ -45,13 +49,13 @@ check_status.sh if [ "${status}" != "0" ]; then echo "" fn_print_warning_nl "${servicename} is currently running." - + fin_script_log_warning "${servicename} is currently running." sleep 1 while true; do - read -p "Stop ${servicename} while running the backup? [Y/N]" yn + read -p -e -i "n" "Stop ${servicename} while running the backup? [y/N]" yn case $yn in - [Yy]* ) command_stop.sh; serverstopped="yes"; break;; - [Nn]* ) serverstopped="no"; break;; + [Yy]* ) fn_script_log "Stopping the server"; command_stop.sh; serverstopped="yes"; break;; + [Nn]* ) fn_script_log "Not stopping the server"; serverstopped="no"; break;; * ) echo "Please answer yes or no.";; esac done @@ -60,18 +64,36 @@ fi fn_print_dots "Backup in progress, please wait..." fn_script_log_info "Started backup" sleep 1 + +# 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 -touch "${tmpdir}/.backup.lock" -fn_script_log "Lockfile created" +if [ -d "${tmpdir}" ]; then + touch "${tmpdir}/.backup.lock" + fn_script_log "Lockfile created" +fi + # Compressing files fn_script_log "Compressing ${rootdirduexbackup}". tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* + # Remove lockfile -rm "${tmpdir}/.backup.lock" -fn_script_log "Lockfile removed" +if [ -d "${tmpdir}" ]; then + rm "${tmpdir}/.backup.lock" + fn_script_log "Lockfile removed" +fi + # Check tar exit code and act accordingly if [ $? == 0 ]; then # Exit code doesn't report any error @@ -87,10 +109,10 @@ if [ $? == 0 ]; then fn_print_info_nl "${backupclearcount} backups older than ${backupdays} days can be cleared." fn_script_log "${backupclearcount} backups older than ${backupdays} days can be cleared." while true; do - read -p "Clear older backups? [Y/N]" yn + read -p -e"Clear older backups? [Y/N]" yn case $yn in [Yy]* ) clearoldbackups="yes"; break;; - [Nn]* ) clearoldbackups="no"; fn_script_log "User didn't clear backups"; break;; + [Nn]* ) clearoldbackups="no"; fn_script_log "Not clearing backups"; break;; * ) echo "Please answer yes or no.";; esac done @@ -98,8 +120,13 @@ if [ $? == 0 ]; then if [ "${clearoldbackups}" == "yes" ]; then find "${backupdir}"/ -mtime +"${backupdays}" -type f -exec rm -f {} \; fn_print_ok_nl "Cleared ${backupclearcount} backups." + fn_script_log_pass "Cleared ${backupclearcount} backups." fi + else + fn_script_log "No backups older than ${backupdays} days were found." fi + else + fn_script_log "No backups to clear since backupdays variable is empty." fi # Restart the server if it was stopped for the backup if [ "${serverstopped}" == "yes" ]; then From 98614ce2402a4b44728e977368d803a883f051ba Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 16:07:08 +0200 Subject: [PATCH 035/729] typo & prompt fixes --- lgsm/functions/command_backup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 63cef9b42..e84a7b7b1 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -49,10 +49,10 @@ check_status.sh if [ "${status}" != "0" ]; then echo "" fn_print_warning_nl "${servicename} is currently running." - fin_script_log_warning "${servicename} is currently running." + fn_script_log_warn "${servicename} is currently running." sleep 1 while true; do - read -p -e -i "n" "Stop ${servicename} while running the backup? [y/N]" yn + read -e -i "n" -p "Stop ${servicename} while running the backup? [y/N]" yn case $yn in [Yy]* ) fn_script_log "Stopping the server"; command_stop.sh; serverstopped="yes"; break;; [Nn]* ) fn_script_log "Not stopping the server"; serverstopped="no"; break;; From 22e92085e0d95fbcc33ba0ff4c1bf623276415f4 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 16:27:56 +0200 Subject: [PATCH 036/729] logging & delays --- lgsm/functions/command_backup.sh | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index e84a7b7b1..d094f39e9 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -10,7 +10,7 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh fn_print_header -fn_script_log "Backup initiated" +fn_script_log "Entering backup" # Check if a backup is pending or has been aborted using .backup.lock if [ -f "${tmpdir}/.backup.lock" ]; then fn_print_warning_nl "A backup is currently running or has been aborted." @@ -32,7 +32,7 @@ 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:" +fn_script_log "A total of ${rootdirduexbackup} will be compressed into the following backup: ${backupdir}/${backupname}.tar.gz" echo "${backupdir}/${backupname}.tar.gz" echo "" while true; do @@ -50,20 +50,20 @@ if [ "${status}" != "0" ]; then echo "" fn_print_warning_nl "${servicename} is currently running." fn_script_log_warn "${servicename} is currently running." - sleep 1 + sleep 0.5 while true; do read -e -i "n" -p "Stop ${servicename} while running the backup? [y/N]" yn case $yn in - [Yy]* ) fn_script_log "Stopping the server"; command_stop.sh; serverstopped="yes"; break;; - [Nn]* ) fn_script_log "Not stopping the server"; serverstopped="no"; break;; + [Yy]* ) fn_script_log "User choose to stop the server"; command_stop.sh; serverstopped="yes"; break;; + [Nn]* ) fn_script_log "User choose to not stop the server"; serverstopped="no"; break;; * ) echo "Please answer yes or no.";; esac done fi fn_print_dots "Backup in progress, please wait..." -fn_script_log_info "Started backup" -sleep 1 +fn_script_log_info "Initiating backup" +sleep 0.5 # Directories creation # Create backupdir if it doesn't exist @@ -85,8 +85,9 @@ if [ -d "${tmpdir}" ]; then fi # Compressing files -fn_script_log "Compressing ${rootdirduexbackup}". +fn_script_log "Compressing ${rootdirduexbackup}..." tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* +fn_script_log "Compression over." # Remove lockfile if [ -d "${tmpdir}" ]; then From 0ce093960787e0d9af8c8fba1f7733cc17ba9afb Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 16:35:26 +0200 Subject: [PATCH 037/729] exitbypass=1 --- lgsm/functions/command_backup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index d094f39e9..fa2c9dd7e 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -54,7 +54,7 @@ if [ "${status}" != "0" ]; then while true; do read -e -i "n" -p "Stop ${servicename} while running the backup? [y/N]" yn case $yn in - [Yy]* ) fn_script_log "User choose to stop the server"; command_stop.sh; serverstopped="yes"; break;; + [Yy]* ) exitbypass=1; fn_script_log "User choose to stop the server"; command_stop.sh; serverstopped="yes"; break;; [Nn]* ) fn_script_log "User choose to not stop the server"; serverstopped="no"; break;; * ) echo "Please answer yes or no.";; esac @@ -131,6 +131,7 @@ if [ $? == 0 ]; then fi # Restart the server if it was stopped for the backup if [ "${serverstopped}" == "yes" ]; then + exitbypass=1 command_start.sh fi else From 645bd18e2c5c002cd29b1b40ee50486584f0b12b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 16:49:11 +0200 Subject: [PATCH 038/729] removed ending dots in script logs --- lgsm/functions/command_backup.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index fa2c9dd7e..44cf937a3 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -14,7 +14,7 @@ fn_script_log "Entering backup" # Check if a backup is pending or has been aborted using .backup.lock if [ -f "${tmpdir}/.backup.lock" ]; then fn_print_warning_nl "A backup is currently running or has been aborted." - fn_script_log_warn "A backup is currently running or has been aborted." + fn_script_log_warn "A backup is currently running or has been aborted" while true; do read -e -i "y" -p "Continue anyway? [Y/N]" yn case $yn in @@ -49,7 +49,7 @@ check_status.sh if [ "${status}" != "0" ]; then echo "" fn_print_warning_nl "${servicename} is currently running." - fn_script_log_warn "${servicename} is currently running." + fn_script_log_warn "${servicename} is currently running" sleep 0.5 while true; do read -e -i "n" -p "Stop ${servicename} while running the backup? [y/N]" yn @@ -85,9 +85,9 @@ if [ -d "${tmpdir}" ]; then fi # Compressing files -fn_script_log "Compressing ${rootdirduexbackup}..." +fn_script_log "Compressing ${rootdirduexbackup}" tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* -fn_script_log "Compression over." +fn_script_log "Compression over" # Remove lockfile if [ -d "${tmpdir}" ]; then @@ -108,7 +108,7 @@ if [ $? == 0 ]; then # Check if there is any backup to clear if [ "${backupclearcount}" -ne "0" ]; then fn_print_info_nl "${backupclearcount} backups older than ${backupdays} days can be cleared." - fn_script_log "${backupclearcount} backups older than ${backupdays} days can be cleared." + fn_script_log "${backupclearcount} backups older than ${backupdays} days can be cleared" while true; do read -p -e"Clear older backups? [Y/N]" yn case $yn in @@ -121,13 +121,13 @@ if [ $? == 0 ]; then if [ "${clearoldbackups}" == "yes" ]; then find "${backupdir}"/ -mtime +"${backupdays}" -type f -exec rm -f {} \; fn_print_ok_nl "Cleared ${backupclearcount} backups." - fn_script_log_pass "Cleared ${backupclearcount} backups." + fn_script_log_pass "Cleared ${backupclearcount} backups" fi else - fn_script_log "No backups older than ${backupdays} days were found." + fn_script_log "No backups older than ${backupdays} days were found" fi else - fn_script_log "No backups to clear since backupdays variable is empty." + fn_script_log "No backups to clear since backupdays variable is empty" fi # Restart the server if it was stopped for the backup if [ "${serverstopped}" == "yes" ]; then From d3c94296448f3cc77b83043febd4047e53384f66 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:22:44 +0200 Subject: [PATCH 039/729] backupdays --- 7DaysToDie/sdtdserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 07f7d555d..b6b6566b9 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -77,6 +77,9 @@ servercfg="${servicename}.xml" servercfgdefault="serverconfig.xml" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 1f571390f81332bf48e842820ee494663b087d26 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:33:29 +0200 Subject: [PATCH 040/729] backupdays --- ARKSurvivalEvolved/arkserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index efba11b51..5c3cf7756 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -82,6 +82,9 @@ servercfgdir="${systemdir}/Saved/Config/LinuxServer" servercfg="GameUserSettings.ini" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/GameUserSettings.ini" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From be6e70b850a55d5dca75787678d9773316f57684 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:33:35 +0200 Subject: [PATCH 041/729] backupdays --- Arma3/arma3server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Arma3/arma3server b/Arma3/arma3server index 62a760104..c7ec8d559 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -96,6 +96,9 @@ networkcfgdefault="network.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" networkcfgfullpath="${servercfgdir}/${networkcfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 35919b306c493b09090ae25a5c2fe5a5eedf1561 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:33:42 +0200 Subject: [PATCH 042/729] backupdays --- Battlefield1942/bf1942server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 14995f4cf..fbcf44b1d 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -62,6 +62,9 @@ servercfg="serversettings.con" servercfgdefault="serversettings.con" servercfgdir="${systemdir}/mods/bf1942/settings" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 4ffe0bc1fe993e57cdec1c31502d5937a2a0eb90 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:33:47 +0200 Subject: [PATCH 043/729] backupdays --- BlackMesa/bmdmserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 91fe6bb56..3fa69a53b 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -87,6 +87,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 25ee4c169f1adae98d0598c7516295a7a7cc3b65 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:33:51 +0200 Subject: [PATCH 044/729] backupdays --- BladeSymphony/bsserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index e5e071271..e2eb22b59 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -82,6 +82,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 4a77b3767ce7fbc597474f33833742a289270ab0 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:33:57 +0200 Subject: [PATCH 045/729] backupdays --- BrainBread2/bb2server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 8ff2d159c..41e46fa83 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -87,6 +87,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 8fd184f1338eaf1b2cfd0402f98d61ab2d1504dc Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:00 +0200 Subject: [PATCH 046/729] backupdays --- CodenameCURE/ccserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 3473eed80..91450d6c2 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -82,6 +82,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 90b45e98ba1ba815475b46b646fbb24ddbfb62b5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:05 +0200 Subject: [PATCH 047/729] backupdays --- CounterStrike/csserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CounterStrike/csserver b/CounterStrike/csserver index e2cdde7fc..3bb94ac05 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 7caab2b27ae182feae81051e48bdaa8aa93c2c1f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:10 +0200 Subject: [PATCH 048/729] backupdays --- CounterStrikeConditionZero/csczserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 895ec1583..57cd67cca 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From f8b9c21ceb8e09a6b2085eafe398b6c0c8302ccd Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:18 +0200 Subject: [PATCH 049/729] backupdays --- CounterStrikeGlobalOffensive/csgoserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 87425d00a..58940d70d 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -105,6 +105,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 18f5b5637b9994e4058aec486bda83d922ca6ea4 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:22 +0200 Subject: [PATCH 050/729] backupdays --- CounterStrikeSource/cssserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index e6994789e..847f7051a 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -87,6 +87,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 53e1e29d6c27edb96630248afed784da078d2a82 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:25 +0200 Subject: [PATCH 051/729] backupdays --- DayOfDefeat/dodserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index f6cd2b34e..726cef2d4 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 6a57124fd80321c8a8b17d8d1c3f66adfb112a2d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:31 +0200 Subject: [PATCH 052/729] backupdays --- DayOfDefeatSource/dodsserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 342ccc97a..c2f093202 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -82,6 +82,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 8d8a490bf4bad800a20cbeca52042b9920058797 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:34 +0200 Subject: [PATCH 053/729] backupdays --- DayOfInfamy/doiserver | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 7440b369f..bec8d423f 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -84,6 +84,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging @@ -162,4 +165,4 @@ core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 7fc7e16a0eb0f6aba0d1ebf3d4918ef17f69e371 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:39 +0200 Subject: [PATCH 054/729] backupdays --- DeathmatchClassic/dmcserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index b987c9685..6d2304e78 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 10670ee0bc3e113b275143eafa97423c2b5d8b47 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:43 +0200 Subject: [PATCH 055/729] backupdays --- DontStarveTogether/dstserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index e96d304b8..2066df512 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -81,6 +81,9 @@ servercfgdefault="settings.ini" servercfgdir="${HOME}/.klei/DoNotStarveTogether" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 7a06377eeb6b83671fdb5dcfe691313138fa9d21 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:46 +0200 Subject: [PATCH 056/729] backupdays --- DoubleActionBoogaloo/dabserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 4b8b531e9..a7e753897 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -82,6 +82,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 07fbeccc0ec943964a74844a0c9c7864d3885167 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:48 +0200 Subject: [PATCH 057/729] backupdays --- EmpiresMod/emserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 20e28b2d4..37b746012 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -87,6 +87,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 59304c3343aa9cebaa63d5d5ddd0a46bfe4907e3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:50 +0200 Subject: [PATCH 058/729] backupdays --- FistfulOfFrags/fofserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 8a9fa69c5..9d89c5975 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -82,6 +82,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From f90af8128907aeb4bafc9aa050cf4e2f34de1ef3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:52 +0200 Subject: [PATCH 059/729] backupdays --- GarrysMod/gmodserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index edc225016..257643966 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -104,6 +104,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 9b6ecf4a40dbf233b0077ca6367beb9b96805858 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:55 +0200 Subject: [PATCH 060/729] backupdays --- GoldenEyeSource/gesserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 081362d2a..c1e12f2ce 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From ff074848734e9721292c7861806603c472608ef7 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:56 +0200 Subject: [PATCH 061/729] backupdays --- HalfLife2Deathmatch/hl2dmserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index ff324c434..77ff51fe5 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From c5cfb126406bd5a026faa6699aed198b34423c26 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:34:58 +0200 Subject: [PATCH 062/729] backupdays --- HalfLifeDeathmatch/hldmserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 2716a27e9..8138ba5c3 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -76,6 +76,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 3824ba8aa4f66ea5edc4eece6ad3852aab830c1d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:00 +0200 Subject: [PATCH 063/729] backupdays --- HalfLifeDeathmatchSource/hldmsserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 0a45df162..e8c0fdaac 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 8b44d030f9c3069554c3903ae8b4d9350e5814d5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:02 +0200 Subject: [PATCH 064/729] backupdays --- Hurtworld/hwserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 2e28481b6..64d6c70f9 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -96,6 +96,9 @@ if [ "${x64mode}" == "1" ]; then else executable="./Hurtworld.x86" fi + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 2e98ce19c2854da40f5f0f1afa3612da0d0b9332 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:04 +0200 Subject: [PATCH 065/729] backupdays --- Insurgency/insserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Insurgency/insserver b/Insurgency/insserver index ba49fb494..67069ed4e 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -84,6 +84,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 1b248733fa261c104c631c2e3a33b87d4d8dfa36 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:06 +0200 Subject: [PATCH 066/729] backupdays --- JustCause2/jc2server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index af5e1e0af..e23bd6340 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -75,6 +75,9 @@ servercfg="config.lua" servercfgdefault="config.lua" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 11a172e7043e27c9709c04df0e9938f4d974340c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:08 +0200 Subject: [PATCH 067/729] backupdays --- KillingFloor/kfserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 09ad60899..1bcc2d721 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -82,6 +82,9 @@ servercfgdefault="Default.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From f98817f78ca16e789380cd05a7492fa4cc320d49 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:10 +0200 Subject: [PATCH 068/729] backupdays --- Left4Dead/l4dserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index d05cd9a79..bcf389a35 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -82,6 +82,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From ce6c7afe651d89f562ffb3828c9d94bf9b5b3456 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:12 +0200 Subject: [PATCH 069/729] backupdays --- Left4Dead2/l4d2server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index bddcaae9e..e5066d86b 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -81,6 +81,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 0f7ee2834f5619be31e471eb6fb7c47d28d80179 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:14 +0200 Subject: [PATCH 070/729] backupdays --- Minecraft/mcserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 6317fb9bc..cbf68024f 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -63,6 +63,9 @@ servercfgdefault="server.properties" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 64b750b23820054fb470535f2c12717094ff585e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:16 +0200 Subject: [PATCH 071/729] backupdays --- Mumble/mumbleserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 9e2b022ec..e774cea7d 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -63,6 +63,9 @@ servercfg="${servicename}.ini" servercfgdefault="murmur.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From c46e6586702fb0c91fcc4e4277c8204362b9c8ce Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:17 +0200 Subject: [PATCH 072/729] backupdays --- NS2Combat/ns2cserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 4dbc1e276..772522815 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -88,6 +88,9 @@ executable="./ns2combatserver_linux32" servercfgdir="${rootdir}/server1" servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 0059a17500dc36c61b78d3cbbfd0de02e2e74afe Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:19 +0200 Subject: [PATCH 073/729] backupdays --- NaturalSelection2/ns2server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 54b6ed226..967a4715f 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -88,6 +88,9 @@ executable="./server_linux32" servercfgdir="${rootdir}/server1" servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 98afad6428b573b46072f042913bfd26d7c20a4b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:21 +0200 Subject: [PATCH 074/729] backupdays --- NoMoreRoomInHell/nmrihserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index be02bfc0e..4c9f3044e 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -87,6 +87,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 93e4b68f735a78e580d91dd9401caba3d11b0088 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:23 +0200 Subject: [PATCH 075/729] backupdays --- OpposingForce/opforserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 5013110e2..597f82a69 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 59afb067bde43741a59c4ace44ae9478fa94030c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:25 +0200 Subject: [PATCH 076/729] backupdays --- PiratesVikingandKnightsII/pvkiiserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 5074af33e..5192f77a2 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -82,6 +82,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From c0aa39a746f6c310220705a94f3aac533883f11a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:26 +0200 Subject: [PATCH 077/729] backupdays --- ProjectZomboid/pzserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 143c382c6..2e898f041 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -78,6 +78,9 @@ servercfg="server.ini" servercfgdefault="server.cfg" servercfgdir="${HOME}/Zomboid/Server" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 2f2cefa2e5ae641ba90c16c59ed10b12d79d9565 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:29 +0200 Subject: [PATCH 078/729] backupdays --- QuakeLive/qlserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index accf6aadf..44246a67f 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -85,6 +85,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${filesdir}/baseq3" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 2a2dd575eeed5d8ab191b4fa34fb89e48807fe84 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:31 +0200 Subject: [PATCH 079/729] backupdays --- RedOrchestra/roserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 66b85d98e..c2c4eaa4f 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -73,6 +73,9 @@ servercfgdefault="default.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 3812ba8b81a9bd42e8878e726846c96bbbe46760 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:34 +0200 Subject: [PATCH 080/729] backupdays --- Ricochet/ricochetserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index ff5862808..ee538a8e2 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From a7ea1d34707af1100ae8275e528e5c6e89704f15 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:36 +0200 Subject: [PATCH 081/729] backupdays --- Rust/rustserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Rust/rustserver b/Rust/rustserver index 6e5f8f76a..7d515b1f0 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -100,6 +100,9 @@ servercfg="server.cfg" servercfgdefault="server.cfg" servercfgdir="${serveridentitydir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 9a470af641dc62fb83aa7c01f30cf88740e0e74d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:38 +0200 Subject: [PATCH 082/729] backupdays --- SeriousSam3BFE/ss3sserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 35b78d831..56f7f5bd9 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -77,6 +77,9 @@ servercfg="${servicename}.ini" servercfgdefault="server.ini" servercfgdir="${filesdir}/Content/SeriousSam3/Config" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From dda4a24cc22d8761fbd45afc33acf4d07cb03ad3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:39 +0200 Subject: [PATCH 083/729] backupdays --- Starbound/sbserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Starbound/sbserver b/Starbound/sbserver index 197d93ee3..cc6a1f462 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -76,6 +76,9 @@ servercfg="starbound_server.config" servercfgdefault="starbound_server.config" servercfgdir="${filesdir}/storage" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From b1a9dfe25f92a0a8ed2a8ccf84d1d04cc1438295 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:41 +0200 Subject: [PATCH 084/729] backupdays --- SvenCoop/svenserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index c89ffb88d..a27645c02 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -81,6 +81,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 6c0dbdbd1b3de79725d89f10e02531f3a740cf56 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:43 +0200 Subject: [PATCH 085/729] backupdays --- TeamFortress2/tf2server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 972e60903..1255ad0b5 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -87,6 +87,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From d0d31d4ed3d4b7f78db52981b264264836b67f08 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:45 +0200 Subject: [PATCH 086/729] backupdays --- TeamFortressClassic/tfcserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 4a9496d35..5cbb7dcb4 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -77,6 +77,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From bedc7e048a8e7446913131e1efd8091db624c965 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:46 +0200 Subject: [PATCH 087/729] backupdays --- TeamSpeak3/ts3server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 2c0af6bd5..fb8d4e24b 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -50,6 +50,9 @@ servercfg="${servicename}.ini" servercfgdefault="ts3server.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 9e9b9b026ffe5ddad97fdbba3b538f41e75a82b7 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:48 +0200 Subject: [PATCH 088/729] backupdays --- Teeworlds/twserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 8ab31bbcb..4010ea6b3 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -72,6 +72,9 @@ servercfg="${servicename}.cfg" # Teeworlds can also auto load any config if an a servercfgdefault="server.cfg" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 8ffda2dc7ba04a90d944f298968d19f84aab10af Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:50 +0200 Subject: [PATCH 089/729] backupdays --- Terraria/terrariaserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index fba75083f..d0564fb87 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -72,6 +72,9 @@ servercfg="${servicename}.txt" servercfgdefault="serverconfig.txt" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From 54009dbf97722887c508fbc7f17ec477014a58a4 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:52 +0200 Subject: [PATCH 090/729] backupdays --- UnrealTournament/utserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index a5ff70a61..fd20b128a 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -68,6 +68,9 @@ executable="./UE4Server-Linux-Shipping" servercfg="Game.ini" servercfgdir="${systemdir}/UnrealTournament/Saved/Config/LinuxServer" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From cb79093598de58ae16f827bf453abc96a93cfa34 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:53 +0200 Subject: [PATCH 091/729] backupdays --- UnrealTournament2004/ut2k4server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 3c82b7e7b..c86b2f824 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -56,6 +56,9 @@ servercfgdefault="UT2004.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From f1307331c99b5abc56e3dacdb878ed863e875588 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:55 +0200 Subject: [PATCH 092/729] backupdays --- UnrealTournament3/ut3server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 780da1fb8..21e8ba06f 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -76,6 +76,9 @@ servercfg="${servicename}.ini" servercfgdefault="UTGame.ini" servercfgdir="${systemdir}/UTGame/Config" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From e43e8349d606d0404f5d64792202502d2977dae6 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:57 +0200 Subject: [PATCH 093/729] backupdays --- UnrealTournament99/ut99server | 3 +++ 1 file changed, 3 insertions(+) diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 771882279..388b03e25 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -65,6 +65,9 @@ servercfgdefault="Default.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From f7f8c7f536fb3dc8d9f57b4f53026454147a86c4 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:35:59 +0200 Subject: [PATCH 094/729] backupdays --- WolfensteinEnemyTerritory/wetserver | 3 +++ 1 file changed, 3 insertions(+) diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 35642cdd6..16358debe 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -62,6 +62,9 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/etmain" servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backup +backupdays="30" backupdir="${rootdir}/backups" # Logging From ea8fede3e8e736018f5580b1d9f6ba43de8da97e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 17:49:21 +0200 Subject: [PATCH 095/729] fn_check_cfgdir for Rust fixes #1141 --- lgsm/functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 5c241aec5..4a036eabc 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -307,6 +307,7 @@ 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 @@ -390,4 +391,3 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_default_config_remote fn_set_config_vars fi - From 1752d79d197ba8896e3b7a462a1f6f97d2c5dacb Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 18:03:25 +0200 Subject: [PATCH 096/729] fn_set_config_vars is not for every game removing some games i know don't use it --- lgsm/functions/install_config.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 4a036eabc..a94183499 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 @@ -311,7 +310,6 @@ elif [ "${gamename}" == "Rust" ]; then 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 ) @@ -347,7 +345,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 ) From 63a040cf83f64fb56e9efb12ae686987c528f7d9 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 18:12:33 +0200 Subject: [PATCH 097/729] Install config if missing fixes #1142 --- lgsm/functions/check_config.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 From c0b3fc2a0221b48cc7ec9d402bb3bddc6e0d815d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 19:44:55 +0200 Subject: [PATCH 098/729] Clear more logs #1137 --- lgsm/functions/logs.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 From d47037d78276065fc5836ff92236f84d57c96564 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 23:09:43 +0200 Subject: [PATCH 099/729] Putting all this into functions & prepare noprompt --- lgsm/functions/command_backup.sh | 193 +++++++++++++++++++++---------- 1 file changed, 133 insertions(+), 60 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 44cf937a3..01a6c3d03 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -11,56 +11,86 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh fn_print_header fn_script_log "Entering backup" + # Check if a backup is pending or has been aborted using .backup.lock -if [ -f "${tmpdir}/.backup.lock" ]; then - fn_print_warning_nl "A backup is currently running or has been aborted." - fn_script_log_warn "A backup is currently running or has been aborted" - while true; do - read -e -i "y" -p "Continue anyway? [Y/N]" yn - case $yn in - [Yy]* ) fn_script_log "User continues anyway"; break;; - [Nn]* ) echo Exiting; fn_script_log "User aborted"; return;; - * ) echo "Please answer yes or no.";; - esac - done -echo "" -fi -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" -echo "" -while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) fn_script_log "User validates"; break;; - [Nn]* ) echo "Exiting"; fn_script_log "User aborted"; return;; - * ) echo "Please answer yes or no.";; -esac -done +fn_check_pending_backup(){ + if [ -f "${tmpdir}/.backup.lock" ]; then + fn_print_warning_nl "A backup is currently running or has been aborted." + fn_script_log_warn "A backup is currently running or has been aborted" + if [ "${backupnoprompt}" == "1" ]; then + # Exit if is in noprompt mode + fn_print_error "Backup already in progress" + fn_script_log_fatal "Backup already in progress" + core_exit.sh + else + # Prompts user if in regular mode + while true; do + read -e -i "y" -p "Continue anyway? [Y/N]" yn + case $yn in + [Yy]* ) fn_script_log "User continues anyway"; break;; + [Nn]* ) echo Exiting; fn_script_log "User aborted"; return;; + * ) echo "Please answer yes or no.";; + esac + done + echo "" + fi + fi +} -# Check if server is started -check_status.sh -if [ "${status}" != "0" ]; then - echo "" - fn_print_warning_nl "${servicename} is currently running." - fn_script_log_warn "${servicename} is currently running" +# Initialization +fn_backup_init(){ + fn_print_dots "" sleep 0.5 - while true; do - read -e -i "n" -p "Stop ${servicename} while running the backup? [y/N]" yn - case $yn in - [Yy]* ) exitbypass=1; fn_script_log "User choose to stop the server"; command_stop.sh; serverstopped="yes"; break;; - [Nn]* ) fn_script_log "User choose to not stop the server"; serverstopped="no"; break;; - * ) echo "Please answer yes or no.";; - esac - done -fi + # 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" + echo "" + # Prompt to start the backup if not in noprompt mode + if [ "${backupnoprompt}" != "1" ]; then + while true; do + read -e -i "y" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) fn_script_log "User validates"; break;; + [Nn]* ) echo "Exiting"; fn_script_log "User aborted"; return;; + * ) echo "Please answer yes or no.";; + esac + done + echo "" + fi +} + + +# Check if server is started +fn_backup_stop_server(){ + check_status.sh + if [ "${status}" != "0" ]; then + echo "" + fn_print_warning_nl "${servicename} is currently running." + fn_script_log_warn "${servicename} is currently running" + sleep 0.5 + if [ "${backupnoprompt}" == "1" ]; then + # Don't stop the server in noprompt mode + serverstopped="no" + else + # Otherwise ask the user if it should be stopped or not + while true; do + read -e -i "n" -p "Stop ${servicename} while running the backup? [y/N]" yn + case $yn in + [Yy]* ) exitbypass=1; fn_script_log "User choose to stop the server"; command_stop.sh; serverstopped="yes"; break;; + [Nn]* ) fn_script_log "User choose to not stop the server"; serverstopped="no"; break;; + * ) echo "Please answer yes or no.";; + esac + done + fi + fi +} +# Create required folders +fn_backup_directories(){ fn_print_dots "Backup in progress, please wait..." fn_script_log_info "Initiating backup" sleep 0.5 @@ -78,30 +108,60 @@ if [ -n "${tmpdir}" ]&&[ ! -d "${tmpdir}" ]; then 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 + backupresult="FAIL" + else + backupresult="PASS" + fi +} # Remove lockfile -if [ -d "${tmpdir}" ]; then +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}" == "PASS" ]; 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 +} -# Check tar exit code and act accordingly -if [ $? == 0 ]; then - # Exit code doesn't report any error - 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" - - # Clear old backups if backupdays variable exists + +# Clear old backups according to maxbackups and maxbackupdays variables +fn_backup_clearing(){ if [ -n "${backupdays}" ]; then # Count how many backups can be cleared backupclearcount=$(find "${backupdir}"/ -type f -mtime +"${backupdays}"|wc -l) @@ -129,15 +189,28 @@ if [ $? == 0 ]; then else fn_script_log "No backups to clear since backupdays variable is empty" fi - # Restart the server if it was stopped for the backup +} + +# Restart the server if it was stopped for the backup +fn_backup_start_back(){ if [ "${serverstopped}" == "yes" ]; then exitbypass=1 command_start.sh fi -else - # Exit code reports an error - fn_print_error_nl "Backup failed: ${backupname}.tar.gz" - fn_script_log_error "Backup failed: ${backupname}.tar.gz" -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 From e9216cf0c4b3138d2883599a3002be24f9cea58c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 23:12:28 +0200 Subject: [PATCH 100/729] noprompt again --- lgsm/functions/command_backup.sh | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 01a6c3d03..8f3548ab8 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -169,15 +169,19 @@ fn_backup_clearing(){ if [ "${backupclearcount}" -ne "0" ]; then fn_print_info_nl "${backupclearcount} backups older than ${backupdays} days can be cleared." fn_script_log "${backupclearcount} backups older than ${backupdays} days can be cleared" - while true; do - read -p -e"Clear older backups? [Y/N]" yn - case $yn in - [Yy]* ) clearoldbackups="yes"; break;; - [Nn]* ) clearoldbackups="no"; fn_script_log "Not clearing backups"; break;; - * ) echo "Please answer yes or no.";; - esac - done - # If user wants to clear backups + if [ "${backupnoprompt}" != "1" ]; then + while true; do + read -p -e"Clear older backups? [Y/N]" yn + case $yn in + [Yy]* ) clearoldbackups="yes"; break;; + [Nn]* ) clearoldbackups="no"; fn_script_log "Not clearing backups"; break;; + * ) echo "Please answer yes or no.";; + esac + done + else + clearoldbackups="yes" + fi + # If user wants to clear backups or if noprompt if [ "${clearoldbackups}" == "yes" ]; then find "${backupdir}"/ -mtime +"${backupdays}" -type f -exec rm -f {} \; fn_print_ok_nl "Cleared ${backupclearcount} backups." From 18b06485415e1010c61a33ae39296f7ae4d8ea55 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 23:19:04 +0200 Subject: [PATCH 101/729] PASS vs FAIL --- lgsm/functions/command_backup.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 8f3548ab8..2e3aefd9a 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -127,11 +127,11 @@ fn_script_log "Compression over" # Check tar exit code and set the result fn_check_tar_exit(){ - if [ $? == 0 ]; then - backupresult="FAIL" - else - backupresult="PASS" - fi +if [ $? == 0 ]; then + backupresult="PASS" +else + backupresult="FAIL" +fi } # Remove lockfile @@ -148,7 +148,7 @@ fn_backup_summary(){ 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}" == "PASS" ]; then + 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 From 53862daa9c1ac04c86ab0a1834405d00c890b095 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 20 Oct 2016 23:27:08 +0200 Subject: [PATCH 102/729] fix prompt & contrib --- lgsm/functions/command_backup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 2e3aefd9a..71c54efd1 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. @@ -171,7 +172,7 @@ fn_backup_clearing(){ fn_script_log "${backupclearcount} backups older than ${backupdays} days can be cleared" if [ "${backupnoprompt}" != "1" ]; then while true; do - read -p -e"Clear older backups? [Y/N]" yn + read -e -p "Clear older backups? [Y/N]" yn case $yn in [Yy]* ) clearoldbackups="yes"; break;; [Nn]* ) clearoldbackups="no"; fn_script_log "Not clearing backups"; break;; From 5a5ca5769cc1058cb07be25dbad7b4b18d4aa2b6 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 00:35:06 +0200 Subject: [PATCH 103/729] noprompt & shutdownonbackup #1098 variable renaming as well, maxbackupdays --- lgsm/functions/command_backup.sh | 101 +++++++++---------------------- 1 file changed, 30 insertions(+), 71 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 71c54efd1..e4a0a7949 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -18,24 +18,10 @@ fn_check_pending_backup(){ if [ -f "${tmpdir}/.backup.lock" ]; then fn_print_warning_nl "A backup is currently running or has been aborted." fn_script_log_warn "A backup is currently running or has been aborted" - if [ "${backupnoprompt}" == "1" ]; then # Exit if is in noprompt mode - fn_print_error "Backup already in progress" + fn_print_error "Backup already in progress." fn_script_log_fatal "Backup already in progress" core_exit.sh - else - # Prompts user if in regular mode - while true; do - read -e -i "y" -p "Continue anyway? [Y/N]" yn - case $yn in - [Yy]* ) fn_script_log "User continues anyway"; break;; - [Nn]* ) echo Exiting; fn_script_log "User aborted"; return;; - * ) echo "Please answer yes or no.";; - esac - done - echo "" - fi - fi } # Initialization @@ -50,43 +36,31 @@ fn_backup_init(){ fn_script_log "A total of ${rootdirduexbackup} will be compressed into the following backup: ${backupdir}/${backupname}.tar.gz" echo "${backupdir}/${backupname}.tar.gz" echo "" - # Prompt to start the backup if not in noprompt mode - if [ "${backupnoprompt}" != "1" ]; then - while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) fn_script_log "User validates"; break;; - [Nn]* ) echo "Exiting"; fn_script_log "User aborted"; return;; - * ) echo "Please answer yes or no.";; - esac - done - echo "" - fi } -# Check if server is started +# Check if server is started and wether to shut it down fn_backup_stop_server(){ check_status.sh - if [ "${status}" != "0" ]; then - echo "" - fn_print_warning_nl "${servicename} is currently running." - fn_script_log_warn "${servicename} is currently running" - sleep 0.5 - if [ "${backupnoprompt}" == "1" ]; then - # Don't stop the server in noprompt mode - serverstopped="no" - else - # Otherwise ask the user if it should be stopped or not - while true; do - read -e -i "n" -p "Stop ${servicename} while running the backup? [y/N]" yn - case $yn in - [Yy]* ) exitbypass=1; fn_script_log "User choose to stop the server"; command_stop.sh; serverstopped="yes"; break;; - [Nn]* ) fn_script_log "User choose to not stop the server"; serverstopped="no"; break;; - * ) echo "Please answer yes or no.";; - esac - done - fi + echo "" + # Server is shut down + if [ "${status}" == "0" ]; then + serverstopped="no" + # Server is up and shutdownonbackup is off + elif [ "${shutdownonbackup}" == "off" ]; then + serverstopped="no" + fn_print_warning_nl "${servicename} is started and will not be stopped." + fn_print_info_nl "It is advised to shutdown the server to prevent a file change during compression resulting in a tar error." + fn_script_log_warn "${servicename} is started during the backup" + fn_script_log_info "It is advised to shutdown the server to prevent a file change during compression resulting in a tar error." + # Server is up and will be stopped if shutdownonbackup 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 } @@ -163,36 +137,21 @@ fn_backup_summary(){ # Clear old backups according to maxbackups and maxbackupdays variables fn_backup_clearing(){ - if [ -n "${backupdays}" ]; then + if [ -n "${maxbackupdays}" ]; then # Count how many backups can be cleared - backupclearcount=$(find "${backupdir}"/ -type f -mtime +"${backupdays}"|wc -l) + backupclearcount=$(find "${backupdir}"/ -type f -mtime +"${maxbackupdays}"|wc -l) # Check if there is any backup to clear if [ "${backupclearcount}" -ne "0" ]; then - fn_print_info_nl "${backupclearcount} backups older than ${backupdays} days can be cleared." - fn_script_log "${backupclearcount} backups older than ${backupdays} days can be cleared" - if [ "${backupnoprompt}" != "1" ]; then - while true; do - read -e -p "Clear older backups? [Y/N]" yn - case $yn in - [Yy]* ) clearoldbackups="yes"; break;; - [Nn]* ) clearoldbackups="no"; fn_script_log "Not clearing backups"; break;; - * ) echo "Please answer yes or no.";; - esac - done - else - clearoldbackups="yes" - fi - # If user wants to clear backups or if noprompt - if [ "${clearoldbackups}" == "yes" ]; then - find "${backupdir}"/ -mtime +"${backupdays}" -type f -exec rm -f {} \; - fn_print_ok_nl "Cleared ${backupclearcount} backups." - fn_script_log_pass "Cleared ${backupclearcount} backups" - fi + fn_print_info_nl "${backupclearcount} backups older than ${maxbackupdays} days can be cleared." + fn_script_log "${backupclearcount} backups older than ${maxbackupdays} days can be cleared" + find "${backupdir}"/ -mtime +"${maxbackupdays}" -type f -exec rm -f {} \; + fn_print_ok_nl "Cleared ${backupclearcount} backups." + fn_script_log_pass "Cleared ${backupclearcount} backups" else - fn_script_log "No backups older than ${backupdays} days were found" + fn_script_log "No backups older than ${maxbackupdays} days were found" fi else - fn_script_log "No backups to clear since backupdays variable is empty" + fn_script_log "No backups to clear since maxbackupdays variable is empty" fi } From 026ddcdd52519cbea6dc2573c1916b1bc16657d2 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 00:42:17 +0200 Subject: [PATCH 104/729] fix syntax & messages #1098 --- lgsm/functions/command_backup.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index e4a0a7949..0dae1117d 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -16,12 +16,13 @@ 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_warning_nl "A backup is currently running or has been aborted." - fn_script_log_warn "A backup is currently running or has been aborted" - # Exit if is in noprompt mode - fn_print_error "Backup already in progress." - fn_script_log_fatal "Backup already in progress" - core_exit.sh + 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 From 8d1167c596f5f49354443f979b1346d5998dd3ec Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 00:49:36 +0200 Subject: [PATCH 105/729] messages and echos --- lgsm/functions/command_backup.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 0dae1117d..5669b66e4 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -36,14 +36,12 @@ fn_backup_init(){ 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" - echo "" } # Check if server is started and wether to shut it down fn_backup_stop_server(){ check_status.sh - echo "" # Server is shut down if [ "${status}" == "0" ]; then serverstopped="no" @@ -149,6 +147,7 @@ fn_backup_clearing(){ fn_print_ok_nl "Cleared ${backupclearcount} backups." fn_script_log_pass "Cleared ${backupclearcount} backups" else + fn_print_info_nl "No backups older than ${maxbackupdays} days were found." fn_script_log "No backups older than ${maxbackupdays} days were found" fi else From 14188268f7627ffcc092c10a15802168b7f85a0b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 01:04:23 +0200 Subject: [PATCH 106/729] messages that make more sense #1098 --- lgsm/functions/command_backup.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 5669b66e4..3182f5ea5 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -48,10 +48,10 @@ fn_backup_stop_server(){ # Server is up and shutdownonbackup is off elif [ "${shutdownonbackup}" == "off" ]; then serverstopped="no" - fn_print_warning_nl "${servicename} is started and will not be stopped." - fn_print_info_nl "It is advised to shutdown the server to prevent a file change during compression resulting in a tar error." - fn_script_log_warn "${servicename} is started during the backup" - fn_script_log_info "It is advised to shutdown the server to prevent a file change during compression resulting in a tar error." + 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 shutdownonbackup has no value or anything else than "off" else fn_print_warning_nl "${servicename} will be stopped during the backup." From 430fbe9d7d8275aa911a7d970e6c1c18c615945b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 03:40:09 +0200 Subject: [PATCH 107/729] preparing maxbackups some work in fn_backup_clearing is needed for this to work properly --- lgsm/functions/command_backup.sh | 43 +++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 3182f5ea5..5abb78ed8 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -10,7 +10,6 @@ local commandaction="Backup" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh -fn_print_header fn_script_log "Entering backup" # Check if a backup is pending or has been aborted using .backup.lock @@ -136,23 +135,39 @@ fn_backup_summary(){ # Clear old backups according to maxbackups and maxbackupdays variables fn_backup_clearing(){ - if [ -n "${maxbackupdays}" ]; then - # Count how many backups can be cleared - backupclearcount=$(find "${backupdir}"/ -type f -mtime +"${maxbackupdays}"|wc -l) - # Check if there is any backup to clear - if [ "${backupclearcount}" -ne "0" ]; then - fn_print_info_nl "${backupclearcount} backups older than ${maxbackupdays} days can be cleared." - fn_script_log "${backupclearcount} backups older than ${maxbackupdays} days can be cleared" +# How many backups there are +backupscount=$(find "${backupdir}/" -type f -name "*.tar.gz"|wc -l) +# How many backups exceed maxbackups +backupquotadiff=$((backupscount-maxbackups)) +#backupquotadiff=$(find ${backupdir}"/ -type f -printf '%T@ %p\n' | sort -rn | tail -n +"${maxbackups}" | cut -f2- -d" " | wc -l) +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 is used over maxbackupdays + if [ "${backupquotadiff}" -gt "${backupsoudatedcount}" ]||[ "${backupquotadiff}" -eq "${backupsoudatedcount}" ]; then + # Display how many backups will be cleared + echo "${backupquotadiff} backups will be clearned" + fn_print_info_nl "${backupquotadiff} backups than max ${maxbackups} will be cleared." + fn_script_log "${backupquotadiff} backups than max ${maxbackups} will be cleared" + echo "... Once this update is over" + # Clear over quota backups + #find "${backupdir}"/ -type f -printf '%T@ %p\n' | sort -rn | tail "${backupquotadiff}" | cut -f2- -d" " + # If maxbackupdays is used over maxbackups + elif [ "${backupquotadiff}" -gt "${backupsoudatedcount}" ]; then + # Display how many backups will be cleared + fn_print_info_nl "${backupsoudatedcount} backups older than ${maxbackupdays} days will be cleared." + fn_script_log "${backupsoudatedcount} backups older than ${maxbackupdays} days will be cleared" find "${backupdir}"/ -mtime +"${maxbackupdays}" -type f -exec rm -f {} \; - fn_print_ok_nl "Cleared ${backupclearcount} backups." - fn_script_log_pass "Cleared ${backupclearcount} backups" + fn_print_ok_nl "Cleared ${backupsoudatedcount} backups." + fn_script_log_pass "Cleared ${backupsoudatedcount} backups" else - fn_print_info_nl "No backups older than ${maxbackupdays} days were found." fn_script_log "No backups older than ${maxbackupdays} days were found" - fi - else - fn_script_log "No backups to clear since maxbackupdays variable is empty" fi +else + fn_script_log "No backups to clear since maxbackupdays variable is empty" +fi } # Restart the server if it was stopped for the backup From f54f546830e257c4cb209902d0a036cf96a40081 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 03:45:40 +0200 Subject: [PATCH 108/729] typos --- lgsm/functions/command_backup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 5abb78ed8..d45f11434 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -142,7 +142,7 @@ backupquotadiff=$((backupscount-maxbackups)) #backupquotadiff=$(find ${backupdir}"/ -type f -printf '%T@ %p\n' | sort -rn | tail -n +"${maxbackups}" | cut -f2- -d" " | wc -l) backupsoudatedcount=$(find "${backupdir}"/ -type f -name "*.tar.gz" -mtime +"${maxbackupdays}"|wc -l) # If backup variables are set -if [ -n "${maxbackupdays}" ]&&{ -n "${maxbackups}" ]; then +if [ -n "${maxbackupdays}" ]&&[ -n "${maxbackups}" ]; then # If anything can be cleared if [ "${backupquotadiff}" -gt "0" ]||[ "${backupsoudatedcount}" -gt "0" ]; then # If maxbackups is used over maxbackupdays @@ -164,6 +164,7 @@ if [ -n "${maxbackupdays}" ]&&{ -n "${maxbackups}" ]; then fn_script_log_pass "Cleared ${backupsoudatedcount} backups" else fn_script_log "No backups older than ${maxbackupdays} days were found" + fi fi else fn_script_log "No backups to clear since maxbackupdays variable is empty" From fc3abd0db56b37112d2fb2511795e354dad8d202 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 03:48:34 +0200 Subject: [PATCH 109/729] stoponbackup --- lgsm/functions/command_backup.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index d45f11434..623191bf6 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -38,20 +38,20 @@ fn_backup_init(){ } -# Check if server is started and wether to shut it down +# Check if server is started and wether to stop it fn_backup_stop_server(){ check_status.sh - # Server is shut down + # Server is stopped if [ "${status}" == "0" ]; then serverstopped="no" - # Server is up and shutdownonbackup is off - elif [ "${shutdownonbackup}" == "off" ]; then + # 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 shutdownonbackup has no value or anything else than "off" + # 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" From 0eee074edb4c33ec1da0a3b61d6d5227d9cc3647 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 03:51:30 +0200 Subject: [PATCH 110/729] less than --- lgsm/functions/command_backup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 623191bf6..83f9204aa 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -155,7 +155,7 @@ if [ -n "${maxbackupdays}" ]&&[ -n "${maxbackups}" ]; then # Clear over quota backups #find "${backupdir}"/ -type f -printf '%T@ %p\n' | sort -rn | tail "${backupquotadiff}" | cut -f2- -d" " # If maxbackupdays is used over maxbackups - elif [ "${backupquotadiff}" -gt "${backupsoudatedcount}" ]; then + elif [ "${backupquotadiff}" -lt "${backupsoudatedcount}" ]; then # Display how many backups will be cleared fn_print_info_nl "${backupsoudatedcount} backups older than ${maxbackupdays} days will be cleared." fn_script_log "${backupsoudatedcount} backups older than ${maxbackupdays} days will be cleared" From 0d986a99cd56254222d43ae1712fa5cdd0c59894 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 04:03:14 +0200 Subject: [PATCH 111/729] should work, to be tested --- lgsm/functions/command_backup.sh | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 83f9204aa..b198278b3 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -139,21 +139,20 @@ fn_backup_clearing(){ backupscount=$(find "${backupdir}/" -type f -name "*.tar.gz"|wc -l) # How many backups exceed maxbackups backupquotadiff=$((backupscount-maxbackups)) -#backupquotadiff=$(find ${backupdir}"/ -type f -printf '%T@ %p\n' | sort -rn | tail -n +"${maxbackups}" | cut -f2- -d" " | wc -l) 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 is used over maxbackupdays + # 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 echo "${backupquotadiff} backups will be clearned" - fn_print_info_nl "${backupquotadiff} backups than max ${maxbackups} will be cleared." - fn_script_log "${backupquotadiff} backups than max ${maxbackups} will be cleared" - echo "... Once this update is over" + fn_print_info_nl "${backupquotadiff} backups exceed max ${maxbackups} and will be cleared." + fn_script_log "${backupquotadiff} backups exceed max ${maxbackups} and will be cleared" + sleep 2 # Clear over quota backups - #find "${backupdir}"/ -type f -printf '%T@ %p\n' | sort -rn | tail "${backupquotadiff}" | cut -f2- -d" " + find "${backupdir}"/ -type f -name "*.tar.gz" -printf '%T@ %p\n' | sort -rn | tail -${backupquotadiff} | cut -f2- -d" " | xargs rm # If maxbackupdays is used over maxbackups elif [ "${backupquotadiff}" -lt "${backupsoudatedcount}" ]; then # Display how many backups will be cleared From f4026704bb96e18abc23ad2641cbd6eb4e4baca3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 04:08:04 +0200 Subject: [PATCH 112/729] output and logging --- lgsm/functions/command_backup.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index b198278b3..2862859f4 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -153,6 +153,8 @@ if [ -n "${maxbackupdays}" ]&&[ -n "${maxbackups}" ]; then 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} backups." + fn_script_log "Cleared ${backupquotadiff} backups" # If maxbackupdays is used over maxbackups elif [ "${backupquotadiff}" -lt "${backupsoudatedcount}" ]; then # Display how many backups will be cleared From b68ebd8d1c910057d4e0028a04d88b0e6e7d49b3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 12:58:45 +0200 Subject: [PATCH 113/729] messages --- lgsm/functions/command_backup.sh | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 2862859f4..199226ba9 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -147,28 +147,27 @@ if [ -n "${maxbackupdays}" ]&&[ -n "${maxbackups}" ]; 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 - echo "${backupquotadiff} backups will be clearned" - fn_print_info_nl "${backupquotadiff} backups exceed max ${maxbackups} and will be cleared." - fn_script_log "${backupquotadiff} backups exceed max ${maxbackups} and 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} backups." - fn_script_log "Cleared ${backupquotadiff} backups" + 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} backups older than ${maxbackupdays} days will be cleared." - fn_script_log "${backupsoudatedcount} backups older than ${maxbackupdays} days 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}"/ -mtime +"${maxbackupdays}" -type f -exec rm -f {} \; - fn_print_ok_nl "Cleared ${backupsoudatedcount} backups." - fn_script_log_pass "Cleared ${backupsoudatedcount} backups" + 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_script_log "No backups to clear since maxbackupdays variable is empty" + fn_script_log "No backups to clear since maxbackupdays and maxbackups variables are not set" fi } From 2b2ba030a6384d3a2d2af5cef704648c380fc16a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 16:53:10 +0200 Subject: [PATCH 114/729] comment --- lgsm/functions/command_backup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 199226ba9..3082c563e 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -139,6 +139,7 @@ fn_backup_clearing(){ 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 From 240766b7c4e97c1bea2d3e1c88f6f7c2572d29d2 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 21 Oct 2016 16:50:06 +0200 Subject: [PATCH 115/729] New backup functionnalities # Backup maxbackups="4" maxbackupdays="30" stoponbackup="on" --- 7DaysToDie/sdtdserver | 4 +++- ARKSurvivalEvolved/arkserver | 4 +++- Arma3/arma3server | 4 +++- Battlefield1942/bf1942server | 4 +++- BlackMesa/bmdmserver | 4 +++- BladeSymphony/bsserver | 4 +++- BrainBread2/bb2server | 4 +++- CodenameCURE/ccserver | 4 +++- CounterStrike/csserver | 4 +++- CounterStrikeConditionZero/csczserver | 4 +++- CounterStrikeGlobalOffensive/csgoserver | 4 +++- CounterStrikeSource/cssserver | 4 +++- DayOfDefeat/dodserver | 4 +++- DayOfDefeatSource/dodsserver | 4 +++- DayOfInfamy/doiserver | 4 +++- DeathmatchClassic/dmcserver | 4 +++- DontStarveTogether/dstserver | 4 +++- DoubleActionBoogaloo/dabserver | 4 +++- EmpiresMod/emserver | 4 +++- FistfulOfFrags/fofserver | 4 +++- GarrysMod/gmodserver | 4 +++- GoldenEyeSource/gesserver | 4 +++- HalfLife2Deathmatch/hl2dmserver | 4 +++- HalfLifeDeathmatch/hldmserver | 4 +++- HalfLifeDeathmatchSource/hldmsserver | 4 +++- Hurtworld/hwserver | 4 +++- Insurgency/insserver | 4 +++- JustCause2/jc2server | 4 +++- KillingFloor/kfserver | 4 +++- Left4Dead/l4dserver | 4 +++- Left4Dead2/l4d2server | 4 +++- Minecraft/mcserver | 4 +++- Mumble/mumbleserver | 4 +++- NS2Combat/ns2cserver | 4 +++- NaturalSelection2/ns2server | 4 +++- NoMoreRoomInHell/nmrihserver | 4 +++- OpposingForce/opforserver | 4 +++- PiratesVikingandKnightsII/pvkiiserver | 4 +++- ProjectZomboid/pzserver | 4 +++- QuakeLive/qlserver | 4 +++- RedOrchestra/roserver | 4 +++- Ricochet/ricochetserver | 4 +++- Rust/rustserver | 4 +++- SeriousSam3BFE/ss3sserver | 4 +++- Starbound/sbserver | 4 +++- SvenCoop/svenserver | 4 +++- TeamFortress2/tf2server | 4 +++- TeamFortressClassic/tfcserver | 4 +++- TeamSpeak3/ts3server | 4 +++- Teeworlds/twserver | 4 +++- Terraria/terrariaserver | 4 +++- UnrealTournament/utserver | 4 +++- UnrealTournament2004/ut2k4server | 4 +++- UnrealTournament3/ut3server | 4 +++- UnrealTournament99/ut99server | 4 +++- WolfensteinEnemyTerritory/wetserver | 4 +++- 56 files changed, 168 insertions(+), 56 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index b6b6566b9..9eeb62a99 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -79,7 +79,9 @@ servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 5c3cf7756..6263c51e0 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -84,7 +84,9 @@ servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/GameUserSettings.ini" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Arma3/arma3server b/Arma3/arma3server index c7ec8d559..3d727f5f1 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -98,7 +98,9 @@ servercfgfullpath="${servercfgdir}/${servercfg}" networkcfgfullpath="${servercfgdir}/${networkcfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index fbcf44b1d..46ebcceee 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -64,7 +64,9 @@ servercfgdir="${systemdir}/mods/bf1942/settings" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 3fa69a53b..a61821b1d 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -89,7 +89,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index e2eb22b59..c1b4a24a6 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -84,7 +84,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 41e46fa83..891cf2499 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -89,7 +89,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 91450d6c2..c888ea234 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -84,7 +84,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 3bb94ac05..c2be066c6 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 57cd67cca..c40692742 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 58940d70d..8e4148493 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -107,7 +107,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 847f7051a..f88670455 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -89,7 +89,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 726cef2d4..77c7ba3d7 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index c2f093202..0c6453d89 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -84,7 +84,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index bec8d423f..e3f2d2d82 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -86,7 +86,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 6d2304e78..72049d7f1 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 2066df512..9de0307c3 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -83,7 +83,9 @@ servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index a7e753897..4918d70e6 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -84,7 +84,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 37b746012..e923651da 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -89,7 +89,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 9d89c5975..c57cb963f 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -84,7 +84,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 257643966..ce9ee4494 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -106,7 +106,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index c1e12f2ce..ecd664093 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 77ff51fe5..56c57d6c9 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 8138ba5c3..e29839462 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -78,7 +78,9 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index e8c0fdaac..69ed525ee 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 64d6c70f9..d6497b83d 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -98,7 +98,9 @@ else fi # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Insurgency/insserver b/Insurgency/insserver index 67069ed4e..424b559ad 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -86,7 +86,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/JustCause2/jc2server b/JustCause2/jc2server index e23bd6340..95ca86cb5 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -77,7 +77,9 @@ servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 1bcc2d721..a2e9e3f9a 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -84,7 +84,9 @@ servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index bcf389a35..ef8e2e4b9 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -84,7 +84,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index e5066d86b..41a0e9ac9 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -83,7 +83,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Minecraft/mcserver b/Minecraft/mcserver index cbf68024f..c086b0d4b 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -65,7 +65,9 @@ servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index e774cea7d..c298d90a3 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -65,7 +65,9 @@ servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 772522815..283182a26 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -90,7 +90,9 @@ servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 967a4715f..91464bd2c 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -90,7 +90,9 @@ servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 4c9f3044e..0e795cd0d 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -89,7 +89,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 597f82a69..aa41c633d 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 5192f77a2..b953b98e9 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -84,7 +84,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 2e898f041..17a8b1a6a 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -80,7 +80,9 @@ servercfgdir="${HOME}/Zomboid/Server" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 44246a67f..f3e9e01ae 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -87,7 +87,9 @@ servercfgdir="${filesdir}/baseq3" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index c2c4eaa4f..c168b403d 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -75,7 +75,9 @@ servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index ee538a8e2..cce21777f 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Rust/rustserver b/Rust/rustserver index 7d515b1f0..ec4cbcf47 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -102,7 +102,9 @@ servercfgdir="${serveridentitydir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 56f7f5bd9..e72fc8af7 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -79,7 +79,9 @@ servercfgdir="${filesdir}/Content/SeriousSam3/Config" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Starbound/sbserver b/Starbound/sbserver index cc6a1f462..412666137 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -78,7 +78,9 @@ servercfgdir="${filesdir}/storage" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index a27645c02..cd0183f8d 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -83,7 +83,9 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 1255ad0b5..9f668e6e9 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -89,7 +89,9 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 5cbb7dcb4..0358fb3a3 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -79,7 +79,9 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index fb8d4e24b..1ccb6dac5 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -52,7 +52,9 @@ servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 4010ea6b3..ded4d5a65 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -74,7 +74,9 @@ servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index d0564fb87..39a52b54a 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -74,7 +74,9 @@ servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index fd20b128a..aaa9d69af 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -70,7 +70,9 @@ servercfgdir="${systemdir}/UnrealTournament/Saved/Config/LinuxServer" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index c86b2f824..7f50fdb97 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -58,7 +58,9 @@ servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 21e8ba06f..85179800d 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -78,7 +78,9 @@ servercfgdir="${systemdir}/UTGame/Config" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 388b03e25..fe9e1965f 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -67,7 +67,9 @@ servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 16358debe..087fd5561 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -64,7 +64,9 @@ servercfgdir="${systemdir}/etmain" servercfgfullpath="${servercfgdir}/${servercfg}" # Backup -backupdays="30" +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" backupdir="${rootdir}/backups" # Logging From cf83b889e4630f8bb97e925d6479e5739603b200 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 22 Oct 2016 00:00:09 +0100 Subject: [PATCH 116/729] Updated directories --- QuakeWorld/qwserver | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 7a43b4b56..78449e81f 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -54,14 +54,15 @@ 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}" -servercfgdefault="${servercfgdir}/lgsm-default.cfg" backupdir="${rootdir}/backups" # Logging From 5e737a997a40a337b85d88f4d0a54fdfdc751fdb Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 22 Oct 2016 17:07:46 +0200 Subject: [PATCH 117/729] Should fix missing cached mem #1143 Please, test on ubuntu to confirm it's working --- lgsm/functions/info_distro.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index 3416e8133..df079567d 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}') From bd77c9fa6892b7d6300b57d204bae3508a93f5bd Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 22 Oct 2016 17:17:04 +0200 Subject: [PATCH 118/729] fix the fix for #1143 (close double quote) --- lgsm/functions/info_distro.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index df079567d..f526b4328 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -73,7 +73,7 @@ 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 +if [ -z "${physmemcached}" ]; then physmemcached=$(free ${humanreadable} | awk '/Mem:/ {print $5}') fi swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}') From 01c3f90bb9517a602f5130cb596f03b2ef1dce79 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 22 Oct 2016 17:36:17 +0200 Subject: [PATCH 119/729] move -type f before -mtime --- lgsm/functions/command_backup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 3082c563e..489e0a8f4 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -160,7 +160,7 @@ if [ -n "${maxbackupdays}" ]&&[ -n "${maxbackups}" ]; 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}"/ -mtime +"${maxbackupdays}" -type f -exec rm -f {} \; + 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 From 3029c9b25882261c14db14d3611ece8fc0b3c769 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 23 Oct 2016 15:20:56 +0100 Subject: [PATCH 120/729] GLIBC not required for Quake 2 --- lgsm/functions/info_glibc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index f7f333d63..27e5d6e58 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -42,7 +42,7 @@ elif [ "${gamename}" == "No More Room in Hell" ]; then glibcrequired="2.15" glibcfix="yes" elif [ "${gamename}" == "Quake 2" ]; then - glibcrequired="2.0" + glibcrequired="NOT REQUIRED" glibcfix="no" elif [ "${gamename}" == "Quake 3: Arena" ]; then glibcrequired="2.1" From 345f3456accf2351d8800da893fe251eaa890d27 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 23 Oct 2016 21:18:38 +0100 Subject: [PATCH 121/729] removed # --- lgsm/functions/command_dev_detect_glibc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From ca7af8f155a55196f182efe2240e719dfa408707 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 23 Oct 2016 21:23:33 +0100 Subject: [PATCH 122/729] added quake engine --- lgsm/functions/gsquery.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/gsquery.py b/lgsm/functions/gsquery.py index a242c89bb..cd46717cd 100644 --- a/lgsm/functions/gsquery.py +++ b/lgsm/functions/gsquery.py @@ -26,6 +26,8 @@ class GameServer: 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': @@ -111,7 +113,7 @@ if __name__ == '__main__': action='store', dest='engine', default=False, - help='Engine type: avalanche, goldsource, idtech2, idtech3, idtech3_ql, 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', From 41c9ec3ba7e165e3eadbf572362f5522cd3e4589 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 23 Oct 2016 21:24:26 +0100 Subject: [PATCH 123/729] added quake engine to gsquery --- lgsm/functions/command_monitor.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 5de3226e008b639e51b2fe52729722479b606361 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 23 Oct 2016 22:18:04 +0100 Subject: [PATCH 124/729] Added QuakeWorld --- lgsm/functions/command_details.sh | 13 ++++++++++++- lgsm/functions/core_getopt.sh | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index af30b9a27..7b8812f97 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" "idtech2" "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 @@ -404,6 +404,15 @@ fn_details_quake3(){ } | 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 "" @@ -683,6 +692,8 @@ 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 diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 49acff39a..d07f82d04 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}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${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 From ec4e1907205a2f6f0d5e6ce9103866b87bb8b4f1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 23 Oct 2016 22:41:22 +0100 Subject: [PATCH 125/729] added check to see if updateonstart var exists --- lgsm/functions/command_details.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 7b8812f97..22f8e2a5f 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}" From 111668ce1a4aa261c3c68bfa24be33c39f038b93 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 27 Oct 2016 22:41:10 +0200 Subject: [PATCH 126/729] New gameservers & features (#1158) * Two # is now one block of settings & descriptions * directories comments and logs naming * dgibbs revision and root check * Backup & Layout rework * removed duplicate updateonstart * Fixed missing space on [ERROR ] [ ERROR ] instead of [ERROR ] * Error space wasn't missing Used to fit other comment sizes, i guess * Anonymous login is now an info Since login variable is removed for servers that don't need steam auth, this won't show a failure anymore but a simple info and anonymous login will be used. * update_steamcmd.sh Check is now done out of functions * solves hanging on update if steamuser is not set * New gameserver layout & functionalities * Better way to detect screen As per #1154 and #1156 * Moved to LinuxGSM-DevTools https://github.com/GameServerManagers/LinuxGSM-DevTools/blob/master/GameServer-Template/gameserver --- 7DaysToDie/sdtdserver | 125 +++++++---- ARKSurvivalEvolved/arkserver | 128 ++++++----- ARKSurvivalEvolved/cfg/lgsm-default.ini | 135 ------------ Arma3/arma3server | 147 ++++++++----- Arma3/cfg/lgsm-default.network.cfg | 77 ------- Arma3/cfg/lgsm-default.server.cfg | 133 ------------ Battlefield1942/bf1942server | 97 ++++++--- BlackMesa/bmdmserver | 122 +++++++---- BlackMesa/cfg/lgsm-default.cfg | 24 --- BladeSymphony/bsserver | 119 +++++++---- BladeSymphony/cfg/lgsm-default.cfg | 15 -- BrainBread2/bb2server | 128 +++++++---- BrainBread2/cfg/lgsm-default.cfg | 201 ------------------ CodenameCURE/ccserver | 131 +++++++----- CodenameCURE/cfg/lgsm-default.cfg | 105 --------- CounterStrike/cfg/lgsm-default.cfg | 38 ---- CounterStrike/csserver | 126 +++++++---- .../cfg/lgsm-default.cfg | 38 ---- CounterStrikeConditionZero/csczserver | 128 +++++++---- .../cfg/lgsm-default.cfg | 31 --- CounterStrikeGlobalOffensive/csgoserver | 147 ++++++++----- CounterStrikeSource/cfg/lgsm-default.cfg | 15 -- CounterStrikeSource/cssserver | 132 +++++++----- DayOfDefeat/cfg/lgsm-default.cfg | 38 ---- DayOfDefeat/dodserver | 127 +++++++---- DayOfDefeatSource/cfg/lgsm-default.cfg | 38 ---- DayOfDefeatSource/dodsserver | 131 +++++++----- DayOfInfamy/cfg/lgsm-default.cfg | 16 -- DayOfInfamy/doiserver | 130 ++++++----- DeathmatchClassic/cfg/lgsm-default.cfg | 35 --- DeathmatchClassic/dmcserver | 128 +++++++---- DontStarveTogether/cfg/lgsm-default.ini | 39 ---- DontStarveTogether/dstserver | 131 +++++++----- DoubleActionBoogaloo/cfg/lgsm-default.cfg | 15 -- DoubleActionBoogaloo/dabserver | 131 +++++++----- EmpiresMod/emserver | 130 +++++------ FistfulOfFrags/cfg/lgsm-default.cfg | 126 ----------- FistfulOfFrags/fofserver | 131 +++++++----- GarrysMod/cfg/lgsm-default.cfg | 86 -------- GarrysMod/gmodserver | 143 ++++++++----- GoldenEyeSource/cfg/lgsm-default.cfg | 126 ----------- GoldenEyeSource/gesserver | 124 +++++++---- HalfLife2Deathmatch/cfg/lgsm-default.cfg | 15 -- HalfLife2Deathmatch/hl2dmserver | 126 +++++++---- HalfLifeDeathmatch/cfg/lgsm-default.cfg | 35 --- HalfLifeDeathmatch/hldmserver | 126 +++++++---- HalfLifeDeathmatchSource/cfg/lgsm-default.cfg | 15 -- HalfLifeDeathmatchSource/hldmsserver | 125 +++++++---- Hurtworld/hwserver | 143 ++++++++----- Insurgency/insserver | 130 ++++++----- JustCause2/cfg/config.lua | 180 ---------------- JustCause2/jc2server | 122 +++++++---- KillingFloor/kfserver | 128 +++++++---- Left4Dead/cfg/lgsm-default.cfg | 15 -- Left4Dead/l4dserver | 132 +++++++----- Left4Dead2/cfg/lgsm-default.cfg | 15 -- Left4Dead2/l4d2server | 131 +++++++----- Minecraft/cfg/lgsm-default.ini | 40 ---- Minecraft/mcserver | 105 ++++++--- Mumble/mumbleserver | 102 ++++++--- NS2Combat/ns2cserver | 129 +++++++---- NaturalSelection2/ns2server | 129 +++++++---- NoMoreRoomInHell/cfg/lgsm-default.cfg | 121 ----------- NoMoreRoomInHell/nmrihserver | 133 +++++++----- OpposingForce/cfg/lgsm-default.cfg | 35 --- OpposingForce/opforserver | 128 +++++++---- .../cfg/lgsm-default.cfg | 119 ----------- PiratesVikingandKnightsII/pvkiiserver | 131 +++++++----- ProjectZomboid/cfg/lgsm-default.ini | 66 ------ ProjectZomboid/pzserver | 127 ++++++----- Quake2/cfg/lgsm-default.cfg | 15 -- Quake2/q2server | 100 ++++++--- Quake3/cfg/lgsm-default.cfg | 36 ---- Quake3/q3server | 99 ++++++--- QuakeLive/cfg/lgsm-default.cfg | 103 --------- QuakeLive/qlserver | 131 +++++++----- RedOrchestra/roserver | 123 +++++++---- Ricochet/cfg/lgsm-default.cfg | 35 --- Ricochet/ricochetserver | 150 +++++++++---- Rust/cfg/lgsm-default.cfg | 48 ----- Rust/rustserver | 137 +++++++----- SeriousSam3BFE/cfg/lgsm-default.ini | 49 ----- .../help/DedicatedServer_Readme.txt | 139 ------------ SeriousSam3BFE/ss3sserver | 129 ++++++----- Starbound/cfg/lgsm-default.config | 49 ----- Starbound/sbserver | 128 +++++++---- SvenCoop/cfg/lgsm-default.cfg | 36 ---- SvenCoop/svenserver | 131 +++++++----- TeamFortress2/cfg/lgsm-default.cfg | 15 -- TeamFortress2/tf2server | 131 +++++++----- TeamFortressClassic/cfg/lgsm-default.cfg | 38 ---- TeamFortressClassic/tfcserver | 128 +++++++---- TeamSpeak3/cfg/lgsm-default.ini | 20 -- TeamSpeak3/ts3server | 102 ++++++--- Teeworlds/cfg/ctf.cfg | 7 - Teeworlds/cfg/dm.cfg | 7 - Teeworlds/cfg/duel.cfg | 7 - Teeworlds/cfg/lgsm-default.cfg | 26 --- Teeworlds/cfg/tdm.cfg | 14 -- Teeworlds/twserver | 124 +++++++---- Terraria/cfg/lgsm-default.txt | 68 ------ Terraria/terrariaserver | 124 +++++++---- UnrealTournament/cfg/Engine.ini | 3 - UnrealTournament/cfg/Game.ini | 4 - UnrealTournament/utserver | 108 ++++++---- UnrealTournament2004/ut2k4server | 120 +++++++---- UnrealTournament3/ut3server | 109 ++++++---- UnrealTournament99/ut99server | 106 +++++---- .../cfg/lgsm-default.cfg | 125 ----------- WolfensteinEnemyTerritory/wetserver | 106 ++++++--- lgsm/functions/check_steamcmd.sh | 8 +- lgsm/functions/check_tmuxception.sh | 2 +- lgsm/functions/core_messages.sh | 2 +- lgsm/functions/update_steamcmd.sh | 5 +- 114 files changed, 4622 insertions(+), 5495 deletions(-) delete mode 100644 ARKSurvivalEvolved/cfg/lgsm-default.ini delete mode 100644 Arma3/cfg/lgsm-default.network.cfg delete mode 100644 Arma3/cfg/lgsm-default.server.cfg delete mode 100644 BlackMesa/cfg/lgsm-default.cfg delete mode 100644 BladeSymphony/cfg/lgsm-default.cfg delete mode 100644 BrainBread2/cfg/lgsm-default.cfg delete mode 100644 CodenameCURE/cfg/lgsm-default.cfg delete mode 100644 CounterStrike/cfg/lgsm-default.cfg delete mode 100644 CounterStrikeConditionZero/cfg/lgsm-default.cfg delete mode 100644 CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg delete mode 100644 CounterStrikeSource/cfg/lgsm-default.cfg delete mode 100644 DayOfDefeat/cfg/lgsm-default.cfg delete mode 100644 DayOfDefeatSource/cfg/lgsm-default.cfg delete mode 100644 DayOfInfamy/cfg/lgsm-default.cfg delete mode 100644 DeathmatchClassic/cfg/lgsm-default.cfg delete mode 100644 DontStarveTogether/cfg/lgsm-default.ini delete mode 100644 DoubleActionBoogaloo/cfg/lgsm-default.cfg delete mode 100644 FistfulOfFrags/cfg/lgsm-default.cfg delete mode 100644 GarrysMod/cfg/lgsm-default.cfg delete mode 100644 GoldenEyeSource/cfg/lgsm-default.cfg delete mode 100644 HalfLife2Deathmatch/cfg/lgsm-default.cfg delete mode 100644 HalfLifeDeathmatch/cfg/lgsm-default.cfg delete mode 100644 HalfLifeDeathmatchSource/cfg/lgsm-default.cfg delete mode 100644 JustCause2/cfg/config.lua delete mode 100644 Left4Dead/cfg/lgsm-default.cfg delete mode 100644 Left4Dead2/cfg/lgsm-default.cfg delete mode 100644 Minecraft/cfg/lgsm-default.ini delete mode 100644 NoMoreRoomInHell/cfg/lgsm-default.cfg delete mode 100644 OpposingForce/cfg/lgsm-default.cfg delete mode 100644 PiratesVikingandKnightsII/cfg/lgsm-default.cfg delete mode 100644 ProjectZomboid/cfg/lgsm-default.ini delete mode 100644 Quake2/cfg/lgsm-default.cfg delete mode 100644 Quake3/cfg/lgsm-default.cfg delete mode 100644 QuakeLive/cfg/lgsm-default.cfg delete mode 100644 Ricochet/cfg/lgsm-default.cfg delete mode 100644 Rust/cfg/lgsm-default.cfg delete mode 100644 SeriousSam3BFE/cfg/lgsm-default.ini delete mode 100644 SeriousSam3BFE/help/DedicatedServer_Readme.txt delete mode 100644 Starbound/cfg/lgsm-default.config delete mode 100644 SvenCoop/cfg/lgsm-default.cfg delete mode 100644 TeamFortress2/cfg/lgsm-default.cfg delete mode 100644 TeamFortressClassic/cfg/lgsm-default.cfg delete mode 100644 TeamSpeak3/cfg/lgsm-default.ini delete mode 100644 Teeworlds/cfg/ctf.cfg delete mode 100644 Teeworlds/cfg/dm.cfg delete mode 100644 Teeworlds/cfg/duel.cfg delete mode 100644 Teeworlds/cfg/lgsm-default.cfg delete mode 100644 Teeworlds/cfg/tdm.cfg delete mode 100644 Terraria/cfg/lgsm-default.txt delete mode 100644 UnrealTournament/cfg/Engine.ini delete mode 100644 UnrealTournament/cfg/Game.ini delete mode 100644 WolfensteinEnemyTerritory/cfg/lgsm-default.cfg diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 3a2f62064..fe8f3d210 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -1,67 +1,93 @@ #!/bin/bash -# 7 Days To Die -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: 7 Days To Die | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" -# http://7daystodie.gamepedia.com/Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://7daystodie.gamepedia.com/Server fn_parms(){ parms="-logfile ${gamelogdir}/output_log__`date +%Y-%m-%d__%H-%M-%S`.txt -quit -batchmode -nographics -dedicated -configfile=${servercfgfullpath}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="294420" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="294420" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". # Example: "-beta latest_experimental" branch="" -# Server Details -servicename="sdtd-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="7 Days To Die" engine="unity3d" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="sdtd-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./7DaysToDieServer.x86" @@ -78,29 +106,26 @@ servercfgdefault="serverconfig.xml" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -157,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 940ffee80..cdda3b2f9 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -1,36 +1,28 @@ #!/bin/bash -# ARK: Survivial Evolved -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: ARK: Survival Evolved | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters servername="ark-server" port="7778" queryport="27015" @@ -38,35 +30,66 @@ rconport="32330" rconpassword="" # Set to enable rcon maxplayers="50" ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="\"TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?ServerAdminPassword=${rconpassword}\"" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="376030" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="376030" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ark-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="ARK: Survivial Evolved" engine="unreal4" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ark-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +98,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/ShooterGame" executabledir="${systemdir}/Binaries/Linux" executable="./ShooterGameServer" @@ -83,28 +108,25 @@ servercfg="GameUserSettings.ini" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/GameUserSettings.ini" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +183,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/ARKSurvivalEvolved/cfg/lgsm-default.ini b/ARKSurvivalEvolved/cfg/lgsm-default.ini deleted file mode 100644 index e14a10c6f..000000000 --- a/ARKSurvivalEvolved/cfg/lgsm-default.ini +++ /dev/null @@ -1,135 +0,0 @@ -[ServerSettings] -AllowFlyerCarryPvE=False -AllowThirdPersonPlayer=False -AlwaysNotifyPlayerLeft=False -AutoSavePeriodMinutes=15.000000 -ClampResourceHarvestDamage=False -DayCycleSpeedScale=1.000000 -DayTimeSpeedScale=1.000000 -DifficultyOffset=0.200000 -DinoCharacterFoodDrainMultiplier=1.000000 -DinoCharacterHealthRecoveryMultiplier=1.000000 -DinoCharacterStaminaDrainMultiplier=1.000000 -DinoCountMultiplier=1.000000 -DinoDamageMultiplier=1.000000 -DinoResistanceMultiplier=1.000000 -DisableStructureDecayPvE=False -DontAlwaysNotifyPlayerJoined=False -EnablePvPGamma=False -GlobalVoiceChat=False -HarvestAmountMultiplier=1.000000 -HarvestHealthMultiplier=1.000000 -KickIdlePlayersPeriod=2400.000000 -NewMaxStructuresInRange=6000.000000 -NightTimeSpeedScale=1.000000 -NoTributeDownloads=False -PlayerCharacterFoodDrainMultiplier=1.000000 -PlayerCharacterHealthRecoveryMultiplier=1.000000 -PlayerCharacterStaminaDrainMultiplier=1.000000 -PlayerCharacterWaterDrainMultiplier=1.000000 -PlayerDamageMultiplier=1.000000 -PlayerResistanceMultiplier=1.000000 -ProximityChat=False -ProximityVoiceChat=False -PvEStructureDecayDestructionPeriod=0.000000 -PvEStructureDecayPeriodMultiplier=1.000000 -RCONEnabled=True -RCONPort=32330 -ResourcesRespawnPeriodMultiplier=1.000000 -ServerAdminPassword=adminpassword -ServerCrosshair=False -ServerForceNoHUD=False -ServerHardcore=False -ServerPassword= -ServerPVE=False -ShowMapPlayerLocation=False -StructureDamageMultiplier=1.000000 -StructureResistanceMultiplier=1.000000 -TamedDinoDamageMultiplier=1.000000 -TamedDinoResistanceMultiplier=1.000000 -TamingSpeedMultiplier=1.000000 -XPMultiplier=1.000000 - -[/Script/ShooterGame.ShooterGameUserSettings] -MasterAudioVolume=1.000000 -MusicAudioVolume=1.000000 -SFXAudioVolume=1.000000 -VoiceAudioVolume=1.000000 -CameraShakeScale=1.000000 -bFirstPersonRiding=False -bThirdPersonPlayer=False -bShowStatusNotificationMessages=True -TrueSkyQuality=0.270000 -FOVMultiplier=1.000000 -GroundClutterDensity=1.000000 -bFilmGrain=False -bMotionBlur=True -bUseDFAO=True -bUseSSAO=True -bShowChatBox=True -bCameraViewBob=True -bInvertLookY=False -bFloatingNames=True -bChatBubbles=True -bHideServerInfo=False -bJoinNotifications=False -bCraftablesShowAllItems=True -LookLeftRightSensitivity=1.000000 -LookUpDownSensitivity=1.000000 -GraphicsQuality=2 -ActiveLingeringWorldTiles=10 -ClientNetQuality=3 -LastServerSearchType=0 -LastServerSearchHideFull=False -LastServerSearchProtected=False -HideItemTextOverlay=False -bDistanceFieldShadowing=True -LODScalar=1.000000 -HighQualityMaterials=True -HighQualitySurfaces=True -bTemperatureF=False -bDisableTorporEffect=False -bChatShowSteamName=False -bChatShowTribeName=True -EmoteKeyBind1=0 -EmoteKeyBind2=0 -bUseVSync=False -ResolutionSizeX=1280 -ResolutionSizeY=720 -LastUserConfirmedResolutionSizeX=1280 -LastUserConfirmedResolutionSizeY=720 -WindowPosX=-1 -WindowPosY=-1 -bUseDesktopResolutionForFullscreen=False -FullscreenMode=2 -LastConfirmedFullscreenMode=2 -Version=5 - -[ScalabilityGroups] -sg.ResolutionQuality=100 -sg.ViewDistanceQuality=3 -sg.AntiAliasingQuality=3 -sg.ShadowQuality=3 -sg.PostProcessQuality=3 -sg.TextureQuality=3 -sg.EffectsQuality=3 -sg.TrueSkyQuality=3 -sg.GroundClutterQuality=3 -sg.IBLQuality=1 -sg.HeightFieldShadowQuality=3 - -[SessionSettings] -SessionName=arkserver -QueryPort=27015 -Port=7777 -;MultiHome=INSERT_IPv4_HERE ;Example:192.168.0.9. If not just remove any line containing MultiHome. - -[/Script/Engine.GameSession] -MaxPlayers=127 - -[MultiHome] -;MultiHome=True ;If MultiHome=IPv4 is filled in. If not just remove any line containing MultiHome. - -[MessageOfTheDay] -Message=Welcome to ARK Server -Duration=5 diff --git a/Arma3/arma3server b/Arma3/arma3server index e09959ef7..fe41a5cf4 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -1,83 +1,109 @@ #!/bin/bash -# ARMA 3 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: Scarsz +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: ARMA 3 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161026" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" port="2302" -updateonstart="off" - -fn_parms(){ -parms="-netlog -ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory" -} -# ARMA 3 Modules -# add mods with relative paths: +## ARMA 3 Modules +# Add mods with relative paths: # mods/@cba_a3 -# to load the "Community Base Addons v3" module found in the +# To load the "Community Base Addons v3" module found in the # directory serverfiles/mods/@cba_a3. Load several mods as: # mods="mods/@ace\;mods/@acex\;mods/@cba_a3" mods="" -# Server-side Mods +## Server-side Mods servermods="" -# Path to BattlEye -# leave empty for default +## Path to BattlEye +# Leave empty for default bepath="" -#### Advanced Variables #### +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="-netlog -ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory" +} + +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="233780" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="233780" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta development" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="arma3-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="ARMA 3" engine="realvirtuality" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="arma3-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -86,6 +112,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./arma3server" @@ -97,28 +125,25 @@ servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" networkcfgfullpath="${servercfgdir}/${networkcfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories #gamelogdir="" # No server logs available scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -175,8 +200,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/Arma3/cfg/lgsm-default.network.cfg b/Arma3/cfg/lgsm-default.network.cfg deleted file mode 100644 index 5bba89f8d..000000000 --- a/Arma3/cfg/lgsm-default.network.cfg +++ /dev/null @@ -1,77 +0,0 @@ -// -// network.cfg - Defines network tuning parameters -// -// This file is to be passed to the -cfg parameter on the command line for the server -// See http://community.bistudio.com/wiki/basic.cfg -// The following settings are the suggested settings - -// BANDWIDTH SETTINGS - -// Bandwidth the server is guaranteed to have (in bps) -// General guideline is NumberOfPlayers * 256kb -// Default: 131072 -MinBandwidth=5120000; -// Bandwidth the server can never go above (in bps) -// For a single server, use full network speed; decrease when running multiple servers -MaxBandwidth=10240000; - -// PACKET SETTINGS - -// Maximum number of packets per frame. -// Increasing the value potentially decreases lag, but increases desync -// Default: 128 -MaxMsgSend=2048; -// Maximum payload of guaranteed packet (in b) -// Small messages are packed to larger packets -// Guaranteed packets are used for non-repetitive events, like shooting -// Lower value means more packets are sent, so less events will get combined -// Default: 512 -MaxSizeGuaranteed=512; -// Maximum payload of non-guaranteed packet (in b) -// Increasing this value may improve bandwidth requirement, but may also increase lag -// Largest factor in desync -// Guidance is half of MaxSizeGuaranteed -// Default: 256 -MaxSizeNonguaranteed=256; -// Maximal size of a packet sent over the network -// Only necessary if ISP forces lower packet size and there are connectivity issues -// Default: 1400 -// class sockets{maxPacketSize=1400}; - -// SMOOTHNESS SETTINGS - -// Minimal error required to send network updates for far units -// Smaller values will make for smoother movement at long ranges, but will increase network traffic -// Default: 0.003 -MinErrorToSend=0.01; -// Minimal error required to send network updates for near units -// Using larger value can reduce traffic sent for near units -// Also controls client to server traffic -// Default: 0.01 -MinErrorToSendNear=0.02; - -// GEOLOCATION SETTINGS - -// Server latitude -serverLatitude=52; -serverLatitudeAuto=52; - -// Server Longitude -serverLongitude=0; -serverLongitudeAuto=0; -// MISC -// View Distance (not sure if this actually works) -viewDistance=10000; - -// Maximum size (in b) for custom face or sound files -// Default: 0 -MaxCustomFileSize=0; -// Server language -language="English"; -steamLanguage="English"; -// Adapter -adapter=-1; -// Windowed mode -Windowed=0; - -3D_Performance=1.000000; \ No newline at end of file diff --git a/Arma3/cfg/lgsm-default.server.cfg b/Arma3/cfg/lgsm-default.server.cfg deleted file mode 100644 index 51b2c26e6..000000000 --- a/Arma3/cfg/lgsm-default.server.cfg +++ /dev/null @@ -1,133 +0,0 @@ -// ArmA 3 Server Config File -// -// More info about parameters: -// https://community.bistudio.com/wiki/server.cfg - - -// PORTS -// please specify the serverport as a parameter in arma3server executable -// it will automatically use the serverport including the next 3 for steam query & steam master. -// the fourth port ist not documented in https://community.bistudio.com/wiki/Arma_3_Dedicated_Server#Port_Forwarding -// Server Port -// default: 2302. -// serverport=2302; - -// Steam Master Port -// default: 2304. -// steamport=2304; - -// Steam Query Port -// default: 2303. -//steamqueryport=2303; - - -// GENERAL SETTINGS - -// Server Name -hostname = "arma3server"; - -// Server Password -//password = "arma3pass"; - -// Admin Password -passwordAdmin = "arma3adminpass"; - -// Server Slots -maxPlayers = 32; - -// Logfile -logFile = "arma3server.log"; - -// Minimum Required Client Build -//requiredBuild = 95691 - -// Message of the Day (MOTD) -motd[]={ - "Welcome to My Arma 3 Server", - "TS3 Server: teamspeak.somewhere.com", - "Web: www.example.com" -}; - -// MOTD Interval (Seconds) -motdInterval = 30; - - -// VOTING - -// Server Mission Start -// minimum number of clients before server starts mission -voteMissionPlayers = 1; - -// Accepted Vote Threshold -// 0.33 = 33% clients. -voteThreshold = 0.33; - -// INGAME SETTINGS - -// Disable Voice over Net (VoN) -// 0 = voice enabled. -// 1 = voice disabled. -disableVoN = 0; - -// VoN Codec Quality -// 0-10 = 8kHz (narrowband). -// 11-20 = 16kHz (wideband). -// 21-30 = 32kHz (ultrawideband). -vonCodecQuality = 3; - -//Persistent Battlefield -// 0 = disable. -// 1 = enable. -persistent = 1; - -// Time Stamp Format -// none, short, full -timeStampFormat = "short"; - - -// SERVER SECURITY/ANTI HACK - -// Verify Signitures for Client Addons -// 0 = off. -// 1 = weak protection (depricated). -// 2 = full protection. -verifySignatures = 2; - -// Secure Player ID -// 1 = Server warning message. -// 2 = Kick client. -requiredSecureId = 2; - -// Kick Duplicate Player IDs -kickDuplicate = 1; - -// BattlEye Anti-Cheat -// 0 = disable -// 1 = enable -BattlEye = 1; - -// Allowed File Extentions -allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; - -// SCRIPTING ISSUES -onUserConnected = ""; // -onUserDisconnected = ""; // -doubleIdDetected = ""; // - -// SIGNATURE VERIFICATION -// kick = kick (_this select 0) -// ban = ban (_this select 0) -onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; -onDifferentData = ""; - -// HEADLESS CLIENT SUPPORT -// specify ip-adresses of allowed headless clients -// if more than one: -// headlessClients[]={"127.0.0.1", "192.168.0.1"}; -// localClient[]={"127.0.0.1", "192.168.0.1"}; -headlessClients[]={"127.0.0.1"}; -localClient[]={"127.0.0.1"}; -battleyeLicense=1; diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 07dfccc4b..7e10aa02e 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -1,36 +1,56 @@ #!/bin/bash -# Battlefield: 1942 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Battlefield: 1942 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +fn_parms(){ +parms="+hostServer 1 +dedicated 1" +} + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -fn_parms(){ -parms="+hostServer 1 +dedicated 1" -} #### Advanced Variables #### @@ -41,12 +61,18 @@ githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Server Details -servicename="bf1942-server" +## LinuxGSM Server Details +# Do not edit gamename="Battlefield: 1942" engine="refractor" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bf1942-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -55,6 +81,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${systemdir}" executable="./start.sh" @@ -63,28 +91,25 @@ servercfgdefault="serversettings.con" servercfgdir="${systemdir}/mods/bf1942/settings" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -141,8 +166,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 9f458c29b..3f540c12c 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -1,77 +1,99 @@ #!/bin/bash -# Black Mesa: Deathmatch -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Black Mesa: Deathmatch | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dm_bounce" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game bms -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -# Github Branch Select +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam +## SteamCMD Settings +# Server appid appid="346680" - # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta public-beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="bmdm-server" +## LinuxGSM Server Details +# Do not edit gamename="Black Mesa: Deathmatch" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bmdm-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +102,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/bms" executabledir="${filesdir}" executable="./srcds_run" @@ -88,28 +112,26 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directorie gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -166,8 +188,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/BlackMesa/cfg/lgsm-default.cfg b/BlackMesa/cfg/lgsm-default.cfg deleted file mode 100644 index 9a047db15..000000000 --- a/BlackMesa/cfg/lgsm-default.cfg +++ /dev/null @@ -1,24 +0,0 @@ -// Black Mesa server.cfg file -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -mp_timelimit 900 -mp_warmup_time 30 -// sv_lan 0 -// mp_flashlight 1 -// mp_forcerespawn 0 -// mp_friendlyfire 0 -// mp_fraglimit 45 \ No newline at end of file diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 67c3f5f1f..21444e0c9 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -1,72 +1,91 @@ #!/bin/bash -# Blade Symphony -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Blade Symphony | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="duel_winter" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-autoupdate -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -# Steam -appid="228780" +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="228780" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta nightly -betapassword winteriscoming" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="bs-server" +## LinuxGSM Server Details +# Do not edit gamename="Blade Symphony" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bs-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +94,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/berimbau" executabledir="${filesdir}" executable="./srcds_run.sh" @@ -83,28 +104,24 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +178,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/BladeSymphony/cfg/lgsm-default.cfg b/BladeSymphony/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/BladeSymphony/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index b2c7c49b1..8900e978a 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -1,77 +1,102 @@ #!/bin/bash -# BrainBread 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: BrainBread 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login # Steam login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="bba_barracks" maxplayers="20" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game brainbread2 -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="475370" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="475370" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta_branch" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="bb2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="BrainBread 2" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bb2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +105,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/brainbread2" executabledir="${filesdir}" executable="./srcds_run" @@ -88,28 +115,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -166,8 +190,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/BrainBread2/cfg/lgsm-default.cfg b/BrainBread2/cfg/lgsm-default.cfg deleted file mode 100644 index e016e66fb..000000000 --- a/BrainBread2/cfg/lgsm-default.cfg +++ /dev/null @@ -1,201 +0,0 @@ -// **************************************************************************** -// * -// BrainBread 2 - server.cfg * -// Version 080116 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// Cheats - Allows cheats on the server. Steam achievements and stats are disabled. -// Default: 0 -sv_cheats 0 - -// Friendly Fire - Allows team members to injure other members of their team. -// 0 = Friendly fire off. -// 1 = Friendly fire on. -// Default: 0 -mp_friendlyfire 0 - -// ........................ Game Specific Commands ........................ // -// info: any commands that only apply to this game. - - -// Mercy Value - Sets how many deaths until the players become human once again. -// Default: bb2_allow_mercy 0 -bb2_allow_mercy 3 - -// Late Joining - Allows players to spawn late. -// default bb2_allow_latejoin 0 -bb2_allow_latejoin 1 - -// Player Spawn Protection - Time in seconds after Spawn. -// default bb2_spawn_protection 1 -bb2_spawn_protection 15 - -// Profile System - Allow players to save and load there skills. -// 0 = Disabled, skills are not saved. -// 1 = Global, players can load there global skills. -// 2 = Server, players save there skills to the server. Steam achievements and stats are disabled. -// Default 1 -bb2_allow_profile_system 1 - -// Allow NPC to score - Allow friendly npcs to affect scoring. For example for quests. -// Default 1 -bb2_allow_npc_to_score 0 - -// Vote Settings - -// Voting: Passing Votes - Percentage of players that are required to pass a vote. -// Minimum: 0 -// Maximum: 100 -// Default 50 -bb2_votes_required 50 - -// Voting: Ban Time - Number of minutes a player be banned if a vaote ban passes. -// minimum: 0 (permanent) -// default 30 -bb2_ban_time 30 - - -// Arena Settings - -// Arena: Respawn Interval Time (Seconds). -// Minimum: 20 -// Default 40 -bb2_arena_respawn_time 25 - -// Arena: Number of Reinforcements. -// Minimum: 0 -// Maximum: 100 -// Default 14 -bb2_arena_reinforcement_count 14 - - -// Classic Mode Settings - -// Classic: Zombie No Team Change. -// 0 = Players can become zombies. -// 1 = Players cannot become zombies. -// Default 0 -bb2_classic_zombie_noteamchange 1 - - -// Elimination Settings - -// Elimination: Team Fraglimit - Number of frags for a team to win a game. -// Minimum: 10 -// Default 200 -bb2_elimination_fraglimit 200 - -// Elimination: Respawn Time (Seconds). -// Minimum: 1 -// Maximum: 30 -// Default 4 -bb2_elimination_respawn_time 5 - -// Elimination: Respawn Time Scale - Increase the respawn timer in seconds when a player joins. -// Example: respawn_timer + (joined_players x time_scale) = new_respawn_timer. 14 + (20 x 2) = 54. -// Minimum: 0 -// Maximum: 10 -// Default 1 -bb2_elimination_respawn_time_scale 1 - -// Elimination: Extermination Score - The score a team should be awarded for exterminating (kill everyone before respawn) the other team. -// Minimum: 0 -// Maximum: 50 -// Default 25 -bb2_elimination_score_from_extermination 25 - -// Elimination: Zombie Score - Number of point a zombie gets for a kill. -// Minimum: 2 -// Maximum: 10 -// Default 5 -bb2_elimination_score_zombies 5 - -// Elimination: Team Perk Duration - Number of seconds a team perk lasts. -// Minimum: 5 -// Maximum: 60 -// Default 30 -bb2_elimination_teamperk_duration 30 - -// Elimination: Team Perk Required Kills - Number of kills a team need to get in order to activate a team perk. -// Minimum: 25 -// Maximum: 500 -// Default 50 -bb2_elimination_teamperk_kills_required 50 - - -// Zombie Settings - -// Zombie Lifespan - Number of minutes a regular zombie will last before dying. -// Minimum: 1 -// Default 5 -bb2_zombie_lifespan 2 - -// Max Zombies - Maximum number of zombies allowed in the game. -// Minimum: 1 -// Maximum: 128 -// Default 50 -bb2_zombie_max 45 - - -// M1A1 Abrams Settings - -// M1A1 Abrams: Main Cannon Damage. -// Minimum: 100 -// Maximum: 10000 -// Default 3000 -bb2_m1a1_damage 200 - -// M1A1 Abrams: Machinegun Damage. -// Minimum: 25 -// Maximum: 1000 -// Default 30 -bb2_m1a1_damage_machinegun 25 - -// M1A1 Abrams: Friendly Fire (Including NPC's). -// Minimum: 0 -// Maximum: 1 -// Default 1 -bb2_m1a1_friendly 1 - -// M1A1 Abrams: Machinegun Rate of Fire. -// Minimum: 0.01 -// Maximum: 1 -// Default 0.08 -bb2_m1a1_machinegun_firerate 1 - -// M1A1 Abrams: Explosion Radius. -// Minimum: 200 -// Maximum: 10000 -// Default 500 -bb2_m1a1_radius 500 - -// M1A1 Abrams: Max Sight Range. -// Minimum: 500 -// Maximum: 10000 -// Default 2000 -bb2_m1a1_range_max 1000 - -// M1A1 Abrams: Min Sight Range. -// Minimum: 250 -// Maximum: 5000 -// Default 400 -bb2_m1a1_range_min 250 \ No newline at end of file diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 43b726b6a..5120d11d0 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -1,72 +1,92 @@ #!/bin/bash -# Codename CURE -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Codename CURE | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161026" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="cbe_bunker" maxplayers="6" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game cure -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="383410" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="383410" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="cc-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Codename CURE" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cc-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +95,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/cure" executabledir="${filesdir}" executable="./srcds_run" @@ -83,28 +105,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +180,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/CodenameCURE/cfg/lgsm-default.cfg b/CodenameCURE/cfg/lgsm-default.cfg deleted file mode 100644 index 296c28ec8..000000000 --- a/CodenameCURE/cfg/lgsm-default.cfg +++ /dev/null @@ -1,105 +0,0 @@ -// **************************************************************************** -// * -// CodenameCURE - server.cfg * -// Version 100216 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// ............................... Map Cycles ............................... // -// info: There are several predefined mapcycles available that are listed below. -// You can also create your own custom mapcycle. - -// "mapcycle.txt" - all maps -mapcyclefile "mapcycle.txt" - -// ........................ Game Specific Commands ........................ // -// info: any commands that only apply to this game. - -// Difficulty -// 0 - Easy -// 1 - Average -// 2 - Skilled -// 3 - Insane -sv_difficulty "1" - -// Server tags - Tags show up on the in-game server browser. This helps -// users filter servers. -// vanilla - he server runs the default settings. -// custom - the server runs custom gameplay settings or mods. -// example: sv_tags "custom, fastdl" -sv_tags "" - -// ............................. Communication ............................. // - -// Enable communication over voice via microphone. -// Default: sv_voiceenable 1 -sv_voiceenable 1 - -// Players can hear all other players, no team restrictions. -// Default: sv_alltalk 0 -sv_alltalk 1 - -// ............................. Fast Download .............................. // -// info: Allows custom maps to be downloaded to the client. - -// Allows clients to download custom maps and textures etc. from the server at 20 kbps. -// Default: sv_allowdownload 1 -sv_allowdownload 1 - -// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. -// Example: -// server location: maps/custommap.bsp -// web server location: http://example.com/custom/maps/custommap.bsp -// sv_downloadurl "http://example.com/custom" -// Default: sv_downloadurl "" -sv_downloadurl "" - -// ................................ Ban List ............................... // - -// personal banlist based on user IDs. -exec banned_user.cfg - -// personal banlist based on user IPs. -exec banned_ip.cfg - -writeid -writeip - -// ............................. Server Logging ............................. // - -//Enables logging to file, console, and udp < on | off >. -log on - -// Log server bans in the server logs. -// Default: sv_logbans 1 -sv_logbans 1 - -// Echo log information to the console. -// Default: sv_logecho 1 -sv_logecho 1 - -// Log server information in the log file. -// Default: sv_logfile 1 -sv_logfile 1 - -// Log server information to only one file. -// Default: sv_log_onefile 0 -sv_log_onefile 0 diff --git a/CounterStrike/cfg/lgsm-default.cfg b/CounterStrike/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/CounterStrike/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 9c75a6aa6..14ff451f3 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -1,67 +1,94 @@ #!/bin/bash -# Counter-Strike -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Counter-Strike | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="de_dust2" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game cstrike -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + #### Advanced Variables #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="cstrike" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="cstrike" - -# Server Details -servicename="cs-server" +## LinuxGSM Server Details +# Do not edit gamename="Counter-Strike 1.6" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cs-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/cstrike" executabledir="${filesdir}" executable="./hlds_run" @@ -78,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/CounterStrikeConditionZero/cfg/lgsm-default.cfg b/CounterStrikeConditionZero/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/CounterStrikeConditionZero/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 0a6c49e04..5eb1fb83d 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -1,67 +1,94 @@ #!/bin/bash -# Counter-Strike: Condition Zero -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Counter-Strike: Condition Zero | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="de_dust2" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game czero -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="czero" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="czero" - -# Server Details -servicename="cscz-server" +## LinuxGSM Server Details +# Do not edit gamename="Counter-Strike: Condition Zero" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cscz-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/czero" executabledir="${filesdir}" executable="./hlds_run" @@ -78,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg b/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg deleted file mode 100644 index d518c8e0d..000000000 --- a/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg +++ /dev/null @@ -1,31 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// Server Hibernation -sv_hibernate_when_empty 1 -sv_hibernate_ms 5 - -// Server Query -// More info at: https://www.gametracker.com/games/csgo/forum.php?thread=91691 -host_name_store 1 -host_info_show 1 -host_players_show 2 - - -exec banned_user.cfg -exec banned_ip.cfg -writeid -writeip diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 36114ccb3..6ce09436b 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -1,43 +1,35 @@ #!/bin/bash -# Counter-Strike: Global Offensive -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Counter-Strike: Global Offensive | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters # https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Dedicated_Servers#Starting_the_Server -# [Game Modes] gametype gamemode -# Arms Race 1 0 -# Classic Casual 0 0 -# Classic Competitive 0 1 -# Demolition 1 1 -# Deathmatch 1 2 +# [Game Modes] gametype gamemode +# Arms Race 1 0 +# Classic Casual 0 0 +# Classic Competitive 0 1 +# Demolition 1 1 +# Deathmatch 1 2 gametype="0" gamemode="0" defaultmap="de_dust2" @@ -48,48 +40,78 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Required: Game Server Login Token +## Required: Game Server Login Token # GSLT is required for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# Optional: Workshop Parameters +## Optional: Workshop Parameters # https://developer.valvesoftware.com/wiki/CSGO_Workshop_For_Server_Operators # To get an authkey visit - http://steamcommunity.com/dev/apikey # authkey="" # ws_collection_id="" # ws_start_map="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game csgo -usercon -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers_override ${maxplayers} +mapgroup ${mapgroup} +game_mode ${gamemode} +game_type ${gametype} +host_workshop_collection ${ws_collection_id} +workshop_start_map ${ws_start_map} -authkey ${authkey}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="740" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="740" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta 1.35.4.4" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="csgo-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Counter-Strike: Global Offensive" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="csgo-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -98,6 +120,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/csgo" executabledir="${filesdir}" executable="./srcds_run" @@ -106,28 +130,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -184,8 +205,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/CounterStrikeSource/cfg/lgsm-default.cfg b/CounterStrikeSource/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/CounterStrikeSource/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 12ff1df51..716c9904d 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -1,36 +1,28 @@ #!/bin/bash -# Counter-Strike: Source -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Counter-Strike: Source | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="de_dust2" maxplayers="16" port="27015" @@ -39,39 +31,70 @@ clientport="27005" ip="0.0.0.0" updateonstart="off" -# Required: Game Server Login Token +## Required: Game Server Login Token # GSLT is required for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game cstrike -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="232330" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="232330" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta prerelease" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="css-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Counter-Strike: Source" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="css-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +103,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/cstrike" executabledir="${filesdir}" executable="./srcds_run" @@ -88,28 +113,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -166,8 +188,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DayOfDefeat/cfg/lgsm-default.cfg b/DayOfDefeat/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/DayOfDefeat/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index c4e2610fa..5f4787861 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -1,36 +1,28 @@ #!/bin/bash -# Day of Defeat -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Day of Defeat | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dod_Anzio" maxplayers="16" port="27015" @@ -38,30 +30,66 @@ clientport="27005" ip="0.0.0.0" updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game dod -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="dod" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="dod" - -# Server Details -servicename="dod-server" +## LinuxGSM Server Details +# Do not edit gamename="Day of Defeat" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dod-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +98,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/dod" executabledir="${filesdir}" executable="./hlds_run" @@ -78,28 +108,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +183,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DayOfDefeatSource/cfg/lgsm-default.cfg b/DayOfDefeatSource/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/DayOfDefeatSource/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index f0b8520e0..f212701b9 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -1,72 +1,94 @@ #!/bin/bash -# Day of Defeat: Source -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Day of Defeat: Source | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dod_Anzio" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | ttps://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game dod -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="232290" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="232290" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta prerelease" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="dods-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Day of Defeat: Source" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dods-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/dod" executabledir="${filesdir}" executable="./srcds_run" @@ -83,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DayOfInfamy/cfg/lgsm-default.cfg b/DayOfInfamy/cfg/lgsm-default.cfg deleted file mode 100644 index 364cc1420..000000000 --- a/DayOfInfamy/cfg/lgsm-default.cfg +++ /dev/null @@ -1,16 +0,0 @@ -"hostname" "" -"rcon_password" "" -"mapcyclefile" "mapcycle_tactical_operation.txt" // "tactical operation" mapcycle - firefight, vip, search and destroy -"mp_friendlyfire" "1" // friendly fire -"mp_tkpunish" "1" // How to punish team killing ( 0 = none, 1 = warning, 2 = kill ) -"sv_hud_deathmessages" "0" // death messages -"sv_hud_scoreboard_show_kd" "1" // show k:d on scoreboard -"sv_hud_targetindicator" "1" // show friendly player names when looking at them -"mp_timer_pregame" "10" // timer for the pre-game (before the game starts, usually after map change or on mp_restartgame 1) -"mp_timer_preround" "15" // timer for the pre-round (before the round starts, usually after a previous round ends or on mp_restartround 1) -"mp_timer_postround" "15" // timer for the post-round (after the round starts) -"mp_timer_postgame" "21" // timer for the post-game (at the end of a game / map rotation) -"ins_bot_quota" "0" // if set higher than 0, the server will add this many bots to each team -"sv_deadvoice" "0" // enabling this will allow the dead and living to VOIP each other -"sv_deadchat" "0" // enabling this will allow the dead and living to chat text each other -"sv_deadchat_team" "1" // is deadchat limited to just your team? diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 0decebc06..8f4be1a62 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -1,36 +1,28 @@ #!/bin/bash -# Day of Infamy -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Day of Infamy | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="bastogne" maxplayers="16" tickrate="64" @@ -38,37 +30,67 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" workshop="0" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game doi -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} +sv_workshop_enabled ${workshop}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="462310" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="462310" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="doi-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Day of Infamy" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="doi-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -77,6 +99,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/doi" executabledir="${filesdir}" executable="./srcds_run" @@ -85,28 +109,26 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -163,8 +185,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DeathmatchClassic/cfg/lgsm-default.cfg b/DeathmatchClassic/cfg/lgsm-default.cfg deleted file mode 100644 index 585afb9e2..000000000 --- a/DeathmatchClassic/cfg/lgsm-default.cfg +++ /dev/null @@ -1,35 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index c4cb47902..31dda30c3 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -1,67 +1,94 @@ #!/bin/bash -# Deathmatch Classic -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Deathmatch Classic | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dcdm5" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game dmc -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="dmc" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="dmc" - -# Server Details -servicename="dmc-server" +## LinuxGSM Server Details +# Do not edit gamename="Deathmatch Classic" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dmc-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/dmc" executabledir="${filesdir}" executable="./hlds_run" @@ -78,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DontStarveTogether/cfg/lgsm-default.ini b/DontStarveTogether/cfg/lgsm-default.ini deleted file mode 100644 index 351a1238c..000000000 --- a/DontStarveTogether/cfg/lgsm-default.ini +++ /dev/null @@ -1,39 +0,0 @@ -[network] -default_server_name = dstserver -default_server_description = Welcome to dstserver -server_port = 10999 -server_password = password - -# max_players = 1 .. 64 -max_players = 16 - -# pvp = true | false -pvp = false - -# game_mode = endless | survival | wilderness -game_mode = endless - -# enable_autosaver = true | false -enable_autosaver = true - -# tick_rate = [ 10 | 15 | 30 | 60 ] -tick_rate = 30 - -connection_timeout = 8000 -server_save_slot = 1 - -# enable_vote_kick = true | false -enable_vote_kick = true - -# pause_when_empty = true | false -pause_when_empty = true - -[account] -dedicated_lan_server = false - -[STEAM] -DISABLECLOUD = true - -[MISC] -CONSOLE_ENABLED = true -autocompiler_enabled = true diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 973f72c16..a2a6a909a 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -1,70 +1,92 @@ #!/bin/bash -# Dont Starve Together -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Dont Starve Together | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://dont-starve-game.wikia.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers # Overworld: -conf_dir DST_Overworld # Cave: -conf_dir DST_Cave -#http://dont-starve-game.wikia.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers fn_parms(){ parms="-console -cluster MyDediServer -shard Master" # -console -cluster MyDediServer -shard Master } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="343050" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="343050" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta anewreignbeta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="dst-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Don't Starve Together" engine="dontstarve" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dst-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -73,6 +95,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}/bin" executable="./dontstarve_dedicated_server_nullrenderer" @@ -82,28 +106,25 @@ servercfgdir="${HOME}/.klei/DoNotStarveTogether" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -160,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DoubleActionBoogaloo/cfg/lgsm-default.cfg b/DoubleActionBoogaloo/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/DoubleActionBoogaloo/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 4ee289fb8..9f75798a3 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -1,72 +1,94 @@ #!/bin/bash -# Double Action: Boogaloo -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Double Action: Boogaloo | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="da_rooftops" maxplayers="10" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="317800" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="317800" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="dab-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Double Action: Boogaloo" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dab-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/dab" executabledir="${filesdir}" executable="./dabds.sh" @@ -83,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 28ccec4e1..6c2fa539c 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -1,77 +1,78 @@ #!/bin/bash # Empires Mod -# 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="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="emp_district" maxplayers="62" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game empires -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="460040" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="460040" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="em-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Empires Mod" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="em-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +81,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/empires" executabledir="${filesdir}" executable="./srcds_run" @@ -88,28 +91,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -166,8 +166,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/FistfulOfFrags/cfg/lgsm-default.cfg b/FistfulOfFrags/cfg/lgsm-default.cfg deleted file mode 100644 index 39783e9d8..000000000 --- a/FistfulOfFrags/cfg/lgsm-default.cfg +++ /dev/null @@ -1,126 +0,0 @@ -// **************************************************************************** -// * -// Fistful of Frags - server.cfg * -// Version 240716 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// ............................... Map Cycles ............................... // -// info: There are several predefined mapcycles available that are listed below. -// You can also create your own custom mapcycle. - -// "mapcycle.txt" - All Shootout/2 Team Shootout/4 Team Shootout maps -// "mapcycle_12.txt" - All 12 slot maps for Shootout/2 Team Shootout/4 Team Shootout -// "mapcycle_32.txt" - All 32 slot maps for Shootout/2 Team Shootout/4 Team Shootout -// "mapcycle_tp.txt" - All Teamplay maps -// "mapcycle_vs.txt" - All versus mode maps -// "mapcycle_gt.txt" - All Ghost Town maps -mapcyclefile "mapcycle.txt" - -// ....................... Time Limits/Round Settings ....................... // - -// Time spend on a single map (in minutes) before switching to a new one automatically. -// Default: mp_timelimit 0 -mp_timelimit 15 - -// ........................ Game Specific Commands ........................ // -// info: any commands that only apply to this game. - -// Game Modes -// 1 = Shootout/2 Team Shootout/4 Team Shootout/Ghost Town -// 2 = Teamplay -// 3 = Break Bad -// 4 = Elimination -// 5 = Versus -fof_sv_currentmode 1 - -// Teamplay -// 0 = Free-for-all -// 1 = Team Deathmatch or Teamplay mode -mp_teamplay 0 - -// Team numbers -// 2 = Vigilantes & Desperados -// 3 = Vigilantes, Desperados & Bandidos -// 4 = Vigilantes, Desperados, Bandidos & Rangers -fof_sv_maxteams 4 - -// Friendly fire - Allows team members to injure other members of their team. -// 0 = Friendly fire disabled -// 1 = Friendly fire enabled -mp_friendlyfire 0 - -// ............................. Communication ............................. // - -// Enable communication over voice via microphone. -// Default: sv_voiceenable 1 -sv_voiceenable 1 - -// Players can hear all other players, no team restrictions. -// Default: sv_alltalk 0 -sv_alltalk 1 - -// ............................. Fast Download .............................. // -// info: Allows custom maps to be downloaded to the client. - -// Allows clients to download custom maps and textures etc. from the server at 20 kbps. -// Default: sv_allowdownload 1 -sv_allowdownload 1 - -// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. -// Example: -// server location: maps/custommap.bsp -// web server location: http://example.com/custom/maps/custommap.bsp -// sv_downloadurl "http://example.com/custom" -// Default: sv_downloadurl "" -sv_downloadurl "" - -// ................................ Ban List ............................... // - -// personal banlist based on user IDs. -exec banned_user.cfg - -// personal banlist based on user IPs. -exec banned_ip.cfg - -writeid -writeip - -// ............................. Server Logging ............................. // - -//Enables logging to file, console, and udp < on | off >. -log on - -// Log server bans in the server logs. -// Default: sv_logbans 1 -sv_logbans 1 - -// Echo log information to the console. -// Default: sv_logecho 1 -sv_logecho 1 - -// Log server information in the log file. -// Default: sv_logfile 1 -sv_logfile 1 - -// Log server information to only one file. -// Default: sv_log_onefile 0 -sv_log_onefile 0 diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 18d0058cf..fdc6e9665 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -1,72 +1,94 @@ #!/bin/bash -# Fistful Of Frags -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Fistful Of Frags | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="fof_depot" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game fof -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="295230" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="295230" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="fof-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Fistful of Frags" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="fof-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/fof" executabledir="${filesdir}" executable="./srcds_run" @@ -83,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/GarrysMod/cfg/lgsm-default.cfg b/GarrysMod/cfg/lgsm-default.cfg deleted file mode 100644 index a1e2fd4d6..000000000 --- a/GarrysMod/cfg/lgsm-default.cfg +++ /dev/null @@ -1,86 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 -lua_log_sv 0 - -sv_rcon_banpenalty 0 -sv_rcon_maxfailures 20 -sv_rcon_minfailures 20 -sv_rcon_minfailuretime 20 - -// Network Settings -sv_downloadurl "" -sv_loadingurl "" -net_maxfilesize 64 -sv_maxrate 40000 -sv_minrate 40000 -sv_maxupdaterate 66 -sv_minupdaterate 10 -sv_maxcmdrate 60 -sv_mincmdrate 10 - -// Server Settings -sv_airaccelerate 100 -sv_gravity 600 -sv_allow_wait_command 0 -sv_allow_voice_from_file 0 -sv_turbophysics 0 -sv_max_usercmd_future_ticks 12 -gmod_physiterations 4 -sv_client_min_interp_ratio 1 -sv_client_max_interp_ratio 2 -think_limit 20 -sv_region 0 -sv_noclipspeed 5 -sv_noclipaccelerate 5 -sv_lan 0 -sv_alltalk 1 -sv_contact youremail@changeme.com -sv_cheats 0 -sv_allowcslua 0 -sv_pausable 0 -sv_filterban 1 -sv_forcepreload 1 -sv_footsteps 1 -sv_voiceenable 1 -sv_voicecodec vaudio_speex -sv_timeout 120 -sv_deltaprint 0 -sv_allowupload 0 -sv_allowdownload 0 - -// Sandbox Settings -sbox_noclip 0 -sbox_godmode 0 -sbox_weapons 0 -sbox_playershurtplayers 0 -sbox_maxprops 100 -sbox_maxragdolls 50 -sbox_maxnpcs 10 -sbox_maxballoons 10 -sbox_maxeffects 0 -sbox_maxdynamite 0 -sbox_maxlamps 5 -sbox_maxthrusters 20 -sbox_maxwheels 20 -sbox_maxhoverballs 20 -sbox_maxvehicles 1 -sbox_maxbuttons 20 -sbox_maxemitters 0 - -// Misc Config -exec banned_user.cfg -exec banned_ip.cfg -heartbeat diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index bd73743ea..50622d1c6 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -1,46 +1,32 @@ #!/bin/bash -# Garry's Mod -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Garry's Mod | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Steam App Branch Select -# Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta prerelease " -branch="" - -# Workshop Variables -# http://wiki.garrysmod.com/page/Workshop_for_Dedicated_Servers +## Workshop Parameters | http://wiki.garrysmod.com/page/Workshop_for_Dedicated_Servers workshopauth="" workshopcollectionid="" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="gm_construct" gamemode="sandbox" maxplayers="16" @@ -49,45 +35,75 @@ sourcetvport="27020" clientport="27005" tickrate="66" ip="0.0.0.0" -updateonstart="off" -# Custom Start Parameters +## Custom Start Parameters # Default +r_hunkalloclightmaps 0, fixes a start issue on maps with many lights customparms="+r_hunkalloclightmaps 0" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickrate} +host_workshop_collection ${workshopcollectionid} -authkey ${workshopauth} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} ${customparms}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off] +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="4020" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="4020" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta dev" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="gmod-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Garry's Mod" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="gmod-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -96,6 +112,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/garrysmod" addonsdir="${systemdir}/addons" executabledir="${filesdir}" @@ -105,28 +123,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -183,8 +198,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/GoldenEyeSource/cfg/lgsm-default.cfg b/GoldenEyeSource/cfg/lgsm-default.cfg deleted file mode 100644 index db1a2fdd6..000000000 --- a/GoldenEyeSource/cfg/lgsm-default.cfg +++ /dev/null @@ -1,126 +0,0 @@ -// *********** SERVER & PASSWORD INFO *************** -// Change it to 1 if you want a LAN only Server -// NOTE: You must do "changelevel [levelname]" AFTER starting the server for -// a lan-only server to begin broadcasting -sv_lan 0 - -// Change the number to the region you live in! -// 0=US East coast, 1=US West coast, 2= South America, 3=Europe, 4=Asia, 5=Australia, 6=Middle East, 7=Africa and 255=world -sv_region 0 - -// Give your server a name here -hostname "" - -// Rcon password is used to give your server orders by using console, so think of a good password -rcon_password "" - -// If you want your server to be private, fill in a password and delete the // in front of sv_password -// sv_password "mi6" - -// All talk allows clients to talk to each other via voice even if they are dead, -// spectating, or on the other team -sv_alltalk 1 - -// *********** GOLDENEYE: SOURCE SPECIFIC ********* - -// Radar will show on clients if enabled. Some gameplay scenarios -// force the radar to be visible -ge_allowradar 1 -ge_radar_showenemyteam 1 - -// Paintball mode (for fun!) -ge_paintball 0 - -// Teamplay can be overriden by the current gameplay, but -// this sets our "desired" teamplay state -ge_teamplay 0 - -// *********** GAME SETTINGS, YOU CAN CHANGE THESE THE WAY YOU LIKE IT *************** - -// Allow the use of a flashlight (discouraged for GE:S) -mp_flashlight 0 - -// Disable footstep sounds by uncommenting below -// mp_footsteps 0 - -// 1 enables falling damage, 0 disables it -mp_falldamage 1 - -// Map/match time, in minutes -mp_timelimit 15 - -// Round time, in seconds -ge_roundtime 300 - -// 1 = Forces the engine to use light physics for better server preformance -sv_turbophysics 0 - -// Server round, map, and delay times are defined in Valve.rc -// If you want these times to be reset every map change copy them -// to this file instead (Valve.rc is only executed once on server start) - - -// ********************************************************** -// *********** Load Specific Server Type Settings *********** -// ********************************************************** - -// Uncomment ONE server type to load. This takes care of all settings, map cycles, and gameplay types - -//-- Normal server, recommended settings -exec server_normal.cfg - -//-- N64 Classic Mode ( DM|YOLT|MWGG|LD|LTK, NO Jump ) -// **Use with -maxplayers 4 -//exec server_n64_classic.cfg - -//-- For server with > 24 players -//exec server_large.cfg - -//-- For servers with < 10 players -//exec server_small.cfg - -//-- Vanilla DM only w/ auto teamplay -// **Should be used in conjunction with one of the sizes above -//exec server_dm_only.cfg - -//-- Advanced game modes (LALD, LD, CTK) only -// **Should be used in conjunction with one of the sizes above -//exec server_adv_gamemode.cfg - -//-- Teamplay only! (No MWGG or LALD) -// **Should be used in conjunction with one of the sizes above -//exec server_teamplay.cfg - -//-- Tournament Use Only (Tournament DM) -// **Should be used ALONE only! -//exec server_tournament.cfg - -// Load network settings -exec server_netvalues - -// *********** server logging *********** -log on -sv_logbans 0 -sv_logecho 0 -sv_logfile 1 -sv_log_onefile 0 - - -// *********** DOWNLOAD *********** - -// Allow clients to download files -sv_allowdownload 1 - -// Allow clients to upload customizations files -sv_allowupload 1 - -// VOICE enabled, if you want VOICE disabled then change 1 to 0 -sv_voiceenable 1 - -// *********** CHEATS *********** - -// Enables the use of cheats. ex. "impulse 101" "noclip" -sv_cheats 0 - -// disable clients' ability to pause the server -sv_pausable 0 \ No newline at end of file diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 12ac8a165..21d2ce14c 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -1,34 +1,26 @@ #!/bin/bash -# GoldenEye: Source -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: GoldenEye: Source | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### # Start Variables defaultmap="ge_archives" @@ -37,31 +29,66 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game gesource -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="310" # Source 2007 SDK +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="310" # Source 2007 SDK - -# Server Details -servicename="ges-server" +## LinuxGSM Server Details +# Do not edit gamename="GoldenEye: Source" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ges-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/gesource" executabledir="${filesdir}" executable="./srcds_run" @@ -78,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/HalfLife2Deathmatch/cfg/lgsm-default.cfg b/HalfLife2Deathmatch/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/HalfLife2Deathmatch/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 77ef2a03d..cb048dd93 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -1,67 +1,94 @@ #!/bin/bash -# Half Life 2: Deathmatch -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Half Life 2: Deathmatch | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dm_lockdown" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game hl2mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="232370" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="232370" - -# Server Details -servicename="hl2dm-server" +## LinuxGSM Server Details +# Do not edit gamename="Half Life 2: Deathmatch" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="hl2dm-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/hl2mp" executabledir="${filesdir}" executable="./srcds_run" @@ -78,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/HalfLifeDeathmatch/cfg/lgsm-default.cfg b/HalfLifeDeathmatch/cfg/lgsm-default.cfg deleted file mode 100644 index 585afb9e2..000000000 --- a/HalfLifeDeathmatch/cfg/lgsm-default.cfg +++ /dev/null @@ -1,35 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 3285f810e..2f0ffc812 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -1,66 +1,93 @@ #!/bin/bash -# Half Life: Deathmatch -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Half Life: Deathmatch | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="crossfire" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game valve -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="90" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" - -# Server Details -servicename="hldm-server" +## LinuxGSM Server Details +# Do not edit gamename="Half Life: Deathmatch" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="hldm-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -69,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/valve" executabledir="${filesdir}" executable="./hlds_run" @@ -77,28 +106,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -155,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/HalfLifeDeathmatchSource/cfg/lgsm-default.cfg b/HalfLifeDeathmatchSource/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/HalfLifeDeathmatchSource/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 9c1a1040e..286f76824 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -1,67 +1,94 @@ #!/bin/bash -# Half-Life Deathmatch: Source -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Half-Life Deathmatch: Source | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="crossfire" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game hl1mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="255470" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="255470" - -# Server Details -servicename="hldms-server" +## LinuxGSM Server Details +# Do not edit gamename="Half-Life Deathmatch: Source" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="hldms-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/hl1mp" executabledir="${filesdir}" executable="./srcds_run" @@ -78,19 +107,13 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" @@ -98,8 +121,14 @@ 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 +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" + +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +185,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index a72c59e05..126b8c850 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -1,86 +1,106 @@ #!/bin/bash -# Hurtworld -# Server Management Script -# Author: Daniel Gibbs, -# Contributor: UltimateByte +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Hurtworld | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161026" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login -steamuser="anonymous" -steampass="" - -# Server settings -ip="0.0.0.0" -updateonstart="off" +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters servername="Hurtworld LGSM Server" +ip="0.0.0.0" port="12871" queryport="12881" maxplayers="20" map="" #Optional -creativemode="0" #Free Build +creativemode="0" #Free Build: creativemode="1" logfile="gamelog.txt" -# Adding admins using STEAMID64 +## Adding admins using STEAMID64 # Example : addadmin 012345678901234567; addadmin 987654321098765432 admins="" -# Advanced +## Advanced Server Start Settings # Rollback server state (remove after start command) loadsave="" # Use unstable 64 bit server executable (O/1) x64mode="0" - -# http://hurtworld.wikia.com/wiki/Hosting_A_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://hurtworld.wikia.com/wiki/Hosting_A_Server fn_parms(){ parms="-batchmode -nographics -exec \"host ${port} ${map} ${loadsave};queryport ${queryport};maxplayers ${maxplayers};servername ${servername};creativemode ${creativemode};${admins}\" -logfile \"${logfile}\" " } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="405100" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="405100" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta devtest" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="hurtworld-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Hurtworld" engine="unity3d" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="hurtworld-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname=$(basename $(readlink -f "${BASH_SOURCE[0]}")) lockselfname=".${servicename}.lock" @@ -89,6 +109,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" if [ "${x64mode}" == "1" ]; then @@ -97,29 +119,26 @@ else executable="./Hurtworld.x86" fi -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -176,8 +195,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Insurgency/insserver b/Insurgency/insserver index 77c32f9c5..903511a4a 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -1,36 +1,28 @@ #!/bin/bash -# Insurgency -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Insurgency | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161026" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="ministry" maxplayers="16" tickrate="64" @@ -38,37 +30,67 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" workshop="0" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game insurgency -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} +sv_workshop_enabled ${workshop} -norestart" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="237410" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="237410" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ins-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Insurgency" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ins-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -77,6 +99,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/insurgency" executabledir="${filesdir}" executable="./srcds_run" @@ -85,19 +109,13 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" @@ -105,8 +123,14 @@ 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 +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" + +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -163,8 +187,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/JustCause2/cfg/config.lua b/JustCause2/cfg/config.lua deleted file mode 100644 index 1b17103c4..000000000 --- a/JustCause2/cfg/config.lua +++ /dev/null @@ -1,180 +0,0 @@ --- Welcome to the JC2-MP server configuration file! - ---[[ -SERVER OPTIONS - -Server-related options. ---]] -Server = -{ - -- The maximum number of players that can be on the server at any - -- given time. Make sure your connection and server can handle it! - -- Default value: 5000 - MaxPlayers = 5000, - -- Used to control what IP this server binds to. Unless you're a dedicated - -- game host, you don't need to worry about this. - -- Default value: "" - BindIP = "", - -- The port the server uses. - -- Default value: 7777 - BindPort = 7777, - -- The time before a player is timed out after temporarily losing - -- connection, or crashing without properly disconnecting. - -- Default value (in milliseconds): 10000 - Timeout = 10000, - - -- The name of the server, as seen by players and the server browser. - -- Default value: "JC2-MP Server" - Name = "JC2-MP Server", - -- The server description, as seen by players and the server browser. - -- Default value: "No description available" - Description = "No description available.", - -- The server password. - -- Default value: "" - Password = "", - - -- Controls whether the server announces its presence to the master server - -- and therefore to the server browser. - -- Default value: true - Announce = true, - - -- Controls how often synchronization packets are broadcast by the server - -- in milliseconds - -- Default value (in milliseconds): 180 - SyncUpdate = 180, - - -- CAUTION: Setting this variable to true unlocks a number of potentially - -- unsafe operations, which include: - -- * Native Lua packages (.dll, .so) - -- * Execution of Lua from arbitrary paths (Access to loadfile/dofile) - -- * Unbound io functions, allowing for access to the entire file-system - -- Default value: false - IKnowWhatImDoing = false -} - ---[[ -SYNCRATE OPTIONS - -Sync rate options. These values control how often synchronization -packets are sent by the clients, in milliseconds. This lets you -control how frequent the sync comes in, which may result in a -smoother or less laggy experience ---]] -SyncRates = -{ - -- Default value (in milliseconds): 75 - Vehicle = 75, - -- Default value (in milliseconds): 120 - OnFoot = 120, - -- Default value (in milliseconds): 1000 - Passenger = 1000, - -- Default value (in milliseconds): 250 - MountedGun = 250, - -- Default value (in milliseconds): 350 - StuntPosition = 350 -} - ---[[ -STREAMER OPTIONS - -Streamer-related options. The streamer is responsible for controlling the -visibility of objects (including players and vehicles) for other players. - -What this means is that if you want to extend the distance at which objects -remain visible for players, you need to change the StreamDistance. ---]] -Streamer = -{ - -- The default distance before objects are streamed out. - -- Default value (in metres): 500 - StreamDistance = 500 -} - ---[[ -VEHICLE OPTIONS - -Vehicle-related options. ---]] -Vehicle = -{ - -- The number of seconds required for a vehicle to respawn after - -- vehicle death. - -- Default value (in seconds): 10 - -- For instant respawn: 0 - -- For no respawning: nil - DeathRespawnTime = 10, - -- Controls whether to remove the vehicle if respawning is turned off, - -- and the vehicle dies. - -- Default value: false - DeathRemove = false, - - -- The number of seconds required for a vehicle to respawn after it is - -- left unoccupied. - -- Default value (in seconds): 45 - -- For instant respawn: 0 - -- For no respawning: nil - UnoccupiedRespawnTime = 45, - -- Controls whether to remove the vehicle if respawning is turned off, - -- and the vehicle is left unoccupied. - -- Default value: false - UnoccupiedRemove = false, -} - ---[[ -PLAYER OPTIONS - -Player-related options. ---]] -Player = -{ - -- The default spawn position for players. If you do not use a script - -- to handle spawns, such as the freeroam script, then this spawn position - -- will be used. - -- Default value: Vector3( -6550, 209, -3290 ) - SpawnPosition = Vector3( -6550, 209, -3290 ) -} - ---[[ -MODULE OPTIONS - -Lua module-related options. ---]] -Module = -{ - --[[ - To prevent a large number of errors building up, modules are automatically - unloaded after a certain number of errors in a given timespan. Each error - adds to a counter, which is decremented if there has not been an error - in a certain amount of time. - - This allows you to adjust the number of errors before the module is unloaded, - as well as the time since the last error for the counter to be decremented. - --]] - - -- The maximum number of errors before a module is unloaded. - -- Default value: 5 - MaxErrorCount = 5, - -- The time from the last error necessary for the error counter to be decremented. - -- Default value (in milliseconds): 500 - ErrorDecrementTime = 500 -} - ---[[ -WORLD OPTIONS - -Default settings for worlds. ---]] -World = -{ - -- The default time of day at world creation. - -- Default value (in hours): 0.0 - Time = 0.0, - - -- The increment added to the time of day each second. - -- Default value (in minutes): 1 - TimeStep = 1, - - -- The default weather severity at world creation. - -- Default value: 0 - WeatherSeverity = 0 -} diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 2966d9af0..cc2a32d26 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -1,65 +1,88 @@ #!/bin/bash # Just Cause 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: GAMENAME | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### +# No settings available for Just Cause 2 + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="" +} + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -fn_parms(){ -parms="" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -#### Advanced Variables #### +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +#### LinuxGSM Advanced Settings #### -# Steam +## SteamCMD Settings +# Server appid appid="261140" - # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta publicbeta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="jc2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Just Cause 2" engine="avalanche" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="jc2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -68,6 +91,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./Jcmp-Server" @@ -76,28 +101,25 @@ servercfgdefault="config.lua" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories #gamelogdir="" # No server logs available scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -154,8 +176,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index e4dba3329..543178b2c 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -1,39 +1,34 @@ #!/bin/bash -# Killing Floor -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Killing Floor | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="KF-BioticsLab.rom" ip="0.0.0.0" -updateonstart="off" fn_parms(){ parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" @@ -43,29 +38,59 @@ parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini #parms="server ${defaultmap}?Game=KFStoryGame.KFStoryGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="215360" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="215360" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="kf-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Killing Floor" engine="unreal2" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="kf-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -74,6 +99,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/System" executabledir="${systemdir}" executable="./ucc-bin" @@ -83,30 +110,27 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -163,8 +187,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Left4Dead/cfg/lgsm-default.cfg b/Left4Dead/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/Left4Dead/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 37dc67e5f..79a67cd37 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -1,72 +1,93 @@ #!/bin/bash -# Left 4 Dead -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: Summit Singh Thakur +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Left 4 Dead | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="l4d_hospital01_apartment" maxplayers="8" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game left4dead -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="222840" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="222840" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="l4d-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Left 4 Dead" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="l4d-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/left4dead" executabledir="${filesdir}" executable="./srcds_run" @@ -83,28 +106,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Left4Dead2/cfg/lgsm-default.cfg b/Left4Dead2/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/Left4Dead2/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 8db8c6638..113e09864 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -1,71 +1,93 @@ #!/bin/bash -# Left 4 Dead 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Left 4 Dead 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="c5m1_waterfront" maxplayers="8" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game left4dead2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="222860" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="222860" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="l4d2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Left 4 Dead 2" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="l4d2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -74,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/left4dead2" executabledir="${filesdir}" executable="./srcds_run" @@ -82,28 +106,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -160,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Minecraft/cfg/lgsm-default.ini b/Minecraft/cfg/lgsm-default.ini deleted file mode 100644 index 8e350192c..000000000 --- a/Minecraft/cfg/lgsm-default.ini +++ /dev/null @@ -1,40 +0,0 @@ -#Minecraft server properties (LGSM 210516) -#Sat Aug 20 17:30:15 CEST 2016 -allow-flight=false -allow-nether=true -announce-player-achievements=true -difficulty=1 -enable-command-block=false -enable-query=false -enable-rcon=false -force-gamemode=false -gamemode=0 -generate-structures=true -generator-settings= -hardcore=false -level-name=world -level-seed= -level-type=DEFAULT -max-build-height=256 -max-players=20 -max-tick-time=60000 -max-world-size=29999984 -motd=A Minecraft Server -network-compression-threshold=256 -online-mode=true -op-permission-level=4 -player-idle-timeout=0 -pvp=true -rcon.password= -rcon.port=25575 -resource-pack-sha1= -resource-pack= -server-ip= -server-port=25565 -snooper-enabled=true -spawn-animals=true -spawn-monsters=true -spawn-npcs=true -use-native-transport=true -view-distance=10 -white-list=false diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 230da0fa3..7fd41c03b 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -1,60 +1,88 @@ #!/bin/bash -# Minecraft -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Minecraft | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +javaram="1024" # -Xmx$1024M + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="nogui" +} +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -javaram="1024" # -Xmx$1024M -fn_parms(){ -parms="nogui" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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="mc-server" +## LinuxGSM Server Details +# Do not edit gamename="Minecraft" engine="lwjgl2" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="mc-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="java -Xmx${javaram}M -jar minecraft_server.jar" @@ -64,28 +92,25 @@ servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -142,8 +167,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index f0c18a521..99746c3a0 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -1,53 +1,78 @@ #!/bin/bash -# Mumble -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: UltimateByte +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Mumble | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### +# Use .ini config file for Mumble (Murmur) server. -# Email +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="-fg -ini ${servercfgfullpath}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -fn_parms(){ -parms="-fg -ini ${servercfgfullpath}" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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 +## LinuxGSM Server Details +# Do not edit gamename="Mumble" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers servicename="mumble-server" -# Directories +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -56,6 +81,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./murmur.x86" @@ -64,28 +91,25 @@ servercfgdefault="murmur.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -142,8 +166,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 4c9dcec4b..74127a45a 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -1,41 +1,36 @@ #!/bin/bash -# NS2: Combat -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: NS2: Combat | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="co_core" port="27015" maxplayers="24" ip="0.0.0.0" -updateonstart="off" servername="NS2C Server" webadminuser="admin" webadminpass="admin" @@ -46,34 +41,65 @@ password="" # that the password variable above is not left empty. # -password \"${password}\" -# http://wiki.unknownworlds.com/ns2/Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://wiki.unknownworlds.com/ns2/Dedicated_Server fn_parms(){ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\"" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="313900" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="313900" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ns2c-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="NS2: Combat" engine="spark" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ns2c-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -82,6 +108,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}/ia32" executable="./ns2combatserver_linux32" @@ -89,28 +117,25 @@ servercfgdir="${rootdir}/server1" servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -167,8 +192,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 48f22369f..371f8f3fd 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -1,41 +1,36 @@ #!/bin/bash -# Natural Selection 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Natural Selection 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="ns2_summit" port="27015" maxplayers="24" ip="0.0.0.0" -updateonstart="off" servername="NS2 Server" webadminuser="admin" webadminpass="admin" @@ -46,34 +41,65 @@ password="" # that the password variable above is not left empty. # -password \"${password}\" -# http://wiki.unknownworlds.com/ns2/Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://wiki.unknownworlds.com/ns2/Dedicated_Server fn_parms(){ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -logdir \"${gamelogdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\"" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="4940" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="4940" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ns2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Natural Selection 2" engine="spark" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ns2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -82,6 +108,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./server_linux32" @@ -89,28 +117,25 @@ servercfgdir="${rootdir}/server1" servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -167,8 +192,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/NoMoreRoomInHell/cfg/lgsm-default.cfg b/NoMoreRoomInHell/cfg/lgsm-default.cfg deleted file mode 100644 index ba48eab5b..000000000 --- a/NoMoreRoomInHell/cfg/lgsm-default.cfg +++ /dev/null @@ -1,121 +0,0 @@ -// **************************************************************************** -// * -// No More Room in Hell - server.cfg * -// Version 100116 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// ............................... Map Cycles ............................... // -// info: There are several predefined mapcycles available that are listed below. -// You can also create your own custom mapcycle. - -// "mapcycle.txt" - all maps -// "mapcycle_objective.txt" - objective maps only -// "mapcycle_survival.txt" - survival maps only -// -mapcyclefile "mapcycle.txt" - -// ....................... Time Limits/Round Settings ....................... // - -// Time spend on a single map (in minutes) before switching to a new one automatically. -// Default: mp_timelimit 1 -mp_timelimit 45 - -// Maximum number of rounds to spend on a map before moving to the next one. -// Default: mp_maxrounds 2 -mp_maxrounds 2 - -// ........................ Game Specific Commands ........................ // -// info: any commands that only apply to this game. - -// Difficulty -// info: http://git.io/v35eI -// "casual" - casual difficulty. -// "classic" - classic difficulty. -sv_difficulty "classic" - -// Server tags - Tags show up on the in-game server browser. This helps -// users filter servers. -// vanilla - he server runs the default settings. -// custom - the server runs custom gameplay settings or mods. -// example: sv_tags "custom, fastdl" -sv_tags "" - -// Friendly fire - Allows team members to injure other members of their team. -// Default: mp_friendlyfire 0 -mp_friendlyfire 0 - -// ............................. Communication ............................. // - -// Enable communication over voice via microphone. -// Default: sv_voiceenable 1 -sv_voiceenable 1 - -// Players can hear all other players, no team restrictions. -// Default: sv_alltalk 0 -sv_alltalk 1 - -// ............................. Fast Download .............................. // -// info: Allows custom maps to be downloaded to the client. - -// Allows clients to download custom maps and textures etc. from the server at 20 kbps. -// Default: sv_allowdownload 1 -sv_allowdownload 1 - -// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. -// Example: -// server location: maps/custommap.bsp -// web server location: http://example.com/custom/maps/custommap.bsp -// sv_downloadurl "http://example.com/custom" -// Default: sv_downloadurl "" -sv_downloadurl "" - -// ................................ Ban List ............................... // - -// personal banlist based on user IDs. -exec banned_user.cfg - -// personal banlist based on user IPs. -exec banned_ip.cfg - -writeid -writeip - -// ............................. Server Logging ............................. // - -//Enables logging to file, console, and udp < on | off >. -log on - -// Log server bans in the server logs. -// Default: sv_logbans 1 -sv_logbans 1 - -// Echo log information to the console. -// Default: sv_logecho 1 -sv_logecho 1 - -// Log server information in the log file. -// Default: sv_logfile 1 -sv_logfile 1 - -// Log server information to only one file. -// Default: sv_log_onefile 0 -sv_log_onefile 0 diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index e809b1fa4..449950ce0 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -1,77 +1,99 @@ #!/bin/bash -# No More Room in Hell -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: No More Room in Hell | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="nmo_broadway" maxplayers="8" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game nmrih -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="317670" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="317670" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="nmrih-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="No More Room in Hell" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="nmrih-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +102,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/nmrih" executabledir="${filesdir}" executable="./srcds_run" @@ -88,28 +112,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -166,8 +187,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/OpposingForce/cfg/lgsm-default.cfg b/OpposingForce/cfg/lgsm-default.cfg deleted file mode 100644 index 585afb9e2..000000000 --- a/OpposingForce/cfg/lgsm-default.cfg +++ /dev/null @@ -1,35 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 896a7370e..8b3ca6eb5 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -1,67 +1,94 @@ #!/bin/bash -# Half-Life: Opposing Force -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Half-Life: Opposing Force | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="op4_bootcamp" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game gearbox -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="gearbox" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="gearbox" - -# Server Details -servicename="opfor-server" +## LinuxGSM Server Details +# Do not edit gamename="Half-Life: Opposing Force" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="opfor-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/gearbox" executabledir="${filesdir}" executable="./hlds_run" @@ -78,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/PiratesVikingandKnightsII/cfg/lgsm-default.cfg b/PiratesVikingandKnightsII/cfg/lgsm-default.cfg deleted file mode 100644 index 48ba5072a..000000000 --- a/PiratesVikingandKnightsII/cfg/lgsm-default.cfg +++ /dev/null @@ -1,119 +0,0 @@ -// **************************************************************************** -// * -// Pirates, Vikings, and Knights II * -// Version 100116 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// ............................... Map Cycles ............................... // -// You can create your own custom mapcycle. -mapcyclefile "mapcycle.txt" - -// ....................... Time Limits/Round Settings ....................... // - -// Time spend on a single map (in minutes) before switching to a new one automatically. -// Default: mp_timelimit 0 -mp_timelimit 20 - -// Wait for the end of round before changing map. -// Default: mp_timelimit_waitroundend 0 -mp_timelimit_waitroundend 1 - -// Round duration in minutes. -// Default: mp_roundtime 3 -mp_roundtime 3 - -// Round limit in number of rounds. -// Default: mp_roundlimit 0 - -// Win limit in number of rounds. -// Default: mp_winlimit 0 -mp_winlimit 0 - -// ........................ Game Specific Commands ........................ // - -// Server tags - Tags show up on the in-game server browser. This helps -// users filter servers. -// vanilla - he server runs the default settings. -// custom - the server runs custom gameplay settings or mods. -// example: sv_tags "custom, fastdl" -sv_tags "" - -// Friendly fire - Allows team members to injure other members of their team. -// Default: mp_friendlyfire 0 -mp_friendlyfire 0 - -// ............................. Communication ............................. // - -// Enable communication over voice via microphone. -// Default: sv_voiceenable 1 -sv_voiceenable 1 - -// Players can hear all other players, no team restrictions. -// Default: sv_alltalk 0 -sv_alltalk 0 - -// ............................. Fast Download .............................. // -// info: Allows custom maps to be downloaded to the client. - -// Allows clients to download custom maps and textures etc. from the server at 20 kbps. -// Default: sv_allowdownload 1 -sv_allowdownload 1 - -// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. -// Example: -// server location: maps/custommap.bsp -// web server location: http://example.com/custom/maps/custommap.bsp -// sv_downloadurl "http://example.com/custom" -// Default: sv_downloadurl "" -sv_downloadurl "" - -// ................................ Ban List ............................... // - -// personal banlist based on user IDs. -exec banned_user.cfg - -// personal banlist based on user IPs. -exec banned_ip.cfg - -writeid -writeip - -// ............................. Server Logging ............................. // - -//Enables logging to file, console, and udp < on | off >. -log on - -// Log server bans in the server logs. -// Default: sv_logbans 1 -sv_logbans 1 - -// Echo log information to the console. -// Default: sv_logecho 1 -sv_logecho 1 - -// Log server information in the log file. -// Default: sv_logfile 1 -sv_logfile 1 - -// Log server information to only one file. -// Default: sv_log_onefile 0 -sv_log_onefile 0 diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 19800bb87..5a9e44c50 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -1,72 +1,94 @@ #!/bin/bash -# No More Room in Hell -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: No More Room in Hell | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="bt_island" maxplayers="24" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game pvkii -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="17575" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="17575" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="pvkii-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Pirates, Vikings, and Knights II" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="pvkii-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/pvkii" executabledir="${filesdir}" executable="./srcds_run" @@ -83,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/ProjectZomboid/cfg/lgsm-default.ini b/ProjectZomboid/cfg/lgsm-default.ini deleted file mode 100644 index 5ca4fe917..000000000 --- a/ProjectZomboid/cfg/lgsm-default.ini +++ /dev/null @@ -1,66 +0,0 @@ -nightlengthmodifier=1.0 -PVP=true -PauseEmpty=false -GlobalChat=true -Open=true -ServerWelcomeMessage= Welcome to Project Zomboid MP ! to chat locally press "t", to global chat press "y" or add "/all" before chatting Press /help to have a list of server commands -LogLocalChat=false -AutoCreateUserInWhiteList=false -DisplayUserName=true -SpawnPoint=0,0,0 -SafetySystem=true -ShowSafety=true -SafetyToggleTimer=100 -SafetyCooldownTimer=120 -SpawnItems= -DefaultPort=16261 -Mods= -Map=Muldraugh, KY -DoLuaChecksum=true -Public=false -PublicName=pzserver -PublicDescription= -MaxPlayers=64 -PingFrequency=10 -PingLimit=400 -HoursForLootRespawn=0 -MaxItemsForLootRespawn=4 -ConstructionPreventsLootRespawn=true -DropOffWhiteListAfterDeath=false -NoFireSpread=false -NoFire=false -AnnounceDeath=false -MinutesPerPage=1.0 -HoursForCorpseRemoval=0.0 -SaveWorldEveryMinutes=0 -PlayerSafehouse=false -AdminSafehouse=false -SafehouseAllowTrepass=true -SafehouseAllowFire=true -SafehouseAllowLoot=true -SafehouseAllowRespawn=false -SafehouseDaySurvivedToClaim=0 -SafeHouseRemovalTime=144 -AllowDestructionBySledgehammer=true -KickFastPlayers=false -RCONPort=27015 -RCONPassword= -Password= -MaxAccountsPerUser=0 -SleepAllowed=false -SleepNeeded=false -SteamPort1=8766 -SteamPort2=8767 -WorkshopItems= -SteamScoreboard=true -SteamVAC=true -UPnP=true -UPnPLeaseTime=86400 -UPnPZeroLeaseTimeFallback=true -UPnPForce=true -CoopServerLaunchTimeout=20 -CoopMasterPingTimeout=60 -server_browser_announced_ip= -UseTCPForMapDownloads=false -PlayerRespawnWithSelf=false -PlayerRespawnWithOther=false \ No newline at end of file diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 711c406eb..e4f369929 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -1,68 +1,88 @@ #!/bin/bash -# Project Zomboid -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributions: Bryce Van Dyk (SingingTree) +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Project Zomboid | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +adminpassword="CHANGE_ME" +ip="0.0.0.0" + +fn_parms(){ +parms="-ip ${ip} -adminpassword \"${adminpassword}\"" +} -# Email +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables -adminpassword="CHANGE_ME" -ip="0.0.0.0" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -fn_parms(){ -parms="-ip ${ip} -adminpassword \"${adminpassword}\"" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -#### Advanced Variables #### +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +#### LinuxGSM Advanced Settings #### -# Steam +## SteamCMD Settings +# Server appid appid="380870" - # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta iwillbackupmysave -betapassword iaccepttheconsequences" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="pz-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Project Zomboid" engine="projectzomboid" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="pz-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -71,6 +91,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./start-server.sh" @@ -79,28 +101,25 @@ servercfgdefault="server.cfg" servercfgdir="${HOME}/Zomboid/Server" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${HOME}/Zomboid/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -157,8 +176,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Quake2/cfg/lgsm-default.cfg b/Quake2/cfg/lgsm-default.cfg deleted file mode 100644 index d59e3505f..000000000 --- a/Quake2/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -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 index 5a7faaab7..f13373320 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -1,54 +1,78 @@ #!/bin/bash -# Quake 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Quake 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="210516" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="q2dm1" ip="0.0.0.0" port="27910" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ parms="+set dedicated 1 +set ip ${ip} +set port ${port} +exec ${servercfg} +set deathmatch 1 +map ${defaultmap}" } +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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" +## LinuxGSM Server Details +# Do not edit gamename="Quake 2" engine="idtech2" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="quake2server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -57,6 +81,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/baseq2" executabledir="${filesdir}" executable="./quake2" @@ -64,24 +90,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -138,8 +166,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Quake3/cfg/lgsm-default.cfg b/Quake3/cfg/lgsm-default.cfg deleted file mode 100644 index caccea760..000000000 --- a/Quake3/cfg/lgsm-default.cfg +++ /dev/null @@ -1,36 +0,0 @@ -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 index 6c2e4d844..388fa9a61 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -1,54 +1,79 @@ #!/bin/bash -# Quake 3: Arena -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Quake 3: Arena | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="210516" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="q3dm17" ip="0.0.0.0" port="27960" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters 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 #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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" +## LinuxGSM Server Details +# Do not edit gamename="Quake 3: Arena" engine="idtech3" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="quake3-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -57,6 +82,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/baseq3" executabledir="${filesdir}" executable="./q3ded" @@ -64,24 +91,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -138,8 +167,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh \ No newline at end of file diff --git a/QuakeLive/cfg/lgsm-default.cfg b/QuakeLive/cfg/lgsm-default.cfg deleted file mode 100644 index 6dd87b484..000000000 --- a/QuakeLive/cfg/lgsm-default.cfg +++ /dev/null @@ -1,103 +0,0 @@ -// Servers have the ability to run multiple gametypes, known as "factories." You should not add gameplay related -// cvars in the server config: they may get overwritten by the factory. For creating your own sets of gameplay rules, -// create a file ending in ".factories" inside baseq3/scripts, and refer to "Creating custom gametypes" in the -// server_readme.txt file. - -// Be aware that factories can override any cvar, including ones specified in this config file. - -set sv_hostname "" -set sv_tags "" // Comma delimited field of server tags to show in server browser. - // Will automatically include gametype and some gameplay modifications. - // ex. "crouch slide, classic, space" -set sv_mapPoolFile "mappool.txt" // Map pool that the server will use. See default mapcycle.txt for format. - // Built in map pools: mappool.txt, mappool_ca.txt, mappool_ctf.txt, mappool_duel.txt, - // mappool_ffa.txt, mappool_race.txt, mappool_tdm.txt -set g_accessFile "access.txt" // Used to determine which 64-bit Steam IDs have admin access, or are banned. - -set sv_maxClients "16" // How many players can connect at once. -set g_password "" // Set a server-wide password, and stop all users from connecting without it. -set sv_privateClients "0" // Reserve slots that can be used with sv_privatePassword. -set sv_privatePassword "" // Password to use in conjunction with sv_privateClients. -set com_hunkMegs "60" // May need to be increased for additional players. - -// Flood protection will increment everytime the user sends a client command, ex. dropweapon, changing name, color -// model, or chatting. Set g_floodprot_maxcount to 0 to disable completely, but this will allow uncontrolled spam. -set sv_floodprotect "10" // Kick the player when they reach x commands, decreases by 1 every second -set g_floodprot_maxcount "10" // Kick the player when their userinfo flood counter reaches this level. -set g_floodprot_decay "1000" // Decrease the userinfo flood counter by 1 this often, in milliseconds. - -// Add the below values for which callvotes should be DISABLED: -// map 1 -// map_restart 2 -// nextmap 4 -// gametype 8 (ex: "/callvote map campgrounds" will be allowed, but "/callvote map campgrounds ca" will fail) -// kick 16 -// timelimit 32 -// fraglimit 64 -// shuffle 128 -// teamsize 256 -// cointoss/random 512 -// loadouts 1024 -// end-game voting 2048 -// ammo (global) 4096 -// timers (item) 8192 -set g_voteFlags "0" -set g_allowVote "1" // Turn off all votes -set g_voteDelay "0" // Delay allowing votes for x milliseconds after map load. -set g_voteLimit "0" // Limit users to x votes per map. -set g_allowVoteMidGame "0" // Don't allow callvotes once the map has started -set g_allowSpecVote "0" // Allow spectators to call votes - -set sv_warmupReadyPercentage "0.51" // Ratio of players that must be ready before the match starts. -set g_warmupDelay "15" // Wait x seconds before allowing match to start to allow all players to connect. -set g_warmupReadyDelay "0" // Force the game to start after x seconds after someone readies up. -set g_warmupReadyDelayAction "1" // Set to 1 to force players to spectator after g_warmupReady Delay, 2 to force ready up. - -set g_inactivity "0" // Kick players who are inactive for x amount of seconds. -set g_alltalk "0" // 0: Limit voice comms to teams during match - // 1: Allow all players to talk to each other always - // 2: 1+ send back your own voice to yourself for testing - -// System settings - -// Uncomment and set below to use (server.cfg will override commandline!) -// set net_strict "1" // Quit out immediately if we can't bind the IP and port. -// set net_ip "" // Which IP to bind to. Blank will bind to all interfaces. -// set net_port "55555" // Which UDP port to bind to. Blank will start at 27960 and keep going up, if net_strict is 0. -set sv_serverType "2" // 0 = Offline, 1 = LAN, 2 = Internet -set sv_master "1" // Whether the server should respond to queries. Disable this to stop server from appearing in browser. - // (This will affect the LAN browser!) - -set sv_fps "40" // Change how many frames the server runs per second. WARNING: Has not been tested extensively, and - // will have a direct impact on CPU and network usage! - -// Exit the server if idle (not running a map) for a specified time. This will allow it to automatically restart -// in the case of a game error or other problem. A value of "1" is recommended, but not default, when you are running -// the server detached from the terminal. - -set sv_idleExit "120" - -// Enable remote console, provided through ZeroMQ. See zmq_rcon.py for simple client. -// ZMQ rcon binds on a separate port from the game server, and uses TCP. It must differ from the stats port if used. -// Rcon can not be enabled or disabled after launch, nor can the IP and port change. Password can, however. - -// Uncomment and set below to use (server.cfg will override commandline!) -set zmq_rcon_enable "1" -// set zmq_rcon_ip "" -// set zmq_rcon_port "28960" -set zmq_rcon_password "" - -// Enable ZeroMQ stats socket. This will not be much use without a client listening. -// See zmq_stats_verbose.py for example connect and stats printing. -// If not specified, the stats socket will default to the same IP and port as the game server, but on TCP. - -// Uncomment and set below to use (server.cfg will override commandline!) -// set zmq_stats_enable "1" -// set zmq_stats_ip "" -// set zmq_stats_port "" -// set zmq_stats_password "" - -// The server will run serverstartup when it finishes initializing, so start a random map from the map pool. -set serverstartup "startRandomMap" -// Or, start a map of your choosing (factory is required) -// set serverstartup "map campgrounds ffa" \ No newline at end of file diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 8eb822ad3..66ef0d890 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -1,36 +1,28 @@ #!/bin/bash -# Quake Live -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Quake Live | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters arch="x64" # x64 or x86 port="27960" rconport="28960" @@ -39,37 +31,67 @@ statsport="${port}" statspassword="CHANGE_ME" mappool='mappool.txt' ip="0.0.0.0" -updateonstart="off" -# Install/Config Guide : https://steamcommunity.com/sharedfiles/filedetails/?id=542966946 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | Install/Config Guide : https://steamcommunity.com/sharedfiles/filedetails/?id=542966946 # Console Commands : http://www.regurge.at/ql/ fn_parms(){ parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${port} +set fs_homepath ${filesdir}/${port} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rconpassword} +set zmq_stats_enable 1 +set zmq_stats_password ${statspassword} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="349090" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="349090" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ql-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Quake Live" engine="idtech3_ql" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ql-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -78,6 +100,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable=$([ "${arch}" == 'x64' ] && echo "./run_server_x64.sh" || echo "./run_server_x86.sh") @@ -86,29 +110,26 @@ servercfgdefault="server.cfg" servercfgdir="${filesdir}/baseq3" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -165,8 +186,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 788c7cb7d..1ce9e7af9 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -1,62 +1,94 @@ #!/bin/bash -# Red Orchestra: Ostfront 41-45 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Red Orchestra: Ostfront 41-45 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161026" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="RO-Arad.rom" ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="223250" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## 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="ro-server" +## LinuxGSM Server Details +# Do not edit gamename="Red Orchestra: Ostfront 41-45" engine="unreal2" -# Steam -appid="223250" +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ro-server" + +#### Directories #### +# Edit with care -# Directories +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -64,6 +96,8 @@ lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" + +## Server Specific Directories filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/system" executabledir="${systemdir}" @@ -74,30 +108,31 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" + scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" -##### Script ##### -# Do not edit +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" + +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -154,8 +189,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Ricochet/cfg/lgsm-default.cfg b/Ricochet/cfg/lgsm-default.cfg deleted file mode 100644 index 585afb9e2..000000000 --- a/Ricochet/cfg/lgsm-default.cfg +++ /dev/null @@ -1,35 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 60a9a6b19..a38a67bd6 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -1,34 +1,26 @@ #!/bin/bash -# Ricochet -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Ricochet | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161026" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### # Start Variables defaultmap="rc_arena" @@ -36,32 +28,91 @@ maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game ricochet -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login +steamuser="username" +steampass="password" + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +ip="0.0.0.0" + +## Optional: Game Server Login Token +# GSLT can be used for running a public server. +# More info: https://gameservermanagers.com/gslt +gslt="" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +fn_parms(){ +parms="" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="90" +appidmod="ricochet" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="ricochet" - -# Server Details -servicename="ricochet-server" +## LinuxGSM Server Details +# Do not edit gamename="Ricochet" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ricochet-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +121,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/ricochet" executabledir="${filesdir}" executable="./hlds_run" @@ -78,28 +131,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +206,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Rust/cfg/lgsm-default.cfg b/Rust/cfg/lgsm-default.cfg deleted file mode 100644 index 225215e01..000000000 --- a/Rust/cfg/lgsm-default.cfg +++ /dev/null @@ -1,48 +0,0 @@ -# This file does not include all possible commands but it includes the most common/useful ones. -# If you want to see all possible comands, in the server console type: find . - -# Before some variables are a # symbol. This means it is disabled. Remove the # symbol to enable them. - -######################################### -# Important Settings You Need To Change # -######################################### - -# A text description of your server. For a new line add: \n -server.description "LGSM Server\nRust support : UltimateByte" - -# A URL to the image which shows up on the server details screen (dimensions are 512x256). -server.headerimage "https://github.com/GameServerManagers/LinuxGSM/raw/master/images/logo/lgsm-full-light.png" - -# The URL to your servers website. -server.url "https://gameservermanagers.com/" - -#################################### -# Optional Settings You Can Change # -#################################### - -# A value of false makes text chat location based only (players need to be close to each other). -# Values: true, false -#server.globalchat true - -# Controls if player vs player damage is allowed. If your server is primarily for building, you'll want to set this to false -# Values: true, false -#server.pve false - -# Controls fall damage. -# Values: true, false -#falldamage.enabled true - -# Helicopter bullet accuracy. Higher numbers are less accurate. -#heli.bulletAccuracy 2 - -################################################ -# Settings That Will Lag Server Is Set Too Low # -################################################ - -# Changes how often resources respawn. -#spawn.min_rate 0.1 -#spawn.max_rate 1 - -# Changes how close resources spawn to each other. -#spawn.min_density 0.1 -#spawn.max_density 1 diff --git a/Rust/rustserver b/Rust/rustserver index 19e3e4723..fb83bd11e 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -1,53 +1,43 @@ #!/bin/bash -# Rust -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: UltimateByte (LGSM adaptation), Wulf (Information) +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Rust | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161026" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login (not required) -steamuser="anonymous" -steampass="" - -# Server settings +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters # More settings available after install in serverfiles/server/rust-server/server.cfg servername="Rust" ip="0.0.0.0" -updateonstart="off" port="28015" rconport="28016" rconpassword="CHANGE_ME" maxplayers="50" - -# Advanced +# Advanced Start Settings seed="" # default random; range : 1 to 2147483647 ; used to change or reproduce a procedural map worldsize="3000" # default 3000; range : 1000 to 6000 ; map size in meters saveinterval="300" # Auto-save in seconds tickrate="30" # default 30; range : 15 to 100 -# https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" } @@ -61,29 +51,59 @@ else conditionalseed="" fi -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="258550" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="258550" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta prerelease" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="rust-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Rust" engine="unity3d" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="rust-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname=$(basename $(readlink -f "${BASH_SOURCE[0]}")) lockselfname=".${servicename}.lock" @@ -92,6 +112,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./RustDedicated" @@ -101,30 +123,27 @@ servercfgdefault="server.cfg" servercfgdir="${serveridentitydir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogfile="\"gamelog-$(date '+%Y-%m-%d-%H-%M-%S').log\"" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogfile="\"gamelog-$(date '+%Y-%m-%d-%H-%M-%S').log\"" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -181,8 +200,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/SeriousSam3BFE/cfg/lgsm-default.ini b/SeriousSam3BFE/cfg/lgsm-default.ini deleted file mode 100644 index 1bf1a3c90..000000000 --- a/SeriousSam3BFE/cfg/lgsm-default.ini +++ /dev/null @@ -1,49 +0,0 @@ --- Generated with Server GUI 3 --- http://mrag.nl/sgui3/ - --- General -rcts_strWelcomeNote = "Server RCON MOTD"; -rcts_strAdminPassword = "rconpassword"; -prj_strLogFile = ""; -net_strLocalHost = ""; -gam_idGameMode = "Cooperative"; -ser_iMaxClientBPS = 11000; -prj_iDedicatedFPS = 100; -gam_ctMaxPlayers = 12; -prj_uwPort = 27015; -prj_strMultiplayerSessionName = "Serious Sam 3 Server"; - --- Options -gam_bAllowJoinInProgress = 1; -gam_bAllowPowerupItems = 1; -gam_bAllowArmorItems = 1; -gam_bWeaponsStay = 1; -gam_bAmmoStays = 1; -gam_bArmorStays = 1; -gam_bHealthStays = 1; -gam_bAllowHealthItems = 1; -gam_bInfiniteAmmo = 0; - --- Levels -local mapList = ""; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\01_CairoSquare\01_CairoSquare.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\02_CairoMuseum\02_CairoMuseum.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\03_IbnTulun\03_IbnTulun.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\04_IbnTulun\04_Medina.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\05_CairoTown\05_CairoTown.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\06_Pyramids\06_Pyramids.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\07_Karnak1\07_Karnak1.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\08_Karnak2\08_Karnak2.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\09_Luxor\09_Luxor.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\10_LostNubianTemples\10_LostNubianTemples.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\11_Ramesseum\11_Ramesseum.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\12_HatshepsutTemple\12_HatshepsutTemple.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\02_DLC\01_Philae\01_Philae.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\02_DLC\02_AbuSimbel\02_AbuSimbel.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\02_DLC\03_TempleOfSethirkopshef\03_TempleOfSethirkopshef.wld;"; -prj_StrMapList = mapList; - --- Scripts - --- Custom - diff --git a/SeriousSam3BFE/help/DedicatedServer_Readme.txt b/SeriousSam3BFE/help/DedicatedServer_Readme.txt deleted file mode 100644 index cf5aa8094..000000000 --- a/SeriousSam3BFE/help/DedicatedServer_Readme.txt +++ /dev/null @@ -1,139 +0,0 @@ -Serious Engine Dedicated Server -=============================== - -1. Starting and stopping the dedicated server ---------------------------------------------- - -You can launch the dedicated server either from the Steam client's Tools tab, or by directly starting its executable file. In either case, a Steam client needs to be running on that machine, though the user logged in doesn't have to actually own the game. - -In absence of any further configuration, the server will start the first level of the Coop campaign, with all default settings, on the default port. - -The server will pause immediately after the first level is loaded, and wait for players to join, to conserve the game state. When the first player joins, the game will unpause. - -When all players disconnect, the server will restart its session from the first level again. - -To stop the server, press Ctrl+C in its console window and wait until it shuts down. - -2. Server ports ---------------- - -The server will be immediately visible on your LAN, but to make sure it is also visible on the internet, you need to open the port 27016. Note that this is only game enumeration port, as the game traffic port cannot be specified at the moment, thus this will not alleviate the need for NAT punching. I.e. it is not recommended to run a dedicated server behind a NAT/router that doesn't properly support NAT punching, or otherwise all connections to it will have very high pings. We expect the game traffic port to be specifiable in one of the future updates, but it is not currently possible. - -If you want to allow remote administration (see the section about remote administration below), you need to also forward port 27015 (TCP-only). - -You can change the port that the server is running on using the command-line option "+port". The server will use the given port for Rcon administration and the given port +1 for game enumeration (see above). So, e.g. if you use "+port 25600", game enumeration will work on port 25601 and rcon on port 25600. When game traffic specification becomes possible, it will be on port 25600 in the example, but this is currently not supported. - -You can change the network interface that the server will bind to using the command-line option "+ip". This is used both fr Rcon administration and for game enumeration. When game traffic specification becomes possible, it will also use this, but this is currently not supported (game traffic chooses an interface automatically). - -3. Command line ---------------- - -Command line options can be used to modify any cvar using this format: - -SamHD_DedicatedServer.exe +cvarname1 cvarvalue1 +cvarname2 cvarvalue2 ... +cvarnameN cvarvalueN - -Quotes are needed around values that contain spaces. Cvar names in the command line can be either short names (e.g. +level "Path/Level") where available, or long names (+gam_strLevel "Path/Level"). - -4. Configuration scripts ------------------------- - -When starting, in addition to the command line option, the server will read configuration parameters from the following sources (in this order): - * Content/SeriousSamHD/Config/dedicatedserver.cfg, - * eventual custom script specified via the +exec command line option, - * eventual per-session script specified via the +gameoptions command line option. -The first two are read once on boot, the last one is read on each session start and restart. (When all player's disconnect, the server will load this again before starting the first level.) - -All of those scripts are fully-featured console scripts, i.e. they use the Lua programming language, so you can put ifs, functions and other programming constructs in them. For a full syntax description and other documentation regarding the Lua programming language, please visit: http://www.lua.org . - -Dedicated server does not load or save any .ini files. - -5. Most relevant command line options and cvars ------------------------------------------------ -(long name shown in parentheses) - * +gamemode (gam_idGameMode) - Valid values are: - (cooperative group) - Cooperative (this is the default) - CooperativeCoinOp - TeamSurvival - (versus group) - BeastHunt - CaptureTheFlag - Deathmatch - InstantKill - LastManStanding - LastTeamStanding - MyBurden - TeamBeastHunt - TeamDeathmatch - Note that players can vote to change the game mode, but they cannot switch a server from Cooperative modes to Versus modes or vice versa. - IMPORTANT: Changing this option resets all other gam_ options to defaults for that game mode. If you are also customizing other gam_ options from a script or via Rcon, make sure you change gam_idGameMode first, and then change all others! - * +level (gam_strLevel) - Specifies which level to start. Path is relative to the folder the game was installed in. If not specified, the server will start the default first level. - * +maxplayers (gam_ctMaxPlayers) - Max number of players in the session. Cannot be higher than 16. - * +port (prj_uwPort) - Specifies the port number to start the server on. Default is 27015. - * +ip (net_strLocalHost) - Specifies the network interface to start the server on. Default is empty, meaning automatic. - * +fps (prj_iDedicatedFPS) - Specifies the framerate the dedicated server will run in (min 10). - * +exec (prj_strExecCfg) - Specifies the configuration file to execute when the server first starts. - * +gameoptions (prj_strOptionsScript) - Specifies the game options script to execute. It is executed whenever the server (re)starts the first level. - * +sessionname (prj_strMultiplayerSessionName) - Session name that will be displayed in the server browser. If you don't set this, current username from Windows will be shown. - * +rconpass (rcts_strAdminPassword) - Password used to connect to the server via Rcon (see "Remote administration" above). - * +logfile (prj_strLogFile) - Save the DedicatedServer.log into a different file. Useful if you want to run multiple servers from the same installation. - -NOTE: You can use any of the standard game options like gam_bInifiniteAmmo that customize the gameplay, but note that gam_bCustomizeDifficulty is required for them to take effect! - -6. Some other useful console variables and functions ----------------------------------------------------- - - * gamListPlayers() - print the list of all players to the console in format: 'playerindex: playername' - * gamKickByName() - kick the client with the given player name out of the game - * gamKickByIndex() - kick the client with the given index out of the game - * gamBanByName() - ban the client with the given player name out of the game - * gamBanByIndex() - ban the client with the given index out of the game - - * gamRestartServer() - restarts the dedicated server (disconnects all players) so any changes to game settings or other server options can take effect - * gamRestartGame() - restart game with new session params without disconnecting players - * samRestartMap() - restart the current map (without disconnecting all players) so any changes to game difficulty and similar options can take effect - * gamStop() - stops the current game - * gamStart() - start game with new session params without disconnecting players - * samVotePass() - force the current vote to pass - * samVoteFail() - force the current vote to fail - - * ser_iMaxClientBPS - limit the bandwidth used by each individual client on the server. This caps the cli_iMaxBPS on the server side. - * prj_strMapList - Semicolon separated list of maps used for multiplayer map rotation. - * prj_strMapListFile - Path to the file containing a list of maps used for multiplayer map rotation. - * prj_strDefaultMapDir - Default map folder to use for the map list (specified either by prj_strMapList or prj_strMapListFile). To make it posible to specify map names in a short form, if a '#' prefix is used in a map path, the '#' char will be replaced by the value of this cvar. - -All other cvars and cfuncs can be used, most notable are cvars with "gam_" prefix which can be used to setup difficulty options and similar. To get the list of those or more details about them, use the game client's console with its autocompletion and help. - -7. Remote administration (RCon) -------------------------------- - -Remote administration of Serious Sam HD dedicated servers is implemented via the Telnet protocol. Use any telnet client (e.g. telnet.exe) to connect to the IP and port the server is running on (default is 27015). - -Example: -C:\> telnet my.server.ip 27015 - -(*) NOTE: On Vista and Win7, the telnet command is not installed by default. You need to enable it using the "Turn Windows features on or off" section of the Control Panel. - -You need to specify the rcon password (using the +rconpass "password" command-line option) when starting the server, otherwise it won't allow you to connect to it via Rcon. Also make sure the appropriate port is open, as explained above. - -After entering the correct rcon password, the telnet client will behave similarly to the in-game console (except that SHIFT+TAB combo doesn't work). Additionally you can type a question mark ("?"), followed by a cvar or cfunc to get the help about it. - -8. Example configuration script -------------------------------- - -Here's an example config script. Put that in a text file named "server.cfg" in the root of the game installation (parent of Bin/), and specify "+exec server.cfg" in the command line (without quotes). - ---------8<----- cut here ----------- - -rconpass = "SuperSecretPassword"; -- MAKE SURE YOU CHANGE THIS!!!! -sessionname = "My Server Name" -- set this to the name of your server - -gam_ctMaxPlayers = 8 -gamemode="Deathmatch" -gam_bAutoCycleMaps = 1 - -local prj_strMapList = { - "#SunPalace.wld", -- put a list of map file names for rotation here -} - ---------8<------cut here ---------- \ No newline at end of file diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 852c6a518..39f10db0c 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -1,67 +1,89 @@ #!/bin/bash -# Serious Sam 3: BFE -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Sam 3: BFE | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +ip="0.0.0.0" -# Email +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master/SeriousSam3BFE/help/DedicatedServer_Readme.txt +fn_parms(){ +parms="+ip ${ip} +logfile ${gamelog} +exec ${servercfgfullpath}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables -ip="0.0.0.0" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -# https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/master/SeriousSam3BFE/help/DedicatedServer_Readme.txt -fn_parms(){ -parms="+ip ${ip} +logfile ${gamelog} +exec ${servercfgfullpath}" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -#### Advanced Variables #### +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +#### LinuxGSM Advanced Settings #### -# Steam +## SteamCMD Settings +# Server appid appid="41080" - # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta publicbeta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ss3-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Serious Sam 3: BFE" engine="seriousengine35" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ss3-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +92,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/Bin" executable="./runSam3_DedicatedServer.sh" executabledir="${systemdir}" @@ -78,30 +102,27 @@ servercfgdefault="server.ini" servercfgdir="${filesdir}/Content/SeriousSam3/Config" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -158,8 +179,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Starbound/cfg/lgsm-default.config b/Starbound/cfg/lgsm-default.config deleted file mode 100644 index 275898d2b..000000000 --- a/Starbound/cfg/lgsm-default.config +++ /dev/null @@ -1,49 +0,0 @@ -{ - "allowAdminCommands" : true, - "allowAdminCommandsFromAnyone" : false, - "allowAnonymousConnections" : true, - "allowAssetsMismatch" : true, - "anonymousConnectionsAreAdmin" : false, - "bannedIPs" : [], - "bannedUuids" : [], - "checkAssetsDigest" : false, - "clearPlayerFiles" : false, - "clearUniverseFiles" : false, - "clientIPJoinable" : false, - "clientP2PJoinable" : true, - "configurationVersion" : { - "basic" : 1, - "server" : 4 - }, - "crafting" : { - "filterHaveMaterials" : false - }, - "gameServerBind" : "::", - "gameServerPort" : 21025, - "interactiveHighlight" : true, - "inventory" : { - "pickupToActionBar" : true - }, - "maxPlayers" : 8, - "maxTeamSize" : 4, - "playerBackupFileCount" : 3, - "queryServerBind" : "::", - "queryServerPort" : 21025, - "rconServerBind" : "::", - "rconServerPassword" : "", - "rconServerPort" : 21026, - "rconServerTimeout" : 1000, - "runQueryServer" : false, - "runRconServer" : false, - "safeScripts" : true, - "scriptInstructionLimit" : 10000000, - "scriptInstructionMeasureInterval" : 10000, - "scriptProfilingEnabled" : false, - "scriptRecursionLimit" : 100, - "serverFidelity" : "automatic", - "serverName" : "", - "serverOverrideAssetsDigest" : null, - "serverUsers" : { - }, - "tutorialMessages" : true -} \ No newline at end of file diff --git a/Starbound/sbserver b/Starbound/sbserver index cbe75f260..b569f0a85 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -1,66 +1,93 @@ #!/bin/bash -# Starbound -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Starbound | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="211820" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="211820" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="sb-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Starbound" engine="starbound" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="sb-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -69,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}/linux" executable="./starbound_server" @@ -77,28 +106,25 @@ servercfgdefault="starbound_server.config" servercfgdir="${filesdir}/storage" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${filesdir}/storage" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -155,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/SvenCoop/cfg/lgsm-default.cfg b/SvenCoop/cfg/lgsm-default.cfg deleted file mode 100644 index 6bc0822bc..000000000 --- a/SvenCoop/cfg/lgsm-default.cfg +++ /dev/null @@ -1,36 +0,0 @@ -//---------------------------------------------- -// Sven Co-op v5.0 Default Server CFG -//---------------------------------------------- - -//---------------------------------------------- -// See server_example.cfg for more available -// commands and settings. -//---------------------------------------------- - -hostname "" -log "on" - -rcon_password "" -//sv_password "" - -sys_ticrate 100 -deathmatch 1 -decalfrequency 30 -hpk_maxsize 2 -pausable 0 - -sv_aim 0 -sv_allowdownload 1 -sv_allowupload 1 -sv_region 255 -sv_send_resources 1 -sv_voicecodec "voice_speex" -sv_voiceenable 1 -sv_voicequality 5 - -mp_telefrag 1 -mp_timelimit 99 -mp_weaponstay 1 - -exec banned.cfg -exec listip.cfg \ No newline at end of file diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 2e9257204..449c66b47 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -1,71 +1,93 @@ #!/bin/bash -# Sven Co-op -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Sven Co-op | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="svencoop1" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game svencoop -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="276060" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="276060" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta release_candidate_public" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="svencoop-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Sven Co-op" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="svencoop-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -74,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/svencoop" executabledir="${filesdir}" executable="./svends_run" @@ -82,28 +106,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -160,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/TeamFortress2/cfg/lgsm-default.cfg b/TeamFortress2/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/TeamFortress2/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 5eb44c96f..bf9519a6e 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -1,77 +1,97 @@ #!/bin/bash -# Team Fortress 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Team Fortress 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161026" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="cp_badlands" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game tf -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -# Steam -appid="232250" +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="232250" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="tf2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Team Fortress 2" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="tf2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +100,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/tf" executabledir="${filesdir}" executable="./srcds_run" @@ -88,28 +110,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -166,8 +185,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/TeamFortressClassic/cfg/lgsm-default.cfg b/TeamFortressClassic/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/TeamFortressClassic/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 60b521a4f..4ced5d30a 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -1,67 +1,94 @@ #!/bin/bash -# Team Fortress Classic -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Team Fortress Classic | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dustbowl" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game tfc -strictportbind _ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="tfc" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="tfc" - -# Server Details -servicename="tfc-server" +## LinuxGSM Server Details +# Do not edit gamename="Team Fortress Classic" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="tfc-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/tfc" executabledir="${filesdir}" executable="./hlds_run" @@ -78,28 +107,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/TeamSpeak3/cfg/lgsm-default.ini b/TeamSpeak3/cfg/lgsm-default.ini deleted file mode 100644 index 0fca88d4d..000000000 --- a/TeamSpeak3/cfg/lgsm-default.ini +++ /dev/null @@ -1,20 +0,0 @@ -machine_id= -default_voice_port=9987 -voice_ip=0.0.0.0, :: -licensepath= -filetransfer_port=30033 -filetransfer_ip=0.0.0.0, :: -query_port=10011 -query_ip=0.0.0.0, :: -query_ip_whitelist=query_ip_whitelist.txt -query_ip_blacklist=query_ip_blacklist.txt -dbplugin=ts3db_sqlite3 -dbpluginparameter= -dbsqlpath=sql/ -dbsqlcreatepath=create_sqlite/ -dbconnections=10 -logpath=logs -logquerycommands=0 -dbclientkeepdays=30 -logappend=0 -query_skipbruteforcecheck=0 diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 5b7180515..5903b184a 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -1,40 +1,73 @@ #!/bin/bash -# TeamSpeak 3 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: TeamSpeak 3 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +# Edit serverfiles/ts3-server.ini after installation + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -# Server Details +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="TeamSpeak 3" servername="TeamSpeak 3 Server" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers servicename="ts3-server" -# Directories +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -43,6 +76,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./ts3server_startscript.sh" @@ -51,31 +86,22 @@ servercfgdefault="ts3server.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${filesdir}/logs" scriptlogdir="${rootdir}/log/script" - scriptlog="${scriptlogdir}/${servicename}-script.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" - -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -132,8 +158,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Teeworlds/cfg/ctf.cfg b/Teeworlds/cfg/ctf.cfg deleted file mode 100644 index a92b1a494..000000000 --- a/Teeworlds/cfg/ctf.cfg +++ /dev/null @@ -1,7 +0,0 @@ -sv_gametype ctf -sv_powerups 1 -sv_scorelimit 500 -sv_spectator_slots 0 -sv_timelimit 0 -sv_tournament_mode 0 -sv_map_reload 1 \ No newline at end of file diff --git a/Teeworlds/cfg/dm.cfg b/Teeworlds/cfg/dm.cfg deleted file mode 100644 index 426386d1d..000000000 --- a/Teeworlds/cfg/dm.cfg +++ /dev/null @@ -1,7 +0,0 @@ -sv_gametype dm -sv_powerups 1 -sv_scorelimit 20 -sv_spectator_slots 0 -sv_timelimit 0 -sv_tournament_mode 0 -sv_map_reload 1 \ No newline at end of file diff --git a/Teeworlds/cfg/duel.cfg b/Teeworlds/cfg/duel.cfg deleted file mode 100644 index b70e632a2..000000000 --- a/Teeworlds/cfg/duel.cfg +++ /dev/null @@ -1,7 +0,0 @@ -sv_gametype tdm -sv_powerups 0 -sv_scorelimit 10 -sv_spectator_slots 10 -sv_timelimit 5 -sv_tournament_mode 1 -sv_map_reload 1 \ No newline at end of file diff --git a/Teeworlds/cfg/lgsm-default.cfg b/Teeworlds/cfg/lgsm-default.cfg deleted file mode 100644 index efefdf149..000000000 --- a/Teeworlds/cfg/lgsm-default.cfg +++ /dev/null @@ -1,26 +0,0 @@ -sv_name "" -sv_rcon_password "" -password "" -sv_max_clients 12 -sv_port 8303 -sv_register 1 -sv_spamprotection 0 -sv_vote_map 1 -sv_warmup 10 -logfile "" -addvote restart 10 -addvote exec dm.cfg -addvote exec ctf.cfg -addvote exec duel.cfg -addvote exec tdm.cfg -addvote "change_map ctf1" -addvote "change_map ctf2" -addvote "change_map ctf3" -addvote "change_map ctf4" -addvote "change_map ctf5" -addvote "change_map dm1" -addvote "change_map dm2" -addvote "change_map dm6" -addvote "change_map dm7" -addvote "change_map dm8" -addvote "change_map dm9" \ No newline at end of file diff --git a/Teeworlds/cfg/tdm.cfg b/Teeworlds/cfg/tdm.cfg deleted file mode 100644 index 4cde3cd33..000000000 --- a/Teeworlds/cfg/tdm.cfg +++ /dev/null @@ -1,14 +0,0 @@ -// **************************************************************************** -// * -// Teeworlds - tdm.cfg * -// Version 281015 * -// * -// **************************************************************************** - -sv_gametype tdm -sv_powerups 1 -sv_scorelimit 50 -sv_spectator_slots 0 -sv_timelimit 0 -sv_tournament_mode 0 -sv_map_reload 1 \ No newline at end of file diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 7ad17233a..37f846f9f 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -1,62 +1,93 @@ #!/bin/bash -# Teeworlds -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: Bryce Van Dyk (SingingTree) +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Teeworlds | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161026" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="-f ${servercfgfullpath}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="380840" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="380840" - -# Server Details -servicename="tw-server" +## LinuxGSM Server Details +# Do not edit gamename="Teeworlds" engine="teeworlds" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="tw-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -65,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./teeworlds_srv" @@ -73,29 +106,26 @@ servercfgdefault="server.cfg" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -152,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Terraria/cfg/lgsm-default.txt b/Terraria/cfg/lgsm-default.txt deleted file mode 100644 index 9a907e61d..000000000 --- a/Terraria/cfg/lgsm-default.txt +++ /dev/null @@ -1,68 +0,0 @@ -#this is an example config file for TerrariaServer.exe -#use the command 'TerrariaServer.exe -config serverconfig.txt' to use this configuration or run start-server.bat -#please report crashes by emailing crashlog.txt to support@terraria.org - -#the following is a list of available command line parameters: - -#-config Specifies the configuration file to use. -#-port Specifies the port to listen on. -#-players / -maxplayers Sets the max number of players -#-pass / -password Sets the server password -#-world Load a world and automatically start the server. -#-autocreate <#> Creates a world if none is found in the path specified by -world. World size is specified by: 1(small), 2(medium), and 3(large). -#-banlist Specifies the location of the banlist. Defaults to "banlist.txt" in the working directory. -#-worldname Sets the name of the world when using -autocreate. -#-secure Adds addition cheat protection to the server. -#-noupnp Disables automatic port forwarding -#-steam Enables Steam Support -#-lobby or Allows friends to join the server or sets it to private if Steam is enabled -#-ip Sets the IP address for the server to listen on -#-forcepriority Sets the process priority for this task. If this is used the "priority" setting below will be ignored. - -#remove the # in front of commands to enable them. - -#Load a world and automatically start the server. -world=~/.local/share/Terraria/Worlds/world1.wld - -#Creates a new world if none is found. World size is specified by: 1(small), 2(medium), and 3(large). -autocreate=1 - -#Sets the name of the world when using autocreate -worldname=Terraria - -#Sets the difficulty of the world when using autocreate 0(normal), 1(expert) -difficulty=0 - -#Sets the max number of players allowed on a server. Value must be between 1 and 255 -maxplayers=8 - -#Set the port number -port=7777 - -#Set the server password -password=p@55w0rd - -#Set the message of the day -motd=Please don’t cut the purple trees! - -#Sets the folder where world files will be stored -worldpath=~/.local/share/Terraria/Worlds/ - -#The location of the banlist. Defaults to "banlist.txt" in the working directory. -banlist=banlist.txt - -#Adds addition cheat protection. -secure=1 - -#Sets the server language 1:English, 2:German, 3:Italian, 4:French, 5:Spanish -lang=1 - -#Automatically forward ports with uPNP -#upnp=1 - -#Reduces enemy skipping but increases bandwidth usage. The lower the number the less skipping will happen, but more data is sent. 0 is off. -#npcstream=60 - -#Default system priority 0:Realtime, 1:High, 2:AboveNormal, 3:Normal, 4:BelowNormal, 5:Idle -#priority=1 - diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index db4bba201..e1d9ca028 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -1,62 +1,93 @@ #!/bin/bash -# Terraria -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: Bryce Van Dyk (SingingTree) +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Terraria | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161026" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="-config ${servercfgfullpath}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="105600" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="105600" - -# Server Details -servicename="terraria-server" +## LinuxGSM Server Details +# Do not edit gamename="Terraria" engine="terraria" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="terraria-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -65,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./TerrariaServer" @@ -73,28 +106,25 @@ servercfgdefault="serverconfig.txt" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories #gamelogdir="" # Terraria Doesn't Have a Server Log scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/UnrealTournament/cfg/Engine.ini b/UnrealTournament/cfg/Engine.ini deleted file mode 100644 index 177eaafdb..000000000 --- a/UnrealTournament/cfg/Engine.ini +++ /dev/null @@ -1,3 +0,0 @@ -[/Script/UnrealTournament.UTGameEngine] -bFirstRun=False -RconPassword="" diff --git a/UnrealTournament/cfg/Game.ini b/UnrealTournament/cfg/Game.ini deleted file mode 100644 index 15a1c9159..000000000 --- a/UnrealTournament/cfg/Game.ini +++ /dev/null @@ -1,4 +0,0 @@ -[/Script/UnrealTournament.UTGameState] -ServerName="" -ServerMOTD=WELCOME\n\nHeadshots for everyone. -ServerDescription=This is my server, have fun diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index 0b60ca9d6..cd4ef02d3 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -1,59 +1,84 @@ #!/bin/bash # Unreal Tournament -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Unreal Tournament | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +# For CTF: defaultmap="CTF-Face" gametype="CTF" defaultmap="DM-Underland" gametype="DM" -#defaultmap="CTF-Face" -#gametype="CTF" timelimit="10" ip="0.0.0.0" port="7777" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="UnrealTournament ${defaultmap}?Game=${gametype}?TimeLimit=${timelimit} -port=${port}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select +#### LinuxGSM Advanced Settings #### + +## 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="ut-server" +## LinuxGSM Server Details +# Do not edit gamename="Unreal Tournament" engine="unreal4" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ut-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -62,6 +87,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/LinuxServer" executabledir="${systemdir}/Engine/Binaries/Linux" executable="./UE4Server-Linux-Shipping" @@ -69,28 +96,25 @@ servercfg="Game.ini" servercfgdir="${systemdir}/UnrealTournament/Saved/Config/LinuxServer" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -147,8 +171,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index c841a2199..6de94893e 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -1,45 +1,79 @@ #!/bin/bash -# Unreal Tournament 2004 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Unreal Tournament 2004 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="DM-Rankin" ip="0.0.0.0" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | fn_parms(){ parms="server ${defaultmap}?game=XGame.xDeathMatch -nohomedir ini=${servercfg} log=${gamelog}" } -# Server Details -servicename="ut2k4-server" +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Unreal Tournament 2004" engine="unreal2" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ut2k4-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -48,6 +82,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/System" executabledir="${systemdir}" executable="./ucc-bin" @@ -57,37 +93,27 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" - -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -144,8 +170,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index a094b0daa..5da529d31 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -1,32 +1,28 @@ #!/bin/bash -# Unreal Tournament 3 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Unreal Tournament 3 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" port="7777" queryport="25300" @@ -41,26 +37,54 @@ pureserver="1" allowjoininprogress="true" maxplayers="32" -#list of game types and mutators : http://wiki.unrealadmin.org/FAQ:UT3 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | List of game types and mutators : http://wiki.unrealadmin.org/FAQ:UT3 fn_parms(){ parms="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?MaxPlayers=${maxplayers}?Mutator=${mutators} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select +#### LinuxGSM Advanced Settings #### + +## 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="ut3-server" +## LinuxGSM Server Details +# Do not edit gamename="Unreal Tournament 3" engine="unreal3" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ut3-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -69,6 +93,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${systemdir}/Binaries" executable="./ut3" @@ -77,30 +103,27 @@ servercfgdefault="UTGame.ini" servercfgdir="${systemdir}/UTGame/Config" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -157,8 +180,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 8fa9f4bae..0ee8afd2d 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -1,54 +1,79 @@ #!/bin/bash -# Unreal Tournament 99 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Unreal Tournament 99 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161026" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="DM-Deck16][" ip="0.0.0.0" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="server ${defaultmap}.unr ini=${servercfgfullpath}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select +#### LinuxGSM Advanced Settings #### + +## 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="ut99-server" +## LinuxGSM Server Details +# Do not edit gamename="Unreal Tournament 99" engine="unreal" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ut99-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -57,6 +82,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/System" executabledir="${systemdir}" executable="./ucc-bin" @@ -66,28 +93,25 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -144,8 +168,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/WolfensteinEnemyTerritory/cfg/lgsm-default.cfg b/WolfensteinEnemyTerritory/cfg/lgsm-default.cfg deleted file mode 100644 index 326e27fc9..000000000 --- a/WolfensteinEnemyTerritory/cfg/lgsm-default.cfg +++ /dev/null @@ -1,125 +0,0 @@ -set dedicated "2" // 1: dedicated server for lan 2: dedicated server for internet -// set net_ip "" // set to override the default IP ET uses -// set net_port "27960" // set to override the default port ET uses - -// PASSWORDS & CLIENTS - -set sv_maxclients "20" // number of players including private slots -set g_password "" // set to password protect the server -set sv_privateclients "4" // if set > 0, then this number of client slots will be reserved for connections -set sv_privatepassword "" // that have "password" set to the value of "sv_privatePassword" -set rconpassword "" // remote console access password -set refereePassword "" // referee status password - -// DL, RATE - -set sv_maxRate "13000" // 10000 standard but poor for ET -set sv_dl_maxRate "42000" // increase/decerease if you have plenty/little spare bandwidth -set sv_allowDownload "0" // global toggle for both legacy download and web download -set sv_wwwDownload "0" // toggle to enable web download -set sv_wwwBaseURL "" // base URL for redirection -set sv_wwwDlDisconnected "0" // tell clients to perform their downloads while disconnected from the server -set sv_wwwFallbackURL "" // URL to send to if an http/ftp fails or is refused client side - -// MOTD ETC - -set sv_hostname "" // name of server here -set server_motd0 " ^NEnemy Territory ^7MOTD " // message in right corner of join screen here -set server_motd1 "" -set server_motd2 "" -set server_motd3 "" -set server_motd4 "" -set server_motd5 "" - -// MISC SETTINGS - -set g_heavyWeaponRestriction "100" -set g_antilag "1" -set g_altStopwatchMode "0" -set g_autofireteams "1" -set g_complaintlimit "6" -set g_ipcomplaintlimit "3" -set g_fastres "0" -set g_friendlyFire "1" -//set g_gametype "4" // Game type should be set from map rotation script -set g_minGameClients "8" -set g_maxlives "0" -set g_alliedmaxlives "0" -set g_axismaxlives "0" -set g_teamforcebalance "1" -set g_noTeamSwitching "0" -set g_voiceChatsAllowed "4" -set g_doWarmup "0" -set g_warmup "30" -set g_spectatorInactivity "0" -set sv_floodProtect "1" -set sv_allowDownload "1" -set sv_pure "1" -set sv_minping "0" -set sv_maxping "0" -set match_latejoin "1" -set match_minplayers "4" -set match_mutespecs "0" -set match_readypercent "100" -set match_timeoutcount "0" -set match_warmupDamage "1" -set team_maxplayers "0" -set team_nocontrols "1" -set pmove_fixed "0" -set pmove_msec "8" - -// LMS ONLY SETTINGS - -set g_lms_teamForceBalance "1" -set g_lms_roundlimit "3" -set g_lms_matchlimit "2" -set g_lms_currentMatch "0" -set g_lms_lockTeams "0" -set g_lms_followTeamOnly "1" - -// VOTING - -set g_allowVote "1" -set vote_limit "5" -set vote_percent "50" -set vote_allow_comp "1" -set vote_allow_gametype "1" -set vote_allow_kick "1" -set vote_allow_map "1" -set vote_allow_matchreset "1" -set vote_allow_mutespecs "1" -set vote_allow_nextmap "1" -set vote_allow_pub "1" -set vote_allow_referee "0" -set vote_allow_shuffleteams "1" -set vote_allow_swapteams "1" -set vote_allow_friendlyfire "1" -set vote_allow_timelimit "0" -set vote_allow_warmupdamage "1" -set vote_allow_antilag "1" -set vote_allow_balancedteams "1" -set vote_allow_muting "1" - -// PUNKBUSTER - -// sv_punkbuster is a readonly variable. Use +set sv_punkbuster on command line or use the command pb_sv_enable in the console -//pb_sv_enable - -// LOGGING - -set g_log "etserver.log" // Game logging -set g_logsync 0 -set logfile 0 // Console logging ( 1: enable 2: enable and sync ) - -// MAP ROTATION - -exec campaigncycle.cfg // Campaign mode -//exec objectivecycle.cfg // Objective mode -//exec lmscycle.cfg // Last Man Standing mode - -// WATCHDOG - -// in case the game dies with an ERR_DROP -// or any situation leading to server running with no map -//set com_watchdog 10 // defaults 60 -set com_watchdog_cmd "exec campaigncycle.cfg" // defaults to quit diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 54815accf..08415a1d4 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -1,52 +1,81 @@ #!/bin/bash -# Enemy Territory -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Enemy Territory | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161026" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +# Please use Enemy Territory config file. + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ + parms="+set net_strict 1 +set fs_homepath ${filesdir} +exec ${servercfg}" +} + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" -fn_parms(){ - parms="+set net_strict 1 +set fs_homepath ${filesdir} +exec ${servercfg}" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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="et-server" +## LinuxGSM Server Details +# Do not edit gamename="Wolfenstein: Enemy Territory" engine="idtech3" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="et-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -55,6 +84,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${systemdir}" executable="./etded" @@ -63,28 +94,25 @@ servercfgdefault="server.cfg" servercfgdir="${systemdir}/etmain" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -141,8 +169,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 06e941ff4..b4602a120 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -27,13 +27,13 @@ fn_check_steamcmd_user(){ fi # Anonymous user is set if steamuser is missing if [ -z "${steamuser}" ]; then - fn_print_error_nl "Steam login not set. Using anonymous login." + fn_print_info_nl "Steam login not set. Using anonymous login." if [ -d "${scriptlogdir}" ]; then - fn_script_log_error "Steam login not set. Using anonymous login." + fn_script_log_info "Steam login not set. Using anonymous login." fi steamuser="anonymous" steampass="" - sleep 2 + sleep 1 fi } @@ -69,4 +69,4 @@ fn_check_steamcmd_guard(){ fn_check_steamcmd_user fn_check_steamcmd_sh # stdbuf has now replaced unbuffer. This should not longer be required. -#fn_check_steamcmd_guard \ No newline at end of file +#fn_check_steamcmd_guard diff --git a/lgsm/functions/check_tmuxception.sh b/lgsm/functions/check_tmuxception.sh index d23fd88a4..31e7b81d7 100644 --- a/lgsm/functions/check_tmuxception.sh +++ b/lgsm/functions/check_tmuxception.sh @@ -18,7 +18,7 @@ fn_check_is_in_tmux(){ fi } fn_check_is_in_screen(){ - if [ "$TERM" == "screen" ];then + if [ -n "${STY}" ];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." diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 98814cf03..540729af7 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -350,4 +350,4 @@ fn_print_update_eol(){ fn_print_update_eol_nl(){ echo -e "${cyan}UPDATE${default}" -} \ No newline at end of file +} diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 574fbe2b9..37b48781d 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -8,8 +8,9 @@ local commandname="UPDATE" local commandaction="Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +check.sh + fn_update_steamcmd_dl(){ - check.sh info_config.sh fn_print_dots "SteamCMD" sleep 1 @@ -235,4 +236,4 @@ if [ "${engine}" == "goldsource" ]||[ "${forceupdate}" == "1" ]; then else fn_update_request_log fn_update_steamcmd_check -fi \ No newline at end of file +fi From b16b18f004165c49d9e5bbc70d501ffd771b6eb7 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 28 Oct 2016 19:11:26 +0200 Subject: [PATCH 127/729] Workshop comes after server start settings --- GarrysMod/gmodserver | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 50622d1c6..08793a471 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -22,10 +22,6 @@ version="161026" #### Server Settings #### -## Workshop Parameters | http://wiki.garrysmod.com/page/Workshop_for_Dedicated_Servers -workshopauth="" -workshopcollectionid="" - ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="gm_construct" gamemode="sandbox" @@ -36,6 +32,10 @@ clientport="27005" tickrate="66" ip="0.0.0.0" +## Workshop Parameters | http://wiki.garrysmod.com/page/Workshop_for_Dedicated_Servers +workshopauth="" +workshopcollectionid="" + ## Custom Start Parameters # Default +r_hunkalloclightmaps 0, fixes a start issue on maps with many lights customparms="+r_hunkalloclightmaps 0" @@ -212,4 +212,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 788886450c3219163d096dc7101b5670b054878b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 30 Oct 2016 22:14:36 +0000 Subject: [PATCH 128/729] Backup function improvements (#1161) * Added no of days since last backup Allows the number of days since last backup to be displayed * Added last backup x days ago Added a bracket in the last backup date stating how many days ago the last backup took place * Added lock file creation to logs * corrected trap display ... * Updated comment * updated log message * Lockfile * downloading ${filename}... * Improvements up command_backup.sh Changes to the messages displayed on screen added trap and improved lockfile support renamed some functions other misc changes --- lgsm/functions/check_tmuxception.sh | 4 +- lgsm/functions/command_backup.sh | 255 ++++++++++++++-------------- lgsm/functions/command_debug.sh | 6 +- lgsm/functions/command_details.sh | 8 +- lgsm/functions/command_monitor.sh | 4 +- lgsm/functions/command_start.sh | 4 +- lgsm/functions/command_stop.sh | 6 +- lgsm/functions/core_dl.sh | 8 +- lgsm/functions/info_distro.sh | 2 + 9 files changed, 156 insertions(+), 141 deletions(-) diff --git a/lgsm/functions/check_tmuxception.sh b/lgsm/functions/check_tmuxception.sh index 31e7b81d7..5b906f53e 100644 --- a/lgsm/functions/check_tmuxception.sh +++ b/lgsm/functions/check_tmuxception.sh @@ -10,7 +10,7 @@ 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_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" @@ -20,7 +20,7 @@ fn_check_is_in_tmux(){ fn_check_is_in_screen(){ if [ -n "${STY}" ];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_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" diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 489e0a8f4..34d014c42 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -10,31 +10,57 @@ local commandaction="Backup" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh -fn_script_log "Entering backup" + +# Trap to remove lockfile on quit. +fn_backup_trap(){ + echo "" + echo -ne "backup ${backupname}.tar.gz..." + fn_print_canceled_eol_nl + fn_script_log_info "backup ${backupname}.tar.gz: CANCELED" + sleep 1 + rm -f "${backupdir}/${backupname}.tar.gz" | tee -a "${scriptlog}" + echo -ne "backup ${backupname}.tar.gz..." + fn_print_removed_eol_nl + fn_script_log_info "backup ${backupname}.tar.gz: REMOVED" + # Remove lock file + rm -f "${tmpdir}/.backup.lock" + core_exit.sh +} # Check if a backup is pending or has been aborted using .backup.lock -fn_check_pending_backup(){ +fn_backup_check_lockfile(){ 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" + fn_print_info_nl "Lock file found: Backup is currently running" + fn_script_log_error "Lock file found: Backup is currently running: ${tmpdir}/.backup.lock" core_exit.sh fi } -# Initialization +# Initialisation fn_backup_init(){ - fn_print_dots "" - sleep 0.5 - # Prepare backup file name with servicename current date + # Backup file name with servicename and 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" + fn_print_dots "Backup starting" + fn_script_log_info "Backup starting" + sleep 1 + fn_print_ok "Backup starting" + sleep 1 + echo -ne "\n" + if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then + fn_print_info_nl "There are no previous backups" + else + if [ "${lastbackupdaysago}" == "0" ]; then + daysago="less than 1 day ago" + elif [ "${lastbackupdaysago}" == "1" ]; then + daysago="1 day ago" + else + daysago="${lastbackupdaysago} days ago" + fi + echo " * Previous backup was created ${daysago}, total size ${lastbackupsize}" + sleep 1 + fi } @@ -44,16 +70,16 @@ fn_backup_stop_server(){ # Server is stopped if [ "${status}" == "0" ]; then serverstopped="no" - # Server is up and stoponbackup is off + # Server is running and stoponbackup=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" + fn_print_warn_nl "${servicename} is currently running" + echo " * Although unlikely; creating a backup while ${servicename} is running might corrupt the backup." + fn_script_log_warn "${servicename} is currently running" + fn_script_log_warn "Although unlikely; creating a backup while ${servicename} is running might corrupt the backup" + # Server is running and will be stopped if stoponbackup=on or unset else - fn_print_warning_nl "${servicename} will be stopped during the backup." + fn_print_warn_nl "${servicename} will be stopped during the backup" fn_script_log_warn "${servicename} will be stopped during the backup" sleep 4 serverstopped="yes" @@ -63,117 +89,97 @@ fn_backup_stop_server(){ } # Create required folders -fn_backup_directories(){ -fn_print_dots "Backup in progress, please wait..." -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 +fn_backup_dir(){ + # Create backupdir if it doesn't exist + if [ ! -d "${backupdir}" ]; then + mkdir -p "${backupdir}" + fi } -# Create lockfile fn_backup_create_lockfile(){ -if [ -d "${tmpdir}" ]; then - touch "${tmpdir}/.backup.lock" - fn_script_log "Lockfile created" -fi + # Create lockfile + date > "${tmpdir}/.backup.lock" + fn_script_log_info "Lockfile generated" + fn_script_log_info "${tmpdir}/.backup.lock" + # trap to remove lockfile on quit. + trap fn_backup_trap INT } # 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 - 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 + # Tells how much will be compressed using rootdirduexbackup value from info_distro and prompt for continue + fn_print_info "A total of ${rootdirduexbackup} will be compressed." + fn_script_log_info "A total of ${rootdirduexbackup} will be compressed: ${backupdir}/${backupname}.tar.gz" + sleep 2 + fn_print_dots "Backup (${rootdirduexbackup}) ${backupname}.tar.gz, in progress..." + fn_script_log_info "backup ${rootdirduexbackup} ${backupname}.tar.gz, in progress" + tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol + fn_script_log_fatal "Backup in progress: FAIL" + echo "${tarcmd}" | tee -a "${scriptlog}" + fn_print_fail_nl "Starting backup" + fn_script_log_fatal "Starting backup" else - fn_print_error_nl "Could not determine compression result." - fn_script_log_error "Could not determine compression result." - core_exit.sh + fn_print_ok_eol + sleep 1 + fn_print_ok_nl "Completed: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')" + fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')" 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" +fn_backup_prune(){ + # How many backups there are + info_distro.sh + # How many backups exceed maxbackups + backupquotadiff=$((backupcount-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 + fn_print_dots "Pruning" + fn_script_log_info "Backup pruning activated" + sleep 1 + fn_print_ok_nl "Pruning" + sleep 1 + # If maxbackups greater or equal to backupsoutdatedcount, then it is over maxbackupdays + if [ "${backupquotadiff}" -ge "${backupsoudatedcount}" ]; then + # Display how many backups will be cleared + echo " * Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit" + fn_script_log_info "Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit" + sleep 1 + fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)" + fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)" + sleep 1 + # Clear backups over quota + find "${backupdir}"/ -type f -name "*.tar.gz" -printf '%T@ %p\n' | sort -rn | tail -${backupquotadiff} | cut -f2- -d" " | xargs rm + fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)" + fn_script_log_pass "Pruning: Cleared ${backupquotadiff} backup(s)" + # If maxbackupdays is used over maxbackups + elif [ "${backupquotadiff}" -lt "${backupsoudatedcount}" ]; then + # Display how many backups will be cleared + echo " * Pruning: ${backupsoudatedcount} backup(s) are older than ${maxbackupdays} days." + fn_script_log_info "Pruning: ${backupsoudatedcount} backup(s) older than ${maxbackupdays} days." + sleep 1 + fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)." + fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)" + sleep 1 + # Clear backups over quota + find "${backupdir}"/ -type f -mtime +"${maxbackupdays}" -exec rm -f {} \; + fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)" + fn_script_log_pass "Pruning: Cleared ${backupquotadiff} backup(s)" + fi + sleep 1 fi fi -else - fn_script_log "No backups to clear since maxbackupdays and maxbackups variables are not set" -fi } # Restart the server if it was stopped for the backup -fn_backup_start_back(){ +fn_backup_start_server(){ if [ "${serverstopped}" == "yes" ]; then exitbypass=1 command_start.sh @@ -181,17 +187,16 @@ fn_backup_start_back(){ } # Run functions -fn_check_pending_backup +fn_backup_check_lockfile +fn_backup_create_lockfile fn_backup_init fn_backup_stop_server -fn_backup_directories -fn_backup_create_lockfile +fn_backup_dir fn_backup_compression -fn_check_tar_exit -fn_backup_remove_lockfile -fn_backup_summary -fn_backup_clearing -fn_backup_start_back +fn_backup_prune +fn_backup_start_server + +# Remove lock file +rm -f "${tmpdir}/.backup.lock" -sleep 0.5 core_exit.sh diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 98bd3082c..ac1d0add8 100644 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -10,7 +10,7 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" # Trap to remove lockfile on quit. fn_lockfile_trap(){ - # Remove lock file + # Remove lockfile rm -f "${rootdir}/${lockselfname}" # resets terminal. Servers can sometimes mess up the terminal on exit. reset @@ -87,8 +87,10 @@ fn_script_log_info "Starting debug" sleep 1 fn_print_ok_nl "Starting debug" -# create lock file. +# Create lockfile date > "${rootdir}/${lockselfname}" +fn_script_log_info "Lockfile generated" +fn_script_log_info "${rootdir}/${lockselfname}" # trap to remove lockfile on quit. trap fn_lockfile_trap INT diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 22f8e2a5f..5743e17b0 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -262,7 +262,13 @@ fn_details_backup(){ { echo -e "${blue}No. of backups:\t${default}${backupcount}" echo -e "${blue}Latest backup:${default}" - echo -e "${blue} date:\t${default}${lastbackupdate}" + if [ "${lastbackupdaysago}" == "0" ]; then + echo -e "${blue} date:\t${default}${lastbackupdate} (less than 1 day ago)" + elif [ "${lastbackupdaysago}" == "1" ]; then + echo -e "${blue} date:\t${default}${lastbackupdate} (1 day ago)" + else + echo -e "${blue} date:\t${default}${lastbackupdate} (${lastbackupdaysago} days ago)" + fi echo -e "${blue} file:\t${default}${lastbackup}" echo -e "${blue} size:\t${default}${lastbackupsize}" } | column -s $'\t' -t diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index b11015e40..3c6d7fad4 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -13,8 +13,8 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_monitor_check_lockfile(){ # Monitor does not run it lockfile is not found if [ ! -f "${rootdir}/${lockselfname}" ]; then - fn_print_error_nl "Disabled: No lock file found" - fn_script_log_error "Disabled: No lock file found" + fn_print_error_nl "Disabled: No lockfile found" + fn_script_log_error "Disabled: No lockfile found" echo " * To enable monitor run ./${selfname} start" core_exit.sh fi diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index f7f324bf1..57dcbfa60 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -33,7 +33,7 @@ fn_start_teamspeak3(){ fi mv "${scriptlog}" "${scriptlogdate}" - # Create lock file + # Create lockfile date > "${rootdir}/${lockselfname}" cd "${executabledir}" if [ "${ts3serverpass}" == "1" ];then @@ -78,7 +78,7 @@ fn_start_tmux(){ core_exit.sh fi - # Create lock file + # Create lockfile date > "${rootdir}/${lockselfname}" cd "${executabledir}" tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp" diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 489013e3d..95aa10536 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -234,7 +234,7 @@ fn_stop_teamspeak3(){ ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 check_status.sh if [ "${status}" == "0" ]; then - # Remove lock file + # Remove lockfile rm -f "${rootdir}/${lockselfname}" fn_print_ok_nl "${servername}" fn_script_log_pass "Stopped ${servername}" @@ -253,7 +253,7 @@ fn_stop_mumble(){ sleep 1 check_status.sh if [ "${status}" == "0" ]; then - # Remove lock file + # Remove lockfile rm -f "${rootdir}/${lockselfname}" fn_stop_tmux fn_script_log_pass "Stopped ${servername}" @@ -272,7 +272,7 @@ fn_stop_tmux(){ sleep 0.5 check_status.sh if [ "${status}" == "0" ]; then - # Remove lock file + # Remove lockfile rm -f "${rootdir}/${lockselfname}" # ARK doesn't clean up immediately after tmux is killed. # Make certain the ports are cleared before continuing. diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index e6e563fc7..6d971b997 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -78,14 +78,14 @@ fn_dl_extract(){ # Trap to remove file download if canceled before completed fn_fetch_trap(){ echo "" - echo -ne "downloading ${filename}: " + echo -ne "downloading ${filename}..." fn_print_canceled_eol_nl - fn_script_log_info "downloading ${filename}: CANCELED" + fn_script_log_info "downloading ${filename}...CANCELED" sleep 1 rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" - echo -ne "downloading ${filename}: " + echo -ne "downloading ${filename}..." fn_print_removed_eol_nl - fn_script_log_info "downloading ${filename}: REMOVED" + fn_script_log_info "downloading ${filename}...REMOVED" core_exit.sh } diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index f526b4328..cc4037d72 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -122,6 +122,8 @@ if [ -d "${backupdir}" ]; then lastbackup=$(ls -t "${backupdir}"/*.tar.gz | head -1) # date of most recent backup. lastbackupdate=$(date -r "${lastbackup}") + # no of days since last backup. + lastbackupdaysago=$(( ( $(date +'%s') - $(date -r "${lastbackup}" +'%s') )/60/60/24 )) # size of most recent backup. lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}') fi From a1f102f823ac0d28621a1b3bb61fb6e2cfca8c76 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 30 Oct 2016 22:28:44 +0000 Subject: [PATCH 129/729] Updated Version numbers --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 4 ++-- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- 57 files changed, 58 insertions(+), 58 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index fe8f3d210..5825a9248 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index cdda3b2f9..f2a9f2641 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index fe41a5cf4..e4b4fb83b 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 7e10aa02e..43212f78a 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 3f540c12c..62bea603e 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 21444e0c9..548adea2a 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 8900e978a..86c2fc9c8 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 5120d11d0..dd622b8ae 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 14ff451f3..bca3e12a3 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 5eb1fb83d..5eb278771 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 6ce09436b..8018883b9 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 716c9904d..78345eb9c 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 5f4787861..e6db43522 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index f212701b9..8386384b6 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 8f4be1a62..d39568a53 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 31dda30c3..d2be5c1be 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index a2a6a909a..5b9a5c112 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 9f75798a3..c080c568a 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index fdc6e9665..7dc5cc571 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 08793a471..1bbba189c 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 21d2ce14c..7dd85e2f6 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index cb048dd93..6b0489fe6 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 2f0ffc812..43e3bf106 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 286f76824..07b2c24cf 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 126b8c850..d63e5a346 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## @@ -29,7 +29,7 @@ port="12871" queryport="12881" maxplayers="20" map="" #Optional -creativemode="0" #Free Build: creativemode="1" +creativemode="0" #Free Build: creativemode="1" logfile="gamelog.txt" ## Adding admins using STEAMID64 diff --git a/Insurgency/insserver b/Insurgency/insserver index 903511a4a..6a2748478 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index cc2a32d26..4c89b31c1 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -15,7 +15,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 543178b2c..5f0e44154 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 79a67cd37..2a7a20be1 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 113e09864..0a84f1d83 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 7fd41c03b..ab69b9010 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 99746c3a0..ace1dac08 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 74127a45a..460ce874c 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 371f8f3fd..741f37862 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 449950ce0..d5910ab44 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 8b3ca6eb5..1c059ed6b 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 5a9e44c50..bc7767adb 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index e4f369929..0586a2c13 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index f13373320..94de84180 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index 388fa9a61..c302f10c0 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 66ef0d890..33cc3696c 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 1ce9e7af9..025bf348c 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index a38a67bd6..8eb18e0c1 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index fb83bd11e..0ac0ab260 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 39f10db0c..f0b1181e9 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index b569f0a85..dd5e70e4e 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 449c66b47..82101fefa 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index bf9519a6e..5adfaa87b 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 4ced5d30a..8b6994e4a 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 5903b184a..f0bfbb8ea 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 37f846f9f..bae6a0427 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index e1d9ca028..a7b2b6c8b 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index cd4ef02d3..d011b93ad 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -15,7 +15,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 6de94893e..c8c1f55ee 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 5da529d31..b65b633bb 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 0ee8afd2d..8787df657 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 08415a1d4..c4a5a0db8 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161026" +version="161030" ########################## ######## Settings ######## From 5e0edfddb04d0212e2e467b930777094512bafa5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 30 Oct 2016 22:32:49 +0000 Subject: [PATCH 130/729] Removed "Steam login not set. Using anonymous login." No requirement for it to be displayed everytime --- lgsm/functions/check_steamcmd.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index b4602a120..20a36afea 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -27,9 +27,8 @@ fn_check_steamcmd_user(){ fi # Anonymous user is set if steamuser is missing if [ -z "${steamuser}" ]; then - fn_print_info_nl "Steam login not set. Using anonymous login." if [ -d "${scriptlogdir}" ]; then - fn_script_log_info "Steam login not set. Using anonymous login." + fn_script_log_info "Using anonymous Steam login." fi steamuser="anonymous" steampass="" From a3e98d0039d90e92a075fd9aa70e82753b29e495 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 30 Oct 2016 22:42:12 +0000 Subject: [PATCH 131/729] Release 161030 (#1162) * If there are backups in backup dir. Fixes #1140 * mainly improves logging #1098 * Better logging, output & compatibility #1098 * fn_check_cfgdir for Rust fixes #1141 * fn_set_config_vars is not for every game removing some games i know don't use it * Install config if missing fixes #1142 * Clear more logs #1137 * Putting all this into functions & prepare noprompt * noprompt & shutdownonbackup #1098 * fix syntax & messages #1098 * messages that make more sense #1098 * New backup vars # Backup maxbackups="4" maxbackupdays="30" stoponbackup="on" * Should fix missing cached mem #1143 * fix the fix for #1143 (close double quote) * move -type f before -mtime * New gameservers & features (#1158) * Two # is now one block of settings & descriptions * directories comments and logs naming * dgibbs revision and root check * update_steamcmd.sh Check is now done out of functions * Better way to detect screen #1154 and #1156 * Backup function improvements (#1161) * Added no of days since last backup * Added lock file creation to logs * Improvements up command_backup.sh Changes to the messages displayed on screen added trap and improved lockfile support renamed some functions other misc changes * Updated Version numbers --- 7DaysToDie/sdtdserver | 122 ++++++--- ARKSurvivalEvolved/arkserver | 125 ++++++---- ARKSurvivalEvolved/cfg/lgsm-default.ini | 135 ---------- Arma3/arma3server | 144 +++++++---- Arma3/cfg/lgsm-default.network.cfg | 77 ------ Arma3/cfg/lgsm-default.server.cfg | 133 ---------- Battlefield1942/bf1942server | 94 +++++-- BlackMesa/bmdmserver | 119 ++++++--- BlackMesa/cfg/lgsm-default.cfg | 24 -- BladeSymphony/bsserver | 116 +++++---- BladeSymphony/cfg/lgsm-default.cfg | 15 -- BrainBread2/bb2server | 125 ++++++---- BrainBread2/cfg/lgsm-default.cfg | 201 --------------- CodenameCURE/ccserver | 128 ++++++---- CodenameCURE/cfg/lgsm-default.cfg | 105 -------- CounterStrike/cfg/lgsm-default.cfg | 38 --- CounterStrike/csserver | 123 ++++++--- .../cfg/lgsm-default.cfg | 38 --- CounterStrikeConditionZero/csczserver | 125 ++++++---- .../cfg/lgsm-default.cfg | 31 --- CounterStrikeGlobalOffensive/csgoserver | 144 +++++++---- CounterStrikeSource/cfg/lgsm-default.cfg | 15 -- CounterStrikeSource/cssserver | 129 ++++++---- DayOfDefeat/cfg/lgsm-default.cfg | 38 --- DayOfDefeat/dodserver | 124 +++++++--- DayOfDefeatSource/cfg/lgsm-default.cfg | 38 --- DayOfDefeatSource/dodsserver | 128 ++++++---- DayOfInfamy/cfg/lgsm-default.cfg | 16 -- DayOfInfamy/doiserver | 125 ++++++---- DeathmatchClassic/cfg/lgsm-default.cfg | 35 --- DeathmatchClassic/dmcserver | 125 ++++++---- DontStarveTogether/cfg/lgsm-default.ini | 39 --- DontStarveTogether/dstserver | 128 ++++++---- DoubleActionBoogaloo/cfg/lgsm-default.cfg | 15 -- DoubleActionBoogaloo/dabserver | 128 ++++++---- EmpiresMod/emserver | 127 +++++----- FistfulOfFrags/cfg/lgsm-default.cfg | 126 ---------- FistfulOfFrags/fofserver | 128 ++++++---- GarrysMod/cfg/lgsm-default.cfg | 86 ------- GarrysMod/gmodserver | 144 ++++++----- GoldenEyeSource/cfg/lgsm-default.cfg | 126 ---------- GoldenEyeSource/gesserver | 121 ++++++--- HalfLife2Deathmatch/cfg/lgsm-default.cfg | 15 -- HalfLife2Deathmatch/hl2dmserver | 123 ++++++--- HalfLifeDeathmatch/cfg/lgsm-default.cfg | 35 --- HalfLifeDeathmatch/hldmserver | 123 ++++++--- HalfLifeDeathmatchSource/cfg/lgsm-default.cfg | 15 -- HalfLifeDeathmatchSource/hldmsserver | 122 ++++++--- Hurtworld/hwserver | 140 +++++++---- Insurgency/insserver | 127 ++++++---- JustCause2/cfg/config.lua | 180 -------------- JustCause2/jc2server | 119 ++++++--- KillingFloor/kfserver | 125 ++++++---- Left4Dead/cfg/lgsm-default.cfg | 15 -- Left4Dead/l4dserver | 129 ++++++---- Left4Dead2/cfg/lgsm-default.cfg | 15 -- Left4Dead2/l4d2server | 128 ++++++---- Minecraft/cfg/lgsm-default.ini | 40 --- Minecraft/mcserver | 102 +++++--- Mumble/mumbleserver | 99 +++++--- NS2Combat/ns2cserver | 126 ++++++---- NaturalSelection2/ns2server | 126 ++++++---- NoMoreRoomInHell/cfg/lgsm-default.cfg | 121 --------- NoMoreRoomInHell/nmrihserver | 130 ++++++---- OpposingForce/cfg/lgsm-default.cfg | 35 --- OpposingForce/opforserver | 125 ++++++---- .../cfg/lgsm-default.cfg | 119 --------- PiratesVikingandKnightsII/pvkiiserver | 128 ++++++---- ProjectZomboid/cfg/lgsm-default.ini | 66 ----- ProjectZomboid/pzserver | 124 ++++++---- Quake2/cfg/lgsm-default.cfg | 15 -- Quake2/q2server | 100 +++++--- Quake3/cfg/lgsm-default.cfg | 36 --- Quake3/q3server | 99 +++++--- QuakeLive/cfg/lgsm-default.cfg | 103 -------- QuakeLive/qlserver | 128 ++++++---- RedOrchestra/roserver | 120 ++++++--- Ricochet/cfg/lgsm-default.cfg | 35 --- Ricochet/ricochetserver | 147 ++++++++--- Rust/cfg/lgsm-default.cfg | 48 ---- Rust/rustserver | 134 ++++++---- SeriousSam3BFE/cfg/lgsm-default.ini | 49 ---- .../help/DedicatedServer_Readme.txt | 139 ----------- SeriousSam3BFE/ss3sserver | 126 ++++++---- Starbound/cfg/lgsm-default.config | 49 ---- Starbound/sbserver | 125 ++++++---- SvenCoop/cfg/lgsm-default.cfg | 36 --- SvenCoop/svenserver | 128 ++++++---- TeamFortress2/cfg/lgsm-default.cfg | 15 -- TeamFortress2/tf2server | 128 ++++++---- TeamFortressClassic/cfg/lgsm-default.cfg | 38 --- TeamFortressClassic/tfcserver | 125 ++++++---- TeamSpeak3/cfg/lgsm-default.ini | 20 -- TeamSpeak3/ts3server | 99 +++++--- Teeworlds/cfg/ctf.cfg | 7 - Teeworlds/cfg/dm.cfg | 7 - Teeworlds/cfg/duel.cfg | 7 - Teeworlds/cfg/lgsm-default.cfg | 26 -- Teeworlds/cfg/tdm.cfg | 14 -- Teeworlds/twserver | 121 ++++++--- Terraria/cfg/lgsm-default.txt | 68 ----- Terraria/terrariaserver | 121 ++++++--- UnrealTournament/cfg/Engine.ini | 3 - UnrealTournament/cfg/Game.ini | 4 - UnrealTournament/utserver | 105 +++++--- UnrealTournament2004/ut2k4server | 117 ++++++--- UnrealTournament3/ut3server | 106 +++++--- UnrealTournament99/ut99server | 103 +++++--- .../cfg/lgsm-default.cfg | 125 ---------- WolfensteinEnemyTerritory/wetserver | 103 +++++--- lgsm/functions/check_config.sh | 3 +- lgsm/functions/check_steamcmd.sh | 7 +- lgsm/functions/check_tmuxception.sh | 6 +- lgsm/functions/command_backup.sh | 233 ++++++++++++++---- lgsm/functions/command_debug.sh | 6 +- lgsm/functions/command_details.sh | 8 +- lgsm/functions/command_monitor.sh | 4 +- lgsm/functions/command_start.sh | 4 +- lgsm/functions/command_stop.sh | 6 +- lgsm/functions/core_dl.sh | 8 +- lgsm/functions/core_messages.sh | 2 +- lgsm/functions/info_distro.sh | 29 ++- lgsm/functions/install_config.sh | 4 +- lgsm/functions/logs.sh | 14 ++ lgsm/functions/update_steamcmd.sh | 5 +- 125 files changed, 4925 insertions(+), 5348 deletions(-) delete mode 100644 ARKSurvivalEvolved/cfg/lgsm-default.ini delete mode 100644 Arma3/cfg/lgsm-default.network.cfg delete mode 100644 Arma3/cfg/lgsm-default.server.cfg delete mode 100644 BlackMesa/cfg/lgsm-default.cfg delete mode 100644 BladeSymphony/cfg/lgsm-default.cfg delete mode 100644 BrainBread2/cfg/lgsm-default.cfg delete mode 100644 CodenameCURE/cfg/lgsm-default.cfg delete mode 100644 CounterStrike/cfg/lgsm-default.cfg delete mode 100644 CounterStrikeConditionZero/cfg/lgsm-default.cfg delete mode 100644 CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg delete mode 100644 CounterStrikeSource/cfg/lgsm-default.cfg delete mode 100644 DayOfDefeat/cfg/lgsm-default.cfg delete mode 100644 DayOfDefeatSource/cfg/lgsm-default.cfg delete mode 100644 DayOfInfamy/cfg/lgsm-default.cfg delete mode 100644 DeathmatchClassic/cfg/lgsm-default.cfg delete mode 100644 DontStarveTogether/cfg/lgsm-default.ini delete mode 100644 DoubleActionBoogaloo/cfg/lgsm-default.cfg delete mode 100644 FistfulOfFrags/cfg/lgsm-default.cfg delete mode 100644 GarrysMod/cfg/lgsm-default.cfg delete mode 100644 GoldenEyeSource/cfg/lgsm-default.cfg delete mode 100644 HalfLife2Deathmatch/cfg/lgsm-default.cfg delete mode 100644 HalfLifeDeathmatch/cfg/lgsm-default.cfg delete mode 100644 HalfLifeDeathmatchSource/cfg/lgsm-default.cfg delete mode 100644 JustCause2/cfg/config.lua delete mode 100644 Left4Dead/cfg/lgsm-default.cfg delete mode 100644 Left4Dead2/cfg/lgsm-default.cfg delete mode 100644 Minecraft/cfg/lgsm-default.ini delete mode 100644 NoMoreRoomInHell/cfg/lgsm-default.cfg delete mode 100644 OpposingForce/cfg/lgsm-default.cfg delete mode 100644 PiratesVikingandKnightsII/cfg/lgsm-default.cfg delete mode 100644 ProjectZomboid/cfg/lgsm-default.ini delete mode 100644 Quake2/cfg/lgsm-default.cfg delete mode 100644 Quake3/cfg/lgsm-default.cfg delete mode 100644 QuakeLive/cfg/lgsm-default.cfg delete mode 100644 Ricochet/cfg/lgsm-default.cfg delete mode 100644 Rust/cfg/lgsm-default.cfg delete mode 100644 SeriousSam3BFE/cfg/lgsm-default.ini delete mode 100644 SeriousSam3BFE/help/DedicatedServer_Readme.txt delete mode 100644 Starbound/cfg/lgsm-default.config delete mode 100644 SvenCoop/cfg/lgsm-default.cfg delete mode 100644 TeamFortress2/cfg/lgsm-default.cfg delete mode 100644 TeamFortressClassic/cfg/lgsm-default.cfg delete mode 100644 TeamSpeak3/cfg/lgsm-default.ini delete mode 100644 Teeworlds/cfg/ctf.cfg delete mode 100644 Teeworlds/cfg/dm.cfg delete mode 100644 Teeworlds/cfg/duel.cfg delete mode 100644 Teeworlds/cfg/lgsm-default.cfg delete mode 100644 Teeworlds/cfg/tdm.cfg delete mode 100644 Terraria/cfg/lgsm-default.txt delete mode 100644 UnrealTournament/cfg/Engine.ini delete mode 100644 UnrealTournament/cfg/Game.ini delete mode 100644 WolfensteinEnemyTerritory/cfg/lgsm-default.cfg diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 7ec533282..5825a9248 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -1,67 +1,93 @@ #!/bin/bash -# 7 Days To Die -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: 7 Days To Die | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" -# http://7daystodie.gamepedia.com/Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://7daystodie.gamepedia.com/Server fn_parms(){ parms="-logfile ${gamelogdir}/output_log__`date +%Y-%m-%d__%H-%M-%S`.txt -quit -batchmode -nographics -dedicated -configfile=${servercfgfullpath}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="294420" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="294420" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". # Example: "-beta latest_experimental" branch="" -# Server Details -servicename="sdtd-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="7 Days To Die" engine="unity3d" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="sdtd-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./7DaysToDieServer.x86" @@ -77,25 +105,27 @@ servercfg="${servicename}.xml" servercfgdefault="serverconfig.xml" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -152,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index bcabf3e27..f2a9f2641 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -1,36 +1,28 @@ #!/bin/bash -# ARK: Survivial Evolved -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: ARK: Survival Evolved | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters servername="ark-server" port="7778" queryport="27015" @@ -38,35 +30,66 @@ rconport="32330" rconpassword="" # Set to enable rcon maxplayers="50" ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="\"TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?ServerAdminPassword=${rconpassword}\"" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="376030" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="376030" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ark-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="ARK: Survivial Evolved" engine="unreal4" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ark-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +98,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/ShooterGame" executabledir="${systemdir}/Binaries/Linux" executable="./ShooterGameServer" @@ -82,24 +107,26 @@ servercfgdir="${systemdir}/Saved/Config/LinuxServer" servercfg="GameUserSettings.ini" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/GameUserSettings.ini" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +183,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/ARKSurvivalEvolved/cfg/lgsm-default.ini b/ARKSurvivalEvolved/cfg/lgsm-default.ini deleted file mode 100644 index e14a10c6f..000000000 --- a/ARKSurvivalEvolved/cfg/lgsm-default.ini +++ /dev/null @@ -1,135 +0,0 @@ -[ServerSettings] -AllowFlyerCarryPvE=False -AllowThirdPersonPlayer=False -AlwaysNotifyPlayerLeft=False -AutoSavePeriodMinutes=15.000000 -ClampResourceHarvestDamage=False -DayCycleSpeedScale=1.000000 -DayTimeSpeedScale=1.000000 -DifficultyOffset=0.200000 -DinoCharacterFoodDrainMultiplier=1.000000 -DinoCharacterHealthRecoveryMultiplier=1.000000 -DinoCharacterStaminaDrainMultiplier=1.000000 -DinoCountMultiplier=1.000000 -DinoDamageMultiplier=1.000000 -DinoResistanceMultiplier=1.000000 -DisableStructureDecayPvE=False -DontAlwaysNotifyPlayerJoined=False -EnablePvPGamma=False -GlobalVoiceChat=False -HarvestAmountMultiplier=1.000000 -HarvestHealthMultiplier=1.000000 -KickIdlePlayersPeriod=2400.000000 -NewMaxStructuresInRange=6000.000000 -NightTimeSpeedScale=1.000000 -NoTributeDownloads=False -PlayerCharacterFoodDrainMultiplier=1.000000 -PlayerCharacterHealthRecoveryMultiplier=1.000000 -PlayerCharacterStaminaDrainMultiplier=1.000000 -PlayerCharacterWaterDrainMultiplier=1.000000 -PlayerDamageMultiplier=1.000000 -PlayerResistanceMultiplier=1.000000 -ProximityChat=False -ProximityVoiceChat=False -PvEStructureDecayDestructionPeriod=0.000000 -PvEStructureDecayPeriodMultiplier=1.000000 -RCONEnabled=True -RCONPort=32330 -ResourcesRespawnPeriodMultiplier=1.000000 -ServerAdminPassword=adminpassword -ServerCrosshair=False -ServerForceNoHUD=False -ServerHardcore=False -ServerPassword= -ServerPVE=False -ShowMapPlayerLocation=False -StructureDamageMultiplier=1.000000 -StructureResistanceMultiplier=1.000000 -TamedDinoDamageMultiplier=1.000000 -TamedDinoResistanceMultiplier=1.000000 -TamingSpeedMultiplier=1.000000 -XPMultiplier=1.000000 - -[/Script/ShooterGame.ShooterGameUserSettings] -MasterAudioVolume=1.000000 -MusicAudioVolume=1.000000 -SFXAudioVolume=1.000000 -VoiceAudioVolume=1.000000 -CameraShakeScale=1.000000 -bFirstPersonRiding=False -bThirdPersonPlayer=False -bShowStatusNotificationMessages=True -TrueSkyQuality=0.270000 -FOVMultiplier=1.000000 -GroundClutterDensity=1.000000 -bFilmGrain=False -bMotionBlur=True -bUseDFAO=True -bUseSSAO=True -bShowChatBox=True -bCameraViewBob=True -bInvertLookY=False -bFloatingNames=True -bChatBubbles=True -bHideServerInfo=False -bJoinNotifications=False -bCraftablesShowAllItems=True -LookLeftRightSensitivity=1.000000 -LookUpDownSensitivity=1.000000 -GraphicsQuality=2 -ActiveLingeringWorldTiles=10 -ClientNetQuality=3 -LastServerSearchType=0 -LastServerSearchHideFull=False -LastServerSearchProtected=False -HideItemTextOverlay=False -bDistanceFieldShadowing=True -LODScalar=1.000000 -HighQualityMaterials=True -HighQualitySurfaces=True -bTemperatureF=False -bDisableTorporEffect=False -bChatShowSteamName=False -bChatShowTribeName=True -EmoteKeyBind1=0 -EmoteKeyBind2=0 -bUseVSync=False -ResolutionSizeX=1280 -ResolutionSizeY=720 -LastUserConfirmedResolutionSizeX=1280 -LastUserConfirmedResolutionSizeY=720 -WindowPosX=-1 -WindowPosY=-1 -bUseDesktopResolutionForFullscreen=False -FullscreenMode=2 -LastConfirmedFullscreenMode=2 -Version=5 - -[ScalabilityGroups] -sg.ResolutionQuality=100 -sg.ViewDistanceQuality=3 -sg.AntiAliasingQuality=3 -sg.ShadowQuality=3 -sg.PostProcessQuality=3 -sg.TextureQuality=3 -sg.EffectsQuality=3 -sg.TrueSkyQuality=3 -sg.GroundClutterQuality=3 -sg.IBLQuality=1 -sg.HeightFieldShadowQuality=3 - -[SessionSettings] -SessionName=arkserver -QueryPort=27015 -Port=7777 -;MultiHome=INSERT_IPv4_HERE ;Example:192.168.0.9. If not just remove any line containing MultiHome. - -[/Script/Engine.GameSession] -MaxPlayers=127 - -[MultiHome] -;MultiHome=True ;If MultiHome=IPv4 is filled in. If not just remove any line containing MultiHome. - -[MessageOfTheDay] -Message=Welcome to ARK Server -Duration=5 diff --git a/Arma3/arma3server b/Arma3/arma3server index 82484e3e4..e4b4fb83b 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -1,83 +1,109 @@ #!/bin/bash -# ARMA 3 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: Scarsz +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: ARMA 3 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) +version="161030" -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" port="2302" -updateonstart="off" -fn_parms(){ -parms="-netlog -ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory" -} - -# ARMA 3 Modules -# add mods with relative paths: +## ARMA 3 Modules +# Add mods with relative paths: # mods/@cba_a3 -# to load the "Community Base Addons v3" module found in the +# To load the "Community Base Addons v3" module found in the # directory serverfiles/mods/@cba_a3. Load several mods as: # mods="mods/@ace\;mods/@acex\;mods/@cba_a3" mods="" -# Server-side Mods +## Server-side Mods servermods="" -# Path to BattlEye -# leave empty for default +## Path to BattlEye +# Leave empty for default bepath="" -#### Advanced Variables #### +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="-netlog -ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory" +} -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +#### LinuxGSM Settings #### -# Steam -appid="233780" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="233780" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta development" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="arma3-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="ARMA 3" engine="realvirtuality" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="arma3-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -86,6 +112,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./arma3server" @@ -96,24 +124,26 @@ networkcfgdefault="network.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" networkcfgfullpath="${servercfgdir}/${networkcfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories #gamelogdir="" # No server logs available scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -170,8 +200,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/Arma3/cfg/lgsm-default.network.cfg b/Arma3/cfg/lgsm-default.network.cfg deleted file mode 100644 index 5bba89f8d..000000000 --- a/Arma3/cfg/lgsm-default.network.cfg +++ /dev/null @@ -1,77 +0,0 @@ -// -// network.cfg - Defines network tuning parameters -// -// This file is to be passed to the -cfg parameter on the command line for the server -// See http://community.bistudio.com/wiki/basic.cfg -// The following settings are the suggested settings - -// BANDWIDTH SETTINGS - -// Bandwidth the server is guaranteed to have (in bps) -// General guideline is NumberOfPlayers * 256kb -// Default: 131072 -MinBandwidth=5120000; -// Bandwidth the server can never go above (in bps) -// For a single server, use full network speed; decrease when running multiple servers -MaxBandwidth=10240000; - -// PACKET SETTINGS - -// Maximum number of packets per frame. -// Increasing the value potentially decreases lag, but increases desync -// Default: 128 -MaxMsgSend=2048; -// Maximum payload of guaranteed packet (in b) -// Small messages are packed to larger packets -// Guaranteed packets are used for non-repetitive events, like shooting -// Lower value means more packets are sent, so less events will get combined -// Default: 512 -MaxSizeGuaranteed=512; -// Maximum payload of non-guaranteed packet (in b) -// Increasing this value may improve bandwidth requirement, but may also increase lag -// Largest factor in desync -// Guidance is half of MaxSizeGuaranteed -// Default: 256 -MaxSizeNonguaranteed=256; -// Maximal size of a packet sent over the network -// Only necessary if ISP forces lower packet size and there are connectivity issues -// Default: 1400 -// class sockets{maxPacketSize=1400}; - -// SMOOTHNESS SETTINGS - -// Minimal error required to send network updates for far units -// Smaller values will make for smoother movement at long ranges, but will increase network traffic -// Default: 0.003 -MinErrorToSend=0.01; -// Minimal error required to send network updates for near units -// Using larger value can reduce traffic sent for near units -// Also controls client to server traffic -// Default: 0.01 -MinErrorToSendNear=0.02; - -// GEOLOCATION SETTINGS - -// Server latitude -serverLatitude=52; -serverLatitudeAuto=52; - -// Server Longitude -serverLongitude=0; -serverLongitudeAuto=0; -// MISC -// View Distance (not sure if this actually works) -viewDistance=10000; - -// Maximum size (in b) for custom face or sound files -// Default: 0 -MaxCustomFileSize=0; -// Server language -language="English"; -steamLanguage="English"; -// Adapter -adapter=-1; -// Windowed mode -Windowed=0; - -3D_Performance=1.000000; \ No newline at end of file diff --git a/Arma3/cfg/lgsm-default.server.cfg b/Arma3/cfg/lgsm-default.server.cfg deleted file mode 100644 index 51b2c26e6..000000000 --- a/Arma3/cfg/lgsm-default.server.cfg +++ /dev/null @@ -1,133 +0,0 @@ -// ArmA 3 Server Config File -// -// More info about parameters: -// https://community.bistudio.com/wiki/server.cfg - - -// PORTS -// please specify the serverport as a parameter in arma3server executable -// it will automatically use the serverport including the next 3 for steam query & steam master. -// the fourth port ist not documented in https://community.bistudio.com/wiki/Arma_3_Dedicated_Server#Port_Forwarding -// Server Port -// default: 2302. -// serverport=2302; - -// Steam Master Port -// default: 2304. -// steamport=2304; - -// Steam Query Port -// default: 2303. -//steamqueryport=2303; - - -// GENERAL SETTINGS - -// Server Name -hostname = "arma3server"; - -// Server Password -//password = "arma3pass"; - -// Admin Password -passwordAdmin = "arma3adminpass"; - -// Server Slots -maxPlayers = 32; - -// Logfile -logFile = "arma3server.log"; - -// Minimum Required Client Build -//requiredBuild = 95691 - -// Message of the Day (MOTD) -motd[]={ - "Welcome to My Arma 3 Server", - "TS3 Server: teamspeak.somewhere.com", - "Web: www.example.com" -}; - -// MOTD Interval (Seconds) -motdInterval = 30; - - -// VOTING - -// Server Mission Start -// minimum number of clients before server starts mission -voteMissionPlayers = 1; - -// Accepted Vote Threshold -// 0.33 = 33% clients. -voteThreshold = 0.33; - -// INGAME SETTINGS - -// Disable Voice over Net (VoN) -// 0 = voice enabled. -// 1 = voice disabled. -disableVoN = 0; - -// VoN Codec Quality -// 0-10 = 8kHz (narrowband). -// 11-20 = 16kHz (wideband). -// 21-30 = 32kHz (ultrawideband). -vonCodecQuality = 3; - -//Persistent Battlefield -// 0 = disable. -// 1 = enable. -persistent = 1; - -// Time Stamp Format -// none, short, full -timeStampFormat = "short"; - - -// SERVER SECURITY/ANTI HACK - -// Verify Signitures for Client Addons -// 0 = off. -// 1 = weak protection (depricated). -// 2 = full protection. -verifySignatures = 2; - -// Secure Player ID -// 1 = Server warning message. -// 2 = Kick client. -requiredSecureId = 2; - -// Kick Duplicate Player IDs -kickDuplicate = 1; - -// BattlEye Anti-Cheat -// 0 = disable -// 1 = enable -BattlEye = 1; - -// Allowed File Extentions -allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; -allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; - -// SCRIPTING ISSUES -onUserConnected = ""; // -onUserDisconnected = ""; // -doubleIdDetected = ""; // - -// SIGNATURE VERIFICATION -// kick = kick (_this select 0) -// ban = ban (_this select 0) -onUnsignedData = "kick (_this select 0)"; -onHackedData = "kick (_this select 0)"; -onDifferentData = ""; - -// HEADLESS CLIENT SUPPORT -// specify ip-adresses of allowed headless clients -// if more than one: -// headlessClients[]={"127.0.0.1", "192.168.0.1"}; -// localClient[]={"127.0.0.1", "192.168.0.1"}; -headlessClients[]={"127.0.0.1"}; -localClient[]={"127.0.0.1"}; -battleyeLicense=1; diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 5aca78b93..43212f78a 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -1,36 +1,56 @@ #!/bin/bash -# Battlefield: 1942 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Battlefield: 1942 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +fn_parms(){ +parms="+hostServer 1 +dedicated 1" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -fn_parms(){ -parms="+hostServer 1 +dedicated 1" -} #### Advanced Variables #### @@ -41,12 +61,18 @@ githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Server Details -servicename="bf1942-server" +## LinuxGSM Server Details +# Do not edit gamename="Battlefield: 1942" engine="refractor" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bf1942-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -55,6 +81,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${systemdir}" executable="./start.sh" @@ -62,24 +90,26 @@ servercfg="serversettings.con" servercfgdefault="serversettings.con" servercfgdir="${systemdir}/mods/bf1942/settings" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -136,8 +166,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 5026662a4..62bea603e 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -1,77 +1,99 @@ #!/bin/bash -# Black Mesa: Deathmatch -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Black Mesa: Deathmatch | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dm_bounce" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game bms -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam +## SteamCMD Settings +# Server appid appid="346680" - # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta public-beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="bmdm-server" +## LinuxGSM Server Details +# Do not edit gamename="Black Mesa: Deathmatch" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bmdm-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +102,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/bms" executabledir="${filesdir}" executable="./srcds_run" @@ -87,24 +111,27 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directorie gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +188,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/BlackMesa/cfg/lgsm-default.cfg b/BlackMesa/cfg/lgsm-default.cfg deleted file mode 100644 index 9a047db15..000000000 --- a/BlackMesa/cfg/lgsm-default.cfg +++ /dev/null @@ -1,24 +0,0 @@ -// Black Mesa server.cfg file -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -mp_timelimit 900 -mp_warmup_time 30 -// sv_lan 0 -// mp_flashlight 1 -// mp_forcerespawn 0 -// mp_friendlyfire 0 -// mp_fraglimit 45 \ No newline at end of file diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 946e6c2d9..548adea2a 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -1,72 +1,91 @@ #!/bin/bash -# Blade Symphony -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Blade Symphony | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +########################## +######## Settings ######## +########################## -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +#### Server Settings #### -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="duel_winter" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-autoupdate -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" -# Steam -appid="228780" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="228780" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta nightly -betapassword winteriscoming" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="bs-server" +## LinuxGSM Server Details +# Do not edit gamename="Blade Symphony" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bs-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +94,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/berimbau" executabledir="${filesdir}" executable="./srcds_run.sh" @@ -82,24 +103,25 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +178,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/BladeSymphony/cfg/lgsm-default.cfg b/BladeSymphony/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/BladeSymphony/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 8348aafd2..86c2fc9c8 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -1,77 +1,102 @@ #!/bin/bash -# BrainBread 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: BrainBread 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login # Steam login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="bba_barracks" maxplayers="20" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game brainbread2 -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="475370" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="475370" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta_branch" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="bb2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="BrainBread 2" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bb2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +105,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/brainbread2" executabledir="${filesdir}" executable="./srcds_run" @@ -87,24 +114,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +190,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/BrainBread2/cfg/lgsm-default.cfg b/BrainBread2/cfg/lgsm-default.cfg deleted file mode 100644 index e016e66fb..000000000 --- a/BrainBread2/cfg/lgsm-default.cfg +++ /dev/null @@ -1,201 +0,0 @@ -// **************************************************************************** -// * -// BrainBread 2 - server.cfg * -// Version 080116 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// Cheats - Allows cheats on the server. Steam achievements and stats are disabled. -// Default: 0 -sv_cheats 0 - -// Friendly Fire - Allows team members to injure other members of their team. -// 0 = Friendly fire off. -// 1 = Friendly fire on. -// Default: 0 -mp_friendlyfire 0 - -// ........................ Game Specific Commands ........................ // -// info: any commands that only apply to this game. - - -// Mercy Value - Sets how many deaths until the players become human once again. -// Default: bb2_allow_mercy 0 -bb2_allow_mercy 3 - -// Late Joining - Allows players to spawn late. -// default bb2_allow_latejoin 0 -bb2_allow_latejoin 1 - -// Player Spawn Protection - Time in seconds after Spawn. -// default bb2_spawn_protection 1 -bb2_spawn_protection 15 - -// Profile System - Allow players to save and load there skills. -// 0 = Disabled, skills are not saved. -// 1 = Global, players can load there global skills. -// 2 = Server, players save there skills to the server. Steam achievements and stats are disabled. -// Default 1 -bb2_allow_profile_system 1 - -// Allow NPC to score - Allow friendly npcs to affect scoring. For example for quests. -// Default 1 -bb2_allow_npc_to_score 0 - -// Vote Settings - -// Voting: Passing Votes - Percentage of players that are required to pass a vote. -// Minimum: 0 -// Maximum: 100 -// Default 50 -bb2_votes_required 50 - -// Voting: Ban Time - Number of minutes a player be banned if a vaote ban passes. -// minimum: 0 (permanent) -// default 30 -bb2_ban_time 30 - - -// Arena Settings - -// Arena: Respawn Interval Time (Seconds). -// Minimum: 20 -// Default 40 -bb2_arena_respawn_time 25 - -// Arena: Number of Reinforcements. -// Minimum: 0 -// Maximum: 100 -// Default 14 -bb2_arena_reinforcement_count 14 - - -// Classic Mode Settings - -// Classic: Zombie No Team Change. -// 0 = Players can become zombies. -// 1 = Players cannot become zombies. -// Default 0 -bb2_classic_zombie_noteamchange 1 - - -// Elimination Settings - -// Elimination: Team Fraglimit - Number of frags for a team to win a game. -// Minimum: 10 -// Default 200 -bb2_elimination_fraglimit 200 - -// Elimination: Respawn Time (Seconds). -// Minimum: 1 -// Maximum: 30 -// Default 4 -bb2_elimination_respawn_time 5 - -// Elimination: Respawn Time Scale - Increase the respawn timer in seconds when a player joins. -// Example: respawn_timer + (joined_players x time_scale) = new_respawn_timer. 14 + (20 x 2) = 54. -// Minimum: 0 -// Maximum: 10 -// Default 1 -bb2_elimination_respawn_time_scale 1 - -// Elimination: Extermination Score - The score a team should be awarded for exterminating (kill everyone before respawn) the other team. -// Minimum: 0 -// Maximum: 50 -// Default 25 -bb2_elimination_score_from_extermination 25 - -// Elimination: Zombie Score - Number of point a zombie gets for a kill. -// Minimum: 2 -// Maximum: 10 -// Default 5 -bb2_elimination_score_zombies 5 - -// Elimination: Team Perk Duration - Number of seconds a team perk lasts. -// Minimum: 5 -// Maximum: 60 -// Default 30 -bb2_elimination_teamperk_duration 30 - -// Elimination: Team Perk Required Kills - Number of kills a team need to get in order to activate a team perk. -// Minimum: 25 -// Maximum: 500 -// Default 50 -bb2_elimination_teamperk_kills_required 50 - - -// Zombie Settings - -// Zombie Lifespan - Number of minutes a regular zombie will last before dying. -// Minimum: 1 -// Default 5 -bb2_zombie_lifespan 2 - -// Max Zombies - Maximum number of zombies allowed in the game. -// Minimum: 1 -// Maximum: 128 -// Default 50 -bb2_zombie_max 45 - - -// M1A1 Abrams Settings - -// M1A1 Abrams: Main Cannon Damage. -// Minimum: 100 -// Maximum: 10000 -// Default 3000 -bb2_m1a1_damage 200 - -// M1A1 Abrams: Machinegun Damage. -// Minimum: 25 -// Maximum: 1000 -// Default 30 -bb2_m1a1_damage_machinegun 25 - -// M1A1 Abrams: Friendly Fire (Including NPC's). -// Minimum: 0 -// Maximum: 1 -// Default 1 -bb2_m1a1_friendly 1 - -// M1A1 Abrams: Machinegun Rate of Fire. -// Minimum: 0.01 -// Maximum: 1 -// Default 0.08 -bb2_m1a1_machinegun_firerate 1 - -// M1A1 Abrams: Explosion Radius. -// Minimum: 200 -// Maximum: 10000 -// Default 500 -bb2_m1a1_radius 500 - -// M1A1 Abrams: Max Sight Range. -// Minimum: 500 -// Maximum: 10000 -// Default 2000 -bb2_m1a1_range_max 1000 - -// M1A1 Abrams: Min Sight Range. -// Minimum: 250 -// Maximum: 5000 -// Default 400 -bb2_m1a1_range_min 250 \ No newline at end of file diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 3f08a563f..dd622b8ae 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -1,72 +1,92 @@ #!/bin/bash -# Codename CURE -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Codename CURE | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="cbe_bunker" maxplayers="6" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game cure -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="383410" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="383410" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="cc-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Codename CURE" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cc-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +95,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/cure" executabledir="${filesdir}" executable="./srcds_run" @@ -82,24 +104,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +180,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/CodenameCURE/cfg/lgsm-default.cfg b/CodenameCURE/cfg/lgsm-default.cfg deleted file mode 100644 index 296c28ec8..000000000 --- a/CodenameCURE/cfg/lgsm-default.cfg +++ /dev/null @@ -1,105 +0,0 @@ -// **************************************************************************** -// * -// CodenameCURE - server.cfg * -// Version 100216 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// ............................... Map Cycles ............................... // -// info: There are several predefined mapcycles available that are listed below. -// You can also create your own custom mapcycle. - -// "mapcycle.txt" - all maps -mapcyclefile "mapcycle.txt" - -// ........................ Game Specific Commands ........................ // -// info: any commands that only apply to this game. - -// Difficulty -// 0 - Easy -// 1 - Average -// 2 - Skilled -// 3 - Insane -sv_difficulty "1" - -// Server tags - Tags show up on the in-game server browser. This helps -// users filter servers. -// vanilla - he server runs the default settings. -// custom - the server runs custom gameplay settings or mods. -// example: sv_tags "custom, fastdl" -sv_tags "" - -// ............................. Communication ............................. // - -// Enable communication over voice via microphone. -// Default: sv_voiceenable 1 -sv_voiceenable 1 - -// Players can hear all other players, no team restrictions. -// Default: sv_alltalk 0 -sv_alltalk 1 - -// ............................. Fast Download .............................. // -// info: Allows custom maps to be downloaded to the client. - -// Allows clients to download custom maps and textures etc. from the server at 20 kbps. -// Default: sv_allowdownload 1 -sv_allowdownload 1 - -// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. -// Example: -// server location: maps/custommap.bsp -// web server location: http://example.com/custom/maps/custommap.bsp -// sv_downloadurl "http://example.com/custom" -// Default: sv_downloadurl "" -sv_downloadurl "" - -// ................................ Ban List ............................... // - -// personal banlist based on user IDs. -exec banned_user.cfg - -// personal banlist based on user IPs. -exec banned_ip.cfg - -writeid -writeip - -// ............................. Server Logging ............................. // - -//Enables logging to file, console, and udp < on | off >. -log on - -// Log server bans in the server logs. -// Default: sv_logbans 1 -sv_logbans 1 - -// Echo log information to the console. -// Default: sv_logecho 1 -sv_logecho 1 - -// Log server information in the log file. -// Default: sv_logfile 1 -sv_logfile 1 - -// Log server information to only one file. -// Default: sv_log_onefile 0 -sv_log_onefile 0 diff --git a/CounterStrike/cfg/lgsm-default.cfg b/CounterStrike/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/CounterStrike/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/CounterStrike/csserver b/CounterStrike/csserver index ae04a04d6..bca3e12a3 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -1,67 +1,94 @@ #!/bin/bash -# Counter-Strike -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Counter-Strike | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="de_dust2" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game cstrike -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + #### Advanced Variables #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="cstrike" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="cstrike" - -# Server Details -servicename="cs-server" +## LinuxGSM Server Details +# Do not edit gamename="Counter-Strike 1.6" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cs-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/cstrike" executabledir="${filesdir}" executable="./hlds_run" @@ -77,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/CounterStrikeConditionZero/cfg/lgsm-default.cfg b/CounterStrikeConditionZero/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/CounterStrikeConditionZero/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index fb6971bbc..5eb278771 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -1,67 +1,94 @@ #!/bin/bash -# Counter-Strike: Condition Zero -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Counter-Strike: Condition Zero | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="de_dust2" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game czero -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="czero" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="czero" - -# Server Details -servicename="cscz-server" +## LinuxGSM Server Details +# Do not edit gamename="Counter-Strike: Condition Zero" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cscz-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/czero" executabledir="${filesdir}" executable="./hlds_run" @@ -77,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg b/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg deleted file mode 100644 index d518c8e0d..000000000 --- a/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg +++ /dev/null @@ -1,31 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// Server Hibernation -sv_hibernate_when_empty 1 -sv_hibernate_ms 5 - -// Server Query -// More info at: https://www.gametracker.com/games/csgo/forum.php?thread=91691 -host_name_store 1 -host_info_show 1 -host_players_show 2 - - -exec banned_user.cfg -exec banned_ip.cfg -writeid -writeip diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index b5e93a15e..8018883b9 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -1,43 +1,35 @@ #!/bin/bash -# Counter-Strike: Global Offensive -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Counter-Strike: Global Offensive | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters # https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Dedicated_Servers#Starting_the_Server -# [Game Modes] gametype gamemode -# Arms Race 1 0 -# Classic Casual 0 0 -# Classic Competitive 0 1 -# Demolition 1 1 -# Deathmatch 1 2 +# [Game Modes] gametype gamemode +# Arms Race 1 0 +# Classic Casual 0 0 +# Classic Competitive 0 1 +# Demolition 1 1 +# Deathmatch 1 2 gametype="0" gamemode="0" defaultmap="de_dust2" @@ -48,48 +40,78 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Required: Game Server Login Token +## Required: Game Server Login Token # GSLT is required for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# Optional: Workshop Parameters +## Optional: Workshop Parameters # https://developer.valvesoftware.com/wiki/CSGO_Workshop_For_Server_Operators # To get an authkey visit - http://steamcommunity.com/dev/apikey # authkey="" # ws_collection_id="" # ws_start_map="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game csgo -usercon -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers_override ${maxplayers} +mapgroup ${mapgroup} +game_mode ${gamemode} +game_type ${gametype} +host_workshop_collection ${ws_collection_id} +workshop_start_map ${ws_start_map} -authkey ${authkey}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="740" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="740" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta 1.35.4.4" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="csgo-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Counter-Strike: Global Offensive" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="csgo-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -98,6 +120,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/csgo" executabledir="${filesdir}" executable="./srcds_run" @@ -105,24 +129,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -179,8 +205,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/CounterStrikeSource/cfg/lgsm-default.cfg b/CounterStrikeSource/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/CounterStrikeSource/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 8faed4600..78345eb9c 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -1,36 +1,28 @@ #!/bin/bash -# Counter-Strike: Source -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Counter-Strike: Source | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="de_dust2" maxplayers="16" port="27015" @@ -39,39 +31,70 @@ clientport="27005" ip="0.0.0.0" updateonstart="off" -# Required: Game Server Login Token +## Required: Game Server Login Token # GSLT is required for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game cstrike -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="232330" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="232330" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta prerelease" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="css-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Counter-Strike: Source" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="css-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +103,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/cstrike" executabledir="${filesdir}" executable="./srcds_run" @@ -87,24 +112,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +188,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DayOfDefeat/cfg/lgsm-default.cfg b/DayOfDefeat/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/DayOfDefeat/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 092374517..e6db43522 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -1,36 +1,28 @@ #!/bin/bash -# Day of Defeat -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Day of Defeat | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dod_Anzio" maxplayers="16" port="27015" @@ -38,30 +30,66 @@ clientport="27005" ip="0.0.0.0" updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game dod -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="90" +appidmod="dod" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="dod" - -# Server Details -servicename="dod-server" +## LinuxGSM Server Details +# Do not edit gamename="Day of Defeat" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dod-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +98,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/dod" executabledir="${filesdir}" executable="./hlds_run" @@ -77,24 +107,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +183,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DayOfDefeatSource/cfg/lgsm-default.cfg b/DayOfDefeatSource/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/DayOfDefeatSource/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index f147c480d..8386384b6 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -1,72 +1,94 @@ #!/bin/bash -# Day of Defeat: Source -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Day of Defeat: Source | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dod_Anzio" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | ttps://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game dod -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="232290" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="232290" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta prerelease" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="dods-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Day of Defeat: Source" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dods-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/dod" executabledir="${filesdir}" executable="./srcds_run" @@ -82,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DayOfInfamy/cfg/lgsm-default.cfg b/DayOfInfamy/cfg/lgsm-default.cfg deleted file mode 100644 index 364cc1420..000000000 --- a/DayOfInfamy/cfg/lgsm-default.cfg +++ /dev/null @@ -1,16 +0,0 @@ -"hostname" "" -"rcon_password" "" -"mapcyclefile" "mapcycle_tactical_operation.txt" // "tactical operation" mapcycle - firefight, vip, search and destroy -"mp_friendlyfire" "1" // friendly fire -"mp_tkpunish" "1" // How to punish team killing ( 0 = none, 1 = warning, 2 = kill ) -"sv_hud_deathmessages" "0" // death messages -"sv_hud_scoreboard_show_kd" "1" // show k:d on scoreboard -"sv_hud_targetindicator" "1" // show friendly player names when looking at them -"mp_timer_pregame" "10" // timer for the pre-game (before the game starts, usually after map change or on mp_restartgame 1) -"mp_timer_preround" "15" // timer for the pre-round (before the round starts, usually after a previous round ends or on mp_restartround 1) -"mp_timer_postround" "15" // timer for the post-round (after the round starts) -"mp_timer_postgame" "21" // timer for the post-game (at the end of a game / map rotation) -"ins_bot_quota" "0" // if set higher than 0, the server will add this many bots to each team -"sv_deadvoice" "0" // enabling this will allow the dead and living to VOIP each other -"sv_deadchat" "0" // enabling this will allow the dead and living to chat text each other -"sv_deadchat_team" "1" // is deadchat limited to just your team? diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index c5baebe29..d39568a53 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -1,36 +1,28 @@ #!/bin/bash -# Day of Infamy -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Day of Infamy | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="bastogne" maxplayers="16" tickrate="64" @@ -38,37 +30,67 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" workshop="0" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game doi -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} +sv_workshop_enabled ${workshop}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="462310" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### +## SteamCMD Settings +# Server appid +appid="462310" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="doi-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Day of Infamy" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="doi-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -77,6 +99,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/doi" executabledir="${filesdir}" executable="./srcds_run" @@ -84,24 +108,27 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -158,8 +185,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh \ No newline at end of file diff --git a/DeathmatchClassic/cfg/lgsm-default.cfg b/DeathmatchClassic/cfg/lgsm-default.cfg deleted file mode 100644 index 585afb9e2..000000000 --- a/DeathmatchClassic/cfg/lgsm-default.cfg +++ /dev/null @@ -1,35 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 8c90086d0..d2be5c1be 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -1,67 +1,94 @@ #!/bin/bash -# Deathmatch Classic -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Deathmatch Classic | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dcdm5" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game dmc -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="dmc" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="dmc" - -# Server Details -servicename="dmc-server" +## LinuxGSM Server Details +# Do not edit gamename="Deathmatch Classic" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dmc-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/dmc" executabledir="${filesdir}" executable="./hlds_run" @@ -77,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DontStarveTogether/cfg/lgsm-default.ini b/DontStarveTogether/cfg/lgsm-default.ini deleted file mode 100644 index 351a1238c..000000000 --- a/DontStarveTogether/cfg/lgsm-default.ini +++ /dev/null @@ -1,39 +0,0 @@ -[network] -default_server_name = dstserver -default_server_description = Welcome to dstserver -server_port = 10999 -server_password = password - -# max_players = 1 .. 64 -max_players = 16 - -# pvp = true | false -pvp = false - -# game_mode = endless | survival | wilderness -game_mode = endless - -# enable_autosaver = true | false -enable_autosaver = true - -# tick_rate = [ 10 | 15 | 30 | 60 ] -tick_rate = 30 - -connection_timeout = 8000 -server_save_slot = 1 - -# enable_vote_kick = true | false -enable_vote_kick = true - -# pause_when_empty = true | false -pause_when_empty = true - -[account] -dedicated_lan_server = false - -[STEAM] -DISABLECLOUD = true - -[MISC] -CONSOLE_ENABLED = true -autocompiler_enabled = true diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 2b6805c38..5b9a5c112 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -1,70 +1,92 @@ #!/bin/bash -# Dont Starve Together -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Dont Starve Together | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://dont-starve-game.wikia.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers # Overworld: -conf_dir DST_Overworld # Cave: -conf_dir DST_Cave -#http://dont-starve-game.wikia.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers fn_parms(){ parms="-console -cluster MyDediServer -shard Master" # -console -cluster MyDediServer -shard Master } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="343050" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="343050" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta anewreignbeta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="dst-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Don't Starve Together" engine="dontstarve" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dst-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -73,6 +95,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}/bin" executable="./dontstarve_dedicated_server_nullrenderer" @@ -81,24 +105,26 @@ servercfgdefault="settings.ini" servercfgdir="${HOME}/.klei/DoNotStarveTogether" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -155,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/DoubleActionBoogaloo/cfg/lgsm-default.cfg b/DoubleActionBoogaloo/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/DoubleActionBoogaloo/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index ad9232079..c080c568a 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -1,72 +1,94 @@ #!/bin/bash -# Double Action: Boogaloo -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Double Action: Boogaloo | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="da_rooftops" maxplayers="10" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="317800" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="317800" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="dab-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Double Action: Boogaloo" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="dab-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/dab" executabledir="${filesdir}" executable="./dabds.sh" @@ -82,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 4251c1093..6c2fa539c 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -1,77 +1,78 @@ #!/bin/bash # Empires Mod -# 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="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="emp_district" maxplayers="62" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game empires -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="460040" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="460040" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="em-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Empires Mod" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="em-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +81,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/empires" executabledir="${filesdir}" executable="./srcds_run" @@ -87,24 +90,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +166,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/FistfulOfFrags/cfg/lgsm-default.cfg b/FistfulOfFrags/cfg/lgsm-default.cfg deleted file mode 100644 index 39783e9d8..000000000 --- a/FistfulOfFrags/cfg/lgsm-default.cfg +++ /dev/null @@ -1,126 +0,0 @@ -// **************************************************************************** -// * -// Fistful of Frags - server.cfg * -// Version 240716 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// ............................... Map Cycles ............................... // -// info: There are several predefined mapcycles available that are listed below. -// You can also create your own custom mapcycle. - -// "mapcycle.txt" - All Shootout/2 Team Shootout/4 Team Shootout maps -// "mapcycle_12.txt" - All 12 slot maps for Shootout/2 Team Shootout/4 Team Shootout -// "mapcycle_32.txt" - All 32 slot maps for Shootout/2 Team Shootout/4 Team Shootout -// "mapcycle_tp.txt" - All Teamplay maps -// "mapcycle_vs.txt" - All versus mode maps -// "mapcycle_gt.txt" - All Ghost Town maps -mapcyclefile "mapcycle.txt" - -// ....................... Time Limits/Round Settings ....................... // - -// Time spend on a single map (in minutes) before switching to a new one automatically. -// Default: mp_timelimit 0 -mp_timelimit 15 - -// ........................ Game Specific Commands ........................ // -// info: any commands that only apply to this game. - -// Game Modes -// 1 = Shootout/2 Team Shootout/4 Team Shootout/Ghost Town -// 2 = Teamplay -// 3 = Break Bad -// 4 = Elimination -// 5 = Versus -fof_sv_currentmode 1 - -// Teamplay -// 0 = Free-for-all -// 1 = Team Deathmatch or Teamplay mode -mp_teamplay 0 - -// Team numbers -// 2 = Vigilantes & Desperados -// 3 = Vigilantes, Desperados & Bandidos -// 4 = Vigilantes, Desperados, Bandidos & Rangers -fof_sv_maxteams 4 - -// Friendly fire - Allows team members to injure other members of their team. -// 0 = Friendly fire disabled -// 1 = Friendly fire enabled -mp_friendlyfire 0 - -// ............................. Communication ............................. // - -// Enable communication over voice via microphone. -// Default: sv_voiceenable 1 -sv_voiceenable 1 - -// Players can hear all other players, no team restrictions. -// Default: sv_alltalk 0 -sv_alltalk 1 - -// ............................. Fast Download .............................. // -// info: Allows custom maps to be downloaded to the client. - -// Allows clients to download custom maps and textures etc. from the server at 20 kbps. -// Default: sv_allowdownload 1 -sv_allowdownload 1 - -// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. -// Example: -// server location: maps/custommap.bsp -// web server location: http://example.com/custom/maps/custommap.bsp -// sv_downloadurl "http://example.com/custom" -// Default: sv_downloadurl "" -sv_downloadurl "" - -// ................................ Ban List ............................... // - -// personal banlist based on user IDs. -exec banned_user.cfg - -// personal banlist based on user IPs. -exec banned_ip.cfg - -writeid -writeip - -// ............................. Server Logging ............................. // - -//Enables logging to file, console, and udp < on | off >. -log on - -// Log server bans in the server logs. -// Default: sv_logbans 1 -sv_logbans 1 - -// Echo log information to the console. -// Default: sv_logecho 1 -sv_logecho 1 - -// Log server information in the log file. -// Default: sv_logfile 1 -sv_logfile 1 - -// Log server information to only one file. -// Default: sv_log_onefile 0 -sv_log_onefile 0 diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index d96a076c0..7dc5cc571 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -1,72 +1,94 @@ #!/bin/bash -# Fistful Of Frags -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Fistful Of Frags | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="fof_depot" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game fof -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="295230" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="295230" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="fof-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Fistful of Frags" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="fof-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/fof" executabledir="${filesdir}" executable="./srcds_run" @@ -82,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/GarrysMod/cfg/lgsm-default.cfg b/GarrysMod/cfg/lgsm-default.cfg deleted file mode 100644 index a1e2fd4d6..000000000 --- a/GarrysMod/cfg/lgsm-default.cfg +++ /dev/null @@ -1,86 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 -lua_log_sv 0 - -sv_rcon_banpenalty 0 -sv_rcon_maxfailures 20 -sv_rcon_minfailures 20 -sv_rcon_minfailuretime 20 - -// Network Settings -sv_downloadurl "" -sv_loadingurl "" -net_maxfilesize 64 -sv_maxrate 40000 -sv_minrate 40000 -sv_maxupdaterate 66 -sv_minupdaterate 10 -sv_maxcmdrate 60 -sv_mincmdrate 10 - -// Server Settings -sv_airaccelerate 100 -sv_gravity 600 -sv_allow_wait_command 0 -sv_allow_voice_from_file 0 -sv_turbophysics 0 -sv_max_usercmd_future_ticks 12 -gmod_physiterations 4 -sv_client_min_interp_ratio 1 -sv_client_max_interp_ratio 2 -think_limit 20 -sv_region 0 -sv_noclipspeed 5 -sv_noclipaccelerate 5 -sv_lan 0 -sv_alltalk 1 -sv_contact youremail@changeme.com -sv_cheats 0 -sv_allowcslua 0 -sv_pausable 0 -sv_filterban 1 -sv_forcepreload 1 -sv_footsteps 1 -sv_voiceenable 1 -sv_voicecodec vaudio_speex -sv_timeout 120 -sv_deltaprint 0 -sv_allowupload 0 -sv_allowdownload 0 - -// Sandbox Settings -sbox_noclip 0 -sbox_godmode 0 -sbox_weapons 0 -sbox_playershurtplayers 0 -sbox_maxprops 100 -sbox_maxragdolls 50 -sbox_maxnpcs 10 -sbox_maxballoons 10 -sbox_maxeffects 0 -sbox_maxdynamite 0 -sbox_maxlamps 5 -sbox_maxthrusters 20 -sbox_maxwheels 20 -sbox_maxhoverballs 20 -sbox_maxvehicles 1 -sbox_maxbuttons 20 -sbox_maxemitters 0 - -// Misc Config -exec banned_user.cfg -exec banned_ip.cfg -heartbeat diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 571600dc7..1bbba189c 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -1,46 +1,28 @@ #!/bin/bash -# Garry's Mod -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Garry's Mod | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" - -# Steam App Branch Select -# Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta prerelease " -branch="" - -# Workshop Variables -# http://wiki.garrysmod.com/page/Workshop_for_Dedicated_Servers -workshopauth="" -workshopcollectionid="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="gm_construct" gamemode="sandbox" maxplayers="16" @@ -49,45 +31,79 @@ sourcetvport="27020" clientport="27005" tickrate="66" ip="0.0.0.0" -updateonstart="off" -# Custom Start Parameters +## Workshop Parameters | http://wiki.garrysmod.com/page/Workshop_for_Dedicated_Servers +workshopauth="" +workshopcollectionid="" + +## Custom Start Parameters # Default +r_hunkalloclightmaps 0, fixes a start issue on maps with many lights customparms="+r_hunkalloclightmaps 0" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickrate} +host_workshop_collection ${workshopcollectionid} -authkey ${workshopauth} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} ${customparms}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off] +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="4020" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="4020" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta dev" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="gmod-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Garry's Mod" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="gmod-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -96,6 +112,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/garrysmod" addonsdir="${systemdir}/addons" executabledir="${filesdir}" @@ -104,24 +122,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -178,8 +198,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh diff --git a/GoldenEyeSource/cfg/lgsm-default.cfg b/GoldenEyeSource/cfg/lgsm-default.cfg deleted file mode 100644 index db1a2fdd6..000000000 --- a/GoldenEyeSource/cfg/lgsm-default.cfg +++ /dev/null @@ -1,126 +0,0 @@ -// *********** SERVER & PASSWORD INFO *************** -// Change it to 1 if you want a LAN only Server -// NOTE: You must do "changelevel [levelname]" AFTER starting the server for -// a lan-only server to begin broadcasting -sv_lan 0 - -// Change the number to the region you live in! -// 0=US East coast, 1=US West coast, 2= South America, 3=Europe, 4=Asia, 5=Australia, 6=Middle East, 7=Africa and 255=world -sv_region 0 - -// Give your server a name here -hostname "" - -// Rcon password is used to give your server orders by using console, so think of a good password -rcon_password "" - -// If you want your server to be private, fill in a password and delete the // in front of sv_password -// sv_password "mi6" - -// All talk allows clients to talk to each other via voice even if they are dead, -// spectating, or on the other team -sv_alltalk 1 - -// *********** GOLDENEYE: SOURCE SPECIFIC ********* - -// Radar will show on clients if enabled. Some gameplay scenarios -// force the radar to be visible -ge_allowradar 1 -ge_radar_showenemyteam 1 - -// Paintball mode (for fun!) -ge_paintball 0 - -// Teamplay can be overriden by the current gameplay, but -// this sets our "desired" teamplay state -ge_teamplay 0 - -// *********** GAME SETTINGS, YOU CAN CHANGE THESE THE WAY YOU LIKE IT *************** - -// Allow the use of a flashlight (discouraged for GE:S) -mp_flashlight 0 - -// Disable footstep sounds by uncommenting below -// mp_footsteps 0 - -// 1 enables falling damage, 0 disables it -mp_falldamage 1 - -// Map/match time, in minutes -mp_timelimit 15 - -// Round time, in seconds -ge_roundtime 300 - -// 1 = Forces the engine to use light physics for better server preformance -sv_turbophysics 0 - -// Server round, map, and delay times are defined in Valve.rc -// If you want these times to be reset every map change copy them -// to this file instead (Valve.rc is only executed once on server start) - - -// ********************************************************** -// *********** Load Specific Server Type Settings *********** -// ********************************************************** - -// Uncomment ONE server type to load. This takes care of all settings, map cycles, and gameplay types - -//-- Normal server, recommended settings -exec server_normal.cfg - -//-- N64 Classic Mode ( DM|YOLT|MWGG|LD|LTK, NO Jump ) -// **Use with -maxplayers 4 -//exec server_n64_classic.cfg - -//-- For server with > 24 players -//exec server_large.cfg - -//-- For servers with < 10 players -//exec server_small.cfg - -//-- Vanilla DM only w/ auto teamplay -// **Should be used in conjunction with one of the sizes above -//exec server_dm_only.cfg - -//-- Advanced game modes (LALD, LD, CTK) only -// **Should be used in conjunction with one of the sizes above -//exec server_adv_gamemode.cfg - -//-- Teamplay only! (No MWGG or LALD) -// **Should be used in conjunction with one of the sizes above -//exec server_teamplay.cfg - -//-- Tournament Use Only (Tournament DM) -// **Should be used ALONE only! -//exec server_tournament.cfg - -// Load network settings -exec server_netvalues - -// *********** server logging *********** -log on -sv_logbans 0 -sv_logecho 0 -sv_logfile 1 -sv_log_onefile 0 - - -// *********** DOWNLOAD *********** - -// Allow clients to download files -sv_allowdownload 1 - -// Allow clients to upload customizations files -sv_allowupload 1 - -// VOICE enabled, if you want VOICE disabled then change 1 to 0 -sv_voiceenable 1 - -// *********** CHEATS *********** - -// Enables the use of cheats. ex. "impulse 101" "noclip" -sv_cheats 0 - -// disable clients' ability to pause the server -sv_pausable 0 \ No newline at end of file diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 9b53028ae..7dd85e2f6 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -1,34 +1,26 @@ #!/bin/bash -# GoldenEye: Source -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: GoldenEye: Source | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### # Start Variables defaultmap="ge_archives" @@ -37,31 +29,66 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game gesource -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="310" # Source 2007 SDK +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="310" # Source 2007 SDK - -# Server Details -servicename="ges-server" +## LinuxGSM Server Details +# Do not edit gamename="GoldenEye: Source" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ges-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/gesource" executabledir="${filesdir}" executable="./srcds_run" @@ -77,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/HalfLife2Deathmatch/cfg/lgsm-default.cfg b/HalfLife2Deathmatch/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/HalfLife2Deathmatch/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 3e3ac1001..6b0489fe6 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -1,67 +1,94 @@ #!/bin/bash -# Half Life 2: Deathmatch -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Half Life 2: Deathmatch | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dm_lockdown" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game hl2mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="232370" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="232370" - -# Server Details -servicename="hl2dm-server" +## LinuxGSM Server Details +# Do not edit gamename="Half Life 2: Deathmatch" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="hl2dm-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/hl2mp" executabledir="${filesdir}" executable="./srcds_run" @@ -77,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/HalfLifeDeathmatch/cfg/lgsm-default.cfg b/HalfLifeDeathmatch/cfg/lgsm-default.cfg deleted file mode 100644 index 585afb9e2..000000000 --- a/HalfLifeDeathmatch/cfg/lgsm-default.cfg +++ /dev/null @@ -1,35 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index bbdcd7d2f..43e3bf106 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -1,66 +1,93 @@ #!/bin/bash -# Half Life: Deathmatch -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Half Life: Deathmatch | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="crossfire" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game valve -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="90" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" - -# Server Details -servicename="hldm-server" +## LinuxGSM Server Details +# Do not edit gamename="Half Life: Deathmatch" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="hldm-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -69,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/valve" executabledir="${filesdir}" executable="./hlds_run" @@ -76,24 +105,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -150,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/HalfLifeDeathmatchSource/cfg/lgsm-default.cfg b/HalfLifeDeathmatchSource/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/HalfLifeDeathmatchSource/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index b51756a58..07b2c24cf 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -1,67 +1,94 @@ #!/bin/bash -# Half-Life Deathmatch: Source -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Half-Life Deathmatch: Source | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="crossfire" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game hl1mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="255470" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="255470" - -# Server Details -servicename="hldms-server" +## LinuxGSM Server Details +# Do not edit gamename="Half-Life Deathmatch: Source" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="hldms-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/hl1mp" executabledir="${filesdir}" executable="./srcds_run" @@ -77,15 +106,14 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" @@ -93,8 +121,14 @@ 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 +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" + +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +185,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 90c88c882..d63e5a346 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -1,86 +1,106 @@ #!/bin/bash -# Hurtworld -# Server Management Script -# Author: Daniel Gibbs, -# Contributor: UltimateByte +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Hurtworld | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Server settings -ip="0.0.0.0" -updateonstart="off" +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters servername="Hurtworld LGSM Server" +ip="0.0.0.0" port="12871" queryport="12881" maxplayers="20" map="" #Optional -creativemode="0" #Free Build +creativemode="0" #Free Build: creativemode="1" logfile="gamelog.txt" -# Adding admins using STEAMID64 +## Adding admins using STEAMID64 # Example : addadmin 012345678901234567; addadmin 987654321098765432 admins="" -# Advanced +## Advanced Server Start Settings # Rollback server state (remove after start command) loadsave="" # Use unstable 64 bit server executable (O/1) x64mode="0" - -# http://hurtworld.wikia.com/wiki/Hosting_A_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://hurtworld.wikia.com/wiki/Hosting_A_Server fn_parms(){ parms="-batchmode -nographics -exec \"host ${port} ${map} ${loadsave};queryport ${queryport};maxplayers ${maxplayers};servername ${servername};creativemode ${creativemode};${admins}\" -logfile \"${logfile}\" " } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="405100" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="405100" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta devtest" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="hurtworld-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Hurtworld" engine="unity3d" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="hurtworld-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname=$(basename $(readlink -f "${BASH_SOURCE[0]}")) lockselfname=".${servicename}.lock" @@ -89,6 +109,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" if [ "${x64mode}" == "1" ]; then @@ -96,25 +118,27 @@ if [ "${x64mode}" == "1" ]; then else executable="./Hurtworld.x86" fi + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -171,8 +195,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Insurgency/insserver b/Insurgency/insserver index bf25a1e16..6a2748478 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -1,36 +1,28 @@ #!/bin/bash -# Insurgency -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Insurgency | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="ministry" maxplayers="16" tickrate="64" @@ -38,37 +30,67 @@ port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" workshop="0" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game insurgency -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} +sv_workshop_enabled ${workshop} -norestart" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="237410" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="237410" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ins-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Insurgency" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ins-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -77,6 +99,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/insurgency" executabledir="${filesdir}" executable="./srcds_run" @@ -84,15 +108,14 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" @@ -100,8 +123,14 @@ 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 +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" + +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -158,8 +187,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/JustCause2/cfg/config.lua b/JustCause2/cfg/config.lua deleted file mode 100644 index 1b17103c4..000000000 --- a/JustCause2/cfg/config.lua +++ /dev/null @@ -1,180 +0,0 @@ --- Welcome to the JC2-MP server configuration file! - ---[[ -SERVER OPTIONS - -Server-related options. ---]] -Server = -{ - -- The maximum number of players that can be on the server at any - -- given time. Make sure your connection and server can handle it! - -- Default value: 5000 - MaxPlayers = 5000, - -- Used to control what IP this server binds to. Unless you're a dedicated - -- game host, you don't need to worry about this. - -- Default value: "" - BindIP = "", - -- The port the server uses. - -- Default value: 7777 - BindPort = 7777, - -- The time before a player is timed out after temporarily losing - -- connection, or crashing without properly disconnecting. - -- Default value (in milliseconds): 10000 - Timeout = 10000, - - -- The name of the server, as seen by players and the server browser. - -- Default value: "JC2-MP Server" - Name = "JC2-MP Server", - -- The server description, as seen by players and the server browser. - -- Default value: "No description available" - Description = "No description available.", - -- The server password. - -- Default value: "" - Password = "", - - -- Controls whether the server announces its presence to the master server - -- and therefore to the server browser. - -- Default value: true - Announce = true, - - -- Controls how often synchronization packets are broadcast by the server - -- in milliseconds - -- Default value (in milliseconds): 180 - SyncUpdate = 180, - - -- CAUTION: Setting this variable to true unlocks a number of potentially - -- unsafe operations, which include: - -- * Native Lua packages (.dll, .so) - -- * Execution of Lua from arbitrary paths (Access to loadfile/dofile) - -- * Unbound io functions, allowing for access to the entire file-system - -- Default value: false - IKnowWhatImDoing = false -} - ---[[ -SYNCRATE OPTIONS - -Sync rate options. These values control how often synchronization -packets are sent by the clients, in milliseconds. This lets you -control how frequent the sync comes in, which may result in a -smoother or less laggy experience ---]] -SyncRates = -{ - -- Default value (in milliseconds): 75 - Vehicle = 75, - -- Default value (in milliseconds): 120 - OnFoot = 120, - -- Default value (in milliseconds): 1000 - Passenger = 1000, - -- Default value (in milliseconds): 250 - MountedGun = 250, - -- Default value (in milliseconds): 350 - StuntPosition = 350 -} - ---[[ -STREAMER OPTIONS - -Streamer-related options. The streamer is responsible for controlling the -visibility of objects (including players and vehicles) for other players. - -What this means is that if you want to extend the distance at which objects -remain visible for players, you need to change the StreamDistance. ---]] -Streamer = -{ - -- The default distance before objects are streamed out. - -- Default value (in metres): 500 - StreamDistance = 500 -} - ---[[ -VEHICLE OPTIONS - -Vehicle-related options. ---]] -Vehicle = -{ - -- The number of seconds required for a vehicle to respawn after - -- vehicle death. - -- Default value (in seconds): 10 - -- For instant respawn: 0 - -- For no respawning: nil - DeathRespawnTime = 10, - -- Controls whether to remove the vehicle if respawning is turned off, - -- and the vehicle dies. - -- Default value: false - DeathRemove = false, - - -- The number of seconds required for a vehicle to respawn after it is - -- left unoccupied. - -- Default value (in seconds): 45 - -- For instant respawn: 0 - -- For no respawning: nil - UnoccupiedRespawnTime = 45, - -- Controls whether to remove the vehicle if respawning is turned off, - -- and the vehicle is left unoccupied. - -- Default value: false - UnoccupiedRemove = false, -} - ---[[ -PLAYER OPTIONS - -Player-related options. ---]] -Player = -{ - -- The default spawn position for players. If you do not use a script - -- to handle spawns, such as the freeroam script, then this spawn position - -- will be used. - -- Default value: Vector3( -6550, 209, -3290 ) - SpawnPosition = Vector3( -6550, 209, -3290 ) -} - ---[[ -MODULE OPTIONS - -Lua module-related options. ---]] -Module = -{ - --[[ - To prevent a large number of errors building up, modules are automatically - unloaded after a certain number of errors in a given timespan. Each error - adds to a counter, which is decremented if there has not been an error - in a certain amount of time. - - This allows you to adjust the number of errors before the module is unloaded, - as well as the time since the last error for the counter to be decremented. - --]] - - -- The maximum number of errors before a module is unloaded. - -- Default value: 5 - MaxErrorCount = 5, - -- The time from the last error necessary for the error counter to be decremented. - -- Default value (in milliseconds): 500 - ErrorDecrementTime = 500 -} - ---[[ -WORLD OPTIONS - -Default settings for worlds. ---]] -World = -{ - -- The default time of day at world creation. - -- Default value (in hours): 0.0 - Time = 0.0, - - -- The increment added to the time of day each second. - -- Default value (in minutes): 1 - TimeStep = 1, - - -- The default weather severity at world creation. - -- Default value: 0 - WeatherSeverity = 0 -} diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 069d8d5cd..4c89b31c1 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -1,65 +1,88 @@ #!/bin/bash # Just Cause 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: GAMENAME | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### +# No settings available for Just Cause 2 + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="" +} -# Email +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -fn_parms(){ -parms="" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -#### Advanced Variables #### +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +#### LinuxGSM Advanced Settings #### -# Steam +## SteamCMD Settings +# Server appid appid="261140" - # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta publicbeta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="jc2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Just Cause 2" engine="avalanche" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="jc2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -68,6 +91,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./Jcmp-Server" @@ -75,24 +100,26 @@ servercfg="config.lua" servercfgdefault="config.lua" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories #gamelogdir="" # No server logs available scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -149,8 +176,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 43fb5a3bf..5f0e44154 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -1,39 +1,34 @@ #!/bin/bash -# Killing Floor -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Killing Floor | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="KF-BioticsLab.rom" ip="0.0.0.0" -updateonstart="off" fn_parms(){ parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" @@ -43,29 +38,59 @@ parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini #parms="server ${defaultmap}?Game=KFStoryGame.KFStoryGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="215360" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="215360" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="kf-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Killing Floor" engine="unreal2" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="kf-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -74,6 +99,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/System" executabledir="${systemdir}" executable="./ucc-bin" @@ -82,26 +109,28 @@ servercfgdefault="Default.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -158,8 +187,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Left4Dead/cfg/lgsm-default.cfg b/Left4Dead/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/Left4Dead/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 937d5eb3a..2a7a20be1 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -1,72 +1,93 @@ #!/bin/bash -# Left 4 Dead -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: Summit Singh Thakur +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Left 4 Dead | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="l4d_hospital01_apartment" maxplayers="8" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game left4dead -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="222840" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="222840" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="l4d-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Left 4 Dead" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="l4d-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/left4dead" executabledir="${filesdir}" executable="./srcds_run" @@ -82,24 +105,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Left4Dead2/cfg/lgsm-default.cfg b/Left4Dead2/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/Left4Dead2/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 3a26a1442..0a84f1d83 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -1,71 +1,93 @@ #!/bin/bash -# Left 4 Dead 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Left 4 Dead 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="c5m1_waterfront" maxplayers="8" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game left4dead2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="222860" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="222860" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="l4d2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Left 4 Dead 2" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="l4d2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -74,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/left4dead2" executabledir="${filesdir}" executable="./srcds_run" @@ -81,24 +105,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -155,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Minecraft/cfg/lgsm-default.ini b/Minecraft/cfg/lgsm-default.ini deleted file mode 100644 index 8e350192c..000000000 --- a/Minecraft/cfg/lgsm-default.ini +++ /dev/null @@ -1,40 +0,0 @@ -#Minecraft server properties (LGSM 210516) -#Sat Aug 20 17:30:15 CEST 2016 -allow-flight=false -allow-nether=true -announce-player-achievements=true -difficulty=1 -enable-command-block=false -enable-query=false -enable-rcon=false -force-gamemode=false -gamemode=0 -generate-structures=true -generator-settings= -hardcore=false -level-name=world -level-seed= -level-type=DEFAULT -max-build-height=256 -max-players=20 -max-tick-time=60000 -max-world-size=29999984 -motd=A Minecraft Server -network-compression-threshold=256 -online-mode=true -op-permission-level=4 -player-idle-timeout=0 -pvp=true -rcon.password= -rcon.port=25575 -resource-pack-sha1= -resource-pack= -server-ip= -server-port=25565 -snooper-enabled=true -spawn-animals=true -spawn-monsters=true -spawn-npcs=true -use-native-transport=true -view-distance=10 -white-list=false diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 859d1f9dd..ab69b9010 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -1,60 +1,88 @@ #!/bin/bash -# Minecraft -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Minecraft | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +javaram="1024" # -Xmx$1024M + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="nogui" +} +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -javaram="1024" # -Xmx$1024M -fn_parms(){ -parms="nogui" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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="mc-server" +## LinuxGSM Server Details +# Do not edit gamename="Minecraft" engine="lwjgl2" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="mc-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="java -Xmx${javaram}M -jar minecraft_server.jar" @@ -63,24 +91,26 @@ servercfgdefault="server.properties" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" servercfgdefault="${servercfgdir}/lgsm-default.ini" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -137,8 +167,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 7decb653e..ace1dac08 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -1,53 +1,78 @@ #!/bin/bash -# Mumble -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: UltimateByte +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Mumble | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### +# Use .ini config file for Mumble (Murmur) server. + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="-fg -ini ${servercfgfullpath}" +} -# Email +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -fn_parms(){ -parms="-fg -ini ${servercfgfullpath}" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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 +## LinuxGSM Server Details +# Do not edit gamename="Mumble" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers servicename="mumble-server" -# Directories +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -56,6 +81,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./murmur.x86" @@ -63,24 +90,26 @@ servercfg="${servicename}.ini" servercfgdefault="murmur.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -137,8 +166,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 923858313..460ce874c 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -1,41 +1,36 @@ #!/bin/bash -# NS2: Combat -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: NS2: Combat | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="co_core" port="27015" maxplayers="24" ip="0.0.0.0" -updateonstart="off" servername="NS2C Server" webadminuser="admin" webadminpass="admin" @@ -46,34 +41,65 @@ password="" # that the password variable above is not left empty. # -password \"${password}\" -# http://wiki.unknownworlds.com/ns2/Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://wiki.unknownworlds.com/ns2/Dedicated_Server fn_parms(){ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\"" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="313900" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="313900" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ns2c-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="NS2: Combat" engine="spark" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ns2c-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -82,30 +108,34 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}/ia32" executable="./ns2combatserver_linux32" servercfgdir="${rootdir}/server1" servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -162,8 +192,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 76ca3ae37..741f37862 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -1,41 +1,36 @@ #!/bin/bash -# Natural Selection 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Natural Selection 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="ns2_summit" port="27015" maxplayers="24" ip="0.0.0.0" -updateonstart="off" servername="NS2 Server" webadminuser="admin" webadminpass="admin" @@ -46,34 +41,65 @@ password="" # that the password variable above is not left empty. # -password \"${password}\" -# http://wiki.unknownworlds.com/ns2/Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | http://wiki.unknownworlds.com/ns2/Dedicated_Server fn_parms(){ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -logdir \"${gamelogdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\"" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="4940" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="4940" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ns2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Natural Selection 2" engine="spark" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ns2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -82,30 +108,34 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./server_linux32" servercfgdir="${rootdir}/server1" servercfgfullpath="${servercfgdir}" modstoragedir="${servercfgdir}/Workshop" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -162,8 +192,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/NoMoreRoomInHell/cfg/lgsm-default.cfg b/NoMoreRoomInHell/cfg/lgsm-default.cfg deleted file mode 100644 index ba48eab5b..000000000 --- a/NoMoreRoomInHell/cfg/lgsm-default.cfg +++ /dev/null @@ -1,121 +0,0 @@ -// **************************************************************************** -// * -// No More Room in Hell - server.cfg * -// Version 100116 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// ............................... Map Cycles ............................... // -// info: There are several predefined mapcycles available that are listed below. -// You can also create your own custom mapcycle. - -// "mapcycle.txt" - all maps -// "mapcycle_objective.txt" - objective maps only -// "mapcycle_survival.txt" - survival maps only -// -mapcyclefile "mapcycle.txt" - -// ....................... Time Limits/Round Settings ....................... // - -// Time spend on a single map (in minutes) before switching to a new one automatically. -// Default: mp_timelimit 1 -mp_timelimit 45 - -// Maximum number of rounds to spend on a map before moving to the next one. -// Default: mp_maxrounds 2 -mp_maxrounds 2 - -// ........................ Game Specific Commands ........................ // -// info: any commands that only apply to this game. - -// Difficulty -// info: http://git.io/v35eI -// "casual" - casual difficulty. -// "classic" - classic difficulty. -sv_difficulty "classic" - -// Server tags - Tags show up on the in-game server browser. This helps -// users filter servers. -// vanilla - he server runs the default settings. -// custom - the server runs custom gameplay settings or mods. -// example: sv_tags "custom, fastdl" -sv_tags "" - -// Friendly fire - Allows team members to injure other members of their team. -// Default: mp_friendlyfire 0 -mp_friendlyfire 0 - -// ............................. Communication ............................. // - -// Enable communication over voice via microphone. -// Default: sv_voiceenable 1 -sv_voiceenable 1 - -// Players can hear all other players, no team restrictions. -// Default: sv_alltalk 0 -sv_alltalk 1 - -// ............................. Fast Download .............................. // -// info: Allows custom maps to be downloaded to the client. - -// Allows clients to download custom maps and textures etc. from the server at 20 kbps. -// Default: sv_allowdownload 1 -sv_allowdownload 1 - -// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. -// Example: -// server location: maps/custommap.bsp -// web server location: http://example.com/custom/maps/custommap.bsp -// sv_downloadurl "http://example.com/custom" -// Default: sv_downloadurl "" -sv_downloadurl "" - -// ................................ Ban List ............................... // - -// personal banlist based on user IDs. -exec banned_user.cfg - -// personal banlist based on user IPs. -exec banned_ip.cfg - -writeid -writeip - -// ............................. Server Logging ............................. // - -//Enables logging to file, console, and udp < on | off >. -log on - -// Log server bans in the server logs. -// Default: sv_logbans 1 -sv_logbans 1 - -// Echo log information to the console. -// Default: sv_logecho 1 -sv_logecho 1 - -// Log server information in the log file. -// Default: sv_logfile 1 -sv_logfile 1 - -// Log server information to only one file. -// Default: sv_log_onefile 0 -sv_log_onefile 0 diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index abdba83e3..d5910ab44 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -1,77 +1,99 @@ #!/bin/bash -# No More Room in Hell -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: No More Room in Hell | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="nmo_broadway" maxplayers="8" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game nmrih -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="317670" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="317670" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="nmrih-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="No More Room in Hell" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="nmrih-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +102,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/nmrih" executabledir="${filesdir}" executable="./srcds_run" @@ -87,24 +111,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +187,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/OpposingForce/cfg/lgsm-default.cfg b/OpposingForce/cfg/lgsm-default.cfg deleted file mode 100644 index 585afb9e2..000000000 --- a/OpposingForce/cfg/lgsm-default.cfg +++ /dev/null @@ -1,35 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 913248223..1c059ed6b 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -1,67 +1,94 @@ #!/bin/bash -# Half-Life: Opposing Force -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Half-Life: Opposing Force | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="op4_bootcamp" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game gearbox -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="gearbox" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="gearbox" - -# Server Details -servicename="opfor-server" +## LinuxGSM Server Details +# Do not edit gamename="Half-Life: Opposing Force" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="opfor-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/gearbox" executabledir="${filesdir}" executable="./hlds_run" @@ -77,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/PiratesVikingandKnightsII/cfg/lgsm-default.cfg b/PiratesVikingandKnightsII/cfg/lgsm-default.cfg deleted file mode 100644 index 48ba5072a..000000000 --- a/PiratesVikingandKnightsII/cfg/lgsm-default.cfg +++ /dev/null @@ -1,119 +0,0 @@ -// **************************************************************************** -// * -// Pirates, Vikings, and Knights II * -// Version 100116 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// RCON - remote console password. -rcon_password "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// ............................... Map Cycles ............................... // -// You can create your own custom mapcycle. -mapcyclefile "mapcycle.txt" - -// ....................... Time Limits/Round Settings ....................... // - -// Time spend on a single map (in minutes) before switching to a new one automatically. -// Default: mp_timelimit 0 -mp_timelimit 20 - -// Wait for the end of round before changing map. -// Default: mp_timelimit_waitroundend 0 -mp_timelimit_waitroundend 1 - -// Round duration in minutes. -// Default: mp_roundtime 3 -mp_roundtime 3 - -// Round limit in number of rounds. -// Default: mp_roundlimit 0 - -// Win limit in number of rounds. -// Default: mp_winlimit 0 -mp_winlimit 0 - -// ........................ Game Specific Commands ........................ // - -// Server tags - Tags show up on the in-game server browser. This helps -// users filter servers. -// vanilla - he server runs the default settings. -// custom - the server runs custom gameplay settings or mods. -// example: sv_tags "custom, fastdl" -sv_tags "" - -// Friendly fire - Allows team members to injure other members of their team. -// Default: mp_friendlyfire 0 -mp_friendlyfire 0 - -// ............................. Communication ............................. // - -// Enable communication over voice via microphone. -// Default: sv_voiceenable 1 -sv_voiceenable 1 - -// Players can hear all other players, no team restrictions. -// Default: sv_alltalk 0 -sv_alltalk 0 - -// ............................. Fast Download .............................. // -// info: Allows custom maps to be downloaded to the client. - -// Allows clients to download custom maps and textures etc. from the server at 20 kbps. -// Default: sv_allowdownload 1 -sv_allowdownload 1 - -// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. -// Example: -// server location: maps/custommap.bsp -// web server location: http://example.com/custom/maps/custommap.bsp -// sv_downloadurl "http://example.com/custom" -// Default: sv_downloadurl "" -sv_downloadurl "" - -// ................................ Ban List ............................... // - -// personal banlist based on user IDs. -exec banned_user.cfg - -// personal banlist based on user IPs. -exec banned_ip.cfg - -writeid -writeip - -// ............................. Server Logging ............................. // - -//Enables logging to file, console, and udp < on | off >. -log on - -// Log server bans in the server logs. -// Default: sv_logbans 1 -sv_logbans 1 - -// Echo log information to the console. -// Default: sv_logecho 1 -sv_logecho 1 - -// Log server information in the log file. -// Default: sv_logfile 1 -sv_logfile 1 - -// Log server information to only one file. -// Default: sv_log_onefile 0 -sv_log_onefile 0 diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 870cd4e50..bc7767adb 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -1,72 +1,94 @@ #!/bin/bash -# No More Room in Hell -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: No More Room in Hell | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="bt_island" maxplayers="24" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game pvkii -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="17575" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="17575" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="pvkii-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Pirates, Vikings, and Knights II" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="pvkii-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -75,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/pvkii" executabledir="${filesdir}" executable="./srcds_run" @@ -82,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -156,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/ProjectZomboid/cfg/lgsm-default.ini b/ProjectZomboid/cfg/lgsm-default.ini deleted file mode 100644 index 5ca4fe917..000000000 --- a/ProjectZomboid/cfg/lgsm-default.ini +++ /dev/null @@ -1,66 +0,0 @@ -nightlengthmodifier=1.0 -PVP=true -PauseEmpty=false -GlobalChat=true -Open=true -ServerWelcomeMessage= Welcome to Project Zomboid MP ! to chat locally press "t", to global chat press "y" or add "/all" before chatting Press /help to have a list of server commands -LogLocalChat=false -AutoCreateUserInWhiteList=false -DisplayUserName=true -SpawnPoint=0,0,0 -SafetySystem=true -ShowSafety=true -SafetyToggleTimer=100 -SafetyCooldownTimer=120 -SpawnItems= -DefaultPort=16261 -Mods= -Map=Muldraugh, KY -DoLuaChecksum=true -Public=false -PublicName=pzserver -PublicDescription= -MaxPlayers=64 -PingFrequency=10 -PingLimit=400 -HoursForLootRespawn=0 -MaxItemsForLootRespawn=4 -ConstructionPreventsLootRespawn=true -DropOffWhiteListAfterDeath=false -NoFireSpread=false -NoFire=false -AnnounceDeath=false -MinutesPerPage=1.0 -HoursForCorpseRemoval=0.0 -SaveWorldEveryMinutes=0 -PlayerSafehouse=false -AdminSafehouse=false -SafehouseAllowTrepass=true -SafehouseAllowFire=true -SafehouseAllowLoot=true -SafehouseAllowRespawn=false -SafehouseDaySurvivedToClaim=0 -SafeHouseRemovalTime=144 -AllowDestructionBySledgehammer=true -KickFastPlayers=false -RCONPort=27015 -RCONPassword= -Password= -MaxAccountsPerUser=0 -SleepAllowed=false -SleepNeeded=false -SteamPort1=8766 -SteamPort2=8767 -WorkshopItems= -SteamScoreboard=true -SteamVAC=true -UPnP=true -UPnPLeaseTime=86400 -UPnPZeroLeaseTimeFallback=true -UPnPForce=true -CoopServerLaunchTimeout=20 -CoopMasterPingTimeout=60 -server_browser_announced_ip= -UseTCPForMapDownloads=false -PlayerRespawnWithSelf=false -PlayerRespawnWithOther=false \ No newline at end of file diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index d0af5d50f..0586a2c13 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -1,68 +1,88 @@ #!/bin/bash -# Project Zomboid -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributions: Bryce Van Dyk (SingingTree) +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Project Zomboid | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +adminpassword="CHANGE_ME" +ip="0.0.0.0" + +fn_parms(){ +parms="-ip ${ip} -adminpassword \"${adminpassword}\"" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables -adminpassword="CHANGE_ME" -ip="0.0.0.0" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -fn_parms(){ -parms="-ip ${ip} -adminpassword \"${adminpassword}\"" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -#### Advanced Variables #### +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +#### LinuxGSM Advanced Settings #### -# Steam +## SteamCMD Settings +# Server appid appid="380870" - # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta iwillbackupmysave -betapassword iaccepttheconsequences" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="pz-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Project Zomboid" engine="projectzomboid" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="pz-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -71,6 +91,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./start-server.sh" @@ -78,24 +100,26 @@ servercfg="server.ini" servercfgdefault="server.cfg" servercfgdir="${HOME}/Zomboid/Server" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${HOME}/Zomboid/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -152,8 +176,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Quake2/cfg/lgsm-default.cfg b/Quake2/cfg/lgsm-default.cfg deleted file mode 100644 index d59e3505f..000000000 --- a/Quake2/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -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 index 5a7faaab7..94de84180 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -1,54 +1,78 @@ #!/bin/bash -# Quake 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Quake 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="210516" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="q2dm1" ip="0.0.0.0" port="27910" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ parms="+set dedicated 1 +set ip ${ip} +set port ${port} +exec ${servercfg} +set deathmatch 1 +map ${defaultmap}" } +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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" +## LinuxGSM Server Details +# Do not edit gamename="Quake 2" engine="idtech2" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="quake2server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -57,6 +81,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/baseq2" executabledir="${filesdir}" executable="./quake2" @@ -64,24 +90,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -138,8 +166,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Quake3/cfg/lgsm-default.cfg b/Quake3/cfg/lgsm-default.cfg deleted file mode 100644 index caccea760..000000000 --- a/Quake3/cfg/lgsm-default.cfg +++ /dev/null @@ -1,36 +0,0 @@ -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 index 6c2e4d844..c302f10c0 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -1,54 +1,79 @@ #!/bin/bash -# Quake 3: Arena -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Quake 3: Arena | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="210516" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="q3dm17" ip="0.0.0.0" port="27960" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters 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 #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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" +## LinuxGSM Server Details +# Do not edit gamename="Quake 3: Arena" engine="idtech3" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="quake3-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -57,6 +82,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/baseq3" executabledir="${filesdir}" executable="./q3ded" @@ -64,24 +91,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -138,8 +167,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh \ No newline at end of file diff --git a/QuakeLive/cfg/lgsm-default.cfg b/QuakeLive/cfg/lgsm-default.cfg deleted file mode 100644 index 6dd87b484..000000000 --- a/QuakeLive/cfg/lgsm-default.cfg +++ /dev/null @@ -1,103 +0,0 @@ -// Servers have the ability to run multiple gametypes, known as "factories." You should not add gameplay related -// cvars in the server config: they may get overwritten by the factory. For creating your own sets of gameplay rules, -// create a file ending in ".factories" inside baseq3/scripts, and refer to "Creating custom gametypes" in the -// server_readme.txt file. - -// Be aware that factories can override any cvar, including ones specified in this config file. - -set sv_hostname "" -set sv_tags "" // Comma delimited field of server tags to show in server browser. - // Will automatically include gametype and some gameplay modifications. - // ex. "crouch slide, classic, space" -set sv_mapPoolFile "mappool.txt" // Map pool that the server will use. See default mapcycle.txt for format. - // Built in map pools: mappool.txt, mappool_ca.txt, mappool_ctf.txt, mappool_duel.txt, - // mappool_ffa.txt, mappool_race.txt, mappool_tdm.txt -set g_accessFile "access.txt" // Used to determine which 64-bit Steam IDs have admin access, or are banned. - -set sv_maxClients "16" // How many players can connect at once. -set g_password "" // Set a server-wide password, and stop all users from connecting without it. -set sv_privateClients "0" // Reserve slots that can be used with sv_privatePassword. -set sv_privatePassword "" // Password to use in conjunction with sv_privateClients. -set com_hunkMegs "60" // May need to be increased for additional players. - -// Flood protection will increment everytime the user sends a client command, ex. dropweapon, changing name, color -// model, or chatting. Set g_floodprot_maxcount to 0 to disable completely, but this will allow uncontrolled spam. -set sv_floodprotect "10" // Kick the player when they reach x commands, decreases by 1 every second -set g_floodprot_maxcount "10" // Kick the player when their userinfo flood counter reaches this level. -set g_floodprot_decay "1000" // Decrease the userinfo flood counter by 1 this often, in milliseconds. - -// Add the below values for which callvotes should be DISABLED: -// map 1 -// map_restart 2 -// nextmap 4 -// gametype 8 (ex: "/callvote map campgrounds" will be allowed, but "/callvote map campgrounds ca" will fail) -// kick 16 -// timelimit 32 -// fraglimit 64 -// shuffle 128 -// teamsize 256 -// cointoss/random 512 -// loadouts 1024 -// end-game voting 2048 -// ammo (global) 4096 -// timers (item) 8192 -set g_voteFlags "0" -set g_allowVote "1" // Turn off all votes -set g_voteDelay "0" // Delay allowing votes for x milliseconds after map load. -set g_voteLimit "0" // Limit users to x votes per map. -set g_allowVoteMidGame "0" // Don't allow callvotes once the map has started -set g_allowSpecVote "0" // Allow spectators to call votes - -set sv_warmupReadyPercentage "0.51" // Ratio of players that must be ready before the match starts. -set g_warmupDelay "15" // Wait x seconds before allowing match to start to allow all players to connect. -set g_warmupReadyDelay "0" // Force the game to start after x seconds after someone readies up. -set g_warmupReadyDelayAction "1" // Set to 1 to force players to spectator after g_warmupReady Delay, 2 to force ready up. - -set g_inactivity "0" // Kick players who are inactive for x amount of seconds. -set g_alltalk "0" // 0: Limit voice comms to teams during match - // 1: Allow all players to talk to each other always - // 2: 1+ send back your own voice to yourself for testing - -// System settings - -// Uncomment and set below to use (server.cfg will override commandline!) -// set net_strict "1" // Quit out immediately if we can't bind the IP and port. -// set net_ip "" // Which IP to bind to. Blank will bind to all interfaces. -// set net_port "55555" // Which UDP port to bind to. Blank will start at 27960 and keep going up, if net_strict is 0. -set sv_serverType "2" // 0 = Offline, 1 = LAN, 2 = Internet -set sv_master "1" // Whether the server should respond to queries. Disable this to stop server from appearing in browser. - // (This will affect the LAN browser!) - -set sv_fps "40" // Change how many frames the server runs per second. WARNING: Has not been tested extensively, and - // will have a direct impact on CPU and network usage! - -// Exit the server if idle (not running a map) for a specified time. This will allow it to automatically restart -// in the case of a game error or other problem. A value of "1" is recommended, but not default, when you are running -// the server detached from the terminal. - -set sv_idleExit "120" - -// Enable remote console, provided through ZeroMQ. See zmq_rcon.py for simple client. -// ZMQ rcon binds on a separate port from the game server, and uses TCP. It must differ from the stats port if used. -// Rcon can not be enabled or disabled after launch, nor can the IP and port change. Password can, however. - -// Uncomment and set below to use (server.cfg will override commandline!) -set zmq_rcon_enable "1" -// set zmq_rcon_ip "" -// set zmq_rcon_port "28960" -set zmq_rcon_password "" - -// Enable ZeroMQ stats socket. This will not be much use without a client listening. -// See zmq_stats_verbose.py for example connect and stats printing. -// If not specified, the stats socket will default to the same IP and port as the game server, but on TCP. - -// Uncomment and set below to use (server.cfg will override commandline!) -// set zmq_stats_enable "1" -// set zmq_stats_ip "" -// set zmq_stats_port "" -// set zmq_stats_password "" - -// The server will run serverstartup when it finishes initializing, so start a random map from the map pool. -set serverstartup "startRandomMap" -// Or, start a map of your choosing (factory is required) -// set serverstartup "map campgrounds ffa" \ No newline at end of file diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index ed96114f4..33cc3696c 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -1,36 +1,28 @@ #!/bin/bash -# Quake Live -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Quake Live | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters arch="x64" # x64 or x86 port="27960" rconport="28960" @@ -39,37 +31,67 @@ statsport="${port}" statspassword="CHANGE_ME" mappool='mappool.txt' ip="0.0.0.0" -updateonstart="off" -# Install/Config Guide : https://steamcommunity.com/sharedfiles/filedetails/?id=542966946 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | Install/Config Guide : https://steamcommunity.com/sharedfiles/filedetails/?id=542966946 # Console Commands : http://www.regurge.at/ql/ fn_parms(){ parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${port} +set fs_homepath ${filesdir}/${port} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rconpassword} +set zmq_stats_enable 1 +set zmq_stats_password ${statspassword} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="349090" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="349090" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ql-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Quake Live" engine="idtech3_ql" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ql-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -78,6 +100,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable=$([ "${arch}" == 'x64' ] && echo "./run_server_x64.sh" || echo "./run_server_x86.sh") @@ -85,25 +109,27 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${filesdir}/baseq3" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -160,8 +186,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 6d4082ec6..025bf348c 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -1,62 +1,94 @@ #!/bin/bash -# Red Orchestra: Ostfront 41-45 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Red Orchestra: Ostfront 41-45 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="RO-Arad.rom" ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="223250" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## 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="ro-server" +## LinuxGSM Server Details +# Do not edit gamename="Red Orchestra: Ostfront 41-45" engine="unreal2" -# Steam -appid="223250" +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ro-server" -# Directories +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -64,6 +96,8 @@ lgsmdir="${rootdir}/lgsm" functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" + +## Server Specific Directories filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/system" executabledir="${systemdir}" @@ -73,26 +107,32 @@ servercfgdefault="default.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" + scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" -##### Script ##### -# Do not edit +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" + +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -149,8 +189,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Ricochet/cfg/lgsm-default.cfg b/Ricochet/cfg/lgsm-default.cfg deleted file mode 100644 index 585afb9e2..000000000 --- a/Ricochet/cfg/lgsm-default.cfg +++ /dev/null @@ -1,35 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index c80e188e9..8eb18e0c1 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -1,34 +1,26 @@ #!/bin/bash -# Ricochet -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Ricochet | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### # Start Variables defaultmap="rc_arena" @@ -36,32 +28,91 @@ maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game ricochet -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login +steamuser="username" +steampass="password" + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +ip="0.0.0.0" + +## Optional: Game Server Login Token +# GSLT can be used for running a public server. +# More info: https://gameservermanagers.com/gslt +gslt="" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +fn_parms(){ +parms="" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -# Github Branch Select +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="90" +appidmod="ricochet" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="ricochet" - -# Server Details -servicename="ricochet-server" +## LinuxGSM Server Details +# Do not edit gamename="Ricochet" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ricochet-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +121,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/ricochet" executabledir="${filesdir}" executable="./hlds_run" @@ -77,24 +130,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +206,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Rust/cfg/lgsm-default.cfg b/Rust/cfg/lgsm-default.cfg deleted file mode 100644 index 225215e01..000000000 --- a/Rust/cfg/lgsm-default.cfg +++ /dev/null @@ -1,48 +0,0 @@ -# This file does not include all possible commands but it includes the most common/useful ones. -# If you want to see all possible comands, in the server console type: find . - -# Before some variables are a # symbol. This means it is disabled. Remove the # symbol to enable them. - -######################################### -# Important Settings You Need To Change # -######################################### - -# A text description of your server. For a new line add: \n -server.description "LGSM Server\nRust support : UltimateByte" - -# A URL to the image which shows up on the server details screen (dimensions are 512x256). -server.headerimage "https://github.com/GameServerManagers/LinuxGSM/raw/master/images/logo/lgsm-full-light.png" - -# The URL to your servers website. -server.url "https://gameservermanagers.com/" - -#################################### -# Optional Settings You Can Change # -#################################### - -# A value of false makes text chat location based only (players need to be close to each other). -# Values: true, false -#server.globalchat true - -# Controls if player vs player damage is allowed. If your server is primarily for building, you'll want to set this to false -# Values: true, false -#server.pve false - -# Controls fall damage. -# Values: true, false -#falldamage.enabled true - -# Helicopter bullet accuracy. Higher numbers are less accurate. -#heli.bulletAccuracy 2 - -################################################ -# Settings That Will Lag Server Is Set Too Low # -################################################ - -# Changes how often resources respawn. -#spawn.min_rate 0.1 -#spawn.max_rate 1 - -# Changes how close resources spawn to each other. -#spawn.min_density 0.1 -#spawn.max_density 1 diff --git a/Rust/rustserver b/Rust/rustserver index 9196c1ec0..0ac0ab260 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -1,53 +1,43 @@ #!/bin/bash -# Rust -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: UltimateByte (LGSM adaptation), Wulf (Information) +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Rust | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login (not required) -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Server settings +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters # More settings available after install in serverfiles/server/rust-server/server.cfg servername="Rust" ip="0.0.0.0" -updateonstart="off" port="28015" rconport="28016" rconpassword="CHANGE_ME" maxplayers="50" - -# Advanced +# Advanced Start Settings seed="" # default random; range : 1 to 2147483647 ; used to change or reproduce a procedural map worldsize="3000" # default 3000; range : 1000 to 6000 ; map size in meters saveinterval="300" # Auto-save in seconds tickrate="30" # default 30; range : 15 to 100 -# https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" } @@ -61,29 +51,59 @@ else conditionalseed="" fi -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="258550" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="258550" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta prerelease" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="rust-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Rust" engine="unity3d" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="rust-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname=$(basename $(readlink -f "${BASH_SOURCE[0]}")) lockselfname=".${servicename}.lock" @@ -92,6 +112,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./RustDedicated" @@ -100,26 +122,28 @@ servercfg="server.cfg" servercfgdefault="server.cfg" servercfgdir="${serveridentitydir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogfile="\"gamelog-$(date '+%Y-%m-%d-%H-%M-%S').log\"" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogfile="\"gamelog-$(date '+%Y-%m-%d-%H-%M-%S').log\"" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -176,8 +200,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/SeriousSam3BFE/cfg/lgsm-default.ini b/SeriousSam3BFE/cfg/lgsm-default.ini deleted file mode 100644 index 1bf1a3c90..000000000 --- a/SeriousSam3BFE/cfg/lgsm-default.ini +++ /dev/null @@ -1,49 +0,0 @@ --- Generated with Server GUI 3 --- http://mrag.nl/sgui3/ - --- General -rcts_strWelcomeNote = "Server RCON MOTD"; -rcts_strAdminPassword = "rconpassword"; -prj_strLogFile = ""; -net_strLocalHost = ""; -gam_idGameMode = "Cooperative"; -ser_iMaxClientBPS = 11000; -prj_iDedicatedFPS = 100; -gam_ctMaxPlayers = 12; -prj_uwPort = 27015; -prj_strMultiplayerSessionName = "Serious Sam 3 Server"; - --- Options -gam_bAllowJoinInProgress = 1; -gam_bAllowPowerupItems = 1; -gam_bAllowArmorItems = 1; -gam_bWeaponsStay = 1; -gam_bAmmoStays = 1; -gam_bArmorStays = 1; -gam_bHealthStays = 1; -gam_bAllowHealthItems = 1; -gam_bInfiniteAmmo = 0; - --- Levels -local mapList = ""; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\01_CairoSquare\01_CairoSquare.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\02_CairoMuseum\02_CairoMuseum.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\03_IbnTulun\03_IbnTulun.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\04_IbnTulun\04_Medina.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\05_CairoTown\05_CairoTown.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\06_Pyramids\06_Pyramids.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\07_Karnak1\07_Karnak1.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\08_Karnak2\08_Karnak2.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\09_Luxor\09_Luxor.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\10_LostNubianTemples\10_LostNubianTemples.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\11_Ramesseum\11_Ramesseum.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\01_BFE\12_HatshepsutTemple\12_HatshepsutTemple.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\02_DLC\01_Philae\01_Philae.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\02_DLC\02_AbuSimbel\02_AbuSimbel.wld;"; -mapList = mapList .. "Content\SeriousSam3\Levels\02_DLC\03_TempleOfSethirkopshef\03_TempleOfSethirkopshef.wld;"; -prj_StrMapList = mapList; - --- Scripts - --- Custom - diff --git a/SeriousSam3BFE/help/DedicatedServer_Readme.txt b/SeriousSam3BFE/help/DedicatedServer_Readme.txt deleted file mode 100644 index cf5aa8094..000000000 --- a/SeriousSam3BFE/help/DedicatedServer_Readme.txt +++ /dev/null @@ -1,139 +0,0 @@ -Serious Engine Dedicated Server -=============================== - -1. Starting and stopping the dedicated server ---------------------------------------------- - -You can launch the dedicated server either from the Steam client's Tools tab, or by directly starting its executable file. In either case, a Steam client needs to be running on that machine, though the user logged in doesn't have to actually own the game. - -In absence of any further configuration, the server will start the first level of the Coop campaign, with all default settings, on the default port. - -The server will pause immediately after the first level is loaded, and wait for players to join, to conserve the game state. When the first player joins, the game will unpause. - -When all players disconnect, the server will restart its session from the first level again. - -To stop the server, press Ctrl+C in its console window and wait until it shuts down. - -2. Server ports ---------------- - -The server will be immediately visible on your LAN, but to make sure it is also visible on the internet, you need to open the port 27016. Note that this is only game enumeration port, as the game traffic port cannot be specified at the moment, thus this will not alleviate the need for NAT punching. I.e. it is not recommended to run a dedicated server behind a NAT/router that doesn't properly support NAT punching, or otherwise all connections to it will have very high pings. We expect the game traffic port to be specifiable in one of the future updates, but it is not currently possible. - -If you want to allow remote administration (see the section about remote administration below), you need to also forward port 27015 (TCP-only). - -You can change the port that the server is running on using the command-line option "+port". The server will use the given port for Rcon administration and the given port +1 for game enumeration (see above). So, e.g. if you use "+port 25600", game enumeration will work on port 25601 and rcon on port 25600. When game traffic specification becomes possible, it will be on port 25600 in the example, but this is currently not supported. - -You can change the network interface that the server will bind to using the command-line option "+ip". This is used both fr Rcon administration and for game enumeration. When game traffic specification becomes possible, it will also use this, but this is currently not supported (game traffic chooses an interface automatically). - -3. Command line ---------------- - -Command line options can be used to modify any cvar using this format: - -SamHD_DedicatedServer.exe +cvarname1 cvarvalue1 +cvarname2 cvarvalue2 ... +cvarnameN cvarvalueN - -Quotes are needed around values that contain spaces. Cvar names in the command line can be either short names (e.g. +level "Path/Level") where available, or long names (+gam_strLevel "Path/Level"). - -4. Configuration scripts ------------------------- - -When starting, in addition to the command line option, the server will read configuration parameters from the following sources (in this order): - * Content/SeriousSamHD/Config/dedicatedserver.cfg, - * eventual custom script specified via the +exec command line option, - * eventual per-session script specified via the +gameoptions command line option. -The first two are read once on boot, the last one is read on each session start and restart. (When all player's disconnect, the server will load this again before starting the first level.) - -All of those scripts are fully-featured console scripts, i.e. they use the Lua programming language, so you can put ifs, functions and other programming constructs in them. For a full syntax description and other documentation regarding the Lua programming language, please visit: http://www.lua.org . - -Dedicated server does not load or save any .ini files. - -5. Most relevant command line options and cvars ------------------------------------------------ -(long name shown in parentheses) - * +gamemode (gam_idGameMode) - Valid values are: - (cooperative group) - Cooperative (this is the default) - CooperativeCoinOp - TeamSurvival - (versus group) - BeastHunt - CaptureTheFlag - Deathmatch - InstantKill - LastManStanding - LastTeamStanding - MyBurden - TeamBeastHunt - TeamDeathmatch - Note that players can vote to change the game mode, but they cannot switch a server from Cooperative modes to Versus modes or vice versa. - IMPORTANT: Changing this option resets all other gam_ options to defaults for that game mode. If you are also customizing other gam_ options from a script or via Rcon, make sure you change gam_idGameMode first, and then change all others! - * +level (gam_strLevel) - Specifies which level to start. Path is relative to the folder the game was installed in. If not specified, the server will start the default first level. - * +maxplayers (gam_ctMaxPlayers) - Max number of players in the session. Cannot be higher than 16. - * +port (prj_uwPort) - Specifies the port number to start the server on. Default is 27015. - * +ip (net_strLocalHost) - Specifies the network interface to start the server on. Default is empty, meaning automatic. - * +fps (prj_iDedicatedFPS) - Specifies the framerate the dedicated server will run in (min 10). - * +exec (prj_strExecCfg) - Specifies the configuration file to execute when the server first starts. - * +gameoptions (prj_strOptionsScript) - Specifies the game options script to execute. It is executed whenever the server (re)starts the first level. - * +sessionname (prj_strMultiplayerSessionName) - Session name that will be displayed in the server browser. If you don't set this, current username from Windows will be shown. - * +rconpass (rcts_strAdminPassword) - Password used to connect to the server via Rcon (see "Remote administration" above). - * +logfile (prj_strLogFile) - Save the DedicatedServer.log into a different file. Useful if you want to run multiple servers from the same installation. - -NOTE: You can use any of the standard game options like gam_bInifiniteAmmo that customize the gameplay, but note that gam_bCustomizeDifficulty is required for them to take effect! - -6. Some other useful console variables and functions ----------------------------------------------------- - - * gamListPlayers() - print the list of all players to the console in format: 'playerindex: playername' - * gamKickByName() - kick the client with the given player name out of the game - * gamKickByIndex() - kick the client with the given index out of the game - * gamBanByName() - ban the client with the given player name out of the game - * gamBanByIndex() - ban the client with the given index out of the game - - * gamRestartServer() - restarts the dedicated server (disconnects all players) so any changes to game settings or other server options can take effect - * gamRestartGame() - restart game with new session params without disconnecting players - * samRestartMap() - restart the current map (without disconnecting all players) so any changes to game difficulty and similar options can take effect - * gamStop() - stops the current game - * gamStart() - start game with new session params without disconnecting players - * samVotePass() - force the current vote to pass - * samVoteFail() - force the current vote to fail - - * ser_iMaxClientBPS - limit the bandwidth used by each individual client on the server. This caps the cli_iMaxBPS on the server side. - * prj_strMapList - Semicolon separated list of maps used for multiplayer map rotation. - * prj_strMapListFile - Path to the file containing a list of maps used for multiplayer map rotation. - * prj_strDefaultMapDir - Default map folder to use for the map list (specified either by prj_strMapList or prj_strMapListFile). To make it posible to specify map names in a short form, if a '#' prefix is used in a map path, the '#' char will be replaced by the value of this cvar. - -All other cvars and cfuncs can be used, most notable are cvars with "gam_" prefix which can be used to setup difficulty options and similar. To get the list of those or more details about them, use the game client's console with its autocompletion and help. - -7. Remote administration (RCon) -------------------------------- - -Remote administration of Serious Sam HD dedicated servers is implemented via the Telnet protocol. Use any telnet client (e.g. telnet.exe) to connect to the IP and port the server is running on (default is 27015). - -Example: -C:\> telnet my.server.ip 27015 - -(*) NOTE: On Vista and Win7, the telnet command is not installed by default. You need to enable it using the "Turn Windows features on or off" section of the Control Panel. - -You need to specify the rcon password (using the +rconpass "password" command-line option) when starting the server, otherwise it won't allow you to connect to it via Rcon. Also make sure the appropriate port is open, as explained above. - -After entering the correct rcon password, the telnet client will behave similarly to the in-game console (except that SHIFT+TAB combo doesn't work). Additionally you can type a question mark ("?"), followed by a cvar or cfunc to get the help about it. - -8. Example configuration script -------------------------------- - -Here's an example config script. Put that in a text file named "server.cfg" in the root of the game installation (parent of Bin/), and specify "+exec server.cfg" in the command line (without quotes). - ---------8<----- cut here ----------- - -rconpass = "SuperSecretPassword"; -- MAKE SURE YOU CHANGE THIS!!!! -sessionname = "My Server Name" -- set this to the name of your server - -gam_ctMaxPlayers = 8 -gamemode="Deathmatch" -gam_bAutoCycleMaps = 1 - -local prj_strMapList = { - "#SunPalace.wld", -- put a list of map file names for rotation here -} - ---------8<------cut here ---------- \ No newline at end of file diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 21dfeb281..f0b1181e9 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -1,67 +1,89 @@ #!/bin/bash -# Serious Sam 3: BFE -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Sam 3: BFE | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +ip="0.0.0.0" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master/SeriousSam3BFE/help/DedicatedServer_Readme.txt +fn_parms(){ +parms="+ip ${ip} +logfile ${gamelog} +exec ${servercfgfullpath}" +} + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables -ip="0.0.0.0" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -# https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/master/SeriousSam3BFE/help/DedicatedServer_Readme.txt -fn_parms(){ -parms="+ip ${ip} +logfile ${gamelog} +exec ${servercfgfullpath}" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -#### Advanced Variables #### +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +#### LinuxGSM Advanced Settings #### -# Steam +## SteamCMD Settings +# Server appid appid="41080" - # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta publicbeta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="ss3-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Serious Sam 3: BFE" engine="seriousengine35" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ss3-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +92,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/Bin" executable="./runSam3_DedicatedServer.sh" executabledir="${systemdir}" @@ -77,26 +101,28 @@ servercfg="${servicename}.ini" servercfgdefault="server.ini" servercfgdir="${filesdir}/Content/SeriousSam3/Config" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -153,8 +179,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Starbound/cfg/lgsm-default.config b/Starbound/cfg/lgsm-default.config deleted file mode 100644 index 275898d2b..000000000 --- a/Starbound/cfg/lgsm-default.config +++ /dev/null @@ -1,49 +0,0 @@ -{ - "allowAdminCommands" : true, - "allowAdminCommandsFromAnyone" : false, - "allowAnonymousConnections" : true, - "allowAssetsMismatch" : true, - "anonymousConnectionsAreAdmin" : false, - "bannedIPs" : [], - "bannedUuids" : [], - "checkAssetsDigest" : false, - "clearPlayerFiles" : false, - "clearUniverseFiles" : false, - "clientIPJoinable" : false, - "clientP2PJoinable" : true, - "configurationVersion" : { - "basic" : 1, - "server" : 4 - }, - "crafting" : { - "filterHaveMaterials" : false - }, - "gameServerBind" : "::", - "gameServerPort" : 21025, - "interactiveHighlight" : true, - "inventory" : { - "pickupToActionBar" : true - }, - "maxPlayers" : 8, - "maxTeamSize" : 4, - "playerBackupFileCount" : 3, - "queryServerBind" : "::", - "queryServerPort" : 21025, - "rconServerBind" : "::", - "rconServerPassword" : "", - "rconServerPort" : 21026, - "rconServerTimeout" : 1000, - "runQueryServer" : false, - "runRconServer" : false, - "safeScripts" : true, - "scriptInstructionLimit" : 10000000, - "scriptInstructionMeasureInterval" : 10000, - "scriptProfilingEnabled" : false, - "scriptRecursionLimit" : 100, - "serverFidelity" : "automatic", - "serverName" : "", - "serverOverrideAssetsDigest" : null, - "serverUsers" : { - }, - "tutorialMessages" : true -} \ No newline at end of file diff --git a/Starbound/sbserver b/Starbound/sbserver index 5b572669d..dd5e70e4e 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -1,66 +1,93 @@ #!/bin/bash -# Starbound -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Starbound | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="211820" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="211820" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="sb-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Starbound" engine="starbound" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="sb-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -69,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}/linux" executable="./starbound_server" @@ -76,24 +105,26 @@ servercfg="starbound_server.config" servercfgdefault="starbound_server.config" servercfgdir="${filesdir}/storage" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${filesdir}/storage" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -150,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/SvenCoop/cfg/lgsm-default.cfg b/SvenCoop/cfg/lgsm-default.cfg deleted file mode 100644 index 6bc0822bc..000000000 --- a/SvenCoop/cfg/lgsm-default.cfg +++ /dev/null @@ -1,36 +0,0 @@ -//---------------------------------------------- -// Sven Co-op v5.0 Default Server CFG -//---------------------------------------------- - -//---------------------------------------------- -// See server_example.cfg for more available -// commands and settings. -//---------------------------------------------- - -hostname "" -log "on" - -rcon_password "" -//sv_password "" - -sys_ticrate 100 -deathmatch 1 -decalfrequency 30 -hpk_maxsize 2 -pausable 0 - -sv_aim 0 -sv_allowdownload 1 -sv_allowupload 1 -sv_region 255 -sv_send_resources 1 -sv_voicecodec "voice_speex" -sv_voiceenable 1 -sv_voicequality 5 - -mp_telefrag 1 -mp_timelimit 99 -mp_weaponstay 1 - -exec banned.cfg -exec listip.cfg \ No newline at end of file diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 59b9c750e..82101fefa 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -1,71 +1,93 @@ #!/bin/bash -# Sven Co-op -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Sven Co-op | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="svencoop1" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game svencoop -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Steam -appid="276060" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="276060" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta release_candidate_public" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="svencoop-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Sven Co-op" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="svencoop-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -74,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/svencoop" executabledir="${filesdir}" executable="./svends_run" @@ -81,24 +105,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -155,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/TeamFortress2/cfg/lgsm-default.cfg b/TeamFortress2/cfg/lgsm-default.cfg deleted file mode 100644 index c2b66dcbc..000000000 --- a/TeamFortress2/cfg/lgsm-default.cfg +++ /dev/null @@ -1,15 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 \ No newline at end of file diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index b16193239..5adfaa87b 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -1,77 +1,97 @@ #!/bin/bash -# Team Fortress 2 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Team Fortress 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="cp_badlands" maxplayers="16" port="27015" sourcetvport="27020" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# Optional: Game Server Login Token +## Optional: Game Server Login Token # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game tf -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" -# Steam -appid="232250" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="232250" # Steam App Branch Select # Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta beta" +# Example: "-beta latest_experimental" branch="" -# Server Details -servicename="tf2-server" +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Team Fortress 2" engine="source" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="tf2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -80,6 +100,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/tf" executabledir="${filesdir}" executable="./srcds_run" @@ -87,24 +109,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/cfg" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -161,8 +185,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/TeamFortressClassic/cfg/lgsm-default.cfg b/TeamFortressClassic/cfg/lgsm-default.cfg deleted file mode 100644 index ceb8f9374..000000000 --- a/TeamFortressClassic/cfg/lgsm-default.cfg +++ /dev/null @@ -1,38 +0,0 @@ -// Server Name -hostname "" - -// RCON Password -rcon_password "" - -// Server Password -sv_password "" - -// Server Logging -log on -sv_logbans 1 -sv_logecho 1 -sv_logfile 1 -sv_log_onefile 0 - -// disable autoaim -sv_aim 0 - -// disable clients' ability to pause the server -pausable 0 - -// maximum client movement speed -sv_maxspeed 320 - -// 20 minute timelimit -mp_timelimit 20 - -// cheats off -sv_cheats 0 - -// load ban files -exec listip.cfg -exec banned.cfg - - - - diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index cf754b700..8b6994e4a 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -1,67 +1,94 @@ #!/bin/bash -# Team Fortress Classic -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Team Fortress Classic | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### - -# Notification Alerts -# (on|off) - -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +version="161030" -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +########################## +######## Settings ######## +########################## -# Steam login -steamuser="anonymous" -steampass="" +#### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="dustbowl" maxplayers="16" port="27015" clientport="27005" ip="0.0.0.0" -updateonstart="off" -# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game tfc -strictportbind _ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="90" +appidmod="tfc" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="90" -appidmod="tfc" - -# Server Details -servicename="tfc-server" +## LinuxGSM Server Details +# Do not edit gamename="Team Fortress Classic" engine="goldsource" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="tfc-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -70,6 +97,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/tfc" executabledir="${filesdir}" executable="./hlds_run" @@ -77,24 +106,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -151,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/TeamSpeak3/cfg/lgsm-default.ini b/TeamSpeak3/cfg/lgsm-default.ini deleted file mode 100644 index 0fca88d4d..000000000 --- a/TeamSpeak3/cfg/lgsm-default.ini +++ /dev/null @@ -1,20 +0,0 @@ -machine_id= -default_voice_port=9987 -voice_ip=0.0.0.0, :: -licensepath= -filetransfer_port=30033 -filetransfer_ip=0.0.0.0, :: -query_port=10011 -query_ip=0.0.0.0, :: -query_ip_whitelist=query_ip_whitelist.txt -query_ip_blacklist=query_ip_blacklist.txt -dbplugin=ts3db_sqlite3 -dbpluginparameter= -dbsqlpath=sql/ -dbsqlcreatepath=create_sqlite/ -dbconnections=10 -logpath=logs -logquerycommands=0 -dbclientkeepdays=30 -logappend=0 -query_skipbruteforcecheck=0 diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 527b7324e..f0bfbb8ea 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -1,40 +1,73 @@ #!/bin/bash -# TeamSpeak 3 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: TeamSpeak 3 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +# Edit serverfiles/ts3-server.ini after installation + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -# Server Details +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="TeamSpeak 3" servername="TeamSpeak 3 Server" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers servicename="ts3-server" -# Directories +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -43,6 +76,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./ts3server_startscript.sh" @@ -50,27 +85,23 @@ servercfg="${servicename}.ini" servercfgdefault="ts3server.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${filesdir}/logs" scriptlogdir="${rootdir}/log/script" - scriptlog="${scriptlogdir}/${servicename}-script.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" - -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -127,8 +158,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Teeworlds/cfg/ctf.cfg b/Teeworlds/cfg/ctf.cfg deleted file mode 100644 index a92b1a494..000000000 --- a/Teeworlds/cfg/ctf.cfg +++ /dev/null @@ -1,7 +0,0 @@ -sv_gametype ctf -sv_powerups 1 -sv_scorelimit 500 -sv_spectator_slots 0 -sv_timelimit 0 -sv_tournament_mode 0 -sv_map_reload 1 \ No newline at end of file diff --git a/Teeworlds/cfg/dm.cfg b/Teeworlds/cfg/dm.cfg deleted file mode 100644 index 426386d1d..000000000 --- a/Teeworlds/cfg/dm.cfg +++ /dev/null @@ -1,7 +0,0 @@ -sv_gametype dm -sv_powerups 1 -sv_scorelimit 20 -sv_spectator_slots 0 -sv_timelimit 0 -sv_tournament_mode 0 -sv_map_reload 1 \ No newline at end of file diff --git a/Teeworlds/cfg/duel.cfg b/Teeworlds/cfg/duel.cfg deleted file mode 100644 index b70e632a2..000000000 --- a/Teeworlds/cfg/duel.cfg +++ /dev/null @@ -1,7 +0,0 @@ -sv_gametype tdm -sv_powerups 0 -sv_scorelimit 10 -sv_spectator_slots 10 -sv_timelimit 5 -sv_tournament_mode 1 -sv_map_reload 1 \ No newline at end of file diff --git a/Teeworlds/cfg/lgsm-default.cfg b/Teeworlds/cfg/lgsm-default.cfg deleted file mode 100644 index efefdf149..000000000 --- a/Teeworlds/cfg/lgsm-default.cfg +++ /dev/null @@ -1,26 +0,0 @@ -sv_name "" -sv_rcon_password "" -password "" -sv_max_clients 12 -sv_port 8303 -sv_register 1 -sv_spamprotection 0 -sv_vote_map 1 -sv_warmup 10 -logfile "" -addvote restart 10 -addvote exec dm.cfg -addvote exec ctf.cfg -addvote exec duel.cfg -addvote exec tdm.cfg -addvote "change_map ctf1" -addvote "change_map ctf2" -addvote "change_map ctf3" -addvote "change_map ctf4" -addvote "change_map ctf5" -addvote "change_map dm1" -addvote "change_map dm2" -addvote "change_map dm6" -addvote "change_map dm7" -addvote "change_map dm8" -addvote "change_map dm9" \ No newline at end of file diff --git a/Teeworlds/cfg/tdm.cfg b/Teeworlds/cfg/tdm.cfg deleted file mode 100644 index 4cde3cd33..000000000 --- a/Teeworlds/cfg/tdm.cfg +++ /dev/null @@ -1,14 +0,0 @@ -// **************************************************************************** -// * -// Teeworlds - tdm.cfg * -// Version 281015 * -// * -// **************************************************************************** - -sv_gametype tdm -sv_powerups 1 -sv_scorelimit 50 -sv_spectator_slots 0 -sv_timelimit 0 -sv_tournament_mode 0 -sv_map_reload 1 \ No newline at end of file diff --git a/Teeworlds/twserver b/Teeworlds/twserver index a16daae1e..bae6a0427 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -1,62 +1,93 @@ #!/bin/bash -# Teeworlds -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: Bryce Van Dyk (SingingTree) +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Teeworlds | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="-f ${servercfgfullpath}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="380840" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="380840" - -# Server Details -servicename="tw-server" +## LinuxGSM Server Details +# Do not edit gamename="Teeworlds" engine="teeworlds" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="tw-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -65,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./teeworlds_srv" @@ -72,25 +105,27 @@ servercfg="${servicename}.cfg" # Teeworlds can also auto load any config if an a servercfgdefault="server.cfg" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -147,8 +182,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/Terraria/cfg/lgsm-default.txt b/Terraria/cfg/lgsm-default.txt deleted file mode 100644 index 9a907e61d..000000000 --- a/Terraria/cfg/lgsm-default.txt +++ /dev/null @@ -1,68 +0,0 @@ -#this is an example config file for TerrariaServer.exe -#use the command 'TerrariaServer.exe -config serverconfig.txt' to use this configuration or run start-server.bat -#please report crashes by emailing crashlog.txt to support@terraria.org - -#the following is a list of available command line parameters: - -#-config Specifies the configuration file to use. -#-port Specifies the port to listen on. -#-players / -maxplayers Sets the max number of players -#-pass / -password Sets the server password -#-world Load a world and automatically start the server. -#-autocreate <#> Creates a world if none is found in the path specified by -world. World size is specified by: 1(small), 2(medium), and 3(large). -#-banlist Specifies the location of the banlist. Defaults to "banlist.txt" in the working directory. -#-worldname Sets the name of the world when using -autocreate. -#-secure Adds addition cheat protection to the server. -#-noupnp Disables automatic port forwarding -#-steam Enables Steam Support -#-lobby or Allows friends to join the server or sets it to private if Steam is enabled -#-ip Sets the IP address for the server to listen on -#-forcepriority Sets the process priority for this task. If this is used the "priority" setting below will be ignored. - -#remove the # in front of commands to enable them. - -#Load a world and automatically start the server. -world=~/.local/share/Terraria/Worlds/world1.wld - -#Creates a new world if none is found. World size is specified by: 1(small), 2(medium), and 3(large). -autocreate=1 - -#Sets the name of the world when using autocreate -worldname=Terraria - -#Sets the difficulty of the world when using autocreate 0(normal), 1(expert) -difficulty=0 - -#Sets the max number of players allowed on a server. Value must be between 1 and 255 -maxplayers=8 - -#Set the port number -port=7777 - -#Set the server password -password=p@55w0rd - -#Set the message of the day -motd=Please don’t cut the purple trees! - -#Sets the folder where world files will be stored -worldpath=~/.local/share/Terraria/Worlds/ - -#The location of the banlist. Defaults to "banlist.txt" in the working directory. -banlist=banlist.txt - -#Adds addition cheat protection. -secure=1 - -#Sets the server language 1:English, 2:German, 3:Italian, 4:French, 5:Spanish -lang=1 - -#Automatically forward ports with uPNP -#upnp=1 - -#Reduces enemy skipping but increases bandwidth usage. The lower the number the less skipping will happen, but more data is sent. 0 is off. -#npcstream=60 - -#Default system priority 0:Realtime, 1:High, 2:AboveNormal, 3:Normal, 4:BelowNormal, 5:Idle -#priority=1 - diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 7811110cf..a7b2b6c8b 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -1,62 +1,93 @@ #!/bin/bash -# Terraria -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: Bryce Van Dyk (SingingTree) +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Terraria | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Steam login +## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" steampass="password" -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -updateonstart="off" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="-config ${servercfgfullpath}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## SteamCMD Settings +# Server appid +appid="105600" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="master" -# Steam -appid="105600" - -# Server Details -servicename="terraria-server" +## LinuxGSM Server Details +# Do not edit gamename="Terraria" engine="terraria" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="terraria-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -65,6 +96,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./TerrariaServer" @@ -72,24 +105,26 @@ servercfg="${servicename}.txt" servercfgdefault="serverconfig.txt" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories #gamelogdir="" # Terraria Doesn't Have a Server Log scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -146,8 +181,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/UnrealTournament/cfg/Engine.ini b/UnrealTournament/cfg/Engine.ini deleted file mode 100644 index 177eaafdb..000000000 --- a/UnrealTournament/cfg/Engine.ini +++ /dev/null @@ -1,3 +0,0 @@ -[/Script/UnrealTournament.UTGameEngine] -bFirstRun=False -RconPassword="" diff --git a/UnrealTournament/cfg/Game.ini b/UnrealTournament/cfg/Game.ini deleted file mode 100644 index 15a1c9159..000000000 --- a/UnrealTournament/cfg/Game.ini +++ /dev/null @@ -1,4 +0,0 @@ -[/Script/UnrealTournament.UTGameState] -ServerName="" -ServerMOTD=WELCOME\n\nHeadshots for everyone. -ServerDescription=This is my server, have fun diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index ff84f9979..d011b93ad 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -1,59 +1,84 @@ #!/bin/bash # Unreal Tournament -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Unreal Tournament | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +# For CTF: defaultmap="CTF-Face" gametype="CTF" defaultmap="DM-Underland" gametype="DM" -#defaultmap="CTF-Face" -#gametype="CTF" timelimit="10" ip="0.0.0.0" port="7777" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="UnrealTournament ${defaultmap}?Game=${gametype}?TimeLimit=${timelimit} -port=${port}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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="ut-server" +## LinuxGSM Server Details +# Do not edit gamename="Unreal Tournament" engine="unreal4" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ut-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -62,30 +87,34 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/LinuxServer" executabledir="${systemdir}/Engine/Binaries/Linux" executable="./UE4Server-Linux-Shipping" servercfg="Game.ini" servercfgdir="${systemdir}/UnrealTournament/Saved/Config/LinuxServer" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -142,8 +171,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 3c6b76cc6..c8c1f55ee 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -1,45 +1,79 @@ #!/bin/bash -# Unreal Tournament 2004 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Unreal Tournament 2004 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="DM-Rankin" ip="0.0.0.0" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | fn_parms(){ parms="server ${defaultmap}?game=XGame.xDeathMatch -nohomedir ini=${servercfg} log=${gamelog}" } -# Server Details -servicename="ut2k4-server" +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit gamename="Unreal Tournament 2004" engine="unreal2" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ut2k4-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -48,6 +82,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/System" executabledir="${systemdir}" executable="./ucc-bin" @@ -56,33 +92,28 @@ servercfgdefault="UT2004.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" - -# Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -139,8 +170,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 5788b40ef..b65b633bb 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -1,32 +1,28 @@ #!/bin/bash -# Unreal Tournament 3 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Unreal Tournament 3 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" port="7777" queryport="25300" @@ -41,26 +37,54 @@ pureserver="1" allowjoininprogress="true" maxplayers="32" -#list of game types and mutators : http://wiki.unrealadmin.org/FAQ:UT3 +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | List of game types and mutators : http://wiki.unrealadmin.org/FAQ:UT3 fn_parms(){ parms="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?MaxPlayers=${maxplayers}?Mutator=${mutators} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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="ut3-server" +## LinuxGSM Server Details +# Do not edit gamename="Unreal Tournament 3" engine="unreal3" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ut3-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -69,6 +93,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${systemdir}/Binaries" executable="./ut3" @@ -76,26 +102,28 @@ servercfg="${servicename}.ini" servercfgdefault="UTGame.ini" servercfgdir="${systemdir}/UTGame/Config" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -152,8 +180,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 652ac3772..8787df657 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -1,54 +1,79 @@ #!/bin/bash -# Unreal Tournament 99 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Unreal Tournament 99 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" - -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" -#emailfrom="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="DM-Deck16][" ip="0.0.0.0" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care fn_parms(){ parms="server ${defaultmap}.unr ini=${servercfgfullpath}" } -#### Advanced Variables #### +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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="ut99-server" +## LinuxGSM Server Details +# Do not edit gamename="Unreal Tournament 99" engine="unreal" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="ut99-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -57,6 +82,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/System" executabledir="${systemdir}" executable="./ucc-bin" @@ -65,24 +92,26 @@ servercfgdefault="Default.ini" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" compressedmapsdir="${rootdir}/Maps-Compressed" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -139,8 +168,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file diff --git a/WolfensteinEnemyTerritory/cfg/lgsm-default.cfg b/WolfensteinEnemyTerritory/cfg/lgsm-default.cfg deleted file mode 100644 index 326e27fc9..000000000 --- a/WolfensteinEnemyTerritory/cfg/lgsm-default.cfg +++ /dev/null @@ -1,125 +0,0 @@ -set dedicated "2" // 1: dedicated server for lan 2: dedicated server for internet -// set net_ip "" // set to override the default IP ET uses -// set net_port "27960" // set to override the default port ET uses - -// PASSWORDS & CLIENTS - -set sv_maxclients "20" // number of players including private slots -set g_password "" // set to password protect the server -set sv_privateclients "4" // if set > 0, then this number of client slots will be reserved for connections -set sv_privatepassword "" // that have "password" set to the value of "sv_privatePassword" -set rconpassword "" // remote console access password -set refereePassword "" // referee status password - -// DL, RATE - -set sv_maxRate "13000" // 10000 standard but poor for ET -set sv_dl_maxRate "42000" // increase/decerease if you have plenty/little spare bandwidth -set sv_allowDownload "0" // global toggle for both legacy download and web download -set sv_wwwDownload "0" // toggle to enable web download -set sv_wwwBaseURL "" // base URL for redirection -set sv_wwwDlDisconnected "0" // tell clients to perform their downloads while disconnected from the server -set sv_wwwFallbackURL "" // URL to send to if an http/ftp fails or is refused client side - -// MOTD ETC - -set sv_hostname "" // name of server here -set server_motd0 " ^NEnemy Territory ^7MOTD " // message in right corner of join screen here -set server_motd1 "" -set server_motd2 "" -set server_motd3 "" -set server_motd4 "" -set server_motd5 "" - -// MISC SETTINGS - -set g_heavyWeaponRestriction "100" -set g_antilag "1" -set g_altStopwatchMode "0" -set g_autofireteams "1" -set g_complaintlimit "6" -set g_ipcomplaintlimit "3" -set g_fastres "0" -set g_friendlyFire "1" -//set g_gametype "4" // Game type should be set from map rotation script -set g_minGameClients "8" -set g_maxlives "0" -set g_alliedmaxlives "0" -set g_axismaxlives "0" -set g_teamforcebalance "1" -set g_noTeamSwitching "0" -set g_voiceChatsAllowed "4" -set g_doWarmup "0" -set g_warmup "30" -set g_spectatorInactivity "0" -set sv_floodProtect "1" -set sv_allowDownload "1" -set sv_pure "1" -set sv_minping "0" -set sv_maxping "0" -set match_latejoin "1" -set match_minplayers "4" -set match_mutespecs "0" -set match_readypercent "100" -set match_timeoutcount "0" -set match_warmupDamage "1" -set team_maxplayers "0" -set team_nocontrols "1" -set pmove_fixed "0" -set pmove_msec "8" - -// LMS ONLY SETTINGS - -set g_lms_teamForceBalance "1" -set g_lms_roundlimit "3" -set g_lms_matchlimit "2" -set g_lms_currentMatch "0" -set g_lms_lockTeams "0" -set g_lms_followTeamOnly "1" - -// VOTING - -set g_allowVote "1" -set vote_limit "5" -set vote_percent "50" -set vote_allow_comp "1" -set vote_allow_gametype "1" -set vote_allow_kick "1" -set vote_allow_map "1" -set vote_allow_matchreset "1" -set vote_allow_mutespecs "1" -set vote_allow_nextmap "1" -set vote_allow_pub "1" -set vote_allow_referee "0" -set vote_allow_shuffleteams "1" -set vote_allow_swapteams "1" -set vote_allow_friendlyfire "1" -set vote_allow_timelimit "0" -set vote_allow_warmupdamage "1" -set vote_allow_antilag "1" -set vote_allow_balancedteams "1" -set vote_allow_muting "1" - -// PUNKBUSTER - -// sv_punkbuster is a readonly variable. Use +set sv_punkbuster on command line or use the command pb_sv_enable in the console -//pb_sv_enable - -// LOGGING - -set g_log "etserver.log" // Game logging -set g_logsync 0 -set logfile 0 // Console logging ( 1: enable 2: enable and sync ) - -// MAP ROTATION - -exec campaigncycle.cfg // Campaign mode -//exec objectivecycle.cfg // Objective mode -//exec lmscycle.cfg // Last Man Standing mode - -// WATCHDOG - -// in case the game dies with an ERR_DROP -// or any situation leading to server running with no map -//set com_watchdog 10 // defaults 60 -set com_watchdog_cmd "exec campaigncycle.cfg" // defaults to quit diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index f400c20e6..c4a5a0db8 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -1,52 +1,81 @@ #!/bin/bash -# Enemy Territory -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Enemy Territory | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="211016" +version="161030" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +# Please use Enemy Territory config file. -# Email +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ + parms="+set net_strict 1 +set fs_homepath ${filesdir} +exec ${servercfg}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" -fn_parms(){ - parms="+set net_strict 1 +set fs_homepath ${filesdir} +exec ${servercfg}" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -#### Advanced Variables #### +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -# Github Branch Select +#### LinuxGSM Advanced Settings #### + +## 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="et-server" +## LinuxGSM Server Details +# Do not edit gamename="Wolfenstein: Enemy Territory" engine="idtech3" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="et-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -55,6 +84,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${systemdir}" executable="./etded" @@ -62,24 +93,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}/etmain" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -136,8 +169,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file 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/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 06e941ff4..20a36afea 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -27,13 +27,12 @@ fn_check_steamcmd_user(){ fi # Anonymous user is set if steamuser is missing if [ -z "${steamuser}" ]; then - fn_print_error_nl "Steam login not set. Using anonymous login." if [ -d "${scriptlogdir}" ]; then - fn_script_log_error "Steam login not set. Using anonymous login." + fn_script_log_info "Using anonymous Steam login." fi steamuser="anonymous" steampass="" - sleep 2 + sleep 1 fi } @@ -69,4 +68,4 @@ fn_check_steamcmd_guard(){ fn_check_steamcmd_user fn_check_steamcmd_sh # stdbuf has now replaced unbuffer. This should not longer be required. -#fn_check_steamcmd_guard \ No newline at end of file +#fn_check_steamcmd_guard diff --git a/lgsm/functions/check_tmuxception.sh b/lgsm/functions/check_tmuxception.sh index d23fd88a4..5b906f53e 100644 --- a/lgsm/functions/check_tmuxception.sh +++ b/lgsm/functions/check_tmuxception.sh @@ -10,7 +10,7 @@ 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_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" @@ -18,9 +18,9 @@ fn_check_is_in_tmux(){ fi } fn_check_is_in_screen(){ - if [ "$TERM" == "screen" ];then + if [ -n "${STY}" ];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_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" diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index ca6fe9607..34d014c42 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,193 @@ 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 + +# Trap to remove lockfile on quit. +fn_backup_trap(){ echo "" - fn_print_warning_nl "${servicename} is currently running." + echo -ne "backup ${backupname}.tar.gz..." + fn_print_canceled_eol_nl + fn_script_log_info "backup ${backupname}.tar.gz: CANCELED" + sleep 1 + rm -f "${backupdir}/${backupname}.tar.gz" | tee -a "${scriptlog}" + echo -ne "backup ${backupname}.tar.gz..." + fn_print_removed_eol_nl + fn_script_log_info "backup ${backupname}.tar.gz: REMOVED" + # Remove lock file + rm -f "${tmpdir}/.backup.lock" + core_exit.sh +} + +# Check if a backup is pending or has been aborted using .backup.lock +fn_backup_check_lockfile(){ + if [ -f "${tmpdir}/.backup.lock" ]; then + fn_print_info_nl "Lock file found: Backup is currently running" + fn_script_log_error "Lock file found: Backup is currently running: ${tmpdir}/.backup.lock" + core_exit.sh + fi +} + +# Initialisation +fn_backup_init(){ + # Backup file name with servicename and current date + backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')" + + info_distro.sh + fn_print_dots "Backup starting" + fn_script_log_info "Backup starting" + sleep 1 + fn_print_ok "Backup starting" 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_print_dots "Backup in progress, please wait..." -fn_script_log_info "Started backup" -sleep 2 -if [ ! -d "${backupdir}" ]; then - mkdir "${backupdir}" -fi -tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* -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" -else - fn_print_error_nl "Backup failed: ${backupname}.tar.gz" - fn_script_log_error "Backup failed: ${backupname}.tar.gz" -fi -sleep 1 -echo "" + echo -ne "\n" + if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then + fn_print_info_nl "There are no previous backups" + else + if [ "${lastbackupdaysago}" == "0" ]; then + daysago="less than 1 day ago" + elif [ "${lastbackupdaysago}" == "1" ]; then + daysago="1 day ago" + else + daysago="${lastbackupdaysago} days ago" + fi + echo " * Previous backup was created ${daysago}, total size ${lastbackupsize}" + sleep 1 + fi +} + + +# 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 running and stoponbackup=off + elif [ "${stoponbackup}" == "off" ]; then + serverstopped="no" + fn_print_warn_nl "${servicename} is currently running" + echo " * Although unlikely; creating a backup while ${servicename} is running might corrupt the backup." + fn_script_log_warn "${servicename} is currently running" + fn_script_log_warn "Although unlikely; creating a backup while ${servicename} is running might corrupt the backup" + # Server is running and will be stopped if stoponbackup=on or unset + else + fn_print_warn_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_dir(){ + # Create backupdir if it doesn't exist + if [ ! -d "${backupdir}" ]; then + mkdir -p "${backupdir}" + fi +} + +fn_backup_create_lockfile(){ + # Create lockfile + date > "${tmpdir}/.backup.lock" + fn_script_log_info "Lockfile generated" + fn_script_log_info "${tmpdir}/.backup.lock" + # trap to remove lockfile on quit. + trap fn_backup_trap INT +} + +# Compressing files +fn_backup_compression(){ + # Tells how much will be compressed using rootdirduexbackup value from info_distro and prompt for continue + fn_print_info "A total of ${rootdirduexbackup} will be compressed." + fn_script_log_info "A total of ${rootdirduexbackup} will be compressed: ${backupdir}/${backupname}.tar.gz" + sleep 2 + fn_print_dots "Backup (${rootdirduexbackup}) ${backupname}.tar.gz, in progress..." + fn_script_log_info "backup ${rootdirduexbackup} ${backupname}.tar.gz, in progress" + tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./* + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol + fn_script_log_fatal "Backup in progress: FAIL" + echo "${tarcmd}" | tee -a "${scriptlog}" + fn_print_fail_nl "Starting backup" + fn_script_log_fatal "Starting backup" + else + fn_print_ok_eol + sleep 1 + fn_print_ok_nl "Completed: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')" + fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')" + fi +} + +# Clear old backups according to maxbackups and maxbackupdays variables +fn_backup_prune(){ + # How many backups there are + info_distro.sh + # How many backups exceed maxbackups + backupquotadiff=$((backupcount-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 + fn_print_dots "Pruning" + fn_script_log_info "Backup pruning activated" + sleep 1 + fn_print_ok_nl "Pruning" + sleep 1 + # If maxbackups greater or equal to backupsoutdatedcount, then it is over maxbackupdays + if [ "${backupquotadiff}" -ge "${backupsoudatedcount}" ]; then + # Display how many backups will be cleared + echo " * Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit" + fn_script_log_info "Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit" + sleep 1 + fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)" + fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)" + sleep 1 + # Clear backups over quota + find "${backupdir}"/ -type f -name "*.tar.gz" -printf '%T@ %p\n' | sort -rn | tail -${backupquotadiff} | cut -f2- -d" " | xargs rm + fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)" + fn_script_log_pass "Pruning: Cleared ${backupquotadiff} backup(s)" + # If maxbackupdays is used over maxbackups + elif [ "${backupquotadiff}" -lt "${backupsoudatedcount}" ]; then + # Display how many backups will be cleared + echo " * Pruning: ${backupsoudatedcount} backup(s) are older than ${maxbackupdays} days." + fn_script_log_info "Pruning: ${backupsoudatedcount} backup(s) older than ${maxbackupdays} days." + sleep 1 + fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)." + fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)" + sleep 1 + # Clear backups over quota + find "${backupdir}"/ -type f -mtime +"${maxbackupdays}" -exec rm -f {} \; + fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)" + fn_script_log_pass "Pruning: Cleared ${backupquotadiff} backup(s)" + fi + sleep 1 + fi + fi +} + +# Restart the server if it was stopped for the backup +fn_backup_start_server(){ + if [ "${serverstopped}" == "yes" ]; then + exitbypass=1 + command_start.sh + fi +} + +# Run functions +fn_backup_check_lockfile +fn_backup_create_lockfile +fn_backup_init +fn_backup_stop_server +fn_backup_dir +fn_backup_compression +fn_backup_prune +fn_backup_start_server + +# Remove lock file +rm -f "${tmpdir}/.backup.lock" + core_exit.sh diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 98bd3082c..ac1d0add8 100644 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -10,7 +10,7 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" # Trap to remove lockfile on quit. fn_lockfile_trap(){ - # Remove lock file + # Remove lockfile rm -f "${rootdir}/${lockselfname}" # resets terminal. Servers can sometimes mess up the terminal on exit. reset @@ -87,8 +87,10 @@ fn_script_log_info "Starting debug" sleep 1 fn_print_ok_nl "Starting debug" -# create lock file. +# Create lockfile date > "${rootdir}/${lockselfname}" +fn_script_log_info "Lockfile generated" +fn_script_log_info "${rootdir}/${lockselfname}" # trap to remove lockfile on quit. trap fn_lockfile_trap INT diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 22f8e2a5f..5743e17b0 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -262,7 +262,13 @@ fn_details_backup(){ { echo -e "${blue}No. of backups:\t${default}${backupcount}" echo -e "${blue}Latest backup:${default}" - echo -e "${blue} date:\t${default}${lastbackupdate}" + if [ "${lastbackupdaysago}" == "0" ]; then + echo -e "${blue} date:\t${default}${lastbackupdate} (less than 1 day ago)" + elif [ "${lastbackupdaysago}" == "1" ]; then + echo -e "${blue} date:\t${default}${lastbackupdate} (1 day ago)" + else + echo -e "${blue} date:\t${default}${lastbackupdate} (${lastbackupdaysago} days ago)" + fi echo -e "${blue} file:\t${default}${lastbackup}" echo -e "${blue} size:\t${default}${lastbackupsize}" } | column -s $'\t' -t diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index b11015e40..3c6d7fad4 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -13,8 +13,8 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_monitor_check_lockfile(){ # Monitor does not run it lockfile is not found if [ ! -f "${rootdir}/${lockselfname}" ]; then - fn_print_error_nl "Disabled: No lock file found" - fn_script_log_error "Disabled: No lock file found" + fn_print_error_nl "Disabled: No lockfile found" + fn_script_log_error "Disabled: No lockfile found" echo " * To enable monitor run ./${selfname} start" core_exit.sh fi diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index f7f324bf1..57dcbfa60 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -33,7 +33,7 @@ fn_start_teamspeak3(){ fi mv "${scriptlog}" "${scriptlogdate}" - # Create lock file + # Create lockfile date > "${rootdir}/${lockselfname}" cd "${executabledir}" if [ "${ts3serverpass}" == "1" ];then @@ -78,7 +78,7 @@ fn_start_tmux(){ core_exit.sh fi - # Create lock file + # Create lockfile date > "${rootdir}/${lockselfname}" cd "${executabledir}" tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp" diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 489013e3d..95aa10536 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -234,7 +234,7 @@ fn_stop_teamspeak3(){ ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 check_status.sh if [ "${status}" == "0" ]; then - # Remove lock file + # Remove lockfile rm -f "${rootdir}/${lockselfname}" fn_print_ok_nl "${servername}" fn_script_log_pass "Stopped ${servername}" @@ -253,7 +253,7 @@ fn_stop_mumble(){ sleep 1 check_status.sh if [ "${status}" == "0" ]; then - # Remove lock file + # Remove lockfile rm -f "${rootdir}/${lockselfname}" fn_stop_tmux fn_script_log_pass "Stopped ${servername}" @@ -272,7 +272,7 @@ fn_stop_tmux(){ sleep 0.5 check_status.sh if [ "${status}" == "0" ]; then - # Remove lock file + # Remove lockfile rm -f "${rootdir}/${lockselfname}" # ARK doesn't clean up immediately after tmux is killed. # Make certain the ports are cleared before continuing. diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index e6e563fc7..6d971b997 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -78,14 +78,14 @@ fn_dl_extract(){ # Trap to remove file download if canceled before completed fn_fetch_trap(){ echo "" - echo -ne "downloading ${filename}: " + echo -ne "downloading ${filename}..." fn_print_canceled_eol_nl - fn_script_log_info "downloading ${filename}: CANCELED" + fn_script_log_info "downloading ${filename}...CANCELED" sleep 1 rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" - echo -ne "downloading ${filename}: " + echo -ne "downloading ${filename}..." fn_print_removed_eol_nl - fn_script_log_info "downloading ${filename}: REMOVED" + fn_script_log_info "downloading ${filename}...REMOVED" core_exit.sh } diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 98814cf03..540729af7 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -350,4 +350,4 @@ fn_print_update_eol(){ fn_print_update_eol_nl(){ echo -e "${cyan}UPDATE${default}" -} \ No newline at end of file +} diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index a203a2c47..cc4037d72 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,23 @@ 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}") + # no of days since last backup. + lastbackupdaysago=$(( ( $(date +'%s') - $(date -r "${lastbackup}" +'%s') )/60/60/24 )) + # size of most recent backup. + lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}') + fi fi diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index ad219cc4b..bdd7cb23e 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 @@ -325,10 +324,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 ) @@ -364,7 +363,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 ) 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 diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 574fbe2b9..37b48781d 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -8,8 +8,9 @@ local commandname="UPDATE" local commandaction="Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +check.sh + fn_update_steamcmd_dl(){ - check.sh info_config.sh fn_print_dots "SteamCMD" sleep 1 @@ -235,4 +236,4 @@ if [ "${engine}" == "goldsource" ]||[ "${forceupdate}" == "1" ]; then else fn_update_request_log fn_update_steamcmd_check -fi \ No newline at end of file +fi From 1a5fc1471b95e551301aa6064e525c3c842dd672 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 31 Oct 2016 22:13:37 +0000 Subject: [PATCH 132/729] Fixes bug allowing backups to show when there are no backups Backups were being displayed in details even if the backups dir did not contain backups --- lgsm/functions/info_distro.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index cc4037d72..4b07d537b 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -108,16 +108,16 @@ fi ## Backup info if [ -d "${backupdir}" ]; then - # Ued space in backups dir. + # Used 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) # 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. From fb918470e4996f1ec0e5a5a0e5fbf9396dc90f7b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 31 Oct 2016 22:13:56 +0000 Subject: [PATCH 133/729] removed return --- lgsm/functions/info_config.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 7982ebd69..63ec0a85d 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -103,7 +103,6 @@ fn_info_config_minecraft(){ gamemode="${unavailable}" gameworld="${unavailable}" else - servername=$(grep "motd" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/motd//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconpassword=$(grep "rcon.password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/rcon.password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconport=$(grep "rcon.port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') From c896c1b25d80efab079c9940c4459215a53f3314 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 31 Oct 2016 22:20:51 +0000 Subject: [PATCH 134/729] backupcount=0 by default Previous solution 1a5fc1471b95e551301aa6064e525c3c842dd672 caused issue with the find command showing an error. --- lgsm/functions/info_distro.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index 4b07d537b..16973cfc1 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -114,10 +114,14 @@ if [ -d "${backupdir}" ]; then if [ -z "${backupdirdu}" ]; then backupdirdu="0M" fi - # number of backups. - backupcount=$(find "${backupdir}"/*.tar.gz | wc -l) + + # number of backups set to 0 by default + backupcount=0 + # 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. From f7a2ec60fca9ee6e960baba1793d668b21791425 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 1 Nov 2016 21:29:09 +0100 Subject: [PATCH 135/729] Fixes #991 (#1165) * stbuf will no longer be used on x64 #991 --- lgsm/functions/install_server_files.sh | 7 ++++--- lgsm/functions/update_steamcmd.sh | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 7f4072a81..00e8abc08 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -61,8 +61,9 @@ fn_install_server_files_steamcmd(){ check_steamcmd.sh fi - # Detects if unbuffer command is available. - if [ $(command -v stdbuf) ]; then + # Detects if unbuffer command is available for 32 bit distributions only. + info_distro.sh + if [ $(command -v stdbuf) ]&&[ "${arch}" != "x86_64" ]; then unbuffer="stdbuf -i0 -o0 -e0" fi @@ -134,4 +135,4 @@ if [ -z "${autoinstall}" ]; then * ) echo "Please answer yes or no.";; esac done -fi \ No newline at end of file +fi diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 37b48781d..167daf5fb 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -19,8 +19,9 @@ fn_update_steamcmd_dl(){ cd "${rootdir}/steamcmd" - # Detects if unbuffer command is available. - if [ $(command -v stdbuf) ]; then + # Detects if unbuffer command is available for 32 bit distributions only. + info_distro.sh + if [ $(command -v stdbuf) ]&&[ "${arch}" != "x86_64" ]; then unbuffer="stdbuf -i0 -o0 -e0" fi From c978dde5c9d449e66216a4023a029553538c2a41 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 2 Nov 2016 18:00:58 +0000 Subject: [PATCH 136/729] Added BF1942 ncurses requirement to CentOS --- lgsm/functions/check_deps.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index eb9d21f03..c0c5cf9ec 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -254,6 +254,9 @@ elif [ -n "$(command -v yum)" ]; then # Brainbread 2 and Don't Starve Together elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then array_deps_required+=( libcurl.i686 ) + # Battlefield: 1942 + elif [ "${gamename}" == "Battlefield: 1942" ]; then + array_deps_required+=( ncurses-libs.i686 ) # Project Zomboid and Minecraft elif [ "${engine}" == "projectzomboid" ]||[ "${engine}" == "lwjgl2" ]; then javaversion=$(java -version 2>&1 | grep "version") From 1e0215734d21437fe1e4d56965f331b7dcb07e17 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 2 Nov 2016 18:12:58 +0000 Subject: [PATCH 137/729] Updated comment --- lgsm/functions/check_deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index c0c5cf9ec..3f0c0eb55 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -185,7 +185,7 @@ if [ -n "$(command -v dpkg-query)" ]; then # Brainbread 2 and Don't Starve Together elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then array_deps_required+=( libcurl4-gnutls-dev:i386 ) - # Battlefield: 1942 requies ncurses + # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then array_deps_required+=( libncurses5:i386 ) # Project Zomboid and Minecraft From 7d16230522752d216d9920c4b9785b89b26beca0 Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Wed, 2 Nov 2016 14:50:48 -0400 Subject: [PATCH 138/729] adding Call of Duty (#1118) * adding codserver Call of Duty 1 --- CallOfDuty/codserver | 185 +++++++++++++++++++++++++ lgsm/functions/check_deps.sh | 6 + lgsm/functions/command_details.sh | 11 ++ lgsm/functions/command_install.sh | 2 +- lgsm/functions/core_getopt.sh | 2 +- lgsm/functions/fix_glibc.sh | 2 +- lgsm/functions/info_config.sh | 16 +++ lgsm/functions/info_glibc.sh | 3 + lgsm/functions/install_config.sh | 6 + lgsm/functions/install_server_files.sh | 2 + 10 files changed, 232 insertions(+), 3 deletions(-) create mode 100755 CallOfDuty/codserver diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver new file mode 100755 index 000000000..ae19879e8 --- /dev/null +++ b/CallOfDuty/codserver @@ -0,0 +1,185 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Call of Duty | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="161030" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +defaultmap="mp_neuville" +maxclients="20" +port="28960" +ip="0.0.0.0" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +exec ${servercfg} +map ${defaultmap}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### 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" + +## LinuxGSM Server Details +# Do not edit +gamename="Call of Duty" +engine="idtech3" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cod-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./cod_lnxded" +servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" +servercfgdir="${systemdir}/main" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +gamelogdir="${filesdir}/Logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh \ No newline at end of file diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 3f0c0eb55..75b99a70a 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -188,6 +188,9 @@ if [ -n "$(command -v dpkg-query)" ]; then # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then array_deps_required+=( libncurses5:i386 ) + # Call of Duty + elif [ "${gamename}" == "Call of Duty" ]; then + array_deps_required+=( libstdc++5:i386 ) # Project Zomboid and Minecraft elif [ "${engine}" == "projectzomboid" ]||[ "${engine}" == "lwjgl2" ]; then javaversion=$(java -version 2>&1 | grep "version") @@ -257,6 +260,9 @@ elif [ -n "$(command -v yum)" ]; then # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then array_deps_required+=( ncurses-libs.i686 ) + # Call of Duty + elif [ "${gamename}" == "Call of Duty" ]; then + array_deps_required+=( compat-libstdc++-33.i686 ) # Project Zomboid and Minecraft elif [ "${engine}" == "projectzomboid" ]||[ "${engine}" == "lwjgl2" ]; then javaversion=$(java -version 2>&1 | grep "version") diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 5743e17b0..4f39fe2ef 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -341,6 +341,15 @@ fn_details_avalanche(){ } | column -s $'\t' -t } +fn_details_cod(){ + echo -e "netstat -atunp | grep cod_lnxded" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + fn_details_dontstarve(){ echo -e "netstat -atunp | grep dontstarve" echo -e "" @@ -698,6 +707,8 @@ fn_display_details() { fn_details_sdtd elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then fn_details_ark + elif [ "${gamename}" == "Call of Duty" ]; then + fn_details_cod elif [ "${gamename}" == "Hurtworld" ]; then fn_details_hurtworld elif [ "${gamename}" == "QuakeWorld" ]; then diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index d2feadb05..43dc9daf5 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}" == "Battlefield: 1942" ]||[ "${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 +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${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/core_getopt.sh b/lgsm/functions/core_getopt.sh index d07f82d04..d629e3711 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}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${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/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 6408e3339..5abc18e9a 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -40,4 +40,4 @@ do fi done -export LD_LIBRARY_PATH=:"${libdir}" \ No newline at end of file +export LD_LIBRARY_PATH=:"${libdir}" diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 63ec0a85d..46e7445a6 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -66,6 +66,19 @@ fn_info_config_bf1942(){ fi } +fn_info_config_cod(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + rconpassword="${unavailable}" + else + servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) + rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + + # Not Set + servername=${servername:-"NOT SET"} + rconpassword=${rconpassword=:-"NOT SET"} + fi +} fn_info_config_dontstarve(){ if [ ! -f "${servercfgfullpath}" ]; then @@ -509,6 +522,9 @@ if [ "${engine}" == "avalanche" ]; then # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then fn_info_config_bf1942 +# Call of Duty +elif [ "${gamename}" == "Call of Duty" ]; then + fn_info_config_cod # Dont Starve Together elif [ "${engine}" == "dontstarve" ]; then fn_info_config_dontstarve diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 73ef6251d..d5564bbe8 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -14,6 +14,9 @@ elif [ "${gamename}" == "Blade Symphony" ]; then glibcfix="yes" elif [ "${gamename}" == "BrainBread 2" ]; then glibcrequired="2.17" +elif [ "${gamename}" == "Call of Duty" ]; then + glibcrequired="2.1" + glibcfix="yes" elif [ "${gamename}" == "Day of Infamy" ]; then glibcrequired="2.15" glibcfix="yes" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index bdd7cb23e..543315458 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -113,6 +113,12 @@ elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Call of Duty" ]; then + gamedirname="CallOfDuty" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Codename CURE" ]; then gamedirname="CodenameCURE" array_configs+=( server.cfg ) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 00e8abc08..18268fc3f 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -23,6 +23,8 @@ 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}" == "Call of Duty" ]; then + fileurl="http://files.gameservermanagers.com/CallOfDuty/cod-lnxded-1.5b-full.tar.bz2"; filedir="${tmpdir}"; filename="cod-lnxded-1.5-large.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="19629895a4cf6fd8f6d1ee198b5304cd" 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 From b845252e4d72e643cca3062a62369dc660da745d Mon Sep 17 00:00:00 2001 From: JATO457 Date: Thu, 3 Nov 2016 21:44:25 -0400 Subject: [PATCH 139/729] Pushbullet Channel Support Adds support to push to channels with alert_pushbullet.sh and strings added to main server files --- 7DaysToDie/sdtdserver | 4 ++++ ARKSurvivalEvolved/arkserver | 4 ++++ Arma3/arma3server | 4 ++++ Battlefield1942/bf1942server | 4 ++++ BlackMesa/bmdmserver | 4 ++++ BladeSymphony/bsserver | 4 ++++ BrainBread2/bb2server | 4 ++++ CallOfDuty/codserver | 4 ++++ CodenameCURE/ccserver | 4 ++++ CounterStrike/csserver | 4 ++++ CounterStrikeConditionZero/csczserver | 4 ++++ CounterStrikeGlobalOffensive/csgoserver | 4 ++++ CounterStrikeSource/cssserver | 4 ++++ DayOfDefeat/dodserver | 4 ++++ DayOfDefeatSource/dodsserver | 4 ++++ DayOfInfamy/doiserver | 4 ++++ DeathmatchClassic/dmcserver | 4 ++++ DontStarveTogether/dstserver | 4 ++++ DoubleActionBoogaloo/dabserver | 4 ++++ EmpiresMod/emserver | 4 ++++ FistfulOfFrags/fofserver | 4 ++++ GarrysMod/gmodserver | 4 ++++ GoldenEyeSource/gesserver | 4 ++++ HalfLife2Deathmatch/hl2dmserver | 4 ++++ HalfLifeDeathmatch/hldmserver | 4 ++++ HalfLifeDeathmatchSource/hldmsserver | 4 ++++ Hurtworld/hwserver | 4 ++++ Insurgency/insserver | 4 ++++ JustCause2/jc2server | 4 ++++ KillingFloor/kfserver | 4 ++++ Left4Dead/l4dserver | 4 ++++ Left4Dead2/l4d2server | 4 ++++ Minecraft/mcserver | 4 ++++ Mumble/mumbleserver | 4 ++++ NS2Combat/ns2cserver | 4 ++++ NaturalSelection2/ns2server | 4 ++++ NoMoreRoomInHell/nmrihserver | 4 ++++ OpposingForce/opforserver | 4 ++++ PiratesVikingandKnightsII/pvkiiserver | 4 ++++ ProjectZomboid/pzserver | 4 ++++ Quake2/q2server | 4 ++++ Quake3/q3server | 4 ++++ QuakeLive/qlserver | 4 ++++ QuakeWorld/qwserver | 4 ++++ RedOrchestra/roserver | 4 ++++ Ricochet/ricochetserver | 4 ++++ Rust/rustserver | 4 ++++ SeriousSam3BFE/ss3sserver | 4 ++++ Starbound/sbserver | 4 ++++ SvenCoop/svenserver | 4 ++++ TeamFortress2/tf2server | 4 ++++ TeamFortressClassic/tfcserver | 4 ++++ TeamSpeak3/ts3server | 4 ++++ Teeworlds/twserver | 4 ++++ Terraria/terrariaserver | 4 ++++ UnrealTournament/utserver | 4 ++++ UnrealTournament2004/ut2k4server | 4 ++++ UnrealTournament3/ut3server | 4 ++++ UnrealTournament99/ut99server | 4 ++++ WolfensteinEnemyTerritory/wetserver | 4 ++++ 60 files changed, 240 insertions(+) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 5825a9248..45128d1a3 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index f2a9f2641..f582e86c6 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -48,6 +48,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Arma3/arma3server b/Arma3/arma3server index e4b4fb83b..f9b829c06 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -62,6 +62,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 43212f78a..2ad4c2ce8 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -38,6 +38,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 62bea603e..1c52fad37 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -52,6 +52,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 548adea2a..0b528f10c 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -51,6 +51,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 86c2fc9c8..f40f775e1 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -55,6 +55,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index ae19879e8..80925c7f0 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -44,6 +44,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup maxbackups="4" diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index dd622b8ae..f1240b043 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -45,6 +45,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/CounterStrike/csserver b/CounterStrike/csserver index bca3e12a3..c2e77e3dd 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 5eb278771..8a3704d09 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 8018883b9..3d4b83ba4 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -70,6 +70,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 78345eb9c..01a94b04d 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -53,6 +53,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index e6db43522..0edcd00a2 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -47,6 +47,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 8386384b6..7e88b8aaf 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -47,6 +47,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index d39568a53..76d03d0b4 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -49,6 +49,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index d2be5c1be..024a9821c 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 5b9a5c112..316b56287 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -45,6 +45,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index c080c568a..c7a8610b0 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -47,6 +47,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 6c2fa539c..abcd6aaf3 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -31,6 +31,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 7dc5cc571..673e3ed11 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -47,6 +47,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 1bbba189c..ff1a543fd 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -62,6 +62,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 7dd85e2f6..3c4876282 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -47,6 +47,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 6b0489fe6..5d9b95044 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -47,6 +47,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 43e3bf106..71e32297c 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 07b2c24cf..b1f2fdef5 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -47,6 +47,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index d63e5a346..a4eb88765 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -59,6 +59,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Insurgency/insserver b/Insurgency/insserver index 6a2748478..55d26c844 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -49,6 +49,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 4c89b31c1..2d6457644 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -41,6 +41,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 5f0e44154..8610e50ed 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -49,6 +49,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 2a7a20be1..8382b3ac5 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 0a84f1d83..2f6c0a487 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Minecraft/mcserver b/Minecraft/mcserver index ab69b9010..4b9c4549e 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -41,6 +41,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index ace1dac08..6ec84b238 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -40,6 +40,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 460ce874c..20dcf5542 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -58,6 +58,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 741f37862..64b77b84b 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -58,6 +58,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index d5910ab44..7ed8680dc 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -52,6 +52,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 1c059ed6b..bec0c07b5 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index bc7767adb..2a0d8d185 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -47,6 +47,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 0586a2c13..2936d0e83 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -41,6 +41,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Quake2/q2server b/Quake2/q2server index 94de84180..c510e5bb6 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -42,6 +42,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup maxbackups="4" diff --git a/Quake3/q3server b/Quake3/q3server index c302f10c0..5a0dd4e71 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -43,6 +43,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup maxbackups="4" diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 33cc3696c..d0ad9a6f3 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -50,6 +50,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 78449e81f..b6f7d27a9 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -24,6 +24,10 @@ email="email@example.com" # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" # Start Variables ip="0.0.0.0" diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 025bf348c..aa6101c04 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -47,6 +47,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 8eb18e0c1..0050db4ef 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -70,6 +70,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Rust/rustserver b/Rust/rustserver index 0ac0ab260..c43b968b7 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -62,6 +62,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index f0b1181e9..d917a1df8 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -42,6 +42,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Starbound/sbserver b/Starbound/sbserver index dd5e70e4e..8ac7300f9 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 82101fefa..60ee59f06 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 5adfaa87b..678a01fcf 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -50,6 +50,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 8b6994e4a..b399cd1c9 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index f0bfbb8ea..b69d3e01b 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -34,6 +34,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Teeworlds/twserver b/Teeworlds/twserver index bae6a0427..a0170ed30 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index a7b2b6c8b..31420b488 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -46,6 +46,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index d011b93ad..e4e6415f6 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -48,6 +48,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup maxbackups="4" diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index c8c1f55ee..0e196368a 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -43,6 +43,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup maxbackups="4" diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index b65b633bb..22f5cb2db 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -54,6 +54,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup maxbackups="4" diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 8787df657..516e87b99 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -43,6 +43,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup maxbackups="4" diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index c4a5a0db8..3052e29f8 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -42,6 +42,10 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +# Pushbullet Channel | Do not set unless the channel exists on the +# account associated with the access token. Set without using the '#' +# E.g: "thisisachanneltag" would push to #thisisachanneltag +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" From 20de638b793b04152d1c76be987508fc4ea4ff59 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 7 Nov 2016 19:33:50 +0100 Subject: [PATCH 140/729] hotfix for ts3 server pass Issue: other functions were triggering core_exit.sh Fix: bypass them bonus: better output Sample output: http://hastebin.com/quxulezila.rb --- lgsm/functions/command_ts3_server_pass.sh | 26 ++++++++++++----------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index 89c3cd036..1a9896889 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -29,22 +29,17 @@ fn_serveradmin_password_prompt(){ done fn_script_log_info "Initiating ${gamename} ServerAdmin password change" read -p "Enter new password : " newpassword - } +} - fn_serveradmin_password_set(){ - fn_print_info_nl "Applying new password" - fn_script_log_info "Applying new password" +fn_serveradmin_password_set(){ + fn_print_info_nl "Starting server with new password..." + fn_script_log_info "Starting server with new password" sleep 1 - # Stop any running server - command_stop.sh # Start server in "new password mode" ts3serverpass="1" - fn_print_info_nl "Starting server with new password" + exitbypass="1" command_start.sh - # Stop server in "new password mode" - command_stop.sh - ts3serverpass="0" fn_print_ok_nl "Password applied" fn_script_log_pass "New ServerAdmin password applied" sleep 1 @@ -55,9 +50,16 @@ check.sh fn_serveradmin_password_prompt check_status.sh if [ "${status}" != "0" ]; then + # Stop any running server + exitbypass="1" + command_stop.sh fn_serveradmin_password_set - command_start.sh + ts3serverpass="0" + fn_print_info_nl "Restarting server normally" + fn_script_log_info "Restarting server normally" + command_restart.sh else fn_serveradmin_password_set + command_stop.sh fi -core_exit.sh \ No newline at end of file +core_exit.sh From ee6c6c920ec80317d0508a322904120a0b3e349f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 7 Nov 2016 19:34:42 +0100 Subject: [PATCH 141/729] hotfix for ts3 server pass --- lgsm/functions/command_start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 57dcbfa60..30bbfccc8 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -37,7 +37,7 @@ fn_start_teamspeak3(){ date > "${rootdir}/${lockselfname}" cd "${executabledir}" if [ "${ts3serverpass}" == "1" ];then - ./ts3server_startscript.sh start serveradmin_password="${newpassword}" inifile="${servercfgfullpath}" + ./ts3server_startscript.sh start serveradmin_password="${newpassword}" inifile="${servercfgfullpath}" > /dev/null 2>&1 else ./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1 fi From ade6d66a18b6c47bc5aa0187ef2d9060c6903fae Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Wed, 9 Nov 2016 01:34:54 +0100 Subject: [PATCH 142/729] executable hotfix for Rust | fixes #1171 --- Rust/rustserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 0ac0ab260..870f42d04 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -116,7 +116,7 @@ filesdir="${rootdir}/serverfiles" ## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" -executable="./RustDedicated" +executable="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`dirname $0`/RustDedicated_Data/Plugins/x86_64 ./RustDedicated" serveridentitydir="${systemdir}/server/${servicename}" servercfg="server.cfg" servercfgdefault="server.cfg" @@ -214,4 +214,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From d5b7c3cba616e2453027ec073ec1acfde05f520d Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 11 Nov 2016 18:24:18 +0100 Subject: [PATCH 143/729] Overhauled Don't Starve Together server WORK IN PROGRESS - use ip parameter and/or ip from config - standardize fn_dstconfig() ? - .. --- DontStarveTogether/dstserver | 35 +++++++++---- lgsm/functions/command_details.sh | 15 +++++- lgsm/functions/command_install.sh | 2 + lgsm/functions/core_functions.sh | 5 ++ lgsm/functions/core_getopt.sh | 79 +++++++++++++++++++++++++++++ lgsm/functions/info_config.sh | 14 ++--- lgsm/functions/install_config.sh | 67 ++++++++++++++++++++++-- lgsm/functions/install_dst_token.sh | 49 ++++++++++++++++++ 8 files changed, 244 insertions(+), 22 deletions(-) create mode 100644 lgsm/functions/install_dst_token.sh diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 5b9a5c112..0c4b9647a 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161111" ########################## ######## Settings ######## @@ -22,15 +22,29 @@ version="161030" #### Server Settings #### +## Installation Variables +# Visit the following link for more information: +# https://github.com/GameServerManagers/LinuxGSM/wiki/Don't-Starve-Together +sharding="false" +master="true" +shard="Master" +cluster="Cluster_1" +cave="false" + ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" +port="11000" +steamauthenticationport="8768" +steammasterserverport="27018" +tickrate="15" + +# Edit with care +persistentstorageroot="${HOME}/.klei" +confdir="DoNotStarveTogether" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | http://dont-starve-game.wikia.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servers -# Overworld: -conf_dir DST_Overworld -# Cave: -conf_dir DST_Cave fn_parms(){ -parms="-console -cluster MyDediServer -shard Master" +parms="-bind_ip ${ip} -port ${port} -steam_master_server_port ${steammasterserverport} -steam_authentication_port ${steamauthenticationport} -tick ${tickrate} -persistent_storage_root ${persistentstorageroot} -conf_dir ${confdir} -cluster ${cluster} -shard ${shard}" # -console -cluster MyDediServer -shard Master } @@ -100,11 +114,14 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}/bin" executable="./dontstarve_dedicated_server_nullrenderer" -servercfg="settings.ini" -servercfgdefault="settings.ini" -servercfgdir="${HOME}/.klei/DoNotStarveTogether" +clustercfg="cluster.ini" +clustercfgdir="${persistentstorageroot}/${confdir}/${cluster}" +clustercfgfullpath="${clustercfgdir}/${clustercfg}" +clustercfgdefault="${clustercfgdir}/cluster.ini" +servercfg="server.ini" +servercfgdir="${clustercfgdir}/${shard}" servercfgfullpath="${servercfgdir}/${servercfg}" -servercfgdefault="${servercfgdir}/lgsm-default.ini" +servercfgdefault="server.ini" ## Backup Directory backupdir="${rootdir}/backups" diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 4f39fe2ef..f42378504 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -152,6 +152,16 @@ fn_details_gameserver(){ if [ -n "${tickrate}" ]; then echo -e "${blue}Tick rate:\t${default}${tickrate}" fi + + # Cluster (Don't Starve Together) + if [ -n "${cluster}" ]; then + echo -e "${blue}Cluster:\t${default}${cluster}" + fi + + # Shard (Don't Starve Together) + if [ -n "${shard}" ]; then + echo -e "${blue}Shard:\t${default}${shard}" + fi # TeamSpeak dbplugin if [ -n "${dbplugin}" ]; then @@ -355,7 +365,10 @@ fn_details_dontstarve(){ echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Game: Server\tINBOUND\t${port}\tudp" + echo -e "> Game: Master\tINBOUND\t${masterport}\tudp" + echo -e "> Steam: Auth\tINBOUND\t${steamauthenticationport}\tudp" + echo -e "> Steam: Master\tINBOUND\t${steammasterserverport}\tudp" } | column -s $'\t' -t } diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 43dc9daf5..b415f47a3 100644 --- a/lgsm/functions/command_install.sh +++ b/lgsm/functions/command_install.sh @@ -30,6 +30,8 @@ fi install_config.sh if [ "${gamename}" == "Counter-Strike: Global Offensive" ]||[ "${gamename}" == "Team Fortress 2" ]||[ "${gamename}" == "BrainBread 2" ]; then install_gslt.sh +elif [ "${gamename}" == "Don't Starve Together" ]; then + install_dst_token.sh elif [ "${gamename}" == "TeamSpeak 3" ]; then install_ts3db.sh fi diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index f5ba4ce9e..746027581 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -475,6 +475,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +install_dst_token.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + install_gsquery.sh(){ functionfile="${FUNCNAME}" fn_fetch_function diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index d629e3711..2a553b582 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -337,6 +337,83 @@ case "${getopt}" in esac } +fn_getopt_dstserver(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + fu|force-update|update-restart) + forceupdate=1; + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + ct|cluster-token) + install_dst_token.sh;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." + echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}cluster-token\t${default}ct |Configure cluster token." + } | column -s $'\t' -t + esac +} + fn_getopt_gmodserver(){ case "${getopt}" in st|start) @@ -628,6 +705,8 @@ elif [ "${engine}" == "lwjgl2" ]; then fn_getopt_minecraft elif [ "${gamename}" == "TeamSpeak 3" ]; then fn_getopt_teamspeak3 +elif [ "${gamename}" == "Don't Starve Together" ]; then + fn_getopt_dstserver elif [ "${gamename}" == "Garry's Mod" ]; then fn_getopt_gmodserver elif [ "${engine}" == "unreal2" ]; then diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 46e7445a6..4e8fca918 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -81,7 +81,7 @@ fn_info_config_cod(){ } fn_info_config_dontstarve(){ - if [ ! -f "${servercfgfullpath}" ]; then + if [ ! -f "${clustercfgfullpath}" ]; then servername="${unavailable}" serverpassword="${unavailable}" slots="${zero}" @@ -89,12 +89,12 @@ fn_info_config_dontstarve(){ tickrate="${zero}" port="${zero}" else - servername=$(grep "default_server_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/default_server_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "server_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - slots=$(grep "max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - gamemode=$(grep "game_mode" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_mode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - tickrate=$(grep "tick_rate" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + servername=$(grep "cluster_name" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/cluster_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + serverpassword=$(grep "cluster_password" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/cluster_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + slots=$(grep "max_players" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + gamemode=$(grep "game_mode" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_mode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + tickrate=$(grep "tick_rate" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + port=$(grep "master_port" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') # Not Set servername=${servername:-"NOT SET"} diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 543315458..adfad2e90 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -10,11 +10,11 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_fetch_default_config(){ mkdir -pv "${lgsmdir}/default-configs" - githuburl="https://github.com/GameServerManagers/Game-Server-Configs/master" + githuburl="https://github.com/GameServerManagers/Game-Server-Configs/dstserver" for config in "${array_configs[@]}" do - fileurl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master/${gamedirname}/${config}"; filedir="${lgsmdir}/default-configs"; filename="${config}"; executecmd="noexecute" run="norun"; force="noforce" + fileurl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/dstserver/${gamedirname}/${config}"; filedir="${lgsmdir}/default-configs"; filename="${config}"; executecmd="noexecute" run="norun"; force="noforce" fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" done } @@ -65,6 +65,64 @@ fn_default_config_remote(){ sleep 1 } +fn_dstconfig(){ + ## cluster.ini + # this config shouldn't be overridden + if [ ! -s "${clustercfgfullpath}" ]; then + echo "copying ${clustercfg} config file." + fn_script_log_info "copying ${clustercfg} config file." + cp -v "${lgsmdir}/default-configs/${clustercfgdefault}" "${clustercfgfullpath}" + sleep 1 + echo "changing server name." + fn_script_log_info "changing server name." + sed -i "s/SERVERNAME/LinuxGSM/g" "${clustercfgfullpath}" + sleep 1 + echo "changing shard mode." + fn_script_log_info "changing shard mode." + sed -i "s/USESHARDING/${sharding}/g" "${clustercfgfullpath}" + sleep 1 + echo "randomizing cluster key." + fn_script_log_info "randomizing cluster key." + randomkey=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) + sed -i "s/CLUSTERKEY/${randomkey}/g" "${clustercfgfullpath}" + sleep 1 + else + echo "${clustercfg} already exists." + fn_script_log_info "${clustercfg} already exists." + fi + + ## server.ini + echo "copying ${servercfg} config file." + fn_script_log_info "copying ${servercfg} config file." + cp -v "${lgsmdir}/default-configs/${servercfgdefault}" "${servercfgfullpath}" + sleep 1 + # removing unnecessary options (dependent on sharding & shard type) + if [ "sharding" == "false" ]; then + sed -i "s/ISMASTER//g" "${servercfgfullpath}" + sed -d "/SHARDNAME/d" "${servercfgfullpath}" + elif [ "master" == "true" ]; + sed -d "/SHARDNAME/d" "${servercfgfullpath}" + fi + # configure settings + echo "changing shard name." + fn_script_log_info "changing shard name." + sed -i "s/SHARDNAME/${shard}/g" "${servercfgfullpath}" + sleep 1 + echo "changing master setting." + fn_script_log_info "changing master setting." + sed -i "s/ISMASTER/${master}/g" "${servercfgfullpath}" + sleep 1 + + ## worldgenoverride.lua + if [ "${cave}" == "true" ]; then + echo "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua." + fn_script_log_info "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua." + echo 'return { override_enabled = true, preset = "DST_CAVE", }' > "${servercfgdir}/worldgenoverride.lua" + fi + sleep 1 + echo "" +} + echo "" echo "Downloading ${gamename} Config" echo "=================================" @@ -175,10 +233,9 @@ elif [ "${gamename}" == "Deathmatch Classic" ]; then fn_set_config_vars elif [ "${gamename}" == "Don't Starve Together" ]; then gamedirname="DontStarveTogether" - array_configs+=( Settings.ini ) + array_configs+=( cluster.ini server.ini ) fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars + fn_dstconfig elif [ "${gamename}" == "Double Action: Boogaloo" ]; then gamedirname="DoubleActionBoogaloo" array_configs+=( server.cfg ) diff --git a/lgsm/functions/install_dst_token.sh b/lgsm/functions/install_dst_token.sh new file mode 100644 index 000000000..2e9713e71 --- /dev/null +++ b/lgsm/functions/install_dst_token.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# LGSM install_dst_token.sh function +# Author: Daniel Gibbs & Marvin Lehmann (marvinl97) +# Website: https://gameservermanagers.com +# Description: Configures Don't Starve Together cluster with given token. + +local commandname="INSTALL" +local commandaction="Install" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +echo "" +echo "Enter ${gamename} Cluster Token" +echo "=================================" +sleep 1 +echo "A cluster token is required to run this server!" +echo "Follow the instructions in this link to obtain this key:" +echo "https://gameservermanagers.com/dst-auth-token" +echo "" +if [ -z "${autoinstall}" ]; then + overwritetoken="true" + if [ -s "${clustercfgdir}/cluster_token.txt" ]; then + echo "The cluster token is already set. Do you want to overwrite it?" + fn_script_log_info "Don't Starve Together cluster token is already set" + while true; do + read -e -i "n" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) overwritetoken="true"; break;; + [Nn]* ) overwritetoken="false"; break;; + * ) echo "Please answer yes or no.";; + esac + done + fi + if [ "${overwritetoken}" == "true" ]; then + echo "Once you have the cluster token, enter it below" + echo -n "Cluster Token: " + read token + mkdir -pv "${clustercfgdir}" + echo "${token}" > "${clustercfgdir}/cluster_token.txt" + if [ -f "${clustercfgdir}/cluster_token.txt" ]; then + echo "Don't Starve Together cluster token created" + fn_script_log_info "Don't Starve Together cluster token created" + fi + unset overwritetoken + fi +else + echo "You can add your cluster token using the following command" + echo "./${selfname} cluster-token" +fi +echo "" From 4ab4218fbceb79f3a2097cb929d6469d6bbd1436 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 11 Nov 2016 19:04:14 +0100 Subject: [PATCH 144/729] Added missing "then" --- lgsm/functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index adfad2e90..d751fb3a1 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -100,7 +100,7 @@ fn_dstconfig(){ if [ "sharding" == "false" ]; then sed -i "s/ISMASTER//g" "${servercfgfullpath}" sed -d "/SHARDNAME/d" "${servercfgfullpath}" - elif [ "master" == "true" ]; + elif [ "master" == "true" ]; then sed -d "/SHARDNAME/d" "${servercfgfullpath}" fi # configure settings From 316509f3aa7b1e109cba704c3fbba96bfd1521cf Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 11 Nov 2016 19:04:52 +0100 Subject: [PATCH 145/729] Switched to dstserver-new branch --- DontStarveTogether/dstserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 0c4b9647a..6b65cacf7 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -87,7 +87,7 @@ branch="" # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" -githubbranch="master" +githubbranch="dstserver-new" ## LinuxGSM Server Details # Do not edit From 8a21bfe48d3e3b405fa766e8f5b79035286c81d6 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 11 Nov 2016 21:15:23 +0100 Subject: [PATCH 146/729] Fixes and improvements - moved tick_rate to config - corrected config info (port -> masterport) - corrected default cluster.ini path - added missing $ for variables --- DontStarveTogether/dstserver | 5 ++--- lgsm/functions/info_config.sh | 6 +++--- lgsm/functions/install_config.sh | 9 +++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 6b65cacf7..859dbbe8f 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -36,7 +36,6 @@ ip="0.0.0.0" port="11000" steamauthenticationport="8768" steammasterserverport="27018" -tickrate="15" # Edit with care persistentstorageroot="${HOME}/.klei" @@ -44,7 +43,7 @@ confdir="DoNotStarveTogether" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ -parms="-bind_ip ${ip} -port ${port} -steam_master_server_port ${steammasterserverport} -steam_authentication_port ${steamauthenticationport} -tick ${tickrate} -persistent_storage_root ${persistentstorageroot} -conf_dir ${confdir} -cluster ${cluster} -shard ${shard}" +parms="-bind_ip ${ip} -port ${port} -steam_master_server_port ${steammasterserverport} -steam_authentication_port ${steamauthenticationport} -persistent_storage_root ${persistentstorageroot} -conf_dir ${confdir} -cluster ${cluster} -shard ${shard}" # -console -cluster MyDediServer -shard Master } @@ -117,7 +116,7 @@ executable="./dontstarve_dedicated_server_nullrenderer" clustercfg="cluster.ini" clustercfgdir="${persistentstorageroot}/${confdir}/${cluster}" clustercfgfullpath="${clustercfgdir}/${clustercfg}" -clustercfgdefault="${clustercfgdir}/cluster.ini" +clustercfgdefault="cluster.ini" servercfg="server.ini" servercfgdir="${clustercfgdir}/${shard}" servercfgfullpath="${servercfgdir}/${servercfg}" diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 4e8fca918..99e2038fa 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -87,14 +87,14 @@ fn_info_config_dontstarve(){ slots="${zero}" gamemode="${unavailable}" tickrate="${zero}" - port="${zero}" + masterport="${zero}" else servername=$(grep "cluster_name" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/cluster_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') serverpassword=$(grep "cluster_password" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/cluster_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') slots=$(grep "max_players" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') gamemode=$(grep "game_mode" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_mode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') tickrate=$(grep "tick_rate" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - port=$(grep "master_port" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + masterport=$(grep "master_port" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') # Not Set servername=${servername:-"NOT SET"} @@ -102,7 +102,7 @@ fn_info_config_dontstarve(){ slots=${slots:-"0"} gamemode=${gamemode:-"NOT SET"} tickrate=${tickrate:-"0"} - port=${port:-"0"} + masterport=${masterport:-"0"} fi } diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index d751fb3a1..a77ef5d2d 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -97,11 +97,11 @@ fn_dstconfig(){ cp -v "${lgsmdir}/default-configs/${servercfgdefault}" "${servercfgfullpath}" sleep 1 # removing unnecessary options (dependent on sharding & shard type) - if [ "sharding" == "false" ]; then + if [ "${sharding}" == "false" ]; then sed -i "s/ISMASTER//g" "${servercfgfullpath}" - sed -d "/SHARDNAME/d" "${servercfgfullpath}" - elif [ "master" == "true" ]; then - sed -d "/SHARDNAME/d" "${servercfgfullpath}" + sed -i "/SHARDNAME/d" "${servercfgfullpath}" + elif [ "${master}" == "true" ]; then + sed -i "/SHARDNAME/d" "${servercfgfullpath}" fi # configure settings echo "changing shard name." @@ -233,6 +233,7 @@ elif [ "${gamename}" == "Deathmatch Classic" ]; then fn_set_config_vars elif [ "${gamename}" == "Don't Starve Together" ]; then gamedirname="DontStarveTogether" + fn_check_cfgdir array_configs+=( cluster.ini server.ini ) fn_fetch_default_config fn_dstconfig From d8bd68e9c8cfbbbe258be78cd74c91fa3c3c87ac Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Sat, 12 Nov 2016 18:30:32 -0500 Subject: [PATCH 147/729] adding Call of Duty 2 (#1127) * Added Call of Duty 2 --- CallOfDuty2/cod2server | 186 +++++++++++++++++++++++++ lgsm/functions/check_deps.sh | 4 +- lgsm/functions/command_details.sh | 10 ++ lgsm/functions/command_install.sh | 2 +- lgsm/functions/command_monitor.sh | 2 +- lgsm/functions/core_functions.sh | 5 + lgsm/functions/core_getopt.sh | 2 +- lgsm/functions/fix.sh | 2 + lgsm/functions/gsquery.py | 4 +- lgsm/functions/info_config.sh | 17 +++ lgsm/functions/info_glibc.sh | 5 +- lgsm/functions/install_config.sh | 6 + lgsm/functions/install_server_files.sh | 3 +- 13 files changed, 240 insertions(+), 8 deletions(-) create mode 100755 CallOfDuty2/cod2server diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server new file mode 100755 index 000000000..74aafdb55 --- /dev/null +++ b/CallOfDuty2/cod2server @@ -0,0 +1,186 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Call of Duty 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="161030" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters + +defaultmap="mp_leningrad" +maxclients="20" +port="28960" +ip="0.0.0.0" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +exec ${servercfg} +map ${defaultmap}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### 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" + +## LinuxGSM Server Details +# Do not edit +gamename="Call of Duty 2" +engine="iw2.0" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cod2-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./cod2_lnxded" +servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" +servercfgdir="${systemdir}/main" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +gamelogdir="${filesdir}/Logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh \ No newline at end of file diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 75b99a70a..62d9ed6f6 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -189,7 +189,7 @@ if [ -n "$(command -v dpkg-query)" ]; then elif [ "${gamename}" == "Battlefield: 1942" ]; then array_deps_required+=( libncurses5:i386 ) # Call of Duty - elif [ "${gamename}" == "Call of Duty" ]; then + elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]; then array_deps_required+=( libstdc++5:i386 ) # Project Zomboid and Minecraft elif [ "${engine}" == "projectzomboid" ]||[ "${engine}" == "lwjgl2" ]; then @@ -261,7 +261,7 @@ elif [ -n "$(command -v yum)" ]; then elif [ "${gamename}" == "Battlefield: 1942" ]; then array_deps_required+=( ncurses-libs.i686 ) # Call of Duty - elif [ "${gamename}" == "Call of Duty" ]; then + elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]; then array_deps_required+=( compat-libstdc++-33.i686 ) # Project Zomboid and Minecraft elif [ "${engine}" == "projectzomboid" ]||[ "${engine}" == "lwjgl2" ]; then diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 4f39fe2ef..4ce097e1a 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -652,6 +652,14 @@ fn_details_ark(){ } | column -s $'\t' -t } +fn_details_cod2(){ + echo -e "netstat -atunp | grep cod2_lnxded" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} # Run checks and gathers details to display. @@ -709,6 +717,8 @@ fn_display_details() { fn_details_ark elif [ "${gamename}" == "Call of Duty" ]; then fn_details_cod + elif [ "${gamename}" == "Call of Duty 2" ]; then + fn_details_cod2 elif [ "${gamename}" == "Hurtworld" ]; then fn_details_hurtworld elif [ "${gamename}" == "QuakeWorld" ]; then diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 43dc9daf5..e36ac5967 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}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${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 +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${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 3c6d7fad4..2e5de3402 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 quake refractor realvirtuality source spark unity3d unreal unreal2 ) + local allowed_engines_array=( avalanche goldsource idtech3 idtech3_ql iw2.0 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/core_functions.sh b/lgsm/functions/core_functions.sh index f5ba4ce9e..765b95712 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -544,6 +544,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +fix_cod2.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 d629e3711..ec1e45713 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}" == "Call of Duty" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${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/fix.sh b/lgsm/functions/fix.sh index 5671ed627..a57e179c4 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -37,6 +37,8 @@ if [ "${function_selfname}" != "command_install.sh" ]; then if [ "${gamename}" == "ARMA 3" ]; then fix_arma3.sh + elif [ "${gamename}" == "Call of Duty 2" ]; then + fix_cod2.sh elif [ "${gamename}" == "Counter-Strike: Global Offensive" ]; then fix_csgo.sh elif [ "${gamename}" == "Don't Starve Together" ]; then diff --git a/lgsm/functions/gsquery.py b/lgsm/functions/gsquery.py index cd46717cd..e45d891cb 100644 --- a/lgsm/functions/gsquery.py +++ b/lgsm/functions/gsquery.py @@ -26,6 +26,8 @@ class GameServer: 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 == 'iw2.0': + 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': @@ -113,7 +115,7 @@ if __name__ == '__main__': action='store', dest='engine', default=False, - help='Engine type: avalanche, goldsource, idtech2, idtech3, realvirtuality, quake, quakelive, refractor, spark, source, unity3d, unreal, unreal2.' + help='Engine type: avalanche, goldsource, idtech2, idtech3, iw2.0, 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 46e7445a6..198ffa656 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -80,6 +80,20 @@ fn_info_config_cod(){ fi } +fn_info_config_cod2(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + rconpassword="${unavailable}" + else + servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) + rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + + # Not Set + servername=${servername:-"NOT SET"} + rconpassword=${rconpassword=:-"NOT SET"} + fi +} + fn_info_config_dontstarve(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" @@ -525,6 +539,9 @@ elif [ "${gamename}" == "Battlefield: 1942" ]; then # Call of Duty elif [ "${gamename}" == "Call of Duty" ]; then fn_info_config_cod +# Call of Duty 2 +elif [ "${gamename}" == "Call of Duty 2" ]; then + fn_info_config_cod2 # Dont Starve Together elif [ "${engine}" == "dontstarve" ]; then fn_info_config_dontstarve diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index d5564bbe8..b5e4cb0a2 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -16,7 +16,10 @@ elif [ "${gamename}" == "BrainBread 2" ]; then glibcrequired="2.17" elif [ "${gamename}" == "Call of Duty" ]; then glibcrequired="2.1" - glibcfix="yes" + glibcfix="no" +elif [ "${gamename}" == "Call of Duty 2" ]; then + glibcrequired="2.1.3" + glibcfix="no" elif [ "${gamename}" == "Day of Infamy" ]; then glibcrequired="2.15" glibcfix="yes" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 543315458..57fcb7855 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -119,6 +119,12 @@ elif [ "${gamename}" == "Call of Duty" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Call of Duty 2" ]; then + gamedirname="CallofDuty2" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Codename CURE" ]; then gamedirname="CodenameCURE" array_configs+=( server.cfg ) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 18268fc3f..95e5cc379 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -11,6 +11,8 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_install_server_files(){ if [ "${gamename}" == "Unreal Tournament 99" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" + elif [ "${gamename}" == "Call of Duty 2" ]; then + fileurl="http://files.gameservermanagers.com/CallOfDuty2/cod2-lnxded-1.3-full.tar.bz2"; filedir="${tmpdir}"; filename="cod2-lnxded-1.3-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="078128f83d06dc3d7699428dc2870214" elif [ "${gamename}" == "Unreal Tournament 2004" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" elif [ "${gamename}" == "Unreal Tournament 3" ]; then @@ -31,7 +33,6 @@ fn_install_server_files(){ 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}" From 96a34c9b0785ea30ebdc446ffe539d175215d270 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 13 Nov 2016 00:15:25 +0000 Subject: [PATCH 148/729] Serverfiles now in order --- lgsm/functions/install_server_files.sh | 30 +++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 819fa1731..dcf167764 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -9,32 +9,32 @@ local commandaction="Install" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_install_server_files(){ - if [ "${gamename}" == "Unreal Tournament 99" ]; then + if [ "${gamename}" == "Battlefield: 1942" ]; then + fileurl="http://files.gameservermanagers.com/BattleField1942/bf1942_lnxded-1.61-hacked-to-1.612.full.tar.bz2"; filedir="${tmpdir}"; filename="bf1942_lnxded-1.61-hacked-to-1.612.full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="a86a5d3cd64ca59abcc9bb9f777c2e5d" + elif [ "${gamename}" == "Unreal Tournament 99" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" + elif [ "${gamename}" == "Call of Duty" ]; then + fileurl="http://files.gameservermanagers.com/CallOfDuty/cod-lnxded-1.5b-full.tar.bz2"; filedir="${tmpdir}"; filename="cod-lnxded-1.5-large.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="19629895a4cf6fd8f6d1ee198b5304cd" + elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then + fileurl="https://s3.amazonaws.com/linuxgsm/coduo-lnxded-1.51b-full.tar.bz2"; filedir="${tmpdir}"; filename="coduo-lnxded-1.51b-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f1804ef13036e2b4ab535db000b19e97" elif [ "${gamename}" == "Call of Duty 2" ]; then fileurl="http://files.gameservermanagers.com/CallOfDuty2/cod2-lnxded-1.3-full.tar.bz2"; filedir="${tmpdir}"; filename="cod2-lnxded-1.3-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="078128f83d06dc3d7699428dc2870214" - elif [ "${gamename}" == "Unreal Tournament 2004" ]; then - fileurl="http://files.gameservermanagers.com/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" - elif [ "${gamename}" == "Unreal Tournament 3" ]; then - fileurl="http://files.gameservermanagers.com/UnrealTournament3/UT3-linux-server-2.1.tar.bz2"; filedir="${tmpdir}"; filename="UT3-linux-server-2.1.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="2527437b46f1b47f20228d27d72395a6" - elif [ "${gamename}" == "Battlefield: 1942" ]; then - fileurl="http://files.gameservermanagers.com/BattleField1942/bf1942_lnxded-1.61-hacked-to-1.612.full.tar.bz2"; filedir="${tmpdir}"; filename="bf1942_lnxded-1.61-hacked-to-1.612.full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="a86a5d3cd64ca59abcc9bb9f777c2e5d" - elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then - fileurl="http://files.gameservermanagers.com/WolfensteinEnemyTerritory/enemy-territory.260b.tar.bz2"; filedir="${tmpdir}"; filename="enemy-territory.260b.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f833f514bfcdd46b42c111f83350c5a7" - elif [ "${gamename}" == "Unreal Tournament" ]; then - 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}" == "Call of Duty: United Offensive" ]; then - fileurl="https://s3.amazonaws.com/linuxgsm/coduo-lnxded-1.51b-full.tar.bz2"; filedir="${tmpdir}"; filename="coduo-lnxded-1.51b-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f1804ef13036e2b4ab535db000b19e97" - elif [ "${gamename}" == "Call of Duty" ]; then - fileurl="http://files.gameservermanagers.com/CallOfDuty/cod-lnxded-1.5b-full.tar.bz2"; filedir="${tmpdir}"; filename="cod-lnxded-1.5-large.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="19629895a4cf6fd8f6d1ee198b5304cd" 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" + elif [ "${gamename}" == "Unreal Tournament 2004" ]; then + fileurl="http://files.gameservermanagers.com/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" + elif [ "${gamename}" == "Unreal Tournament" ]; then + 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}" == "Unreal Tournament 3" ]; then + fileurl="http://files.gameservermanagers.com/UnrealTournament3/UT3-linux-server-2.1.tar.bz2"; filedir="${tmpdir}"; filename="UT3-linux-server-2.1.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="2527437b46f1b47f20228d27d72395a6" + elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then + fileurl="http://files.gameservermanagers.com/WolfensteinEnemyTerritory/enemy-territory.260b.tar.bz2"; filedir="${tmpdir}"; filename="enemy-territory.260b.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f833f514bfcdd46b42c111f83350c5a7" fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" From 059cac1a0f86f1a53a9d1ee4dfddad8503caa946 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 13 Nov 2016 00:18:45 +0000 Subject: [PATCH 149/729] Corrected game name --- JustCause2/jc2server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 4c89b31c1..e44781300 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -3,7 +3,7 @@ # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs # License: MIT License, Copyright (c) 2016 Daniel Gibbs -# Purpose: GAMENAME | Server Management Script +# Purpose: Just Cause 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com From efcbc84a6339602bd11b2702f346965a9d35543a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 13 Nov 2016 00:20:41 +0000 Subject: [PATCH 150/729] Updated test with new style --- tests/tests_jc2server.sh | 113 +++++++++++++++++++++++++++------------ 1 file changed, 79 insertions(+), 34 deletions(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 7a6b62b5d..47863d0dd 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -1,60 +1,90 @@ #!/bin/bash -# TravisCI Tests: Just Cause 2 -# Server Management Script +# Just Cause 2 +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: TravisCI Test: Just Cause 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + version="101716" +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -#### Variables #### +version="161030" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## + +#### Server Settings #### +# No settings available for Just Cause 2 + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="" +} + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -fn_parms(){ -parms="" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -#### Advanced Variables #### +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="261140" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="$TRAVIS_BRANCH" -# Steam -appid="261140" - -# Server Details -servicename="jc2-server" +## LinuxGSM Server Details +# Do not edit gamename="Just Cause 2" engine="avalanche" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="jc2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -63,6 +93,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./Jcmp-Server" @@ -70,24 +102,26 @@ servercfg="config.lua" servercfgdefault="config.lua" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories #gamelogdir="" # No server logs available scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -144,6 +178,17 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh From 9a93dc3d2f4bae16558b948198df0de6fadd4496 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 13 Nov 2016 00:46:06 +0000 Subject: [PATCH 152/729] Release number updated --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- 60 files changed, 60 insertions(+), 60 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 5825a9248..67607e35a 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index f2a9f2641..c2b30ab09 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index e4b4fb83b..9fd409b21 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 43212f78a..4f715a224 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 62bea603e..e55044e5d 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 548adea2a..be7aa2266 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 86c2fc9c8..b23bd5f31 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index ae19879e8..497a00cd3 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index 74aafdb55..58214c9c4 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index dd622b8ae..b9682f910 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index bca3e12a3..5c9906da3 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 5eb278771..75da8b7b8 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 8018883b9..1dded9f29 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 78345eb9c..857faf6f0 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index e6db43522..ead2232d4 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 8386384b6..abe4ab056 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index d39568a53..1aac2bb8c 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index d2be5c1be..d5c594bde 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 5b9a5c112..99493668f 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index c080c568a..088b45695 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 7dc5cc571..dc74a2534 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 1bbba189c..adeef431c 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 7dd85e2f6..bc44ae33c 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 6b0489fe6..a6ab0634e 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 43e3bf106..b9f1e2432 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 07b2c24cf..b1e2b02e6 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index d63e5a346..80fca576c 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index 6a2748478..4ba642794 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index e44781300..5bc7b3623 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -15,7 +15,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 5f0e44154..f2253d707 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 2a7a20be1..fc1278113 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 0a84f1d83..ba9da4f91 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index ab69b9010..d0f77e5cd 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index ace1dac08..7d83cf15d 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 460ce874c..5b50fdfff 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 741f37862..7e4c34514 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index d5910ab44..65e220b5f 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 1c059ed6b..e3db2a701 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index bc7767adb..32310d7f3 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 0586a2c13..10fc6066c 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index 94de84180..8bdbbeba1 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index c302f10c0..ec403b301 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 33cc3696c..95dfee65a 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 025bf348c..c62ae3144 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 8eb18e0c1..fb1b9c828 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index 0ac0ab260..6f34fadc3 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index f0b1181e9..756782b71 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index dd5e70e4e..b27081421 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 82101fefa..193efdd9a 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 5adfaa87b..e9343bd63 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 8b6994e4a..d5caad15a 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index f0bfbb8ea..d400f191f 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index bae6a0427..65acc8168 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index a7b2b6c8b..fb143b6ef 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index d011b93ad..f2383df8f 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -15,7 +15,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index c8c1f55ee..56d61b464 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index b65b633bb..a9ec44cf8 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 8787df657..6ccecea9a 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index c4a5a0db8..1364157b9 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 47863d0dd..a7886d81e 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## From 91fd6952e44770466b18beea0e04f8346f73d871 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 13 Nov 2016 00:58:59 +0000 Subject: [PATCH 153/729] fix_cod2.sh not required --- lgsm/functions/core_functions.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 765b95712..f5ba4ce9e 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -544,11 +544,6 @@ functionfile="${FUNCNAME}" fn_fetch_function } -fix_cod2.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - # Calls the global Ctrl-C trap core_trap.sh From cd6d644272c6935ed48c09a2b4a389cd7c583447 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Sun, 13 Nov 2016 16:43:22 +0100 Subject: [PATCH 154/729] Corrected name of Starbound config --- lgsm/functions/install_config.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 57fcb7855..872618c1e 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -348,7 +348,7 @@ elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then fn_set_config_vars elif [ "${gamename}" == "Starbound" ]; then gamedirname="Starbound" - array_configs+=( starbound.config ) + array_configs+=( starbound_server.config ) fn_fetch_default_config fn_default_config_remote fn_set_config_vars @@ -417,4 +417,4 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars -fi \ No newline at end of file +fi From cf1584ebe84a8ef447b91bc2731550c056e89ed4 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Sun, 13 Nov 2016 16:43:22 +0100 Subject: [PATCH 155/729] Corrected name of Starbound config --- lgsm/functions/install_config.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 57fcb7855..872618c1e 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -348,7 +348,7 @@ elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then fn_set_config_vars elif [ "${gamename}" == "Starbound" ]; then gamedirname="Starbound" - array_configs+=( starbound.config ) + array_configs+=( starbound_server.config ) fn_fetch_default_config fn_default_config_remote fn_set_config_vars @@ -417,4 +417,4 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars -fi \ No newline at end of file +fi From c6f5aed2c17f38580108d2d8c0aeb511eba87248 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 13 Nov 2016 20:55:01 +0000 Subject: [PATCH 156/729] Added config.lua for jc2 test --- tests/config.lua | 180 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 tests/config.lua diff --git a/tests/config.lua b/tests/config.lua new file mode 100644 index 000000000..ade07d0ee --- /dev/null +++ b/tests/config.lua @@ -0,0 +1,180 @@ +-- Welcome to the JC2-MP server configuration file! + +--[[ +SERVER OPTIONS + +Server-related options. +--]] +Server = +{ + -- The maximum number of players that can be on the server at any + -- given time. Make sure your connection and server can handle it! + -- Default value: 5000 + MaxPlayers = 5000, + -- Used to control what IP this server binds to. Unless you're a dedicated + -- game host, you don't need to worry about this. + -- Default value: "" + BindIP = "8.8.8.8", + -- The port the server uses. + -- Default value: 7777 + BindPort = 7777, + -- The time before a player is timed out after temporarily losing + -- connection, or crashing without properly disconnecting. + -- Default value (in milliseconds): 10000 + Timeout = 10000, + + -- The name of the server, as seen by players and the server browser. + -- Default value: "JC2-MP Server" + Name = "JC2-MP Server", + -- The server description, as seen by players and the server browser. + -- Default value: "No description available" + Description = "No description available.", + -- The server password. + -- Default value: "" + Password = "", + + -- Controls whether the server announces its presence to the master server + -- and therefore to the server browser. + -- Default value: true + Announce = true, + + -- Controls how often synchronization packets are broadcast by the server + -- in milliseconds + -- Default value (in milliseconds): 180 + SyncUpdate = 180, + + -- CAUTION: Setting this variable to true unlocks a number of potentially + -- unsafe operations, which include: + -- * Native Lua packages (.dll, .so) + -- * Execution of Lua from arbitrary paths (Access to loadfile/dofile) + -- * Unbound io functions, allowing for access to the entire file-system + -- Default value: false + IKnowWhatImDoing = false +} + +--[[ +SYNCRATE OPTIONS + +Sync rate options. These values control how often synchronization +packets are sent by the clients, in milliseconds. This lets you +control how frequent the sync comes in, which may result in a +smoother or less laggy experience +--]] +SyncRates = +{ + -- Default value (in milliseconds): 75 + Vehicle = 75, + -- Default value (in milliseconds): 120 + OnFoot = 120, + -- Default value (in milliseconds): 1000 + Passenger = 1000, + -- Default value (in milliseconds): 250 + MountedGun = 250, + -- Default value (in milliseconds): 350 + StuntPosition = 350 +} + +--[[ +STREAMER OPTIONS + +Streamer-related options. The streamer is responsible for controlling the +visibility of objects (including players and vehicles) for other players. + +What this means is that if you want to extend the distance at which objects +remain visible for players, you need to change the StreamDistance. +--]] +Streamer = +{ + -- The default distance before objects are streamed out. + -- Default value (in metres): 500 + StreamDistance = 500 +} + +--[[ +VEHICLE OPTIONS + +Vehicle-related options. +--]] +Vehicle = +{ + -- The number of seconds required for a vehicle to respawn after + -- vehicle death. + -- Default value (in seconds): 10 + -- For instant respawn: 0 + -- For no respawning: nil + DeathRespawnTime = 10, + -- Controls whether to remove the vehicle if respawning is turned off, + -- and the vehicle dies. + -- Default value: false + DeathRemove = false, + + -- The number of seconds required for a vehicle to respawn after it is + -- left unoccupied. + -- Default value (in seconds): 45 + -- For instant respawn: 0 + -- For no respawning: nil + UnoccupiedRespawnTime = 45, + -- Controls whether to remove the vehicle if respawning is turned off, + -- and the vehicle is left unoccupied. + -- Default value: false + UnoccupiedRemove = false, +} + +--[[ +PLAYER OPTIONS + +Player-related options. +--]] +Player = +{ + -- The default spawn position for players. If you do not use a script + -- to handle spawns, such as the freeroam script, then this spawn position + -- will be used. + -- Default value: Vector3( -6550, 209, -3290 ) + SpawnPosition = Vector3( -6550, 209, -3290 ) +} + +--[[ +MODULE OPTIONS + +Lua module-related options. +--]] +Module = +{ + --[[ + To prevent a large number of errors building up, modules are automatically + unloaded after a certain number of errors in a given timespan. Each error + adds to a counter, which is decremented if there has not been an error + in a certain amount of time. + + This allows you to adjust the number of errors before the module is unloaded, + as well as the time since the last error for the counter to be decremented. + --]] + + -- The maximum number of errors before a module is unloaded. + -- Default value: 5 + MaxErrorCount = 5, + -- The time from the last error necessary for the error counter to be decremented. + -- Default value (in milliseconds): 500 + ErrorDecrementTime = 500 +} + +--[[ +WORLD OPTIONS + +Default settings for worlds. +--]] +World = +{ + -- The default time of day at world creation. + -- Default value (in hours): 0.0 + Time = 0.0, + + -- The increment added to the time of day each second. + -- Default value (in minutes): 1 + TimeStep = 1, + + -- The default weather severity at world creation. + -- Default value: 0 + WeatherSeverity = 0 +} \ No newline at end of file From 043b44d315333c296cdad2a6ec562be8a8b231eb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 13 Nov 2016 21:13:12 +0000 Subject: [PATCH 157/729] Added bypass for travis tests --- lgsm/functions/check_ip.sh | 2 +- tests/tests_jc2server.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_ip.sh b/lgsm/functions/check_ip.sh index c51015299..8141c534e 100644 --- a/lgsm/functions/check_ip.sh +++ b/lgsm/functions/check_ip.sh @@ -8,7 +8,7 @@ local commandname="CHECK" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -if [ "${gamename}" != "TeamSpeak 3" ] && [ "${gamename}" != "Mumble" ]; then +if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${travistest}" != "1" ]; then if [ ! -f "/bin/ip" ]; then ipcommand="/sbin/ip" else diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index a7886d81e..0563e0556 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -8,7 +8,7 @@ # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com -version="101716" +travistest=1 # Debugging if [ -f ".dev-debug" ]; then From 8e7574a0393bb3716e56f1fa17a54cbf7068a7e8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 13 Nov 2016 21:46:16 +0000 Subject: [PATCH 158/729] Removed this config as not required --- tests/config.lua | 180 ----------------------------------------------- 1 file changed, 180 deletions(-) delete mode 100644 tests/config.lua diff --git a/tests/config.lua b/tests/config.lua deleted file mode 100644 index ade07d0ee..000000000 --- a/tests/config.lua +++ /dev/null @@ -1,180 +0,0 @@ --- Welcome to the JC2-MP server configuration file! - ---[[ -SERVER OPTIONS - -Server-related options. ---]] -Server = -{ - -- The maximum number of players that can be on the server at any - -- given time. Make sure your connection and server can handle it! - -- Default value: 5000 - MaxPlayers = 5000, - -- Used to control what IP this server binds to. Unless you're a dedicated - -- game host, you don't need to worry about this. - -- Default value: "" - BindIP = "8.8.8.8", - -- The port the server uses. - -- Default value: 7777 - BindPort = 7777, - -- The time before a player is timed out after temporarily losing - -- connection, or crashing without properly disconnecting. - -- Default value (in milliseconds): 10000 - Timeout = 10000, - - -- The name of the server, as seen by players and the server browser. - -- Default value: "JC2-MP Server" - Name = "JC2-MP Server", - -- The server description, as seen by players and the server browser. - -- Default value: "No description available" - Description = "No description available.", - -- The server password. - -- Default value: "" - Password = "", - - -- Controls whether the server announces its presence to the master server - -- and therefore to the server browser. - -- Default value: true - Announce = true, - - -- Controls how often synchronization packets are broadcast by the server - -- in milliseconds - -- Default value (in milliseconds): 180 - SyncUpdate = 180, - - -- CAUTION: Setting this variable to true unlocks a number of potentially - -- unsafe operations, which include: - -- * Native Lua packages (.dll, .so) - -- * Execution of Lua from arbitrary paths (Access to loadfile/dofile) - -- * Unbound io functions, allowing for access to the entire file-system - -- Default value: false - IKnowWhatImDoing = false -} - ---[[ -SYNCRATE OPTIONS - -Sync rate options. These values control how often synchronization -packets are sent by the clients, in milliseconds. This lets you -control how frequent the sync comes in, which may result in a -smoother or less laggy experience ---]] -SyncRates = -{ - -- Default value (in milliseconds): 75 - Vehicle = 75, - -- Default value (in milliseconds): 120 - OnFoot = 120, - -- Default value (in milliseconds): 1000 - Passenger = 1000, - -- Default value (in milliseconds): 250 - MountedGun = 250, - -- Default value (in milliseconds): 350 - StuntPosition = 350 -} - ---[[ -STREAMER OPTIONS - -Streamer-related options. The streamer is responsible for controlling the -visibility of objects (including players and vehicles) for other players. - -What this means is that if you want to extend the distance at which objects -remain visible for players, you need to change the StreamDistance. ---]] -Streamer = -{ - -- The default distance before objects are streamed out. - -- Default value (in metres): 500 - StreamDistance = 500 -} - ---[[ -VEHICLE OPTIONS - -Vehicle-related options. ---]] -Vehicle = -{ - -- The number of seconds required for a vehicle to respawn after - -- vehicle death. - -- Default value (in seconds): 10 - -- For instant respawn: 0 - -- For no respawning: nil - DeathRespawnTime = 10, - -- Controls whether to remove the vehicle if respawning is turned off, - -- and the vehicle dies. - -- Default value: false - DeathRemove = false, - - -- The number of seconds required for a vehicle to respawn after it is - -- left unoccupied. - -- Default value (in seconds): 45 - -- For instant respawn: 0 - -- For no respawning: nil - UnoccupiedRespawnTime = 45, - -- Controls whether to remove the vehicle if respawning is turned off, - -- and the vehicle is left unoccupied. - -- Default value: false - UnoccupiedRemove = false, -} - ---[[ -PLAYER OPTIONS - -Player-related options. ---]] -Player = -{ - -- The default spawn position for players. If you do not use a script - -- to handle spawns, such as the freeroam script, then this spawn position - -- will be used. - -- Default value: Vector3( -6550, 209, -3290 ) - SpawnPosition = Vector3( -6550, 209, -3290 ) -} - ---[[ -MODULE OPTIONS - -Lua module-related options. ---]] -Module = -{ - --[[ - To prevent a large number of errors building up, modules are automatically - unloaded after a certain number of errors in a given timespan. Each error - adds to a counter, which is decremented if there has not been an error - in a certain amount of time. - - This allows you to adjust the number of errors before the module is unloaded, - as well as the time since the last error for the counter to be decremented. - --]] - - -- The maximum number of errors before a module is unloaded. - -- Default value: 5 - MaxErrorCount = 5, - -- The time from the last error necessary for the error counter to be decremented. - -- Default value (in milliseconds): 500 - ErrorDecrementTime = 500 -} - ---[[ -WORLD OPTIONS - -Default settings for worlds. ---]] -World = -{ - -- The default time of day at world creation. - -- Default value (in hours): 0.0 - Time = 0.0, - - -- The increment added to the time of day each second. - -- Default value (in minutes): 1 - TimeStep = 1, - - -- The default weather severity at world creation. - -- Default value: 0 - WeatherSeverity = 0 -} \ No newline at end of file From f0bd1bfc5c02353abe7600132ec5839bea30bc53 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 13 Nov 2016 21:51:45 +0000 Subject: [PATCH 159/729] Release/161113 (#1185) * Fixes #991 (#1165) * stbuf will no longer be used on x64 #991 * Added BF1942 ncurses requirement to CentOS * adding Call of Duty (#1118) * adding Call of Duty 2 (#1127) * Improvements up command_backup.sh added backup trap and improved lockfile support changes to the messages displayed on screen renamed some functions other misc changes --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 185 +++++++++++++++++++++++ CallOfDuty2/cod2server | 186 ++++++++++++++++++++++++ CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 4 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- lgsm/functions/check_deps.sh | 11 +- lgsm/functions/check_ip.sh | 2 +- lgsm/functions/command_details.sh | 21 +++ lgsm/functions/command_install.sh | 2 +- lgsm/functions/command_monitor.sh | 2 +- lgsm/functions/core_getopt.sh | 2 +- lgsm/functions/fix.sh | 2 + lgsm/functions/fix_glibc.sh | 2 +- lgsm/functions/gsquery.py | 4 +- lgsm/functions/info_config.sh | 34 ++++- lgsm/functions/info_distro.sh | 6 +- lgsm/functions/info_glibc.sh | 6 + lgsm/functions/install_config.sh | 16 +- lgsm/functions/install_server_files.sh | 12 +- lgsm/functions/update_steamcmd.sh | 5 +- tests/tests_jc2server.sh | 115 ++++++++++----- 75 files changed, 619 insertions(+), 110 deletions(-) create mode 100755 CallOfDuty/codserver create mode 100755 CallOfDuty2/cod2server diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 5825a9248..67607e35a 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index f2a9f2641..c2b30ab09 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index e4b4fb83b..9fd409b21 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 43212f78a..4f715a224 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 62bea603e..e55044e5d 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 548adea2a..be7aa2266 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 86c2fc9c8..b23bd5f31 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver new file mode 100755 index 000000000..497a00cd3 --- /dev/null +++ b/CallOfDuty/codserver @@ -0,0 +1,185 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Call of Duty | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="161113" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +defaultmap="mp_neuville" +maxclients="20" +port="28960" +ip="0.0.0.0" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +exec ${servercfg} +map ${defaultmap}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### 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" + +## LinuxGSM Server Details +# Do not edit +gamename="Call of Duty" +engine="idtech3" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cod-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./cod_lnxded" +servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" +servercfgdir="${systemdir}/main" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +gamelogdir="${filesdir}/Logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh \ No newline at end of file diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server new file mode 100755 index 000000000..58214c9c4 --- /dev/null +++ b/CallOfDuty2/cod2server @@ -0,0 +1,186 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Call of Duty 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="161113" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters + +defaultmap="mp_leningrad" +maxclients="20" +port="28960" +ip="0.0.0.0" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +exec ${servercfg} +map ${defaultmap}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### 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" + +## LinuxGSM Server Details +# Do not edit +gamename="Call of Duty 2" +engine="iw2.0" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cod2-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./cod2_lnxded" +servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" +servercfgdir="${systemdir}/main" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +gamelogdir="${filesdir}/Logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh \ No newline at end of file diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index dd622b8ae..b9682f910 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index bca3e12a3..5c9906da3 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 5eb278771..75da8b7b8 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 8018883b9..1dded9f29 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 78345eb9c..857faf6f0 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index e6db43522..ead2232d4 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 8386384b6..abe4ab056 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index d39568a53..1aac2bb8c 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index d2be5c1be..d5c594bde 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 5b9a5c112..99493668f 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index c080c568a..088b45695 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 7dc5cc571..dc74a2534 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 1bbba189c..adeef431c 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 7dd85e2f6..bc44ae33c 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 6b0489fe6..a6ab0634e 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 43e3bf106..b9f1e2432 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 07b2c24cf..b1e2b02e6 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index d63e5a346..80fca576c 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index 6a2748478..4ba642794 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 4c89b31c1..5bc7b3623 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -3,7 +3,7 @@ # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs # License: MIT License, Copyright (c) 2016 Daniel Gibbs -# Purpose: GAMENAME | Server Management Script +# Purpose: Just Cause 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com @@ -15,7 +15,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 5f0e44154..f2253d707 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 2a7a20be1..fc1278113 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 0a84f1d83..ba9da4f91 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index ab69b9010..d0f77e5cd 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index ace1dac08..7d83cf15d 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 460ce874c..5b50fdfff 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 741f37862..7e4c34514 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index d5910ab44..65e220b5f 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 1c059ed6b..e3db2a701 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index bc7767adb..32310d7f3 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 0586a2c13..10fc6066c 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index 94de84180..8bdbbeba1 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index c302f10c0..ec403b301 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 33cc3696c..95dfee65a 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 025bf348c..c62ae3144 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 8eb18e0c1..fb1b9c828 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index 870f42d04..6300440a0 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index f0b1181e9..756782b71 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index dd5e70e4e..b27081421 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 82101fefa..193efdd9a 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 5adfaa87b..e9343bd63 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 8b6994e4a..d5caad15a 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index f0bfbb8ea..d400f191f 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index bae6a0427..65acc8168 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index a7b2b6c8b..fb143b6ef 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index d011b93ad..f2383df8f 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -15,7 +15,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index c8c1f55ee..56d61b464 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index b65b633bb..a9ec44cf8 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 8787df657..6ccecea9a 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index c4a5a0db8..1364157b9 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161030" +version="161113" ########################## ######## Settings ######## diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index eb9d21f03..62d9ed6f6 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -185,9 +185,12 @@ if [ -n "$(command -v dpkg-query)" ]; then # Brainbread 2 and Don't Starve Together elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then array_deps_required+=( libcurl4-gnutls-dev:i386 ) - # Battlefield: 1942 requies ncurses + # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then array_deps_required+=( libncurses5:i386 ) + # Call of Duty + elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]; then + array_deps_required+=( libstdc++5:i386 ) # Project Zomboid and Minecraft elif [ "${engine}" == "projectzomboid" ]||[ "${engine}" == "lwjgl2" ]; then javaversion=$(java -version 2>&1 | grep "version") @@ -254,6 +257,12 @@ elif [ -n "$(command -v yum)" ]; then # Brainbread 2 and Don't Starve Together elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then array_deps_required+=( libcurl.i686 ) + # Battlefield: 1942 + elif [ "${gamename}" == "Battlefield: 1942" ]; then + array_deps_required+=( ncurses-libs.i686 ) + # Call of Duty + elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]; then + array_deps_required+=( compat-libstdc++-33.i686 ) # Project Zomboid and Minecraft elif [ "${engine}" == "projectzomboid" ]||[ "${engine}" == "lwjgl2" ]; then javaversion=$(java -version 2>&1 | grep "version") diff --git a/lgsm/functions/check_ip.sh b/lgsm/functions/check_ip.sh index c51015299..8141c534e 100644 --- a/lgsm/functions/check_ip.sh +++ b/lgsm/functions/check_ip.sh @@ -8,7 +8,7 @@ local commandname="CHECK" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -if [ "${gamename}" != "TeamSpeak 3" ] && [ "${gamename}" != "Mumble" ]; then +if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${travistest}" != "1" ]; then if [ ! -f "/bin/ip" ]; then ipcommand="/sbin/ip" else diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 5743e17b0..4ce097e1a 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -341,6 +341,15 @@ fn_details_avalanche(){ } | column -s $'\t' -t } +fn_details_cod(){ + echo -e "netstat -atunp | grep cod_lnxded" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + fn_details_dontstarve(){ echo -e "netstat -atunp | grep dontstarve" echo -e "" @@ -643,6 +652,14 @@ fn_details_ark(){ } | column -s $'\t' -t } +fn_details_cod2(){ + echo -e "netstat -atunp | grep cod2_lnxded" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} # Run checks and gathers details to display. @@ -698,6 +715,10 @@ fn_display_details() { fn_details_sdtd elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then fn_details_ark + elif [ "${gamename}" == "Call of Duty" ]; then + fn_details_cod + elif [ "${gamename}" == "Call of Duty 2" ]; then + fn_details_cod2 elif [ "${gamename}" == "Hurtworld" ]; then fn_details_hurtworld elif [ "${gamename}" == "QuakeWorld" ]; then diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index d2feadb05..e36ac5967 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}" == "Battlefield: 1942" ]||[ "${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 +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${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 3c6d7fad4..2e5de3402 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 quake refractor realvirtuality source spark unity3d unreal unreal2 ) + local allowed_engines_array=( avalanche goldsource idtech3 idtech3_ql iw2.0 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/core_getopt.sh b/lgsm/functions/core_getopt.sh index d07f82d04..ec1e45713 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}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${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/fix.sh b/lgsm/functions/fix.sh index 5671ed627..a57e179c4 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -37,6 +37,8 @@ if [ "${function_selfname}" != "command_install.sh" ]; then if [ "${gamename}" == "ARMA 3" ]; then fix_arma3.sh + elif [ "${gamename}" == "Call of Duty 2" ]; then + fix_cod2.sh elif [ "${gamename}" == "Counter-Strike: Global Offensive" ]; then fix_csgo.sh elif [ "${gamename}" == "Don't Starve Together" ]; then diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 6408e3339..5abc18e9a 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -40,4 +40,4 @@ do fi done -export LD_LIBRARY_PATH=:"${libdir}" \ No newline at end of file +export LD_LIBRARY_PATH=:"${libdir}" diff --git a/lgsm/functions/gsquery.py b/lgsm/functions/gsquery.py index cd46717cd..e45d891cb 100644 --- a/lgsm/functions/gsquery.py +++ b/lgsm/functions/gsquery.py @@ -26,6 +26,8 @@ class GameServer: 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 == 'iw2.0': + 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': @@ -113,7 +115,7 @@ if __name__ == '__main__': action='store', dest='engine', default=False, - help='Engine type: avalanche, goldsource, idtech2, idtech3, realvirtuality, quake, quakelive, refractor, spark, source, unity3d, unreal, unreal2.' + help='Engine type: avalanche, goldsource, idtech2, idtech3, iw2.0, 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 7982ebd69..198ffa656 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -66,6 +66,33 @@ fn_info_config_bf1942(){ fi } +fn_info_config_cod(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + rconpassword="${unavailable}" + else + servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) + rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + + # Not Set + servername=${servername:-"NOT SET"} + rconpassword=${rconpassword=:-"NOT SET"} + fi +} + +fn_info_config_cod2(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + rconpassword="${unavailable}" + else + servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) + rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + + # Not Set + servername=${servername:-"NOT SET"} + rconpassword=${rconpassword=:-"NOT SET"} + fi +} fn_info_config_dontstarve(){ if [ ! -f "${servercfgfullpath}" ]; then @@ -103,7 +130,6 @@ fn_info_config_minecraft(){ gamemode="${unavailable}" gameworld="${unavailable}" else - servername=$(grep "motd" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/motd//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconpassword=$(grep "rcon.password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/rcon.password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconport=$(grep "rcon.port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') @@ -510,6 +536,12 @@ if [ "${engine}" == "avalanche" ]; then # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then fn_info_config_bf1942 +# Call of Duty +elif [ "${gamename}" == "Call of Duty" ]; then + fn_info_config_cod +# Call of Duty 2 +elif [ "${gamename}" == "Call of Duty 2" ]; then + fn_info_config_cod2 # Dont Starve Together elif [ "${engine}" == "dontstarve" ]; then fn_info_config_dontstarve diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index cc4037d72..16973cfc1 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -108,12 +108,16 @@ fi ## Backup info if [ -d "${backupdir}" ]; then - # Ued space in backups dir. + # Used 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 set to 0 by default + backupcount=0 + # If there are backups in backup dir. if [ $(find "${backupdir}" -name "*.tar.gz" | wc -l) -ne "0" ]; then # number of backups. diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 73ef6251d..b5e4cb0a2 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -14,6 +14,12 @@ elif [ "${gamename}" == "Blade Symphony" ]; then glibcfix="yes" elif [ "${gamename}" == "BrainBread 2" ]; then glibcrequired="2.17" +elif [ "${gamename}" == "Call of Duty" ]; then + glibcrequired="2.1" + glibcfix="no" +elif [ "${gamename}" == "Call of Duty 2" ]; then + glibcrequired="2.1.3" + glibcfix="no" elif [ "${gamename}" == "Day of Infamy" ]; then glibcrequired="2.15" glibcfix="yes" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index bdd7cb23e..872618c1e 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -113,6 +113,18 @@ elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Call of Duty" ]; then + gamedirname="CallOfDuty" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars +elif [ "${gamename}" == "Call of Duty 2" ]; then + gamedirname="CallofDuty2" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Codename CURE" ]; then gamedirname="CodenameCURE" array_configs+=( server.cfg ) @@ -336,7 +348,7 @@ elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then fn_set_config_vars elif [ "${gamename}" == "Starbound" ]; then gamedirname="Starbound" - array_configs+=( starbound.config ) + array_configs+=( starbound_server.config ) fn_fetch_default_config fn_default_config_remote fn_set_config_vars @@ -405,4 +417,4 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars -fi \ No newline at end of file +fi diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 7f4072a81..95e5cc379 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -11,6 +11,8 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_install_server_files(){ if [ "${gamename}" == "Unreal Tournament 99" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" + elif [ "${gamename}" == "Call of Duty 2" ]; then + fileurl="http://files.gameservermanagers.com/CallOfDuty2/cod2-lnxded-1.3-full.tar.bz2"; filedir="${tmpdir}"; filename="cod2-lnxded-1.3-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="078128f83d06dc3d7699428dc2870214" elif [ "${gamename}" == "Unreal Tournament 2004" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" elif [ "${gamename}" == "Unreal Tournament 3" ]; then @@ -23,13 +25,14 @@ 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}" == "Call of Duty" ]; then + fileurl="http://files.gameservermanagers.com/CallOfDuty/cod-lnxded-1.5b-full.tar.bz2"; filedir="${tmpdir}"; filename="cod-lnxded-1.5-large.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="19629895a4cf6fd8f6d1ee198b5304cd" 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}" @@ -61,8 +64,9 @@ fn_install_server_files_steamcmd(){ check_steamcmd.sh fi - # Detects if unbuffer command is available. - if [ $(command -v stdbuf) ]; then + # Detects if unbuffer command is available for 32 bit distributions only. + info_distro.sh + if [ $(command -v stdbuf) ]&&[ "${arch}" != "x86_64" ]; then unbuffer="stdbuf -i0 -o0 -e0" fi @@ -134,4 +138,4 @@ if [ -z "${autoinstall}" ]; then * ) echo "Please answer yes or no.";; esac done -fi \ No newline at end of file +fi diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 37b48781d..167daf5fb 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -19,8 +19,9 @@ fn_update_steamcmd_dl(){ cd "${rootdir}/steamcmd" - # Detects if unbuffer command is available. - if [ $(command -v stdbuf) ]; then + # Detects if unbuffer command is available for 32 bit distributions only. + info_distro.sh + if [ $(command -v stdbuf) ]&&[ "${arch}" != "x86_64" ]; then unbuffer="stdbuf -i0 -o0 -e0" fi diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 7a6b62b5d..0563e0556 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -1,60 +1,90 @@ #!/bin/bash -# TravisCI Tests: Just Cause 2 -# Server Management Script +# Just Cause 2 +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: TravisCI Test: Just Cause 2 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com -version="101716" +travistest=1 + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -#### Variables #### +version="161113" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## + +#### Server Settings #### +# No settings available for Just Cause 2 + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="" +} + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" - -# Pushbullet -# https://www.pushbullet.com/#settings +emailfrom="" +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Steam login -steamuser="anonymous" -steampass="" - -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -fn_parms(){ -parms="" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -#### Advanced Variables #### +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="261140" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="$TRAVIS_BRANCH" -# Steam -appid="261140" - -# Server Details -servicename="jc2-server" +## LinuxGSM Server Details +# Do not edit gamename="Just Cause 2" engine="avalanche" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="jc2-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -63,6 +93,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./Jcmp-Server" @@ -70,24 +102,26 @@ servercfg="config.lua" servercfgdefault="config.lua" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories #gamelogdir="" # No server logs available scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -consolelogging="on" - scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -144,6 +178,17 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh From 9bf74b80c266c92110029a1aa6333acec1580299 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Wed, 9 Nov 2016 01:34:54 +0100 Subject: [PATCH 160/729] executable hotfix for Rust | fixes #1171 --- Rust/rustserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 6f34fadc3..6300440a0 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -116,7 +116,7 @@ filesdir="${rootdir}/serverfiles" ## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" -executable="./RustDedicated" +executable="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`dirname $0`/RustDedicated_Data/Plugins/x86_64 ./RustDedicated" serveridentitydir="${systemdir}/server/${servicename}" servercfg="server.cfg" servercfgdefault="server.cfg" @@ -214,4 +214,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From abcb34ac535fcfc3d0b64786257694884108930d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 7 Nov 2016 19:34:42 +0100 Subject: [PATCH 161/729] hotfix for ts3 server pass --- lgsm/functions/command_start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 57dcbfa60..30bbfccc8 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -37,7 +37,7 @@ fn_start_teamspeak3(){ date > "${rootdir}/${lockselfname}" cd "${executabledir}" if [ "${ts3serverpass}" == "1" ];then - ./ts3server_startscript.sh start serveradmin_password="${newpassword}" inifile="${servercfgfullpath}" + ./ts3server_startscript.sh start serveradmin_password="${newpassword}" inifile="${servercfgfullpath}" > /dev/null 2>&1 else ./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1 fi From 2ce6e91e44daee17e18f49dec05888e83ff96801 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 7 Nov 2016 19:33:50 +0100 Subject: [PATCH 162/729] hotfix for ts3 server pass Issue: other functions were triggering core_exit.sh Fix: bypass them bonus: better output Sample output: http://hastebin.com/quxulezila.rb --- lgsm/functions/command_ts3_server_pass.sh | 26 ++++++++++++----------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index 89c3cd036..1a9896889 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -29,22 +29,17 @@ fn_serveradmin_password_prompt(){ done fn_script_log_info "Initiating ${gamename} ServerAdmin password change" read -p "Enter new password : " newpassword - } +} - fn_serveradmin_password_set(){ - fn_print_info_nl "Applying new password" - fn_script_log_info "Applying new password" +fn_serveradmin_password_set(){ + fn_print_info_nl "Starting server with new password..." + fn_script_log_info "Starting server with new password" sleep 1 - # Stop any running server - command_stop.sh # Start server in "new password mode" ts3serverpass="1" - fn_print_info_nl "Starting server with new password" + exitbypass="1" command_start.sh - # Stop server in "new password mode" - command_stop.sh - ts3serverpass="0" fn_print_ok_nl "Password applied" fn_script_log_pass "New ServerAdmin password applied" sleep 1 @@ -55,9 +50,16 @@ check.sh fn_serveradmin_password_prompt check_status.sh if [ "${status}" != "0" ]; then + # Stop any running server + exitbypass="1" + command_stop.sh fn_serveradmin_password_set - command_start.sh + ts3serverpass="0" + fn_print_info_nl "Restarting server normally" + fn_script_log_info "Restarting server normally" + command_restart.sh else fn_serveradmin_password_set + command_stop.sh fi -core_exit.sh \ No newline at end of file +core_exit.sh From 904cd4cbec73a3ed32b9fd3ad6855dac0718acfa Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 18 Nov 2016 12:41:44 +0100 Subject: [PATCH 163/729] Switched config branch and removed token message after install --- lgsm/functions/install_complete.sh | 6 ------ lgsm/functions/install_config.sh | 5 +++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/install_complete.sh b/lgsm/functions/install_complete.sh index af522d2ee..4a38d79b4 100644 --- a/lgsm/functions/install_complete.sh +++ b/lgsm/functions/install_complete.sh @@ -8,12 +8,6 @@ local commandname="INSTALL" local commandaction="Install" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -if [ "${gamename}" == "Don't Starve Together" ]; then - echo "" - echo "An Authentication Token is required to run this server!" - echo "Follow the instructions in this link to obtain this key" - echo " https://gameservermanagers.com/dst-auth-token" -fi echo "=================================" echo "Install Complete!" fn_script_log_info "Install Complete!" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index a77ef5d2d..9b0e5fc21 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -10,11 +10,11 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_fetch_default_config(){ mkdir -pv "${lgsmdir}/default-configs" - githuburl="https://github.com/GameServerManagers/Game-Server-Configs/dstserver" + githuburl="https://github.com/GameServerManagers/Game-Server-Configs/master" for config in "${array_configs[@]}" do - fileurl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/dstserver/${gamedirname}/${config}"; filedir="${lgsmdir}/default-configs"; filename="${config}"; executecmd="noexecute" run="norun"; force="noforce" + fileurl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master/${gamedirname}/${config}"; filedir="${lgsmdir}/default-configs"; filename="${config}"; executecmd="noexecute" run="norun"; force="noforce" fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" done } @@ -65,6 +65,7 @@ fn_default_config_remote(){ sleep 1 } +# this should be somehow standardized fn_dstconfig(){ ## cluster.ini # this config shouldn't be overridden From 2ef211d0bc5c5b34b2f484fcb3a65757ac1488ae Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 18 Nov 2016 13:05:18 +0100 Subject: [PATCH 164/729] Check variables first & remove lockfile earlier --- lgsm/functions/command_backup.sh | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 34d014c42..8e18a619b 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -127,18 +127,20 @@ fn_backup_compression(){ fn_print_ok_nl "Completed: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')" fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')" fi + # Remove lock file + rm -f "${tmpdir}/.backup.lock" } # Clear old backups according to maxbackups and maxbackupdays variables fn_backup_prune(){ - # How many backups there are - info_distro.sh - # How many backups exceed maxbackups - backupquotadiff=$((backupcount-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 + # Clear if backup variables are set + if [ -n "${maxbackups}" ]&&[ -n "${maxbackupdays}" ]; then + # How many backups there are + info_distro.sh + # How many backups exceed maxbackups + backupquotadiff=$((backupcount-maxbackups)) + # How many backups exceed maxbackupdays + backupsoudatedcount=$(find "${backupdir}"/ -type f -name "*.tar.gz" -mtime +"${maxbackupdays}"|wc -l) # If anything can be cleared if [ "${backupquotadiff}" -gt "0" ]||[ "${backupsoudatedcount}" -gt "0" ]; then fn_print_dots "Pruning" @@ -195,8 +197,4 @@ fn_backup_dir fn_backup_compression fn_backup_prune fn_backup_start_server - -# Remove lock file -rm -f "${tmpdir}/.backup.lock" - core_exit.sh From 4092d492784f182b8850ef94e7f8eed3c816d775 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 18 Nov 2016 16:22:41 +0100 Subject: [PATCH 165/729] Fixed Project Zomboid config handling - Corrected default config names - Use service name for config and "server name" - Added fn_check_cfgdir call to create non-existing config directory --- ProjectZomboid/pzserver | 8 ++++---- lgsm/functions/install_config.sh | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 10fc6066c..6fbc80297 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## @@ -27,7 +27,7 @@ adminpassword="CHANGE_ME" ip="0.0.0.0" fn_parms(){ -parms="-ip ${ip} -adminpassword \"${adminpassword}\"" +parms="-ip ${ip} -adminpassword \"${adminpassword}\" -servername ${servicename}" } #### LinuxGSM Settings #### @@ -96,8 +96,8 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" executable="./start-server.sh" -servercfg="server.ini" -servercfgdefault="server.cfg" +servercfg="${servicename}.ini" +servercfgdefault="server.ini" servercfgdir="${HOME}/Zomboid/Server" servercfgfullpath="${servercfgdir}/${servercfg}" diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 872618c1e..30292a276 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -298,6 +298,7 @@ elif [ "${gamename}" == "Pirates, Vikings, and Knights II" ]; then fn_set_config_vars elif [ "${gamename}" == "Project Zomboid" ]; then gamedirname="ProjectZomboid" + fn_check_cfgdir array_configs+=( server.ini ) fn_fetch_default_config fn_default_config_remote From 2d653e765354b2198ceae9ef41180d756eee7e3a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 16:16:13 +0000 Subject: [PATCH 166/729] Version to remain the same with hotfixes --- ProjectZomboid/pzserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 6fbc80297..92f7170a6 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161113" ########################## ######## Settings ######## From 0f18a405edf84658044cd0b3b045b9ca1e8bf84c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 17:00:57 +0000 Subject: [PATCH 167/729] Removed Info about channeltags All info about the channeltag var is now on the wiki. It is now the standard method to have info relating to vars in the wiki rather than in the script. --- 7DaysToDie/sdtdserver | 3 --- ARKSurvivalEvolved/arkserver | 3 --- Arma3/arma3server | 3 --- Battlefield1942/bf1942server | 3 --- BlackMesa/bmdmserver | 3 --- BladeSymphony/bsserver | 3 --- BrainBread2/bb2server | 3 --- CallOfDuty/codserver | 3 --- CallOfDuty2/cod2server | 1 + CodenameCURE/ccserver | 3 --- CounterStrike/csserver | 3 --- CounterStrikeConditionZero/csczserver | 3 --- CounterStrikeGlobalOffensive/csgoserver | 3 --- CounterStrikeSource/cssserver | 3 --- DayOfDefeat/dodserver | 3 --- DayOfDefeatSource/dodsserver | 3 --- DayOfInfamy/doiserver | 3 --- DeathmatchClassic/dmcserver | 3 --- DontStarveTogether/dstserver | 3 --- DoubleActionBoogaloo/dabserver | 3 --- EmpiresMod/emserver | 3 --- FistfulOfFrags/fofserver | 3 --- GarrysMod/gmodserver | 3 --- GoldenEyeSource/gesserver | 3 --- HalfLife2Deathmatch/hl2dmserver | 3 --- HalfLifeDeathmatch/hldmserver | 3 --- HalfLifeDeathmatchSource/hldmsserver | 3 --- Hurtworld/hwserver | 3 --- Insurgency/insserver | 3 --- JustCause2/jc2server | 3 --- KillingFloor/kfserver | 3 --- Left4Dead/l4dserver | 3 --- Left4Dead2/l4d2server | 3 --- Minecraft/mcserver | 3 --- Mumble/mumbleserver | 3 --- NS2Combat/ns2cserver | 3 --- NaturalSelection2/ns2server | 3 --- NoMoreRoomInHell/nmrihserver | 3 --- OpposingForce/opforserver | 3 --- PiratesVikingandKnightsII/pvkiiserver | 3 --- ProjectZomboid/pzserver | 3 --- Quake2/q2server | 3 --- Quake3/q3server | 3 --- QuakeLive/qlserver | 3 --- QuakeWorld/qwserver | 3 --- RedOrchestra/roserver | 3 --- Ricochet/ricochetserver | 3 --- Rust/rustserver | 3 --- SeriousSam3BFE/ss3sserver | 3 --- Starbound/sbserver | 3 --- SvenCoop/svenserver | 3 --- TeamFortress2/tf2server | 3 --- TeamFortressClassic/tfcserver | 3 --- TeamSpeak3/ts3server | 3 --- Teeworlds/twserver | 3 --- Terraria/terrariaserver | 3 --- UnrealTournament/utserver | 3 --- UnrealTournament2004/ut2k4server | 3 --- UnrealTournament3/ut3server | 3 --- UnrealTournament99/ut99server | 3 --- WolfensteinEnemyTerritory/wetserver | 3 --- 61 files changed, 1 insertion(+), 180 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 5b835fd49..db4f71d04 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 66fc67313..0f55c9182 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -48,9 +48,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Arma3/arma3server b/Arma3/arma3server index 9532b6e65..ce61fb0a2 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -62,9 +62,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 46157e9d1..a42a8424d 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -38,9 +38,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index d7d687882..323ee56c0 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -52,9 +52,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 73c3e2c27..f3ec8e51c 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -51,9 +51,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index c594a5916..c7537e483 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -55,9 +55,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index c16f06bbe..162c7e7cf 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -44,9 +44,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index 58214c9c4..c032e42a0 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -45,6 +45,7 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup maxbackups="4" diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index b36a06d86..5f2524e53 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -45,9 +45,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 6006389be..0686a5e7c 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index a3a7ea5db..2f966f0bd 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 7bc7b2bf7..144a06d9a 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -70,9 +70,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index dc36768b9..93d2cdcdf 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -53,9 +53,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 51c0faedc..7346295dc 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -47,9 +47,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index fea6dbf5c..402dbc983 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -47,9 +47,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 6b35f577e..00db47d6e 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -49,9 +49,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 793f9e1e2..bb41ab37b 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index b62687a0d..bdba108c0 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -45,9 +45,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index e0d98c589..078811193 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -47,9 +47,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index abcd6aaf3..14c7003cc 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -31,9 +31,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 0eaec5b02..6b5ff8e24 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -47,9 +47,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index dc72af144..06a1fe896 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -62,9 +62,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 1a992a17a..c118daa39 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -47,9 +47,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 192823d5c..637c84f2a 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -47,9 +47,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 4a3054161..efabe345a 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 55419cbdc..ad9538e42 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -47,9 +47,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 186520301..1aa96c147 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -59,9 +59,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Insurgency/insserver b/Insurgency/insserver index 9f27f05b2..4476c6333 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -49,9 +49,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 42c9174d8..8eeb52ef0 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -41,9 +41,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index f4e1bd9b7..5b3176db3 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -49,9 +49,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index c20702057..a232ec03d 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 43c90bd78..3e29ecc02 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Minecraft/mcserver b/Minecraft/mcserver index ca10d60bf..45bd0da07 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -41,9 +41,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 70d80981f..f4ac59740 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -40,9 +40,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 20315afcc..b839d1039 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -58,9 +58,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 5a360acc3..d672cdb1d 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -58,9 +58,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 1b2d1518b..5937fc1db 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -52,9 +52,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 797b6bbd4..00e7ee919 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index b5eebef48..81f73ac9d 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -47,9 +47,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index a6cea666c..b6c18b7ab 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -41,9 +41,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Quake2/q2server b/Quake2/q2server index 345d955cf..571a6d9e1 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -42,9 +42,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup diff --git a/Quake3/q3server b/Quake3/q3server index 1f019b8d3..84e86056a 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -43,9 +43,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index c3d86ada1..332cf1e87 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -50,9 +50,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index b6f7d27a9..5e1bb60de 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -24,9 +24,6 @@ email="email@example.com" # https://www.pushbullet.com/#settings pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" # Start Variables diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 972efd81a..f8d8f88e5 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -47,9 +47,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 22949248b..f1ceeac69 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -70,9 +70,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Rust/rustserver b/Rust/rustserver index 7b276f9df..c4c1362fd 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -62,9 +62,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 9b96dc7f1..ce7d58658 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -42,9 +42,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Starbound/sbserver b/Starbound/sbserver index fc66dce94..eeecfb816 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 429555ef4..ea2558ef3 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 43b6080d9..440757827 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -50,9 +50,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 0da836111..a9679165e 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index b74afd002..bed364a8f 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -34,9 +34,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 3f8e1291c..61f3b9ba6 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 9bbe56477..539e734ff 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -46,9 +46,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index 54b67e329..06fa13dea 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -48,9 +48,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index dd4c24931..e7cd59dbf 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -43,9 +43,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 5f5dd2c8b..f72a0e452 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -54,9 +54,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 41f9425f4..3e3ea17e4 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -43,9 +43,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 91d2da13b..00b74c98b 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -42,9 +42,6 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" -# Pushbullet Channel | Do not set unless the channel exists on the -# account associated with the access token. Set without using the '#' -# E.g: "thisisachanneltag" would push to #thisisachanneltag channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update From bdc36f544398cb3db56d51abfc3970b1f90a4439 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 18:45:18 +0000 Subject: [PATCH 168/729] added missing return --- 7DaysToDie/sdtdserver | 1 + ARKSurvivalEvolved/arkserver | 1 + Arma3/arma3server | 1 + Battlefield1942/bf1942server | 1 + BlackMesa/bmdmserver | 1 + BladeSymphony/bsserver | 1 + BrainBread2/bb2server | 1 + CallOfDuty/codserver | 1 + CallOfDuty2/cod2server | 1 + CodenameCURE/ccserver | 1 + CounterStrike/csserver | 1 + CounterStrikeConditionZero/csczserver | 1 + CounterStrikeGlobalOffensive/csgoserver | 1 + CounterStrikeSource/cssserver | 1 + DayOfDefeat/dodserver | 1 + DayOfDefeatSource/dodsserver | 1 + DayOfInfamy/doiserver | 1 + DeathmatchClassic/dmcserver | 1 + DontStarveTogether/dstserver | 1 + DoubleActionBoogaloo/dabserver | 1 + EmpiresMod/emserver | 1 + FistfulOfFrags/fofserver | 1 + GarrysMod/gmodserver | 1 + GoldenEyeSource/gesserver | 1 + HalfLife2Deathmatch/hl2dmserver | 1 + HalfLifeDeathmatch/hldmserver | 1 + HalfLifeDeathmatchSource/hldmsserver | 1 + Hurtworld/hwserver | 1 + Insurgency/insserver | 1 + JustCause2/jc2server | 1 + KillingFloor/kfserver | 1 + Left4Dead/l4dserver | 1 + Left4Dead2/l4d2server | 1 + Minecraft/mcserver | 1 + Mumble/mumbleserver | 1 + NS2Combat/ns2cserver | 1 + NaturalSelection2/ns2server | 1 + NoMoreRoomInHell/nmrihserver | 1 + OpposingForce/opforserver | 1 + PiratesVikingandKnightsII/pvkiiserver | 1 + ProjectZomboid/pzserver | 1 + Quake2/q2server | 1 + Quake3/q3server | 1 + QuakeLive/qlserver | 1 + RedOrchestra/roserver | 1 + Ricochet/ricochetserver | 1 + Rust/rustserver | 1 + SeriousSam3BFE/ss3sserver | 1 + Starbound/sbserver | 1 + SvenCoop/svenserver | 1 + TeamFortress2/tf2server | 1 + TeamFortressClassic/tfcserver | 1 + TeamSpeak3/ts3server | 1 + Teeworlds/twserver | 1 + Terraria/terrariaserver | 1 + UnrealTournament/utserver | 1 + UnrealTournament2004/ut2k4server | 1 + UnrealTournament3/ut3server | 1 + UnrealTournament99/ut99server | 1 + WolfensteinEnemyTerritory/wetserver | 1 + tests/tests_jc2server.sh | 1 + 61 files changed, 61 insertions(+) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index db4f71d04..336b9c226 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -43,6 +43,7 @@ parms="-logfile ${gamelogdir}/output_log__`date +%Y-%m-%d__%H-%M-%S`.txt -quit - emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 0f55c9182..22a3c1c99 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -45,6 +45,7 @@ parms="\"TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=$ emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Arma3/arma3server b/Arma3/arma3server index ce61fb0a2..2f8fc8eca 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -59,6 +59,7 @@ parms="-netlog -ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${serv emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index a42a8424d..14b25ef21 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -35,6 +35,7 @@ parms="+hostServer 1 +dedicated 1" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 323ee56c0..988a2710b 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -49,6 +49,7 @@ parms="-game bms -strictportbind -ip ${ip} -port ${port} +clientport ${clientpor emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index f3ec8e51c..d4a74617d 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -48,6 +48,7 @@ parms="-autoupdate -strictportbind -ip ${ip} -port ${port} +clientport ${clientp emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index c7537e483..8c28607da 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -52,6 +52,7 @@ parms="-game brainbread2 -insecure -strictportbind -ip ${ip} -port ${port} +clie emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index 162c7e7cf..4116d1ede 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -41,6 +41,7 @@ parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set n emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index c032e42a0..bda00bd1d 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -42,6 +42,7 @@ parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set n emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 5f2524e53..140a8fcdf 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -42,6 +42,7 @@ parms="-game cure -insecure -strictportbind -ip ${ip} -port ${port} +clientport emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 0686a5e7c..580e8f030 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -43,6 +43,7 @@ parms="-game cstrike -strictportbind +ip ${ip} -port ${port} +clientport ${clien emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 2f966f0bd..191333698 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -43,6 +43,7 @@ parms="-game czero -strictportbind +ip ${ip} -port ${port} +clientport ${clientp emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 144a06d9a..0c8667d52 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -67,6 +67,7 @@ parms="-game csgo -usercon -strictportbind -ip ${ip} -port ${port} +clientport $ emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 93d2cdcdf..764cdc23a 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -50,6 +50,7 @@ parms="-game cstrike -strictportbind -ip ${ip} -port ${port} +clientport ${clien emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 7346295dc..70bc02e9f 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -44,6 +44,7 @@ parms="-game dod -strictportbind +ip ${ip} -port ${port} +clientport ${clientpor emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 402dbc983..031c6a9d1 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -44,6 +44,7 @@ parms="-game dod -strictportbind -ip ${ip} -port ${port} +clientport ${clientpor emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 00db47d6e..11108c8d6 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -46,6 +46,7 @@ parms="-game doi -strictportbind -ip ${ip} -port ${port} +clientport ${clientpor emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index bb41ab37b..a59e3a576 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -43,6 +43,7 @@ parms="-game dmc -strictportbind +ip ${ip} -port ${port} +clientport ${clientpor emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index bdba108c0..d0d331e7c 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -42,6 +42,7 @@ parms="-console -cluster MyDediServer -shard Master" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 078811193..622fbb8ef 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -44,6 +44,7 @@ parms="-strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_por emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 14c7003cc..caea83cbf 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -28,6 +28,7 @@ parms="-game empires -strictportbind -ip ${ip} -port ${port} +clientport ${clien emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 6b5ff8e24..3920a12ae 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -44,6 +44,7 @@ parms="-game fof -strictportbind -ip ${ip} -port ${port} +clientport ${clientpor emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 06a1fe896..520a5c44c 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -59,6 +59,7 @@ parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickr emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index c118daa39..7f7a41958 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -44,6 +44,7 @@ parms="-game gesource -strictportbind -ip ${ip} -port ${port} +clientport ${clie emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 637c84f2a..524026ac9 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -44,6 +44,7 @@ parms="-game hl2mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientp emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index efabe345a..41598e749 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -43,6 +43,7 @@ parms="-game valve -strictportbind +ip ${ip} -port ${port} +clientport ${clientp emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index ad9538e42..bd6040c13 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -44,6 +44,7 @@ parms="-game hl1mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientp emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 1aa96c147..5297a7b86 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -56,6 +56,7 @@ parms="-batchmode -nographics -exec \"host ${port} ${map} ${loadsave};queryport emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Insurgency/insserver b/Insurgency/insserver index 4476c6333..9566859ad 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -46,6 +46,7 @@ parms="-game insurgency -strictportbind -ip ${ip} -port ${port} +clientport ${cl emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 8eeb52ef0..12ec80d2a 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -38,6 +38,7 @@ parms="" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 5b3176db3..9add98f45 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -46,6 +46,7 @@ parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index a232ec03d..9bc46b0ae 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -43,6 +43,7 @@ parms="-game left4dead -strictportbind -ip ${ip} -port ${port} +clientport ${cli emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 3e29ecc02..4519dadc7 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -43,6 +43,7 @@ parms="-game left4dead2 -strictportbind -ip ${ip} -port ${port} +clientport ${cl emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 45bd0da07..20a0504e9 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -38,6 +38,7 @@ parms="nogui" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index f4ac59740..369379b6d 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -37,6 +37,7 @@ parms="-fg -ini ${servercfgfullpath}" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index b839d1039..026fe02d7 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -55,6 +55,7 @@ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index d672cdb1d..0e2d61348 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -55,6 +55,7 @@ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 5937fc1db..16cc645df 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -49,6 +49,7 @@ parms="-game nmrih -insecure -strictportbind -ip ${ip} -port ${port} +clientport emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 00e7ee919..c710ff015 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -43,6 +43,7 @@ parms="-game gearbox -strictportbind +ip ${ip} -port ${port} +clientport ${clien emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 81f73ac9d..ac18433b3 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -44,6 +44,7 @@ parms="-game pvkii -strictportbind -ip ${ip} -port ${port} +clientport ${clientp emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index b6c18b7ab..5ea2c1e75 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -38,6 +38,7 @@ parms="-ip ${ip} -adminpassword \"${adminpassword}\" -servername ${servicename}" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Quake2/q2server b/Quake2/q2server index 571a6d9e1..719cd54ce 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -39,6 +39,7 @@ parms="+set dedicated 1 +set ip ${ip} +set port ${port} +exec ${servercfg} +set emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Quake3/q3server b/Quake3/q3server index 84e86056a..772c2e640 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -40,6 +40,7 @@ parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set c emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 332cf1e87..1e61e4481 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -47,6 +47,7 @@ parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${port} +set fs_homepat emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index f8d8f88e5..470cf4a75 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -44,6 +44,7 @@ parms="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir in emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index f1ceeac69..c223f9e23 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -67,6 +67,7 @@ parms="" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Rust/rustserver b/Rust/rustserver index c4c1362fd..fb5b3ee83 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -59,6 +59,7 @@ fi emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index ce7d58658..b39d37ee8 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -39,6 +39,7 @@ parms="+ip ${ip} +logfile ${gamelog} +exec ${servercfgfullpath}" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Starbound/sbserver b/Starbound/sbserver index eeecfb816..8d1044f62 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -43,6 +43,7 @@ parms="" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index ea2558ef3..5c3c38ce9 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -43,6 +43,7 @@ parms="-game svencoop -strictportbind +ip ${ip} -port ${port} +clientport ${clie emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 440757827..37685fb22 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -47,6 +47,7 @@ parms="-game tf -strictportbind -ip ${ip} -port ${port} +clientport ${clientport emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index a9679165e..9c67ebfed 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -43,6 +43,7 @@ parms="-game tfc -strictportbind _ip ${ip} -port ${port} +clientport ${clientpor emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index bed364a8f..5a877436a 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -31,6 +31,7 @@ version="161113" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 61f3b9ba6..870eddadf 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -43,6 +43,7 @@ parms="-f ${servercfgfullpath}" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 539e734ff..43096a179 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -43,6 +43,7 @@ parms="-config ${servercfgfullpath}" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index 06fa13dea..aa558d79a 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -45,6 +45,7 @@ parms="UnrealTournament ${defaultmap}?Game=${gametype}?TimeLimit=${timelimit} -p emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index e7cd59dbf..67c1a004c 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -40,6 +40,7 @@ parms="server ${defaultmap}?game=XGame.xDeathMatch -nohomedir ini=${servercfg} l emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index f72a0e452..8c628597e 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -51,6 +51,7 @@ parms="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 3e3ea17e4..a401ed99c 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -40,6 +40,7 @@ parms="server ${defaultmap}.unr ini=${servercfgfullpath}" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 00b74c98b..9eed5f28d 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -39,6 +39,7 @@ fn_parms(){ emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 0563e0556..27703ae21 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -40,6 +40,7 @@ parms="" emailalert="off" email="email@example.com" emailfrom="" + # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" From 739d7a1b6fd2ff9bb491d864847bf2c8630961db Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 21:04:47 +0000 Subject: [PATCH 169/729] Updated to newer design --- CallOfDutyUnitedOffensive/coduoserver | 107 ++++++++++++++++++-------- 1 file changed, 75 insertions(+), 32 deletions(-) diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index 9e0c737a2..1e4b442b3 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -1,87 +1,120 @@ #!/bin/bash -# Call of Duty: United Offensive -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Call of Duty: United Offensive | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="210516" - -#### Variables #### +version="161113" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## -# Email -emailalert="off" -email="email@example.com" +#### Server Settings #### -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters -# Start Variables defaultmap="mp_cassino" maxclients="20" -ip="0.0.0.0" port="28960" +ip="0.0.0.0" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +exec ${servercfg} +map ${defaultmap}" } +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" + +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + #### Advanced Variables #### -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" -githubbranch="coduo" +githubbranch="master" -# Server Details -servicename="coduo-server" +## LinuxGSM Server Details +# Do not edit gamename="Call of Duty: United Offensive" engine="idtech3" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="coduo-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./coduo_lnxded" servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" servercfgdir="${systemdir}/uo" servercfgfullpath="${servercfgdir}/${servercfg}" -servercfgdefault="${servercfgdir}/lgsm-default.cfg" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -138,8 +171,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file From f372f035949195b6194710ce0b9122f5d7a3d21b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 21:05:13 +0000 Subject: [PATCH 170/729] if in wrong place --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- EmpiresMod/emserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- 61 files changed, 61 insertions(+), 61 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 336b9c226..8944f0b7a 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 22a3c1c99..acae6a9aa 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -193,7 +193,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Arma3/arma3server b/Arma3/arma3server index 2f8fc8eca..9ba55c30e 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -210,7 +210,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 14b25ef21..881cb6ff7 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -176,7 +176,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 988a2710b..6653e3394 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -198,7 +198,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index d4a74617d..1492de09d 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -188,7 +188,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 8c28607da..e31424efd 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -200,7 +200,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index 4116d1ede..560472103 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -178,7 +178,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index bda00bd1d..52c33d911 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -179,7 +179,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 140a8fcdf..476fe80c5 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -190,7 +190,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 580e8f030..d39ba7819 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 191333698..b4482973f 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 0c8667d52..0fc0f0f56 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -215,7 +215,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 764cdc23a..c4c031c16 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -198,7 +198,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 70bc02e9f..72ce552c6 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -193,7 +193,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 031c6a9d1..1be712c83 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 11108c8d6..ce39f0a7f 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -195,7 +195,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index a59e3a576..15ebb70c3 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index d0d331e7c..ab1d0e40c 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -191,7 +191,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 622fbb8ef..601cddc93 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index caea83cbf..7fe58d3b5 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -176,7 +176,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 3920a12ae..abb4b6b7e 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 520a5c44c..e05186b37 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -208,7 +208,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 7f7a41958..c1a65552d 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 524026ac9..6cd830924 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 41598e749..e67f8dd6e 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -191,7 +191,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index bd6040c13..db0016b92 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -195,7 +195,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 5297a7b86..ed4ac0878 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -205,7 +205,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Insurgency/insserver b/Insurgency/insserver index 9566859ad..bd8b553d9 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -197,7 +197,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 12ec80d2a..c7ea26708 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -186,7 +186,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 9add98f45..a170f0cf3 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -197,7 +197,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 9bc46b0ae..56bb57ec4 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -191,7 +191,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 4519dadc7..db32143fe 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -191,7 +191,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 20a0504e9..6218d1e08 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -177,7 +177,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 369379b6d..db0100c62 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -176,7 +176,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 026fe02d7..c6753dd35 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -202,7 +202,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 0e2d61348..ad800284c 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -202,7 +202,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 16cc645df..f1409e2cb 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -197,7 +197,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index c710ff015..28c89ee24 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index ac18433b3..e190af363 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 5ea2c1e75..48e097ec3 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -186,7 +186,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Quake2/q2server b/Quake2/q2server index 719cd54ce..fc1fb8e24 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -176,7 +176,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Quake3/q3server b/Quake3/q3server index 772c2e640..f443719b9 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -177,7 +177,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 1e61e4481..a587c9b00 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -196,7 +196,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 470cf4a75..3e2fa3808 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -199,7 +199,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index c223f9e23..a10ac28a2 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -216,7 +216,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Rust/rustserver b/Rust/rustserver index fb5b3ee83..abc02bf57 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -210,7 +210,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index b39d37ee8..e5d133436 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -189,7 +189,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Starbound/sbserver b/Starbound/sbserver index 8d1044f62..823599272 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -191,7 +191,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 5c3c38ce9..f610ea9ce 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -191,7 +191,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 37685fb22..33014d51b 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -195,7 +195,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 9c67ebfed..c8539a012 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 5a877436a..9eece04e7 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -168,7 +168,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 870eddadf..34bddb158 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -192,7 +192,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 43096a179..2b4f1ceb9 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -191,7 +191,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index aa558d79a..823592246 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -181,7 +181,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 67c1a004c..8d2d37bd2 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -180,7 +180,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 8c628597e..3c0d7a2b0 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -190,7 +190,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index a401ed99c..f2895362b 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -178,7 +178,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 9eed5f28d..3a3db6ce6 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -179,7 +179,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 27703ae21..3a65cef3c 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -187,7 +187,7 @@ if [ "$(whoami)" = "root" ]; then else core_functions.sh check_root.sh - fi + fi fi core_dl.sh From c79b8232ad48d65bbc416263564a3d7030a16ae2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 21:28:17 +0000 Subject: [PATCH 171/729] Removed config --- CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg diff --git a/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg b/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg deleted file mode 100644 index 9768294eb..000000000 --- a/CallOfDutyUnitedOffensive/cfg/lgsm-default.cfg +++ /dev/null @@ -1,4 +0,0 @@ -set sv_hostname "" -set scr_motd "LGSM CODUO Server" -set rconpassword "" - From 238ad0a94cc85adb9aa547c75bc16441bf6f7f98 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 21:36:12 +0000 Subject: [PATCH 172/729] Added COSUO config --- lgsm/functions/install_config.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 30292a276..4e617ab62 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -119,6 +119,12 @@ elif [ "${gamename}" == "Call of Duty" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then + gamedirname="CallOfDutyUnitedOffensive" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Call of Duty 2" ]; then gamedirname="CallofDuty2" array_configs+=( server.cfg ) From c07f5b2b3283fe506957d92d020770a8f7f1e033 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 21:42:34 +0000 Subject: [PATCH 173/729] COD:UO server added --- lgsm/functions/info_glibc.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index b5e4cb0a2..0a4dd888a 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -20,6 +20,9 @@ elif [ "${gamename}" == "Call of Duty" ]; then elif [ "${gamename}" == "Call of Duty 2" ]; then glibcrequired="2.1.3" glibcfix="no" +elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then + glibcrequired="2.1" + glibcfix="no" elif [ "${gamename}" == "Day of Infamy" ]; then glibcrequired="2.15" glibcfix="yes" From 3a49c8ea41649c61cdcbc51f7569b065a4eb1885 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 21:45:05 +0000 Subject: [PATCH 174/729] Added COD:UF --- lgsm/functions/core_getopt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index ec1e45713..2178c1acb 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}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${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 From a629527bae98dde500835c28e43547075413a0d4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 22:34:05 +0000 Subject: [PATCH 175/729] Added CODUO --- lgsm/functions/command_details.sh | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 4ce097e1a..598451dc5 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -350,6 +350,24 @@ fn_details_cod(){ } | column -s $'\t' -t } +fn_details_coduo(){ + echo -e "netstat -atunp | grep coduo_lnxded" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + +fn_details_cod2(){ + echo -e "netstat -atunp | grep cod2_lnxded" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + fn_details_dontstarve(){ echo -e "netstat -atunp | grep dontstarve" echo -e "" @@ -652,15 +670,6 @@ fn_details_ark(){ } | column -s $'\t' -t } -fn_details_cod2(){ - echo -e "netstat -atunp | grep cod2_lnxded" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - # Run checks and gathers details to display. fn_display_details() { @@ -717,6 +726,8 @@ fn_display_details() { fn_details_ark elif [ "${gamename}" == "Call of Duty" ]; then fn_details_cod + elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then + fn_details_coduo elif [ "${gamename}" == "Call of Duty 2" ]; then fn_details_cod2 elif [ "${gamename}" == "Hurtworld" ]; then From 129692811403f56f89ac80e5db14e94efd8be14f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 22:43:45 +0000 Subject: [PATCH 176/729] Added CODUO --- lgsm/functions/info_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 198ffa656..318bf9da0 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -537,7 +537,7 @@ if [ "${engine}" == "avalanche" ]; then elif [ "${gamename}" == "Battlefield: 1942" ]; then fn_info_config_bf1942 # Call of Duty -elif [ "${gamename}" == "Call of Duty" ]; then +elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]; then fn_info_config_cod # Call of Duty 2 elif [ "${gamename}" == "Call of Duty 2" ]; then From 32fa578b40fa10d67de8482f805156b76863cf07 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 23:10:08 +0000 Subject: [PATCH 177/729] Updated location of COD:UO --- lgsm/functions/install_server_files.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index dcf167764..2e6834e42 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -16,7 +16,7 @@ fn_install_server_files(){ elif [ "${gamename}" == "Call of Duty" ]; then fileurl="http://files.gameservermanagers.com/CallOfDuty/cod-lnxded-1.5b-full.tar.bz2"; filedir="${tmpdir}"; filename="cod-lnxded-1.5-large.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="19629895a4cf6fd8f6d1ee198b5304cd" elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then - fileurl="https://s3.amazonaws.com/linuxgsm/coduo-lnxded-1.51b-full.tar.bz2"; filedir="${tmpdir}"; filename="coduo-lnxded-1.51b-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f1804ef13036e2b4ab535db000b19e97" + fileurl="http://files.gameservermanagers.com/CallOfDutyUnitedOffensive/coduo-lnxded-1.51b-full.tar.bz2"; filedir="${tmpdir}"; filename="coduo-lnxded-1.51b-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f1804ef13036e2b4ab535db000b19e97" elif [ "${gamename}" == "Call of Duty 2" ]; then fileurl="http://files.gameservermanagers.com/CallOfDuty2/cod2-lnxded-1.3-full.tar.bz2"; filedir="${tmpdir}"; filename="cod2-lnxded-1.3-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="078128f83d06dc3d7699428dc2870214" elif [ "${gamename}" == "GoldenEye: Source" ]; then From f16890a6fce8703159695abfdb545779f9396066 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 23:14:00 +0000 Subject: [PATCH 178/729] Moved UT99 --- lgsm/functions/install_server_files.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 2e6834e42..e7345cd8e 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -11,8 +11,6 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_install_server_files(){ if [ "${gamename}" == "Battlefield: 1942" ]; then fileurl="http://files.gameservermanagers.com/BattleField1942/bf1942_lnxded-1.61-hacked-to-1.612.full.tar.bz2"; filedir="${tmpdir}"; filename="bf1942_lnxded-1.61-hacked-to-1.612.full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="a86a5d3cd64ca59abcc9bb9f777c2e5d" - elif [ "${gamename}" == "Unreal Tournament 99" ]; then - fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" elif [ "${gamename}" == "Call of Duty" ]; then fileurl="http://files.gameservermanagers.com/CallOfDuty/cod-lnxded-1.5b-full.tar.bz2"; filedir="${tmpdir}"; filename="cod-lnxded-1.5-large.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="19629895a4cf6fd8f6d1ee198b5304cd" elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then @@ -29,6 +27,8 @@ fn_install_server_files(){ 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" elif [ "${gamename}" == "Unreal Tournament 2004" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut2004-server-3339-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54" + elif [ "${gamename}" == "Unreal Tournament 99" ]; then + fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" elif [ "${gamename}" == "Unreal Tournament" ]; then 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}" == "Unreal Tournament 3" ]; then From c465ec30fb54535de6499e7df1e483a953d7af8f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Nov 2016 23:30:19 +0000 Subject: [PATCH 179/729] Updated version number --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CallOfDutyUnitedOffensive/coduoserver | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 3 +-- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 3 +-- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- 61 files changed, 61 insertions(+), 63 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 8944f0b7a..0c532d2e5 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index acae6a9aa..aa562c209 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index 9ba55c30e..f5a1c7830 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 881cb6ff7..52eca3409 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 6653e3394..e59419347 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 1492de09d..89423115b 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index e31424efd..932600773 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index 560472103..795f89b83 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index 52c33d911..885175339 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index 1e4b442b3..95675a10f 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 476fe80c5..00767735f 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index d39ba7819..1acc5c203 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index b4482973f..d478e5130 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 0fc0f0f56..6e06cce57 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index c4c031c16..5748f9482 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 72ce552c6..b8d5fd24c 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 1be712c83..feae13543 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index ce39f0a7f..3059345ab 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 15ebb70c3..38487c7fc 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index ab1d0e40c..28a104219 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 601cddc93..8466f6d5d 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index abb4b6b7e..5be1b822a 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index e05186b37..ea7e16c0a 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index c1a65552d..7eb70c8ba 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 6cd830924..d2e98e034 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index e67f8dd6e..455bd016c 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index db0016b92..e5e992ef7 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index ed4ac0878..81e085dcd 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index bd8b553d9..89589bdbb 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index c7ea26708..5ee07555e 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -1,5 +1,4 @@ #!/bin/bash -# Just Cause 2 # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs # License: MIT License, Copyright (c) 2016 Daniel Gibbs @@ -15,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index a170f0cf3..6ff0300c1 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 56bb57ec4..c72e1c6ec 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index db32143fe..03f71e71e 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 6218d1e08..eaac52215 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index db0100c62..6e830badb 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index c6753dd35..77688302f 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index ad800284c..bbb60dc34 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index f1409e2cb..2c4e37ffe 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 28c89ee24..7b3cc6ef6 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index e190af363..4861430fe 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 48e097ec3..782a2118c 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index fc1fb8e24..3a0723a1a 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index f443719b9..445875a85 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index a587c9b00..19fb451fa 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 3e2fa3808..97534b981 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index a10ac28a2..419bc04c6 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index abc02bf57..3a19bb140 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index e5d133436..bf5b8b3d9 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index 823599272..ef4f73ef9 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index f610ea9ce..c6fecf4ba 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 33014d51b..2d9a3da3c 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index c8539a012..9b80dca60 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 9eece04e7..10e3344ec 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 34bddb158..2db116724 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 2b4f1ceb9..bcc9a270e 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index 823592246..e40cba5cb 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -1,5 +1,4 @@ #!/bin/bash -# Unreal Tournament # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs # License: MIT License, Copyright (c) 2016 Daniel Gibbs @@ -15,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 8d2d37bd2..bfbce6d08 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 3c0d7a2b0..3a70643ee 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index f2895362b..c08403f97 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 3a3db6ce6..ff33e2647 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 3a65cef3c..d141d58c7 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161113" +version="161118" ########################## ######## Settings ######## From 56286fd617697ebfa2c504087ae5fc201afe3d8c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 19 Nov 2016 22:37:43 +0100 Subject: [PATCH 180/729] Rust fix --- lgsm/functions/fix.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index 5671ed627..85a65a814 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -45,6 +45,8 @@ if [ "${function_selfname}" != "command_install.sh" ]; then fix_ges.sh elif [ "${gamename}" == "Insurgency" ]; then fix_ins.sh + elif [ "${gamename}" == "Rust" ]; then + fix_rust.sh fi fi From bffd43bae2ec295fd11017316e113ad400fa1234 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 19 Nov 2016 22:37:51 +0100 Subject: [PATCH 181/729] Create fix_rust.sh --- lgsm/functions/fix_rust.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 lgsm/functions/fix_rust.sh diff --git a/lgsm/functions/fix_rust.sh b/lgsm/functions/fix_rust.sh new file mode 100644 index 000000000..fce1640bb --- /dev/null +++ b/lgsm/functions/fix_rust.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# LGSM fix_rust.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +# Description: Resolves startup issue with Rust + +local commandname="FIX" +local commandaction="Fix" + +# Fixes: ./srcds_linux: error while loading shared libraries: libtier0.so: cannot open shared object file: No such file or directory. +export LD_LIBRARY_PATH="${systemdir}/RustDedicated_Data/Plugins/x86_64" From 092f741ee2ef9e97f189ba8aca1afe5f1e80714b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 19 Nov 2016 22:38:25 +0100 Subject: [PATCH 182/729] Rust fix moves out --- Rust/rustserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index 3a19bb140..6e153a9a9 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -118,7 +118,7 @@ filesdir="${rootdir}/serverfiles" ## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" -executable="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`dirname $0`/RustDedicated_Data/Plugins/x86_64 ./RustDedicated" +executable="./RustDedicated" serveridentitydir="${systemdir}/server/${servicename}" servercfg="server.cfg" servercfgdefault="server.cfg" From 54162196af1feb9a7ba2da2261ed4cecaabd9a99 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 19 Nov 2016 22:44:12 +0100 Subject: [PATCH 183/729] added fix_rust.sh --- lgsm/functions/core_functions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index f5ba4ce9e..b70cdeaee 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -362,6 +362,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +fix_rust.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + # Info info_config.sh(){ From 73a3132a937beed1aad34fc213db1138a0b36968 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 19 Nov 2016 22:50:27 +0100 Subject: [PATCH 184/729] better comments --- lgsm/functions/fix_rust.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/fix_rust.sh b/lgsm/functions/fix_rust.sh index fce1640bb..ec0b125d4 100644 --- a/lgsm/functions/fix_rust.sh +++ b/lgsm/functions/fix_rust.sh @@ -7,5 +7,5 @@ local commandname="FIX" local commandaction="Fix" -# Fixes: ./srcds_linux: error while loading shared libraries: libtier0.so: cannot open shared object file: No such file or directory. +# Fixes: [Raknet] Server Shutting Down (Shutting Down) export LD_LIBRARY_PATH="${systemdir}/RustDedicated_Data/Plugins/x86_64" From 62b7f98807346439ec0c99a399e8c11065fae2d2 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Sun, 20 Nov 2016 01:14:07 +0100 Subject: [PATCH 185/729] Standardized DST config function partly and cleaned up dstserver script --- DontStarveTogether/dstserver | 7 ++----- lgsm/functions/install_config.sh | 29 +++++++++++------------------ 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 859dbbe8f..af9f2595a 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161111" +version="161120" ########################## ######## Settings ######## @@ -22,9 +22,7 @@ version="161111" #### Server Settings #### -## Installation Variables -# Visit the following link for more information: -# https://github.com/GameServerManagers/LinuxGSM/wiki/Don't-Starve-Together +## Installation Variables | https://github.com/GameServerManagers/LinuxGSM/wiki/Don't-Starve-Together sharding="false" master="true" shard="Master" @@ -44,7 +42,6 @@ confdir="DoNotStarveTogether" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ parms="-bind_ip ${ip} -port ${port} -steam_master_server_port ${steammasterserverport} -steam_authentication_port ${steamauthenticationport} -persistent_storage_root ${persistentstorageroot} -conf_dir ${confdir} -cluster ${cluster} -shard ${shard}" -# -console -cluster MyDediServer -shard Master } #### LinuxGSM Settings #### diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 9b0e5fc21..1a9bb69b3 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -55,9 +55,10 @@ fn_default_config_remote(){ fn_script_log_info "copying ${servercfg} config file." if [ "${config}" == "${servercfgdefault}" ]; then cp -v "${lgsmdir}/default-configs/${config}" "${servercfgfullpath}" - elif [ "${config}" == "${networkcfgdefault}" ]; then - # ARMA 3 + elif [ "${gamename}" == "ARMA 3" ]&&[ "${config}" == "${networkcfgdefault}" ]; then cp -v "${lgsmdir}/default-configs/${config}" "${networkcfgfullpath}" + elif [ "${gamename}" == "Don't Starve Together" ]&&[ "${config}" == "${clustercfgdefault}" ]; then + cp -nv "${lgsmdir}/default-configs/${clustercfgdefault}" "${clustercfgfullpath}" else cp -v "${lgsmdir}/default-configs/${config}" "${servercfgdir}/${config}" fi @@ -65,15 +66,10 @@ fn_default_config_remote(){ sleep 1 } -# this should be somehow standardized -fn_dstconfig(){ +# Changes some variables within the default Don't Starve Together configs +fn_set_dst_config_vars(){ ## cluster.ini - # this config shouldn't be overridden - if [ ! -s "${clustercfgfullpath}" ]; then - echo "copying ${clustercfg} config file." - fn_script_log_info "copying ${clustercfg} config file." - cp -v "${lgsmdir}/default-configs/${clustercfgdefault}" "${clustercfgfullpath}" - sleep 1 + if grep -Fq "SERVERNAME" "${clustercfgfullpath}"; then echo "changing server name." fn_script_log_info "changing server name." sed -i "s/SERVERNAME/LinuxGSM/g" "${clustercfgfullpath}" @@ -88,15 +84,11 @@ fn_dstconfig(){ sed -i "s/CLUSTERKEY/${randomkey}/g" "${clustercfgfullpath}" sleep 1 else - echo "${clustercfg} already exists." - fn_script_log_info "${clustercfg} already exists." + echo "${clustercfg} is already configured." + fn_script_log_info "${clustercfg} is already configured." fi ## server.ini - echo "copying ${servercfg} config file." - fn_script_log_info "copying ${servercfg} config file." - cp -v "${lgsmdir}/default-configs/${servercfgdefault}" "${servercfgfullpath}" - sleep 1 # removing unnecessary options (dependent on sharding & shard type) if [ "${sharding}" == "false" ]; then sed -i "s/ISMASTER//g" "${servercfgfullpath}" @@ -104,7 +96,7 @@ fn_dstconfig(){ elif [ "${master}" == "true" ]; then sed -i "/SHARDNAME/d" "${servercfgfullpath}" fi - # configure settings + echo "changing shard name." fn_script_log_info "changing shard name." sed -i "s/SHARDNAME/${shard}/g" "${servercfgfullpath}" @@ -237,7 +229,8 @@ elif [ "${gamename}" == "Don't Starve Together" ]; then fn_check_cfgdir array_configs+=( cluster.ini server.ini ) fn_fetch_default_config - fn_dstconfig + fn_default_config_remote + fn_set_dst_config_vars elif [ "${gamename}" == "Double Action: Boogaloo" ]; then gamedirname="DoubleActionBoogaloo" array_configs+=( server.cfg ) From 4e694069954c67218c3674113f153ac81c3b47e5 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Sun, 20 Nov 2016 11:57:02 +0100 Subject: [PATCH 186/729] Display correct config name when copying --- lgsm/functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 1a9bb69b3..16b2882ee 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -51,7 +51,7 @@ fn_default_config_remote(){ for config in "${array_configs[@]}" do # every config is copied - echo "copying ${servercfg} config file." + echo "copying ${config} config file." fn_script_log_info "copying ${servercfg} config file." if [ "${config}" == "${servercfgdefault}" ]; then cp -v "${lgsmdir}/default-configs/${config}" "${servercfgfullpath}" From 9823aed3dfce3d87991ff70b88fafd8a3c5fb257 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Sun, 20 Nov 2016 23:48:09 +0100 Subject: [PATCH 187/729] Move parameter variables to configs Setting variables in configs is preferred. --- DontStarveTogether/dstserver | 10 ++-------- lgsm/functions/info_config.sh | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index af9f2595a..c89ad92f6 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -29,19 +29,13 @@ shard="Master" cluster="Cluster_1" cave="false" -## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters -ip="0.0.0.0" -port="11000" -steamauthenticationport="8768" -steammasterserverport="27018" - # Edit with care persistentstorageroot="${HOME}/.klei" confdir="DoNotStarveTogether" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ -parms="-bind_ip ${ip} -port ${port} -steam_master_server_port ${steammasterserverport} -steam_authentication_port ${steamauthenticationport} -persistent_storage_root ${persistentstorageroot} -conf_dir ${confdir} -cluster ${cluster} -shard ${shard}" +parms="-persistent_storage_root ${persistentstorageroot} -conf_dir ${confdir} -cluster ${cluster} -shard ${shard}" } #### LinuxGSM Settings #### @@ -91,7 +85,7 @@ gamename="Don't Starve Together" engine="dontstarve" ## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers -servicename="dst-server" +servicename="dst-server-${shard}" #### Directories #### # Edit with care diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 99e2038fa..3bd3ebd04 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -95,6 +95,10 @@ fn_info_config_dontstarve(){ gamemode=$(grep "game_mode" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_mode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') tickrate=$(grep "tick_rate" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') masterport=$(grep "master_port" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + + ip=$(grep "bind_ip" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bind_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + ipsetinconfig=1 + ipinconfigvar="bind_ip" # Not Set servername=${servername:-"NOT SET"} @@ -104,6 +108,21 @@ fn_info_config_dontstarve(){ tickrate=${tickrate:-"0"} masterport=${masterport:-"0"} fi + + if [ ! -f "${servercfgfullpath}" ]; then + port="${zero}" + steamauthenticationport="${zero}" + steammasterserverport="${zero}" + else + port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + steamauthenticationport=$(grep "authentication_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + steammasterserverport=$(grep "master_server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + + # Not Set + port=${port:-"0"} + steamauthenticationport=${steamauthenticationport:-"0"} + steammasterserverport=${steammasterserverport:-"0"} + fi } fn_info_config_minecraft(){ From 6c43ad882f71e5181904c2b976ca283b4535b6ef Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Mon, 21 Nov 2016 00:09:35 +0100 Subject: [PATCH 188/729] Made server_port grep more unique master_server_port was also grep'd before --- lgsm/functions/info_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 3bd3ebd04..e083e622a 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -114,7 +114,7 @@ fn_info_config_dontstarve(){ steamauthenticationport="${zero}" steammasterserverport="${zero}" else - port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + port=$(grep "server_port" "${servercfgfullpath}" | grep "^server_port" | grep -v "#" | tr -cd '[:digit:]') steamauthenticationport=$(grep "authentication_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') steammasterserverport=$(grep "master_server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') From b4c87e66d892d9cbcde91b703a65cb5794b4a8d1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 21 Nov 2016 22:17:48 +0000 Subject: [PATCH 189/729] Updated CoD:WAW to new design --- CallOfDutyWorldAtWar/codwawserver | 107 +++++++++++++++++++++--------- 1 file changed, 75 insertions(+), 32 deletions(-) diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index 199e34810..d89788aaf 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -1,87 +1,120 @@ #!/bin/bash -# Call of Duty: World at War -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Call of Duty: World at War | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="210516" +version="161118" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### -# Email -emailalert="off" -email="email@example.com" +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters -# Pushbullet -# https://www.pushbullet.com/#settings -pushbulletalert="off" -pushbullettoken="accesstoken" - -# Start Variables defaultmap="mp_castle" maxclients="20" -ip="0.0.0.0" port="28960" +ip="0.0.0.0" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +exec ${servercfg} +map ${defaultmap}" } +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" + +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + #### Advanced Variables #### -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" -githubbranch="codwaw" +githubbranch="master" -# Server Details -servicename="codwaw-server" +## LinuxGSM Server Details +# Do not edit gamename="Call of Duty: World at War" engine="IW 3.0" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="coduo-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./codwaw_lnxded" servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" servercfgdir="${systemdir}/main" servercfgfullpath="${servercfgdir}/${servercfg}" -servercfgdefault="${servercfgdir}/lgsm-default.cfg" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -138,8 +171,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file From 6103215513d9daf327f8bdbf123163cdc4d9dd94 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 24 Nov 2016 19:51:41 +0000 Subject: [PATCH 190/729] Added CoD: WaW --- lgsm/functions/command_details.sh | 13 ++++++++++++- lgsm/functions/command_monitor.sh | 2 +- lgsm/functions/core_getopt.sh | 2 +- lgsm/functions/gsquery.py | 4 +++- lgsm/functions/info_config.sh | 17 +++++++++++++++++ lgsm/functions/info_glibc.sh | 3 +++ 6 files changed, 37 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 598451dc5..8387490a5 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -308,7 +308,7 @@ fn_details_ports(){ fi done # engines that require editing in the script file - local ports_edit_array=( "starbound" "spark" "source" "goldsource" "Rust" "Hurtworld" "unreal4") + local ports_edit_array=( "Hurtworld" "iw3.0" "goldsource" "Rust" "spark" "source" "starbound" "unreal4" ) for port_edit in "${ports_edit_array[@]}" do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then @@ -368,6 +368,15 @@ fn_details_cod2(){ } | column -s $'\t' -t } +fn_details_codwaw(){ + echo -e "netstat -atunp | grep codwaw_lnxded" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + fn_details_dontstarve(){ echo -e "netstat -atunp | grep dontstarve" echo -e "" @@ -730,6 +739,8 @@ fn_display_details() { fn_details_coduo elif [ "${gamename}" == "Call of Duty 2" ]; then fn_details_cod2 + elif [ "${gamename}" == "Call of Duty: World at War" ]; then + fn_details_codwaw elif [ "${gamename}" == "Hurtworld" ]; then fn_details_hurtworld elif [ "${gamename}" == "QuakeWorld" ]; then diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 2e5de3402..7f247795f 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 iw2.0 quake refractor realvirtuality source spark unity3d unreal unreal2 ) + local allowed_engines_array=( avalanche goldsource idtech3 idtech3_ql iw2.0 iw3.0 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/core_getopt.sh b/lgsm/functions/core_getopt.sh index 2178c1acb..4044ade33 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}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${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/gsquery.py b/lgsm/functions/gsquery.py index e45d891cb..512d7411b 100644 --- a/lgsm/functions/gsquery.py +++ b/lgsm/functions/gsquery.py @@ -28,6 +28,8 @@ class GameServer: self.query_prompt_string = b'\xff\xff\xff\xffgetstatus' elif self.option.engine == 'iw2.0': self.query_prompt_string = b'\xff\xff\xff\xffgetstatus' + elif self.option.engine == 'iw3.0': + 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': @@ -115,7 +117,7 @@ if __name__ == '__main__': action='store', dest='engine', default=False, - help='Engine type: avalanche, goldsource, idtech2, idtech3, iw2.0, realvirtuality, quake, quakelive, refractor, spark, source, unity3d, unreal, unreal2.' + help='Engine type: avalanche, goldsource, idtech2, idtech3, iw2.0, iw3.0, 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 318bf9da0..c795e3686 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -94,6 +94,20 @@ fn_info_config_cod2(){ fi } +fn_info_config_codwaw(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + rconpassword="${unavailable}" + else + servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) + rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + + # Not Set + servername=${servername:-"NOT SET"} + rconpassword=${rconpassword=:-"NOT SET"} + fi +} + fn_info_config_dontstarve(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" @@ -542,6 +556,9 @@ elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: Unit # Call of Duty 2 elif [ "${gamename}" == "Call of Duty 2" ]; then fn_info_config_cod2 +# Call of Duty: World at War +elif [ "${gamename}" == "Call of Duty: World at War" ]; then + fn_info_config_codwaw # Dont Starve Together elif [ "${engine}" == "dontstarve" ]; then fn_info_config_dontstarve diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 0a4dd888a..faacc022e 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -23,6 +23,9 @@ elif [ "${gamename}" == "Call of Duty 2" ]; then elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then glibcrequired="2.1" glibcfix="no" +elif [ "${gamename}" == "Call of Duty: World at War" ]; then + glibcrequired="2.3.2" + glibcfix="no" elif [ "${gamename}" == "Day of Infamy" ]; then glibcrequired="2.15" glibcfix="yes" From 012e37640ca35007e9f7e823c1ddcbbd8528a41a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 24 Nov 2016 20:12:40 +0000 Subject: [PATCH 191/729] Changed slots to Maxplayers #1036 see issue #1036 --- lgsm/functions/alert_email.sh | 8 +-- lgsm/functions/command_details.sh | 8 +-- lgsm/functions/info_config.sh | 90 +++++++++++++++---------------- lgsm/functions/info_parms.sh | 6 +-- 4 files changed, 56 insertions(+), 56 deletions(-) diff --git a/lgsm/functions/alert_email.sh b/lgsm/functions/alert_email.sh index abca02525..7ec60b661 100644 --- a/lgsm/functions/alert_email.sh +++ b/lgsm/functions/alert_email.sh @@ -100,7 +100,7 @@ fn_details_gameserver(){ # Server IP: 1.2.3.4:27960 # RCON password: CHANGE_ME # Server password: NOT SET - # Slots: 16 + # Maxplayers: 16 # Status: OFFLINE { @@ -133,9 +133,9 @@ fn_details_gameserver(){ echo -e "Stats password: ********" fi - # Slots - if [ -n "${slots}" ]; then - echo -e "Slots: ${slots}" + # Maxplayers + if [ -n "${maxplayers}" ]; then + echo -e "Maxplayers: ${slots}" fi # Game mode diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 8387490a5..a1fd28f79 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -98,7 +98,7 @@ fn_details_gameserver(){ # Server IP: 1.2.3.4:27960 # RCON password: CHANGE_ME # Server password: NOT SET - # Slots: 16 + # Maxplayers: 16 # Status: OFFLINE echo -e "" @@ -133,9 +133,9 @@ fn_details_gameserver(){ echo -e "${blue}Stats password:\t${default}${statspassword}" fi - # Slots - if [ -n "${slots}" ]; then - echo -e "${blue}Slots:\t${default}${slots}" + # Maxplayers + if [ -n "${maxplayers}" ]; then + echo -e "${blue}Maxplayers:\t${default}${slots}" fi # Game mode diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index c795e3686..8cdb42b09 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -18,13 +18,13 @@ fn_info_config_avalanche(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" serverpassword="${unavailable}" - slots="${zero}" + maxplayers="${zero}" port="${zero}" else servername=$(grep "Name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') serverpassword=$(grep "Password" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - slots=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') + maxplayers=$(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]*$//') @@ -34,7 +34,7 @@ fn_info_config_avalanche(){ # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} - slots=${slots:-"0"} + maxplayers=${maxplayers:-"0"} port=${port:-"0"} fi } @@ -43,14 +43,14 @@ fn_info_config_bf1942(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" serverpassword="${unavailable}" - slots="${zero}" + maxplayers="${zero}" port="${zero}" queryport="${zero}" else servername=$(grep "game.serverName " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverName //g' | tr -d '=\";,:' | xargs) serverpassword=$(grep "game.serverPassword" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/game.serverPassword//g' | tr -d '=\";,:' | xargs) - slots=$(grep "game.serverMaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') + maxplayers=$(grep "game.serverMaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') port=$(grep "game.serverPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') queryport="22000" @@ -61,7 +61,7 @@ fn_info_config_bf1942(){ # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} - slots=${slots:-"0"} + maxplayers=${maxplayers:-"0"} port=${port:-"0"} fi } @@ -112,14 +112,14 @@ fn_info_config_dontstarve(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" serverpassword="${unavailable}" - slots="${zero}" + maxplayers="${zero}" gamemode="${unavailable}" tickrate="${zero}" port="${zero}" else servername=$(grep "default_server_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/default_server_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') serverpassword=$(grep "server_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - slots=$(grep "max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + maxplayers=$(grep "max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') gamemode=$(grep "game_mode" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_mode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') tickrate=$(grep "tick_rate" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') @@ -127,7 +127,7 @@ fn_info_config_dontstarve(){ # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} - slots=${slots:-"0"} + maxplayers=${maxplayers:-"0"} gamemode=${gamemode:-"NOT SET"} tickrate=${tickrate:-"0"} port=${port:-"0"} @@ -139,7 +139,7 @@ fn_info_config_minecraft(){ servername="${unavailable}" rconpassword="${unavailable}" rconport="${zero}" - slots="${zero}" + maxplayers="${zero}" port="${zero}" gamemode="${unavailable}" gameworld="${unavailable}" @@ -147,7 +147,7 @@ fn_info_config_minecraft(){ servername=$(grep "motd" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/motd//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconpassword=$(grep "rcon.password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/rcon.password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconport=$(grep "rcon.port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - slots=$(grep "max-players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + maxplayers=$(grep "max-players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') port=$(grep "server-port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') 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]*$//') @@ -160,7 +160,7 @@ fn_info_config_minecraft(){ servername=${servername:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} rconport=${rconport:-"NOT SET"} - slots=${slots:-"NOT SET"} + maxplayers=${maxplayers:-"NOT SET"} port=${port:-"NOT SET"} gamemode=${gamemode:-"NOT SET"} gameworld=${gameworld:-"NOT SET"} @@ -173,14 +173,14 @@ fn_info_config_projectzomboid(){ servername="${unavailable}" serverpassword="${unavailable}" rconpassword="${unavailable}" - slots="${zero}" + maxplayers="${zero}" port="${zero}" gameworld="${unavailable}" else servername=$(grep "PublicName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/PublicName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') serverpassword=$(grep "Password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^Password" | sed -e '/^#/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconpassword=$(grep "RCONPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/RCONPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - slots=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') port=$(grep "DefaultPort" "${servercfgfullpath}" | tr -cd '[:digit:]') gameworld=$(grep "Map" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^Map" | sed -e '/^#/d' -e 's/Map//g' | tr -d '=\";' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') @@ -188,7 +188,7 @@ fn_info_config_projectzomboid(){ servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} - slots=${slots:-"NOT SET"} + maxplayers=${maxplayers:-"NOT SET"} port=${port:-"NOT SET"} gameworld=${gameworld:-"NOT SET"} fi @@ -199,16 +199,16 @@ fn_info_config_quake2(){ rconpassword="${unavailable}" servername="${unavailable}" serverpassword="${unavailable}" - slots="${zero}" + maxplayers="${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:]') + maxplayers=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') # Not Set rconpassword=${rconpassword:-"NOT SET"} servername=${servername:-"NOT SET"} - slots=${slots:-"0"} + maxplayers=${maxplayers:-"0"} fi } @@ -217,18 +217,18 @@ fn_info_config_quake3(){ rconpassword="${unavailable}" servername="${unavailable}" serverpassword="${unavailable}" - slots="${zero}" + maxplayers="${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:]') + maxplayers=$(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"} + maxplayers=${maxplayers:-"0"} fi } @@ -237,12 +237,12 @@ fn_info_config_quakelive(){ rconpassword="${unavailable}" servername="${unavailable}" serverpassword="${unavailable}" - slots="${zero}" + maxplayers="${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:]') + maxplayers=$(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 @@ -252,7 +252,7 @@ fn_info_config_quakelive(){ rconpassword=${rconpassword:-"NOT SET"} servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} - slots=${slots:-"0"} + maxplayers=${maxplayers:-"0"} fi } @@ -261,14 +261,14 @@ fn_info_config_wolfensteinenemyterritory(){ rconpassword="${unavailable}" servername="${unavailable}" serverpassword="${unavailable}" - slots="${zero}" + maxplayers="${zero}" port="${zero}" else port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') rconpassword=$(grep "set zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//g' -e '/^\//d' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') servername=$(grep "set 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 "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:]') + maxplayers=$(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 @@ -278,7 +278,7 @@ fn_info_config_wolfensteinenemyterritory(){ rconpassword=${rconpassword:-"NOT SET"} servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} - slots=${slots:-"0"} + maxplayers=${maxplayers:-"0"} port=${port:-"27960"} fi } @@ -288,18 +288,18 @@ fn_info_config_realvirtuality(){ servername="${unavailable}" adminpassword="${unavailable}" serverpassword="${unavailable}" - slots="${zero}" + maxplayers="${zero}" else servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') adminpassword=$(grep "passwordAdmin" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/passwordAdmin//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') serverpassword=$(grep "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') + maxplayers=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') # Not Set servername=${servername:-"NOT SET"} adminpassword=${adminpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} - slots=${slots:-"0"} + maxplayers=${maxplayers:-"0"} fi } @@ -308,20 +308,20 @@ fn_info_config_seriousengine35(){ servername="${unavailable}" rconpassword="${unavailable}" gamemode="${unavailable}" - slots="${zero}" + maxplayers="${zero}" port="${zero}" else servername=$(grep "prj_strMultiplayerSessionName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/prj_strMultiplayerSessionName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconpassword=$(grep "rcts_strAdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/rcts_strAdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') gamemode=$(grep "gam_idGameMode" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/gam_idGameMode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') + maxplayers=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') port=$(grep "prj_uwPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') # Not Set servername=${servername:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} gamemode=${gamemode:-"NOT SET"} - slots=${slots:-"0"} + maxplayers=${maxplayers:-"0"} port=${port:-"0"} fi } @@ -350,14 +350,14 @@ fn_info_config_starbound(){ port="21025" queryport="21025" rconport="21026" - slots="8" + maxplayers="8" else servername=$(grep "serverName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/serverName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconpassword=$(grep "rconServerPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/rconServerPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') port=$(grep "gameServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') queryport=$(grep "queryServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') rconport=$(grep "rconServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - slots=$(grep "maxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]') + maxplayers=$(grep "maxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]') # Not Set servername=${servername:-"NOT SET"} @@ -365,7 +365,7 @@ fn_info_config_starbound(){ port=${port:-"21025"} queryport=${queryport:-"21025"} rconport=${rconport:-"21026"} - slots=${slots:-"8"} + maxplayers=${maxplayers:-"8"} fi } @@ -418,20 +418,20 @@ fn_info_config_teeworlds(){ serverpassword="${unavailable}" rconpassword="${unavailable}" port="8303" - slots="12" + maxplayers="12" else servername=$(grep "sv_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^sv_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') serverpassword=$(grep "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^password" | sed -e '/^#/d' -e 's/^password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^sv_rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') port=$(grep "sv_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - slots=$(grep "sv_max_clients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + maxplayers=$(grep "sv_max_clients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} port=${port:-"8303"} - slots=${slots:-"12"} + maxplayers=${maxplayers:-"12"} fi } @@ -440,18 +440,18 @@ fn_info_config_terraria(){ servername="${unavailable}" port="${zero}" gameworld="${unavailable}" - slots="${zero}" + maxplayers="${zero}" else servername=$(grep "worldname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/worldname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') port=$(grep "port" "${servercfgfullpath}" | tr -cd '[:digit:]') gameworld=$(grep "world=" "${servercfgfullpath}" | grep -v "//" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/world=//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - slots=$(grep "maxplayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') + maxplayers=$(grep "maxplayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') # Not Set servername=${servername:-"NOT SET"} port=${port:-"0"} gameworld=${gameworld:-"NOT SET"} - slots=${slots:-"0"} + maxplayers=${maxplayers:-"0"} fi } @@ -507,7 +507,7 @@ fn_info_config_sdtd(){ telnetenabled="${unavailable}" telnetport="${zero}" telnetpass="${unavailable}" - slots="${unavailable}" + maxplayers="${unavailable}" gamemode="${unavailable}" gameworld="${unavailable}" else @@ -523,7 +523,7 @@ fn_info_config_sdtd(){ telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]') telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - slots=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') + maxplayers=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") @@ -538,7 +538,7 @@ fn_info_config_sdtd(){ telnetenabled=${telnetenabled:-"NOT SET"} telnetport=${telnetport:-"0"} telnetpass=${telnetpass:-"NOT SET"} - slots=${slots:-"NOT SET"} + maxplayers=${maxplayers:-"NOT SET"} gamemode=${gamemode:-"NOT SET"} gameworld=${gameworld:-"NOT SET"} fi diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index 7cfdd8b8b..72ef857c9 100644 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -49,20 +49,20 @@ fn_info_config_teeworlds(){ serverpassword="${unavailable}" rconpassword="${unavailable}" port="8303" - slots="12" + maxplayers="12" else servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ') rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ') port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') - slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') + maxplayers=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"} port=${port:-"8303"} - slots=${slots:-"12"} + maxplayers=${maxplayers:-"12"} fi } From 1cc68d4e9b3838ccdd4719fcf652a75d17fe7d64 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 24 Nov 2016 22:36:24 +0000 Subject: [PATCH 192/729] issue #1085 --- lgsm/functions/check_deps.sh | 4 ++-- lgsm/functions/info_glibc.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 62d9ed6f6..36e0a8f04 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -201,7 +201,7 @@ if [ -n "$(command -v dpkg-query)" ]; then fi # GoldenEye: Source elif [ "${gamename}" == "GoldenEye: Source" ]; then - array_deps_required+=( zlib1g:i386 ) + array_deps_required+=( zlib1g:i386 libldap-2.4-2:i386 ) # Unreal Engine elif [ "${executable}" == "./ucc-bin" ]; then #UT2K4 @@ -273,7 +273,7 @@ elif [ -n "$(command -v yum)" ]; then fi # GoldenEye: Source elif [ "${gamename}" == "GoldenEye: Source" ]; then - array_deps_required+=( zlib.i686 ) + array_deps_required+=( zlib.i686 openldap.i686 ) # Unreal Engine elif [ "${executable}" == "./ucc-bin" ]; then #UT2K4 diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index faacc022e..b8b29239c 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -43,7 +43,7 @@ elif [ "${gamename}" == "Garry's Mod" ]; then glibcfix="yes" elif [ "${gamename}" == "GoldenEye: Source" ]; then glibcrequired="2.15" - glibcfix="no" + glibcfix="yes" elif [ "${gamename}" == "Insurgency" ]; then glibcrequired="2.15" glibcfix="yes" From 3db82db867d15bf8e6f7d6c244d67a5e4215250c Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 25 Nov 2016 00:44:35 +0100 Subject: [PATCH 193/729] Corrected overlooked maxplayers variables I hope I shouldn't have created a branch for that.. Just a small dev hotfix. --- lgsm/functions/alert_email.sh | 2 +- lgsm/functions/command_details.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/alert_email.sh b/lgsm/functions/alert_email.sh index 7ec60b661..6b440070c 100644 --- a/lgsm/functions/alert_email.sh +++ b/lgsm/functions/alert_email.sh @@ -135,7 +135,7 @@ fn_details_gameserver(){ # Maxplayers if [ -n "${maxplayers}" ]; then - echo -e "Maxplayers: ${slots}" + echo -e "Maxplayers: ${maxplayers}" fi # Game mode diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index a1fd28f79..2f26501e0 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -135,7 +135,7 @@ fn_details_gameserver(){ # Maxplayers if [ -n "${maxplayers}" ]; then - echo -e "${blue}Maxplayers:\t${default}${slots}" + echo -e "${blue}Maxplayers:\t${default}${maxplayers}" fi # Game mode From 23cf50932127c5a6137aa56193664b4f7f1ae3a0 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 25 Nov 2016 00:57:43 +0100 Subject: [PATCH 194/729] Changing branch var to develop --- DontStarveTogether/dstserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 1dd527100..24de569f5 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -79,7 +79,7 @@ branch="" # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" -githubbranch="dstserver-new" +githubbranch="develop" ## LinuxGSM Server Details # Do not edit @@ -204,4 +204,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From bde68d9cdd90279b7adf9e7046a7528aa56f19c8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 25 Nov 2016 10:29:54 +0000 Subject: [PATCH 195/729] corrected github branch --- DontStarveTogether/dstserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 24de569f5..643026c1a 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -25,7 +25,7 @@ version="161118" ## Installation Variables | https://github.com/GameServerManagers/LinuxGSM/wiki/Don't-Starve-Together sharding="false" master="true" -shard="Master" +shard="Master" cluster="Cluster_1" cave="false" @@ -79,7 +79,7 @@ branch="" # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" -githubbranch="develop" +githubbranch="master" ## LinuxGSM Server Details # Do not edit From 0f7aad815c7bf1feaf2849a79df59b351edc9032 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 25 Nov 2016 11:33:17 +0000 Subject: [PATCH 196/729] Update version number 161125 --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CallOfDutyUnitedOffensive/coduoserver | 2 +- CallOfDutyWorldAtWar/codwawserver | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- 62 files changed, 62 insertions(+), 62 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 0c532d2e5..1e5bca25e 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index aa562c209..bc4c53812 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index f5a1c7830..b132595a5 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 52eca3409..d011e57ac 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index e59419347..025374c70 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 89423115b..5e1a91654 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 932600773..977e60025 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index 795f89b83..8bf07b570 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index 885175339..49a32f1e5 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index 95675a10f..37e053e10 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index d89788aaf..cd908489d 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 00767735f..0fcd67964 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 1acc5c203..8fae4ad6d 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index d478e5130..21b58f060 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 6e06cce57..00234ea57 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 5748f9482..6710cd78d 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index b8d5fd24c..f1638263e 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index feae13543..bee83c953 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 3059345ab..da1605b39 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 38487c7fc..58b6c4282 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 643026c1a..260a57a39 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 8466f6d5d..0938bd94a 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 5be1b822a..224ad89db 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index ea7e16c0a..379e36a08 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 7eb70c8ba..c661a3d91 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index d2e98e034..49be6d637 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 455bd016c..53bd98dc4 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index e5e992ef7..d0c9c33db 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 81e085dcd..930f367be 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index 89589bdbb..6427fcdb7 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 5ee07555e..1a4fa6c9a 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 6ff0300c1..53080e2a7 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index c72e1c6ec..b550880fa 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 03f71e71e..8aee908b5 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index eaac52215..320edc90d 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 6e830badb..be06c44ef 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 77688302f..437921ad3 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index bbb60dc34..3ce13f844 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 2c4e37ffe..6409591fc 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 7b3cc6ef6..8fe185650 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 4861430fe..e2c920423 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 782a2118c..481dbdd75 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index 3a0723a1a..206ab8379 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index 445875a85..ae71118ec 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 19fb451fa..d7be6d83d 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 97534b981..85bd1b103 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 419bc04c6..aaaf3f761 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index 6e153a9a9..f02e29231 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index bf5b8b3d9..f668959d6 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index ef4f73ef9..d4d93913f 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index c6fecf4ba..c69706307 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 2d9a3da3c..c4ae5feae 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 9b80dca60..68be7bfb0 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 10e3344ec..b22971108 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 2db116724..367baa386 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index bcc9a270e..cc68d2632 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index e40cba5cb..23a0d0ff1 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index bfbce6d08..2ee0f9b3f 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 3a70643ee..f721859b0 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index c08403f97..8a86a4bfb 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index ff33e2647..7cddd0575 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index d141d58c7..c4d46cbcb 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161118" +version="161125" ########################## ######## Settings ######## From bd7397ffa1045f49df6f0d15b3da8c061f1a250e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 25 Nov 2016 12:24:23 +0000 Subject: [PATCH 197/729] hotfix: Corrected engine and servicename --- CallOfDutyWorldAtWar/codwawserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index cd908489d..c5bfbf785 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -69,10 +69,10 @@ githubbranch="master" ## LinuxGSM Server Details # Do not edit gamename="Call of Duty: World at War" -engine="IW 3.0" +engine="iw3.0" ## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers -servicename="coduo-server" +servicename="codwaw-server" #### Directories #### # Edit with care From e912cc5f783c1ca98224908b48ac70cb1ba163a8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 28 Nov 2016 22:31:12 +0000 Subject: [PATCH 198/729] #1204 "/stop" is replaced by "stop" --- lgsm/functions/command_stop.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 95aa10536..c5483a864 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -144,29 +144,29 @@ fn_stop_graceful_sdtd(){ fn_stop_tmux } -# Attempts graceful of source using rcon '/stop' command. +# Attempts graceful of source using rcon 'stop' command. fn_stop_graceful_minecraft(){ - fn_print_dots "Graceful: console /stop" - fn_script_log_info "Graceful: console /stop" + fn_print_dots "Graceful: console stop" + fn_script_log_info "Graceful: console stop" # sends quit - tmux send -t "${servicename}" /stop ENTER > /dev/null 2>&1 + tmux send -t "${servicename}" stop ENTER > /dev/null 2>&1 # waits up to 30 seconds giving the server time to shutdown gracefuly for seconds in {1..30}; do check_status.sh if [ "${status}" == "0" ]; then - fn_print_ok "Graceful: console /stop: ${seconds}: " + fn_print_ok "Graceful: console stop: ${seconds}: " fn_print_ok_eol_nl - fn_script_log_pass "Graceful: console /stop: OK: ${seconds} seconds" + fn_script_log_pass "Graceful: console stop: OK: ${seconds} seconds" break fi sleep 1 - fn_print_dots "Graceful: console /stop: ${seconds}" + fn_print_dots "Graceful: console stop: ${seconds}" done check_status.sh if [ "${status}" != "0" ]; then - fn_print_error "Graceful: console /stop: " + fn_print_error "Graceful: console stop: " fn_print_fail_eol_nl - fn_script_log_error "Graceful: console /stop: FAIL" + fn_script_log_error "Graceful: console stop: FAIL" fi sleep 1 fn_stop_tmux From 85f589746517299dae51c5eab27652449fee4db6 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 10 Dec 2016 10:50:41 +0000 Subject: [PATCH 199/729] Removed insecure from the parms --- BrainBread2/bb2server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 977e60025..c66b84fcc 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -41,7 +41,7 @@ gslt="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters # Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ -parms="-game brainbread2 -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" +parms="-game brainbread2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } #### LinuxGSM Settings #### From 83e6ce0e4851bf741f3f3f64190b2b64a6bb71ec Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 10 Dec 2016 11:04:03 +0000 Subject: [PATCH 200/729] Adding COD4 --- CallOfDuty4/cod4server | 188 +++++++++++++++++++++++++ lgsm/functions/info_glibc.sh | 3 + lgsm/functions/install_server_files.sh | 2 + 3 files changed, 193 insertions(+) create mode 100644 CallOfDuty4/cod4server diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server new file mode 100644 index 000000000..e748b993d --- /dev/null +++ b/CallOfDuty4/cod4server @@ -0,0 +1,188 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Call of Duty 4 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="161125" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters + +defaultmap="mp_crossfire" +maxclients="32" +port="28960" +ip="138.68.147.159" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +exec ${servercfg} +map ${defaultmap}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" + +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### 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" + +## LinuxGSM Server Details +# Do not edit +gamename="Call of Duty 4" +engine="iw3.0" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="cod4-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./cod4x18_dedrun" +servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" +servercfgdir="${systemdir}/main" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +gamelogdir="${filesdir}/Logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index b8b29239c..951adefd7 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -23,6 +23,9 @@ elif [ "${gamename}" == "Call of Duty 2" ]; then elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then glibcrequired="2.1" glibcfix="no" +elif [ "${gamename}" == "Call of Duty 4" ]; then + glibcrequired="2.3" + glibcfix="no" elif [ "${gamename}" == "Call of Duty: World at War" ]; then glibcrequired="2.3.2" glibcfix="no" diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index bc28bd2f2..694fc6b71 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -17,6 +17,8 @@ fn_install_server_files(){ fileurl="http://files.gameservermanagers.com/CallOfDutyUnitedOffensive/coduo-lnxded-1.51b-full.tar.bz2"; filedir="${tmpdir}"; filename="coduo-lnxded-1.51b-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f1804ef13036e2b4ab535db000b19e97" elif [ "${gamename}" == "Call of Duty 2" ]; then fileurl="http://files.gameservermanagers.com/CallOfDuty2/cod2-lnxded-1.3-full.tar.bz2"; filedir="${tmpdir}"; filename="cod2-lnxded-1.3-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="078128f83d06dc3d7699428dc2870214" + elif [ "${gamename}" == "Call of Duty 4" ]; then + fileurl="http://files.gameservermanagers.com/CallOfDuty4/cod4x18_dedrun.tar.bz2"; filedir="${tmpdir}"; filename="cod2-lnxded-1.3-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="87744d1ab4ac49ac0edd2200f5152ccf" elif [ "${gamename}" == "Call of Duty: World at War" ]; then fileurl="http://files.gameservermanagers.com/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.bz2"; filedir="${tmpdir}"; filename="codwaw-lnxded-1.7-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="0489697ff3bf678c109bfb377d1b7895" elif [ "${gamename}" == "GoldenEye: Source" ]; then From d57d64f741301ec7323ca7d2145b3d41e25b7bb8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 10 Dec 2016 13:01:33 +0000 Subject: [PATCH 201/729] Updated COD4 file --- lgsm/functions/install_server_files.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 694fc6b71..330e4fb40 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -18,7 +18,7 @@ fn_install_server_files(){ elif [ "${gamename}" == "Call of Duty 2" ]; then fileurl="http://files.gameservermanagers.com/CallOfDuty2/cod2-lnxded-1.3-full.tar.bz2"; filedir="${tmpdir}"; filename="cod2-lnxded-1.3-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="078128f83d06dc3d7699428dc2870214" elif [ "${gamename}" == "Call of Duty 4" ]; then - fileurl="http://files.gameservermanagers.com/CallOfDuty4/cod4x18_dedrun.tar.bz2"; filedir="${tmpdir}"; filename="cod2-lnxded-1.3-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="87744d1ab4ac49ac0edd2200f5152ccf" + fileurl="http://files.gameservermanagers.com/CallOfDuty4/cod4x18_dedrun.tar.bz2"; filedir="${tmpdir}"; filename="cod4x18_dedrun.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="bebdfc1755626462bdaad49f6f926c08" elif [ "${gamename}" == "Call of Duty: World at War" ]; then fileurl="http://files.gameservermanagers.com/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.bz2"; filedir="${tmpdir}"; filename="codwaw-lnxded-1.7-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="0489697ff3bf678c109bfb377d1b7895" elif [ "${gamename}" == "GoldenEye: Source" ]; then From 93b93379f531df9f2d1cfca582632a8f24efdfdc Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 10 Dec 2016 13:07:43 +0000 Subject: [PATCH 202/729] Added COD 4 --- lgsm/functions/command_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index d7c3cbc54..a840af48a 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}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then installer=1 install_server_files.sh elif [ -n "${appid}" ]; then From 64e6a08745ed1b9d10353392058d1e378bdf2676 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 12 Dec 2016 21:33:41 +0000 Subject: [PATCH 203/729] Added Call of Duty 4 server config --- lgsm/functions/install_config.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index b5f7a1148..1f946381b 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -83,20 +83,20 @@ fn_set_dst_config_vars(){ randomkey=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) sed -i "s/CLUSTERKEY/${randomkey}/g" "${clustercfgfullpath}" sleep 1 - else + else echo "${clustercfg} is already configured." fn_script_log_info "${clustercfg} is already configured." fi - + ## server.ini # removing unnecessary options (dependent on sharding & shard type) - if [ "${sharding}" == "false" ]; then + if [ "${sharding}" == "false" ]; then sed -i "s/ISMASTER//g" "${servercfgfullpath}" sed -i "/SHARDNAME/d" "${servercfgfullpath}" elif [ "${master}" == "true" ]; then sed -i "/SHARDNAME/d" "${servercfgfullpath}" fi - + echo "changing shard name." fn_script_log_info "changing shard name." sed -i "s/SHARDNAME/${shard}/g" "${servercfgfullpath}" @@ -105,7 +105,7 @@ fn_set_dst_config_vars(){ fn_script_log_info "changing master setting." sed -i "s/ISMASTER/${master}/g" "${servercfgfullpath}" sleep 1 - + ## worldgenoverride.lua if [ "${cave}" == "true" ]; then echo "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua." @@ -182,6 +182,12 @@ elif [ "${gamename}" == "Call of Duty 2" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Call of Duty 4" ]; then + gamedirname="CallOfDuty4" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Call of Duty: World at War" ]; then gamedirname="CallOfDutyWorldAtWar" array_configs+=( server.cfg ) From 1e5852b75353b1ecf4c86ac2a16e82bf86ff054a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 12 Dec 2016 21:40:14 +0000 Subject: [PATCH 204/729] Renamed to CallOfDuty2 --- lgsm/functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 1f946381b..a9a97423f 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -177,7 +177,7 @@ elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then fn_default_config_remote fn_set_config_vars elif [ "${gamename}" == "Call of Duty 2" ]; then - gamedirname="CallofDuty2" + gamedirname="CallOfDuty2" array_configs+=( server.cfg ) fn_fetch_default_config fn_default_config_remote From 25d18213e4759d7fa79bbbb3a9f0a96f68ba42bc Mon Sep 17 00:00:00 2001 From: MrJefff Date: Fri, 16 Dec 2016 12:36:51 +0000 Subject: [PATCH 205/729] Update rustserver Had issues logging in with experimental rcon after latest Rust Dedicated Server update, Caused disconnect loop. Warning asks to add rcon.web to startup script. This can be temporary or edited better but solves error > "You are connecting to your server via Experimental rcon type The support for this rcon type has been discontinued and can cause instabilities and crashes." --- Rust/rustserver | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index f02e29231..d78b86c05 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -29,6 +29,7 @@ ip="0.0.0.0" port="28015" rconport="28016" rconpassword="CHANGE_ME" +rconweb="1" maxplayers="50" # Advanced Start Settings seed="" # default random; range : 1 to 2147483647 ; used to change or reproduce a procedural map @@ -39,7 +40,7 @@ tickrate="30" # default 30; range : 15 to 100 ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters # Edit with care | https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ -parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" +parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" } # Specific to Rust From 073bbea78628eae99e88f5eebaae0407db9ad05f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 20 Dec 2016 21:18:59 +0000 Subject: [PATCH 206/729] Added COD 4 to details --- lgsm/functions/command_details.sh | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 5ab856ed0..9d9d8fddc 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -152,12 +152,12 @@ fn_details_gameserver(){ if [ -n "${tickrate}" ]; then echo -e "${blue}Tick rate:\t${default}${tickrate}" fi - + # Cluster (Don't Starve Together) if [ -n "${cluster}" ]; then echo -e "${blue}Cluster:\t${default}${cluster}" fi - + # Shard (Don't Starve Together) if [ -n "${shard}" ]; then echo -e "${blue}Shard:\t${default}${shard}" @@ -378,6 +378,15 @@ fn_details_cod2(){ } | column -s $'\t' -t } +fn_details_cod4(){ + echo -e "netstat -atunp" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + fn_details_codwaw(){ echo -e "netstat -atunp | grep codwaw_lnxded" echo -e "" @@ -752,6 +761,8 @@ fn_display_details() { fn_details_coduo elif [ "${gamename}" == "Call of Duty 2" ]; then fn_details_cod2 + elif [ "${gamename}" == "Call of Duty 4" ]; then + fn_details_cod4 elif [ "${gamename}" == "Call of Duty: World at War" ]; then fn_details_codwaw elif [ "${gamename}" == "Hurtworld" ]; then From 32e0c921750d5c794c2479f563f341cd5bba2fbf Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 20 Dec 2016 21:34:33 +0000 Subject: [PATCH 207/729] Added COD 4 to Infor_config --- lgsm/functions/info_config.sh | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 09cd8900d..829bba841 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -94,6 +94,20 @@ fn_info_config_cod2(){ fi } +fn_info_config_cod4(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + rconpassword="${unavailable}" + else + servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) + rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + + # Not Set + servername=${servername:-"NOT SET"} + rconpassword=${rconpassword=:-"NOT SET"} + fi +} + fn_info_config_codwaw(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" @@ -123,7 +137,6 @@ fn_info_config_dontstarve(){ gamemode=$(grep "game_mode" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_mode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') tickrate=$(grep "tick_rate" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') masterport=$(grep "master_port" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - ip=$(grep "bind_ip" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bind_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') ipsetinconfig=1 ipinconfigvar="bind_ip" @@ -136,7 +149,7 @@ fn_info_config_dontstarve(){ tickrate=${tickrate:-"0"} masterport=${masterport:-"0"} fi - + if [ ! -f "${servercfgfullpath}" ]; then port="${zero}" steamauthenticationport="${zero}" @@ -145,7 +158,7 @@ fn_info_config_dontstarve(){ port=$(grep "server_port" "${servercfgfullpath}" | grep "^server_port" | grep -v "#" | tr -cd '[:digit:]') steamauthenticationport=$(grep "authentication_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') steammasterserverport=$(grep "master_server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - + # Not Set port=${port:-"0"} steamauthenticationport=${steamauthenticationport:-"0"} @@ -575,6 +588,9 @@ elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: Unit # Call of Duty 2 elif [ "${gamename}" == "Call of Duty 2" ]; then fn_info_config_cod2 +# Call of Duty 4 +elif [ "${gamename}" == "Call of Duty 4" ]; then + fn_info_config_cod4 # Call of Duty: World at War elif [ "${gamename}" == "Call of Duty: World at War" ]; then fn_info_config_codwaw From e3b86e1c862080bff7b10c43276ffd2c4412ccb9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 20 Dec 2016 21:40:36 +0000 Subject: [PATCH 208/729] Added COD4 to getopt --- lgsm/functions/core_getopt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 8434f4454..03aa7359a 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -699,7 +699,7 @@ case "${getopt}" in if [ "${gamename}" == "Mumble" ]; then fn_getopt_mumble -elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${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 From d1d3d875498a4520ef20d6ce4e2519d8f2c1579c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 21 Dec 2016 17:11:54 +0000 Subject: [PATCH 209/729] Updated to release 161221 --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CallOfDuty4/cod4server | 2 +- CallOfDutyUnitedOffensive/coduoserver | 2 +- CallOfDutyWorldAtWar/codwawserver | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- 63 files changed, 63 insertions(+), 63 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 1e5bca25e..1b554719c 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index bc4c53812..f96e49bf2 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index b132595a5..083e4ea13 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index d011e57ac..25ea4291d 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 025374c70..ea25b01f8 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 5e1a91654..fed7213e3 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index c66b84fcc..ee8f3c4e3 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index 8bf07b570..093c375a6 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index 49a32f1e5..48b43b34d 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server index e748b993d..d77707606 100644 --- a/CallOfDuty4/cod4server +++ b/CallOfDuty4/cod4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index 37e053e10..64c6bdfb0 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index c5bfbf785..bfb080f98 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 0fcd67964..8815e7c50 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 8fae4ad6d..0f0ab0665 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 21b58f060..c32332f95 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 00234ea57..ef945f4d9 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 6710cd78d..ddb55ae1c 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index f1638263e..ac3c70e81 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index bee83c953..583035330 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index da1605b39..3a17b0201 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 58b6c4282..823150526 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 260a57a39..857e08da0 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 0938bd94a..2d889a31b 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 224ad89db..49c7666cb 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 379e36a08..c0329bb47 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index c661a3d91..b41fb6e4f 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 49be6d637..e806c0ac5 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 53bd98dc4..f0085130f 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index d0c9c33db..a8441d652 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 930f367be..ca599ac78 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index 6427fcdb7..e3a2212a5 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 1a4fa6c9a..3688cbc3c 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 53080e2a7..4d92fbcc3 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index b550880fa..eab523850 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 8aee908b5..5887be549 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 320edc90d..f7c69ec57 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index be06c44ef..27b9a55c1 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 437921ad3..9b621eaec 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 3ce13f844..6c68ac06e 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 6409591fc..8abbee131 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 8fe185650..a36dd83db 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index e2c920423..f1592016e 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 481dbdd75..a5f295b15 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index 206ab8379..c8c9bfe84 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index ae71118ec..078e0502d 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index d7be6d83d..babb453bd 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 85bd1b103..ffa02313a 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index aaaf3f761..d5f205db4 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index d78b86c05..22c489a78 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index f668959d6..170abc607 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index d4d93913f..09555200a 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index c69706307..039bb1928 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index c4ae5feae..d1be35534 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 68be7bfb0..3d4c3b3d6 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index b22971108..4352c13bf 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 367baa386..8456c64a6 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index cc68d2632..564440e32 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index 23a0d0ff1..e5c1e13dd 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 2ee0f9b3f..8eb5f1137 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index f721859b0..5e96d62f8 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 8a86a4bfb..8de3f2b21 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 7cddd0575..2404333c3 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index c4d46cbcb..a03b45e85 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161125" +version="161221" ########################## ######## Settings ######## From 2aa1569175928bec1cea481410cdf56a002a9f1a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 21 Dec 2016 17:32:46 +0000 Subject: [PATCH 210/729] Updated emserver and qwserver with new style --- EmpiresMod/emserver | 23 +++++++++- QuakeWorld/qwserver | 101 +++++++++++++++++++++++++++++++------------- 2 files changed, 93 insertions(+), 31 deletions(-) diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 7fe58d3b5..be6b31e57 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -1,5 +1,26 @@ #!/bin/bash -# Empires Mod +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Empires Mod | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="161221" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="emp_district" diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 5e1bb60de..3918cc8ba 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -1,54 +1,81 @@ #!/bin/bash -# Quake World (nQuake) -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Quake World (nQuake) | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -version="210516" +version="161221" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +port="27500" +ip="0.0.0.0" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server +fn_parms(){ +parms="-port ${port} -game ktx +exec ${servercfg}" +} -# Email +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" +emailfrom="" -# Pushbullet -# https://www.pushbullet.com/#settings +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" channeltag="" -# Start Variables -ip="0.0.0.0" -port="27500" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -fn_parms(){ -parms="-port ${port} -game ktx +exec ${servercfg}" -} +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## 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" +## LinuxGSM Server Details +# Do not edit gamename="QuakeWorld" engine="quake" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="quakeworld_server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -57,6 +84,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}/ktx" executabledir="${filesdir}" executable="./mvdsv" @@ -64,24 +93,26 @@ servercfg="${servicename}.cfg" servercfgdefault="server.cfg" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" -gamelogdir="${filesdir}/Logs" +## Logging Directories +gamelogdir="${systemdir}/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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -138,8 +169,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh \ No newline at end of file From 29a2fb8001b84df7bfd08e434173e549ebbab65b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 21 Dec 2016 17:44:03 +0000 Subject: [PATCH 211/729] Removed old configs --- Insurgency/cfg/lgsm-default.cfg | 302 -------------------------------- QuakeWorld/cfg/lgsm-default.cfg | 26 --- 2 files changed, 328 deletions(-) delete mode 100644 Insurgency/cfg/lgsm-default.cfg delete mode 100644 QuakeWorld/cfg/lgsm-default.cfg diff --git a/Insurgency/cfg/lgsm-default.cfg b/Insurgency/cfg/lgsm-default.cfg deleted file mode 100644 index b8a98558c..000000000 --- a/Insurgency/cfg/lgsm-default.cfg +++ /dev/null @@ -1,302 +0,0 @@ -// **************************************************************************** -// * -// Ingurgency - server.cfg * -// Version 060116 * -// * -// **************************************************************************** - -// ............................. Basic Settings ............................. // - -// Hostname for server. -hostname "" - -// Server password - for private servers. -sv_password "" - -// Contact email for server sysop. -sv_contact "email@example.com" - -// LAN Mode - If set the server will not show on the internet. -// Default: sv_lan 0 -sv_lan 0 - -// Set maximum server FPS -// Default: fps_max 300 -fps_max 300 - -// ........................... RCON Configuration .......................... // - -// RCON - remote console password. -rcon_password "" - -// Number of minutes to ban users who fail rcon authentication -// min. 0 -sv_rcon_banpenalty 10 - -// Enable/disable rcon logging -sv_rcon_log 1 - -// Max number of times a user can fail rcon authentication before being banned -// min. 1 max. 20 -sv_rcon_maxfailures 5 - -// ......................... Matchmaking Playlists ......................... // -// info: Selecting a playlist will allow the server to show up in matchmaking. -// Playlists use predefined settings and mapcycle. - -// You do not need to select a mapcycle as the server will cycle though the -// predefined playlist mapcycle. -// -// If you want to change the predefined playlist mapcycle you can create a -// custom mapcycle but only with maps from the playlist mapcycle. -// -// You can also create your own custom playlists. -// http://steamcommunity.com/sharedfiles/filedetails/?id=461776759 - -// "nwi/comp" -// "nwi/coop" -// "nwi/coop_elite" -// "nwi/coop_hardcore" -// "nwi/pvp_sustained" -// "nwi/pvp_tactical" -// -sv_playlist "nwi/coop" - -// ............................... Map Cycles ............................... // -// info: There are several predefined mapcycles available that are listed below. -// You can also create your own custom mapcycle. - -// "mapcycle.txt" - by default this contains the most popular options -// "mapcycle_all.txt" - all possible map/mode combinations for PvP -// "mapcycle_ambush.txt" - all ambush (VIP) maps -// "mapcycle_attackdefend.txt" - push & strike maps -// "mapcycle_checkpoint.txt" - all checkpoint maps -// "mapcycle_comp.txt" - firefight & elimination maps -// "mapcycle_conquer.txt" - conquer gamemode -// "mapcycle_cooperative.txt" - survival, coop, hunt maps -// "mapcycle_firefight.txt" - all firefight maps -// "mapcycle_flashpoint.txt" - all flashpoint maps -// "mapcycle_hunt.txt" - all hunt maps -// "mapcycle_infiltrate.txt" - all infiltrate (CTF) maps -// "mapcycle_objrespawn.txt" - all firefight & flashpoint featuring respawning for completing objectives -// "mapcycle_occupy.txt" - all occupy maps -// "mapcycle_practice.txt" -// "mapcycle_push.txt" - all push maps -// "mapcycle_singlelife.txt" - strike & ambush single life modes -// "mapcycle_skirmish.txt" - all skirmish maps -// "mapcycle_strike.txt" - all strike maps -// "mapcycle_survival.txt" - all survival maps -// "mapcycle_sustained_combat.txt" -// "mapcycle_tactical_operations.txt" -// "mapcycle_workshop.txt" - used by Workshop system -// -//mapcyclefile "mapcycle.txt" - -// .......................... Coop Mode Settings ............................ // -// info: Settings for all cooperative gamemodes - -// Set the maximum number of human players in Cooperative modes -// Maximum value: 8 -// Default: mp_coop_lobbysize 6 -//mp_coop_lobbysize 6 - -// Set the minimum number of bots -//mp_coop_min_bots 5 - -// Set the maximum number of bots -// Maximum value: maxplayers - mp_coop_lobbysize -//mp_coop_max_bots 18 - -// ........................... Voting Settings .............................. // - -// Allow voting? -sv_allow_votes 1 - -// Is map voting enabled? -sv_map_voting 1 - -// Allow spectators to vote? -sv_vote_allow_spectators 0 - -// A vote that fails cannot be re-submitted for this long -sv_vote_failure_timer 300 - -// Can people hold votes to change AI count? -sv_vote_issue_botcount_allowed 1 - -// The voting population required to pass a bot count vote -// min. 0.1 max. 1 -sv_vote_issue_botcount_min_population 0.55 - -// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes) -// min. 0 max. 1 -sv_vote_issue_botcount_min_ratio 0.5 - -// Can people hold votes to change AI difficulty? -sv_vote_issue_botdifficulty_allowed 1 - -// The voting population required to pass an AI difficulty vote -// min. 0.1 max. 1 -sv_vote_issue_botdifficulty_min_population 0.55 - -// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes) -// min. 0 max. 1 -sv_vote_issue_botdifficulty_min_ratio 0.5 - -// Can people hold votes to change the gamemode? -sv_vote_issue_changegamemode_allowed 0 - -// Can people hold votes to change levels? -sv_vote_issue_changelevel_allowed 1 - -// If enabled, wait until the end of the round to change levels -sv_vote_issue_changelevel_wait 1 - -// Can people hold votes to kick players from the server? -sv_vote_issue_kick_allowed 1 - -// Can we kick the other team? -sv_vote_issue_kick_other_team 0 - -// Can people hold votes to set the next level? -sv_vote_issue_nextlevel_allowed 1 - -// Allow players to extend the current map? -sv_vote_issue_nextlevel_allowextend 0 - -// Present players with a list of maps to choose from? -sv_vote_issue_nextlevel_choicesmode 1 - -// Not allowed to vote for a nextlevel if one has already been set -sv_vote_issue_nextlevel_prevent_change 1 - -// How many rounds before map voting can begin -sv_vote_issue_nextlevel_round_count_delay 1 - -// The voting population required to pass a next level vote -// min. 0.1 max. 1 -sv_vote_issue_nextlevel_min_population 0.55 - -// How strong does the yes vote need to be to win? (2.0 = 2x more voters) -// min. 1 max. 5 -sv_vote_issue_nextlevel_min_ratio 0.5 - -// Can people hold votes to restart the game? -sv_vote_issue_restart_game_allowed 1 - -// Can people hold votes to restart the round? -sv_vote_issue_restart_round_allowed 1 - -// Can people hold votes to scramble the teams? -sv_vote_issue_scramble_teams_allowed 1 - -// Can people hold votes to switch the teams? -sv_vote_issue_switch_teams_allowed 1 - -// How long should a kick ban last for if a player is kicked for hacking? (minutes) -sv_vote_kick_ban_duration_cheating 240 - -// The voting population required to kick a person for hacking -// min. 0.1 max. 1 -sv_vote_kick_hack_min_population 0.60 - -// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes) -// min. 0 max. 1 -sv_vote_kick_hack_min_ratio 0.66 - -// How long should a kick vote ban someone from the server? (in minutes) -sv_vote_kick_ban_duration_idle 0 - -// The voting population required to kick a person for being idle -// min. 0.1 max. 1 -sv_vote_kick_idle_min_population 0.20 - -// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes) -// min. 0 max. 1 -sv_vote_kick_idle_min_ratio 0.5 - -// How long should a kick ban last for if a player is kicked for team killing? (minutes) -sv_vote_kick_ban_duration_teamkilling 10 - -// The voting population required to kick a person for team killing -// min. 0.1 max. 1 -sv_vote_kick_tk_min_population 0.25 - -// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes) -// min. 0 max. 1 -sv_vote_kick_tk_min_ratio 0.66 - -// How long should a kick ban last for if a player is kicked for trolling? (minutes) -sv_vote_kick_ban_duration_trolling 60 - -// The voting population required to kick a person for trolling -// min. 0.1 max. 1 -sv_vote_kick_troll_min_population 0.40 - -// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes) -// min. 0 max. 1 -sv_vote_kick_troll_min_ration 0.66 - -// The minimum number of players needed on the server to start a vote kick -sv_vote_kick_min_players 4 - -// Minimum number of vote attempts required to start an actual vote -sv_vote_kick_min_voters 3 - -// The voting population required -// min. 0 max. 1 -sv_vote_min_population 0.55 - -// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes) -// min. 0 max. 1 -sv_vote_min_ratio 0.55 - -// ............................. Fast Download .............................. // -// info: Allows custom maps to be downloaded to the client. - -// Allows clients to download custom maps and textures etc. from the server at 20 kbps. -// Default: sv_allowdownload 1 -sv_allowdownload 1 - -// Allows clients to download custom maps, textures etc. from a web server with no transfer limit. -// Example: -// server location: maps/custommap.bsp -// web server location: http://example.com/custom/maps/custommap.bsp -// sv_downloadurl "http://example.com/custom" -// Default: sv_downloadurl "" -sv_downloadurl "" - -// ................................ Ban List ............................... // - -// sv_nwi_banlist is the official banlist. -sv_nwi_banlist 1 - -// personal banlist based on user IDs. -exec banned_user.cfg - -// personal banlist based on user IPs. -exec banned_ip.cfg - -writeid -writeip - -// ............................. Server Logging ............................. // - -//Enables logging to file, console, and udp < on | off >. -log on - -// Log server bans in the server logs. -// Default: sv_logbans 1 -sv_logbans 1 - -// Echo log information to the console. -// Default: sv_logecho 1 -sv_logecho 1 - -// Log server information in the log file. -// Default: sv_logfile 1 -sv_logfile 1 - -// Log server information to only one file. -// Default: sv_log_onefile 0 -sv_log_onefile 0 diff --git a/QuakeWorld/cfg/lgsm-default.cfg b/QuakeWorld/cfg/lgsm-default.cfg deleted file mode 100644 index e3da2497b..000000000 --- a/QuakeWorld/cfg/lgsm-default.cfg +++ /dev/null @@ -1,26 +0,0 @@ -// server info -hostname "" // server name shown in server browsers -rcon_password "" -sv_admininfo "lgsm " // 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 "" -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) From e4fff032c5076642fc85c2a3ac1c49f745d4614a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 21 Dec 2016 17:44:30 +0000 Subject: [PATCH 212/729] corrected IP address --- CallOfDuty4/cod4server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server index d77707606..32322ae81 100644 --- a/CallOfDuty4/cod4server +++ b/CallOfDuty4/cod4server @@ -27,7 +27,7 @@ version="161221" defaultmap="mp_crossfire" maxclients="32" port="28960" -ip="138.68.147.159" +ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ From 08761036252fca6bdb465a23b9b6aba407cc0a94 Mon Sep 17 00:00:00 2001 From: cedarlug Date: Fri, 23 Dec 2016 18:49:21 -0600 Subject: [PATCH 213/729] Hastebin seems to have gone https-only and changed up their API --- lgsm/functions/command_postdetails.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_postdetails.sh b/lgsm/functions/command_postdetails.sh index 330374cf5..524d9a43b 100644 --- a/lgsm/functions/command_postdetails.sh +++ b/lgsm/functions/command_postdetails.sh @@ -17,7 +17,7 @@ postdetails=yes # The options for posttarget are: # The default destination - hastebin -# posttarget="http://hastebin.com" +# posttarget="https://hastebin.com" # # Secondary destination - pastebin # posttarget="http://pastebin.com @@ -31,7 +31,7 @@ postdetails=yes # to post to pastebin, or # rustserver@gamerig:~$ posttarget= ./rustserver pd # to leave the output on the filesystem. -posttarget=${posttarget="http://hastebin.com"} +posttarget=${posttarget="https://hastebin.com"} # For pastebin, you can set the expiration period. # use 1 week as the default, other options are '24h' for a day, etc. @@ -126,16 +126,16 @@ if [ "${posttarget}" == "http://pastebin.com" ] ; then # Output the resulting link. fn_print_ok_nl "Posting details to pastbin.com for ${postexpire}" - echo " * url: ${posttarget}${link}" -elif [ "${posttarget}" == "http://hastebin.com" ] ; then + echo " Please share the following url for support: ${posttarget}${link}" +elif [ "${posttarget}" == "https://hastebin.com" ] ; then fn_print_dots "Posting details to hastebin.com for ${postexpire}" sleep 1 # hastebin is a bit simpler. If successful, the returned result # should look like: {"something":"key"}, putting the reference that # we need in "key". TODO - error handling. -CedarLUG - link=$(curl -s -d "$(<${tmpfile})" "${posttarget}/documents" | cut -d\" -f4) + link=$(curl -H "HTTP_X_REQUESTED_WITH:XMLHttpRequest" -s -d "$(<${tmpfile})" "${posttarget}/documents" | cut -d\" -f4) fn_print_ok_nl "Posting details to hastebin.com for ${postexpire}" - echo " * url: ${posttarget}/${link}" + echo " Please share the following url for support: ${posttarget}/${link}" else fn_print_warn_nl Review the output in "${tmpfile}" core_exit.sh From 7b5515e0a7093722ac7812bc41c9d6ca8e90645f Mon Sep 17 00:00:00 2001 From: cedarlug Date: Fri, 23 Dec 2016 18:53:40 -0600 Subject: [PATCH 214/729] Clarifying hastebin post expiration policy --- lgsm/functions/command_postdetails.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_postdetails.sh b/lgsm/functions/command_postdetails.sh index 524d9a43b..664b1c66b 100644 --- a/lgsm/functions/command_postdetails.sh +++ b/lgsm/functions/command_postdetails.sh @@ -128,7 +128,7 @@ if [ "${posttarget}" == "http://pastebin.com" ] ; then fn_print_ok_nl "Posting details to pastbin.com for ${postexpire}" echo " Please share the following url for support: ${posttarget}${link}" elif [ "${posttarget}" == "https://hastebin.com" ] ; then - fn_print_dots "Posting details to hastebin.com for ${postexpire}" + fn_print_dots "Posting details to hastebin.com (expires 30 days after last view)" sleep 1 # hastebin is a bit simpler. If successful, the returned result # should look like: {"something":"key"}, putting the reference that From 5471a66dcf12ea7a005f042cd939da6bb87a5c91 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 24 Dec 2016 16:42:55 +0000 Subject: [PATCH 215/729] Release 161224 --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CallOfDuty4/cod4server | 2 +- CallOfDutyUnitedOffensive/coduoserver | 2 +- CallOfDutyWorldAtWar/codwawserver | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- EmpiresMod/emserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- QuakeWorld/qwserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- 65 files changed, 65 insertions(+), 65 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 1b554719c..1dc5ff4b6 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index f96e49bf2..a7683daf3 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index 083e4ea13..54f91c82c 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 25ea4291d..16e41986e 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index ea25b01f8..54cf8d0e1 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index fed7213e3..ab472f35f 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index ee8f3c4e3..7812e584e 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index 093c375a6..1fb6daf02 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index 48b43b34d..f90fae26b 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server index 32322ae81..699c3b7ad 100644 --- a/CallOfDuty4/cod4server +++ b/CallOfDuty4/cod4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index 64c6bdfb0..29c1d6776 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index bfb080f98..961105a3d 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 8815e7c50..5583d4480 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 0f0ab0665..d161759cf 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index c32332f95..e6831dc3a 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index ef945f4d9..8ab616e5b 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index ddb55ae1c..aae064a3b 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index ac3c70e81..1c4dea80b 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 583035330..f1f23e0b9 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 3a17b0201..ff4e57238 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 823150526..e9af4107a 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 857e08da0..8001e4a7d 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 2d889a31b..add4c4256 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index be6b31e57..8fe3b4164 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 49c7666cb..314edb0d7 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index c0329bb47..42c220387 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index b41fb6e4f..8ecd7a8c2 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index e806c0ac5..f4da627f3 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index f0085130f..2a8cf8ce7 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index a8441d652..ebe71cc57 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index ca599ac78..b1a6f2a81 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index e3a2212a5..dd7f3b6dd 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 3688cbc3c..a49f23584 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 4d92fbcc3..167348f93 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index eab523850..b3aab5c06 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 5887be549..a3a5d4166 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index f7c69ec57..4fbb94103 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 27b9a55c1..47ca299b7 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 9b621eaec..d8abe3459 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 6c68ac06e..55b4876c2 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 8abbee131..a88526007 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index a36dd83db..c164da28e 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index f1592016e..1fdb643b0 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index a5f295b15..3dcc89927 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index c8c9bfe84..8694b7ec9 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index 078e0502d..5aebdaf1e 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index babb453bd..42e8fca97 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 3918cc8ba..488103ae4 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index ffa02313a..9371398fd 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index d5f205db4..4eff098cb 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index 22c489a78..071680a86 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 170abc607..f4ca338b7 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index 09555200a..6fba61b59 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 039bb1928..e75a16af0 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index d1be35534..f0173fece 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 3d4c3b3d6..d77647fb0 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 4352c13bf..aeab10ecc 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 8456c64a6..c525a3cc2 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 564440e32..867dcfd0b 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index e5c1e13dd..54ec900da 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 8eb5f1137..751bdf4fa 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 5e96d62f8..aaf89b698 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 8de3f2b21..ebf871439 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 2404333c3..30894d50c 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index a03b45e85..4f07338e8 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161221" +version="161224" ########################## ######## Settings ######## From 1d940914ee1a4ba72db5fc21b896129aae65cda4 Mon Sep 17 00:00:00 2001 From: FMU1337 Date: Sat, 31 Dec 2016 10:35:10 +0200 Subject: [PATCH 216/729] :) --- CounterStrikeGlobalOffensive/csgoserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 8ab616e5b..e84590702 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -27,7 +27,7 @@ version="161224" # [Game Modes] gametype gamemode # Arms Race 1 0 # Classic Casual 0 0 -# Classic Competitive 0 1 +# Classic Competitive 0 1 # Demolition 1 1 # Deathmatch 1 2 gametype="0" From b3eb67dddd47194e689357161036ac4e46ab7503 Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Tue, 3 Jan 2017 14:49:25 -0500 Subject: [PATCH 217/729] update Unreal Tournament Server 3193528 --- lgsm/functions/install_server_files.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 330e4fb40..82f02ce49 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -34,7 +34,7 @@ fn_install_server_files(){ elif [ "${gamename}" == "Unreal Tournament 99" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" elif [ "${gamename}" == "Unreal Tournament" ]; then - 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" + fileurl="https://s3.amazonaws.com/unrealtournament/UnrealTournament-Server-XAN-3193528-Linux.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-XAN-3193528-Linux.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="e3dd5853c4eb193674d5c832f60040d8" elif [ "${gamename}" == "Unreal Tournament 3" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament3/UT3-linux-server-2.1.tar.bz2"; filedir="${tmpdir}"; filename="UT3-linux-server-2.1.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="2527437b46f1b47f20228d27d72395a6" elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then From c739902811551b9b7682ea7b7969f9eeabac6d41 Mon Sep 17 00:00:00 2001 From: Chaos Date: Tue, 3 Jan 2017 13:51:38 -0600 Subject: [PATCH 218/729] Adding Multi Theft Auto Support --- MultiTheftAuto/mtaserver | 161 ++++++++++++++++++++++++ lgsm/functions/command_install.sh | 4 +- lgsm/functions/install_config.sh | 8 +- lgsm/functions/install_mta_resources.sh | 50 ++++++++ lgsm/functions/install_server_files.sh | 2 + 5 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 MultiTheftAuto/mtaserver create mode 100644 lgsm/functions/install_mta_resources.sh diff --git a/MultiTheftAuto/mtaserver b/MultiTheftAuto/mtaserver new file mode 100644 index 000000000..4e49001a2 --- /dev/null +++ b/MultiTheftAuto/mtaserver @@ -0,0 +1,161 @@ +#!/bin/bash +# San Andreas Multiplayer +# 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" +#emailfrom="email@example.com" + +# Pushbullet +# https://www.pushbullet.com/#settings +pushbulletalert="off" +pushbullettoken="accesstoken" + +# Start Variables +ip="0.0.0.0" +port="22003" + +fn_parms(){ +parms=" " +} + +#### Advanced Variables #### + +# Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="dgibbs64" +githubrepo="linuxgsm" +githubbranch="mta" + +# Server Details +servicename="mta-server" +gamename="Multi Theft Auto" +engine="RenderWare" + +# 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" + +# Server Specific +systemdir="${filesdir}" +resourcesdir="${systemdir}/mods/deathmatch/resources" +executabledir="${systemdir}" +executable="./mta-server64" +servercfg="mtaserver.conf" +servercfgdir="${systemdir}/mods/deathmatch" +servercfgfullpath="${servercfgdir}/${servercfg}" + +# Backups +backupdir="${rootdir}/backups" + +# Logging +logdays="7" +gamelogdir="${filesdir}/mods/deathmatch/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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index a840af48a..e58ed8f6a 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}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]||[ "${gamename}" == "Multi Theft Auto" ]; then installer=1 install_server_files.sh elif [ -n "${appid}" ]; then @@ -34,6 +34,8 @@ elif [ "${gamename}" == "Don't Starve Together" ]; then install_dst_token.sh elif [ "${gamename}" == "TeamSpeak 3" ]; then install_ts3db.sh +elif [ "${gamename}" == "Multi Theft Auto" ]; then + install_mta_resources.sh fi fix.sh diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index a9a97423f..e32956b3d 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -488,4 +488,10 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars -fi \ No newline at end of file +elif [ "${gamename}" == "Multi Theft Auto" ]; then + gamedirname="MultiTheftAuto" + array_configs+=( acl.xml mtaserver.conf vehiclecolors.conf ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars +fi diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh new file mode 100644 index 000000000..042e7e21c --- /dev/null +++ b/lgsm/functions/install_mta_resources.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# LGSM install_ts3db.sh function +# Author: Daniel Gibbs +# Contributor: PhilPhonic +# Website: https://gameservermanagers.com +# Description: Installs the libmysqlclient for database functions on the server and optionally installs default resources required to run the server + +local commandname="INSTALL" +local commandaction="Install" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +fn_install_libmysqlclient16(){ + echo "" + echo "checking if libmysqlclient16 is installed" + echo "=================================" + sleep 1 + ldd /usr/lib/libmysqlclient.so.16 | grep "libmysqlclient.so.16 => not found" + if [ $? -eq 0 ]; then + echo "libmysqlclient16 not installed. Installing.." + fileurl="https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16"; filedir="/usr/lib/"; filename="libmysqlclient.so.16"; executecmd="noexecute" run="norun"; force="noforce"; md5="6c188e0f8fb5d7a29f4bc413b9fed6c2" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + fi + echo "libmysqlclient16 installed." +} + +fn_install_resources(){ + echo "" + echo "installing default resources" + echo "=================================" + fileurl="http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip"; filedir="${tempdir}"; filename="multitheftauto_resources.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="97a587509698f7f010bcd6e5c6dd9c31" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + fn_dl_extract "${filedir}" "${filename}" "${resourcesdir}" + echo "default resources installed." +} + +fn_install_libmysqlclient16 + +if [ -z "${autoinstall}" ]; then + echo "" + while true; do + read -e -i "n" -p "Do you want to have the default resources downloaded? (Server is inoperable without resources!) [y/N]" yn + case $yn in + [Yy]* ) fn_install_resources && break;; + [Nn]* ) break;; + * ) echo "Please answer yes or no.";; + esac + done +else +fn_print_warning_nl "./${selfname} auto-install does not download the default resources. If you require them use ./${selfname} install" +fi diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 330e4fb40..990dca980 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -39,6 +39,8 @@ fn_install_server_files(){ fileurl="http://files.gameservermanagers.com/UnrealTournament3/UT3-linux-server-2.1.tar.bz2"; filedir="${tmpdir}"; filename="UT3-linux-server-2.1.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="2527437b46f1b47f20228d27d72395a6" elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fileurl="http://files.gameservermanagers.com/WolfensteinEnemyTerritory/enemy-territory.260b.tar.bz2"; filedir="${tmpdir}"; filename="enemy-territory.260b.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f833f514bfcdd46b42c111f83350c5a7" + elif [ "${gamename}" == "Multi Theft Auto" ]; then + fileurl="https://linux.mtasa.com/dl/153/multitheftauto_linux_x64-1.5.3.tar.gz"; filedir="${tempdir}"; filename="multitheftauto_linux_x64-1.5.3.tar.gz"; executecmd="noexecute" run="norun"; force="noforce"; md5="77caf91fe280877a8d21f8046d5f42ba" fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" From cff49d1cb50b5434044ceae1035b62e884372a61 Mon Sep 17 00:00:00 2001 From: Chaos Date: Tue, 3 Jan 2017 14:04:49 -0600 Subject: [PATCH 219/729] Name adjustment --- MultiTheftAuto/mtaserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MultiTheftAuto/mtaserver b/MultiTheftAuto/mtaserver index 4e49001a2..c26176d19 100644 --- a/MultiTheftAuto/mtaserver +++ b/MultiTheftAuto/mtaserver @@ -1,5 +1,5 @@ #!/bin/bash -# San Andreas Multiplayer +# Multi Theft Auto # Server Management Script # Author: Daniel Gibbs # Website: https://gameservermanagers.com From 1026922eaa88471723c4ae6c3b2664db9d7fe0c1 Mon Sep 17 00:00:00 2001 From: Chaos Date: Tue, 3 Jan 2017 20:49:50 -0600 Subject: [PATCH 220/729] Updated look of server file to match newer versions, updated version number --- MultiTheftAuto/mtaserver | 67 ++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/MultiTheftAuto/mtaserver b/MultiTheftAuto/mtaserver index c26176d19..7fe082265 100644 --- a/MultiTheftAuto/mtaserver +++ b/MultiTheftAuto/mtaserver @@ -9,32 +9,47 @@ if [ -f ".dev-debug" ]; then set -x fi -version="210516" +version="170103" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +# None Available + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms=" " +} + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" +emailfrom="" -# Pushbullet -# https://www.pushbullet.com/#settings +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +channeltag="" -# Start Variables -ip="0.0.0.0" -port="22003" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -fn_parms(){ -parms=" " -} +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### # Github Branch Select # Allows for the use of different function files @@ -43,12 +58,18 @@ githubuser="dgibbs64" githubrepo="linuxgsm" githubbranch="mta" -# Server Details -servicename="mta-server" +## LinuxGSM Server Details +# Do not edit gamename="Multi Theft Auto" engine="RenderWare" -# Directories +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="mta-server" + +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -58,7 +79,7 @@ libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" -# Server Specific +## Server Specific Directories systemdir="${filesdir}" resourcesdir="${systemdir}/mods/deathmatch/resources" executabledir="${systemdir}" @@ -67,20 +88,18 @@ servercfg="mtaserver.conf" servercfgdir="${systemdir}/mods/deathmatch" servercfgfullpath="${servercfgdir}/${servercfg}" -# Backups +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${filesdir}/mods/deathmatch/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" +## Logs Naming scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" From 3b9ec2b1a4995af5b5b6426594bc7bf2be459cea Mon Sep 17 00:00:00 2001 From: Chaos Date: Tue, 3 Jan 2017 20:56:35 -0600 Subject: [PATCH 221/729] Fixes Steam Login fail when password includes a '$' --- lgsm/functions/check_steamcmd.sh | 2 +- lgsm/functions/command_validate.sh | 4 ++-- lgsm/functions/install_server_files.sh | 10 +++++----- lgsm/functions/update_steamcmd.sh | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 20a36afea..79c016b58 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -58,7 +58,7 @@ fn_check_steamcmd_sh(){ fn_check_steamcmd_guard(){ if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then # Checks that SteamCMD is working correctly and will prompt Steam Guard if required. - "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit + "${steamcmddir}"/steamcmd.sh +login "${steamuser}" '${steampass}' +quit if [ $? -ne 0 ]; then fn_print_failure_nl "Error running SteamCMD" fi diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 0037185b4..8b55aaae9 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -24,9 +24,9 @@ fn_validation(){ fi if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}" else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}" fi if [ $? != 0 ]; then fn_print_fail_nl "Validating files: SteamCMD" diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 330e4fb40..7d0aa48d3 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -78,18 +78,18 @@ fn_install_server_files_steamcmd(){ if [ "${counter}" -le "4" ]; then if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} +quit local exitcode=$? else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit local exitcode=$? fi elif [ "${counter}" -ge "5" ]; then if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} -validate +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} -validate +quit local exitcode=$? else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} -validate +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} -validate +quit local exitcode=$? fi fi @@ -107,7 +107,7 @@ fn_install_server_files_steamcmd(){ counter="0" while [ "${counter}" -le "4" ]; do counter=$((counter+1)) - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} -validate +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} -validate +quit local exitcode=$? done fi diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 167daf5fb..d2808974c 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -26,9 +26,9 @@ fn_update_steamcmd_dl(){ fi if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}" else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}" fi fix.sh @@ -156,7 +156,7 @@ fn_update_steamcmd_check(){ fi # Gets availablebuild info - availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"${branchname}\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) + availablebuild=$(./steamcmd.sh +login "${steamuser}" '${steampass}' +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"${branchname}\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) if [ -z "${availablebuild}" ]; then fn_print_fail "Checking for update: SteamCMD" sleep 1 From d7bcd4bad3408ed0b57258bae029ae8f9b5d44f6 Mon Sep 17 00:00:00 2001 From: Chaos Date: Wed, 4 Jan 2017 22:26:45 -0600 Subject: [PATCH 222/729] Typo in the install file --- lgsm/functions/install_server_files.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 990dca980..d25b1e451 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -40,7 +40,7 @@ fn_install_server_files(){ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fileurl="http://files.gameservermanagers.com/WolfensteinEnemyTerritory/enemy-territory.260b.tar.bz2"; filedir="${tmpdir}"; filename="enemy-territory.260b.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f833f514bfcdd46b42c111f83350c5a7" elif [ "${gamename}" == "Multi Theft Auto" ]; then - fileurl="https://linux.mtasa.com/dl/153/multitheftauto_linux_x64-1.5.3.tar.gz"; filedir="${tempdir}"; filename="multitheftauto_linux_x64-1.5.3.tar.gz"; executecmd="noexecute" run="norun"; force="noforce"; md5="77caf91fe280877a8d21f8046d5f42ba" + fileurl="https://linux.mtasa.com/dl/153/multitheftauto_linux_x64-1.5.3.tar.gz"; filedir="${tmpdir}"; filename="multitheftauto_linux_x64-1.5.3.tar.gz"; executecmd="noexecute" run="norun"; force="noforce"; md5="77caf91fe280877a8d21f8046d5f42ba" fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" From c1f781ea18701d22f58906dde25dfd3b06276f14 Mon Sep 17 00:00:00 2001 From: Chaos Date: Wed, 4 Jan 2017 23:08:21 -0600 Subject: [PATCH 223/729] Added the mta resources to the core_functions script --- lgsm/functions/core_functions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index ae1b436ea..a7f5e2805 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -554,6 +554,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +install_mta_resources.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + # Calls the global Ctrl-C trap core_trap.sh From 784a6ff26892fb5ab5562de4982fa774be029755 Mon Sep 17 00:00:00 2001 From: Chaos Date: Wed, 4 Jan 2017 23:08:54 -0600 Subject: [PATCH 224/729] Check if configuration directory exists before downloading and moving config files --- lgsm/functions/install_config.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index e32956b3d..724d88aab 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -490,6 +490,7 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_set_config_vars elif [ "${gamename}" == "Multi Theft Auto" ]; then gamedirname="MultiTheftAuto" + fn_check_cfgdir array_configs+=( acl.xml mtaserver.conf vehiclecolors.conf ) fn_fetch_default_config fn_default_config_remote From b6d0888a1b47af542f36aaa8657bfc1325f23fd9 Mon Sep 17 00:00:00 2001 From: Chaos Date: Wed, 4 Jan 2017 23:23:19 -0600 Subject: [PATCH 225/729] Improved formatting of the mta_resource install --- lgsm/functions/install_mta_resources.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh index 042e7e21c..97d17c940 100644 --- a/lgsm/functions/install_mta_resources.sh +++ b/lgsm/functions/install_mta_resources.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_ts3db.sh function +# LGSM install_mta_resources.sh function # Author: Daniel Gibbs # Contributor: PhilPhonic # Website: https://gameservermanagers.com @@ -11,11 +11,10 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_install_libmysqlclient16(){ echo "" - echo "checking if libmysqlclient16 is installed" + echo "Checking if libmysqlclient16 is installed" echo "=================================" sleep 1 - ldd /usr/lib/libmysqlclient.so.16 | grep "libmysqlclient.so.16 => not found" - if [ $? -eq 0 ]; then + if [ ! -f /usr/lib/libmysqlclient.so.16 ]; then echo "libmysqlclient16 not installed. Installing.." fileurl="https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16"; filedir="/usr/lib/"; filename="libmysqlclient.so.16"; executecmd="noexecute" run="norun"; force="noforce"; md5="6c188e0f8fb5d7a29f4bc413b9fed6c2" fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" @@ -25,12 +24,12 @@ fn_install_libmysqlclient16(){ fn_install_resources(){ echo "" - echo "installing default resources" + echo "Installing Default Resources" echo "=================================" - fileurl="http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip"; filedir="${tempdir}"; filename="multitheftauto_resources.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="97a587509698f7f010bcd6e5c6dd9c31" + fileurl="http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip"; filedir="${tmpdir}"; filename="multitheftauto_resources.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="97a587509698f7f010bcd6e5c6dd9c31" fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${resourcesdir}" - echo "default resources installed." + echo "Default Resources Installed." } fn_install_libmysqlclient16 From 410530ae1e802c4a85ca970b92b46c3469de82c2 Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 00:35:47 -0600 Subject: [PATCH 226/729] Custom opt --- lgsm/functions/core_getopt.sh | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 03aa7359a..86dbdbc73 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -697,6 +697,66 @@ case "${getopt}" in esac } +fn_getopt_renderware(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|detect-deps) + command_dev_detect_deps.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + } | column -s $'\t' -t + esac +} + if [ "${gamename}" == "Mumble" ]; then fn_getopt_mumble elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then @@ -717,6 +777,8 @@ elif [ "${engine}" == "unreal2" ]; then fi elif [ "${engine}" == "unreal" ]; then fn_getopt_unreal +elif [ "${engine}" == "RenderWare" ]; then + fn_getopt_renderware else fn_getopt_generic fi From 9052fbb13902ac86cd6d3a53365394218d972fe7 Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 00:36:45 -0600 Subject: [PATCH 227/729] Changes to how the mysqlclient gets installed, if user cannot use sudo it will warn the user about doing it after the installation --- lgsm/functions/install_mta_resources.sh | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh index 97d17c940..1fc11171a 100644 --- a/lgsm/functions/install_mta_resources.sh +++ b/lgsm/functions/install_mta_resources.sh @@ -15,11 +15,20 @@ fn_install_libmysqlclient16(){ echo "=================================" sleep 1 if [ ! -f /usr/lib/libmysqlclient.so.16 ]; then - echo "libmysqlclient16 not installed. Installing.." - fileurl="https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16"; filedir="/usr/lib/"; filename="libmysqlclient.so.16"; executecmd="noexecute" run="norun"; force="noforce"; md5="6c188e0f8fb5d7a29f4bc413b9fed6c2" - fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + fn_print_warn "libmysqlclient16 not installed. Installing.." + sleep 1 + sudo -v > /dev/null 2>&1 + if [ $? -eq 0 ]; then + fileurl="https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16"; filedir="${tmpdir}"; filename="libmysqlclient.so.16"; executecmd="executecmd" run="norun"; force="noforce"; md5="6c188e0f8fb5d7a29f4bc413b9fed6c2" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + sudo mv ${tmpdir}/${filename} /usr/lib/${filename} + else + fn_print_fail_nl "Failed to install libmysqlclient16, $(whoami) does not have sudo access. Download it manually and place it in /usr/lib" + sleep 1 + fi + else + echo "libmysqlclient16 already installed." fi - echo "libmysqlclient16 installed." } fn_install_resources(){ @@ -37,7 +46,7 @@ fn_install_libmysqlclient16 if [ -z "${autoinstall}" ]; then echo "" while true; do - read -e -i "n" -p "Do you want to have the default resources downloaded? (Server is inoperable without resources!) [y/N]" yn + read -e -i "y" -p "Do you want to have the default resources downloaded? (Server is inoperable without resources!) [y/N]" yn case $yn in [Yy]* ) fn_install_resources && break;; [Nn]* ) break;; From f2cccf0bdd832d53102f0dfc08dcd10d655e44d5 Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 00:40:16 -0600 Subject: [PATCH 228/729] Appearance change --- lgsm/functions/install_mta_resources.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh index 1fc11171a..8d3074f45 100644 --- a/lgsm/functions/install_mta_resources.sh +++ b/lgsm/functions/install_mta_resources.sh @@ -15,7 +15,7 @@ fn_install_libmysqlclient16(){ echo "=================================" sleep 1 if [ ! -f /usr/lib/libmysqlclient.so.16 ]; then - fn_print_warn "libmysqlclient16 not installed. Installing.." + fn_print_warn_nl "libmysqlclient16 not installed. Installing.." sleep 1 sudo -v > /dev/null 2>&1 if [ $? -eq 0 ]; then From f2d8752de72240e363eb35cc627a99568863553a Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 00:50:52 -0600 Subject: [PATCH 229/729] Dependencies changed for MTA --- lgsm/functions/check_deps.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 36e0a8f04..0279a9ede 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -158,8 +158,8 @@ if [ -n "$(command -v dpkg-query)" ]; then fi fi - # All servers except ts3,mumble and minecraft servers require libstdc++6 and lib32gcc1 - if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${engine}" != "lwjgl2" ]; then + # All servers except ts3,mumble,multitheftauto and minecraft servers require libstdc++6 and lib32gcc1 + if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${engine}" != "lwjgl2" ]&&[ "${engine}" != "RenderWare" ]; then if [ "${arch}" == "x86_64" ]; then array_deps_required+=( lib32gcc1 libstdc++6:i386 ) else @@ -238,8 +238,8 @@ elif [ -n "$(command -v yum)" ]; then fi fi - # All servers except ts3,mumble and minecraft servers require glibc.i686 and libstdc++.i686 - if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${engine}" != "lwjgl2" ]; then + # All servers except ts3,mumble,multitheftauto and minecraft servers require glibc.i686 and libstdc++.i686 + if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${engine}" != "lwjgl2" ]&&[ "${engine}" != "RenderWare" ]; then array_deps_required+=( glibc.i686 libstdc++.i686 ) fi From 5ed99c9943788d4be0ad5a78fcbd3a4db8eb336f Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 01:14:46 -0600 Subject: [PATCH 230/729] Strip components flag on the gzip extractions. Required for the way MTA compresses it's archives. --- lgsm/functions/core_dl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 6d971b997..e7f73621c 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -58,7 +58,7 @@ fn_dl_extract(){ mime=$(file -b --mime-type "${filedir}/${filename}") if [ "${mime}" == "application/gzip" ]||[ "${mime}" == "application/x-gzip" ]; then - tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}") + tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}" --strip-components=1) elif [ "${mime}" == "application/x-bzip2" ]; then tarcmd=$(tar -jxf "${filedir}/${filename}" -C "${extractdir}") elif [ "${mime}" == "application/zip" ]; then From 8949b3d3de51357a4abeffabfdc58d622c80e9a2 Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 11:17:23 -0600 Subject: [PATCH 231/729] Do not require glibc --- lgsm/functions/info_glibc.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 951adefd7..d9529995b 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -131,6 +131,9 @@ elif [ "${engine}" == "refractor" ]; then elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then glibcrequired="2.2.4" glibcfix="no" +elif [ "${gamename}" == "Multi Theft Auto" ]; then + glibcrequired="NOT REQUIRED" + glibcfix="no" else glibcrequired="UNKNOWN" glibcfix="no" From 631dab60ad375ba153e8aeab1fd3275b17df9955 Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 12:35:18 -0600 Subject: [PATCH 232/729] command details --- lgsm/functions/command_details.sh | 24 +++++++++++++++++++-- lgsm/functions/info_config.sh | 36 ++++++++++++++++++++++++++++++- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 9d9d8fddc..3be04f541 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -168,6 +168,11 @@ fn_details_gameserver(){ echo -e "${blue}dbplugin:\t${default}${dbplugin}" fi + # ASE (Multi Theft Auto) + if [ -n "${ase}" ]; then + echo -e "${blue}ASE:\t${default}${ase}" + fi + # Online status if [ "${status}" == "0" ]; then echo -e "${blue}Status:\t${red}OFFLINE${default}" @@ -310,7 +315,7 @@ fn_details_ports(){ parmslocation="${red}UNKNOWN${default}" # engines that require editing in the config file - 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" ) + 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" "RenderWare" ) for port_edit in "${ports_edit_array[@]}" do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then @@ -701,6 +706,19 @@ fn_details_ark(){ } | column -s $'\t' -t } +fn_details_mta(){ + echo -e "netstat -atunp | grep mta-server64" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" + echo -e "> Game\tOUTBOUND\t${port}\tudp\tPort=${port}" + echo -e "> HTTP Server\tINBOUND\t${httpport}\ttcp" + if [ "${ase}" == "Enabled" ]; then + echo -e "> ASE Game_Monitor\tOUTBOUND\t$((${port} + 123))\tudp" + fi + } | column -s $'\t' -t +} + # Run checks and gathers details to display. fn_display_details() { @@ -716,7 +734,7 @@ fn_display_details() { fn_details_script fn_details_backup # Some game servers do not have parms. - if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]; then + if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]&&[ "${engine}" != "RenderWare" ]; then fn_parms fn_details_commandlineparms fi @@ -783,6 +801,8 @@ fn_display_details() { fn_details_rust elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_details_wolfensteinenemyterritory + elif [ "${gamename}" == "Multi Theft Auto" ]; then + fn_details_mta else fn_print_error_nl "Unable to detect server engine." fi diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 829bba841..a5fbf1a40 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -576,6 +576,38 @@ fn_info_config_sdtd(){ fi } +fn_info_config_mta(){ + if [ ! -f "${servercfgfullpath}" ]; then + port="${unavailable}" + httpport="${unavailable}" + ase="${unavailable}" + servername="${unavailable}" + serverpassword="${unavailable}" + maxplayers="${zero}" + else + port=$(grep -m 1 "serverport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') + httpport=$(grep -m 1 "httpport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') + ase=$(grep -m 1 "ase" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') + servername=$(grep -m 1 "servername" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<") + serverpassword=$(grep -m 1 "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<") + maxplayers=$(grep -m 1 "maxplayers" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') + + if [ "${ase}" == "1" ]; then + ase="Enabled" + else + ase="Disabled" + fi + + # Not Set + port=${port:-"NOT SET - Defaults to 22003"} + httpport=${httpport:-"NOT SET - Defaults to 22005"} + ase=${ase:-"NOT SET - Defaults to Disabled"} + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET - Defaults to none"} + maxplayers=${maxplayers:-"0"} + fi +} + # Just Cause 2 if [ "${engine}" == "avalanche" ]; then fn_info_config_avalanche @@ -643,4 +675,6 @@ elif [ "${gamename}" == "7 Days To Die" ]; then fn_info_config_sdtd elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_info_config_wolfensteinenemyterritory -fi \ No newline at end of file +elif [ "${gamename}" == "Multi Theft Auto" ]; then + fn_info_config_mta +fi From 0a361905501f42100cb4e32c776b0566c3a40bc4 Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 12:35:26 -0600 Subject: [PATCH 233/729] Graceful stop --- lgsm/functions/command_stop.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index c5483a864..4175ee5dd 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -172,6 +172,34 @@ fn_stop_graceful_minecraft(){ fn_stop_tmux } +# Attempts graceful of mta using rcon 'quit' command. +fn_stop_graceful_mta(){ + fn_print_dots "Graceful: console quit" + fn_script_log_info "Graceful: console quit" + # sends quit + tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 + # waits up to 120 seconds giving the server time to shutdown gracefuly, we need a long wait time here as resources are stopped individually and process their own shutdowns + for seconds in {1..120}; do + check_status.sh + if [ "${status}" == "0" ]; then + fn_print_ok "Graceful: console quit: ${seconds}: " + fn_print_ok_eol_nl + fn_script_log_pass "Graceful: console quit: OK: ${seconds} seconds" + break + fi + sleep 1 + fn_print_dots "Graceful: console quit: ${seconds}" + done + check_status.sh + if [ "${status}" != "0" ]; then + fn_print_error "Graceful: console quit: " + fn_print_fail_eol_nl + fn_script_log_error "Graceful: console quit: FAIL" + fi + sleep 1 + fn_stop_tmux +} + fn_stop_graceful_select(){ if [ "${gamename}" == "7 Days To Die" ]; then fn_stop_graceful_sdtd @@ -181,6 +209,8 @@ fn_stop_graceful_select(){ fn_stop_graceful_goldsource elif [ "${engine}" == "lwjgl2" ]; then fn_stop_graceful_minecraft + elif [ "${engine}" == "RenderWare" ]; then + fn_stop_graceful_mta else fn_stop_tmux fi From de2ccb3423e1ce64acfd5b369bd78266412584bc Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 12:35:35 -0600 Subject: [PATCH 234/729] Ready for master! --- MultiTheftAuto/mtaserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MultiTheftAuto/mtaserver b/MultiTheftAuto/mtaserver index 7fe082265..07ac899f0 100644 --- a/MultiTheftAuto/mtaserver +++ b/MultiTheftAuto/mtaserver @@ -56,7 +56,7 @@ logdays="7" # from a different repo and/or branch. githubuser="dgibbs64" githubrepo="linuxgsm" -githubbranch="mta" +githubbranch="master" ## LinuxGSM Server Details # Do not edit From a9999f7d36d71ed31e32b87d64dd71a886231a75 Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 13:14:38 -0600 Subject: [PATCH 235/729] Header change --- lgsm/functions/install_mta_resources.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh index 8d3074f45..c1f16393a 100644 --- a/lgsm/functions/install_mta_resources.sh +++ b/lgsm/functions/install_mta_resources.sh @@ -1,7 +1,7 @@ #!/bin/bash # LGSM install_mta_resources.sh function # Author: Daniel Gibbs -# Contributor: PhilPhonic +# Contributor: ChaosMTA # Website: https://gameservermanagers.com # Description: Installs the libmysqlclient for database functions on the server and optionally installs default resources required to run the server From e18c0d4489db0706f84c2b4ebed2620f83d2b99d Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 5 Jan 2017 15:36:16 -0600 Subject: [PATCH 236/729] Add unzip to required dependencies for LGSM --- lgsm/functions/check_deps.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 36e0a8f04..7d02097a4 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -147,7 +147,7 @@ if [ -n "$(command -v dpkg-query)" ]; then array_deps_missing=() # LGSM requirements - array_deps_required=( curl wget ca-certificates file bsdmainutils util-linux python bzip2 gzip ) + array_deps_required=( curl wget ca-certificates file bsdmainutils util-linux python bzip2 gzip unzip ) # All servers except ts3 require tmux if [ "${gamename}" != "TeamSpeak 3" ]; then @@ -224,9 +224,9 @@ elif [ -n "$(command -v yum)" ]; then # LGSM requirements if [ "${distroversion}" == "6" ]; then - array_deps_required=( curl wget util-linux-ng python file gzip bzip2 ) + array_deps_required=( curl wget util-linux-ng python file gzip bzip2 unzip ) else - array_deps_required=( curl wget util-linux python file gzip bzip2 ) + array_deps_required=( curl wget util-linux python file gzip bzip2 unzip ) fi # All servers except ts3 require tmux From 257ba88d7b6b286b4afe90e5c3ced7131aba6f91 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 6 Jan 2017 21:16:26 +0000 Subject: [PATCH 237/729] Updated fctrserver to match new style --- Factorio/fctrserver | 187 +++++++++++++++++++++++++++----------------- 1 file changed, 114 insertions(+), 73 deletions(-) diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 6ef50a96a..8ab14b1b2 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -1,57 +1,85 @@ #!/bin/bash -# Factorio -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# Contributor: Kristian Polso +# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# Purpose: Empires Mod | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com + +# Debugging 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="171016" +version="161224" -#### Variables #### +########################## +######## Settings ######## +########################## -# Notification Alerts -# (on|off) +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +port="34197" +rconport="34198" +rconpassword="factorio" +ip="0.0.0.0" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" +} + +#### LinuxGSM Settings #### -# Email +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" +emailfrom="" -# Pushbullet -# https://www.pushbullet.com/#settings +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +channeltag="" -# Server settings -# More settings available after install in serverfiles/data/server-settings.json +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" -port="34197" -rconport="34198" -rconpassword="factorio" -fn_parms(){ -parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" -} +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. -githubuser="Krisseck" +githubuser="GameServerManagers" githubrepo="LinuxGSM" -githubbranch="master" +githubbranch="feature/factorio" -# Server Details +## LinuxGSM Server Details +# Do not edit gamename="Factorio" +engine="" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers servicename="fctr-server" -# Directories +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -60,31 +88,34 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" -executabledir="${filesdir}" -executable="./bin/x64/factorio" -servercfg="data/server-settings.json" -servercfgdefault="data/server-settings.example.json" -servercfgdir="${filesdir}" +executabledir="${filesdir}/bin/x64" +executable="./factorio" +servercfg="server-settings.json" +servercfgdefault="server-settings.json" +servercfgdir="${filesdir}/data/" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" -gamelogdir="${rootdir}/log" +## Logging Directories 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" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ @@ -95,36 +126,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}" } @@ -141,8 +172,18 @@ functionfile="${FUNCNAME}" fn_fetch_core_dl } +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + core_dl.sh core_functions.sh - getopt=$1 core_getopt.sh \ No newline at end of file From f8b88a8a3e777b857ad47fba258c9882510db20e Mon Sep 17 00:00:00 2001 From: Chaos Date: Fri, 6 Jan 2017 20:17:00 -0600 Subject: [PATCH 238/729] Refreshes the package list after adding i386 architecture --- lgsm/functions/check_deps.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 36e0a8f04..7986f6b0c 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -92,7 +92,7 @@ fn_found_missing_deps(){ sleep 1 echo -en " \r" if [ -n "$(command -v dpkg-query)" ]; then - cmd="sudo dpkg --add-architecture i386; sudo apt-get -y install ${array_deps_missing[@]}" + cmd="sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get -y install ${array_deps_missing[@]}" eval ${cmd} elif [ -n "$(command -v yum)" ]; then cmd="sudo yum -y install ${array_deps_missing[@]}" @@ -110,7 +110,7 @@ fn_found_missing_deps(){ fn_print_warning_nl "$(whoami) does not have sudo access. Manually install dependencies." fn_script_log_warn "$(whoami) does not have sudo access. Manually install dependencies." if [ -n "$(command -v dpkg-query)" ]; then - echo " sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}" + echo " sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get install ${array_deps_missing[@]}" elif [ -n "$(command -v yum)" ]; then echo " sudo yum install ${array_deps_missing[@]}" fi From 352bd068877fc63a7fc711896fd6b7f1f5117322 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 14:20:28 +0000 Subject: [PATCH 239/729] Various minor changes --- Factorio/fctrserver | 1 + lgsm/functions/command_details.sh | 6 ++-- lgsm/functions/install_config.sh | 6 +++- lgsm/functions/install_factorio_save.sh | 3 +- lgsm/functions/update_factorio.sh | 44 ++++++++++++------------- 5 files changed, 32 insertions(+), 28 deletions(-) diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 8ab14b1b2..5a1e0fc91 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -102,6 +102,7 @@ servercfgfullpath="${servercfgdir}/${servercfg}" backupdir="${rootdir}/backups" ## Logging Directories +gamelogdir="${filesdir}" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" scriptlog="${scriptlogdir}/${servicename}-script.log" diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 8853b30ee..bb84bf396 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -309,7 +309,7 @@ fn_details_ports(){ echo -e "Change ports by editing the parameters in:" parmslocation="${red}UNKNOWN${default}" - # engines that require editing in the config file + # engines/games that require editing in the config file 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 @@ -317,8 +317,8 @@ fn_details_ports(){ parmslocation="${servercfgfullpath}" fi done - # engines that require editing in the script file - local ports_edit_array=( "Factorio" "goldsource" "Hurtworld" "iw3.0" "Rust" "spark" "source" "starbound" "unreal4" ) + # engines/games that require editing in the script file + local ports_edit_array=( "goldsource" "Factorio" "Hurtworld" "iw3.0" "Rust" "spark" "source" "starbound" "unreal4" ) for port_edit in "${ports_edit_array[@]}" do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 5e58aebbe..10a7040d2 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -262,7 +262,11 @@ elif [ "${gamename}" == "Double Action: Boogaloo" ]; then fn_default_config_remote fn_set_config_vars elif [ "${gamename}" == "Factorio" ]; then - : + gamedirname="Factorio" + array_configs+=( server-settings.json ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Fistful of Frags" ]; then gamedirname="FistfulofFrags" array_configs+=( server.cfg ) diff --git a/lgsm/functions/install_factorio_save.sh b/lgsm/functions/install_factorio_save.sh index 8a9850818..8cb28b326 100644 --- a/lgsm/functions/install_factorio_save.sh +++ b/lgsm/functions/install_factorio_save.sh @@ -11,5 +11,4 @@ echo "" echo "Creating initial Factorio savefile" echo "=================================" sleep 1 -${filesdir}/bin/x64/factorio --create ${filesdir}/save1 -cp ${filesdir}/data/server-settings.example.json ${filesdir}/data/server-settings.json +"${executabledir}"/factorio --create ${filesdir}/save1 diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index 8122678a0..7535358f6 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -16,7 +16,7 @@ fn_update_factorio_dl(){ fn_script_log "Copying to ${filesdir}" cp -R "${tmpdir}/factorio/"* "${filesdir}" local exitcode=$? - if [ ${exitcode} -eq 0 ]; then + if [ "${exitcode}" == "0" ]; then fn_print_ok_eol_nl else fn_print_fail_eol_nl @@ -27,13 +27,13 @@ fn_update_factorio_currentbuild(){ # Gets current build info # Checks if current build info is available. If it fails, then a server restart will be forced to generate logs. if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then - fn_print_error "Checking for update: Factorio.com" + fn_print_error "Checking for update: factorio.com" sleep 1 - fn_print_error_nl "Checking for update: Factorio.com: No logs with server version found" - fn_script_log_error "Checking for update: Factorio.com: No logs with server version found" + fn_print_error_nl "Checking for update: factorio.com: No logs with server version found" + fn_script_log_error "Checking for update: factorio.com: No logs with server version found" sleep 1 - fn_print_info_nl "Checking for update: Factorio.com: Forcing server restart" - fn_script_log_info "Checking for update: Factorio.com: Forcing server restart" + fn_print_info_nl "Checking for update: factorio.com: Forcing server restart" + fn_script_log_info "Checking for update: factorio.com: Forcing server restart" sleep 1 exitbypass=1 command_stop.sh @@ -42,8 +42,8 @@ fn_update_factorio_currentbuild(){ sleep 1 # Check again and exit on failure. if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then - fn_print_fail_nl "Checking for update: Factorio.com: Still No logs with server version found" - fn_script_log_fatal "Checking for update: Factorio.com: Still No logs with server version found" + fn_print_fail_nl "Checking for update: factorio.com: Still No logs with server version found" + fn_script_log_fatal "Checking for update: factorio.com: Still No logs with server version found" core_exit.sh fi fi @@ -51,19 +51,19 @@ fn_update_factorio_currentbuild(){ # Get current build from logs currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | grep -oP '(?<=Factorio ).*?(?= \()') if [ -z "${currentbuild}" ]; then - fn_print_error_nl "Checking for update: Factorio.com: Current build version not found" - fn_script_log_error "Checking for update: Factorio.com: Current build version not found" + fn_print_error_nl "Checking for update: factorio.com: Current build version not found" + fn_script_log_error "Checking for update: factorio.com: Current build version not found" sleep 1 - fn_print_info_nl "Checking for update: Factorio.com: Forcing server restart" - fn_script_log_info "Checking for update: Factorio.com: Forcing server restart" + fn_print_info_nl "Checking for update: factorio.com: Forcing server restart" + fn_script_log_info "Checking for update: factorio.com: Forcing server restart" exitbypass=1 command_stop.sh exitbypass=1 command_start.sh currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | grep -oP '(?<=Factorio ).*?(?= /)') if [ -z "${currentbuild}" ]; then - fn_print_fail_nl "Checking for update: Factorio.com: Current build version still not found" - fn_script_log_fatal "Checking for update: Factorio.com: Current build version still not found" + fn_print_fail_nl "Checking for update: factorio.com: Current build version still not found" + fn_script_log_fatal "Checking for update: factorio.com: Current build version still not found" core_exit.sh fi fi @@ -81,14 +81,14 @@ fn_update_factorio_availablebuild(){ # Checks if availablebuild variable has been set if [ -z "${availablebuild}" ]; then - fn_print_fail "Checking for update: Factorio.com" + fn_print_fail "Checking for update: factorio.com" sleep 1 - fn_print_fail "Checking for update: Factorio.com: Not returning version info" - fn_script_log_fatal "Failure! Checking for update: Factorio.com: Not returning version info" + fn_print_fail "Checking for update: factorio.com: Not returning version info" + fn_script_log_fatal "Failure! Checking for update: factorio.com: Not returning version info" core_exit.sh else - fn_print_ok "Checking for update: Factorio.com" - fn_script_log_pass "Checking for update: Factorio.com" + fn_print_ok "Checking for update: factorio.com" + fn_script_log_pass "Checking for update: factorio.com" sleep 1 fi } @@ -155,9 +155,9 @@ if [ "${installer}" == "1" ]; then fn_update_factorio_availablebuild fn_update_factorio_dl else - # Checks for server update from github.com - fn_print_dots "Checking for update: github.com" - fn_script_log_info "Checking for update: github.com" + # Checks for server update from factorio.com + fn_print_dots "Checking for update: factorio.com" + fn_script_log_info "Checking for update: factorio.com" sleep 1 fn_update_factorio_currentbuild fn_update_factorio_availablebuild From 9b3afbc1b529fc9188ba6c083ad5341fc2ca8fae Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 14:37:41 +0000 Subject: [PATCH 240/729] Fixed updater no longer detecting currentversion --- lgsm/functions/update_factorio.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index 7535358f6..0b9191555 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -49,7 +49,7 @@ fn_update_factorio_currentbuild(){ fi # Get current build from logs - currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | grep -oP '(?<=Factorio ).*?(?= \()') + currentbuild=$(grep "Loading mod base" "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null|awk '{print $5}') if [ -z "${currentbuild}" ]; then fn_print_error_nl "Checking for update: factorio.com: Current build version not found" fn_script_log_error "Checking for update: factorio.com: Current build version not found" @@ -60,7 +60,7 @@ fn_update_factorio_currentbuild(){ command_stop.sh exitbypass=1 command_start.sh - currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | grep -oP '(?<=Factorio ).*?(?= /)') + currentbuild=$(grep "Loading mod base" "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null|awk '{print $5}') if [ -z "${currentbuild}" ]; then fn_print_fail_nl "Checking for update: factorio.com: Current build version still not found" fn_script_log_fatal "Checking for update: factorio.com: Current build version still not found" From e09c5454bd894bd9538adfeccd33997573521959 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 14:37:54 +0000 Subject: [PATCH 241/729] minor wording update --- lgsm/functions/update_ts3.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh index 5e897f7b9..1f74e0037 100644 --- a/lgsm/functions/update_ts3.sh +++ b/lgsm/functions/update_ts3.sh @@ -15,7 +15,7 @@ fn_update_ts3_dl(){ fn_script_log "Copying to ${filesdir}" cp -R "${tmpdir}/teamspeak3-server_linux_${ts3arch}/"* "${filesdir}" local exitcode=$? - if [ ${exitcode} -eq 0 ]; then + if [ "${exitcode}" == "0" ]; then fn_print_ok_eol_nl else fn_print_fail_eol_nl @@ -23,8 +23,8 @@ fn_update_ts3_dl(){ } fn_update_ts3_currentbuild(){ - # Gets currentbuild info - # Checks currentbuild info is available, if fails a server restart will be forced to generate logs. + # Gets current build info + # Checks if current build info is available. If it fails, then a server restart will be forced to generate logs. if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then fn_print_error "Checking for update: teamspeak.com" sleep 1 From 31e550de0d97aa44eeb78f9f3d4a5cac8d92cda0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 20:06:24 +0000 Subject: [PATCH 242/729] Updated directories --- Factorio/fctrserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 5a1e0fc91..1beef72ae 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -93,9 +93,9 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}/bin/x64" executable="./factorio" -servercfg="server-settings.json" +servercfg="${servicename}.json" servercfgdefault="server-settings.json" -servercfgdir="${filesdir}/data/" +servercfgdir="${filesdir}/data" servercfgfullpath="${servercfgdir}/${servercfg}" ## Backup Directory From 712f5f0f2bc780deac226fcc157a7d85ab47f63b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 20:06:39 +0000 Subject: [PATCH 243/729] Added factorio to info config --- lgsm/functions/info_config.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 829bba841..24ac82b5f 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -166,6 +166,24 @@ fn_info_config_dontstarve(){ fi } +fn_info_config_factorio(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="Factorio Server" + serverpassword="${unavailable}" + maxplayers="${zero}" + else + servername="Factorio Server" + serverpassword=$(grep "game_password" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + maxplayers=$(grep "\"max_players\"" "${clustercfgfullpath}" | tr -cd '[:digit:]') + + # Not Set + servername=${servername:-"NOT SET"} + maxplayers==${maxplayers=:-"0"} + rconpassword=${rconpassword=:-"NOT SET"} + + fi +} + fn_info_config_minecraft(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" From b6f1e8f605f4727387892b029a4a8c7f23a29545 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 20:12:37 +0000 Subject: [PATCH 244/729] added factorio --- lgsm/functions/info_config.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 24ac82b5f..5a5dff232 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -615,6 +615,9 @@ elif [ "${gamename}" == "Call of Duty: World at War" ]; then # Dont Starve Together elif [ "${engine}" == "dontstarve" ]; then fn_info_config_dontstarve +# Factorio +elif [ "${engine}" == "factorio" ]; then + fn_info_config_factorio # Quake 2 elif [ "${gamename}" == "Quake 2" ]; then fn_info_config_quake2 From 85014ca4837946f0c154ffb6863757f8c6c104ee Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 20:18:38 +0000 Subject: [PATCH 245/729] corrected gamename --- lgsm/functions/info_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 5a5dff232..374b41110 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -616,7 +616,7 @@ elif [ "${gamename}" == "Call of Duty: World at War" ]; then elif [ "${engine}" == "dontstarve" ]; then fn_info_config_dontstarve # Factorio -elif [ "${engine}" == "factorio" ]; then +elif [ "${gamename}" == "Factorio" ]; then fn_info_config_factorio # Quake 2 elif [ "${gamename}" == "Quake 2" ]; then From 172e276586dfcefa1f038a296737f38ad546f8a0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 20:24:54 +0000 Subject: [PATCH 246/729] stray = --- lgsm/functions/info_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 374b41110..f78273a6a 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -178,7 +178,7 @@ fn_info_config_factorio(){ # Not Set servername=${servername:-"NOT SET"} - maxplayers==${maxplayers=:-"0"} + maxplayers=${maxplayers=:-"0"} rconpassword=${rconpassword=:-"NOT SET"} fi From 0e72d35a8efa6e8bfa3080056aadbb089ee53b82 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 21:09:53 +0000 Subject: [PATCH 247/729] Updated rcon password --- Factorio/fctrserver | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 1beef72ae..326f48077 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -1,8 +1,8 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs -# Purpose: Empires Mod | Server Management Script +# License: MIT License, Copyright (c) 2017 Daniel Gibbs +# Purpose: Factorio | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com @@ -25,8 +25,9 @@ version="161224" ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters port="34197" rconport="34198" -rconpassword="factorio" +rconpassword="CHANGE_ME" ip="0.0.0.0" + ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters # Edit with care fn_parms(){ From 269970ad8a0dbb029a391e6849d83a041845f465 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 21:12:23 +0000 Subject: [PATCH 248/729] corrected factorio vars --- lgsm/functions/info_config.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index f78273a6a..2da3c4d84 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -173,14 +173,13 @@ fn_info_config_factorio(){ maxplayers="${zero}" else servername="Factorio Server" - serverpassword=$(grep "game_password" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "\"max_players\"" "${clustercfgfullpath}" | tr -cd '[:digit:]') + serverpassword=$(grep "game_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + maxplayers=$(grep "\"max_players\"" "${servercfgfullpath}" | tr -cd '[:digit:]') # Not Set servername=${servername:-"NOT SET"} maxplayers=${maxplayers=:-"0"} rconpassword=${rconpassword=:-"NOT SET"} - fi } From 000bfc69851e7825c53c730f2cac662d7d79c623 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 21:12:35 +0000 Subject: [PATCH 249/729] spaces --- lgsm/functions/gsquery.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/gsquery.py b/lgsm/functions/gsquery.py index 512d7411b..6172d53b4 100644 --- a/lgsm/functions/gsquery.py +++ b/lgsm/functions/gsquery.py @@ -29,7 +29,7 @@ class GameServer: elif self.option.engine == 'iw2.0': self.query_prompt_string = b'\xff\xff\xff\xffgetstatus' elif self.option.engine == 'iw3.0': - self.query_prompt_string = b'\xff\xff\xff\xffgetstatus' + 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': From 3177584b7d257af48ac61199f1fae76b7e8b5c6d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 21:15:37 +0000 Subject: [PATCH 250/729] Updated licence year New year, new me --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CallOfDuty4/cod4server | 2 +- CallOfDutyUnitedOffensive/coduoserver | 2 +- CallOfDutyWorldAtWar/codwawserver | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- EmpiresMod/emserver | 2 +- Factorio/fctrserver | 191 ++++++ FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- LICENSE | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- QuakeWorld/qwserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- lgsm/functions/command_details.sh | 797 ------------------------ tests/tests_jc2server.sh | 2 +- 68 files changed, 257 insertions(+), 863 deletions(-) create mode 100644 Factorio/fctrserver delete mode 100644 lgsm/functions/command_details.sh diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 1dc5ff4b6..99f77df29 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: 7 Days To Die | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index a7683daf3..9912429cd 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: ARK: Survival Evolved | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Arma3/arma3server b/Arma3/arma3server index 54f91c82c..77cb59eb2 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: ARMA 3 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 16e41986e..d9c0537e4 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Battlefield: 1942 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 54cf8d0e1..6a599555f 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Black Mesa: Deathmatch | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index ab472f35f..f4214061a 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Blade Symphony | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 7812e584e..5a9e401af 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: BrainBread 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index 1fb6daf02..a5d88b91a 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Call of Duty | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index f90fae26b..c7277d16b 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Call of Duty 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server index 699c3b7ad..0290ab69d 100644 --- a/CallOfDuty4/cod4server +++ b/CallOfDuty4/cod4server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Call of Duty 4 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index 29c1d6776..d658af116 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Call of Duty: United Offensive | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index 961105a3d..15a984e25 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Call of Duty: World at War | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 5583d4480..93e6595c5 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Codename CURE | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CounterStrike/csserver b/CounterStrike/csserver index d161759cf..9853a148c 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Counter-Strike | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index e6831dc3a..69c68a8b7 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Counter-Strike: Condition Zero | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index e84590702..6f97641a8 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Counter-Strike: Global Offensive | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index aae064a3b..554b1ee8f 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Counter-Strike: Source | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 1c4dea80b..55ade1e61 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Day of Defeat | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index f1f23e0b9..45b0407e6 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Day of Defeat: Source | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index ff4e57238..dbc17e178 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Day of Infamy | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index e9af4107a..2c7ed676e 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Deathmatch Classic | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 8001e4a7d..df915813c 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Dont Starve Together | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index add4c4256..4bfb6fa9b 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Double Action: Boogaloo | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 8fe3b4164..525657530 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Empires Mod | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Factorio/fctrserver b/Factorio/fctrserver new file mode 100644 index 000000000..326f48077 --- /dev/null +++ b/Factorio/fctrserver @@ -0,0 +1,191 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs +# Purpose: Factorio | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="161224" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +port="34197" +rconport="34198" +rconpassword="CHANGE_ME" +ip="0.0.0.0" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +# Edit with care +fn_parms(){ +parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" + +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="feature/factorio" + +## LinuxGSM Server Details +# Do not edit +gamename="Factorio" +engine="" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="fctr-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}" +executabledir="${filesdir}/bin/x64" +executable="./factorio" +servercfg="${servicename}.json" +servercfgdefault="server-settings.json" +servercfgdir="${filesdir}/data" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +gamelogdir="${filesdir}" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh \ No newline at end of file diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 314edb0d7..f57dea7c7 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Fistful Of Frags | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 42c220387..da7bf61b8 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Garry's Mod | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 8ecd7a8c2..4714c9a64 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: GoldenEye: Source | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index f4da627f3..eaedd7e05 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Half Life 2: Deathmatch | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 2a8cf8ce7..d82e3228f 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Half Life: Deathmatch | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index ebe71cc57..95c542c99 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Half-Life Deathmatch: Source | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index b1a6f2a81..af38201da 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Hurtworld | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Insurgency/insserver b/Insurgency/insserver index dd7f3b6dd..4f7d585a6 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Insurgency | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/JustCause2/jc2server b/JustCause2/jc2server index a49f23584..3112912eb 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Just Cause 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 167348f93..0cd35653d 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Killing Floor | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/LICENSE b/LICENSE index 24a57533c..c6ad3cd89 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 Daniel Gibbs +Copyright (c) 2017 Daniel Gibbs Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index b3aab5c06..f8f4f84db 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Left 4 Dead | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index a3a5d4166..d7c3a0fcc 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Left 4 Dead 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 4fbb94103..8d0f317cf 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Minecraft | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 47ca299b7..13f8a5bae 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Mumble | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index d8abe3459..ce5348a19 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: NS2: Combat | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 55b4876c2..a449c704c 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Natural Selection 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index a88526007..ea7251ab0 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: No More Room in Hell | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index c164da28e..b75a9d67e 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Half-Life: Opposing Force | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 1fdb643b0..73702aeb5 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: No More Room in Hell | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 3dcc89927..70298be30 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Project Zomboid | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Quake2/q2server b/Quake2/q2server index 8694b7ec9..98ecb348e 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Quake 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Quake3/q3server b/Quake3/q3server index 5aebdaf1e..78f68fb21 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Quake 3: Arena | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 42e8fca97..f0bcd183b 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Quake Live | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 488103ae4..f1d5a43ab 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Quake World (nQuake) | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 9371398fd..cc8d24232 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Red Orchestra: Ostfront 41-45 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 4eff098cb..0775d0f75 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Ricochet | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Rust/rustserver b/Rust/rustserver index 071680a86..b7848b97d 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Rust | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index f4ca338b7..577205ad1 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Sam 3: BFE | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Starbound/sbserver b/Starbound/sbserver index 6fba61b59..45136f09e 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Starbound | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index e75a16af0..0be845023 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Sven Co-op | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index f0173fece..4db8d44c6 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Team Fortress 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index d77647fb0..fbd933328 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Team Fortress Classic | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index aeab10ecc..5fb6e174b 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: TeamSpeak 3 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Teeworlds/twserver b/Teeworlds/twserver index c525a3cc2..45b4a9bf9 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Teeworlds | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 867dcfd0b..f76c5ec53 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Terraria | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index 54ec900da..be80e850b 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Unreal Tournament | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 751bdf4fa..c29fe97e6 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Unreal Tournament 2004 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index aaf89b698..5946ff18d 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Unreal Tournament 3 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index ebf871439..e0b6a2539 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Unreal Tournament 99 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 30894d50c..cdcb14e2c 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -1,7 +1,7 @@ #!/bin/bash # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: Enemy Territory | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh deleted file mode 100644 index 9d9d8fddc..000000000 --- a/lgsm/functions/command_details.sh +++ /dev/null @@ -1,797 +0,0 @@ -#!/bin/bash -# LGSM command_details.sh function -# Author: Daniel Gibbs -# Contributor: UltimateByte -# Website: https://gameservermanagers.com -# Description: Displays server information. - -local commandname="DETAILS" -local commandaction="Details" -local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - -# Standard Details -# This applies to all engines - -fn_details_os(){ - # - # Distro Details - # ===================================== - # Distro: Ubuntu 14.04.4 LTS - # Arch: x86_64 - # Kernel: 3.13.0-79-generic - # Hostname: hostname - # tmux: tmux 1.8 - # GLIBC: 2.19 - - echo -e "" - echo -e "${lightyellow}Distro Details${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - echo -e "${blue}Distro:\t${default}${distroname}" - echo -e "${blue}Arch:\t${default}${arch}" - echo -e "${blue}Kernel:\t${default}${kernel}" - echo -e "${blue}Hostname:\t${default}$HOSTNAME" - echo -e "${blue}tmux:\t${default}${tmuxv}" - echo -e "${blue}GLIBC:\t${default}${glibcversion}" - } | column -s $'\t' -t -} - -fn_details_performance(){ - # - # Performance - # ===================================== - # Uptime: 55d, 3h, 38m - # Avg Load: 1.00, 1.01, 0.78 - # - # Mem: total used free cached - # Physical: 741M 656M 85M 256M - # Swap: 0B 0B 0B - - echo -e "" - echo -e "${lightyellow}Performance${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - echo -e "${blue}Uptime:\t${default}${days}d, ${hours}h, ${minutes}m" - echo -e "${blue}Avg Load:\t${default}${load}" - } | column -s $'\t' -t - echo -e "" - { - echo -e "${blue}Mem:\t${blue}total\t used\t free\t cached${default}" - echo -e "${blue}Physical:\t${default}${physmemtotal}\t${physmemused}\t${physmemfree}\t${physmemcached}${default}" - echo -e "${blue}Swap:\t${default}${swaptotal}\t${swapused}\t${swapfree}${default}" - } | column -s $'\t' -t -} - -fn_details_disk(){ - # - # Storage - # ===================================== - # Filesystem: /dev/disk/by-uuid/320c8edd-a2ce-4a23-8c9d-e00a7af2d6ff - # Total: 15G - # Used: 8.4G - # Available: 5.7G - # LGSM Total: 1G - # Serverfiles: 961M - # Backups: 2G - - echo -e "" - echo -e "${lightyellow}Storage${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - echo -e "${blue}Filesystem:\t${default}${filesystem}" - echo -e "${blue}Total:\t${default}${totalspace}" - echo -e "${blue}Used:\t${default}${usedspace}" - echo -e "${blue}Available:\t${default}${availspace}" - echo -e "${blue}LGSM Total:\t${default}${rootdirdu}" - echo -e "${blue}Serverfiles:\t${default}${filesdirdu}" - if [ -d "${backupdir}" ]; then - echo -e "${blue}Backups:\t${default}${backupdirdu}" - fi - } | column -s $'\t' -t -} - -fn_details_gameserver(){ - # - # Quake Live Server Details - # ===================================== - # Server name: ql-server - # Server IP: 1.2.3.4:27960 - # RCON password: CHANGE_ME - # Server password: NOT SET - # Maxplayers: 16 - # Status: OFFLINE - - echo -e "" - echo -e "${lightgreen}${gamename} Server Details${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - # Server name - if [ -n "${servername}" ]; then - echo -e "${blue}Server name:\t${default}${servername}" - fi - - # Server ip - echo -e "${blue}Server IP:\t${default}${ip}:${port}" - - # Server password - if [ -n "${serverpassword}" ]; then - echo -e "${blue}Server password:\t${default}${serverpassword}" - fi - - # RCON password - if [ -n "${rconpassword}" ]; then - echo -e "${blue}RCON password:\t${default}${rconpassword}" - fi - - # Admin password - if [ -n "${adminpassword}" ]; then - echo -e "${blue}Admin password:\t${default}${adminpassword}" - fi - - # Stats password (Quake Live) - if [ -n "${statspassword}" ]; then - echo -e "${blue}Stats password:\t${default}${statspassword}" - fi - - # Maxplayers - if [ -n "${maxplayers}" ]; then - echo -e "${blue}Maxplayers:\t${default}${maxplayers}" - fi - - # Game mode - if [ -n "${gamemode}" ]; then - echo -e "${blue}Game mode:\t${default}${gamemode}" - fi - - # Game world - if [ -n "${gameworld}" ]; then - echo -e "${blue}Game world:\t${default}${gameworld}" - fi - - # Tick rate - if [ -n "${tickrate}" ]; then - echo -e "${blue}Tick rate:\t${default}${tickrate}" - fi - - # Cluster (Don't Starve Together) - if [ -n "${cluster}" ]; then - echo -e "${blue}Cluster:\t${default}${cluster}" - fi - - # Shard (Don't Starve Together) - if [ -n "${shard}" ]; then - echo -e "${blue}Shard:\t${default}${shard}" - fi - - # TeamSpeak dbplugin - if [ -n "${dbplugin}" ]; then - echo -e "${blue}dbplugin:\t${default}${dbplugin}" - fi - - # Online status - if [ "${status}" == "0" ]; then - echo -e "${blue}Status:\t${red}OFFLINE${default}" - else - echo -e "${blue}Status:\t${green}ONLINE${default}" - fi - } | column -s $'\t' -t - echo -e "" -} - -fn_details_script(){ - # - # qlserver Script Details - # ===================================== - # Service name: ql-server - # qlserver version: 150316 - # User: lgsm - # Email alert: off - # Update on start: off - # Location: /home/lgsm/qlserver - # Config file: /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg - - echo -e "${lightgreen}${selfname} Script Details${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - # Service name - echo -e "${blue}Service name:\t${default}${servicename}" - - # Script version - if [ -n "${version}" ]; then - echo -e "${blue}${selfname} version:\t${default}${version}" - fi - - # User - echo -e "${blue}User:\t${default}$(whoami)" - - # GLIBC required - if [ -n "${glibcrequired}" ]; then - if [ "${glibcrequired}" == "NOT REQUIRED" ]; then - : - elif [ "${glibcrequired}" == "UNKNOWN" ]; then - echo -e "${blue}GLIBC required:\t${red}${glibcrequired}" - elif [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then - if [ "${glibcfix}" == "yes" ]; then - echo -e "${blue}GLIBC required:\t${red}${glibcrequired} ${default}(${green}Using GLIBC fix${default})" - else - echo -e "${blue}GLIBC required:\t${red}${glibcrequired} ${default}(${red}GLIBC version too old${default})" - fi - else - echo -e "${blue}GLIBC required:\t${green}${glibcrequired}${default}" - fi - fi - - # Email alert - echo -e "${blue}Email alert:\t${default}${emailalert}" - - # Pushbullet alert - echo -e "${blue}Pushbullet alert:\t${default}${pushbulletalert}" - - # Update on start - if [ -n "${updateonstart}" ]; then - echo -e "${blue}Update on start:\t${default}${updateonstart}" - fi - - # Script location - echo -e "${blue}Location:\t${default}${rootdir}" - - # Config file location - 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 - fi - - # Network config file location (ARMA 3) - if [ -n "${networkcfgfullpath}" ]; then - echo -e "${blue}Network config file:\t${default}${networkcfgfullpath}" - fi - } | column -s $'\t' -t -} - -fn_details_backup(){ - # - # Backups - # ===================================== - # No. of backups: 1 - # Latest backup: - # date: Fri May 6 18:34:19 UTC 2016 - # file: /home/lgsm/qlserver/backups/ql-server-2016-05-06-183239.tar.gz - # size: 945M - - echo -e "" - echo -e "${lightgreen}Backups${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then - echo -e "No Backups created" - else - { - echo -e "${blue}No. of backups:\t${default}${backupcount}" - echo -e "${blue}Latest backup:${default}" - if [ "${lastbackupdaysago}" == "0" ]; then - echo -e "${blue} date:\t${default}${lastbackupdate} (less than 1 day ago)" - elif [ "${lastbackupdaysago}" == "1" ]; then - echo -e "${blue} date:\t${default}${lastbackupdate} (1 day ago)" - else - echo -e "${blue} date:\t${default}${lastbackupdate} (${lastbackupdaysago} days ago)" - fi - echo -e "${blue} file:\t${default}${lastbackup}" - echo -e "${blue} size:\t${default}${lastbackupsize}" - } | column -s $'\t' -t - fi -} - -fn_details_commandlineparms(){ - # - # Command-line Parameters - # ===================================== - # ./run_server_x86.sh +set net_strict 1 - - echo -e "" - echo -e "${lightgreen}Command-line Parameters${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - echo -e "${executable} ${parms}" -} - -fn_details_ports(){ - # Ports - # ===================================== - # Change ports by editing the parameters in: - # /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg - - echo -e "" - echo -e "${lightgreen}Ports${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - echo -e "Change ports by editing the parameters in:" - - parmslocation="${red}UNKNOWN${default}" - # engines that require editing in the config file - 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 - parmslocation="${servercfgfullpath}" - fi - done - # engines that require editing in the script file - local ports_edit_array=( "Hurtworld" "iw3.0" "goldsource" "Rust" "spark" "source" "starbound" "unreal4" ) - for port_edit in "${ports_edit_array[@]}" - do - if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then - parmslocation="${selfname}" - fi - done - echo -e "${parmslocation}" - echo -e "" - echo -e "Useful port diagnostic command:" -} - -fn_details_statusbottom(){ - echo -e "" - if [ "${status}" == "0" ]; then - echo -e "${blue}Status:\t${red}OFFLINE${default}" - else - echo -e "${blue}Status:\t${green}ONLINE${default}" - fi - echo -e "" -} - -# Engine Specific details - -fn_details_avalanche(){ - echo -e "netstat -atunp | grep Jcmp-Server" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - -fn_details_cod(){ - echo -e "netstat -atunp | grep cod_lnxded" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - -fn_details_coduo(){ - echo -e "netstat -atunp | grep coduo_lnxded" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - -fn_details_cod2(){ - echo -e "netstat -atunp | grep cod2_lnxded" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - -fn_details_cod4(){ - echo -e "netstat -atunp" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - -fn_details_codwaw(){ - echo -e "netstat -atunp | grep codwaw_lnxded" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - -fn_details_dontstarve(){ - echo -e "netstat -atunp | grep dontstarve" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game: Server\tINBOUND\t${port}\tudp" - echo -e "> Game: Master\tINBOUND\t${masterport}\tudp" - echo -e "> Steam: Auth\tINBOUND\t${steamauthenticationport}\tudp" - echo -e "> Steam: Master\tINBOUND\t${steammasterserverport}\tudp" - } | column -s $'\t' -t -} - -fn_details_minecraft(){ - echo -e "netstat -atunp | grep java" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - -fn_details_projectzomboid(){ - echo -e "netstat -atunp | grep java" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - - -fn_details_realvirtuality(){ - echo -e "netstat -atunp | grep arma3server" - echo -e "" - if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then - echo -e "${red}ERROR!${default} Missing/commented ports in ${servercfg}." - echo -e "" - fi - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" - echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" - } | column -s $'\t' -t -} - -fn_details_refractor(){ - echo -e "netstat -atunp | grep bf1942_lnxd" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\tudp" - echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" - } | 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 "" - if [ -z "${port}" ]||[ -z "${rconport}" ]||[ -z "${statsport}" ]; then - echo -e "${red}ERROR!${default} Missing/commented ports in ${servercfg}." - echo -e "" - fi - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Rcon\tINBOUND\t${rconport}\tudp" - echo -e "> Stats\tINBOUND\t${statsport}\tudp" - } | column -s $'\t' -t -} - -fn_details_wolfensteinenemyterritory(){ - echo -e "netstat -atunp | grep etded" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\tudp" - } | column -s $'\t' -t -} - - -fn_details_seriousengine35(){ - echo -e "netstat -atunp | grep Sam3_Dedicate" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\ttcp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - } | column -s $'\t' -t -} - -fn_details_source(){ - echo -e "netstat -atunp | grep srcds_linux" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\ttcp/udp" - if [ -n "${sourcetvport}" ]; then - echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp" - fi - echo -e "< Client\tOUTBOUND\t${clientport}\tudp" - } | column -s $'\t' -t -} - -fn_details_spark(){ - echo -e "netstat -atunp | grep server_linux3" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} WebAdmin${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - echo -e "${blue}WebAdmin url:\t${default}http://${ip}:${webadminport}/index.html" - echo -e "${blue}WebAdmin username:\t${default}${webadminuser}" - echo -e "${blue}WebAdmin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_details_starbound(){ - echo -e "netstat -atunp | grep starbound" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\ttcp" - echo -e "> Query\tINBOUND\t${queryport}\ttcp" - echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" - } | column -s $'\t' -t -} - -fn_details_teamspeak3(){ - echo -e "netstat -atunp | grep ts3server" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Voice\tINBOUND\t${port}\tudp" - echo -e "> ServerQuery\tINBOUND\t${queryport}\ttcp" - echo -e "> File transfer\tINBOUND\t${fileport}\ttcp" - } | column -s $'\t' -t -} - -fn_details_mumble(){ - echo -e "netstat -atunp | grep murmur" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Voice\tINBOUND\t${port}\tudp" - echo -e "> ServerQuery\tINBOUND\t${port}\ttcp" - } | column -s $'\t' -t -} - -fn_details_teeworlds(){ - echo -e "netstat -atunp | grep teeworlds_srv" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\ttcp" - } | column -s $'\t' -t -} - -fn_details_terraria(){ - echo -e "netstat -atunp | grep TerrariaServer" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\ttcp" - } | column -s $'\t' -t -} - -fn_details_sdtd(){ - echo -e "netstat -atunp | grep 7DaysToDie" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" - echo -e "> Telnet\tINBOUND\t${telnetport}\ttcp" - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} WebAdmin${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - echo -e "${blue}WebAdmin enabled:\t${default}${webadminenabled}" - echo -e "${blue}WebAdmin url:\t${default}http://${ip}:${webadminport}" - echo -e "${blue}WebAdmin password:\t${default}${webadminpass}" - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} Telnet${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - echo -e "${blue}Telnet enabled:\t${default}${telnetenabled}" - echo -e "${blue}Telnet address:\t${default}${ip} ${telnetport}" - echo -e "${blue}Telnet password:\t${default}${telnetpass}" - } | column -s $'\t' -t -} - -fn_details_hurtworld(){ - echo -e "netstat -atunp | grep Hurtworld" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - } | column -s $'\t' -t -} - -fn_details_rust(){ - echo -e "netstat -atunp | grep Rust" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" - echo -e "> RCON\tINBOUND\t${rconport}\ttcp" - } | column -s $'\t' -t -} - -fn_details_unreal(){ - echo -e "netstat -atunp | grep ucc-bin" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - if [ "${engine}" == "unreal" ]; then - echo -e "< UdpLink Port (random)\tOUTBOUND\t${udplinkport}+\tudp" - fi - if [ "${engine}" != "unreal" ] && [ "${appid}" != "223250" ]; then - echo -e "> GameSpy query\tINBOUND\t${gsqueryport}\tudp\tOldQueryPortNumber=${gsqueryport}" - fi - if [ "${appid}" == "215360" ]; then - echo -e "< Master server\tOUTBOUND\t28852\ttcp/udp" - else - echo -e "< Master server\tOUTBOUND\t28900/28902\ttcp/udp" - fi - if [ "${appid}" ]; then - if [ "${appid}" == "223250" ]; then - echo -e "< Steam\tOUTBOUND\t20610\tudp" - else - echo -e "< Steam\tOUTBOUND\t20660\tudp" - fi - fi - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}" - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} WebAdmin${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - echo -e "${blue}WebAdmin enabled:\t${default}${webadminenabled}" - echo -e "${blue}WebAdmin url:\t${default}http://${ip}:${webadminport}" - echo -e "${blue}WebAdmin username:\t${default}${webadminuser}" - echo -e "${blue}WebAdmin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_details_ut3(){ - echo -e "netstat -atunp | grep ut3-bin" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" - } | column -s $'\t' -t -} - -fn_details_ark(){ - echo -e "netstat -atunp | grep ShooterGame" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - } | column -s $'\t' -t -} - -# Run checks and gathers details to display. - -fn_display_details() { - check.sh - info_config.sh - info_distro.sh - info_glibc.sh - info_parms.sh - fn_details_os - fn_details_performance - fn_details_disk - fn_details_gameserver - fn_details_script - fn_details_backup - # Some game servers do not have parms. - if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]; then - fn_parms - fn_details_commandlineparms - fi - fn_details_ports - - # Display details depending on game or engine. - if [ "${engine}" == "avalanche" ]; then - fn_details_avalanche - elif [ "${engine}" == "refractor" ]; then - fn_details_refractor - elif [ "${engine}" == "dontstarve" ]; then - fn_details_dontstarve - elif [ "${engine}" == "lwjgl2" ]; then - fn_details_minecraft - elif [ "${engine}" == "projectzomboid" ]; then - fn_details_projectzomboid - elif [ "${engine}" == "realvirtuality" ]; then - fn_details_realvirtuality - elif [ "${engine}" == "seriousengine35" ]; then - fn_details_seriousengine35 - elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then - fn_details_source - elif [ "${engine}" == "spark" ]; then - fn_details_spark - elif [ "${engine}" == "starbound" ]; then - fn_details_starbound - elif [ "${engine}" == "teeworlds" ]; then - fn_details_teeworlds - elif [ "${engine}" == "terraria" ]; then - fn_details_terraria - elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then - fn_details_unreal - elif [ "${engine}" == "unreal3" ]; then - fn_details_ut3 - elif [ "${gamename}" == "7 Days To Die" ]; then - fn_details_sdtd - elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then - fn_details_ark - elif [ "${gamename}" == "Call of Duty" ]; then - fn_details_cod - elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then - fn_details_coduo - elif [ "${gamename}" == "Call of Duty 2" ]; then - fn_details_cod2 - elif [ "${gamename}" == "Call of Duty 4" ]; then - fn_details_cod4 - elif [ "${gamename}" == "Call of Duty: World at War" ]; then - fn_details_codwaw - 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 - fn_details_teamspeak3 - elif [ "${gamename}" == "Mumble" ]; then - fn_details_mumble - elif [ "${gamename}" == "Rust" ]; then - fn_details_rust - elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then - fn_details_wolfensteinenemyterritory - else - fn_print_error_nl "Unable to detect server engine." - fi - - fn_details_statusbottom -} - -if [ -z "${postdetails}" ] ; -then - fn_display_details - core_exit.sh -fi diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 4f07338e8..697176aec 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -2,7 +2,7 @@ # Just Cause 2 # Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2016 Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs # Purpose: TravisCI Test: Just Cause 2 | Server Management Script # Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors # Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki From 997a40bfe09eec45c8a374324b4272cc28a87022 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 21:31:02 +0000 Subject: [PATCH 251/729] Added factorio --- lgsm/functions/core_getopt.sh | 94 +++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 9 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 03aa7359a..0cbd6f2b0 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -80,6 +80,73 @@ case "${getopt}" in esac } +fn_getopt_generic_update_no_steam(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + } | column -s $'\t' -t + esac +} + fn_getopt_generic_no_update(){ case "${getopt}" in st|start) @@ -144,7 +211,6 @@ case "${getopt}" in esac } - fn_getopt_teamspeak3(){ case "${getopt}" in st|start) @@ -697,26 +763,36 @@ case "${getopt}" in esac } -if [ "${gamename}" == "Mumble" ]; then - fn_getopt_mumble -elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then - fn_getopt_generic_no_update +# Don't Starve Together +if [ "${gamename}" == "Don't Starve Together" ]; then + fn_getopt_dstserver +# Garry's Mod +elif [ "${gamename}" == "Garry's Mod" ]; then + fn_getopt_gmodserver +# Minecraft elif [ "${engine}" == "lwjgl2" ]; then fn_getopt_minecraft +# Mumble +elif [ "${gamename}" == "Mumble" ]; then + fn_getopt_mumble +# Teamspeak 3 elif [ "${gamename}" == "TeamSpeak 3" ]; then fn_getopt_teamspeak3 -elif [ "${gamename}" == "Don't Starve Together" ]; then - fn_getopt_dstserver -elif [ "${gamename}" == "Garry's Mod" ]; then - fn_getopt_gmodserver +# Unreal 2 Engine elif [ "${engine}" == "unreal2" ]; then if [ "${gamename}" == "Unreal Tournament 2004" ]; then fn_getopt_ut2k4 else fn_getopt_unreal2 fi +# Unreal Engine elif [ "${engine}" == "unreal" ]; then fn_getopt_unreal +# Generic +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then + fn_getopt_generic_no_update +elif [ "${gamename}" == "Factorio" ]; then + fn_getopt_generic_update_no_steam else fn_getopt_generic fi From 3d22fe5faf9bd43e77418ef25cb6a868ca2e91fb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 21:41:00 +0000 Subject: [PATCH 252/729] added gz and zip to progress bar --- lgsm/functions/core_dl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 6d971b997..7355c840c 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -117,7 +117,7 @@ fn_fetch_file(){ # trap to remove part downloaded files trap fn_fetch_trap INT # if larger file shows progress bar - if [ ${filename##*.} == "bz2" ]||[ ${filename##*.} == "jar" ]; then + if [ ${filename##*.} == "bz2" ]||[ ${filename##*.} == "gz" ]||[ ${filename##*.} == "zip" ]||[ ${filename##*.} == "jar" ]; then echo -ne "downloading ${filename}..." sleep 1 curlcmd=$(${curlcmd} --progress-bar --fail -L -o "${filedir}/${filename}" "${fileurl}") From ac114960a428db30f4ec33a03299308b02e8323c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 21:41:14 +0000 Subject: [PATCH 253/729] using --start-server-load-latest by default --- Factorio/fctrserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 326f48077..88f69b1a1 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -31,7 +31,7 @@ ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters # Edit with care fn_parms(){ -parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" +parms="--start-server-load-latest --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" } #### LinuxGSM Settings #### From ca01255e5d3cccdbe6ea04f8c71634e7deb64681 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 21:48:21 +0000 Subject: [PATCH 254/729] removed update message from installer --- lgsm/functions/update_factorio.sh | 2 ++ lgsm/functions/update_minecraft.sh | 2 ++ lgsm/functions/update_mumble.sh | 2 ++ lgsm/functions/update_ts3.sh | 2 ++ 4 files changed, 8 insertions(+) diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index 0b9191555..c3e16d802 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -86,6 +86,8 @@ fn_update_factorio_availablebuild(){ fn_print_fail "Checking for update: factorio.com: Not returning version info" fn_script_log_fatal "Failure! Checking for update: factorio.com: Not returning version info" core_exit.sh + elif [ "${installer}" == "1" ]; then + : else fn_print_ok "Checking for update: factorio.com" fn_script_log_pass "Checking for update: factorio.com" diff --git a/lgsm/functions/update_minecraft.sh b/lgsm/functions/update_minecraft.sh index 717e798cd..746ddfb2e 100644 --- a/lgsm/functions/update_minecraft.sh +++ b/lgsm/functions/update_minecraft.sh @@ -79,6 +79,8 @@ fn_update_availablebuild(){ fn_print_fail "Checking for update: mojang.com: Not returning version info" fn_script_log_fatal "Failure! Checking for update: mojang.com: Not returning version info" core_exit.sh + elif [ "${installer}" == "1" ]; then + : else fn_print_ok_nl "Checking for update: mojang.com" fn_script_log_pass "Checking for update: mojang.com" diff --git a/lgsm/functions/update_mumble.sh b/lgsm/functions/update_mumble.sh index 338ad4545..6f5c35a88 100644 --- a/lgsm/functions/update_mumble.sh +++ b/lgsm/functions/update_mumble.sh @@ -86,6 +86,8 @@ fn_update_mumble_availablebuild(){ fn_print_fail "Checking for update: GitHub: Not returning version info" fn_script_log_fatal "Failure! Checking for update: GitHub: Not returning version info" core_exit.sh + elif [ "${installer}" == "1" ]; then + : else fn_print_ok "Checking for update: GitHub" fn_script_log_pass "Checking for update: GitHub" diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh index 1f74e0037..b5f403597 100644 --- a/lgsm/functions/update_ts3.sh +++ b/lgsm/functions/update_ts3.sh @@ -113,6 +113,8 @@ fn_update_ts3_availablebuild(){ fn_print_fail "Checking for update: teamspeak.com: Not returning version info" fn_script_log_fatal "Failure! Checking for update: teamspeak.com: Not returning version info" core_exit.sh + elif [ "${installer}" == "1" ]; then + : else fn_print_ok "Checking for update: teamspeak.com" fn_script_log_pass "Checking for update: teamspeak.com" From 7a1d0fd4440a6fbb86a4cd950a8b0e705767a859 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 7 Jan 2017 22:24:41 +0000 Subject: [PATCH 255/729] Changed default to 30 days --- lgsm/functions/command_postdetails.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_postdetails.sh b/lgsm/functions/command_postdetails.sh index 664b1c66b..566d5c323 100644 --- a/lgsm/functions/command_postdetails.sh +++ b/lgsm/functions/command_postdetails.sh @@ -36,7 +36,7 @@ posttarget=${posttarget="https://hastebin.com"} # For pastebin, you can set the expiration period. # use 1 week as the default, other options are '24h' for a day, etc. # This, too, may be overridden from the command line at the top-level -postexpire="${postexpire="1W"}" +postexpire="${postexpire="30D"}" # This file sources the command_details.sh file to leverage all # of the already-defined functions. To keep the command_details.sh @@ -128,7 +128,7 @@ if [ "${posttarget}" == "http://pastebin.com" ] ; then fn_print_ok_nl "Posting details to pastbin.com for ${postexpire}" echo " Please share the following url for support: ${posttarget}${link}" elif [ "${posttarget}" == "https://hastebin.com" ] ; then - fn_print_dots "Posting details to hastebin.com (expires 30 days after last view)" + fn_print_dots "Posting details to hastebin.com" sleep 1 # hastebin is a bit simpler. If successful, the returned result # should look like: {"something":"key"}, putting the reference that From ff4864f568e75e2e6f0141c5d964dfbe34bb83f5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 8 Jan 2017 21:12:39 +0000 Subject: [PATCH 256/729] Fix for issue #1157 Also re ordered functions --- lgsm/functions/command_details.sh | 194 ++++++++++++++++-------------- 1 file changed, 102 insertions(+), 92 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index bb84bf396..8f86b3117 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -340,8 +340,19 @@ fn_details_statusbottom(){ echo -e "" } + # Engine Specific details +fn_details_ark(){ + echo -e "netstat -atunp | grep ShooterGame" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" + echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + } | column -s $'\t' -t +} + fn_details_avalanche(){ echo -e "netstat -atunp | grep Jcmp-Server" echo -e "" @@ -417,16 +428,27 @@ fn_details_factorio(){ } | column -s $'\t' -t } -fn_details_minecraft(){ - echo -e "netstat -atunp | grep java" +fn_details_goldsource(){ + echo -e "netstat -atunp | grep hlds_linux" echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Game/RCON\tINBOUND\t${port}\ttcp/udp" + echo -e "< Client\tOUTBOUND\t${clientport}\tudp" } | column -s $'\t' -t } -fn_details_projectzomboid(){ +fn_details_hurtworld(){ + echo -e "netstat -atunp | grep Hurtworld" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + } | column -s $'\t' -t +} + +fn_details_minecraft(){ echo -e "netstat -atunp | grep java" echo -e "" { @@ -435,29 +457,31 @@ fn_details_projectzomboid(){ } | column -s $'\t' -t } +fn_details_mumble(){ + echo -e "netstat -atunp | grep murmur" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Voice\tINBOUND\t${port}\tudp" + echo -e "> ServerQuery\tINBOUND\t${port}\ttcp" + } | column -s $'\t' -t +} -fn_details_realvirtuality(){ - echo -e "netstat -atunp | grep arma3server" +fn_details_projectzomboid(){ + echo -e "netstat -atunp | grep java" echo -e "" - if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then - echo -e "${red}ERROR!${default} Missing/commented ports in ${servercfg}." - echo -e "" - fi { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" - echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" } | column -s $'\t' -t } -fn_details_refractor(){ - echo -e "netstat -atunp | grep bf1942_lnxd" +fn_details_quake(){ + echo -e "netstat -atunp | grep mvdsv" echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\tudp" - echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" + echo -e "> Game\tINBOUND\t${port}\tudp" } | column -s $'\t' -t } @@ -479,39 +503,55 @@ fn_details_quake3(){ } | column -s $'\t' -t } -fn_details_quake(){ - echo -e "netstat -atunp | grep mvdsv" +fn_details_quakelive(){ + echo -e "netstat -atunp | grep qzeroded" echo -e "" + if [ -z "${port}" ]||[ -z "${rconport}" ]||[ -z "${statsport}" ]; then + echo -e "${red}ERROR!${default} Missing/commented ports in ${servercfg}." + echo -e "" + fi { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Rcon\tINBOUND\t${rconport}\tudp" + echo -e "> Stats\tINBOUND\t${statsport}\tudp" } | column -s $'\t' -t } -fn_details_quakelive(){ - echo -e "netstat -atunp | grep qzeroded" +fn_details_realvirtuality(){ + echo -e "netstat -atunp | grep arma3server" echo -e "" - if [ -z "${port}" ]||[ -z "${rconport}" ]||[ -z "${statsport}" ]; then + if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then echo -e "${red}ERROR!${default} Missing/commented ports in ${servercfg}." echo -e "" fi { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Rcon\tINBOUND\t${rconport}\tudp" - echo -e "> Stats\tINBOUND\t${statsport}\tudp" + echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" + echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" } | column -s $'\t' -t } -fn_details_wolfensteinenemyterritory(){ - echo -e "netstat -atunp | grep etded" +fn_details_refractor(){ + echo -e "netstat -atunp | grep bf1942_lnxd" echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game/Query\tINBOUND\t${port}\tudp" + echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" } | column -s $'\t' -t } +fn_details_rust(){ + echo -e "netstat -atunp | grep Rust" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" + echo -e "> RCON\tINBOUND\t${rconport}\ttcp" + } | column -s $'\t' -t +} fn_details_seriousengine35(){ echo -e "netstat -atunp | grep Sam3_Dedicate" @@ -523,15 +563,41 @@ fn_details_seriousengine35(){ } | column -s $'\t' -t } +fn_details_sdtd(){ + echo -e "netstat -atunp | grep 7DaysToDie" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" + echo -e "> Telnet\tINBOUND\t${telnetport}\ttcp" + } | column -s $'\t' -t + echo -e "" + echo -e "${lightgreen}${servername} WebAdmin${default}" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + echo -e "${blue}WebAdmin enabled:\t${default}${webadminenabled}" + echo -e "${blue}WebAdmin url:\t${default}http://${ip}:${webadminport}" + echo -e "${blue}WebAdmin password:\t${default}${webadminpass}" + } | column -s $'\t' -t + echo -e "" + echo -e "${lightgreen}${servername} Telnet${default}" + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = + { + echo -e "${blue}Telnet enabled:\t${default}${telnetenabled}" + echo -e "${blue}Telnet address:\t${default}${ip} ${telnetport}" + echo -e "${blue}Telnet password:\t${default}${telnetpass}" + } | column -s $'\t' -t +} + fn_details_source(){ echo -e "netstat -atunp | grep srcds_linux" echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game/RCON\tINBOUND\t${port}\ttcp/udp" - if [ -n "${sourcetvport}" ]; then - echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp" - fi + echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp" echo -e "< Client\tOUTBOUND\t${clientport}\tudp" } | column -s $'\t' -t } @@ -577,16 +643,6 @@ fn_details_teamspeak3(){ } | column -s $'\t' -t } -fn_details_mumble(){ - echo -e "netstat -atunp | grep murmur" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Voice\tINBOUND\t${port}\tudp" - echo -e "> ServerQuery\tINBOUND\t${port}\ttcp" - } | column -s $'\t' -t -} - fn_details_teeworlds(){ echo -e "netstat -atunp | grep teeworlds_srv" echo -e "" @@ -605,54 +661,6 @@ fn_details_terraria(){ } | column -s $'\t' -t } -fn_details_sdtd(){ - echo -e "netstat -atunp | grep 7DaysToDie" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" - echo -e "> Telnet\tINBOUND\t${telnetport}\ttcp" - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} WebAdmin${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - echo -e "${blue}WebAdmin enabled:\t${default}${webadminenabled}" - echo -e "${blue}WebAdmin url:\t${default}http://${ip}:${webadminport}" - echo -e "${blue}WebAdmin password:\t${default}${webadminpass}" - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} Telnet${default}" - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - { - echo -e "${blue}Telnet enabled:\t${default}${telnetenabled}" - echo -e "${blue}Telnet address:\t${default}${ip} ${telnetport}" - echo -e "${blue}Telnet password:\t${default}${telnetpass}" - } | column -s $'\t' -t -} - -fn_details_hurtworld(){ - echo -e "netstat -atunp | grep Hurtworld" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/RCON\tINBOUND\t${port}\tudp" - echo -e "> Query\tINBOUND\t${queryport}\tudp" - } | column -s $'\t' -t -} - -fn_details_rust(){ - echo -e "netstat -atunp | grep Rust" - echo -e "" - { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" - echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" - echo -e "> RCON\tINBOUND\t${rconport}\ttcp" - } | column -s $'\t' -t -} - fn_details_unreal(){ echo -e "netstat -atunp | grep ucc-bin" echo -e "" @@ -700,16 +708,16 @@ fn_details_ut3(){ } | column -s $'\t' -t } -fn_details_ark(){ - echo -e "netstat -atunp | grep ShooterGame" +fn_details_wolfensteinenemyterritory(){ + echo -e "netstat -atunp | grep etded" echo -e "" { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" - echo -e "> Query\tINBOUND\t${queryport}\tudp" + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/Query\tINBOUND\t${port}\tudp" } | column -s $'\t' -t } + # Run checks and gathers details to display. fn_display_details() { @@ -738,6 +746,8 @@ fn_display_details() { fn_details_refractor elif [ "${engine}" == "dontstarve" ]; then fn_details_dontstarve + elif [ "${engine}" == "goldsource" ]; then + fn_details_goldsource elif [ "${engine}" == "lwjgl2" ]; then fn_details_minecraft elif [ "${engine}" == "projectzomboid" ]; then @@ -746,7 +756,7 @@ fn_display_details() { fn_details_realvirtuality elif [ "${engine}" == "seriousengine35" ]; then fn_details_seriousengine35 - elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + elif [ "${engine}" == "source" ] fn_details_source elif [ "${engine}" == "spark" ]; then fn_details_spark From 93b019be1c50ecf1303172bf9153a6544492c0bc Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 8 Jan 2017 21:41:05 +0000 Subject: [PATCH 257/729] Fix issue #1056 --- lgsm/functions/check_deps.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 36e0a8f04..fb1cd301c 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -202,6 +202,9 @@ if [ -n "$(command -v dpkg-query)" ]; then # GoldenEye: Source elif [ "${gamename}" == "GoldenEye: Source" ]; then array_deps_required+=( zlib1g:i386 libldap-2.4-2:i386 ) + # Serious Sam 3: BFE + elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then + array_deps_required+=( libxrandr2:i386 libglu1-mesa:i386 libxtst6:i386 libusb-1.0-0-dev:i386 libxxf86vm1:i386 libopenal1:i386 libssl1.0.0:i386 libgtk2.0-0:i386 libdbus-glib-1-2:i386 libnm-glib-dev:i386 ) # Unreal Engine elif [ "${executable}" == "./ucc-bin" ]; then #UT2K4 From 5b325bdcf8d0a0ef32c0c71e1de9f38e1d0f97c0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 9 Jan 2017 16:59:09 +0000 Subject: [PATCH 258/729] Added unreal tournament eula --- lgsm/functions/core_functions.sh | 5 +++ .../install_unreal_tournament_eula.sh | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 lgsm/functions/install_unreal_tournament_eula.sh diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index ae1b436ea..90aa7fff8 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -510,6 +510,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +install_unreal_tournament_eula.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + install_retry.sh(){ functionfile="${FUNCNAME}" fn_fetch_function diff --git a/lgsm/functions/install_unreal_tournament_eula.sh b/lgsm/functions/install_unreal_tournament_eula.sh new file mode 100644 index 000000000..b39f9b2e2 --- /dev/null +++ b/lgsm/functions/install_unreal_tournament_eula.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# LGSM install_unreal_tournament_eula.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +# Description: Gets user to accept the EULA. + +echo "" +echo "Accept ${gamename} EULA" +echo "=================================" +sleep 1 +echo "You are required to accept the EULA:" +echo "https://www.epicgames.com/unrealtournament/unreal-tournament-pre-alpha-test-development-build-eula/" + +echo "eula=false" > "${filesdir}/eula.txt" + +if [ -z "${autoinstall}" ]; then +echo "By continuing you are indicating your agreement to the EULA." +echo "" + while true; do + read -e -i "y" -p "Continue [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) core_exit.sh;; + * ) echo "Please answer yes or no.";; + esac + done +else +echo "By using auto-install you are indicating your agreement to the EULA." +echo "" + sleep 5 +fi + +sed -i "s/eula=false/eula=true/g" "${filesdir}/eula.txt" \ No newline at end of file From 774cee7ad68d0bf172c959ce1631fac3ec548a66 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 9 Jan 2017 17:00:08 +0000 Subject: [PATCH 259/729] now using UnrealTournament-Server-Linux-Latest.zip This will make it easier to update the url using the LinuxGSM website Also swapted eula to be displayed before install or server files --- lgsm/functions/install_server_files.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 82f02ce49..0f98680e0 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -34,7 +34,7 @@ fn_install_server_files(){ elif [ "${gamename}" == "Unreal Tournament 99" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" elif [ "${gamename}" == "Unreal Tournament" ]; then - fileurl="https://s3.amazonaws.com/unrealtournament/UnrealTournament-Server-XAN-3193528-Linux.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-XAN-3193528-Linux.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="e3dd5853c4eb193674d5c832f60040d8" + fileurl="https://gameservermanagers.com/files/UnrealTournament-Server-Linux-Latest.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-Linux-Latest.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="e3dd5853c4eb193674d5c832f60040d8" elif [ "${gamename}" == "Unreal Tournament 3" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament3/UT3-linux-server-2.1.tar.bz2"; filedir="${tmpdir}"; filename="UT3-linux-server-2.1.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="2527437b46f1b47f20228d27d72395a6" elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then @@ -125,11 +125,14 @@ fi if [ "${gamename}" == "TeamSpeak 3" ]; then update_ts3.sh elif [ "${gamename}" == "Minecraft" ]; then - update_minecraft.sh install_minecraft_eula.sh + update_minecraft.sh elif [ "${gamename}" == "Mumble" ]; then update_mumble.sh elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then + if [ "${gamename}" == "Unreal Tournament" ]; then + install_unreal_tournament_eula.sh + fi fn_install_server_files fi From eafb1bec502216860a9c1c988b0e2141a5cb0f0e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 9 Jan 2017 19:57:29 +0000 Subject: [PATCH 260/729] Reverted to using direct link md5sum would still need to be updated --- lgsm/functions/install_server_files.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index d994b5df6..feb208919 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -34,7 +34,7 @@ fn_install_server_files(){ elif [ "${gamename}" == "Unreal Tournament 99" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" elif [ "${gamename}" == "Unreal Tournament" ]; then - fileurl="https://gameservermanagers.com/files/UnrealTournament-Server-Linux-Latest.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-Linux-Latest.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="e3dd5853c4eb193674d5c832f60040d8" + fileurl="http://files.gameservermanagers.com/UnrealTournament/UnrealTournament-Server-XAN-3193528-Linux.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-XAN-3193528-Linux.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="e3dd5853c4eb193674d5c832f60040d8" elif [ "${gamename}" == "Unreal Tournament 3" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament3/UT3-linux-server-2.1.tar.bz2"; filedir="${tmpdir}"; filename="UT3-linux-server-2.1.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="2527437b46f1b47f20228d27d72395a6" elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then From 0690dfe92fcc85dddf35f003bc51482af6b92dda Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 9 Jan 2017 20:11:54 +0000 Subject: [PATCH 261/729] Added factorio to glibcfix --- lgsm/functions/fix_glibc.sh | 16 ++++++---------- lgsm/functions/install_factorio_save.sh | 1 + 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index bd793d72a..9360d5764 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -8,6 +8,7 @@ local commandname="FIX" local commandaction="Fix" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +# libstdc++.so.6 local libstdc_servers_array=( "ARMA 3" "Blade Symphony" "Garry's Mod" "GoldenEye: Source" "Just Cause 2" ) for libstdc_server in "${libstdc_servers_array[@]}" do @@ -16,7 +17,8 @@ do fi done -local libm_servers_array=( "Black Mesa: Deathmatch" "Codename CURE" "Day of Infamy" "Double Action: Boogaloo" "Empires Mod" "Fistful of Frags" "Garry's Mod" "GoldenEye: Source" "Insurgency" "Natural Selection 2" "NS2: Combat" "No More Room in Hell" ) +# libm.so.6 +local libm_servers_array=( "Black Mesa: Deathmatch" "Codename CURE" "Day of Infamy" "Double Action: Boogaloo" "Empires Mod" "Factorio" "Fistful of Frags" "Garry's Mod" "GoldenEye: Source" "Insurgency" "Natural Selection 2" "NS2: Combat" "No More Room in Hell" ) for libm_server in "${libm_servers_array[@]}" do if [ "${gamename}" == "${libm_server}" ]; then @@ -24,7 +26,8 @@ do fi done -local libc_servers_array=( "Black Mesa: Deathmatch" "Blade Symphony" "Garry's Mod" "GoldenEye: Source" ) +# libc.so.6 +local libc_servers_array=( "Black Mesa: Deathmatch" "Blade Symphony" "Factorio" "Garry's Mod" "GoldenEye: Source" ) for libc_server in "${libc_servers_array[@]}" do if [ "${gamename}" == "${libc_server}" ]; then @@ -32,6 +35,7 @@ do fi done +# libpthread.so.0 local libpthread_servers_array=( "Black Mesa: Deathmatch" "Blade Symphony" "Garry's Mod" ) for libpthread_server in "${libpthread_servers_array[@]}" do @@ -40,12 +44,4 @@ do fi done -if [ "${gamename}" == "Call of Duty: United Offensive" ]; then - fn_fetch_file_github "lgsm/lib/gcc3" "libgcc_s.so.1" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" - fn_fetch_file_github "lgsm/lib/gcc3" "libstdc++.so.5.0.3" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" - if [ ! -f "${lgsmdir}/lib/libstdc++.so.5" ]; then - ln -s "${lgsmdir}/lib/libstdc++.so.5.0.3" "${lgsmdir}/lib/libstdc++.so.5" - fi -fi - export LD_LIBRARY_PATH=:"${libdir}" diff --git a/lgsm/functions/install_factorio_save.sh b/lgsm/functions/install_factorio_save.sh index 8cb28b326..353d57c20 100644 --- a/lgsm/functions/install_factorio_save.sh +++ b/lgsm/functions/install_factorio_save.sh @@ -11,4 +11,5 @@ echo "" echo "Creating initial Factorio savefile" echo "=================================" sleep 1 +check_glibc.sh "${executabledir}"/factorio --create ${filesdir}/save1 From 2c5de2bb97a4263a0a73385d403c242a9f972c2a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 9 Jan 2017 20:18:00 +0000 Subject: [PATCH 262/729] Added amd64 lib files for glibc fix --- lgsm/functions/fix_glibc.sh | 22 ++++++++++++++++++++++ lgsm/lib/gcc3/libgcc_s.so.1 | Bin 627675 -> 0 bytes lgsm/lib/gcc3/libstdc++.so.5.0.3 | Bin 2886540 -> 0 bytes lgsm/lib/ubuntu12.04/amd64/libc.so.6 | Bin 0 -> 1807032 bytes lgsm/lib/ubuntu12.04/amd64/libm.so.6 | Bin 0 -> 1030512 bytes 5 files changed, 22 insertions(+) delete mode 100644 lgsm/lib/gcc3/libgcc_s.so.1 delete mode 100755 lgsm/lib/gcc3/libstdc++.so.5.0.3 create mode 100644 lgsm/lib/ubuntu12.04/amd64/libc.so.6 create mode 100644 lgsm/lib/ubuntu12.04/amd64/libm.so.6 diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 9360d5764..84c244a9e 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -8,6 +8,8 @@ local commandname="FIX" local commandaction="Fix" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +## i386 + # libstdc++.so.6 local libstdc_servers_array=( "ARMA 3" "Blade Symphony" "Garry's Mod" "GoldenEye: Source" "Just Cause 2" ) for libstdc_server in "${libstdc_servers_array[@]}" @@ -45,3 +47,23 @@ do done export LD_LIBRARY_PATH=:"${libdir}" + +## amd64 + +# libm.so.6 +local libm_servers_array=( "Factorio" ) +for libm_server in "${libm_servers_array[@]}" +do + if [ "${gamename}" == "${libm_server}" ]; then + fn_fetch_file_github "lgsm/lib/ubuntu12.04/amd64" "libm.so.6" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" + fi +done + +# libc.so.6 +local libm_servers_array=( "Factorio" ) +for libc_server in "${libc_servers_array[@]}" +do + if [ "${gamename}" == "${libc_server}" ]; then + fn_fetch_file_github "lgsm/lib/ubuntu12.04/amd64" "libc.so.6" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" + fi +done \ No newline at end of file diff --git a/lgsm/lib/gcc3/libgcc_s.so.1 b/lgsm/lib/gcc3/libgcc_s.so.1 deleted file mode 100644 index acb442512fe19e4f151d7b6b7cc49933bdcaf5c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 627675 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

<_lre&6h)Fv|Rr)4ZsaVUy3PlcO2 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®_+= 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%0A)a? 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 diff --git a/lgsm/lib/ubuntu12.04/amd64/libc.so.6 b/lgsm/lib/ubuntu12.04/amd64/libc.so.6 new file mode 100644 index 0000000000000000000000000000000000000000..c83c7057c810e0a5afd501dd9578bd0a853d29d6 GIT binary patch literal 1807032 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

kp~L!b)GmCc`%w`)Wf-DC&Ah); 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 z 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≶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�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%0D*UW@L842^f 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

CM>7$#fKi&NDcSimS6%Db$w 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

81-BRsqncqQ7Cte}~lhNek$6sj9 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%0DZe-DCf)Gp& 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

YmR^;@pnvq^g3uMC5jGfN>c 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 z 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 U@RaamQ*bwa!J!mb1)>f=F1^q}5+QOhM z6cI>x!>UK@TDb@JZXfuO0S8O%~-6rLUj?FW{h;|?} z&otzDf!V)M@q#Hi=ep#I`+IQ(275!EqxGOQEObr98dDJMWSQzq27Ouar77rBPPEKp z@7IzM?VCRWgCdDPqkm>j70k1uqQaD2xn9yDhA*nX9+Dy7bUkP_gH~6pHU&-6gElc} zQ^h7z(1i$se9^ITlw?HZ8wiH8e9u$9=PRB!Ww%Y<3X>MHq=gmOi8AC{tp}}Q(5ec| zfQ+D*^`MOm+E}sC6!b>~LB8nN_OxU~<@+@lj`B^aWOkJml}2_m#(^_wCD|)0Rz}$u zkX=J|O+`(VeJTo8^Fd!OJgQJ%FBT~5dOX@&t39EP$9O{N$D)7o;R7c{$KWd$_p)GIjoNyQt1iSi!ZU3euSm@DNsPHGhKj z;>sUc#Bt~k525t9>&2t2C7ag&)Y53{dU3Mr#bS3N`i!8JVVn^UCh|GKyk2|?LhwvF zWK1KzvMpm_#GB->p7xpkCeNlwaboo^zF+ zlf!z>Fg?g&J?At%$YDLFBZ4gJImdtjAy~e{`oL$Hq!Aj2^?^ltki+`GGkTE2`oMz- z!joKdeSn5`3XsR)7J%f5LjU)lA2s#-h-b+(NcIZAO1UR(&$`8n;WHZ?Q|9|#xiWIqxv zzRa~jxcCa!M&aU%TU&&SRlO< zWxk4cx+zb^qb{O+OMYz}^7|I8pyX6(*Gry|QSquI&yrt-zYUd@Q$`dXNT=B@PfTNYUDJ)?e6s;_tbqBg#<^^4Md zSJW@c@=d8C^p87?2@7fQ!{grJO`zy2Rt5SV?>Z{uLPN}a-_w}!@%JL1W zugdlfudmASmDE?|`7UQn(f{}>Q@I3Ytbh3{#gW=3KfXq93CG9kEq-x?wkdw5EgT=C zx5O7mXq)1TBeP9@aYVMsFOI}E`NaX)CcilF+T`zSD^J6!PV_IgvM^ZZ@qe4H&AkIF z>f+|*(y6?8|BX$C(pkKD|07(yd0&G|CU}Ag#BKbN2<2`3hH&vVUL;(+jh7iI-V!Nz zLoX4byrEYJ7jNj5!o?f*0OP(d?IF?))^=qa?aP0(ue7C2u*II^^| zI^p2?62g&#^Ztbcy+;OiS8Tn9R>oZo^dMRp_eIc)U;|V*kb^jHqY62^AvnlkF&xYR zH@o?M7dnc~f7DzwCH%|Lv1OxT6M#*&Hg~4%6$B#HY%%r$b2!hsu{@8T3y}Ls=vB2cu8X5*)yk+A zqIX>?Q)Fp#&X6fkQPF?S+g z@XYDIKv;(C@8NGd{TBE$4S&1oKY>5X@VB2n8vb^Mzr*wk;BRmEJ54_w{*H#f^Yr84 z?_~J3>Fwd~Ed8QYEcXL&2|Nl*B+>PT;P4;78{<5mL-xU(Aovg9jqzN;VrR^Gt^WXC z7(Yv}*emyf>lG+%ic~nG|A(PTy6mHAY9q2fP9$PytqB&g=7ghk7JF^Zi$&I51dH8w zJGfqf@j(h|fYxJv?7=x95&1E^bQZgE?ivVDGX;x%dZS=L)HK0j=e`%LS8(o+DL?k_ zJ48%Wo#C>h|4y(VANz~aS?uv?3MAy)DOl|KBXGTvjUUSQe{KAp;?ZuWb<1i`5MSV% zjE(lm%RT;$7km7BG4YzVJmt=-@Z8cC-Ns4~-^hY30N&`LjKQ+5 zIJdI)K5Ks^!uunZAmLIhYch=SJX1z~3r1+DqUvnH&HJIYhG zS}R+Iu8~D`p+1pO4F>ZsKTp&1SjiL?f!i(gO^O$ILA<~oaRR*$5{P4q%PMg{K@i-b zp5UGc$6Lrpz<`18SXuwbmA3b_0?WO(&0A5rN%Ib@Ux+@BrfBsG(dVrZ4)l4PkYfr#|e z$=FL#mPo%8WidUH;WZ2`a0Zj@2g5S{)Gt;2`BIc8`tzkIPxR+vHxM@>>|!HJkdW(9 zkQ}$<7i2vT7W&T`+{_=)|7YEggC^dl|ChSIrxtjY{@J?!VlD6|_-nm-ezUZ|!}Q-E z{Jm+rsRiyO=Ms!py_?VmTHt5&4-@{j^j}5)Il|wQ{$l!15&nzmA4>nx!as}t{_r#Z zz-C|3yhWv(>U_OnFbLQwhHK+K(8omLR)_WXuK*PBOpxCCE^;&l2P)#xowm#qyD5BVI!+ z*p4nc+FzF!?6CQF+Wfn1{(75#kIlc==HF-Ye{b{exA_m){7n`=p8w7B8&B#7p5Q9n z6;tG0akjWCs)!WtiuZ&A4e%iWz+HjwA)%!_%tegniSLK9etH5q-$?d;DBD46Un#8# z@5J{**{ga&eZGPFq3mgum%Ja!9y9yfYGrfH{+?RdOtb%Dt!#?fKT9jSH0qc4L)i$O zqu&o@=SBUzAIf?~{k$K_x<>uHAIj3Be%=pdyJ+DoP`>?reW=j8ZLDNWUhaP%$F#8b z#)#qRhmmCJI#2m5y$ANLUjx&hwUwYXC)b_41Ks6?n6IA46f)LSz0dc;noP!Px5!(= z_=uZr(GSRgGZ6`nS}$9S9HEnzeh zs*!>NM|@$@(TI>!z-kE zgICD11Xl@(7+|dOi1|DFC(++8L3Zr#MIR={E7n|$SL~WNUe&X++9^rKNm>MelC!h{d}e{`?)}3_H%*6 z?6-UY44s!JxR0}^8C^Z8@1r}5ym~YryY&7Xlc}B{EK+%)^J~{o|M_zF>~CoQtCjs0 z=ST+k`8R2v+_j#5c-L}Oa0h%^K$x26e(c|uHKV}44;f>?-G`U@LztQS_u-7gU%@`w zzYhmr{SJ2D{(U&@>IuAK>EDMVuAb>g2hO$ncPBb0crN8+?&~i)r5sPoGPA(l2slmrjjZp zDpdxg()(*!zu?Ll6HsOesx%c z{j`vR_p4sZQAl}#mdQ-eiRyV?oo!^gPOm%W#G>w3=P~}(15#D(r;Zvx&ZrzFDG+5- zAc2M#mhBsmgB6LRAreJpj&>yK(Y$CcCGH+h2z!=7;f(f<#RFzuW<2P1$K%&5z+cry z$Kx>}ODrDD#EgfLsT&?`V(?&+r0{41k=*e38hQ^rl(<_EH6b2pRy^o+$D@n|_^Z-% zJmv~nV)0-mW;~2c-S9|@!GlSX!ea++dN({iMi}r=;;x1C3Gqm`;z6%F9zGU;r2-v~ znJ7T5*N9$0zh9V%84n{BU+?OGJLOeJmn)*|E-SL>n z0{m5(IvzYyz)3%ti5U+gQ#U*^WAI>-r0`gT@zV{Drx6A`l(^48`h<8uZZjVAy5ljD z1^BDl>UfM2Z4;{>%*2d`k*OOVZDa6YlBDpcz{J80kH-)OJe0VHXT!hnYo_kKv95RZ0NJm_`D zqc;oiSGCje=p))D77u1(#>2?e4Ucv)crZy)c>D@8Q8zqhA`EyaaqkrK)dcg8_EtRT zb;qL{3-DL9*YP+;v`s7?%*2d`k*OOV?PKs@lBDpMgDJWj9#aqoJe0UMLi&XI(ZPxb zz3zBqumFEm2OW=0(KfMoFcUK#My76fbcn%&Ns_{2I-XtJ@VFFVz(a{U3DPITqoWlM zdfoBh`CGuFqmDxm>V`+>7(AFHDLiP$=B6KgC~o;oCGKeuHz6LF zi=)S`QV|dgwB)HeOHb zq1)@Ry7+UvS-A)AtncAF>-;m;ix5zUfI0+-^#%C1!@u3+-vR#)lYb}tJ5Byw@b5DD zcf-HiG!y;{Clz9)DQiQe=pXXP8UH~Z(1lE zSZ}%saUx<%My?7Yk2Ig#!yuZ;3cqc*5yg z2*ScsBODPPRif*!e{Xl@hY!~WMBJmazzHJm(Xb#AjxJi@T9IE@EkL6>|K4uc^A(O` zw7`7kXX+pPdvlmycP&8U82{emuo)#B$7=zccm~c1T429$oTvr921@?DJ+S>G;+%wi zbmq4PKZbmLnO~079RJ>vwE$Oc{d-T*0^bP7saSCn`StSN=il2~3v?6gKCp#?BQgVF zCjIg6?dvV{@9l@vI7Qi~13wY}3@vbx$mUG%3I4tPwEzwD{Cm%m>w}T5LZm#r()wYj zG-%TQHbEsr9ef-`@s306F3Dbvz zI^f$HD%naOCBVCeIC_G<0m8Qnr%TW$jD-st@D4P6lt+KP7QRgQu&|Fc$xy+XP{|s` z*nw(=3f6{7*3!3G_%?(}HqgiQ{ZPRdp^`7?TPA#8hDyGq?=|7u5-Qn3-#>+~HdIne z-~R~TcQ|f>KAK(Ol~$Z4LEjwV+k=xQ=<^DnI6DHqDe&=S=?g|R$xQ*V6T<#2RIoZ! zvYIK_|Aq=a4wZaNANN~B1?xj4>*-_v8!GrbRPs4})T~g!rclWy`q~TM*P)WH>7%_v zsNkDW$v5LXDj zx+Zh~n`r(0Cd7AGfA^l|;o5tOx2ITFr#*>SJ>QSUi)4xJC?JIT@7BXVMh?2bKNbQT z;{{e{TXa4AN|cO|Qmm=lSAp}QQqevw!Fo6s(l9uy^>AY;&T&0lpHHdLGTUvcM?O3a7R z1&HZhw115^pUkaLjGLq_ewc*y{akELI0-V^Y4 z&X7?JS{Wy4w)rK-)FGqrI?iSWagPu4H_Qhxe_H`go{I~I%L$R zKD@e8Gh|eaFE3QEdB~{EzCoB#3>g*n4ZvJt$f&IxF9?V)N7mohT~^tbE$ipY!Z;xM zBk?B5taf;lMCylxBZ?p5nO`rN4;zNyUf8$MjuxA=clN-5z(#KJSG1%?8P^E`Yp^~vx#v>oQ%jPiTm`sN?PI4h)!CudGoNFCv)p0B6vMH zV60;H9VKHdcI(#Sy%4RegJfKm2L@jLzMa%}zqHhBfQa>4ph^VYr`LNaf(k?T ziF)@9zbt&CAkKZ1#(QcM-{P_+E${%+76%U$hKwk_Ek(gS;V}@j_A`N3QSd7d@Pb?t zuMtdAw%NDE6S@_ppglf=q(*zt6ic;-7MO#di& zC%kM0@oMsR7kHV)^wxmyt2IE_ZULbZHfsumQ^OU)XVlPplGFp%pP%4#tUn6Y>+cEH zdP2i-W8JFj3wtlL)D|kZ)b9MN^RHQKZ%>S)n8345zcSjCV{sIm>rLQX8U-iKBz*ty zZkXGdo2PG7pZ0_oEKe36zTy}y;t7$dRFYG}zp@r##^>)Y_?(S`Yd>S((HkxuPblqb zG^JHxd|PVQiEwl<;f7_kO%a;-qCJ^7O#ic}uV`QEeaQo7E%znf-4yUiZJHRZ&1!s- zPPO)#;U&Unw6^aw{eGod--Ys$)2D|}RJ4R?rV@IFud|lGyLkj4qMCN|oReyekZwyB92ne4u9)loIGI(eKtNsiy zmC!SMinWA9`m=bc(w|r1GT{OJc_fbhgb+K9{!k%rLX^nmP-n!W%3VhP%kqAt-$VbM zC_@h)ME^7L{$+Sy`rpRa2=(yp^zV^=jN6!#gnx==2v6pwVrb}bPxeOF+2rl$2@Nb8 z(K{s^{=5O-zwB|8;BWAb^Mvl!M~DOX%pZLEFjgmgMkkD=BK99&gcmHqtODaH#|LXa z?X6)Sjh=hxl51q4$Fjf1++zv8wRgo;k)NSx*)NH1d@<#F_0KXYJ`IxbURQ`bxZ0Z) z8ID4b|IWqe5=?)gjNdco(9jvU@VyV#?0D3S{z%C?4Qwj(3z0PE^m0lw^ry_EeBepQ zIsD0IfTKF21T6khU_Q(QgilO^La-4M(%_wUCl{1Swtc4JQKjiY0>dCI$eg)^m#LcPK_6o%S*LMMJx zG^AJ9dkF%z_M~7LW#d`NuHO^|dxf#QhPDfi=#|xkBjRxJ_?KpTLKlV+@25UY>44X< z;VzH}j3Op1?^aBHuq)DT@b$%e7{>hD6T;U^ZtWi4ya>_JmY?#9w(Kby^6u=y!HwPx ztnA0(RSUK@&98l5;+gM1(8+srzJF%xSb_@*-iXt=CW674HbP3O6p5@(^ zlM(E83xoYjx^6Wmf)W;VUJ7vXwtMJVNqsvhr^VpDFp%to&)=uH>UVJMxP5)X<*#m|se) zJ)w+^R|4Vcj4E6N2Pj^KW?E17;FZ4dp@AFd3=Kl0=k-Y8#%j@5EM*9EsY7jVsSn6L zGy^>fwJAINF=L_hhbl$szKwF0hBpN|{R8jA;!eB#C%g=ujLU0XFlL6+-rmYP2sex; z)c>rDd#8-|gsx&4-XTThyZ$X(rdw=ye;eZ9zXn-4Eo zb3&^!&7TO_3$l6>nCK(e+u{)%H&;eD)L|PQ^6tJX#mk4#+-a1b;dNlu!bVxF|Ay|K z7On;Z80UoFf+I8|3*&iD$RB=|e25GA^#{zy!O_#r$Yzvxmo_xjZV+%vOgS3eIU6#E z24-Ev78p94h~BVHbh>va=#i^{0O5m2QW*eTXaB|NvpRcZ@9W!f1)kuM{+jIYX_O=Q zMJ--+Q21x8`6KbK^m=l)3H(DB_C+4H_6%=(6DiS3b+{k?%oP5mS)SSZ8_*;9-j!9W z#xPaIXqI+SHIm~;#=x6;r&MK}g5OjYI>Hz)JfY`ATZLYEj*ULMiZAndW`CW6uL_2r zT|%|XXt}m@QWm(_;~&~^Gt|+W8G#9W%6$9yH!-*JHI6o7n6L9_ z&v$EcOYamf+Foc8)*pHlrX&0E{->SSXW&&$Ii59j!RkU5SkreS>eUlP z)DI@%f>^KN{X5*zh!9@#1`t53?`$xjeg1Z-60&e&rrs92qXul%k zUNWjP=D^LrD^NeKm<;`B8Vk-i2^(`9GcdemECMTB%=n?9RWkT(Q}7E6K1&9_EQ53K z9<>;8koqrV0fR^fM4_G#Oq7T|XD@;x|5>p|4A{s#*9-sV*W~~{UX0zjmHwfBeVnj& ztka$!Sa3Jmd64#6Y4e+KGf^x*s@@n#SL18)YV6M~@nSnSC^I6Ed5K1GuZpMEO9ua@IYy4H__?0St7uWdDo8v#B z;(z&yn>@20G08Ix9wE;Q&hhgni5&ng8j6Kc(I59^mq5MB6L*VfaxL&Tc+lKgVx4U) zJjEezFZl3)$-|?tSOyPPhdQTm5nvMZ1l!8^oDte|G(5|3I+V!n4tS8J5YaqHgSOQI zzZFeW4Goz9bqyBvf>L>Vbq`+!*@M-&m7Wmzc>%Nwx5+3B8OU9Rk>s*!0mroF5v3iGfqZ&>x$Ot7SHbnc9syp$R9*2-bI z)g$$SfO4o9xASuE*-UgVN?DSNV+HW?{-RXR;1zsa%ZnD_`>W1peZC8S_!9FPF7hhm zL@d;SSq)-VcM}#LkYsk)*^}AzkmJ4*86Uhr43%dXw`#Z)c@|cWq_`+|NnfEUma0IW zAl^3yVBzr;fUV@I9;QnH6$qV!w)S2?DSkmIzQa>6zMGr7T;YTF%22uOUOZA>h2q%hQ(jS*s&&>pQUjKzW?Xwd5UI^bI1R)N04fcY&(B%Fj0)z{!) z%&jjD{WQ#hX>#=Wkc;_vIJ*mKlP7C~N#D`6Sj?959S%L+q2Qqc-1bwmFi>s_hhG2; z7^A}Z^?_c;pc}#ax_m+}4&8t)1T3=uz0iLziZ1&A%tAcw7S3KuT`3y!0%g+Xcm>w4 zkHypu0*W25&_DWeq8A#8{;1MB+Ead4R=5VMaCkp@CywU3wR4JSWcI0#l zTK+mk3ts|hYM;j@OhbNXQs2R2v$V1t1f!?T;WJ+_TivSRWfe%8jxZJ$%Gi5$@01%n zq3jzx)v|o7M_g)5n{LMdr%#(o@d)p`NKBi2be@aESMsqw*lnV?%$bHJ@(&#%l5mz( z!f1UtOBzAfNjo_e8qB!*ROnx;qf?>h5!S;Lw$Kz-B_zWS9-sPOwyziF$K^c+;3~#< zOl^pq0ZrH&+~S9B@ZFQJn|g;>UpF8Q@H|_t5QP4v!PXZ zT~J|@zzEfT zhKU@WlR1#fKj_5BlquEzV}#$h|E#DQc-2ZR63^*cpcLuDDLopS!rx#2eN*_-G)|~q z=Oa^iG)oD+&ZnsGMbceI_c_wNlI}jzy^ikVrMrgi&eHt^-EHVD&$t_>@p=X?#uE}o zq;H?CZGsvbLz3yi8%do0rq$Fo?f4=}^p}F309AqpfSl4L%bPfS{CQ`eol-b{O#j>g z=bv}}*@BUR-~O)rVIv(<3?J{3RW$3^VnmVsb1%ppJosFPJT1XeuxM`5KW6->0Rsl) z;@?T!Xy`zP?4zOQJA_Ue?#aL8nh6XknK1H_lKi5Si4#T*vc@EX?EX%C%363y|6F_B zL?RYG5Mo1khb&Fi6q%bFNR~N#{5jTiWQcZi;zz4Gz#&yM)Fz9_GaBlYbAHMA!fP%& z_bkG1xKZcx6(T@@@WzCh8G{^S0EBCxl4liOaw#>0vY8W!67t6nFD!HlKw_lrKXJTM z;KcF$T@yN|C>&ON?)g7*%4_&ow}A1kWhh7ooWtgbsno=h!r@~^j4UdgFrg^sUQ?~? z9wP2fJ&$391t=kkhb7mOTF-q`%H zBQFv0@?~KDh!K|{T*Mz)G;*v5dC^lmGJpKUOGXxtESW%W;RrYiM->jwpHMiaBt~$Z zarRkfp?dCroe`7)x*ddbI8yq9(n0*=xB>Hx6ue9=co-d1^f?Y(^6!-gwl+QS;MS&< zplP5yP&SDCn$Xs!=Ros7lR<+(DJ0Y1rMjEt@NcTTq;%1*XX#hUX#V5K%|9#*ia)#n zFaA_KeGKH06>gH8y_tq?{;7JaeAHEj%3sA(SEf;JbyfM9)6uQUR9EVea+_sy zax=XXpS)!Aa7)iRn2G&}@-uJsr^+#3&GF29yPJ8~dCJc`l-qt)WxJ(U^>+)m=jY_- z{Y1WR+O(fePq}UCo%p@>wrMwAn{va=H{R?`xl3MVOuP2_pQcQke)H|#lpCjCJME^F z>u$UD_FGe~zui0iwv=hU+pqT`+3mic;TdzP%*#7f=0@pc|IBjO?!=hmM|aR55dS<5 zRLB56(U|^HZGUPIVV=yNcoLVMAm*?B`YH#mIX@7YicIKCBtJ7yb*KRzKLjNdIwnF> z8dja!lI%gMeky=%#P&JSi0GbHMLE!v(ug+ZL;78cr>=?ekC&EtP{mYUxR#pS!Wl3B zL}^6^xY4MeZhvYF;+21lYv7Y0tw?|$;I95=DW1B7WcyCa5ha3)BwO z9@GKU5!4CP8Ki--K}Ug(26X{-1$6@*13DJe9dsP%c+d%;6G1&dCxLo`azH18P63?? z>ILcz>H|6r)ECqbbUNq^(3znAptC?{g9dP2s$71BhVnwV9*7iA)pIE zLqQjTE(Ya+t_58Ox*l``=%=75pc_Fqfo=xf0=gA+8|Y`C+d)%7(?EBCrh{gHydWQF zCg@JkU7(+XegV1ybS3C2(AA)8K$Af~RQY$Ktb0KBg6;#&0+oVhgXVzzpa7^0G#7L~ zXdWmCdH@sxJqRiXJp_6fG#~U!(62y`fF1??8uS?GH=y5weh2zJ=ntSjf*uF`59m*z zCqRD&JqdaW^cT=yK~IC80WARi4fJ==KS2Kk{R{MO(6gZDK+l6JKrev)19}nk66j^n zE1*|FuYq0%y#aa?^cLuCP$g&~Xc1^JXbEU3s0vgKS_WDUS^;_o^e*T<(EFedKr2D3 zK&wG(Kp%oW0(}fx3t9*I1hgKs0rV;8GtlRtFF-Y*ji61SFF~6@UxB^`Z2^Tr5zsfF zTF_R|Hqf`A??82+?Vuf?ouFNy-Jp8V9#8{lFK8d=dr%{2Kj;9c2~-MdZU6tH?cdt} zr{qEZ^FhNv!$BiJBSE7;1t1To5HuR}V^9&O7*qlp0~!k&2f73_9y9?o5p*eN66i9} z<)EK{t^i#Lx(akP=o-*u&<|Dq-T#lhI{}R8-W&fvGYNtqc48ZA?NVajVqa=WiG68A z5<(;q5ld4IRcjDxuM&zXs-Y-qt17DYs;#Q2s@jDrN|@jKlYCBl?%Z*2dvEXa-2eY^ z?tS%r&Uen7IkRMDGRX-pD-N$=3|>b(o`3!SAN~60zR&ms+V)TCW@kNT|KvRXY@5dE z)pv|Lybm zL;o|*|NQG;9{F-BxFa(>kPV*52`}V9J`_M9c%vwa!;VrYgK{X3il~gL@IiI>q893) z9vYw#{LmEgzOyCd{ieLvl=qqP9#h_5%6m(BUn%b?<^80*mz4LB@*Xk}K?p`D24WDx z5rHT~BL=Y;iP4bvf$|l*g8C$Ro+p!b7u?Ksx4+n4%hj0YPZ~`ZB3TJQ*=WzikxQI)*j4QZ?8@Pp3+{HcI z$3r|q8lFNv{IbCvnc)HXi+S?z4CaLV;R*Sd3G+ez6~aRBMo|=p9i>nP9L-}X5BV1n zD?|SELm$XrrtyXRm8m+YhX!Z_KQu*iv_xyPg&b$z0dgEcCj_7?x}zsJ`p?oAfe1n{ zLNO475Dxj*g`yCR7{p>EMk5Ym5RY*fj|rHBDM-L{Bw`k3V=m@nAr@gVlCTWRu@bAW z8f&o*$=HC6*o-aMhV9si-PnV@*oOl+h(kDnV>p46IE6Dfhx53A6kNn5T*eh#!wuX* zD(>PQ?&BdIAq`IBQxZeRpl=v$*+~>g#2=79?0L5lwSmuUr_Z%QOI9svP1sz zWEqr${PJi;R7O?!pgMd}3w2Nr@^=;FuUYz`DVn1tTB9x6LH<;fKjhGf0CYun$Y03p zjlKv(5P}hkff$5vL?8;$h(RnyVl?6~2Jsk&@tA-~n1TdMMT*o{5di+wnNgE)jEIEE8AiBmX(b2yI+NWn#1!ev~+ zHQc~0q~b2_;XWSX5z_D!7B}vHxFa*Y)J|!4FN*94*lrZP5-L;EzrSfczE1?&t~myNZ1gh#&+b6az5` z;fR3zshnuUAQmGr8uE8g#vmT!Fdh>y2~&`O=}5#Z%*I^I$3iT^VkBW1mSZJWVKvrb z9g?vD8?hN%unpU>6T7hod$A7(a1e)Z1jld!CvggAa1Q5j0V%kMOSp_HxP}|Jg;d17bJVF|t!s5>T4|imS2eQEvIpKvo$cF+b1aA~YaoAA`Wl#>~Q4y6<6+WmAU(`Y! z)I$R_f*+cqIa;DM+M*pgz#p9u0Qsx*-O&@h(HDUTLNG!x5Q7j7`PaFkAb;sT2C*24 z(TKws#A6)BV*(~&3KB3KiI|1in2Y&Xh(%b8BrL;nti&p;##*dHGB#i%He(C6VLNtW zH}+sJ_Tc~y;t-DD7*60MPT>sB;XE!N1s8D%mvIHxa09oHio3Xn`*?^)NW)WDGI9UI z9hu>QZ16-*cp(q+p#TcO8%0qZc9cRHltXz`L}gTk530i#wNMB3&;X6#ho)$bmS~N( zXon8)M<)cJE4rg6dZRA_5rklbVju<~91(~@G-42okr<6Qj6pocVLT>a5~d&l(~*c- zn2ouZkA+x-#Yn<3EXPW$!fLF=IwWHQHexfjU>mk$Cw5~G_F^9n;2;j+2#(c!V@Og(WlhKirWS9>@kyiF#44=D zTC77dHee$*V+*!nJ9c6>_Fyme;Q$We5RTv&PT(X?;SA2sB;XE!N1s8D%mvIHxa09oHio3Xn`*?^)NW)XeH~coZ zBQrdZ4W7seFXTZ!6hI+(qbQ2Qj#4Otaww0AsEn%cL3Q||7V4lL8lVyU&=k$l60Ok| z?a%@K=!5`tMR)W>Z}deVf)I>Q48$OWBLZ?nVl-k9i;)bbvoPApl*`9X-(-eG!Nt z1S1p!F$m#^Kop`8gIJ8jXvAR*;xP{6F#(e>1qqmrM9ji$%*A{x#3C$45|&{(R$>)a zV=dMp85^(>o3RDkupK+G8+))9`)~jUaR^6n3@30Br*H=6a2^+sf{VC>%eaDTxPe

E)_>EQcX`5hgZ&;Mlh6J3_i0cF~e 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 literal 0 HcmV?d00001 diff --git a/lgsm/lib/ubuntu12.04/amd64/libm.so.6 b/lgsm/lib/ubuntu12.04/amd64/libm.so.6 new file mode 100644 index 0000000000000000000000000000000000000000..3ec2d34207edf68a826a81c41b6ebbff023505c8 GIT binary patch literal 1030512 zcmeFa33yaR(?5C=G7y${22BK&z@R}RkdPn;=Z%FAiO9EJBS#-h201O85RwT5E01#S6y{x&P;;u`+eVY?|r^|@8LP8yQ{0K ztE;QJtLvNzGkW#8H!vVTGp;&XH;qb}{TX7HippiWH=!PZI@dA zv`R=DX|UkcK^lbH)`98zr_BV}8+Vw>{;`2Yf3_c%`{;npM7@8QqV+#eGs_%QKzxHBr!`~X`E&KSP)SExJ z68uwM*p;6e5N|YZ)P`{AGUVA*l{76F1ZYTh+>LOz(vmf8QS{9@+VzE+t=G+gT1j&9 z$ly6pIMX#J!5V-O1O==O4Y19=SzG_Mb5Vo3bG11nbUWtG3MH|G)T?)G5A+U9JK9@= z;+qELq(ok84+?0|>sgyUr_r^>aI_#|%&z4GT6byz!9k_AUIE(Xn+ZHqjWtM1M7}`| z8U$%p8@Qfr3&!AVXqOWlh@m?AVgxAJf^Ed9?Uo=dN9!HfC^gX5xv7x3U zFbMb|k%5}^X07G5O`C?=I%~5vZK=)Hvu*HN&6ace_Rt=UZT4bYP(XrprlvikX~}N| z2lpVNGp~CgAULp&H7LJFfR=B|e*yj87--e(0XdqMtIY|nxBi3Onhi`hEw3-gL%1 z7@(Cj&kY7WZKf^29=zNdP!bSdY}0Ixz>vT|4LqPW0J9h{TeH{Gf_el6%)F%mr0|Y* z^Bkqyy?QKKR43k^qXpyy?*fm|h~7xh2DxC(YS*>2uzoq$=H&zv>}64Js{S8c*ZQ@- zPRgXSVUoYzgwq818*txfg4LG2$q#6(PX;&~ndU~pl(sPCZIW*(>CH%Qk$i-tt&rX- z`P-02N}iJ2CEr@oHj+}()|8Jj`w66q-18MsFajFPdE zA8&$9Kt9VMQknP8NCQp!&uoi6zqNOL4l$xKr|ANc|)&oaShBVTAL zUoDH()aNSlDXE1?a{)G2;Pa3c`{6t*<>yTB=OvHDOI`CNT_EX;lD;HqZOO|3zJmMJ z+A3>-y=H>Fj{HL0Z{S{p+kCx=!dtlCHUZy}{JSRDdy;=2=?Az!#QhQOk8yv3o32lB zFUGwD_fp);a4*OG8Sc+<8`qac2I&e@{@-Q4`ZoxxO!ccxc_aG`GHZ;&Rnii`OHFla zkzZ#jQ+7S>4Sp~xZZyF*Nq&o@TP59w^gGE@vR(4un_xzEr;+hXclnj6_=5@dqvU@w z!G1=5x2bGo_aL*+DEOuO{mMr1fMgCD08{#lDQ{%UC39HP-y}UEDJ4fudCDG>@^Pdm zB!3d=DaljvhvX|IJ&p7X?z6bh;rbH9CvfvEpXd#-;A5CTaZRbzLlh0<9*)h2fq#FNP*q%SJxWlwz#AH;O$V3 z6<9~Vx;v%Z32A4^cR_lWVW1XEoW@)M;zNz%zkr{JE7dm8R1 zanqG8=~I$Umvn}tIY@IQ&n@^lvldvMA1q(W1xRQ4)tPDe=b!e&o$Xil$2ZDzOn616 z{4vZ97{Wa|;fZutDn@H^YwooBtU zqGjltUDjOwyvx?uOAoBRz0Yctzx#Q9c6XHfqC6*kw4V3(#_Yv|JLe|OWl^oJaGSI+}%V8`+LmgXB<$Ch^2FV=5#{tl%5Q8x(iPRIu|Xmq~+6Wbc} z2fcCj`Pq%%Z!%y4(#KIg)o6b9WaP(Q?`ko1Q}<%a4XeA|w`c8x4UyioaCXDyqvPvT zht?a_`_tJCuY2J5pUdx`Kl0m|ue}h4d{&d53tOSSDe_uD_lJM|Yj?Xk$**UB@mNUw zroZP;Z`^j}eMhD*$o?g}?F~&2ckX<8>b3e=+~;xY*F5#+j`UdzQb)|#A2t6Ddnn2U zUo6PZY2W(7NWji+IC4Y5imqSILV3xOrXBu5`PC5vUzqTCy8iQ+nP1)1t!MK5PMxEo zVt#ghKdyWG8)huX9`=2^SuK#3&U2kP`({VIw@%#=vT7$c3Ai2x8U{Erasmk zNVisl_`uDNZ~gt|gAKoot~m2^tDE#axKGFCZ+qa> zQ2iX>2T;C%a$l7Ho_CWTp88f-OQX>zmkd~#U0pqJ-cqE!PyeFNd9v|mha3I%?&m0f zx1yVF(VX*EEO4E<;o&&_S=60s*7?q_QEq|q@OPfjN8{F~C2DjBth_v>_lKSI2UbBQ zNPFhp9rkF>o`jIUY{Bh{Z_<0C9EVW*ITes!~EWYEj)S31bp?AgU z6ZgIK(&RRG>P^xb+eQFZ2%e_C+3mHW)vjJQp*|aRPqn|eBJRrFXJ-KZEa0Cl3%jrq z_k-Z!^~sN0-$0w8`Li3ojeLi~>l+<->w$6a0yYA$!tC$fKZNpKfWH+wKRd7G-EX=& zO+G)e(W}|dBR%`ko%)}+$D&+?wEUgiDJ#E9IlcYDFZvp!FFlpEcU-3zvdiCJkR5qL z;DUg2KMyZ*H5t(1t&_j~2%OWduq*A?&u;k2_lp}AogZkufN~dMa19`rfBOCy*bu=GHG~ApiY7=w#!l!MRnfKAS)8+wY!6 z+PMDw>_<1;d-%Qiwl05MvoO0$+c%F4+ZLy9`n30#eaDQ~x2Df-_yo$K1IFu7A64Bl z0I(MqAMDmR=!||7V6P*;z5D#^CMbWH+}j%auk3M4kdC(QSUTzU#r;}fz5l1Hj@D4y z{HQNRNqzX2z93bi7{>Lrz$etH9Y5_V@UGa)YNJo_h}z)&uL7^CTRT2&nKs=1*Vhed z$8P~dn?EwjPh5q6im}wjrxoyiufrGqH0)6#D&MJLHf;M0N3IiA#z9#WJnrUYY74` zzQlwnUP0Fd8CUsS#&5}B?RTIlISgieV;;L1a+t>W&j@~)z+?K z!P+BgJq*!e1~dFw?na}RJk)RUOa`v0S_}Rch91^s z`tt?;1I9~yR({TKW1TrF_&K6KVS;~3_*{BF<6n_}Uy}JMY02=9nJsOcz+-M;cpZTU z3ICZn3^*!uriq+mav9%dk6H0pM+c{e4o%i0kYJu{c)ya=>K%# zGnpI-Tt;l62>lYBbH8s0op_Odx%dyp{#cHB;wNS%BlZ`3+Rg}GIfnZkEcAPUAGIE?V1P~Vm!nAd znT;4O+oyIjwHt`w>*jIL<#*2Lq3xjpZrL=b_@TNu?(l!DP6zFev$Aa(?L;P zF43QuI*k9Tz)J+*zKijP349^?CHYuC_QfB9B8@kBB;%I|{wNt&<@Jo;g{!qkWZui4 zWO$(Pd0OzTvhPn6I(W~o`i+qQt5xu0L=H=zWjdpUej)0K&k_m38!^)r2EMW137r>Z zUdp;M9f~v3RRwx9E`NWLVxnY6ITYx}W!Ta0BDZ9b^J`qKoxwa3KM8L!gJXq$OIc5} z{@kwve9#qzdcrTx=dzm9+%%_-#w!xSe*^h1&{5FRDPG4qedHd2&k#LN zc#->^AaJM5OG#&@Z}@L}L_XFVd7!UzGp&h?tNaWDNH6KSSLP*WIl~tVewN6;GMN!) zGP*We=qwUBqq(~F17F#7CgZ0HycDU@w_FBXBk=YjpG=XzL1(V;W8cV(d@uOBK$hs2 z$oZ(6ho|KWpE)VqFZs=MT@?IE*}shQf?MF$sZ5{Z#dPh)xQI`?%wuN;YmtyM^;;?a z&nAHf$-I|0;(iVPYKO?DxBv#~PoNKyaP5_TUxys1-vpWW!Giz0=tJ?BjBlK6 zw~E|~Wgl!Q_zMJXpUwE)1pb`RDbHg##S!S5B6?+Cz;dWB{GrC(!zxd~*I zpYQ-PZmcs13i3R@%l&SWakVkVJBQ)X(gnRUAUehLf)STNry9egdACnz{5G6uF-QsS zA2+Bk__kz5{8Q+Y{Sm(PJ*K~06upti&F*IWrQnaQ&jmkO&cDMLtW6dDSz3?fZ>(=S z#O}((AA4BnbeDNwG?VcS|KS^O|i_~uHD*Z;hbZ|LDf=0~;%?S7%-e~$P`@csS&?IPzzvJMz_(MsspW;27$gwI>9 zqF0Z~xMIFw#MhWDZ5`;SbzmXGPq8?(&rnqJC=TXFGTx^}o{KIs{tIC{^7iILa6jw|2MBGc(Tl=GoUn2a|_a?;8qFhG2LGVwb zp5RMcFyc>;3thCWlRRzW7a8khLy_Ae@#_qGtOEaPUOIBWH!&IQh(SmEe`CG+&gfSH zb&a{1)?Vzc@;uLrZ1Y;V$jyE)Bc@CBESaxjK{Wi&#=>X0yui)k;c0sX-`~${Z1j7I z2_F(UToC)Mlzr3KclyY@6pR00__2!&eem-$e-b*jCz$`^LZ6O@B$Go4OCC&!S(73P1Y;8zOVE(hGF1a1@gPV4KF9BkKcmt7%^fe$Fx;*D1mOTKd(*pRo)4OJiID zA1LrIgihviUpj*@|70&VSr}RhexA|q6viJZ@N9us3VgD_n~R>w}FH2A54e@fEW0W0Uh8 z#WCqxCHy4FzH=LcwH(3sk2ijfc_)6f*O>lYGBFkK2MC@i=Z;vRGehKG@*5)>=lx#d zKNS1L8(SE9C3@aN=&TkxWo=ph9}559K>pNk@@EV;{EA*OFScO}$1v5k08hd%&*5?^ zC)!K{|2@VZCiFLo9Ad-|H2kG_;U_ti@!JZWA{2>!Sq6_cROCZH4j_Hjjxiuy=syp} z2tOf}>42=dibOuiPcwYKz*nL<(J7JrYd%+N-Ne3%Qi$YnS~9 zMRk2H`Vb>>lVw*Uvea+!aOQuC;4hT@*Sd+}i)8>oP=#*QSPh(%m zl74f<4>#<(Lg@RyXXzqxwo9O8snFkU&=LJK{I_w2{?FikX9@nDVqexG9+we!y(07C z|NdgJ(D#3jL*Xo12khdQ*o1x;W4^=zlx0P`U&dAJC;w_gf8=~LR_Iuz-vqyTc}D11 zY2m_Uye>V6BFSHy#N(>ZiMB!HV3l)_aejY9=*Ljt3s+0^#5cEMFUevr#<}tf={H&S z_cnsxR`{>{i#tpZ_>)54F8gvHfsYV7TGWO6y-oP66#lKUE*bvJ2dJlUl`Ua|HuN?} z7TrfwBM6YY4)xl=p6%8C^SV*y%Xt)3Bo$(esi{ z3^&%RrJzrAY;_qvO6c4p>#hHL(w@e6#qVt*_~%7#OXWN}QQ#A09&I^HzpkurpNJe{ zcCrAB?>8@soR{`t{9Ym-+73vbHhFPp=v$<~{ojYaEAyUnE7KVw{4|kqmFF>GIUZ|| zh<%mFx!9Pmo}yRUV5Soxban`Rdo07>6!>q#k97*uza;P{L_W4R8UF!+e=c;&X&|@` zaiYB__&FajV4mPl6S(zlhRgD#9f4eF9+x&_0n71E+a=?QS;YJt6FP&X-!idlV;G0XFB z7PsaW`zjVc?KZ)mCh{+lgYOxEe=2g$Jj?^VpUG*X4gFum@abZxEd;K8$Z(l9joezL z{~{m5pPwM|iAiGyk4V4!q+j&|Ilzp4t&^++Ht`2i1V2siD@7lwgwHpHzCDlW8~fB{ zqhHy_7Yd#ALMJDh@s0Jowcsz6c|0%lzZ3n*l>O*gnfO_tNApsW!-Ne#!722Y`swW) zptw-Nd|GVjBM&*p-k>9#NS?{E(AMQ{v|Gha7s+~lyWp3J9xmO*h(;XsTj9SrhUN2~;O~-twRnab?>n9r z`IkxjaDd=9Lcc0r@i!01SWljn@g{%Bbgq~2o)kKZBz|l7^Ys3N#--&mVdH$!$Jlq| zJ;(DU+M^4BZ zHvXQBlnE1tP0)t)>D_b4fL@P0+WX;$w9zS9BZiG1ui+juR-2HOMuqguiCGi0^vUB# zW`V>IY6jxzDI+tq2_uJ(8J;p)OCOe+F)U^Luqmm-GP6(`J}is#=@}`*Q68T%a>6iA z?F7HttYKit)O7sViDS~x3V24A2#%Qq*od(iX&zi6q@WWs(^9gAaXxM2gp{Ef-rk0d z@hN&(qoJgZoiKvL!y`l0kkrhHL(+$(WKA4TvQZdbgp>&*$Cyf4DP!9E7EQ!_Ne`Qn z>BUSRJvPl-8Zk9F?Q^DZ6w$ls^Jlvsf`&nB`YNz%BgZ$V<)GKPt#P_8Do^LjZ7bzngZQO zA<=7TV3Y{9r$=mzhC$#-($%sQ7n+i-HY!G&8l#Ph)uzU3qsC}c$7n1ZNrsHqJR|1b zF!AY`sbnA{)2D)9$`m|Cj?vQ7MvjJ6jL#Sbb~4A09Fvt!#Vm9TR;16vt770ofIF;EmOb?lf?TI$HrFqYKu!%{M|R1#2X%6OE~P)h~g z2rZR#N=pS@R6zoG0I%?MJUgsW)2v{Xn7kMUzifmNcZM3=!;_slHghU10W3Ah2P;6PMh2P*B&r!YG7CB4CEaKwW@j#A6y_qh zZ0}bdVJedpOht5ND$(qlib?@Y0Zm@ zESnybo6J6A3^JHYF}`%RzI0`NigtVTjEzZW3q%(*31WlkY=r5s!gQD+QgAXAH^d54 z1P43_BQ;y2Fpy3f=dnj3pE8A>&>CfuVuWBl1rTM0>0*Y|lyuf4GYG?5^jIPdkxUWN zgDv7o#)yQh5edwZp5qBb3da_SL@A@PNvenDQbPKys_^7ISCIKpJ@-RsMp30wP38$K z(iJvP8U$OY8aqU$Y*eLWq*M>4Fad^*sUefpl%0Z%7;3skGb3Up>5;*L4p}Tw5tF4X zF_~e|6Pq=c!MwQ$-rM_?N0`baCQ}jJnM$NCrlPW0Q+ZU3sW8=C7!_--F&9RenVV`Z zu)1aV*{q33~ za_}U0V&q%ujEN+H(Fh zYA^dk&6KDv2>%#nqy*#Jz%|O8QVVY@1IM6Y;23bDtx>L-5(fSA(lsEyxV81^4>QV~ zG9811t5Nm#;)~&1GGlpbyt$fE<1u;LT`gy(VQ#~4^GLiDjBzr)F9oivicbC&v{u$yMMZ$ONeE;`}|;yLlgk)AsG9)>QeBi=(t zjtrr85x6O~i!g^~#-U#3Kf9nV;m}3jX%P660t3!}~D(DSq(EXBmICA3XU7 zmP4^0JmDqo_a#5Ly&u#0zz?2W!To;a2ahRZ{1QL-A{Y0&*$=J)o#=YEAKZ3A=*agH zhTfJ)xm@&$;)EP=WBwC_4snMNq36mm!JqIzHEodzUXN8l)h;!`#pD#c%mmj>bjnR| z!zP&!>p8^(Iikmnn#wo`&Ld^G%>-wOF+9=)XUQ`>#sv4o98uNT1UFA7Aq!Ht+HRW35Yjcg}lz8-PKX|$P zj$(=*-1vSj(+^%L->r`DgBx+)WIwp^dl;u5+<0G=;0HH;=jQN(8{a2c{ouy;`oVs1 zX}Q^%i#Is62wC=q|6u)hdw6 z^xDH+rpgx|NBMdxm#Fd?DwD>$m#Xq{DwB%37pd|gDwAosi&c3ql}T0IIjX#q%A}(1 zOjX`WWl~LdvMR5oGQAFPC#do&D${o6wyW}TDpT0r9iz%0QJKuyZBym9s7#-kx~;1G z3YE#U+?pysM`cnmcjXlTTFs#{nSi@om1k0!RMTCi%G0P!D(o&%bi%8yW)OvRmvGUh4rjNUjtqNyHPicF)3imBl0jBafd zk*-IVP7BNm)d!ZG)d!aVX8E)vnC3BZ9qK|pKw(lSz-Yau;xb+ipvFDT9;gYdX&`j~ zSUO;O3YSWreY=-<+H8!+sX==9`?H~!Fv5sVOmSocm5M&^maERt>aA%-r)(0}X6|y;L6V8;H0v(aylJ{V zy`&WhBM$eB8PpLPugS+al(_5Nt_EK`&^!2OaAkY1zBaAZ#9Q>}J`qhZ_#35N0opNP z)p|>$A%aK}fpcF*MCQKi2rJU$eO)6edgI&mJtfEi7*p|aQXQ~|x|poT4(v8?TH$AX z0_~unnQJQ0%Ymc_hnignAxbGe!cox+1`QpEkBB^g`$RIPZs!0m_X&G`-?L?(`@o)Q z_fCwbrc$b#b?1TICjzAh_doS;7?s{0Fi?i*B9m(w~rNZ5W9gG$J)raz;mMjN9ntMjBL5PN)ty%-}* zczj)Yw1>XS(sxc>t?;5FHMH0fP*z=@SDm^kKEg&Ts>5aZ4KG}$H$~0d@%Bi!O?8yXp#>{iUm;W2X=~}f_lL( zc-8NqKRsApUH!)V@UJm*g9E|nhAcZ;Di#hekKyl#kazOhUWbhDrRI}0t8O+L^z8n;V^(Qr? z*>K2<>dF~ZwCCLwsOLMe9I^<0|H~|b^2>uG zF@HmvSTPd>pfGJ}@cJ@n`ATbJzDR2wGLY61BsHb=CMdDAhT_)>j&Hou$}*(Y&4=k2 zT6u~rANKW^RueA=K`gEI1_#m1K{HtaBD+i;#L_{k)=ve!e(VJ((+Osk}Mv#8M3frAl^x6 zkAC8d>hMz0tDs~e)YbAjQF6tFV|rJSkE&GFQ50P9!=K8jvpjP_jt0}ugEsZG~d(N1$K~M|R zl-&vf;PU&2{HH9=%d2R1h{0IT`UZR2ia!0Tlz)ugbH7~Ixt;2-i-`8-i*XYNbiD(5|VNU3jW0T%K^>&ZD3w1COY)t@^G^wfmB@g@Lr8o$tYdI! z-cCArMDq^1^0K!8^y7;f_A1z-l)fIdH70V}X=5Ts5X0ULC6>9}`+$jCwfQ+}a2scE z+ljfo-Jje37;+7zTXmx$%=6&E%WVa$ExzccUb6iqQd@)DZIuSMtDx8>Zu8VIENyFW z`wFOuY{gj^WpF#3xqZ}!+jM>47R4%7vanOMOB7iaD5`5W2hgheD`2o$nD35sz5nKP z9LC^at~G2p&@(EV DHKgc%e{uc=ixUQAf&L;}CVx3HnEZuEypw-MA8Z+>_zJ%Q zVv1Kdxkms0g37UZEP|}OQhg5HC{rdCwO~L{(NyUDDvA|&*5$5BzLq1sOMMgx`{EaK}b889@|}&jrUfJHpO z2w)Y(EIfR^fHoLMTn#=yMsr_ju9_x%euWJ9d<%&WpI?E9$=EI6v$x?M-`A(m;~ppY z@Yxd`VZWoDjwJdS5pl&`N1XcXbjN>JoIdaHmuP^OQ&CK-!Ra;3X%+tZm5Ec?JL;n+ z_RF3{7^=5%lmMrmqr`jY(>wDou^~4$bD#`)1}a2W;&9ABk7`ApiVS4+gf9n0;m?4G zNmk`h9_1v+VFpVi&uN4Y2iKz`v1pRj(?rA-_ajERiXu~PvUk~xE{>o4J1XMZDtBuLCP&_@Hh_y zM2fNl|1ep2{2m$bxCV)t$FSExL`l)uW@raKjPN5*bDR%@?RfF{pqEKFO3|+Ob}Xv? zxY6+d?)YB6j>B&;I_AZr1NJ4X%sV~GhC>^a4Pmn~{ppsl1Lo(`6J~+E!HY!G8vM*c zg|9kgP7*ywLV8tI}bdEi$#Iz@cdirnV)BhD%lV?vFM~z)^ z&yaYUnr-d_w-QfZGnYy{YtY~TsB_#{1_SV`8pDxdH(@KOne@|3k*+0 z1M{90VQ2fuK%d@uAB>KQ8p3O)U26xCaK-%%5%}^M%zQ4h`}5ht%cm@R$Hxhu$B+S^ zyO5aplpX#y^dzA=yg2FoFIi@=!zUShu0Lw#^GjYp+L<{}cKkXjASw8UeIjBgj7rw5 zJjKokFE|WtdNDV#zT6arF9bo8)NY_1icVf0RpeE;;!YoKBGIV|UXj#ZB@(Wm)xGd3NWbPw(vJ zpd*j9oFx*jxC0P@um9GX`P|jbpU)mO`22CK@VNsS@VN$w51$YD^7#c`gVoCC(cjE` z?uPAn_xfx2eJB%V;k06fK-&@Hvk8O!4JYwD3((Vl7O^>%3Y$;%+{C z#_+oGVVp@)N(-CR;Go3d;A`gK!&*6L;o;ybypXKb(_MYoEUCq8iMQ3@U_L5*b!zVz znX4a>!CY-XVwx+F!Rw&p@yY1$cMhv53#BLZrNR)MeRyciJiJXUal(SCuA;Zc9=+dt zNX=7TSCf>~E^!)04mN2j=p?-TquYP=m{}qeYUH$Uu_&k$5F3T=u&Pmwi24p83_xX)>$Eyp|dCj=c#l#)^f2i=4-@Ye=yPuIEdqLuz zWyo(lhG>%Cc$_deB*7hD=hLwT^oy=T*qpYADb&&xHysn>JH1POQNnYY*;A&n5f&%x z1;VzlmHjnJ*gKC5*gJ&8hrL}OVq))g2;H;vnjOC<(5F{GgV2#j4aE}^`8JK%UPb@sVd9hlEz3RW$?eIn=AuiSt3M6Oi$OmPAg#U>HGsM6i1iTEJ9x zs*MA6l`~X`gwKr2v7@M$CF^i-2aU6LnmSZAkYehv($k?{aEaagwP+x3h0UF|F}3ot zsTVZm1@#$j<>p`=T`pX3OBVfkE=Vs(3oC(U&qLv3~87+e2iZ(I%;pV46SIl!H8%p zeg1+=`UU z-0C!0r!i`izCDX@JNkO0_E!Hwt6D~VKVD3sQMi{u_p`wC>=mI{Y-z8c6aw>Z7e2x4 zf=x{3r#n14;lAI*rdbhsa(w$^M)g;O(5tjcLs%JnPOQDvL0SxI5lIzCG`oA*G7Itp zb1Rej+{mr!*WTCotF-FM>%*@09<4C<)%7Z^26HIv_1at2y-KSb4pq>N{{)rQ(zMPH>=Ixm^?YHwAw54%rQwVv;w z6-c?PM}9W%Za)J7N|J!)YH7F2V(7|=;YpoTJ{iwbq=o4YZ#!lad>guRU`+c=~c~ex! zeI2$NYTC`WX$$|RKX_s-n~LhFXp4I{zg7MLJi%Y-mkNKy=k-oQ&~OuL4p+#$;p8iI zbN~ss@1+3uZSYZ1?}zGYy+sbPnjTt0pZV#bTlB|D^vAYT?AuN2H$m42rvv8uxnFUt zA0Y2oTw&FotcbF_%DD8F@ex1lNsB1c7bitry6|($?1)SH;(igAOpOj?M^sSt?xOgJ z-RTYEBP#OB<62gx7uI7W`}s`)S@qn^bQ~`5^`)gJ27}LRO92ed($QskdS0K1 z--6L$`Kth0O+c#x<{h({U^WFav7$a>EUYX%lYUDRFhPU3P?mlR#*lX?u6|iM4mdoT z74_7BT2|&Ajl1yEEm;wlfL^~6^)-f9jPdOz?24j(5xX1qi>N59YFP$!LyUVcehj^$ zm4-+ffEPAZ!tzn(o=*DWA_@Ts6SdU=49fkMdE6@0d za%8NOsX(SFO=Ho0&05*vFoopc%avM3TU-qKYP{zhdC;kR7gP$lD|-GeQmz#cg1(|& zdhVgMXVY87HL71mp#3y5!0!vnJG7QW3FyFU3An%LzD7uXL!A|ks_PN3f<$sWy_HtQ zlXAT1zEFTq0;wt0SAtI@=fE;p=@)ShqxXCtN^N)3fcLLOxbZhq`E+FPv2A*8TEua! z3Wbvfv=T1(<~RsnF$htd3(3J3FpxRXKe146p<3<6VE%K8=;qvvTo`3ib#*nqFFn~5 zI&uxoNicc{CL6d0LZB|Msrd8?q__h06=yG1SK}R5-uk9KGyJMYN67Nl*1wpJ1BO>i zN{`j6Zz#tFv)&os?E1F9cwuMDwH^v+tW-@|E-P3K8q{7*NCj8Xc$8-g9l}Y+QCQ|E zt+2)6Q_}9!Q;{s`F+G$@Gp0{GqdR##^gXU?Hh$w)Qh!I*LvfJ4ea3LCp!mu?DdZMf ztT1Z+j3IIdT47~Pq!gbt^o1MkEOmd`CICw=eJ_kAiYR&5>u7%H#SaNh*0+jRzo(_v zX=#W6<%yhPkj3})*6`Is)uN3q6X~mFjKN9W??M+lkq6G;y(oW6Y`6!4h6vDskT)zP zBch^DVOm6GALObWxhF9iu!2wCAcj7eR6VksdijRp!-ZQNrN?cBWvwv(^hNs9UG=%A z0yGWTHQn`j4RE3c{x;xSqBoKkoJjeonP`i&BgL3ee;N0WsKd7%k$b?|CFJ+hzyej9 zq@Mx%f$9PKiQs28C|Xpu{BFu0H|39V9_AAH3)+_<-2{9Z`8uQ!c%o&i!f^s8dYxXB zjqetT)75|i`-d~}_$p-u0%4R1`Gzu(9%?S7_rh-th$x}YmrhYZ#4i$4g$zSEk?ycq z>`!U{@p|IAGd=V~4AW_Og0YODSyF`()eSM_ANS-Tq8@tWR#0$m0loFOzvtVzRk4f; zFqQZ{3YUc$lInNJ1Cd4=3CSiAqtpO8;oOe&7ov!UYIqP+5&~IHnhFvX>8RzG^=kMm zsyQPOancJ?=}CHt9}5&EMT~G1;pYNm%q zE%C12LGi90bzD;e-~tQ-)`O}09!%Z&VCt4LJ#}l)?gvv#9I4pq$;1*%3!wGZW>v1K zIIAY^Kn0RLKy(Jt{B`_O9nYX#1R>r@0@F?Cv;@#B zTP-6M1BpOn<)7A2&+ka|VcI$+`gL?fNPzX@Wf-1m^rIZ-E>NUEXTOLT(EJuW zhV&g=SF2dvw+@sX;UF}yDpdT6hftuVRz<)WAK`?pSw2Gd`qQ7NfT}g*9h3mwtj`*N z2=y6#5OuKE{qAMq2g-5`dhyK-%$gLCUc2#(ZBwA%)~ zp`fm^*-@n=XQeqW-v-2Z*R%9T>f&96^nU=vyK*CtxK`dm&t)y~tW}RN8TgUM6@<@d zI?xBS%G#{bwd`iJ0B8qI8|KTTR8flr`>IMsq#(;6kck8tCO`_d0nkuDZ#SUU4rc*^ zjs=mtNXH&k#FI8&UB|G(5OrDD=sz%UEo%*exux`WsHN4f0(F*a)gYX| zW4H$ZBlDnr$iwTjx_W+dFacQD?`xDr(5?w4oVzMU=hq>_+wHytu4&(otDbSHyFNEe zt#31ahswSMVHfWBioWwS^fp9avKgwIOMi1upZhK?bRNBZ6@g!+x68j#!fjOP`tT{> zxn8FK*(=`l@{=lgmi~Y(beR4-9O&>AB#zWm4q5{DVN^jCycA*)bgiU6Jxr?RS~d|m z{79)2#h7_*bz-|oK^ zc05Vg8q#?n#Vah!fCaAx9zFbF>`(5NKms#A<0cQ|C)&ATZnUYx%`-AjmQ5i)EQEnr56$CXy*kRD@yrN!z_+Fv~?T3A~8 zYtZfRom{!}#|rehYkYLHGEJz~164JIc-MywfEe$36TcDFTptG0^W}O9^fLWLXKcO} zBoC&ZdNB1jELc!BtW_SB#ex=uYSK0=YITrxt)yv&7L(SpCd1vEL_I5iZYBL4Sf#S% zq`ag9?Ak$bZ3+vDi)9E)J!ib@mpAv%E17F0{f$_!_op`JD%VQ-OZDskb`S@!fOw&a z`4Wdb2*j9}S{y*%&AA5}x|W6DiD6>>qW=V%&4k@QKz-IP_uWbxp-+0jUpPp+pF&t) z%{wqjf54+PWHuaYjQz)&dX(g=NA(oDPJ>xwmXxr&&`O^xW5RB0?HB_Hq=K_Y;z4ZN2oR{lB&sZ*f}W$)Z7baFDBQfV z8p~+ul`x#Nuetp+rhC(Jyfi7FA*;5v(MG8BXI~OA_KMxe(0u~b$&`_*{o68FNr3Z@ zdGgjUhC3|}F^rZ(a$!kHV0np<9v|zvaXre3M7I*s{1bKLW3q)R{3PrmgRzTP!ya0p zm?9q{?0!@JUQ@oODc{YMzf1D^?CT&y>H+sb+~k>%_XI6s+IEu zeCHGT90vra7xcsv_50kz@d8FKIE=}5Cm{=3%5$k$0UrW|-R^rC>d}}nN~pDIOlvG~ zq*K|C7`kvKS#+TX8hLf$AuM9b29{I3ZdR&JUS%I2WJ-nhXwH&<9{XW1z@UVC63q`UPg)YL&FuhQs-VF6nPt2C#}G#$~b? zaVm}eo4ngH_%o!{#%R@n&Fo=2w^yXKl99)t4~!U;sWlK? zB41h^BWM*?{9XK<*k^492Rn#^y%-)~mZPf9NsB#s4di3*sHhJg7lqyKm+-a@Qp(>A ze%(bVph?(g-X@H`7rwAU9|?@&9{rFn@2`Fqk2OaHuv8pxm!tHAt#G#yw0gLkK6eo* zB?qnEwB&OhPYnA@ z)zQg1dY4}GD7IP%*m4J;3Y+$o=t0z-HSSK8szA+2IsjHe;1Igi5+Z$}1uYX;BAk{0 zhLNVx9rocv2G5B&R3`pHI7hI;BJYVp9pJJW*B(>;M^B!kP&C67e1hl`5nrO4W?QAS zszP8!yvd0*U&R|~b=;1d;u#bT!J4LA9CVgwxuiO9LO{`L^*IZ1+SLnQ!V|cM=zN7( zCh6Y##|QODqIf9gi{eQZo;t*nb|apI-P03K3e9naCKT+`=Pt)bmDo4#PEztjJPCXz zHQF5Sx*zeRo)*`%AlLXhuKNQ#9<%aIHj}5UybqW#&9gOhv+MpqR>>wMs=tmaFK<9FC4qhz*{Y5>FW%AeImf z7bNM#013^Ju!xV4pezsx9U}ixTyr=UVv^V#j)VMrp)FkE6&kH8-$N#@ITZ8&Yd__# zrN9Sr8!-V6bwFxMJh^c8{0UNr5s;2x?9;LQs0aV|XehKCI7+rVaZ} zEa#s7#cr>0!ERqj;PW&ypHIgWBfioRqeQ5Mjx0A~btv4sQpHz9-w|Kg0hOQ0@s)#Q z_^F1z-|ZBAcYQ=*m3Y@H99Mac<0^AFt}>J2Dy~%$R^f;sBu`-#<2=3G6IPi+VHH>b zB*yx#EI`FkjEITH4h#!`Dv2%pr&hsH6th)u1m)jb#cTvwF$-!bA*)yk4RFnoXo-p$ z=dR6FLm*m)Nsu+Db$Np_6}AxaAIUOmSVg~2eP^5cxt@3Ru&-4A)~MnEgkuePNu|n% zC8L0bP*gn8Vs)sgsQ`@VlNVlr^gHrP$eNTX;MgEGRgu$9`6ND;v--Y&w4AS1wZG-G z0E7C|eW94d-VG?ho)C&2u2fZ@OaG|`n1U@0IqaTB;T=zW5=*a&OTui8xMW4=X5uS3 zK+dxKV>Rj|8iL77q_FI6y{Ib|YS1`E%>g+wSsD2C%qDq~2T=1ZLp6rd(h-)Xs48dS zM^zhs=w4!b;4U(L`d?EkQpPApsNB67ez)=We&F#K@h9vFc2{VzYbM8^)}oEqOhWss zxuE^=6^=VS$8o1Q9Cw;YaVOU*6?R%qVW+D_&0TYTMJ;JN24XS~2{*|*7-KK}uNnnM znaoDP5vG4{6cawA0eX$%9SF%ahoVW~6I%sEl#u%$ErBgmAHG{ffI3iceXdxK#`vtQ z+A)Pg`qQoWc-bnPA&1?eDxhXpM1lc?r;_^!o!aomlEYV<-96+?T5%6mYzE3;pm^(B z<0uM$h&Bo0$E*5fc*P-}ihiWG2qot~nCWk!^zmRYa@iw&7lnm6E1>qKa!qW8bj0 z>e`c>l#h7TJLHZs;#T=35XpLWZ<+!JvskLUgm3kE?O`&;`c+Xhl2VnGM`Kw+xmaM%jyMM>E6K-TA8QVd1H1Gjc81O(H65<-V} zj(1G_=?8UK7a~y~JM6%RAgffE>MsscZN=wkwnY-AqR@MzQt0C~?+__$oiyLb(5+rF zp^Q|m43?GeDkO50EMIu?)-Z-UEgv$B)=xTOkup$d2&)1zyyL@a z43)s6m(M=IDlQMESN{}FqOEoZ#S%(D>>?V6%_gqn@zxmB==dHsgNLE=PnzH)L>i|dsW5;jPc211vuVWn>o zEz(El4tF}%0MN>JftI@y2*~$K^l@gzeIHd(bTb z@wXIy6EA)Q;Q_y&fp2^WW_-_-dy@W(wr_Aqz#f7>SPA)uM&OYY5s4?hVy)ul#aPI&mKI$iu3H5R7L~L`8Qnt%wFwk97Fr!Q3W; zq5sR57*c|wY92}F`&bH#@SiJFL;647x#92Kc#K#W)flOUFo+Ph{p23T&_qs*X~q~O zQ;;BXs)_LxUZ0Qz?JB~vI)Z4isOEO%8i&*n4X(*T4ThSp8o?~`BM3(?N>Y5_ubrYY zDB>FkQLBi=DE!2t;8q!3O|huzmZBWbCYZ#cYJSEHl2+9!7KJfiP5ldMC^R&mK`V?$ zWlm}pi^6zQ3C>R}s%G-twTMO43_?w9V(CwA3(QBvLVr%UqA}|sg;Wh~QSiT%&|grK z?5i!Rxa6u_*Wlr5YUBX!b2vpsG1L@VXb0O7{kRx zYBeH-(MmL~RhhgxfZdgnx?4n zhy_bAEx5+_x_SZqjm#5n!=Kd)-lYSPXMH|_uQuuXJ8wOGDP^i(;$Qzfc2raSJm39N zE$^G@vv&%BDL<4pHb-G;kHQjuyt*n;OuhJ$Iy>43fiE-*Ru%!qPefEz)qiJ--*CkQdHT*2~ z`vN*QSngK{p9?};lqjyB`xkYTHASU(H`os{q|V^H<iL^#vQ)^+xmM($7pw!2W$_TYpYjPY5(;LO9B|0Uyre(#4wh%YTfGJha*2PPTo;`G zI;k-MUj&eR>}_zjwqfMaTM#VPXT{);?Vz(?ffCo@{(96d(hVdeq zKY)0SXq?0&=>UmyJ#tP8KfyCZJrH-D>7^$fhO_x6e7ZkTL)4N^QHzb#_9xWid;+8& z@j!42ZT1taoN5m$7(ITVX2*#WHwLj=pA`*G^Gm>I$o`k1F8Lc<5OtBAYSJ-68;v%?RqHLZYOrOqte>yj8NW81h>=B&(Q-oJ8N60wObqf2C^yDWY1o3I7PJScUiv_Kxfs2bxZle);n`BN7eIV*Fl%ow z$N}~HK_Dq9q6`#q+(2);=@EX4Iswxe_-zi!fCgPkI41y2{Fz{Xl6==v?g+syQ0_8~ zR>73Oj-mp`9W*;i@~%Vs_(o) zc+?6f4iRt1PO&WBKh<;*!hR8NxYX;s$u;1;mye}}w|zJOucsIrXZ+6Y8n1ZG)v=vsGCwReO4c%evQm~@$n-%(L1`$Zyk zfgam|ocI^j?x4pWLUt1!LdGv5fI@L7=g$N?Nws?+9t5G#Um5z}NEmM7W*bpb7LUCh zynzWs;nl~(^c5z>-YyWZgpk!HSwThYiAh(ehmBOaEWSveC`b*y$Tmogeq^&z`68B% z1l9*`L>0Ygx|Vm7^=O%dZ4e~*i%-0=i`-0XmSg*i(x4SYdoy~XJ=+bea$u}SdIT_f zT@5&ec_<_hyy4XkNPz4o)bNb03x1I6%j^n$k$BQt!R@LRmT&LdsO z*Fo2oFPSoQ)LTo2xZs&)F)+ixab z@E^!PczcPN2Ei*ao0m1unwUrYsekXqZuMnH>nh^4RqDgoM<5vwgFI@W{85m zB}pRDo;#zr-IC|FI#PEyTph^c#BbB^bG`Dqj@v8o6=5mbI? zkB@+(x9dggJ2T6!kRLZupt-!B+T8V|hyWl!h2T;^Z1m;OpR8YDCtEA&4g3KJ-%;gv zqIkQc;yZ{bdWSx%4Xuo*Cqbfn=qcW-h8&@Ol#uFy#R&YADr74_7{O6=qRPwt%CGp9 zXZn?gQWtcyRI2q6aHMWz=G@@=KFu5KujRX3u-n1sc z0*(`#u8>BcPJ)5xk|?%J?o|cuwgEJ_13-e5jso%9jbH;NOIaYAL3SE@G2 zzrkiAec!*HmIGz+YS}>a(}|a{k>nmgCqM*{q;l#&Em!5#?mV?otJRNGq!k5g9>(1) z0NKQ21iVBN_?Bvpkg^`9oLYL6d;9~z4iikRPG_j7D#(q7dyIYy5 zc|yI^+JwSoV34`eN9W4raPC&COx)+KFl2ooes!$Yp7p#fFJvfviBYA`YIGOGfLHQ( zk=K7MiQo_xNt|@CIw&5I39ls1Lb~yComtv_9)@?7GBq2|dWaz{U;>v+Q_AHCElB18dY$0MKnY=#$T)KBz1O z0FqF?0M3)Nj^ULLKE_$i`!2opTjxHHznRE!3);U|UWy-)lqq}^@^K+NlUYZUheI+Qe>)}( ztYYxikl#^B1#)=Vg$QfN2UvW}16@-Gb6RQfW)>p;4FU`K2yIjy6

*rn&H_xo{^H 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

-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 z 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 z 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%0A>2e5Z7KHSJ>TVl`aOVB7 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

Udv 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Đ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�je2pY}^*&wivf1xLN+I zf8&)*+9KR+aI?j28Ez|Z`~Tykfd|#Yjmoq2e$=wI#XulDq>q82*GH9+6n0~|Y@uKDffOtjX#T03ED!eG;O#`foy7pdaMD1Gxw4Iuv zGhJJk3KyLIh1c&-`6!=$IhzWXr8hS~{j-RI9T7St+^+}UYgBX1{OXi;>iChpv_>$x zfB)Cel#wjt)&r7_ptd`F)v%r@wZEj00{-rlq?S(T`)L&O&#L2nCx3s#PhBDuU!Jbp z2zzGbTD`lZMWwHhH?I-ib(-4W{G~vJbKDj+f{E~_W06H;DfSa}XoT|hpFSTLKZAR^Xdt3a~ za4$(y=?9%^X#_jI(HQZIq<$=q;dA>Ih2Pyp(`Qrri-ii|`&66K#_TGbK=FqY6L^s0 zW8we!$q&lj(a}?RFd_9~dU%*Tl^*AYCJ$D9iFVz6f*j8z(~t+Q3$BfQ)IO8ipZODb z5FpVDYR}cF__Bjbc_1B>rStGxAC;csG$$Uk%sPJi`qD0nO&r~Ma7*D1oiR-E<9))L z2Z=G3(O$8tRC@XO0X!J_qw*|#+gOTCL{9MF^+DTA@lUE$`XB7h^WdyT?hC73q&tcyukOjy521ac&Eps$cEjk@l1Ma$ysMIHjfzty81YE8J?2zccRw|#1ZsZ`ne|Oz z&N%kuU>a$U75Sd{en{csny({d|JHzgO>k;khV-7cCMy3))CpST~*QRpe;7L??zt2;A?vlQz=b)=H#a=64 zHNpM0DTyQDq`qxUikhIbob@|OjI`Gz^-3)7v88jE3;|U>AGzixcqZ~b?AtzK|IBfH zO~7d_x@sy<>=`7m%h= zco5wT2AX1bG?hvI@&^-|A%}mY;Qb3`Hm0Yr;z2X`MHKm0z9Hq6P04JAxCsxhC+;To znLqAbGuZy#a^SM192H+<-;ZW!?=IbC>{dkO$E>~%@3YFTjrbBk{Hf%+u4Y)8eC0_< z{R}F8?2nOV(4Fky|GA3fr*7@I7O>iW%Wt?#kqQ^oO=*GN35AE^b6-WyP;CHbCee_~zd@px-z z1y=IN_~Da#y#>A}tLa$Hol3d3T0)a^yX6FW(L70**`g|eIz4-@8-_R_yhw-smursET8Nw~(g`K|E! z4`0tRRf#&Dd&JUKn6%yUf_C04DnDsYoLj-(9AaXoYf-Gwu(cKMSK8=JwPq4{=Ssww;QC!A}A>Yrh&l&y&UD%$aVPiq7@9x*J^{&*G- zTEVC9o}KqoGJY|yX0-x+@L`~}9El%B`_KyfwS#`ML6bT@b6Z&}nBNxMJflkT%P-@# zLcBK3E?I(bAV)`5xNzY%*EImx!cV{^l^X08*d@c0I` zHW=&X_;^e}6J_6YfBiP-i0z-s_7$VT6&2WRU>>u}NH3bCSCp}=4I~~3!UQ`=`>NQo zz76JZ9!Z`lAnBV-_G*JyKP^=X6Nxp$;(93buE!^Um+evcDl9=v%&>gU6y1MN`U_85++ zYEb)oRfM%eXlyNmAw$|@ibiZZ=qnvqG3h`)6ijdba1jw}X>O{^CAa;;;F%`gYhdFL-xM8#%uHenC4J-AP-X z{gFY%_v#VqfS%%jS$_1@9p76)kpmz+-i@ z{r9)=srHsK9Ml2og4v}{g%c?IE53^Cfb@%wi`ss*QsLfb@cjt)g*s}AJBa^C*_7G= zjgPhp=N6OkycqEP1v!HkmaE+%$K$IPb-xdeRs%K8W_%Skj#2sPZwyr1((cs}pv6$s8&@F=+)ptp3F|mYSS^=ORfXzN@pHSK_;5D$x@(j; zP;9B@#s}M#o7UGIBI5zq(UT9)oFqpkPa^q?4d2a&%}@KTNQIF4_bNER2em!Ytml`F zsQhq*kMKb(iyPaj*-6>k$ND56RPw#NpXQPJynW^zA37}c#{OPrNX2KA$MNB)SLW)6 z3>oV9Av3S@A>_GM>H-tefAtRE<-?f7Mt9|P`cych(mOVgKnV$c5fm1ysG@BB4# z$b4YXtbq@0M`hq!1paq@-FkK{C|jKb;8QE@-3Zk^c`2v zB2bEo?{s!oC#dh9TGrJ`(z9RchkW(TxUP5esPZR`4eo??pD50O3erBDKAgbyORw1T z`m{-Z@s2vz37Z5OYYk1vc+%>6sT0_ivrpbjCjPx>c2Xy3Ddf9lMhsEyLs95nCycAI zTidXi*uS{^Nhdrxb>v#cPz}|8`_r>KVS@LiXFOcfi5wC4rW1HSs>jXwKsHhX- znO8@y?jhrk)b^j9AaQH9m%;?nzG-V~I$_RQi%(-_lkwieuB8*CbqwNG|H9=?G@8AY zpc6U{?tL*1%&79Enh$lt!Sa~GA|2AcA}vI^p!dkL{?z@`sQ7}#6S|-^(@z?9LGkoGHZlez zJpZOy7ib#n)sxa(K<&?YV}8iQ9=J}zy?3AKg7}}0@8>j=@gyK4whIhJS)otgkp8JHp4bIX!k)Yd z(kA^gZ2jFXkTyNzZU2n;vxp~YU7&Y%=)3n6;_uC*v%6sLwa=2qO~hZs?|st+UVYld zlK*7ypG95ZHh&+-v69%&&$6rwSa(Vq74k`Y>VI6@1-G9)-&G(ym&&iUR$CYJR90vd zZzB0+CiG(Xl-AqI=45_Tq)h9EU5-4JghA3i*$HF2!L{-Jym3_|Ki*n0-5_G2ZB}xF z^k0uOMO@!_;BDH1gHtK{Xjx6~hN$me-iPGK@lwllyJ1m5(y2Awr2ZJbrkMV)@AqG$ z{y;-^VK;EaiY#k?i&Fb5q}z7G{spVo{*ET|mkQ46ZkXKRtMSr~)Q{hI4j#W?-gWg7 zQohz)&u-x8ugg6)VG^~!ncrSqFIg*IK3qxsiM!FEZt#90vL<;W$**_Mv2IY_>%FyZ znmlC>myF16I4gBwW2YZs?PGD>Ao<>^C_qJo3a?v*>pK$_!&k5POzJ0O=KXGPQh6GP zKUhVDOES{C;elboa>0I}jvrQ&*NyLimPp<9Ta60mzkc5hx}VaN-KUWHvA_Sl8%$UG zev_Xwp9+t^RMidR^LPtQekxM?x1MV128%EkEA@7AJiXBFZfFy{jXCmY)c(Ok-5~M7 zLw|e{XFmnqdz?LV!1p#a`z+giytkp5<(uuK33 zD;1;6{FzkxMdnVJeudn=MPi0jc>=sQ3Se3Pg*yL}Gbv^#c?rPpfpMR`#26|*vvQvR zz6~s?oxFV_;ijfeH_}d0qfx+B?n#a!7vbx~~bq zqqvi@f9oJ6M49P_-Fr%yl8TLA#!rJ z0K`wZD@44SMD3q>endg~W(FCHBvs zf$OPf$V<7!2$B9g_(HP>OzyUq?K)2USI`QB9?)AC-FCHy9M8VZtOtJzZHYwL4{0ht z-uNUp6fJtbA^ic#FW1PS2ewF-9)EmWfyz%3*QEzs`fc}}c}T7w<(}Qz1A>C`S(7*h z)cz*cdwO74{rk$;YovWjG7j|s^Y|q@u}T)TzuD{KxL(|+bZq8Tc`ANU__-bkVqP|k zkR%yUe#HXOy&bVN920pX@K4R z-tDA({b!iHaHHkP)ph$x|6*L9h4JUq@Mk z5UwgivCoigFVt1___sTf`9QhFU;Aj zm&9F4%BPiopci(|?>&|Gl=QDsq0nCVY?|1hmO%QKwoPO&=xrEqKGvm4*+(P#QZIO$ zDqS#VGpOU^=iknc8OV3Hty)E=#Z&VEykA0v-@StinF&i$TuKXK(7qCuqT=6Ky-JwI zB`k|fZ@srooJP(!X$ll`gz%mbneXCtcRo0^q%IjB)KB6wk;l+d@8EqUDt|N$WJb7{ z-UK#-uom*ewHv?7(n$T%w2{R#vR+JOk0;@J$YMd`Xwo#&p79z!&ZjN1YUG)6B-{j9 z+G*!`#UKU3X2=(Nm|E&g;veyT1RpZ*Y+EHqBmM{P$?)Mv+3T3eQfef=HL{Af8b_H; z?2Y$k_z;yB_*^}bj2AR}WTV_)cV^H?|Drh}k68|8dXZ#)MRP(PiAnG^W|R7(xgbYZ zA9M&^Gs4zfAkCDNdg{zP*}7KY|jtuW%BXdcLJPp`e!Va_4>@k0I{xZ1+7kc>Yx zZ{+GH<7b%$nUHWFWKo~OqhL+uV>CbHf|8^5ioog zq<=6%kT?Eb;F;J*#uG*uvgtSfq>ELgy)z<^d$v7Y6Zvd({EbAGz1n{GSfFt>Rv#l8 zS>8rNKEQaiKg1&YFJ3cwcNOuEjLXO`_Z|<~yr0Ym8S%*9mU-TKG)($8BMG_2H%s_p zJLzwX+sF?kBoq&4lk0_y6yyU3ujjw2ApVJwiaepj(qiIo33B{2Wb4wit*dGpvZ(x| zBTJr{+S(#Yr^?UBM84yYeZo{jmT)ezp;WF2dkm?6Mm{p9FS*cNn$$0&5cwBekq);Y z*E<*=ke#O6?Q^yv{)th9?3HJ)yEB;dUq&(V-6ZGqqi@Oh$tXp>$ncPhQziY8QGxtK zK48hi6U6>vT;#*;o=J0uiM_?@kORNj;2Rz1QRNZiA%EPU{!8c=@gHKX$PLcD%%(YH zd=%p&pBW$85jQ~QH(~VGHlE@Z|d(J7xknuoF3fc5@TaCd{ z(w@a+ktYXxMyz>H>>;LroS)lnb4cBkvbUHba^|^1DoNqj+EO#5O->Q~YpSx|TDn&>gozoZ!XB<_U8Ma>xg#5iNBq83%_Q+XkWKbj8r;nnA?$^m zS32#b;~_F1lk!HMuqj`-bOJe_mhwTCb7N+#k0~ihBTBJUt0+3xY!UL_>IvJuD^%u1`xT}XaqBawv- zX=|4KP@?iD8;#tlDSCTJDY;)H8;eYLv|XutS9Spvei`}bFW*wubTS^v#v{Kw^6c7f z31VN_BxDt1o9==r;?HDnBNzDao0YW5d`uw)IdiRp?}=HYe<-9P*L*lULw7I9pF$e4 zO{>1z9rI3kizQX8JjXVWEVUE*&QJ|It*;z}G?L)x!m5waEIqbqR(C>`BAJuuB=M5^tvQR*-Md&d^x>PIVplh*+;PsIc|J=r-Tu?UZBWBHan~D zaKM208^u;+kJ%@p+RKQ2n0(~hH|Y@PMe2_!K=#_RQ&lyI_+w^2@^kM4Dz+EMe1|!R zT-fqpQc?u*2Ta-+K8UQdWYAVWq540QfjnJ&hU9$~u?JHOIcu?%)Y{SOVN6Nn+Hn`u zs$9wOHKdRQH+r%!dXVF5$Re}tIgwIKa(oR1(zFwhMBf*TJjfSC3x*;vk30MX(p7z3X`)FV(pDTTz*7+Bf;N->r{{zGN_^nQpMye_ef0d0TbM?h zEFy`&)(b$M8L~O3UXQeAqafswq$_DFOGy10g&^;Hzti*N$2nB~jlz&OU72EZ$dimG zMiIy+U&AyRIsH_5j3SYb7{^=WIg|1jMI)bBZYP)4L&{?mi=6i;Q0e3{(qBw2Ba6u? zSX{9t{?H^IIpSrPc*r&4PfU`K*Q`{uQZ*K*j&E`s*_CtKt#h#wRUVTRDcQ{JYH%mu8IM@2?M@N#rStjzhpLd_Vks$umEEl<> zvuS6?PE!A7`N&uKQ>SldllEp-h|E!>IlDP8ppMV}fNb!!^6rg8bE*8Xi;!hj{3%>{ zf{Z`xVr2R)!|)FdXQ}?gE=BeZ6<(0?g3Kq_70A1Hs&86bKU>g1h{xL0KSwG<#H#<*Tg zjUe{0?nm~FzEwCkj`T|?8d>^3Ix zrJz!cvY)LY@{?4q&FoS#pS5Qq&$h657~Y_wLjhNq(|k) z$sTz@*d_hl{bGb2k%fG7d~Z0C^93g->fCUN+B#l4VH! za(s}dH=a{j8?8p=hvSD_HFwfRoB7hz@i_s=(}zpy#<~(kasa-9wNI z%@#*Y2_g1!4?`CH6|vIOQG!a(Jpy_2l{0~&hlzi7k3^nTzjSt6&3 zR}+8cor!E$zhx39jf_9uxyUaHL;dY16aVF%kK86+WbPG1>dU7PS#;IIp7+a5sq*`L zK+cZ}dP}n<9(We+$<7dG1#Py^-`jsN*PM`DRm^B$M{3?)VmsIz! z$s+RsKQ3~$oMXxPpX7YkuMXL1%3%k&(fMWo5BbKdRr(BbVvm4UWY%4mi-xnwcpAV* zuJATpY(2XED?orecz$9*K`ZeGLH)=^F5iR}nv(hr8bp3`)aTCG(fjj3c*6`n?as`& zvzn}D31T4U$?OY$mPYmu5kpQ%^F*&@$X)a^f{i-ldVYv3 za_qX65MBWB&tVG45~^)d^cf`oVT#BrXn~3!50UmB#zYp;ymLJFr!dtX!ZeT{&v{g| z){6Mw2rXo(8=^}OGl~5ow2{M)?hLruO8jkv9`g6wXIpnokfZjGFhV}MO>*;u@x;GI znjo7R9Ue@dMCvcn4EbrHV9B4gWPTmVMh^a>UlDqd)PJNUa`sCz3(+5@RC>|Y$T_da zO-mh5+E27Ca#X*z@)UJ){uFJGTzpQuxcn|@f6qL)xEQ}}PMXVF@CHp=38-+>x zjdelh?s>B3>GED`e2C>ByU4k9tgj;N|FS#sw&Bm3tQg`SE_)yk$9zn?HoAW0vKO+9 z%Kn{!FO;eLUG_#6D_Jls<4N)x?}I!c^vKS=AB?gwJl+ra*_Ih|9-krpI6eURe*XhQ z`A!{b|D+(~%I2|6?UJN^lR}U$ghrJVGG?>U#vs?OKJ+TU(?_Ynii>#)Kp~6QzfEPw+T_l zOHD)GrSi<>@OsjI)6$V6o9gv4-jMc_mWkYaC_#cdy521<7rFFO$EzF`8K2Vfk#k#p zPNr#*@iV;;`JKL#*q%&Mf9W5P3sp{ex$PCA@|RwOoE~qew>+7Q7n#M#zeINr7D^C* zoLP!oCiXM2=GZtYf0-4?u5xWoGktWa{d2jmH>??3dqvfBU*YuaSy;?>d!SUn|u{HZFZy{ilHVlTtn8 zMw^^|m_+<>sSy>w{EA^vAQ_)ZO^{u*OWdbj0?OVMX2{NS&(7v{5&u!aMvi*l=rAIr zPQopbdxj*4D~6h-PfY>&$XrE`=`+>ZxesPwMVWIow&Yx0*PPeh+KU! zrG;Tb+H;)~vaHrpg(*8p{5lupaGFSCf*Og>;~;Ny+xqhOE0R9X9a${3d*`#2q&@OH zkau@acoOuQ#BcRN-aeLFn5?8p<)_sfIX1et@`*EPAFV#f`erK)Bl}5t`F_Y3l0Ht~ zwuab;AAqd>`|^DGAaedK2txMvlQ7V=B=!`9AaB3kAXMm0>@NsIhU7whlOBI`+L_mIagFl1!kC;o@= z5Lx$fr-|u#GGAdlL0*&hu*I>Q_$$V9MZ(@1KU7@yb zt$IoQOTI>KfA5y@te@CJ@-4Fdj6i3DJt|awB|jot?Opf4`Wm@DAoT@#!$;#bjnV5> zQs0rcyX+TR2y`mG)KBE{Z!>6XjYxlztwi29IpX#D(ep*wYGlUvg^Tm{N-erljalUQS`(40<>+A-bjb0wW*{GVJ2-w;Eor}c zI>>=ZSv9Nnk@3VxAGu#T%4573XsV9*>qMBQqOh2e#&Zl{Msi)XWa~cE_Df<7-HL zvR5E`mmMGM=aTV(y$X3KPOM3ylu4Dx(iu5RNcXj1E@@Ae>yejL2gM|568l)XA)i`g z@I&jd5f$HhGxCy-C-1UzNPD*SM6Mo4tO@j0p~7uDlf^&VYe2^Q)z^ zsc>K9Q!@^~tC1!7vp;|w9p0B#H;$xde+XH4{i_pc*~A|?1|z$i5G>@VllpTEMXrj= zUzeCFMy2O?0@+y~8;>aIZ%(I>zZ!_1`VvFtpH63yx4L#-YO5vZw=U>p+cAq2H!@Tm4FQz+>Yx5xa_kN8WKc{%fw=B}0yx$^cygPd~Zn%fa zzxPLEiO_vp?wum-)8`BFk|-Y~DNo`reZC|6xrf==OeXE!?BmO3!8aelLQ^e#e#9jgQ$c;CJZ*3iYo+6+Lc}4&C)`HXIctLH*cArdnza@!3 z3hG4OmJ}iR>JK?yNDp$U&>DXuW6~Z&ej`gKMAkjABmO>Y2stV~>gM?ECX~Iy=%RQ( zWd1Y0Z>%I`&oE(R%VZl3!vtc_h_T4BUJW^+Vq(0Lk?h{K?#nENu7fn)_U0-%MX*Zi#WMtUmE)xd)IB8JIW(h8a`o=N>|i ztSHp@b8#}2zx-h2?EXaRcWtTg{7~d=?e@)~NkUY3;R$4$Bu35J(d)~Fr;xjgzWa52 z>!$o`;aOy_l7~TcbW+|A=aFMB$bQeuAm#mV5t)DP%uI_^Q!2fpE6B&)O?HhxLfUUp z0&-dAbyoJ(xm0-Z4P*xqgBbpGQh&wC$oNjoZ%!YHJxcE(KV<6^ToxhYQRzeEEo)L_ zq|NlH{VSdzOU&DKT%w8e?~3Qh>Aw!oDgI98o7^nq!{=LVuTC?_#`xSk?~i}_`yPJGgyTfZYO zjP$sqV?ylR`V+Y%&WS-^PR0X%C9<=F!?Cv>r2p}&kyDiRnSEKONabHpk8G=Rt{Cs}7Lx!QaTW zhg#3giItQ@q8Hd3 z>HGhv<9Y^pCr+?%FEq*(rLSx3!TEU9tgyE|kh_+?T{xu&+MI&*zMk%ZdE4#H+IIKA z=yR(*&@w?_J=U}bqoIM@?dcagz_ZGKa06QN{JD&bd0PAub;!7R~U~AE% zT2ow~<1c%EarHp~#C`60^PVGsfu9>U_b(E_ah31Ww&(~zmVEGgnN*+;biC>5&<&3=*Q~3X z*9|#RvzFAVcSGbCJ^JKv-Qb~{kQIXK*e(Pu&7FqtyNlNjwi|fc1?*Y$dkkDpcU8J> zhWXVlkVy@bP7UjVIhw)g_PDOE^IVX(nrj!F)3Cw6E~v_k^IL7y^-sSu-UUB%w@NOS z=mKw*yhDt>PVh+wRtK(!R0>YKC-S)yX0$D0FUjbH82>45&u?|Y<-~}fmC?99QXzPv z0*$WC0Jsp-2xd0i*4K8lauVBHB53+LcpCm8CjZ*)>eCLdJ(uoQn7`}^gF z?LDp7FBhG;%`C_EQI@%U_gg%Vy)vz};Tc|!l=2V{zR3s2v2;^7kL!JmV_7!%B9;`ik9*Lo5@Fu5xD zUkC6-2kC*hj$8T<{f=Tn2Qd4CRr-TF;7NIWiqxhK*ln@o>Sjx1adpeyX}G>zC4iqN z+5uxuTlK$bYRB_&`eV@#xK5t_;$YDIcG&uie^>u(JJi`S~R$Lz>% zg|pSJ!jF?$!Q$k=+Uen~Ks|N;W_K$bvl;g#+6kZU=zm2&1NeRXY||&xTY;M!EF?O< z6~a#)Yd_k9??n`eJ~6AZ1^gF;Z63;Rfua|AvcFSWKz&4EmNGtn6K+^G-|J8d2)Ad~ z)@*KpKX zSA2bZrgk%oS$gpIH+lR%o{oRb@Y7K0{OQ&v(DB$l>DrGb7?V)9?90n0D3e;%tZ}~y z;x1C3CK$;*Jx({Y3HGE*_Sbpib7%W&B{E!^fZJ3um}=bw4ceCi3yhjzMop2;0KUiX zdn8?Y`M4(dqj335-ftd&apysY1|ED<&^txP=ltf4Yz+F8!-G5B+b29v;lbq-^xoWy zJXn%?mtTL32hY#tW@`HIK;f7h{_#Lo#P20-IS(qcA0514#)J5zBlIQsJG=_y!vhfo zP7qy$2kb!lkg%W;l$NhuF|DQ%$Nxj-8;bBbQu^$3kFy)$RV!Ca?Or2PA>JX}!-EEBw9ZVe{8~BYeK}*P=iz zjYb$7aCwKHOe1&)OSo{yG{PiKmprGd0p1ud+}>B+0B(iB({FxhfJt7|djlF^{*>$D zHV+$M)K543Uyl&i=0vqGmcZ*>Qj(>{s0Wjh@-$Hs{ny`}gnIn^-1DNS1)aKqed5?J zBW*kzQNQgvy7C8VWn|_2H>f#XYqXxBPCDNueG4^Y|Gl9Y)EgJWc*jsD4;=lr4>j=8 zwd^gZ`wo^TuSUIc!T9_l)Tpk*Ed7jXnV{&ZDwj*WC)GICyQeFRDl7f#A)k z9lM|JT!k9DV6ux9Dt+Nan>ncO4x1WJLp|5|TSE@DFRn~l81>@8a#{~Q_n{Cu*j|S! zT|U3E71rtZ^P;0rm2ch*J&GzeGiBdi)Qqw(TQ{Npcs9v- zCF(%#p(P7Z-}DHX8KRc0x}&3x`i<+YB7^D>vu2_YYLBn0P&dx|*9V67)SzlT`q20l zwRfCR*-O+d=Q2J#LRElGIf=Ef1!PJ^kjdr<2F7KU#`ozoV6*a7wE zQNeBtRBt%6*#I?`Io(+e_3HEvTWM6~6{YMks4uQn8+GAzhl$b>Gip%tZaFG_McvNH zp7;{=9?M$f5vrDH*PjGbf2Yijv#3@VZ`K8)P8&%5xf?a}Q28e})MV!L{1vF-wUN)w zQRxL!ALyf|yeUXhMV-kz8#fVEQS(qF9aS|X>{usW_beTL98itQjTzbV1+{$XcF#Q2 zElPbG9-^vBTwk4ldQWzj-C5Mzrt2(&Q6C@J%G!8O9E*!5HQX)et_$fxf29N+(jN8LBtP-s+5-G9o{ zefcvL)$ZP|ukonY+4J8=qHb!MnID9zeaj@v8};geEl)Y9PMov{_Naf>swJ~gr+KC( z>Y?sG>3W%o8kwyfBZWFqcxogKHFo`slhl3Uf;VeIsQbZ4E5I;p7q zC6+VeQ9FucG$T=0aD+61P}BOQRlQN4U$ju>ppICan`)1$DWFegqZXx{mDfX!^D>uZ zqG}jUl$Ju3qS5gW=PzHS##8I$PTXZnQtR#3oQM>s*6j&<(Z*8i|BO~fil(9-S-=*F zM?I$_B^-%LXVMr!sJrE)guGFM#<9n6P>Vz(>Gr5J293@}O{GWT`z@&c&ZaR@rD)WD z|1uBaj;PSMBOO4)pPkJ`jUQB@$5Y%tLJvaa@KuC3sPy_k1{+oNyNU=CbxiJvC=InX zNkyDH+yTNz10{1&Z#k<>h({II8krb`y0cALj)N+bd{}{vYPwcgk%`Kr4Xe;l$HpmX zaECg;Q1g&hE-Lq?qE0;OGKE3?Ak>_LQ;j*Odp;gCW1}Wdm}0?1O=SOGOhdi4L17se z->+M>eZONa>UDSdb@8a$Ha%`ZsLvH-Jvpf1U-x*kQEPoC`Y}iforaR)je z;)_>gE^2^`#Km}2BUV#F5Nh{g(YqYfKPH>g*r+GQ31u@;tMj>UXs8Qahre+Dbl^Io zbrrd&8b-ex;!&sVD(MVD)j!ca$U!|3Y%gYxx?@e7j4G`Y`-ex5`UY z;iaea5>d0_x0oM6jeHg8un{%qQRyZN)bJgp;WWEa)ieAT?~ga{QYlWUfK-<6IPGtF@O$9ws{bTzfisg~>ZTk{ znN?>iL7b)EZn@Cod_iv>GO{!W34B?}WjNo>DO7&PY4?nKzyqg$y3o1>PJtMw-SRk} zDegFR3}$$*o%ku^(ZxBiF(*2e<0LlLe2B%#ITe=TiBmW`zQz(~_1V=?d7Njp zJ!y{P{3@b;h!LkolF8+Y6NiCY&4Zi;j-td8H+U9Ws?TP4;{={(+OL#>mAR=W)S1U#)Sr@TZX#aq6MV zJtuJDMU^(0a5D9?@J`I(d9Frkq$->e&K(BvIL9tWI{V=K7aSXL2WOV=6uO2}?~v`_ zNt`EdT%u#aX}*Ve?9c2R+<5A$SdH`OW4gOPaSGE_`n|y!d%7mY1}9~9XR8vqyPWGRaL|>dbPbf`yaauI(S-FnWp8Wox z2+m4zHJKeaqh(aBr>5sXzSGaY7U$9yOJ*X@ndFMDw>Y0omC)SB*^s_{QW>W>z0<8z zIG6h_IPAo!D0?<)dJ6x}J8e@{hch#BXg&$&?aiID0>JEIq=BFOU2`e@aP`JLp8) zQ5f~`s9*5|vZ%3ce?eOtiq5UQ#;Ng)w9#CpzWSmKnZI4z=O1K3>WGnGN*|Z>$)UUn&*j>n!T=oa@ds`4|+|+?TPLIeR@9CL`p=KoT zUeIGo*py_ykyLANuNhrr$vj!`=o$It$ca}0`ZvL-akY529$ zOpR=&qhcaq+k_uZ+nFS+evSN~%;^J<7Yku5{>|9{Gil<)Zkm zdK7IdC@92eMYiRbuh@80hho2LpL#obhxDt1DB;~yi+*#(u4uMOk);~+wL8w$B9)(B z8Il*RNW-1Jq?zCvL}&Ns>%W?NWQ!1Hrm~f4G-qvO!lQSU>`JrRqo-Gmq?|UG%4OBa ze%lgLDTP%?+9@nMUQd%;5~F5WEKr5q$9IgM62PyIvYe;?n@U8J-Z-_gW<)06efoCy zdh1Do5k1Y|5F-M@arz-$q7Hl%p;E z%dbKXoFJKIiM^J3SB5Swh$@-1-6GYU42zZDC`DRL8Zl$u4@g`=`%*V8OVKa6yjV_( zHd)f$Yo}>*2{K;STZ{?QAkmg63EN7QAe%!BrtZU5B;i#77mo$lq!`5&ume2-qCnt&3bI zMJsripZHOLctq`O|IuiW1#XaObbQE&(K=kSRzi==tN+Wt>Mn*NV|iy>7^F!O=pi+EKSlIC0#=!u{@MhN3R|4ph21+mOksklZ&p-6jDz|63K%_ldP?T9K_Ij z>WI~`6QtUApH%ezWFc001A`|L#^fXyenZaIOjIZ9aO$s(HrZmf`NwiW1~SgfYJK)o zksP~U@jHD&I$Di6>)*Q1kYuf?&`kW4hE|f|tY2#?{;$8O|Ld18fs(YeWFbU!;M zcyr_`sV=>@-o7>oQRWB?8`o}m0XQLi!yxc$#A-Ht|Fx~A_}6_rSGa^r6d zWunm0OHU6qGANT56ZTHGn14ZD1zvHY10)ivsXBQ~DHK`%<6%6_BSk9S8G7vJ`48y5 z4B>K0y#z^7Cs;>|KL{Nj=kf@6d7hjQ?GtlN&<91axbES)v5Rcm=ks*mE;rQFu%BXP zwU>PHt&T1O^JDb<(u$vX$YJvT^YFs|DcX@1%{u=G)LY})4!oizy|LbPPk6u;5TEUE zj$8xwoYmb}vBw*Z^tXCHd%#H^q1#N2FA9WjvLWT~MY+jOV->D`ZwLlnNs%DE+Fj&> zX>Cjg^FHBvtl=cu?2F{kcPS@|B0s~Os;@_FlIJmkm;?LgSCJqvw?Ge9#7J(P0&hA~ zzkz#M{+o&LD`b;`?L6;@7{Jt)#eX7sa@$B%ioS0wUhnIsh{32bd9&yIiq4ZC5c2*- zJjq{%G&Nks{@UOtEbh4N#;&JILbg1%y|RgTKFyvlPxG#jZ|~^#y?5dlC~j$=FCRWa ziZkOZ5@k(+`h0zZ^TyXmwj-ezL!YKXt~^OBmhBp8&?#p2l4Tlnohq4#`6^D{znAsw zih4S1DQ}wV?&c*oHy;f7Et3J*^oygBy87gKg}B0=Gnr5wq8qH*tAgKeMqoOa1tV_{ zgbyp}k;-m~|I}g3hPww#0_1(v$;$UeeOue$b8PV_eE67z~}H4jg`MPq*2ZArAzr`pk-Z3c7J0wsS4I)FaFR@iQsZ*{Oy}?)KH5|3I6d|6!+_W_-OMVdxbt(?U$Ww{oM*k zkLSC|9(0R*sD)>oqrCzgo2Ty#CEO>+ic2rA;l8}x%JF8>$Mwl9ox5n?Bvt}5~M?S7}9c$L(GCWp7& z_@)M_nA=bDj!+%k+lY~vm9i!u4G*te4XlIR(pT5stXPnH%2{q+T&aVP*_zH#m(57; zFx7iU4C+Bz#YOk(h!x3sIx&h|To0Ssp*-am?)-23H2iP;D3DF`5^mG_HNfX8bXjsh zfqY4~r}o!;1F)5_eH8byAc?=Yp~b4%2;zP;TMvv+kwmT-J>br3gxUj(7RmVaJ#_1r z{C)N&__e(fsFio0EYp6neM^c+x9Z4HuHpQV;%^=516|NW+B`-x^ zi=eJG1JjM2;r)>>$ySby8!|#Ika994)#%Z4vgEV=T_(CM5MjimeSh^9ImWARkKUUW zV5f&-!C%iw$G+xDisrQdMc8vIE5w0(?$BWV&_oNY7Z~N$|8*dH%4k&Ea<_tG28(jt zfs15K=g{z8#a3A3VbM|UwIJ(vAhYAoTVdRpvqMPh2692OGs zj!Edx6ISTD2YLHwaxKxf^RQzulNHM1{pXN!VH-1d*x}?nZi$+<946BiXvwnl0-vob zEm2K6?NL9rRbn*Bsz>dIC9=3FS1MJph0zXDq)6VDsMLl{obwsIWi<-#@3v}gSUyDk|26pG)qsTL3=E%}d>gwmce=uyfVCjJhbA$fyV$~$(Z1Pjd*6^vYh z>*USRBU_7vPlfBm`$8+)dB@CAviU@`%G4INuJwTw$6$_5i99fOC2^1(;&fz!N6nCH zja6EIJPpa=x2%<0xf#097OlR(K}+)fc{}kztQi_#*iFB%J%L^9@!qBHX@)8)oNl-@ zZ(_U84t>04X@<}V_wXZ|8(4~|De;oL8441hSbdxMP5dgxKqGj}4E^faetuKDAA4j` zKgP*mh9(W0Zf`UX5_2>1rl}*Qh;h7wx>-U?+A&zYd$!CJovLeFSj(g(Zzpc)^n5o( z@6z_|DdlD)AE#)b8V^&H+C{2uTcaWK@HEQjS(qX{lVe4zsx;(>lJ}>7$eE&g=2~wm zJryfh70Cz@G({cFMZ}~{R}S^>Cdib9Id&?LK<=bYJd^b>L92(1Fj~=O;#Xe#?Q<3; zs7UAJ!zC65a>#DJxFd2V=wpbXu~rs6+3ee&2b_W?h;TD}{EY}bDZ-~slZM^|(f!@S z8L&P}b~Vfd%68CMVOA zibhDa*?IZbsSTq14h1n*CL`2VMXU6*dkr&wtRg>MVTiPMeV?c>m?Lty27PMqGDLHB zUj5Hs%@AX<*@e>-4AJc9e({p^66{_`pOK<|R1hHE6&h_hi+)khc&kZoU%X@qbO79dg5 z%TS?@KBm=OXAYgj3|=&yoAlI2JLt~PMRRswX@mPJ8sznn`wqTWCp5OO$;o%&84UX9 zo+!`p{B0`HluIrpv|JDEb54p7JlR5gHY`H#;;Dz&;f>%WrV^r0^R+N@c|BBr;WvGz z?=rS-9R5&=K@XM23256NU&Kza^Lv~v*F}R960u$Go5a`pot^tUb@7Ub0m9-3{$bXY z<&QSybkVx5nnc6k8j;jIB0o&8i+)sE?-N(t#2&6)G^i=lK|7PH1>E=jC0dem)6+b3 zPLjMb_&r#Dt%Z~hX03kTKZnVxD4?T0n?Ir#o0hoQWmu|#qE3sljHeA_UM_KBO0PB0>G%4~@wF4g z?%yZsFI?3?R}%&2s~2N2+p^|3emV^#)#$adbZ!c3ER8AJS*ng!&i|rptFB@$nqLpB zzfwnmmujzTjSw6YXF_#e}5`=PX{SA%WN2ZnXzR|JNB+%YMm%ekLvBW=E-MfjQf!C_Y47nfFO&B3IypjK0Os9%imlb`v z8OAW<(1F(I*Edm!%YsqI`59s8hJ#@ zSUak2I7_U#JaYfLyBrFuKKA9T+9;;zpCS}QBZs!w`oEW4b0r?1jJA5|eie00xvCXu zHxuVo3j}Ovt|GaXXEZ`XLzr0MmWh_TEXvrev)@8tjQH|`IiDPjEE3eb*qIqVjG3fQ z>z{X*LDe&Z*(Yv{6Ya#qc#hD>pu1U;mv>xFz?4g^wRgEoBcem)+Stiv;u}rvefSO( zI=Xme(cEX6=-*u*H$VdjzO>ZyeDEdS+%Fl3dJ4GGCy3C8>diijtfV#4mz5Rt{DvQqlKL~M`E2-j^INo0SiN6&pAg*ers z`$2-{GCD35Q_`i>iE+!(?B=JDK*#AGu9A~lF(z_HATy0Py3o+B%+l9Q6q4*?TO?dU z7lq{*PLflx^#TsR9>PVmTFcCGhqs0JSK%IO72yK1c)E+js1^4^rp)?e62wq$PmGc^ ze+lMm70MJ%IFCk~%E#w(>WQ#v=@mpchrYD0SN5_tVY(kR8Qch>=q&qC)cMw4;;2~- z^C002dXCXct{bOercuY3$_S^>m9q?WslHXjr$f06KMBI9v36ZBWe5aA?h zdQlKdsBR$6**>RpBpgToG+um;a>*fz6^7GV5Cjpo|Cr=FR*W_89HUVq97Xkw@*~4AFZf^mrrj!F~_Ky#*Dy=!nafsR(%SHyBPRst`WG=jw~rv1(i^Y_g5U@ zJYg@o$VokUVm%*!Z)kT*IE?RcUq+2#EE| zbMd2Qv6wDiWrvwCUuaxkcl4;%N9_N<-V=jY(V3^tU76TGomUIdZDc_g z!!)_n{c!iQl&ZRNC~^5lHBAKdAk5y0=?Z#NfF*_}(7I6%!zOErgBANbqUh2nO$zl0 z&^}Q(?%$t=3498t{X!LhGy$ThWnM9{P~thAH}x1W_Ozxba)-L*=#v+&z@=P$wN>Z>I;i zlD98I+J&hGr#;!2=z2t0@U|o{e>U$Kc-)6w-+IsMuuX*H#U$HZGiBJtwZcgKZ4wl? zv)7qRd1DHH1O={aOTm<3ubIWWB4S-*Mcm=-D`3#P`(jr~7m+hDPMEL_aN4}iOe7+V zcuLCr_neC~2%1pM-&Rjy5BWau^lwXpgn7b1$%iy-YHh5$-bDs%ms7P53XTv-bq0Lo zZ5eof(eRD4We;)X)5^e47g=~&%+715H%v^@&l32wEejSN>Q{0a+lez=;bX5|u7ZQ$ z+{@LFS)yWftkC1_t8jN%0Xei$Fj>3KX?+(tkn3FqtEpXo;Nq>hlnvpv|w&a z0d7C=x$v8%AKT#*K-b}{2r(g}d)b3>G0(we#iA`mXr*n@HuyJ%xu5pm8Si`z*M0f5 zC$9_pH0FcF7+*+DZ(`gHt=5Z-A(RKYy@KHug0{)^2|D z2JmiQ5mD(bCn}jbOHf`agKwwy4E5m%ae;fmC1+C^HV8|M8s*c(KjaAc@Rur(9bmpk zt!0q-O4-}*<)#We+V9l%$9w`~u1r)ndU+GrMo)e;=o}(eiLiZ!&6|*uyBs?)(M)7< zN;2brsR|0hZuSBV^qDpqz6ELkXUsLvMfYK)7FLc9TWWYcr|vUK%mbJ< zqqmWj)NQzO;SJN(pBqF??m9XR=i6|5^WUW0N;&c7flD?r1-Bt`Jns9|)kUo3ZF#_% zt=oVOOc{8sQZUG7x4&d{`0+H* z?bX|D?Ed%HaRZy`Fm|`;3(tuG;taXXua2YvYi@y0{nyutS7dLA<-XJa`NPuJq`v&d zMlzPdV#peB?M?pK+@pUn^LIr>0h<~yafAME@u?-Ev|i2+N0KHm2MI1Fof^kB{5x)1 zywn6${&0B`_c*pUNih2+SrdM@9?!Q(SR?MZ@TFH`Qxix$|KzFZ-9&>}C_hTlf)|%P z=#}i+iLYHb9_)On1wQA-7kQ zG1oa@w34U|W8-7)cFDD(Ab{YF|4_PIsMiP9e5i0?SAaSCQ+uy<)8$n11_7H zOzzE#M3#NWOXi7#QrLsMf4XpP;H{Iz-UZC}pNUSSq#m3vWK$gfGf74Br?;jSZ!o5XA@@Sv@;%_i&)BcX3qrhm}jmuCP&-<2n7^p=PRNe?$3 zts6jO`;LRTY3sxt%0DM=Up9pE+@qvjdxnT>8GIoZ9S!mG-Ra@Qv`)OR)Ii6bX9#~Y z`WLSewy_;=^3VNSGlXe?2M_m17y%)ecV8hsUMsTX8wwnZpfc~6Z`r9i z?8=QXQe>_X6#UqZJMmzf=zgK>p4*xcBtE$QPTXw;qs;f~nMxSL*Z|A=Qp*D7LcPo? z>tGDFhxw?c3M*J?e~aVMTw@52c%(OR|2Hz?3seN$+a zkX3QMwN0#lHdY|7 ziV6J@uBGcX1%I@%J7AWM%&j3dy712wKASqfFizeZ6PE zm|f7+#Ty6Aq0boDGyQ4EV(XTi5|ZX1vBB!!c7%n5e|gpm>Y0PvLC3886&jM!(S|#m zPUdh)_RY67;XdMkDS2co%p8^;%{N^WW+a;zG)qtBnFHq+)f+pjs6_iG?9T0-=J2lS z{oT(;Xh~rec3~y!<`B`x>KJs9jbyyE{V|!x0{rBK9UV(($TuW2?7}ZwKr;2kd5Z>G z(s)$CuE+1bP!o6AI(SvlIn>lUD@*i0IJw3BqapPRtSV+paY ze9hXIX~_r2xcdG|Sb_qbgyy;X1k#`^eCgM*1m!)kWt1Ei^6G{6k~I#N@TJ)9#4cbb z_ik|HWrkY9oy_-|yB5ZXdw=KdkIc1%p(M5RNn=(r52L@oe#wSigs$YmUGu!8F0+a-5;XvvPlN5tqutw2V6N9GR6@&9jrEqS!-KMN;9nOfC< zc2fj3qg>(tctS#A|4qRGOGfEb;O|v`VK12qb{htbhx>88%7}17245;-`>xX)(LzDK z-_A(UAY1RhtS5 z`r+9mboLv5e1A&g?0h9GQ0(; zH)1G=yRM;$^<_HzzIwv29B@WgBmD7>G(9F>dfpDH`g zJ^z@4?3{bD{fQLRulTXucP$(I8pKwP8&rU+NaN*2YA(1%e2UDO%7sBj&8uJ2as5_( zo=v!SF8Z0W?Rip=g4hr6Waqc%K-SyZA1T}wV8?X!;W{-B+&&1mO8&_M>FF4H!=yR* zG`XT);*f_{E`4Dh-a$dnr}TUb((&W=)R?cfl*6Y~E^}G}2824n2EVa8P486UgAkWXbSj7z6tgPI@OJ z=iqyho>ZVVuH)deUajqDMLq|IE2T{H!BSp#c}uz+@^9AMrzI4Co3Bu@%K#a!-*26` z5Q^&{%WL%a$dl2+rQ2_53R}@*p0G2D7x3d|{L1b6TLv|*ndyJ2c-$d|>s-AB@Ug1L zf$<%#H@g!uuXL^e8HcMrv5Ia*PK!A+3iM>Ci2$ASxH1^fkNU|bfIwkoj`~Z2pojeMesg@xSUG{&Ot?g2iRlraMJ& zZ*y~j#|hWB&L8sHIg8NF`#O3R*YWc-|H>U`S_l+JZJzwpQrL6isu&%i7^0f#7E{NH zz&w+En_xEw;b{hgc6W;q-?Q#q!l_nt#pv+24nYLHo)KDn`lY~mjkjylwHOFpQ$l7I z#USpj>6~IS2cJX4cI@vhLe005#GH4wA`Te&oG^l*_VO{CMttAgU#5mcrQ+=cd?NlE zEQX&)DDr~1-$uM|QWBkNF^YLQW_EeH1s%_fJL`9=2&^qw9r_YV;OLvm&Q;eEkRE$? z(8{<3PVt;sHqn`b4+4Fo0!78BfOYnsRBa17V8CRwkyHed^4t9ew@M)4z~;AADjxUp z*z2sG64=P*skBg?gV)k(rmsXxP@CNgSD&9Pi1vxk%O6a|(A-WsW$?Ecj0PRPGPsq( zKtT1~S>00LnpXaBRsq)$d+T@bN8x&M?LCS=B^;#m zO!@T%xZZh_gW0VT26VKu%B3p7lHWys0QZq0uRn6;+Ac>Pt-m6*4VuyU)1&r^!=-Q| z*)p7$rT~f^1NJf!svyeGRm4575@x))9{-oG_h5;Sz0$G*B^HqDlrA)*i40qVO5rkK z4|TsXb)F3SUtZ&2bgKgCOYCIMi&Y?`-qzyOHw*c4W8&U*6-fK3u1WHaW>olSXwTKh zW$^cH+N0~{7(DY=Yo#Yt1EKhdk9}$t5UtzKY_!ZmY5qfDweywetbm}6?@$whBC>r} zMj5!?vhy>-^)v=-i!D^wYT(yRQHv3&hDf>dQc9JxV0?_Z^zf%j6xd?dHk8|hwy!-A zJFr{^{1vs0H;VFbUA`M)Ak=`#n}~Pd33^;gxcy^=)-mV9pS527(-p_k=stv19;y1DNy%tR< zP_N7+$F>}pOLYomcyd9#ZO)lWtpT@t`4LCI)W9yI_+3mfvtT;;)in-Pp}?DpdP@>b zsO4CR=zLN+oOL&AdMB3yvFF3Awq0vspns+D16M70w;tgM44DPJ&Zh$o{MD!|*!s2! zTNAo1>|wuatQ^-Div&D$*m3sy3bvoX03zx$BW$T&a-en?dURle>IXV zaXdn?X+-spEH3T2jgP}1o1T}YnGorCz+{bD2T@ktO1U0&!0s>`#rzoeE4nN#iIHm1 z`NAN|*!5O75 zgI;CJ?a0e&K-&J(?^CiWAo*N}$t+g}@PFo)W+pU%$q)Io-sknOuyv^Lf#xi5q<9@+ zUamo3ukn9y)N4Serc~w4Mk>Hh??X$vbUKheBo`6f8u0v;ZzRrzdUz{3uG_0P3y~|A zKlrHDBEp!zWAJu8dSib)aCuiHToLy@ka#x@=uWCXpd&Pbo59W6{dXInWTk1C56?%v zvwH5~Mtm(Aeibve`mG)nmEFyFN~{Fd9f~olA5x(-CHLAt*G4drw;b#qY5?)X#j6)j z%|biVD_vEZIu!1<&4=Xb5ucW?O^eL~xM#h}Zu{v~hMS%IDZzW7{zuUpn{tLFfQsOtE2?#qSvuax#;cZgw zRuArzMO8R|KPR~kwT2J2KlZ6Z?*htN?2{`Yb!!*H@iR$~T-ZM{10yr99la9jQ8weJuwk28)O~y*b&$OZ5rAroHbv< zp?%G8{_xH-2PhM_y;>3!5MP6gx@zD4m8$}(=jbg{y6>R=Ejo^hnxV-5 z+jz*WW`MvWgM+xQS#asxR4ZBM_G1Q;wSEYjO*Ww5Pcw=cqt!@QBhh=!4%eMU1nf(1iUPfP<%LaX z0TT}`mGhO&Aa#04bL|uElcr5M;wIjR~5q(s%FnW2U8ts!m{+A=H3M|j$jqz%JhQ1%4 zqG^g+py)(ilD1R}WCwm6v3HmOrK8$cZ#FcdC6kMh3%HJ2pWU_p)Xys5AwJ^Nxg7dm zT`Rk7Djw&slz!2n1-vYS_Pn?=0~`msQr34gA?IJ8iZ2*cp&#>Me7ZS!d!@%L{|SBs ze&W7s+t3O{J!kK(q_@Dx#)&lpof+V^(aXFn+Jx+2)9}iAB|1ttQvSKL3eIE)av5>I zhj8tq?sRUgFi`w3j$4P#c864=&97g(*Xyg`tY?K= z=7|81dAD?huBa6Vm3I^lo@|8!Y`WZ;;xk}!Y%XT|Src+PDJEKtzh87T&eS|>uYxo= zmJZLeK5&lxpE(VI0)$&yFC5HTp=(dP;(z(#K3|DSu3=4xwEa`cqOk&<6RR)g?yUl* zha9WT*IvQX+lqqIZNpP|{B*-3 zRd9aX(VV6FF4VSsQXv#kfPW}@sdg6yINMyXs=w2qboZIK#}gp~r_BvYL_JUAG_m zZM9u2<^RxW5r|qU4}@>Iw!^?V!g6nP8%#Z*HVimTgTA2O%a<+92!azT z7-mY);l}b_@4_m0B=MmQR}&-k;1`d!P&*V^4P+K~x4{A3d-4REX-H^lFZnpzj8?sN zr3v_!AidK=y;|v2@ZIz4weaE(Xymo<{00?|a~8PkwznPZ_g5*?YfnRsP|%G7tSyLl zWBJYV6D5fA56kD!@A&gYhHcNZ_$MTJ#BcXD{Kmgim1Ox;+Ch}<%kF8pY0$NEc)jyj z3)&pfZ=;qKBf9qVOX?r1K%xKY8IR~NMmEKF(4ZK6v8op0~Y|e|{QVlkeMxLhXN+9qI>-R-M?95 zaorX)X!=}~LMTRB<=ck0@#moZx{l+DdIVB7Sd!VI{)Q+ft1hmUb`baIssFF8!emz_ zx^LHl?DlpK5F?Aw!Gw>(KaHv&y3wvfQ6&o9E2}(CC*1*r!rYK!XMTf3f1k4V#uO~k ze`wnKwgoMkZj28~72)&wjHF;C{C7Kc=<~C?-;iTkPz{}12k=MJe`B@!4J$*J7Uw3W zpkL)Dk5Ehta*xttZpcH(jdoS+uo(W_W!^LIz>p7IgYcz`*;pLNsj8O?UfX6-aUJPEvXwgNzLdFK$yips2sDz^LsvJa0^V z__7rDi~alL^q1xq)O`vsp&(I+l7}9#U!tu7nM5o0&M)6l{gXEdw9=j6){&CizOw`J z>+Z-!q)vg?n8!4Ayai3@R`@(~C_p9}3ng{q_`JP!S0?|rSTwm6FhJ|p3H&ym7mmqw zfCIe{Bz~QOxfyq?Wvc~+z8*Uln@2_m)4EFp>MFs(MIn?YG7jClA@r2Cs1pcgkwPjj zI^b|)NME$?6tu{z_;KxNMfoZXGdUX=s@`ULBa>1InvpV0g&{xCbkN8WEujkt@&`&( z(>tJd)rjc%dz`xt2BPbbHFf_RutaAEYC0gme`+e+wQdn~n%OM8-q2fbhb(C^p_E=-0*RzR=1%bmcF*Z;)CgRL$8jztv7a9{1ywXo|XE zfJ@%sp;jkkuh8{oN=?D5!@NRKX06Die}(QNTONAP$8wBYv=T&UowN%tCZfR-<+D_3 z7f4$k{Xp^S1Xlh}@0En7fM!cwP4HD0@x~nUHeydFk2Fyp0QLy zknV<}vU-~RrJZol!F;lYYYLRIEiWDR#`D8A9^;;dIq1yhA;$GT6;Qe^-m$Yk3AqhE z|3Pr;2L8Y&OQP$YAk3A@L8P04M88kRf)rDpdxU3)-UhgD~1Qx`CIG@EHcici?1ZfI!;ed6sf2}Mue%uUcykO*IVA%!^|-TVh9V-w3k zRP8Y*vs@Y?$d9FNyY_jZ)QLlp$2+^B#;fFj^{q)5RAJR!JVZgUbIor@Qd3bAg5o(@B6PyU1_KUyWqP;?S-P~)v|Q99?00Sdgdx=5?)%&a)}F55cb%t`yXQ}8uOp` z>cjIcHcW51RPd*xqJ0)ETevHZw9rYN{jxn!+xu>5_sL0M?VsV^x=2AOZ(@BG$;rsv zbX{3|y$swvzOCq5q$9iItKwAGJ}8n(u-15nx98Q+-o9rN-nq~{k(Z$$`La{Q>W9A& z&4LBPWK9`Z)GO^=`<{+CiVl9;LVaLzX~@$mp$9?)45EXme?ZmF!grT41-;_)J{u;G zggiGkSZThL!S)gdNBmGau4~;RMy2)vf1T*p+kHK7SZTfg$`oFQCjYLBi53O<|Mb10 z+?{}&sU62$@0WqU+@T+~hceJZ&l~S(r2By%D^B3r-3$A!lB|KR6&lW@s|g5Des z+F1Sg6I~zBhX5wa(Y4W`=)&J-i?rj6|#j7muZ7Apo z=k1xF>hb9C(-R`CJIY|OJhsu+Hv@I*YY=FQ`oX00(lWneFT_UtN#MZi==`WLG6dAfBc!|NxhJ`Q)MO`ue)PsQiled zDCoKqI`*<77L7)PEsOjt1?I2wtHkLHRK=|pM?E}%fB&tDc=q?gsPOOU19+XD@( z(??xje7r1PJO0cj2Bp~?(@m5sh3?Z&>A0_EqHY@b5~}e4zAW?cyP|v_IO-o&WikWUk|l)=SZ-Fh?|t!dVK>_6DnX+|5Lr$JD>?fGAm$C4l=Y6;<)*b^p z#XnG!DE5dpl!ETP{LrVz^bH*xXzTdeR{|zA`)kw!GtsdmmtC|`1K@T}kl7}o5BKxF zyhJ(w2cG_ww>=#}L4td=2_0FH$fL2@lQFRb3iB~%-?U6b8GU9?MR^^)|4Bhc`OX7++@BGB{O`pzS$usprpw=I7N4U$mvW^c3<6=0$Fv_G zZyRK}jlsVY;G!_h#hFY&M?Eez(zk}9WM*r7XZ8~Cx6Js>$C8CCU-)fpA07mgeJz2h zcKyJ*@mNu8U;W_ zk?L>j2Zf7;J1ep$p!T59=VSR4RJS|F_>stawBzlNX6~b6AjyLH!u2fl>V@2Ws_P(L zzl)jn3*7)5*Il^A8a)A}zHYI)1r#LwXwImf5QKhQADyz2EQXPtvhrY%g-k_)lc|w- z+(DKBFc-Z)G^u{mYTuY`g&In6S7UA@sb=Z-wp#v(XS*mGORAq&Yw$lstD z!273Dbo#i;0Nm9#Q!6*0fUwrBlz=h{s?ilSsa1Q8I-4x}-iP7q>=`eZdtPNBu}7lk z34|dSxWAF_VmSb%vqRtht2b3q6_Ila-@j{~FzocPa6vMQhpbA>i|{%(aS66>v(Wu( zcp5DK5V+mqYAJOd05qCmby;!(W>p59?^IIISq2WbRd|Majh0UKoGyZQjcPH=@3PP) zozanP7y<&TMC8K90RZE|Yxc(`;5j%Ryjn#;xxu<-<`3^9;teCe?l}ZMzHD3Bhh!nc zcCkAIlOZUI53yiR9)OtZnesn(O@NcMK0_fM_kI3#@(+GpWOSF+tLHU>@qo_9E1~%H zR5?9CaKqbEH)h#aF#tK@!F&T7<8b#8NxKV=Gt}ZJugsQ!n(VUb?)?Y`y4vM^!?Mth zyF`9!>vkJrGQhjR*r@hRep#1LVk;Fpq2+`A)#M=x0 zdf*RD5gzB{zB;@-0G|xM{~w;tJe;cTecXpgi3TN=WQvqfO32PaWhi4v$~@0A8Ol_d zDJt`r%=2)Jn`MZQG7k}%hlq%XIKSol@&3;BUa$Vy*R!9!&faIQXFd15^yNE|SL?$w z?SJUHP_y(L0vnaxJh_c0)*GcKD+I|`V|ghlb( zs~rAC4d{Njq~*NllLsjJ{qvxTNfo%j5i4cvPlTT?^Afh1$APEdme&S03XH?68Mj|g zgO4kcm#ESAWyxIYWp3az5UKI_S=B!rWckkMZF&;n7X0{=AT|yN_u6mysEmRXraNba zJ*GjeL21H%^!=PX!1!Y9tS=aGdZH*5ijMpB@#Lfv5nke=_(G;L4o1ujYd6hD!DDWb zoX2L>;q~g4Dg!FwJuvn8C zx0*&lnv@Ak7{fH!+ZAKPScKNkJ4qDRFTMdB`~FRDxmAD)+ZAt09wK}iGf+z+q4V_P z^*Dg;-z!H1k>6+<)r;snx%0Z=U5^j2xcx0?D536`p{oGFhu@nHokaI-EYs*V^8{d- zuQ%SaHVP7*%*d}UOaZ#PO5r~UPI`!5tQ_206m@>KSPb8L+@>XI zPoVqAIHBb17*M*h|N8WYDXWa z7`m}gF_Dc-fW$R}0ZxxGP*~lT7GO68qzXTwz0td&_#J^X9oa)|HG+Y0uiU%g&7x7i-0~y<$!?P@&^pI( zS?@m}Pz>464t^&Sn*=rF6j^L_V_;KlYMMe|3S@xEg{H^o{j=Y~G}`+my(4-be0Ylb1F0by*on9u zIC7H+$S7=B%X*67h0h$3qy!YNZIQ=-VjM6eAH(3-Tx{aP|>OYn%D<*-8FQITi1|4U;dZI%$ z6%^Jc`d3yKfqy!|yu5dc;HUjU7s=4|6I0~zN_sR7W@XM8JEcy7<9Y|#HPJj^?IWc* z&vGi@E}d$7|ELIvY=~f*97V9zz1Wu^HU&IYZB1|3jsw$!n@z%Dlfa6(DkVjz8@3&d z@$e5!123PfI>`Jh1TC2s_xnkO&_h@6-G7}YaM_et=KaAUieuN%&t ziNCwVnhv}d?w!ntD+K9A56-54ErfUXk53Rhk#|venw zc<6F|v@tOqQ1VYKH-SQ6FCfj?Q&@keVL!1{brN*Z=qz1C z^D*@qm%FRCGXPJ1qGaY+0eFEYr{4++~~qWEJNQ zCoN5Ymq8Jg;&WZlOwaIf+RrQy5VRWc_jEpxzDc!5sk#8R6t{4Yw5LH$4;g{~(gd*B zw7-oHO@Iqb%i;wisBa>%s)NHa8<;EzsO$OX0sp-r)^o25pc8Z0t8MiAO2})ppu9Z+ za;r$Pqs0i+DZBFILjf#=)J zUk9E|fRKEnt1m+)kZ)D_bX;*4{3&{v1tV$;yl?oj!6h}?^HCMZk8+Q@fs6%t zPp_19l4VbT)hCQynDGSoMftQbFs=*s5WOyhUCslq4!#Ru^v?pli{D(uLh>Pym#ZR( z%>W&oDMkzZPOP2pZAwv|08)#yM;k)Bp!p3U2GjUFP|g~1&UPXb9F|*+&C<<>Rk1!n zWID*d`hsmMy&HXB&X&2H6q^9&&x>mGpuV2vmlxe0QRD-KmOkMp;+dek)VOryYCb$H zI7r;~K*!;)1BYfN0Gw(xin%xelE!$Gp$i)KZC_m>p?q-V!1cg~i5Vbc&qB*2RX!Yl zjQJ1}XMpFK&o9ZgCIHx<7oM(B>LfAG0+y=ZT`jVcfPP4YzUR|8xGmAl&5Y`wf9gN*F`q908cwc^GjCGC zA0I34d6`@|wL<-sOl%g2HOkAO5*e^tynQvHY#c=QRhIJdc0t>AvWa5V0&v=zxFSkbt1>B%#C6@a)e)wZup zQ-JvKP9|u3a3^OIqb;1*d_5zCR zg@9}8FWY^tWT4I#_@$U58!|e)C?TOblnzDrL;oK1d@tkgcaaDe?u{J0Z=H za@TsxLU8b3>{|=EcR-Z=evgiI76kP1)gw7M#nxTbY_@x;KcR&*Gmv>FIIhF;#B(b}0YySX*y)61vho*p*@Qsc$2gd=wu-Gll z;!b$Z)|+D>)H~Q( zI<*tl%Np*n?kNPR(555LrvO=e&sh7+7#M0Z zRyiHn35hw(q?uLJXW?0q+`ELW|xHj-{K0 zOvI0YxwO2QXIh=GDd6B{vtHbNDPUw0$f=<=H2&hUvXG%U81D@_ZW_ngK9hRT75F+Tzfg0=YLFZDY zKv}S3!%bIIclg$#E+F0sLvyb#%qABBN|N^Jbf##~nAsFR@iPq;4J~#MJm-K;Nh@_! z=@cl;d=|AIz1Qz^r*N|2?}RZ&`IlZ*6@k&B;RlB=MS)q_lRSsfx{Q=qtHgE!I!^1B z&!6Tg!0el_cSLmzd66YKqS-s)xmwN)ncgB`!~Cvc^L8YdIxuFEEt&>%ew=zsRx<|@ zZ_8u1zfFOBdqYy~%`q^Y_HsNIdFT#ZNzyvAPz1hDwQ`@;jsOkh!q(N(sqo15aii_; zb6~{!@Huxh5Budyj3~K02KW~boh4Fs!XU4?Tl*=C!CxJ(!^3XjAm;?rxx1mM(C)O7 z3Wr%wxb+;YD;h>cZt6Gc?*sR{t{OcNrj^7 zf(-<;zDO{z{9R2q4SEVy);^;7+|R+Yae>nvaOB0xo12%4!E=)fbm!q4F#G<(jp@l0 zcv7uvh#-cJyR^|)e|8$cg7oF-%~9}YNV8D8zXKjB9PfO4s~B8jZ1w1!d<_n@x9gE! zrN9zLb}@p^JYW$dJuSI54Sd;~eHea>f(QSGE^{<@z`9Q*>xUi`gOI2%guX+sfp+}) zPsvycoKSdmlH@TDbRGyFijbZLS1LHt@Ar>_hC^Cu-^x4S)2($EqFFK6rp`!VzYzxR zs_|*|&%B3mVq<@|6Xrq9(zJ`w!)Y+vDdzjWaTHt>j$C?y`UbB*2=WYgQVcjbJYHm5 zh5{!?srJOT@1fly((~5L12HA9DGrNiu%1(Ol0X~(mzNfbe?`T1?DfO0UsTI+id74$R<#*2|Ve5;^Fkvw{nU> zhOEEmMUD_)Sm*!!bwV;MY!aQ{V*Uv{n;M&bCr*Q2vIILP&ru+zsuY=P(E&+U_A{Y1T4$s+7^YVzQ7+*e%N{xs8FAYXVmO~m!dCb zPc#>UR;MqELo9(n5cey~+zM{*KNPARWk*5g-o6W8Q6EGm ze_V0!cro%(eiw8V@B?mrPZS^Nyo1S`SC5er(0Qgcd7Dp7gP$HTKY_?7knC-~eu1|G zuAa`HmR&3cJU!Z-l+8ZKQ|{w(h3*{;8g5G8hUmDI#FegMDU*E|Kqu~3=>PEXW z$m_@`udlX&#?SJvRI1(!5Vd+;u>3<3T)m;jNf<%>F6Fpf%|7JOpV;FQxf)9tl70}%{vHFK*gdx5hjn0{D~BtpYVx;F%|1)y_^a14sffPoh)f=p8* z;As~(qxAQ7cubDmAdi^{BEz4@lv8+ut7oZi!?%f$Z}EW?NgKthy-Xh~I|HWYJpv_r zM!=cvM~AK2+Trz)hQC_ph(Pd2Cd2aMr(iVH zW6=nB&hu$HEw3FiQ_b%Ciui@*$w^s?$IhUqx%A+QeFD^}IQo!Kvj9f)3r=>p&wxJH zN?zvV5it5M`AT&{JJihk>Ysj{2o6xJtwm8efz6^{UH2#A;fbO32c+*PzZNee^OrNA zNayCfZ`cT!r210Y{u1@W4h_2v0U|KsZLl#)wg>d~Et;3^$3w!^J=G-CAFSgdH?*2C z1FGn^zmvRBeioAh!yYJ}wcNVvEh0Gc#@prW9a|vaH|6Es90xV&h*M-N$h+z_Q)!bw z1IE~Fzx&vZ01o9>!!y>XUuu4s_)MAzdVG?K_0}xG+ZC2!dC@pHIAXK51r~v){_Ot# zni-Jcl(NdAI|4{_=b3(Mqw7NG2>N@M2#$YyW%bX-6u3W_>kluEg;xfS%WrEhf|}3x z`O6(M=y@#C)ucEAI-kk*tt+6u)+zCMBTb z=vUJUmuA2N@xA)emqrjbP?5dO*A8o>9hUbi6M;EFQM$L}0r<|&?x4*Q1IufiGRe?B zC!UtQ^xw#4L1yt+E@qYyAS4@{vCZ5L*F7Wl-BTfg$_4=sqM{eCVVJX7f z-_dbtewNEeW`U3)&BVULBVgF?co*StJ3M}ZZ~T}l5p;4Lm#4oV1`<~{RGR=aFhUaA@w9cZE;Uq-b(+)R>gjJQ$adlH~-KMEnz=Mk96KUm9aED*| z{~xh@aKm)(X-mW}aV<@ElLtuPxnUf$I~RZ?^!X-D66N|BL2-di4tld)e@ePMPQ(9*W~jp~;%(V~j~O zEp8ZbQPB5&k|dPJ_9cmS?C?=R_loCm6??4K;kC0M;-u;tmh0K;?&AYAjV{xukJQVp z^|PL0KI&88Y?wG%1O3TWmJ8eSK)~m&KU7Eli(d%TdGpd+1A=t5@Qqmcg$Be|jm&4Ax7U-vBt7N?m5AMt4)&Aj6xm}>%m&TU5O0+eqv;9-5I$Zydy}7-58{R*uimjQ+07rlU)~A0d=hb4 z%%0^g3|o7!ZJ{yg9X{)v@`rv`GhcixoaMzp3#u#iEgsR?Cy5E0N%8LRT1pE?=9X3L zFpjZ14M(380vhY7JK>j0BuWOGpPMA-a;{qjYa!2ZlV1lutDYi!f zyCT;2VTb$5bQA!^Sw%%v z!-O+w`R{KO0%tFLT!8(*_(bH_wlm&BoLGE>fnL`>F^qO0NqL7C`_8?^a!SGgANQ-c zqg_@E{m;Z<&zDp%6Ukf-55$jkTr%?Va(s&4S6ruZLmZjH_XD9=?|m$mT=;_{;>iwg z;LBQNMUb+PDx#928n%v%zinJE1dKOddp@@<-p#)R6!vv0@FU(VBYV}R@JRe*= zdl$>s!YJFvgO7e|1aV(G1&#cQ;U{49hsmr88mxS$4#_D3>~-qmz2!x_@k;^i-5=jX z5V!U;iBIX^uPgYq_f$bU{F*f_hh%2ObNu6b5qEmTu>}J~6;!asueW=fGoZTcU`JIo zE%Q^1;y%;!_lRq|_QA_2@VFHIrSVI)6yn4#TVnsLayx2B@;Q86e{ z7UF)6>ZAXA29$wAOXQp<5dRi=gGSbHQv+|^$PVA(;C?@pIl&w5jr(ipOPU}a4lTK- znxOATM7bc#OObA9&%QLKoMVSCd?2{IKzv*r^CGq8F=gyv#r|8&8jXO)ih;?Hu>{^z z>J6|zi^E#UIybO~2qX^_SS9gToQ`wR25%$C}@y5Bc-LT2^^ySGYTingo?`B(XDJZsSzfmZU?muGP zR2t&#Oa(3z=!Q$+Nu$dpoi3G-RU=QgC7B5P$)`B=?Fx4DuK-Km+LXl+kLUiul!^Ds zL(EC=%YX*r@`$Ito^p;3!X0x|Je!=$Q5~c=q)b2y@7R85G=@06&BKfP78mrePXFek z=7`s;DEa}9B=BQT{x-c{MBJX2H2bAJs86d&@lU%E?r`DudNt9PeKAnxx&+G)v~!uRmXvE_UU#Q%L`k2}qvS_X|Ciipx3uYl$4 zOYYWfC4jz&!H6|GZ#O;;>Zz=&}7{ z3rg8JrGmfru+Zv9-K~fl)T8>wD=cknXv<{pAF&4T(u(gB z&;D{~&+;nRNV6OsztIpS`mhw}YDvAMp~&5hUj_JEFpVdOGfX?7E-@t}j@WR!hd(?tuctpqcOSEt{`yNEafo(N zCvXaj{_;-5BU1UXf9EPIhrOiN+TMv}kmi74iT_Y3Sajkn;Z)7ujb9C{D$dxjB3|*q zw$o>lygF7vr^~s+Ef$<`Hz%)mz%0BTtEnJZ zDOfj9-L!1Q_f|cb2d2d1Q7VVH$nDm5mn_rOuuDX5-ypk(J^c|H82ERQihUKd()9PyP*4L+WXln*eUAn7;$h_h@Wd!C`0QV9** z=_V)cmB3tO-di_?%YmacmyhzfwExBTtO26jtj~K8hq)C)_N;Tv6u(ly7`4M=vOm@{ zGJETa363^J97kMc-t?eR)N48HI{)E)4T#UAYiKlAJ7tFbO?A|Ghd9j_FE#q2xMgq_ zu<^A3@tXU)j1~q(ad>4;>(z5#B0N@Uc-k|r96XOqJh5buvYUS`@ZPu5nuB;w+Te1= zWLrx-CoqDa3~`;aUa!@i47{){FGeyO#CNttq{e9SN#H3pe4b>8^EBD_Zl6@hQ*1lp zEpZs}o^zLJ#b0vW#LvzhqB@SaPv=MXCtxQI8%=!a*vgAxM52Vor@!TZ*W>TUcL~Y6 z`6C{3-(GP;gIW;wV>(~~H^R7OfbA6E@ zPY^Habo#jeja#;OCuV6@fw)oEDN%{CZbdBmKJWgIh#xKKI`U{$rwXcSh;VI97r|1q z=(v;e72tfU?^VA3q}}}Mz&SyR%^kipsBPewy7XOKOCd>Uhci8^%S?z5alxK!cBxY! z-n1~bS$5-$GIlkF_3{pPdPI_772%_c)9KrrgdzTvII%aNJJT4OPnoCcMI7qs@q|&+ z*(!K0)O=9&SP@+KdSg{Dx&n;+oJfCkC~-IcI-sF^iopu;mWPu^tNI#^F*ZvdgB@Pg zg8xqksnHJ$KU#Z~yQUT%IyFZ!Emp!0F{;UmAbwT9AfL}k!3xVdTDQ74rv@0s|HxW? zq=yw&zSdSjJZlp_brX$6H9SKbY-}Nl*7I`L=iUuh0Fk2}_xb{3ck{0Yq@>NlD#W{9 zrN2+QjY!@U|l7-;mL_r#3X*^2xT|7uP9SzCo$7Sm<(yzP_G2?GMBAMz); z;0|9i1d0$3D=^Mc%CoG6@%w#^QAS*BccvOk+e|e~s%JdoWmEtkyo`11KUIn51@s5R z|3>cSUk~0#&HbEFuLq43lJb4pX1I{|*uNcqw&N}3SF&%F%X)IXgwEPzh+r3x{k?-tOlA0a)lY&MYAQmXT|gM&y(chS}x|d_WxTo5c93w01A- zmuW}o5aMwoVxn^2TrtNm?p{ENxZJ;%_BF!e_Sm@l6I%5W%bc|$0XV0CAUftCaB0VIuN>>{|69%VSnQn#PJ5Er4%Xu(Zy!6 zqa;`n&wGj6;kvB2FV4;$INXA`-tW1JZqBa_u=bUsF=B}Ct$FdSl=+-HW+F!3T#Y#2 zv>S_l%wdX{4IQ)VKE(T8Q{nlY#Z&`he@&5FqCRJ%zE~~2gi1gm8=keD9JHH%17J`X z$nZrx@PnnCCHCLC*u5)rAyVhjeke&%zWHZ-F^%bKR^Mmqp|z2qyehp4)*eXk?LwTe z_L@T7v3MPvg3{+2g%0ZL3&PK|tUtiJeyo&NIn{ukA)B9ciZ!s{&FGbY#Vp92!S0ZX z`fTV1qK3@kU+m`J0I1cDRGdIuvAvkzvbVP`_Ec`pcZV;YIy&(4m(z3X$&)A#hWj7j zz!!FdM^F;~DDT`}i|U&r>3ciq<{j|hE5+| z8u&ir=LNPanXu?yfhkQp^2u{K%f3>0x|@F^Fsl1CJPE|9f{i7tYd=5+!u{F`Rc%bUwpC$=TV}e}%INp@9u|}k;qV#p%b_#12U3{K z@qOgen{N=uY|VN4ZbMcLd@$o6Qs|ftk62HHrGBdfi+5(@7!FwP=HCb$GK)wMan8jT zpBS4f1H4y0Q`8CZ&blA>9=I3ehxy;~+ZsdMbAX*jwfejR?H zHR7|mj;gUdK2r;a98W}3V9D@HO?-Z6cO@`%RThZoaQLK7f=^yRJ_;OuY}_3212JKNEr{<9 zeH!RW{CpET9r^4}KR*sywRk$CMQh=eAdN0jk0j`R$^ODZT_w2MG{jA@;JurF6KI-? z96x|KaN6c_{-YVHxa`P34L8Jt^Q9??)KR^_0&R_Tyb%|E=;pt{7J?-!2*nz>nozi#CEq8FHfe?QD*?-c1qtG#TKMmcl2D9q0-P0VSEJ0V zMEjbi}4y_TerxpENrlyu+urs9%$3 zxS@d$7pYI}aO!fZs6?41i@m>>-?+o8;|?O$#}c1nlB_p>v8;YT`-GCG=a?GfHbe$d zVZ^V$zv4$b5QO4)os%?9iG*v55?V`om7uG7+?{$fY&ZWF!0BT#n~wPQkgLVhWPfC_ zKK|zP9nPJ6JktgBZerVSz1ROB-hFoe`PW{qCb(PTYFAlEJIpkDx=Bf`huhus>UBZ< zJBtwwwRfX3{+Q=}EIZ=hxBQ1L&L`GF@9)jq-6C({pI=>H=>#glYU|b8S)*@v^KSvE zUWawuSzCa^Z|cg|iqkF%`xh;-GnF$sn1UNU#SVA>YbkK+W?uldHTGic|M+{^ zXR(IU7C7gY5bq9$?|FfBabCg<>oL^iSVKI%t+8}C*FE~%oTC`p&R5UP8k{DE#Zod+KA`BHO=DBd%*(>=Bl1xm_j_r>*^?J^gM8F z>K?g<`rc+@85*=d)k2HPBZp(-F?v0`>ht;8wh0WcdAp;z1EjrBqo4@u+$P~G3Vx)4Q$ukh0vmesYv_+m1-VRdud zae||ljj0h(>SAMn%mgR=R*82(o`4tJ8rSl>YGH)=CUvug2c*;3!xf8FfB@;s&uCvJ z?&jYLjGsHnO(KuLH%{%nne>}jE8VC_nOuhgTuO($JoBsLh7ISHBq{D z@P5;IqjQVpK=bX7+JV8O-TXfTD_(~Hh%IeAumB~=y|s&T`x=} zUFl;D@)HDo+?3yXXM|^ptT%3KlYeH)w~$_4i4!qCVy%%z~9!5eJDfT z1CQ*&NUlO7%(HTj=pgbRBynGk3PSO%Rj<9spVR>GLP^Huo8{o2gmuyHd+&Gi{{pV5 zv3&1Aegt>*tMtJJ7Fc7SPplR4By43hU*({AhWpbjNsuF7!dpwVbzM4f{A)P9n+NhH zoXA~s&b+IJ708@qFhc%>sQSP6%-5~)Tg$!43CN=Wv%kvI@+7QCdOa-f$0p6cXiwc}fOd%Nr`TbDn^Ak|2-<6TIO zsJta0riY6JSW&#${tO8N&YcU+I(X?P*@OQMe+0J7DNM0V5AX}*eIpUb$FTk&(BnsE zEj$s&k=Jw36MQ_swJ_>c25J+{axX@w?&jYHB6P&F!<^q|dOe!rqhK?Pq0WSDA_%@;RK2^>Ns| zpo8^_MCnW*uY+3B-lmY2TIk%VlCIC@1MWG*)7GNrlBtlxz8hI-yZN^P+DN9`qsaRZ zS|J%^lctUv-T$6^75N_wxiU`5{0+hPzq)fKYppccvyo0vuay#j3kb{uIU zrGS~TVnI1A-m)l;LsLXAJ zOj{hD)ElPwB-hUgbL6LZSWe+o->Qz6^Chc2L7s{_X_IjgVPnkNjqxFgCmVFX`a?IE zR12BDIi?tXdky|jC2_GfmH_SgPWD4#nY-7&9h4aERodWa2htn-Cg1IxaHrDnP;2D1 z*!NGq;QD|U=4k)?Q{$e`@Se5ozh$%!O3M1+h{gF<$Z&e|-1AmdTnug&=d^!BeNUz0 zMb7%zX9|j2ImmmFe!nC9#>-mxiee=`CMO&m)5W&{H&uHKM%AXea#hRx1BIL<9ty2Dij@|&P+5b*p7Wpzd zQjW>=Lqm)zP(Yy_t#`DhNCBH~I(RKvo}%D*I$-=WP{-$53xCO!sOeir0j@=bCCN6l z9>n%=UPCNEsLtHyBETa*Y;&sBN9tP5$K%R|X7Jt|y!)&qe6xBvAI=`si8@33gn9SHe(4XaiDto<8#Jf_u&YLf~Q z=>37K!Ws4xgKwUg|`~HBZP)jk8@T3zsSg{))`94}MpS^Yp`92cd zsG5VnIpD{amJXgq-VdW%ah`a>U=Y7* zj{T73ivD}636yQe>Wzrp$6x3zr(H*0kRNtDyo(pn_m5sqbs!@VC@}n;U6MfkD3b9m zXY_M-#~#`5PsV8z;8aq z0N3}IjaHCqf%+w{jenmu#zfBU4gZI{B0q0`W-9E|#C7S{1=4{0|(p%XYS9Y|h9{*k|ofe!C!^szIZX-qpFlJIqA^q&uY zCqHRGPsFrI3B!M1O}OYXto6B?T&vZc;3&$Du6sDynLUWv%ebS zo%)9(){xJnl(VSmz&m41{phdeXUJ=kqmH^Z(H@J8u<9P`ti#O@4=gZJ1Nt#$Zu%xQdW!lME^Jc z>IC6WCX7{)59Q$b6)yH?y7&c)xfW?ZO2Mhe+iwhp!l5U&M9Ju2eTcozNm?mPR97fMahJe?}9qNUz`gc-9J!JKSz?0QpxU z&nI|gd)B}*(sSRaSE(RItHD~u8Le|tM`)jL+Ko@>0+NerEP}|-;`Pt6>+@q9yrSoO zo~y}Ea3eTw)P&a=AG96}+d#e+a4)asvx+nJj@IB2Kk~NpvRi8nJ<`NF`3I7;k-ug8 zfY15we&;Y9TCas1o)3K4Mo$(d@5UGF0%O`S zTWf`#;AVGSZ5#Vp>|M*K-~ahu;@QcT11{og)c#r5k@sclm7X1xc#4f^G7v@neuT#L zLnC)J(LRsE$F9CZ9+)pMtRiOkA$H@1&A<`lgZY)o-nPn91J|{0?cK^w2k+-D)lSIf z1A)uK=P5q@H~w8<8}oLJM8237y2KEUP;<7U?-1L?*4A#d!&84bQEC%n(Ozjs;c`~V&+UN*T10osNVH}W~G$-c-i^u#!rx!W@_;*DK1w9 zKW6g9VS(2VtfY%5iljs62ugHflQV(Cvd6D7ps zIA5MYejDS>Yz0vUOZ=Hh_!SZ4xiK%Grg0@d;J4IjKsaT<MpekzQ5IN?oC(22Yivof7xdP zs$$97iS{hCFY=1F2KR1!&u(z_$hq@7KAnKKt>P_$wwUateA13rXEJ=|3TyLATxCq= z`i@^Gil`CheA@;ie_`XOjyyXS)e8x@pEiD4W3zr{0(oUzOM8!vT4HKVje|vvX5e*S z)-dK>4b$#z?tLeh1AXEXdr>dcU!{d-trd%NE-D4GFm;qS2yOz9#{u}=uK%G~2?LG4Q zR1~RV6FrW&J(b4!9nX(A;O45BME@iV{1+t#%8;OV=$an5;F@VKaa$mV!1_<5+YE`u)}d{q?~ z{c!ES@$UhQb?wi0JVB|A`i=o(wpdQvaN>?Hh>k{Arm4^lPYH*jE zTb-EE`p>A`_r)*g^FcTqr=@R50mTm|pR2R~H~u}qCCbNM8+nWN9U-lqeyEOLB(8xS zf6+1hyCzX1KA6=tramI_7}>h<-Y178xo=AFHH+RH4EDsg(guVwaUIZzwANgO0N>Mq; zf8;IZ=V@?X5BCiwh2BLTB%5SfMiTpDe4jes&0yq18j!VJ*V_9Odor@;s!UNm%->`< z$E0SC3C*@gobPM`9D4)ucjlkNvDtqmwaHqS^PRnD;YRj z_pjt`{`dUv1^u#&A^pgsG}d->T6f+WZ}y;9dyjld6<5`ijt$sgZxm0~w;`|6ZFl92 zFEkF=vjqzZI>mZ;cuR7^g3%CvYo@iy)!YPr$4Gj2S{P!C$RuxK_!25sTptW|sD$(P zx618K79daQ`PY*?@4$_(zTT-L|2_YEf&3vYh7sgrQk(F8=_+E2yg)KV9kkf zKG6#MQtli~GMNYUi9}iPtY^5D*6ERO>P1dRQ`2`vx-drQ~UQp}vC)w))mds6VMI{Vg#i0Vqm&*^$NV z#wYZl>%M=_bL592Fx%3r*}39#U-QoGL7pf(ri(>cb^6#z3c}vg$QQ+R{nYBTwj18m zX(nxpyivLCch-r~GB|@Xd0gy!Ag7cUWMJZ(&4}H?*oms0)Lp1XR3OuW_r(i4}AR-(Ps|%rg-i@!pX$V@Eq1n zMOx&YI`u6k*@)nXbM^6l|A+ijvv$UWN?$Xqw45ze4SA>>74mP(-=@Tu{G2VCk&i0p z8qbKBZ#gs!&mgZlUI;$TUoSmE83TkEV(#lp|2O`9U^`ViAp-fTVh2vid8tX@9u`8P z<;YtFQ!0Y4=s037^696|k-y5JhkdC=RtFPMu?=WK^O~(Ph1-LFG_b2g`RLcr(fF&E zOK1cb;lu+EB)pN=>OPP6~aHX4%c^{zn?_URf%HAnjVDrDuI9ykWhjj<#+=Niy%pURM=@l-8Kp=N1&E7p6 z4A-mO({0*)|0eW0{B>kmH(+n7=6<}PgCUC`pfy7NtUt<>I`u2 zbAOM#<2|7^!jf-5(1hKHuKIuP|NS8I-Sr+e>~d<_9=c|D)E}%<{V)CQ5Svt zoG;!+{y6SvU?=e`6#C#MkT#1rt0z4gT)bf`!u}eJW zKO>N@OVOWhf>P`xrIU~V|;i1RA)gn)sWp_L zLk`~_{YtZhyj~X$pLypO?uyUqcI2N!elIcc;$s=_ba0Vi;Q1AKz9PglF1V;^Vfyv> z&$Gz)b?e-%M4Z_WtABiKHU@dWer1*Di*A>|=ydyUgY$(T@}6U6>9?2Q2Hz9**T(U>^de0z%{9w{41b)p0Rs2fQMrbDTgh|t{Y=m~1 zneoUMR=(xXBqAb?QD3UAS3}+~ZQWBfF?r_LM_%7MX2>7*`Q~(&x=RV9d>g6|NnHf? z1(tG&Bm{yu(Q#Y1$=&%c;VW1x(!ZzTPEauX>&pG5BOS^BeF>9cS4bND*3nTxS%#71xzFrfI!P8RVFY=I` za}OOZ`b~s&8n;7O&K7}fzklU64!+mJD=+-Tm(MHk4Q6VJ_9Y$*5<_a-TH^;SJ3zN zdl?(@ot22koKJLmiuD>)oXkevvxE`Rr0WI>cyr3D`i`wm*lPVE^PZ9#rW7$-lT(gE zwPdNIw|L|+v8_*AT*!yEZ}9je|2G}Xhv~&hVdO=7y3cMpVyYMphavmIog(0`&p)|T z?vE5Av|3 z_dU9LaZC?iEmMp8bgm07eZU-VDj&sF3UqyORUhR|IAduNz;O14E7n2ZfSChTCoVKU%i-VZCnJXPTEm?_S6C?bak{u ztN-eM13<5_{mC%$!71ORM1=%f?6jkb!9nDOYvDQMz7=y4U-8Nxe~J8X^pqDx_uDp6|yB41oUG;49^PQTi==4v|f#xZQzPV+Ps!s0uI^~R<} zV6H^;9oz3CpulA^z`1p|{)xPDR5HmoEsw?Fw9TO5#Q^cs39bqK$%}H@SH>dw7hfQ_J$(+7~ytywDR(k8Tumbj>!9nDo zJ8mb|q##xZ{|YN{K$QPLZ?++Az$3`Cde4*M+-`irAUI(zce@Aq=^j&W`87|uU}kgd z$~&Gq=kQh=ayB*mLr_o9j;~HWQ(_?5*%a+t+@q3&ymhoUM2hI6wQxzAOyf}6k6=A6 z`#oQp87}$Is6C%H8`6$*75kSJzKy0k8ac!kJRQ@xnoa4S*e-;}AR9+1l z$C2l5lZJyl+~_X0qWYcV6Y|~RoFOatbwk{r)q$|%y;EAztQmV~hdW;Du&hIUl@pXF zqei+%Mcj{-5&t0%UW@$G6cI^D%zv;J6(X|XhmNvSE2#gPi_TAIR=o(2>Z+A}GaO*a zgS^RxuK()qgMi%gxY3R;FZyP)l#TZjB>Va!vE$84BlrD4Q)Yz=>Zh&0ME<;hBF0B1 zrusMqH>)rO^61%Waa6GIVz@ZZ84e@l(=*j)mnx!W#~7|2=$1zPCaufQKcr^lLs7Nj z*g3f(z+k<|)N;!WmObmWPvG2*Uo!{}C~Jwb^9=y=eGzLt#~xrV70y?pk$+Eo%;}a{ z(o-y}dRfsK@!UTyKg{uPcfTzJ=<3GNe9^U%#Khj#25dj>g^fALIdS zi;V9HLmoheen%3|gano`{5E&T2dFlGLw{ag89(u8BfGG<3!V#>v!HQz#s1XHPYfbI zpxwFpnpZMty?I>8UAvH+`u+fpBP6AiBuPdIl_U{4Ird1|$;w_?*<|lMviIIAd*yN| zQd&qQ$qLz$(op=){qgOe&tG{zJ|8~Z&pqe7p1tu}OQ;KCozC^=x$a4Do3(K93s(AYA`E}aeWAJ3aA*AubqS^7 zAF!IBF5%5ff-=H<_b?XY@s~uOa1b3WO{)(CItM+Bh)!Wg7&kvzp(}tYVGUBKSD3V@ zNBgYp3TPic^vMQw3k9B=-}WO@!U7%&NtEYSf*c{5$x$7Qz5@O1L%> z|0*c@v$t|*{gLDowAL+RjzxV#G3DNxkO_C7&VKA^5b7L8IG9Jpb_QVMNBu=vQSWd? zvQ70O?trDNHB`=`?xD({lT`@WCGeLcE0gFS+Pg=o+(|M9IovN8El~$iIk~7)_Fy?~ zW$S;Aw7V7t*K|Hlw2Z+Irp)r#{Lb6C|N9C4^>#d;ggS}#CsIr<73yLmJhUyLsF(Qm zy$q<0b;TN1qz)6^#3J^qO5L&s*o#i;mNBYYe2AWnr^ZbT@ zY=2P6VboKU+@<-%cyAd#_S!{G8eM;KQ}JkckjLTyXEfU1NbSt`MZLXK!IvFTZ*l9I zZGA4IGsyoScarEXW>0IxK3WgNVy|0G5&gxc@dF2$JKZpcx1VV*pbq2S4o)eZdNuGM zxa$#%Z#Rrs+V@DWRUR{4`EeC1aroJE+gI@Z z&iZr5Cm83adV&je8_le$gw<=Duw8+&p=PMxc)-ZMeYPhEtN4DQp6ECxI%j`CgjY%RCPf5>2kjW>N__4+bf_>QG)wS%nkGD z)WUkx$+>RNc$_Tn$kneOch=uYM&Z|IiqGm%|MAlGc)M4fo>xf>UTr?W zT8o?QyU}AqQH)PId_O?LUki^&G-b>cCg3btXH(g@cIJzX!lo0eER3ilxh$$6ImY0D zWp%hq5*gO`$rVKI&(osYxyV(V^7v+3q4dw3;p}kE#}`2|lL0`zR5wxomXl`25cP2j5Zn z+rEVryGFgCgDpG5R2>q&)c?$SE}$5G9*-KbL; zDr`D-dg&avSi9e00re{P{922XkuU^)W#{~M71rX#tRw8f`wH>Q>DzUCM{1x@)`|Bg|}WW45Jfx4D*ca8nbmAS!3zt0mfTXXRE2|JP*wEv^R(`lLL zTvn0}zGC-r$4-x?{E9qTf%Cp89*(U!0VMVxxkz*`0a@QJvTPI3r1Vg}4)rg4-jVcn z(iPyZ6T5T_D{J7Ltv=(ix5+rIT@~lT$&8)*zhh8^?wq6=>SI=}9+moY&K-NvJDf#y zG7G^#NVh~7cAKj#i|A$62fbFEnNQO_si!HPZlqNwYO`k5|3s=jkf z0l>#1#h$36`Gc>xIR))=@NqU=*IuOHZuIklwOwgD@BcAa`K`%}9(6V^ zSceL@&3J$%79aV~sJE%!C6K1k5sigvadZh74C0;=QuZDny}-+B^>bUOziIlKyFnup zfMMN{({`xC>Hl)(-;AvdNUJkXFh@Pkhq>2(aGc4*d2aKx3tX##PKx;gZB40oSYSd| zti{ebINvdNHhA&b1Jvu}`7L^cEx`ixs6N;6el!P_^W|1!dBU)-xTH_)ok5%v})CHYsZ8?5+Y)Hgt z=u^yN)Cc`=u@QTU&at}MnHwU*L!!VD-4`e6YQD5*x(1J>{9w?kd;WX40ts-f8uPb*2GrV~7!Wq;T z^>>s>Sf{)Tj#3ZpmqDG;q0k#DOpmf~{u1ur@+H-9U-MXK1aAhu2bcDjx7^wPh0aGh z-63lwI;5u$QSU=X`9U(LP94!Bt=ud*diZ4+;5kEHNOVb$++Z&u$7lfAsAaba>XXiU z56h~akOp3x-9L#=sjkAgfp$|B>~`e$^?i)>_{GjX&DY;DaHmgWH0SSDLqW9}8JqbG zT%_ux$#3R_ou9vPbl+~bl?UpXmJg;Fr&OzA+AppiOh8>z=kD1XzMO$*KXdzKqHlUa zy(e>k8ST$2`Bof+I;T8?mz@qzNn`J>)}61CdW;;<{Lgb{HrU0BE=6pT_4u9|?RudU)s)sQ*f_DVx)CeG-cea-OQ&i*@tad_;9HKiQtqJB$xb*L;~5~yuDaT0yh zLx+Pz{?YgW$rG{XiB9UvyE1zyO?|M=>aoo}!92Xw`1w6M3y2-pXbgUfx~XY@B@_J_ zH9&D8byJij>ZhKl_@QB*iq{2tR%NbM!RDk_^f6bna5e)6i6`-~+t1&39A469@L528 zRe?)*=hbODP@q75$6j_0c5b|ln^g0{!v4iRBzmiBT~8m2CfS3xG6HMYQFk?T;8;)6 zBL!f3nmsjR^bs`qILt+R%@))g-}Og3rXFWC*@romC*#fsY(gAd(fQE7d{bQSvhYQE z=_eK%_qXTgjKeOj*FC1F(@KHoFP_^l0%g=~vhPr@71(;*Ssb$hv&D1=h;FMGw>WDz zy8arAQw-lk{nlfJdyF+(0mhx;IYW&)t}9&yl#(tc*ukE3r}&zB-1J*Jr^+!biPrQ5O67a_FS8R+uA3z;GLq+|WY&^gr|5g4_#PX>lh_zMc}8d?PS_F?=wJCZ`F$213}YMYcSXf*kvKCKU<@?dI_I`)ZX=oBaF)RrHiUgWP~W!HqiH7Qq!2KSl=#v6p%a$*xxI`^vIMq!$Hkr48t~CK zXYBsGipEFA!#x9kRKOCYg7CcL9GvRXyYmTaf!p)NCZJXv*_+#_hubj3HDX-oiTREe z9rQ+B++WS?6*GGcLAYEC8PUg;7>uoI%h3bg{Ve`fx(T>^j>>+MDIrj)J!t*00Ci|- zSig^lvV*SonO6-_H}{qk?S@5p1m3?O<8jcg0>)gUi@(;DgNI4~SvBm~+5c=X0RzVL z8OBjpmp;Agghz=nke7|9=|+8B>d3cE&E@*ozOd6}L}xd&@%R43&&r^qzVxZ-**N^} zVa7Mh0$iZYuaSi4?pE{1a`LY;gMH#6)aWxC?k_X3;GYzV2aku1U7st5zlv_|-@llH zuUS-4iKh8(KY!l|xUZnok?8ZrzkMeE>|zA=<}cse9@Oc*{>&o!YqK>N8qlsIdcF0O zMZL!=46zmA$2N~i?&FSS4<1Y!odZ0}hunyMug+#n!lOt_kfEE{AfwxWT%UmhR`-MO z;YqJsw++kTBHxXC>I1oWU-;C@b26{(`8gAiN5cQaCDi#{zTf*->SF*1)lOw4dcS@% z5+__aeZhf1pht9nX(UL5Og+88u8?1K>8StfFS@Rx zkLU^0chKc{_nTv>Zr-;pxHaH5xmoo>Mn3rI(y8!x#WKjh?s}d}HWwESJKp@}tJC)L zA4i>32}wQ<)EzeOkuWiS>W6t(8gM;9{oxoMce>gUKkQ1!)l8y8+`{a^SQY1m71yX~ ztg8gz#iN{T^%kF73nKq$CZaC!G&i|gtg#ffaQgVrBH7j~G^?Ge#2{u6R_tNM!%#_`0c zf#?}W21XY@u5|@XSV3JP>KYeTfBPJ^a2RyaME)fD#&jdX&R;97Fv^#7xRoe>D zLq0wFgDr>)eIBshav{3NyN+O^9eEny{p%MW&WX9;ox#b99l}hQdjmace&YSl9l_l_IiEEdSdoF%ZdDq$f*NwO5i%r7&g@#mX zsHePEN>5$OW{=(IoIdElF$?$X9jf^I+Y8%Dx8orC%7NeSGpuL1gG(zk;Z8Qz_^cE^kq9IV)rGtDJ!-#--?xb`N!z<0j}{2jv>!u#?|J81*G@&q>5<1?1wp z#gk($S!r(1H<*Oh!NNy~F0;1O=(lobJ8)ayD2(Vc8#%l_Fs~4er9UwxCpyg;zka^| zeqIK=Jv4J;KbsaF6{hx3OYnQ^9qWM2PXRbglmEe~@mvraUJ|tbi+ajUkd)-Qu`>P$ z?TVvHEQTZE51M5{b8+DTtIx0WrMKt%PQqbH9i79d@2n)&K=;Q<3+TQvXdpVzAynEA z%)SO<&nF)JzxRCIHGh2ns3QQ`PYlKDgrNN{R*%Wr_aaNPDsM(n|2ac@pQ+F*9dP}m z>;C(x4ft}xkJJ^)3-Cpe^D&&N7{0YH;4=@)#n~uuE$Mt*tePo`0CQ1`GM(EofnTzSP6B2yXRBP<#x|#Ya8z56Vs| zZqM(Sgo%^p5tFDl-FN?)cg?}iB3f0_xk>|Hpor1O^8P0Q*oBYjRz!bVp}F$4LfjZOxol@P1Jp_hmUYo5z)T4IMd)dULjWGf@=Rw;+*7x4n&*4s^Le#VF_kVH0QI8%Bi{~XDL|yAoid|{ixtyTL-a3sP^{v|# z)f%+9?!uqIrq~UgcWtCO)d^6yXJ2uwQ0}zx_I#4huykM}o#|r1NZi^4cu+_zY-^!?uO?zjF zY(`oXYn10zvqqh4pVuq%lNX)fSD}v+D?G9qD2Lpiha{BAPsHbhs^kHbA2YvpT{&|S#YTH=crlCFI1^#el2F#+qw%8Fm zRd)$G@OE>rU?b{mXKUTfuLpXVae+G|@oT_4&faZ0QRjv{#ZRuoHws`W=w`Fh&cz3_ zK3ErDxVt@H>@&19xttV)dfboKBGf%mZ$a;AXgks6eyVJq4pS_#>GpS3M4$W0oTJ_f zn-?gyzWKKYb-G2(rzO6-5-~&AO1b;1+R^a zsHr^8hq-FhSM<>Df5y|aMn}XQw&xpsh7*@n?*2htZ-F-PiMs~(fN9jrAve_bX8F1L zDfLXxugRiSGA z_WK|8C$qVy3)9f^|D}1(+5pY#zB9Qg_624r`(NKeKY#bGHmVcd@vUXdIsBapRxO&I z8G!oZyuHO1sgAUmz*T8ZE7T$XwAn@?Xmt^+SO=Ih5L2mguq%p3wN>&aVS@ zS=_UTMSb@8kNr}2efMJ=!4_=4OIn~h#bQkmsX8#kuBYjuUOV~Z-tu_SNSJFO{7RlS z2R`IG`J&V%2lxKSI=TMMcY8kS(AJ)ur6YRoQcVkL?_)!-fBEmyh_1U)%1jrnpD&hK zTyIJA-Os-0%;s291zaOD5+5j1;cnOT&-WtPvF}fk^$w%nJ6W9TFZO0tO#Onxi{O=d z{2*753(xN;2$%Wt^p9mjSH-m1eWa3l*l2p{EDJ)MIq`6!EiZ1LZo?>hx8 zvtCTvqrSW%yHNIV32Tr@VU!_@I`fadzTZ7&9tuLJ;49qOpZD`AG!aPECLEg58&O`i#0rN`L> zt!LwA#{~O2!UMMF=b#SsG{Ywb)Tz%fXNoMb3<9^GNl#RwUcC)Dg~qLmAy~=m22OPA z@9Nd}bQcPO1&u_WDAcdd%(Xu{`<38E$Yt12$3FM9!OY_Ro8Wl~=dIA9dK_D!+rNG% z7JibCZBSy!fS;tuYu;vL;~$vkb|oqWZqM(Sf<-oW#E9Pg3&-m@a&)&roWOiN(Y+5G zh^7jD?TvXUPwcya?!U-zZ{1j-HNl#^@r-w?|6vl=4XFW zFGOY98X|VD3CA@m}Q3ndm)ZpsKaj@+aVE0XMj0N+wc-SepqE8Ep9A;G5-sW zPexsSUTNx+md@8OUvzf53-$RgPoRWNtv2X;UEp~Jb^0$bFWhHNjfW~1j>ydMq{1zy zSsoY9EWGykzQ2^3!P~Dt>oj!i8$CvJ{LhnBl6G)K0#`Q48-A$gzweYD1=IHcK>F{T zCDHZw?NeP13Niv&OP@E2TXG@!rq;KhoTHdCY1d<0bl%aZ_+K^kkT|$vQY9xLP>-v+ zR8r8O{YIzDZ|bLuq`;FA6AE!hvhe(yUoLJe@5~pQhGtS^dThu8m{7PfOxrAlcfi(XI9NIRWo;uXUGQ#9cyVl{>1~dR0z=DM^1qHVe&2Otqa(nAqtfmY9uw9 z@W3!_HNePEm7{~!2aBuqlFSzq;547nTJZH`Sn!=AgXKXca>_)H9`y*>e*Om2Xg`!8 z_w}JkNI5M?Ey3Y~4Nm9u#j>J4EXng1UU~kYF*lN(a0ck5LNBIAyI~)uOzYH-<--T5 z2ZrrzMM2XG@t*t09hlgnGNlj}!WgW-EBmh3;TNu7Vv>qXgyA3Qns9?8cqa9fs-k2j zZdsZbt$k8i8uUDR{2*acyqP545p%{UN-994?BW zggf3~xjv=u4{{5fEG)~!fdEj`@qA181>-XP4(I!n!8il$?uW=RD5hdsZQ)3QcQKvG zTW*PvB_+`D#=8vsZFBzB_l}`E@BeAIcaMlO;T)_T9X34l#Sv?CUH;vUyaTROrJ$ek zVPHKaV-MjTgw0lo#ulLcUX!H}A-3pxF4tA<$}I`7!Q1>t2ssGCzt4+FD~e-oUD4ML zArE2qLz|WH<|JqfI)x456HrgmWAK`J1}<=C=`!iW&isyP*zOccu8O>bQx(M_<@*9b zFg@9l0df;A~gIPax%Rvl?k}#`YytohCV42q#Tm{oZe<1SA$pf~mbx zFV^|8;O`sSn1oG)PaJX;u=(ZN{nE*hpY{*KY)w2gWPN?uaXlSBLUM`PSSoD$`HxRS zjnF1x!d*C9;xTmoQxKR}@aiG_1+#Jqn({z&{zmkc72z;&X6$QeA$7sZ9{5vOB9Eam z=vkyQJr}ro`A%B+@p@<;GtaSmj2}CC#e7;4`3%?^#X|mzWH?uz?E3Fb98`Z~pSc>4 zjvET`Z;EH_%qN+Ft(RXNC;SGogFTlIlKFwyKeA7-htqIvUc)z?KM?c+6AZoI=O2=JWE-eDrhv>c#%X9OOW>Sj4C2ibMnUsM8#-$b*=9 zQ7=|8JIO@S5G2e(L1#==K?^bVw^rQsoOpMH-L4BvkJ#bzLR_c{&XN!S?h zjfeeI$CQp@C$7Xz!%rGo?X%hb;917`=Y%h@@Y&i+_^2o5R^+o0jGPHQGXFl&h7}PC ztxx%KsHf&1+(c>qRv&;sr+^R0ov=Ur3|<0+Nz!!b>l@ONh2B@!GbCrj1DRO2Oo=><%V7vSy7YUzYB+f@Ks4yCw5Q^YwKu*O8=`G!vDq~FY z9jo{q7zU3MzJ&}v#3y;dA7iNBd_p)E%2OPa)4&(_&b2iX z-i2Wh$E-_?Ehc}3MuHX!xa3C(-#j?(unQXzhee=NA<)` zA#bC2@4p1)!_nBCym7A_@oAW0EONx*egycN(4U)v{0$y4?%>!}Z*1XCo7H{fa1<7G z4J?Msfthyr;}-HbKJ}B6md&Vx8NE}F2$$msQ_Gashcws|SL4K`77qC$Zbu&$Pr?0P zRlZte*_l6%e*S`vo*~>0`?>FS#;^RrQgUuL;dih$moddD_+r0;$uAI&N0_+pgJuyM zta&)iiSRt$yykoIwwe{FpNpe@fm{y;Da@1dm@1%nFoO}kM>^+ixy_5|Fv+Un!|VV$ z4T8cN}ZOEc>B-02aE{bz7CNK@-9L6jH0a~HXP2tMED>tXus4wPEY{c!g~w{4%XsY zpSmw7grviz)aGhs?GSiKUM%D6^eu47Y8nQ~r5vl#g^gFaN94oe2 z=ZmA5hP#~==vFU>VmCymh6z{1|FhOeHMb8IdF+GkE#!;*r73^+Q->XMw_(dZ=28ts zS!Je=y4?bNuS?7okT-JoQ=^^FyL341x}I$^7X(j#2ZBodN%$y(nNpL=&V2MaQykTW zuOW{_)rC`y`kgU2_rj``a7i?O_<7!m(gh}T1@sbxPr~PEm=W#(nx*!g%tubi@Z1Mw z`aj~}vCq?4!YjEn=A3(fk2nBH>4t<`a$I8gO9Q%2t`7Dv=JXAOt9K>;-qc9Kvx8pF zjH>UhyCE5ZEO8B1?gS-8^7s0V#n;oe^(>tgwug+PW_S> zc=ThLhZ}h(jUu^w`Aubk-U(}YP2`^Nj+IY*TaX9mN{pHa{{;T#@!VsU0k1jy97{bB z0JYDQywd%ch_`ZXJ;DBa{=Ufd(z&NYiF}l&_u!E}7axqCMD)%$a#GTNY#BU1;DME} z6-Ix3`vxcL!WtauHGomN0`phorfh&`-%cNr1G1qX8_bZOVrM3FC3R5>`>e%LN;oQB zxwUkOMH#TpUrV61%MS`ZYd7^VNW{&vFDb_T_x;cL0)0jvsy@-0g1U6k(RWh)z;kAy z#RJG&`8IV*)+xmbGuR_MLW<@MDg;^)^Zw^f-;I;d5HnN3xUjL3S@QCcD zw}b5ze0DvMDLvg7lRcB+M7S-}c|-mbnK9Td_sQvLQ*wk4b-uuy0P~>5HQZ%(6xUurLf^cBu=!=?C zlq@mQ{`VF%$b(_q7fddydjZRsPdQhMT$r2@%fYjE z$c=e%qb(ef0kO z|N6cUw!N|Me1xSGxzf z-Ab>pyT#+xG%Y3f7k7UDv!eUl3_Ud@6;qI;#sB0N)(D`gIyHM0c{CX@(&khHw?N&* zDeFk&($L$0U7C&(q6o#o;mBH&eep-I*^o3#SuC*$K~P?0ojuPU=X^z%&gM zA=ifNVT8YasVg|HvtOI=Z3bN6%d0oNK=9~jnpsvA?07ivPF;^3dmlEYa2I(uADTJN zMm`e;orR{i2=_+*9jCq0^GqmnnuP9Qyb~ax%>Z$55(cG-Lro1 zIPJ{$orUC!jXI;q*Rj4=*M2oW5On?<%1k>q1@}_;Rt?9g0H5EL9E7){BKVS(QOp%1 zZN1@e1-Uyy)A0-Din?IT)Ye2XrxdzcT?>0&%m(fqcQqm$9>lv}*4>*0<1VDC_Z+Z; z9M{z@?@5hC`?ypdcuVfg&q3a4zn2K%^fa9E6oo2YU{#Ux58?IHEjrw|Fcc2LNfYM? zx97&5cXzwJy@7L!hsH-s)Qc8;|F!dwDmc|xx_g486b8Mp>eSIu#LiOa+xa$B;pZo; zO=39EIdGvT`BYD>p!ijCbH$UfI9u&OrJ4OZ^E=Qw<5G7e;r)mfU9@<4)dAdB3NFHt z`!n|ToLM)c6E^j8^(^84xQWP_eoC;#=9nf=!i;Jd71Y~n{E;0n!;BA?jZ5HP8|o2% z$z34cSBYy0xj>Q|NpHwN7F0HDp?VW#j=Wf&vd{@dy*QQ4MZykk92u~>Lp1vgihaV!m z4%}zekt^i!?TXH(;Fs1@AdTWU@`bAXkJ9!jX2ClWBcTuMjA5g%>e;7P?&FoUg;8(P z{=5F4gDjL`9zT#jv`=-o+^N+MJM7!!e*`&1wCk{--N_D{n$-D7ctpG6_lG}~b3;9v z-2B@c)$k6@r#;^+t^zwh*CUsCis4{C3H$95MNGc!f~TBS`l`nD zU~12KC87HK!Z&iDRIK*5)xf@;w(^}o&XL%cS5=H$7eLbT$dLu)9qHHo z+Zef%1!;r2>}VNp!KW#ta~ze?`16xJx#^5M^Tp=irF}izQRs7csPE|4jCj0D<#&c(B_OEXUN5m*iKO ze!H7S5|l`NAk9H;l2mO#lA=QvT)9UlKS-wp6@Gf|b$Stnb5QDU#SHFz{xq0_5Bbju z5Ux^@_tQ%>InkJ$-q%9HS4uaYB3aChz+ges5aBG9oU}DpSFpi&&M~br`qjWcKSZwR z1YH8Si>^@&a+gfVKDLKD^J2S58~wzPzjWY!>?<$SLE!!P?~2%ky0w0r2;v@@0xIdGhCnuecjvPcF-0`@20juBqdQ+J4^@23Wj z1J--A%27XAy5kT-l^(bkyQ?_;F~d{y8SbseiCIV}7RIZlG%hrjvX%YwbeV~rZz z2jTM1zKw)Kk@$Yb4>izh3Q!{e8(XsEoWPla+84evM%8 zQJ#T`aG$UbjJd4G`LNHgoa~&D|8(xey3#nA3bt~?m(mb9P~@7ykF)(1fnX@Tza{dZ z7SA*7c5%ys3ksgAK{}Uld*K}3MBxZrMDm!#(vO|{A02a$A@P1U;YA51T(jrp3jseE z@p;0H>eZD~9qG3Nr`cC)2|vp4>TS`7BlKufC||sK6`t8J7gwWI=bkhwa@|YIwiCX6|rI7_K4N zO{1f+GoNH09!)!FA_HYF)|Bi}0Ey?^Y>N2f3;mfb9Fz2$gUQ&ZO~<1AP$pnoV$ zRSWHV7F?3VL-ChE_Rk*f+L_Nf5Bnr(6Q0bX-+w2h+nsScZ1LD+Y##Ekl%BqJ7Z`U3 zhMG}Eg2=_9>@%L)=r#wnKJSY=k&k6q;?dQ1Q5}2L&i%*+IaygtCCvDQ0%kFNzeEr9 zb<+5|myK^_LDe!R)glXhT=Pd}c*bf7-ks^YWmWax{l9s5?Zw+Z!qd{U-%IlEx(+sU z<&-?(YE64U$?@q(jCZlTknpuSZ^)DDxLIJwOE{JZXDhgw&7faLqSnrQgL$YwE~7w& zT&{SPgw){HC@ghcXNej4T+$EVWj9-EKz2nZRkwZsugrV(#iPX&jPBboU#P2vd*8Ck zb8?GeQzY4}xw~?qHfP1+tqnnp+iZij3i(~vT1XB)6U>6v`;9a&c$?zU^rT$s`oZ|_ zD(`{YWIOYH=V7$R?Sq8x)j7LgAgIX*lQVEku|v++pRS)bREk4@`UQjC^2q!0JZ17@ zLEIC>b@%4jAopv`%UMx~j~`5fLKedRa=CJlYhRlZuTq~qv}E1 zd({GuUuUO&krsqM6ilp}E#0~QoHGwaSa|pdCoHAm8~xfq7@*ILH10=Un3v?S&FNzS zfPMXaBjJYK*qjRv8CJt;IR@DXKkWID(+~Vjj$%_eLDvS5Bc{XpVKP*L8{0F|{Cb?c z40p_6*=w>d3l2#OwUJL-;twJ@8BIR~;vz?XW@stz%c;Ls*`os7<+~v{H zSdQE>ZqBtU>G9^+Y?S>&!Y?~Zo!a$xz#ltmp*cr5X1&5xp?WlK;Pc$r;X&k?J-Ge_ zyJMmTngj0jxFXlAOpUkR;o@bmUl3%UL%!K5k2eluLz(ag!xY)-!d?6xy=DIig8+Og z;2O76+Rl8E1sF1ZQrHanXAfIv7w*oxV8JC1oaB*%X4(I)^j}OcIC0B#iP~lW|JHC< z*5S7`$mXAjxQ<-3BkT_FK%_26k2!E*FY?hYKI<3q`?McZB2id-ftd45a)1U=}`%O}gA!p5gf~0Nj9~THR zB~$3hD#5QV6{?SCWTNY`=OuIs4tVJub<*}VKRk@O(Cop)&ia$s0<_%FpddW97kSaz zEeTOzSCX`IBy!oP{z`L;9FG7NPHXpOlm_sGmCpStmlZLQZoWA+h1dzD>EoMV*n=J?Jrz!OLNAH~0vkntSeE0jKZ|o)f@MeYq6aT=S z`34Kng+jraaNV+sWHL;xVz9Z}h0}!ZCV%_Ul5Lj~V&F#5LVgx<-)eY8zb-jn#w2N(`zMh9W_U-Bky0xYYLL;HIyySxChvTH z+9demj~pH?{W!fd-**9~Ufmm)f_%9B-Jym;zTudt-!v^XS`WjDB-oSHW3c0YINlRp z++ij+U4I8>aBB6N0^!CvEgiPZc)$nv>F3qbFH`)ERJjxxeDdf<3`X{f| zJmCT_I;8_kMT_xY2D=>RX)@u3S1J{)b}sk=&5z~yKySR1u_lSbYG;1O0<2P_zbQ3> z)?54?1%iL+U;>WUrXC@;?)_H3X^4Xv_Qs+&r|R$ko=D{%YRzqr;ZSrk_k2P@b)y{wqG)k2O@{D$sUg+D9Pvll>tA8$znIo%OM}{e9E{o8<9W6MdvNIob4pLOO0||%EFVu_w{>vbs!%}Jb6s^b0 z(KNh2LmP^HA8`IdxO@Yrk_<0hb^xMg4D^K0xB6*fy5QF}jN;w#q?338+%27}Ydd=y zd%x9raca5{e;G?UEM$@a&oal|$oYB?S9~j=cr)T2{?9|{rQ+Iu>;H?;v0BV?Omuug_uU zsyd7Mk@uIL+wfSk>M*8%FG2Y)a{nGJ2sNG*%z*oCij-ipJDxll(iCvp4WGZx^yO9J z&U}MKxW&VuO}K#laV3=hoLzzI$-8BQ54d|#>Ul|G06O38piDS{qi>bh>kistXAArW z2ruyY>5J>HT5n?Nhs5{2LT=z`&Y)+9q^4S5_ib8Z(rB7#c>P&V{Oyf~kuZ7}Jji3W;j5;d{U14taA?SXuQ_rGL+(3Vub7Gk2gM@S^O0A` zecb%wlzKE4bG*%wa0`9g-iudqID?LTiU%S*>!EIl`cVJB^WX+us7pF>4B3AdNvyXY z!xZlUPiD(|=l(zP2cJ9{IfcB# zt4}LcI1>FpsnltP3+Dl`S?!VI6())3_6T54vRZTF-tU|fCsCpQoKq{dT ztq-18TwgXo`y9;6Y&_0>I19oqz4HAhQGiQlC7LqXr^74ekFI-oc;V6EcT3{GIO048 zv15a>JM+gEVGsNKp?>5hUZv@bF}N54@@hPrY>=Ngr(G5IIE*m3{d;GA3>K8; z#XxwBGH+8Y{XFck2U|*q370WH@5M-+kN`M&^X$eEj%fIS>8Qa$&jUdG$?>xL$Y~6d zxDeF8I~~UN-*vuF>Wz=)luoL?vBwWRyBk_F;<^3$v!c!(W5&YwoG2!iAK@!`m8ZyfA$o0Zqb(6e8)tZmH{F%y0kA5>8}5dIm6eb0GE zBHlQF{RgPt5#HqEM;oPBgD%E9F7fwwaTqL^^$1!#!HU%_yplSL{7K;>DpUj!9 z=+nxhzW6a^lV^EPZSZ8l*oEIu&>l(RpYIZk&&lTELOx~b72Xs620@@zh2EZUD$gBA zwvT@5izO8abCydtD-$ z{Ub3c&s}$+$OPA%44BMT z=Ho9pCJ6(*PVGTsUG#ZTLG{o-b}#2JRQ9;8|Q zxBqVmrnt3KWFaq;ZD8KF_iYT|kTYN<+{|BgVY%;mbg=@fO=iN+Jbu+Qlfm2$h_wEF zOE{X8n6my;c1DoRaAhvQCMd`i4A6|zxtO?-Oji+}3= z%#@{NfzLd3xKh{Qw*C5#FF}PnV#0*GS-4K`dhviS7X867itsn@PyV`~*>4XPC?4M> z9L}aLO`*?dKk&`C(hkDoRH8e7SiR#Wcx}J-=rma%t&Q% zWZ;ns-8`Mc-p~2s?|>u?MV=X+-F7L`YzmuWm4Y$!x56qXAw0#3P zp4*Rp*h{4_u?6ILrd8eSY(f3KpB%9pgzH&N$IolzDuC9TMFJlc`@^Q>PM9Fi0-R^B zDGVUzbGfEwZ5*aT5voUnHuQdYMw!4qk#!TCSEg^e&u(Y`C+jk#AR!SX9MDrY;$HD; zIibFrYzyIm)~OW9y|^zoA|a(h~1U~zbNFyV?m+taSq^}-H|SaUZad{G^4PYKUKFW{>BO_Xp( zi%-**SW=9MMC3{iRv>Sbd(F*{)`bjc7S(OEB6n0KGpP7dPYU!)+gyHWup~5;gPLJ zb;?t(15P8kQ~Jm&)lgz-)w-qwY9mexwj;MR&uX!^|06T#vlg4^MCU$x-zE8+2v32& zkGEcS2m0X=EESNnz21fokRS?c;$kA5U zUjn{ZDVe`F;ho+(d4omH_a1Q6b)X~M)1}OsA61VpVFx)gyz*DwVbq@0V?EyUA}sxq zjXq>K`1>Y}o}}w3@IgMXZp`@=_T&=s6M|qx=7!%~wjQ`tU%yI?mHd4!~`kd~OJNdnW@DevRTcu??Qq z;zbuXsN5bBe#D*;t54MTSwfzw*~R0l#rsoW*vVb{8gV~7mtrl#HCh|DIo~5{t++G4 zV;P>&9+~e$-YWL})(7n>J5Wa&a+`2hFVBI~9O=PWfQPdI;jgZ=*pzO$yMT=}O?Sd! z4c?NXiuP8(bcm7IA|I3h(j|~0&orMNP!`i6EQbRNCLm5e$gPouciFgIY>Q2X zT^GK#39tC!&m)*7gLmD;YkkU+jhJ`lldQmBtGBiY|CPy|K`%`w2%{qX)kZk5B>uF% zV;gq?*B;V`ga?~Q_Q1pEjS$G55hV3ME^HL%FpVXjGLRLfz4=$(9_lM+1t!@tfaSco z4UcD;cOs|HNZBveFiYl-&wb7en!c@yvt|FgW*xe-|DAOOZe4xdc^5gdHXk)k z^KJNILNDza_Ac9%&=Hlo z`BSM6XEf>d0wJz|P5hB3;oWuz>P9p0@c~j}O67@76PRo0K$;>*4v@Qi?&i4+{LY%z zPb?t`T1v!Q7o7LURjhB*<@QPAF`Ya!2Z!u--v295uOp+B@No@!$;ai^BEBvdz(U<76VfPs)dj+q*nd2@>6^JZ42BiDE4=d3{URjGY-tF!PQ zzi>-$zYS14-@GY%0e%0c9aJ@z?*QqH9C^asZ8bNl)uOh;czG!Q68`SE5Mzzp!`q{1RcP9Hi1h9T{}-)!Xh_Nh;A4)-jG^qsoom5N+n2C|B`3U3pkJW$ZsC+&|1&%K!$ zi@kueYp;kr@vz-_|F1xifK-(=e%__#m(fic+J*x1@lI}W!Wb3{nKFRW}G=)=8! z|K8ejNDNyq)1D_hV6ob!hO%^3tgF0di<3(X)>$s&@A7p-;_cogYat)FikgZ`JuwkZ zo(qd+lk>-m^6WNUbni2r5m=jvE@TTj^6*j z(2=XHmDYa?_!i*_Z~orO_9ZuHE!QqnBV1vf^0M@6XVkHUo-H3TYE~#VXD7S4<<;6Z zl$=`Fl8W!5E>XT|nh4`fq=OI3`{Ue>n?Ab_k>F=GjgPO?SpR>%PFbfAaT$7}tW$t^ z3@z)tNIYtkbskhaHEv2NRt;G{sd+eFsfG?4x~~bB_|epvS9K?Y$_c>Q)UDV_iP0|EmV_*)&KH4zSpKW@FPp4gPGAU0AhY5GOx& zRy7`ZzlL88G%DMBVBR&=+J9TMFy}tQmm|pWEl8?YBm7<`$MS2aJBZive$pho-lH#G z^-+7G{L? z*P9?0*LAP@buZ-Ma+!*a{n~1PtV53A?6(F;cVNASaBfA4eV*4M-}Yw1iL>qIgSc_m zQmO#@`>LfJbCL-;wi+}_kq1bcU=FXgyaIA+lV8zXB7EA)iIf|skW0IIgYxhZv_I7> zy!dPxLnEwspRcTx`2@bcCDwX?q#5SCIoHmKd|8>eMPb5~b?o`T=bG4rJ9v#WMj=Ob zOg8adIPzm7U-7S>MsBRn+1J9~wwj@DR&sU|a$zSZZ%Sq&54PcD%bhgTvn;LJ4B|rm z>;7YmjSt^7!G?(E#Z}0Ab=b{o`+KVe`X-!ta|L;>VvG6Yw~^zTJio5?$gKrm7tEmg zjNDe&1?^B>Bzj>k+lGM?~P6%`n^RZum8 z@J;O)Q_ss@LSMJ8vU&J>7wq+^ul>G-{vR{NwIj$YO?*1yMmVKX7D->_kx#0hrsQOn z_Xc|(X++oMG43c9W{=5_-6};zOtKl8jug_HDWCH%WnlzhN$#^L>_2HQHV?z zazKYIgqWz1|M|C4`f)6BKT9fK*#7b9fFvfu)P2bHwEFvZmGC^rzA^{zLyqS@YfbGZ z$nSJF&O91}+|I#!w-_H*KZbOilKi_!I$=)#u5Z=I<20_{ze$1|&a@ic2?tBm(RcaS zOmglGE~>|pJ9G-M_Cf#S>AvH+`v3orzigSMq>`1il!{7n@RFaIciDV~I8Hvn9 zk&%%^R(8fK=Vk9L8QCk5Ricd7?{VIrzP~Q-%jNyoxf}<{>%7kGdXK%v4?CM%ly~>8 zxtAeQ@AN@q(=sIKtM!oB&x{V2VCCtj;BA-EB_6WDUMw1mP94KhgOrG63+!VC$< z-rvM?UUS&3JiJqEiP)=rAv`cHOew=ZvCQ5++W=mzKGV(BbP777ura6)dz7iW))JPf zaNGlt$N8`~xmvKZhS-^WEPL6=3-%>HJGi+&ecz7LIz4@m411DoUD#oL*pa+B?DCqy zqXG>D*ICW#RG{rMsxOFr$oIZ_-GcGuxMl7IvE9Dyc#qkxiXcPS6D?)kIt%-cyLivV z(UU5Xp=Q_ZpRn)fUl7?}fx*u~Qh)9+M+I)WPkDt7b{zMaZ`}xm{YF`*bep}f+nDf@ zZ;0Nb5>eRZeL7&5QHmjAR8V3LrMg~WX@MQa8+_c-2=*5z>W+_=u$7~T`BAAYu(#On z6_&b8twbIyI)U!3@O^h+@PzWgIi&ymoL=`-1^!0i>GWsVP0XmZN?(D`TYdPCr`66B zRLZ>fB%??J{=*b`GP3xqYs| zzM&`DDN3bQA<~eeh6n5y9^}}PN$eK3=e`QDDXYZgycnJlJB1M`8VS{;3PfQt|NIVi z35O>P&og^eBf*@MsLK2AB>H6>bwE6XNZeuDdrw9~HJ6<}BJtZLbE zEbIv?rbNcBQmc{d`pJu}W!32A+=@&!>;#%@ym7t_`+$Q%HT~VN3uu1FF#S_x1+qH8 z&Q#p=359g7aWccs-_UjK{3_V_GZTEIKQ*zvoV zX%@8`_WR0QgSRn~YEgWkyQnAZ^ZoGMZdWrki|+j7=cs`_zO+x|MitoM`<833UvsDu zalG=BnTFjxo(IaDj2^W}_7n$s%SqV9(EQwfANKT$&reADHdf=>cXbRiVLz|bc4X^0 z*vP*u|X}KTGV_8Hg}f5W98H+8sU;8y${>)EBd zC#n!fxy1QXuq!u~GBdF3UXO-cp1g1tsz(8To{4LGm_@szw_UHhQH!S~Nc`Dm+KNBZ ztu*`yyKu}E*GuJKcS-Z}+(Rn09(v&7*gdfKw)tktW@6{f==*E;|MuO~m2`<+w|0^8 zWAm`*cGT0j_4)aaC`mlhe8ar~4GsQoc>z0Zz8yk4pTRzxZqMBz7uaR1470dm2zzW- z4tYCno~S~)d=gbE&?EiSQOf&6Z9wsF951!OzS`EuI@c!sX3<%}q82&WQeT1*~|XsGY_g&EjIOR-zrLF}Q4XYX0!fE_gXa#x{F z*gtEsH9fTzcF$ghSblv_k%!`3cNwlw8&SM@pGqO@nQ^$x#xui?*$FAxGbONJCSDrS zc@%cbB;_8`eTTg=-6u0W80?fqY{T9DxHqApKoY+J?2y%PE6x-9V}}P)xy@jA%&Xu$ zYZ2^?X$Q@Oe#oyzna8^gXTehxj24t-CN(3&WQFX0*biG+=PSJfyJ4Ike1w=`FYL9l z;0ssS2|GNkphpXa4q4Hn%7G$VkHrzMTj3m<*&z*#Qtu7`n9SxdB zJj!E(ABR0H{%ii0Utvcp(WNEX4)(J$H6*5KNv&u|B<-G?UJKe^mgK_6Ka1=?YgN6v z-iZ6OFn;WrXvEL`7G^#P`&Zv~JZIh6m4P;VKBTOnRzzYulivWlRsrb^>%^WFRZ-mf zV`d}X5jEUp2m4jegDcw|Giy-R`eufGV(I9kw_nGadn=0X6xUuBX+^pB%T(-WX3>F5 z8&TzSO}NC4!%_AJ8}SxCddsBN8l+hr@v8%NroLpf^HcFwBl*OMKWXxH@Oy5aXdeB|(G=9He>sJY)P~}>JJHs?hT|grPVm6) z)7X#4u0F8$RKOS!IcnK}_w8HA8s?})Y0WO?`FK`66_%bhXhcUU>qv5J#l26+J+35rQyy`8#>r< zrjgh+%Dk3*$QbsF!Xkbs<-(59p{r@WE8wR`#RhZdw8kUddDVqA)Q$|jufgnR8#;UB zr`8JW5!GsU3VFZ|kwT%_d@1Y?b+aX}QhmU^*DuVRhUe_+Y%^Im+~K&g{ZX2*CuGC3 zQ&9zWgl6hk^j%>;=;dY8n-7HQaBhWtzc^tp$V{wgVz*W_8c2?KLjyZNl>J5N+OPvu z@a*N7BkcdE?9o1_4!b`;4Nt}`z}}A@hx_2+_qAxJwC$Gbu;KlIJ7&bzq;ztU|=>FYNLNN^>i3pbkX&derJS z?Cy-M?qB(DZ^u$MPYQN+9MIYgnLjo79+FU1H0%Kp*hja8vwMQQ8;K)7yDMLr;K%|;m zioCFMvx{A42eEHsC^DD00lPN$4@exVgMVMHUlpr&h8>&i^P9S#9DRz8bNn@-A$20s zrE6|3uus#wHARWorFr^VTE!jqXt0gbu^@V+vAm-gKQ*IdJ2KMwnspvBz zNeQ?TyD8nAH{TL_DME`zLBviv*-dy%xn898B$$@W)3Y9rf2x z7xECJ)%Xm%Ae=k;uP4DC$QYj;Uo-50=vsLs^IWRH|Lmq*+gn$QhIIsA^q4-w+iP}3 zt-E)jq2r{be%SMvzC&#$c0Ba<20nNI`yD7OwVDBTI|N#)`h8)q!}j!x&rt2+nqh9X z>v$KUm=EQZ!4AhRo!bf|%Ndl~+ExB?whdqQ*_scMod z&jA-Oz$(b5_a>ta!zT&u7%>@IWg}y zk@)?uY~NSizrgod7Q>4ta9(lyTg9+b@kqtd!4kFOl37ws&9F=HfhFwkGw)i&1rOk# zg&m5*-rxl~$`>?Lx?gVgQy2Qgw4HKWkofw|8c6E2_G6QzC83E_8;D~ zICLw)?!)cMntgP#-H23L7%l?44yOkPRDEI3;V1oz)@=ds9GTJT@W?bX$7oOAJRjvWPfB*7L=_la&H`!$dH|~em?Xt0* zx#0MJUk+0{^1KFF84AU20=K`w$XkJmdJ(1l>b(Qt@^gG(w<0`#6m{t9Pk0WWu9Zh6 z+p8FFF~9p@!M+A{v)i5hjCF$9ZVVmPoF`oJDwdJeXb6x0YuI;i3GSM0OmjL87$xwM)UbA1+rtN~QK9S+hMaI>E1J5sU~W+e;vT=|MWlHF|J$$JdnOD1{rA;D)(KM61X(Dp1&!ii4{j1UO{A3jajS)UeM zc$cp2F~;D*<2DJQhrxmWvF#D_I^Ks!eeAd(IPWiPns-No?_M$L7;q0<_r|ulP4|u! z;AetluXn~(qpcoe?Z0g@@y8a-^CZ$&>~)swY~Z0Ycefc|0|$MEu_T=V{PVB!{PN4- z8mtE!j)#MH9%XuQp$eSyO>c5e&{E(y>1V&q82XT6-C2IZFITtd8zJ2C4fOb}40z?D zQuCFTq-sP%n|(SKeDXhks#4deUlB#WQYRSv@x3vp+kLwfW#Oi59_;k8{m8@Y!_!D`!`qu*Ir)MYPPywhM>yf4{3)fK;Df9G zMF*17s?f2^c3YUwXX7M=iL4Fxek41*SJ(l(Z;vkBK*ISxLXYAJ-#g~C$4d$QY&`a9 zj|xBBkI>KxpGySCd-~Vfkqx{b#qZ~f+Xqf}y-)cr3-Gyz)mU^0mpf^$Eno~h?p8(- zyKZo}-*LaqIMthtmzSLIU#IpX%A4iN9PqVsS(nAmfvf$%bap%8X_wd;_x%M&dm?Dw zhw!skjV?W^1~;3+Z3_EQ14#DZf$KcrVmI_Z|4De*EQ3FG5DxYSzoe&&;9r{<{ZS>{ zYftZl-#Vr_xWm3>Nvit*qMS{&xC)+iu1|9p;aER^MCU~K)e4n|rR%`0rdcp$_+DR$ zOq*2LR^H~|oD|-Kb$kFBo*H>#4i0s=u>PA6@TWB#O#KOW+Kb=!XrypD{$zEPg>a@f zesXfAfG>UL?p6sZbpQ!A9(#QS{AdA{KZArDomp)4i14C=-uug_f)o9a+AZR4U5SFu z^CjDZ3vKh{;&U4CMg>dCQn!Qq%nix@NY@m6oa&@ghR`_+gsd)u?|flM58c5k;a_O~ zW_|FS51ilDMCSocXt+#Iwn9Ie9<&vCSU!am%9b~UT6W@2Tdw?g4=%I7-Tk5+;4v>& zCAHXt!`!2Hl|)M!M20=5mIPhFdykz;@P1NB3V6{&2~n@;+y9hqEn3bkfdOpuQt_ z>2{pU!~19y%BcoJa9if(TP1LWUG?^85Popsl8F%E2FDe;UhDubxb)+({7!I!owtRl zd0T-GEOOar!+i)DW*8ir0{{1W)>eH7aDVI5By0)q_x6Jq1G-EJIPcKs?$-n5$grNL z{xZ0}BI%Dd)5gR5W5@S0TY}qr(M#%QCwRSge<|1#PVe4r+NAFMINZCX?Fl2eyrsn@ z5B;#m&FxuaAgyFgUrFd zwZ3=OorW}wNW(jg2I2c{m3)467+l*&ilf`NfM>hM`&0`(IJTM07LE_WuMING{lX7! zt(jZk`i8(TGURT5mgO*rSXS+nB!<4B#}=IWghOjex8a@+{;Vo~aJ&KB+4*tD!`4Fi zxczM62a+rtrzSpn6Fk{L@859`!I4$#$lxLTSUa2j7K!>V@a&(f2|aJikdtt+fetva zzD5#`R0H@pgT~Gdf&;5~vXreF{MQEFgVBWh+Q{|Mz*aOAXAKz9BAizMk4zQ_-_`BB zHPs!SlbT_sCH&TXIt$7y;I>xydn6HF>ml2@n@!-fCSMqzCVbX0HhBf4pN|`fhGkOY z;5gn*LlV2;`%T?ki||%UbmO!MXZ27;gzr1>Rn>oYz9d}Lo8n|qb@1daWpWi$ad<8- zKCPnwyj1#@uhWE+T4vHYLHMX^Ta0seyZhpkTUd(-4|P}R*DD8I@^QIXg^M&paDCS) zNA`hpYNcm!tfEc#q3A|;gVL@#(pF`(zb6mdY*zqD!0gIPWYo4((h93!5y_$X6Yaajv$Xq+uI3O z6d%tuCp^(vwV{WEBYKp9(_5T+CU?S#Bw@r0X$G- zP^#=G@(rXqS6;&ZEDX~zHnFkBr7zwL>;vyJIcCG$F+3l?(Is(o+AX&pvRl=zhpplXxd`f}g z@A-sFDQbLp=PU3iwG%}PxWJ+0pye>&1Ap>|dV>^|Is!jm>^2d;Wb}Q#Q{^d>NPJ1e zkMJbzj@@*j14lCV=MRpn;71-3iBYluH?rZl7->Ub6nRLld;SF%(jvT+cLO}gnqP{? z2nTZE_RVLR;6J|7zxVhPxQ}VR-;7s1^6_=N<_Af36p^m9p7#OIF^TWOUczxKGyNDx z_>JSNyiZ2JZ5(oba7pPo95-LHbKE%}KX!n=nZ|Gw4Oy9$t%AdNPgFYN9{7vl<*81D zyI6iOhrtfK#fwQ_eL28cG+Ab^I|_dvuC5jOZ9u2!QQUeD7QWEgR5tSxa1-wq1so&1 zL|HDDjeX!G?&Eabu?Kv_-k&ch6W}7sr>I5K#E&A`Hnz>l;2!#|&~&fMg2PZPewc6$ z-<+=xjs)NE+zFpLb8rpw9n5993D3~vb~A|rA14bdUq5(-6Lvm}3g8rqiOGi&KB1ye zN4y-kghIj!l8o>^<~4zyd)43&GVQytg$g~dpe?m}9h|{rrCWlb;0rQ#M4J%hy%Ns@ z2e7JurCSC3zo5-;E&IX!lZfFP-Vhi=f-n<62d-bdvlZHPY1j{XGNaBR5XSRS3YnO9-ndByI8{ElXeTeP566ReHT``!QIPO zQ|{*mZ}0q^jLTzi_TIWHuu~1j;O~(|Tmd+GmnAlxnFK#?1z&6++`R39CEotwQSfzH z4SV~g5Uq|$N?Ua2;o2O}pKZ90A=$#vemn5*bk1e@DQAJZ#&j`)@a`_tE{c?b-*MJr z$}0tYyGu)4?3|Q5{Pvo#BTYP9-wE~69pKjO-?+D!4qjcc)f0EZsbk|l5E%M=dS zlRG!3InxP_oSPsMAI;DhieEPEC7igN(w1a@@Zpql8W7>a$z3>^YzQ9Q{l(vNso=on z+}>5lWS564PM8TSjkHkOz2dA4j(wCLFeNxx-I0!C%8^6sXqlKF2^| z*BUyRhYRoR8>EpPM-*E6v_0Udt!ht9(u1S+9*xh|f}f_)ZEYC^Zra?tGgcWa1?bl> z{XHFcJ)x1@?yzAnj$|E5w_gMYZ6Nb%bEx11x+drBM!08_rBQ0CyAsjacabR(;GAW< z|5bVPI~SL*wx1<=j3bbX514>oCaAr82jP~LWj(GSyfWQgER|Gn${eKKSP7quhTcx7 z5L~iDO(L(Tad5ttxg&%-#*?@W!@(OHP`$s0aK$gU##|*u@MHYn6r-ilg;3X zHOU{^SjXY|*taBI0x#?qSBr!(IAP?60lx_!Y-(P1U}-Rl~We)S5lIT)(nHh#K7HZ*mU|Z z4SfD&FCFnr09R{Dh2O#%Jgx1<9KwX7wOqq+`^e%uB>Hip<*i;WlKv}=-2gAE@ll>H zNp=FfKzmEV!?NU9t(5`?%SPZ+65(I9Y>jsJ1NZ9LgC!@GwH#ERYJII6oGW)J#blBp zoX;=(HQ`uY$Cw@ye$`{r*^NAKtETy5FD`&rR>ZmI1I1HbiTP>Tmm2JNLIXJD!5R3iOl&H;6bgH{9@n0C(uyA zqT(ocPo*EO7bM7yBgurI(~(;{@#6B_abIwq{zORd7=q`dpwdS}I8NWKWxrDg;p6Pg znrnx_pXay(HP_Fc=OW-2e z>+>vzFpMMpY~E9ZgS2L)8EpXmk(%-GWFF@%bd{2_Z~?rdI|IU7Y2e=x!O6!jE`n!7 zQ@npO;TSy&j3|*K{32tsd&xi2kbmG(1mP7apJSpUoTB=?dJ(F@B%*w#ArTId^{S%+ zxgT6ozD2ogaECbKKedT~H*{eE-Lw=0GwuCR_ED##90sp>|K2%#XfFG3kiK;pb zZcyc;y{rqLJMira=*4$%f)@NQEINV@B%f||k8pvcS8|j#;^5HsR-lQsykFRJgv=yU!6m&IQKd#NqpJeV44w z55aw#(zmZUsPgnJ`?MYM`W@EekqC~T(z*JkMfZwCgR%{;@y z>Hu(TKIeNL3I)F=gyW4rFSs>bb6@WhUJX)L`$Uq3=YYw4(S%2{e6XuF2^<=wxv8y$ zKXd!+X&y^(XNrV^_uGRvvsrB^hHz#+#rOo$7=A_X^_f|4R5CLwXh}ox`D96>5Kc-}m{v96qmZUVy9pOX>dw_$gom;o z>D{LT4vM63;we7xPu$+)GbGX!8d4A9_zk{^MA(*J-0*wQFBPGOglB^Bh5o$>j)|X) zrR8bxOMWiJ3-1KCWH;q=cr%R#$^tWXNGo;Y3^^_|{)aK8k@KV&6(LmIrRgZd;Kv zm%$4${>|x^08R*x^*TL`A)F7h_)It;Bh}NJ2>&C7F6j>8e%wA_tj-JG$Lr=&`w(zG z!Q#Rk_Q}T#4b(v9Wv?PX$ZH2UQ3>t@H*`CKhf%f(@|*mDfSik9J=9N zzrKLWahdVe^m^PBich|sZ2<1Z{j}`OSK#+p=dQ3ngtL(%@}tQCe2u72EJy6X)kxU2 z=bH7`bX-&R(l`}|Vdj6MiGOqC-FC}~oh7Y59go{zr^f`SUJdDDkK3!&T zFiyNNw4oWALLQyzu4llx_@47O=?3@~-c2-jkVnd8Yz;8`44|Feg1EOhn+H0Oz= zXdpHLJPB7x`mB@SNU&`wx?cf)1jky;OKWf=WQ4DMHUuvM zamSWY(RVcDPkB#x5UEBkwuA$*gHy1a@E^jixV|IYhk<8SBBJ0u_^IE2X9vzhbAs^w z4TJB9#3*RO1dhW^sk3eT;5Ud%$)3LfZo}4ji@GWB8VYG!PiBDAumG7&Xh5(iD5ipP9#4d0VJ_dbI90dP zgHxb$a+R0x3Hr4L?hr14U3n$eD;Hs4~0 z-w(E>SOt&8j-ct}58ns}pw^#bwGR6Kdh;6@$D#WV;P2b0gWkVzpwNIub{dhYB-@Cd zKiHg_762VT3;$&IIQ0AXk4JE6LAS4^=*^c1z5YYSZI*kX(=Xa@eVSxAjVQK*fkcO2 z7<9La=TVH#}vMTPwZ$$ zErU*dGWpqPCiLl?5(zi?p-Uf}XcQ%S^eS2@+fwMzw`^=T-x!=mL$;guKZ4g`^S=2J z1<;p^&vEX}hps%(bNc)y=*j;WdTt(Y3r86{`1W6fe%xXA<*QUGd>vqvjp)MzFt1^v z3%{@NB#P+4C6(vxi4Ob$XIn{k^h>lwa$Zgwx^EdB$tn`OzeqB@^ONYhKj&Osu7THc zKl=8*COYn+C%;}0{kHe5LtF>(7ijA3p|g|FYwy(V=qJg-amW6CA$n{)J7sYaI_%&5 zH*yT1zvj#tZ6~_xW4w*-UC>)|wze8mp|dWyD=bSgoI!$;)Q3bz?JHd8L-feT|#DWAC> z=;8k$5A73if07Pevh!V~*7%oiafi9nLo}2bBzxI&Ld1F!tz>-KNrKKe)ADVeAoRs= z9-WpCgRXd~n8DE?Aq4TLXQq?Ry~W+>9Huu0XHfiw`}bR+6Q;Eg(6E6%c;#?pE71kB zN50i1dSJ8gyC(h60duk)Ra>1;#D7RBf2UI6<9uqDP4vA-xx`zDt~Z@TzlZ2~<-)mH zh>rKYs-MSU=y%P^{RYFJ+s&z!nOPV3fjnxfYk$UrPe~K!;OsGsWVJ58%7hM=DzS<8 zS4kdfGK?Bpg6@`H`;d8)dLrKW!`qIEejvd`S_7h|WfYGnB0AcuEc~%VKYJ|da5~Y= zHaa)Y^+PW!Nq$rc;cjgdurc1lCCRL#?J@VP0 zouSSL&6)eSN^rfw0|#nTHgGsDDgM`M=tXx5t$iUn(ZQXi)kGiqoLAk1=t7t7{84&m z`~*cVoslep4s_|P_C6AHo`ywaHKOw@8l!V1`cB3lgZf0*`PcJZBhhni8o+E%(|RMT zzbVnP&~KVYli>a7A4pcSp}Yn9%zXK}>^0~zLm#pW&p?j}ozGpO!|awS8~q0TrKsuO zu+Pw4-cmiHLK2)s9zG5FL{~Ye6&ypA?0HR;y-_YA^)6$Bc8LIko6M99-EvY<<&?yc-zjdez`ouU- z&eJ3hI3K0aiRcgWllYzy-65x4hB46_ijt84(HTC>*gIPRePP|c<_#~}c-*a_`yDAB zjyuEAN_2z9YR8MKp%?T%(lD9)p%oWknquyOexYuBT$TQw3;JC5k>eNifQH3ebxD+2 zG-Q&!v+dD0^yPku7}5C+uO&(lecz1_J$^*j$4bAv90@(&YVLf;HR$+u^sii}4#M@- zdzurSUasM}8KTb{XKMaPba|+Mz>Vnf%*Cqg%%Q{McC5c~4Ej6L3A$1$JRfZ6s@6~R zb)UF528phY(|Wv@=;?0Qs;%5VpO5%oc)9MqV2@5do$&OkdyU`V%AcTtF3!;NTZtWX zaU*-|2YsN26VVJA_+|^wOU(@A6aCv~pM*T3dwcmya6lb;x4t2}<#jZNJWQrGbyL2f z_s&U6g3z&1xeoIEG=R?wsV$J`*0z5Qu~~y&?a}q=?r`YTBzm{2Zy3xWN)!3u@wRX9 z^H{p07W%XH$EsgeG~l_`98n#jH_M+5vp1reBA;}fw|dZ*iBX*uNFH-2{@hq2(T`cX zz3(QvF)bP1I-(a_)|N0JIx$Vrx^2bKhuII>$;3hzb}X?#iW&#UaW5t3EPO-P&SlGz`dafdhb1Dt=S{`@0xW7WLm73RcfatVN zs|LN_5NO3$JR+E{T+K%%RVUr^p~w256gnIS9aep4lGMf^9GCp`&LVVHr_I>Ln4zy4 zc)GoVw7C`EzT@a9(Nnb_*sjifNEXE}{rzPC{Zv+4XfVyn93tU)(W}r$y|3~vq{90w zSKm9ICVHsVekm=YgDRhR={CtEh^`kW?no|*#EE|C|NoKALT4=*ci(}2>A=EdC#}Cc zIWtsbis+b(X;ktl_*3k%+@oh1{8>0dyD96pmzw10&a>y@+F@^F-`fkXv+t7m!cR8K z^}>Fp^9^|eD|KunpVzt{I;S{C3DJ+LAMlxOi}D<03SOO-_Dv-`6NT>c*a-9b_`kl3 zl#PObK%`IhPjT|1FJr(WazCjBK@SgN&4iUEy=%9`@Y#hJ0u=kvJeinM&|LVjA$AW*?55Het@ISs2x-0>YB3GVuI&9qwX-W<=|ZJZ+kyEfa5pkBB~7@WFs5?j{30X{D0@qL$9?SaKu61 zrL=P6Ky#%oHWilkj_ABj-Fv^|_SkLm$$~vn(Wk{13<~pbKmOO4_rg`| zmSU!eJM?31$ILxF@50{cr4=SO=*Tn%S)XHF*RU8`smi<1lWqP>Uc6bDi!E& z;*CS2FRNE_5bwD#4{!Utf7f4ta=x@{h(m7{e4OTdZ_0IS$BU~0M0a+~)An(A_X%t= zv_GZ@`m>4$Qqx9qYS`C>m9S41uy<`(Lv?!%d%HRBO3%U1^S-6M7qP6H7(?r5(AKZj z=ygxKr1{f4yaAd2=Ck^QoBkSP3C_qx!sR-0T}8S7&i@gyU;O@68oITI2}dt;%uA3@ zy=4j{`ZZg25yjMEZ*t9B=||kqu?3+^SK)>=`AnD~lwIH^B zrz$4(Q)ron=!sTh%8w{!I@jI=G*@Dm%o&y~uw0CW^P9hl97=-`#@mkBA~k!DrH) zxTEmGh-QWZdA5?|`ULv8*8+1aH@0bF9L1Z?3+PuPHX9y3Gu{IH%H=M9$Gv2{OtIVz z(d8pW*4#T&QvY}UB6MKY<$M)%bd7s6*q(|jVPCqw&c;AbH-G87aO~e;%qw!pDjB-E zE!-ZOclYRF5AMdF-M_aJywBao$0O~@ZuU>lwRC+%d3LR5bJXGQUw-*SGW2$qCy$f3 z1`6<<=En=#T}yBw{SQXw_^s?`l*ln*!J0(xr#zuK ztMcO(*-@u6SsuE-%H-XO=cKNXOGXy6=%N4nD*Spkk5(aWt}89WwY?ZGYF&6_+fsnI zb9u~#(m(t=KN(dp*_OtRmLOl9_=C^f46xAWC1FG-nD(jd0qZ^&OfKTCgD>=gN)FEN z(4Q;V^HROeM(75OnZAliDVt;a_!2c_pL?H8fMD2th|-(vhNTZNw49BnwVsR(xz z3<)y7QG{lnpZV|npOAPxrvCss!{i-0@)M`!Frm)he~8{t>dl@& zzhkyolBGJ|7U&MYVa)BEsv?++pK=q?A9BtZoAhyA!yJ`+=GCD?bm&`NpBCLgrnl}c zYKI8bGGfx;rZiyCI&6<>(6v6>b5^?yWj&ie}XX{G-=e<`vl=C>1qUh(>da}!lv z2P@_>+DCMY**hNHrmb+otUd2(Uxj|L|I=%Mv6>s0C-Zwrvo{^MY>L~o(WkrQiY5hs^wdr7$ROlMv=VAP`Q8B(>R`J4{!H>8mMPfoirw}pGgrZaNssGN8 zBWd~&p+M*!x4IqHd6gtg?!M3hLH-=d+I0B2bB2|CCVOH162tBkmv7po`pSd~@thiZ*sE-^(`;`p6?0A8GX%OK>eMp-*(YAMt^* zvLfN8LKOWD52Bq&`FDN_vN@U_RSf+k51X@(bB8KfaK%%A=qUg9|7T?0GWOR)&{K-= zc=1IhoFso4c22E;uCi$*yhini1$ngmdG2=TEBUH?Ja`$dV?Ke(FZ`ghtfldOe3@k7 zRUr$azdhN|Yi{Z=pY4+&;}X+1L%eckCohd1^qut)@1k!Ul_w`rj(X5Q=Xs0y4YN}4 zLu@1BW&Qy4p3}$K<(?flN8UTl$+R81PZzywV|Y6mufFBWwWlZ#kBFDoZ}?M$#N7YX zyopQvcm2>qGBe7VnU6EgCJotLnvYhs&fpdT&h*rK;&_zBn2mp-sQ znTvn4ih8|My%-&A^gVI3JK^8;m!tiX^s7W)8ragiO-K16`KCs~X`(aTYa~F54R*yI ztaj+oLvNZBQ>XfuUlThKEp(jdPPZtMY$AM&$Xq6lw?d&m%^zd*?@YD8W|C%@x}Zbd zJsLM`IrRzO|NM5J*0x-Hw&(1Uaa1uH`Z1QG#~J_c`pc2N<}Mx^=q)!V4uASmZGr8% z<6}zns@CGa+o;t~vGA>BTSX~lIOncus%73~GAFOLsxoi%K*w5{b!j2RSU z9{W9QQO_95DG4*U3O#GBI7=;?bt%rz9%NxH1MlZ$u1vofC`Qs--LHHJi1~N@6^NR! zn)3;I*Av{=7coP$U+7qn_U2JEnwqVP*Qaqu8m*3Mo8^8W6=5F_{ z5_ny}%_{fj)xYbnKyM?be|*!aK-Kh$>R$}3$fvzV)`)(#?IlAG&DY1+oxeYpd7-0? z(wDxly5%;R_QlIQKHqjc@lnfBTFDFKz>P26&!DT_-MO%0m~MpC`$aj7LtlGbqoy>` z0LLvNtS@#3X5rk;dnXt)N)Q`uPQU%Fm;bK65?LEpf18E=miNFEoAfSo471NVSqUBP zi}=`yjuKlHc}(UF-iByMAvXcuCDF89wJM~c*_BR2YI{M$?DbAQ*!vwS^f zL>?~;E9HewcbQjR3SLIy+?pklswVJ$$2iUSF}D&FDtSq8xcB+L>#szyhc;C=L&qDC zoRq8i+X(xX9w{#bJ?}A5r!%T@zGPwHfPs4GdIvKvxw(XyVy(ZnM$1CqOL_A3qrm=0 z*ezMwx>D$Tlh4jQ6$rhA*>MTnXNKPQ)YT(D)A%TO%=`rH9eB>!{7cMDz`l}F+M(=xH=z*^Orgy@Tg$xOyY|tz!TAz8+PGMSDx}4(N&?vu4!Ed>X#AhASB{@b2#nl zCGzxv<`|+=wrOJCFY+LO%oJoHZ(CN0^N_BU6>Aw_nq`d|M7PX$s*(5U%PUx5T!d2- z^vln`m9ZxA-6k{BPOiRyj@fqK?u%7v6#V)(C+VEKDfkxKvCwy4OTZJIddCJ1`yH=Fiyv45uEWybk#1s~tx-v(CB z`VYhThc`XlBrEgp>tBOen3%i#I+N;>BYFRzeKtXdCM!F`ePd#@xVDNo3UlQcPP zp`W&vG#`JXsD^Ec(en8M9ksivqp6_CL+o=uM@n^M1+tx6mEC7;geBYO|4N3gI{aWK zQeLItJ1*D0eE;Vy{_BS8>z08Mv~yXnkWSD7|L@m7=&otolfQj}?)rxLg*%)XTI3L| z=HEnrJx8+C`hE5>`RR+sADkOixc+ES`+&{J??kS_F4hcs_4h5fa__dT*=E)(!^+k6;_CjdsraZ&BFwIsb->=Dj9QUMVi< zlGzjPaj8OguJ#!ht-D)>%L-qyR^Aqa-#)5A|JSbs$=A%J*2Fyfcl~w9ftKMR(WRRz zQCkN(;Ps>xs}#|v*Xx{8=Q*oS9>~?1AUbt5Ex1LQri#72l2uLg>SQNr+imd=F-4(s z^MXs2D8zv_CBxE!Y?sd?BL)5XTZyOay@7E4j{S-jNw4tbIr*Cl#wDnubo3F+aOl75 zuSffQtfx|-Zx23^H%aqb75gGymqK*zw4luL`_ zjL6*Td#R7ke?*qNUuF-$?=81lX4B`F199H%vsn+SijmAx?c9;~(f_W$0kOHLX@^6% z@A!^;tx)$mS+{p_J{bCac20ZCVX7@T|Gf9M`_S<}|4X}Lm$^B)KKxR(0rdRmCk6e) z4!L7N2TI3yCZGoiD~(i!p9lAAJBLoeb8p{bc&ZE<%5dwFEt_N1eQ@Wi$>;dJi;+&P zfw!Iw-2eUWPa}F`7<%Ok^#5t&L+zX0gfNGN#{3Cz0IWu&xwYxMurA!yT@gG0txa7^ zvyn{XU*ha$h2<@HY#xo;fX;35-7%4_J$%)O!3Y~cG`Gm4pI2jD!3lUGs(&i0qYRI@ zy~v26 zF8n8W1tI3r50<}Q!Muy7D-VKOplKEL+X=)^n-J{pK zod@0lr_o$uL%k{aW%)>DA-D(b={c_sq54gzYiek8MGo z7QBR)ceGcGxa7z^;oNTS;3n+ITy{ylsEuW-?Bp>AKOwT>&z0LNw&e4RU5RnvDB$VM z?611ZaF0v&UkfT6;W=oZ<(=b&Xy!84?eqsp|E|9o#lBYc*$mEtrxLCi;CYh#&iSql z;VryWDBQcJ!w=(8s%9hHg~W)G^CxAE$J`>cy0`D24B$J*u^WG|4! z7gKwke2DhTPy~1kE7t?uzqgm+J6?-?_{`yfY7VZ?4to}&vUsb^!%^@4U4IKwn+Xrz z23~{N@g=2huQw5G~hR~Ir67QjWI@-P?Nt2O?XSO zqX)O!kCKv(!mDoJIqZ({aauiOh;>Ov8jgYMpq;>28(d$8yR=_TG1=pTt~kZAm%+~^ z%hOKGXVa4ZU4IK=f5oRT4DQ48V#PqaWF4~kwZX&_;6Iohc)wHSPcV5?$OQ#Wnnt`{ zcuOztpoPgdSuPZV2f-r7u&|hQhumgG8Xp4}B7A>{%&rl0?BQWgt_$EpybjX35Q3NC z>#LKZS9k-F39Vl7T>3{e{;U5;#)p)D*WZfzJr4i53x33>56hTM+AWO#zdy6+fB(0^ zd{o%mUVtZI_4Hlk2+06@)UHW80Iq~zvjJxM#f(fF(9L`Xe2FpbPvTuw8rXSJW2?o_ z8EB~T%go>GGF&CURzPMg1hx1(h$KsYL;?)Ovzp28|95`bRy5WpyVeE{#rLX&pNjV9 zupLkL$PgaIk{Es9-63Ogk^P~ulFUY&Z(YQL<*y}q{J@W~+u&2^7STIbH0qFxjwWh9 z0H>l{`PQhklm%w%#;Z#`l8!nO8;K6gX)GwV!23aabZ7Ks)Bk<_+mNwIcSP0eR%BMlCZ#0i zj7{hUuY_B-a7^}5r}DR4KC!-1K|;ag<6eNC?? zIBJnsNuI(+qa;>(F5C1AI2^|uZ(qcr_oizXyssn_gG36t;%~wGbQzvDZcTI<|Gxfh zC^vo6_@kayG@ba_?f3&HtmTe|mKb;)tc*?lKGk>0F8RCX#K7&i^w6SBFjJ9yqHlMh z6Zjq0wMM#3&W))q=&KWX`@#apZg4-$%jAy4jXopSwR>(a z2LEFR7Ii9*^8_{`)N}j=I3RC>DotaTZe!n74@CVrUyBMiVvL8RuaTb^FD9P>7v#Ic z5wW?$@cqZFrq%mC9%=CWnOcyC=TQ`6UHMHi|9$=2kkWX}nFw%04kX677l+>?r>2!R z5Prx5^{9&b(q3f7l~eS4z!7PnyZ&@0$&_s3ry8Z9RF9h!gjxLDZGlPeWei^fSLBC6 z6JJid0cK#fe8_sbUim5bE#Y4A z?312Y=zi<>Zs4O>o_ku|oNq<$+kNteD>x~hukCMRL@AsV-v2sYenD9N-}%8+k>7k;^cuJ-Pf3E? zc{KIONek&8_+ys?9BUKeg!DfP^X5EN8g)S7|M7_&irYu-cq_ zQiSo7`1@L9ol>z{v)6|FdULBOEBGs~4#s(=drejdy~CKMnC}I%xGw6sQk|T<=Y=$fAxJoJ}#d=_nvc}FVKH#q`(;aEq`}J@=rwb z0u$Ph50%()d6#qRy5!|HVp;OyQQyK6_?MQyQ2%WWjN+VPt}Wb{FZ~iu8)yCbUfU1l z1|GCO=Q<2-KAwvHzxR^Mwdr&0G4!1#rs52CU*@ivxe>AfVA7DOLE`5l!n$K@QrXZD z_>VK3zKI=}XGC&y*0>&!jBpv*gFTo}IQgW6__x zD$8IH_n{G0yK2}f8&Gq2`M>M`5^BUWsP4z^j9^|$*{ADQ(21!-A4q>jfbG7sjHd^n z9pjw*jUAdZ8mBMmMmhrfgY0LX;rmguGqFAD#oDNe|BSUic4_85USH3t(n1V2&pbXH z$35jz2{nmQg7AcQO|lEip~vT-PfcP~@Zw(z&SP8gdGr7O8GyY@TSdLGUo-4>SH9TX z79G(4T}V1ML<=8;%*@zhHx{XwMfc3UPD=X~Uv^(4aM|R181}2`wL)f>m zUc0R-#pH;>Y|?}zuybR7hx(|Y5`Jz!uDUhtS_SN(R?K##u7rQ~Z{`zb-Iy;u0R0)g zmg=#CLw}Y-Z{({R;@;Q68Hzm|8J5|>J?*g|vvhH*J$7+M4weULV&C0ut8wEz_HnM7 zI(`T!u|>9$sZL8%-LN%xxvMkO7VQKA*opuG4&&TsgFKF*hQ>E@&H&hybKZSII_P##Ha^;gD_V*hI(hnNiRv^A! zb{TX!DrG>@5z2VUe3e!V^gm!})|K=i3e0>OX=PgoR`q-91^Lym(xG%=>#tjIdx2+8 zx!`}-e-O@Jv$_1CWdQ1waQZ*G=!8n%{(3^XL-&5(9X6zrL2oY9X(-|6ZMRLz1(Gw| zz(?^lQF`nUxxNfNU0Y`WI4AkaC9p?yRx2~DqSO@CFRMQk<_IFboA-LL;q{-XixVH8 z@z=mK;w>#>S23*Dn+@0H`tSM=Lf?!?cVp}pZQHZ{omEd49c%awNxz7}T-hdLG7>n6 z92{!Ej*+XMVAU}}6X1Nkm$P7BC((X5ZZWst6y&KMaf-sOQLvBQd3XH$WLY-%n#TKZ zqSV~1__;A6Hm5Vv`UT?i4xh(r1(J$jL`0n0k3Iig|5xz*Q}v8W>>q_nM+aMIo1v)q z^(1BNAh{IMvaEA?qiwo^a`D(h8oA*5!)QwY@Sog#TB)vss99s;J*Z<3#1>!N;P3B- z+*@L6$otRn?7t5zPRA1RpYMKzOZSN#{&V7b&uXCiT761|Q6cnk9{yUj_TT&eD>!_C zC1DslO4HBj=S`QLQBM$~P7(H$nosMfGmN-^R5j*~=h#(J2-GZlw$lTIeQ==KtJXo# z{ZX88V6jBk?Tps=db;74EXB}%2TQE zZbHe|QK7dc|9k&`1yyz%F->BRNoOWB@rr~is0!P0m~@%mr@y4r){jOt7f0g)u+J1E zUn5}rdJmAfB)f+aJ57bn$LtUH?Lij}-o(YVcEcKZdEY(UT8L3g5BnI&g#1Jwnp^hBn_hMPjcLLAu`NXf=EW?ic zh6^$kVaUmdbutY*Ph-PgYsZq^fwxHQeKzbpeclwwcSP3-Y(C6qq+i<&e{BzRxg7BE z{>d@DyOZsy1dCvCwQ&gEcW}hj+_?bnPkLE;y`eY{s+|pS+my30pJE7q-?wiL$37GV zn=7M^+ZD9*x|(-0cB0%49;>T(U=En6D7LU-FN*KXfp7E1eyF?O?wl)jqpAYW|7gfm zLQFoCIoUjjx)yRQGT3oL8 zJ^s7?L-1j{@G2X2rdt2B&2KIWLO-4~L@r@(Npukl-ZIX+fxW8ikpmY)bYxMGgP7Dk>{b!Q&2d5|p1@b7 zl+_;lRUU&}D{U7{fUuTpY&X8I`O~DTFuH00PB*AzriA0`uX|6{Al3>s?6@o&id`#h zfza8-t$6=KXrf@y`C6zLq)`Z3)1iyo;&1N#|6Ttf=s5JG=UvMy$hY7qrEQ>xr~)FU z9N6*qU#$CEo?I|;NzZyJtc&}i?#nCb)pmgL;!lwgigsc>-0}5eHz%Yn=Y9M#{`~!E zS7g&oH3zW#>5#`6tz6>4u8V$Rc;C!snSG_rzO_)eYNfJYTY?<#9%L%;Mxp1F-Z}JF`-xRzLHQoD z5AaeiteL|;SM^z;?i#`nM5-PU%24Wt0)3n`DkluV2?6`}H?Y^G7PEI!F0_%*Ni2JZ zopY$4T_-`aFBuj-rV=ZAyK(;$JPav4Lo~Kx&x^vVH;Jk5BKkY^dglsuy^hcwx*45z z1udHP)$n59OIoI$q3os!l8A@Fud(xWL)zeouZ|Hg??CSlWA96zS3V!HS%MC4hQ%!G zetoLAYcBQoE|FR4{$_N!7N%=>mN&jhgpz{(Tq)N7-Tw{4zWqrt53vj8X!0?i-s33f zcv8e9i+!+j#T2IuKU_jW1;3KYu@iQV@$0Xom-gt?FlTu#_QLM{@#vP2kO4F&T03;G z8)j^Jpe?J~9y~f8b>0s9VNd1eU+VhaC8)0_sixD^!EIL?`6TkL!W^l$u70x{_rDac z;rBXoWs|`nn0ff9L3Fkkh`+Kt@7J*ed3kpoRov^0ehsxeC%v)IE()VPI|4w~i64=? z*c~g;cKEeuVF<<-90SF%Kc=+cue0{day!;JoY z&&4AOicsHq*kbtK{r_v&cZb1l06S&Ozrxdg`UWD-o7;EgVXtf~kSZ|2BLZ~a@1-E! zGSf>@X*5edXiKk3a3J=}eyGbGm*C+=^+P6~`>(GI z#|GlMAb(YqcpZG2J9+M)VHkXz>1^NdV&nNo@M}19eWHmIduMlLviS480>CSaX6D=2 zJ3nM-+N4rxnvXuTZuwC&vjSmYGq1>~t z=@!&+fA3YKB6ihu@6dyB5p$##tjsfp&+&Y;XUo+yt|!`^Yg1$|*FoY85;q$1g0*5! z6oRE2&!4cr#?5kG{37<(N)tT_cR2ci^f%cDBeBC)I;4O4*t8k?)})j3g!d(}(g{4} zH0hDn9n&a;UAD2reR0dJdO#~~)%O(k*+z`|hVS7X9~g4G%!i#ewRu17r$cpw>+i!f zZKieDWh_^`qU?k_yp<9bv>WrKN8rNKZ~OSMImJ_$I6|p>)=*qH>#(>MzDDA1KI|s|DOMiK(mK0{Kv5er>RVhA0)T} zR!=R9UD$8{jG&M$l59pBklpWcn6?8`OL0bfODQ^e$^*_~(hl3);F5EIi;12msKiFEAE zo#hF)XMA)K%=KMVVm*P~+=#rduR4st9j>v_QS8s{bCd2?m98azimP)I`1Oyxx@}1t zt4|#KrV&iVyD^_)6z;dbs4$3qI&Ydk(LHm%z;204lXU8Q(t2GeIdxEH++ZB()v1)r zjuiUXg7EKyS_Rmxqm`7XW6U%{iaX1#lV~5oA33*+1WW9YqMp@@8rs_g?OVS3n5H{K z%{h7cc(Xc~oo#B}e&3$ZT%FRa4BUABEIkUhhIAS1!_M8>PHxIHD`oKY(ggPt?A;-r zgs4%F0p3?RL(QBqIWQ#=$k5dA8#{Q9RRW476cs_t zXghuoahvGuYdY{1@4x2T8!fh|TL;%4v}#6`c@TFmSI>66{O|euD5MPDXGMB>nQ}d6 zT|)ga_O&WYx_Kp(QJp)RoRFw_$&WcVXxftcsAy@ zjlvz8Mp9gYBhY@^jqigDmw|7yk5DG|_hhEMs&=#;(79-iL-_fOp;B%Ema5O z=b4pahJp#%X&h4Y{%`%`4gAB^+wlSWed~>CEXx<&kkPf&Aky*s_w@+)dA{M@@V%FW z%=SN80rxyXZjheEcI^7?*>-CCs;?3HEVg~WCieY!=BwsEE1H45`McJyV&`us_amzi zv1%f9)wo9C5-5sI@i?qaAW-kJAlvAa|e^L1IRS&xh^mx3(Cf?SCJl| z&a$NWvWh0!um9_IZO==BH~yl-&cG{RwQYH36#IZ~yd7=Vl<<1;$gd$vVPN z>V#_BkIpq?FHlzGuVv}6D#Av0)Apx$J&fndBCz-#NwCN+jCU~nxBm17UZv*L+KoNI zh5jV5j?N(PTzy>e5_Sc9;yOmphv}mwvGd_uUcV$3KFFilbWTjX}sROlsk2VWzz=X9Kvgy?Sx6QjSiaCsh;HBZG5gZw9& z%1k%b->^$4pHjtcfnCB&r$rRSPx>M@^U0^APdI>&mS)z61N}XIW~5Wt7Q-(@S?mp< zdQ5{n_6pOMjp%w>&Vbg*y$KK&bxfYF6gd0l#(ong8-9z;O5Bn&})8IFEZVu@mx?YJ_w@ot#`TV`icGy8w zyK$@i?4An3-YN9hrmk8Td8hr!b-P4jPx^v@=FMs+Jy;D#Nf+#ANPn?$a`&Et?LNqD@Gad5>@euY@c=j$Nq1F5?R{bHre48F4Qyq4>^XAByU$2})dBW5GF)F{*KzNWs3SWww7{k@(LP!1J2w2;A*@AR zN(4_vqvo}B6?r33%NZ`{P7_d8Fb_T=XcVF3_L6oY_p#O zWpdV7_p{d$Ry!{~a-=RHrro~orWLA%`(zul7mHH~w%nr`9DEz|rN?38p%pe}>_~o) zQkI)w@`UG_wKPEKD35lm z#`KfUVG3r)k+Ozc*5nV%{dvjYY)D-F1;{4z`aYxkbH0!&K z{SU$8@TY4f%_Zzn&d9l}Usd)-E^R?KNS88XoBV6_&PX)whXuJNxd}8nhLFZDML%}*U|z)_82g!C zK)$|xLK(mgi4uS8Xns3c(v*((IfQs5`XYSp=<%ZW&o8~{gb(98k=oA8jo<$XSoyip ziV-`TCmf=MedheYd$u5@x7gd%>J-k@Zc9MXy4;<@CIf`Oth}q=XaIP6zJ75X`3{XBqE6?TGCem(wzd+^#dWbGtY8AGJ-uZ#;YT*s%NQb^dN~;3f;ScqUzi4*Q=& zVT~H^72*+FOzIa8w*i7aYLe4uz#rv^DilRw5417rU|6{=BM?D!yIZjfI(Ppb>(Pl} z3A5p`#18C(zCLvqb>nla-i|jdW+rN2AFuR_Ih!ovbyxEDt@qP5u0PhP?we9uV?T7- zQjjy~=oOHeLH=2U|Gvf`KZdHaQ&+Grcqn2?y~zj^Ph&U@yQ0+;_l6A4ok6CjE}b}n zebG>N#nja;&R{>y@GeE{j1EU%RA+gRO9++n|5PfifjgTfqOS^O6Wa-eP$j#K{a^Te zq=zl#ebOQ2*-Nt%ALR!(c=hW@kF@e{>3)W%F+ku5RWa$3?z_lYN`+_v<+xp!1@=kb z1&*B6IHUjq{&syQol*nkWBsj`>c}we>*`MCdg4_3i_6bHXA>S{6ST*jYoLhcoTB5q zY(k=%%i`z3)Qz9NN&MVytGyrgOe+S`&C_c%kY2Cko>c6bdUh>b4CW2T`l>F1IN?3@Y=hD{kLn8HCzvCjPz!CQ9ZK942nE4^xu@3PAes1MeU%gHcfv5S_ zepNw1r?$yj^E_fG$1iugWWvAsZIe(q91h%lGY)6Mw+VUm7^B&f;56yJW?0|Lavn%T z1gFcYNNk?^4zXc3>TP>j&Kk2IOzI=@se0)^{4oaW<=fhjkhTGJW+# zOWv5^j&rHR-LGdH&HbyO{z+36c3Zw$tAt-88Tn2M<`cQ{?pL-1|F{2j3hrmn z+A$_Q0lAKdy-60gL&AL@KTm&MfO}#%2HHA2P+#rg2|Dc2ir#+VyB9wnhsGj9Y%kM^ zu7jFp62yLF;icUejD6Z5X0?HgTUuz0cK9$ac4{m3QL{u-BoWq@!si2hE8+XgXQzHx z<`ef<``r_TqW-;p_9=LMrih~!JGRn|fx92XXn~X4&gP%Op3+m7OY`R$swr{JI^Mhxj~=PqPC~J0@j3I2wrYmq%QF zJxd_oOvd_$f4dD!Rf}S8-pD7moqlyZ^-K7_`O;HRH<|LKA@*<^hWXx@7yF~&@mqTW zv5WhoiSzc{4pR_&?j9xS z55jz)CFCvz>F(ADCGiTa9t1mOBxvwG8xg8FwG^5bO+-${Ok7y3fIn_s+O=yrpZH=^ zy-g}J_}}Xfo`O4z+TBT?H)XI#spr&H^z!$~#qHSXz0hNm@TtiG4EO8RkzQ~8mRpYx z+%`oY#XB53D6SFid&OG4(;59mqDg-k@mEfV)2ZyX~(<5F^t8 zI){&yf&#LkhfZVX_rtZvzvV~6K(t;4JL&y~%*h_| z<_!kB!+{a${?f`)h*|mvfXz`q>awu^8!EM`ylln>KBTAzk`8ddD$;WRHs<_-o(tk@S#x#=mhy z@ZtLbhjlN~Mc%v*jkn#@21Cz#Umuh9BHANwsI-Z*peqd&_r|c3%y={U-M-ffK)T{G z&2Q`__gpDFRiola{P6tiDpXktFO_y6b}ZzxmSB@LI9ywlCOI{!+$B zQ_JCsF1F9^apPWq+jk7#{{1rmt!KG#lfH8J*K16xxmUpHkF>EKjt<0-Y{(IvL)6Hg z(a38Md&{}m)1S_nNFhEIw@hE`E+m~4w zOjVO&bO9mWZ~yk0vBJOk!P9U=PG6q^`_8J;4fMY}bb-N3lLpdxj@qVIW%Vf>J(+s& zfA9H%cj4r&ad!an9-7M3i9y%R?0(a=LlW;7)L)Kc|2bQ4r={34eQ<%xd)Kv$2I52N zw~UWlPQczrS|c4+?L3 z{Dld7(T|GQBsf?Cf%1+pbJC4o{|l>5Ir$;g-Yvg%qRgNb+b8Wy?e+JEKOPRB!jAMi zDs3lz^$7`!_4O|hzy25*Z8oZ99cbfpyv)!47F>TJOFbG{K#cnp?m0WH@^60IG`v1- zeRUdp(=V>|1m4;6RzkO0p+L2N9!i*vR`fj#LnlVF>`8xGx#|APDnWl>RmcB`8#~kh zpHf{*+6#thpId!|*rWC`dfLdRg*X6jArp3~pB#u0d0uG=nc6s}^gb0s%SvUj2f+nI z3FV=eE3fqb&7Yixv{z1elWsM&--Q98>_{N)D#T3s)gQg*DbDo=Aq%sqI?}OzJK!|H zJ`{+)kF=W=W6!!TwD*L&5hECpxp`v`cCE)$Iy3bOc)=}KhfGfFTeqrcHt6v=!|%Yc z#0Q^uy-Rzz9bmU-XGxM+!L0ee`4n$qS^ruV>0b+fXq&2P(Le?3cN*GD=V74{h01xU zD9|+cE{OE7^&V7QO1SO~TzY0Uoy0EoNRUvM&FcebWjXAp8uqd2Y~NGPDM+EaN`jgW z*vSrh{_)-PDG&HbY;@}5a1s2NW8iOx*X3T!I{V3%*#4W3{W>RVmbEqPXp6n?aNe~i z3^;tqdj1=G+72wQhx;Gl`=8nGdr4Q@(Z-OL?oa^u#g`MdfPHQ0ee@bvWa+`+-yI@% zv9q10>s(k5jF5TJ6-W`%K(rloZah@ygL{f&-Xj-_U>WG*u-7Xf26A6Jl$>z>H(&ZK zw6hRRi@+Xt$Cs;G{@7bE>W*$DUG8o*>nxaVhh|$}Rg*sVnMHS_j~oG@#NpEKN7(6> zvYwUw{EQ0)tX8!sVXynmZz`CrbqLvI%sg7eZujU1hvwf50r32rH=61lg|I-A=8O@3 z|7Yf*GutP#(U&)Q3#UZYoqu81TewAL%GtyhSjImc_QAe4+xL~RjPnsdy7h57>3pYO z|CxJn+7wyXB#233@0-3)xL|6rPKJ|Kfb4{oT|5j zp=SGtg@bq@JT)=GV1BZI;Qdg=!T!wS-|G*43+eq^qxG;4zNv#^nbj-~JXQ*DZ^lme zL-{8IUz%f4U8nnQ(hJ|=lu}0IN`auW>@lj?4c|U#viWVyHkALdT$2@_YYg(EDBu}2 zLd>h*=$Eh~e#pafj)4e;#4e+J*_xZMz3V!WzP|vwB^)!=Sgrr}`;Yy}JpS3@O#J$P zTt4Ptg6DPFPXCpjhuLbO7uNC5pReRyEz%ud|A0JWU#X)SsjQqZ?2ijRF0sjQr$fS$ z3cU8%As_qOLLp**3Vd`3vt}ke@>hY{vk$`ILRcBqJKmd6aN7U(!9V%L!IHm%JJWps z&2M`PBV?~dy}@2Nf8xj3xI<=0@4{gp#bfjE<`;`O5q$no@Nr=&>6bH0u^mc@@<#WE z3%f)VR`28SqW^K!x%wWKP$KgO>4odgB{;l@a)vs)y~JHG(7 zyt6;EXCj}7dLvsM+UNIg{^VPzx+>%T7rW<2e2sF@RX1=d_HRTI_Rn9`++S#6Oa!er zEY6b-`ga?CA1*g{zasbNPko|(r#J^HR;|h`H5ZhNM*(dr7{1fMQ)3E5#l zI_m$vdIK*#4j=_Hsa27mGP0feu4~mQLW#tpi!!chOe+K<~{p>R^mR?7g3Onp) z$A(sQA9?|)RCXmH>;TFX7n(}BnIYLv@101Oec+Jx{1qX6u-V4fCJFoODWiSz&cVA7 zcccx+&(eEPi+cG^#3n6ZiY{atV6UBOdPhZyR2(d@5r3vcmk*mya`l#Z}%=_xYaxBt#2GB`ugyO5d-$#DU-c_a5iZmtrKp&kss@cJ$w;f0zcy+{BZK7@qs+( zt@33!KsBE@ZRZkP{wCz#d=u;#GatOrh+X(jlh_}Uj`3hw{%Xz~_Te9>yihU7xs0|Q z;k-pU@ht(7FPVF+P=0BHa#~s@Y-#XIPOudLUcLAK)ngrA|;XGc~*s+*q=Yv zP|YZ-ein@|ZQr}Mt)8fa+4ds^*Wj#Ngi9V{4t$oC>=?0{M_3&YdC?Xd_HTYZcA#gO z#+a~EpKZ+&S85jl40{x&DzR7ZNJXu!b1DjzF02uxTkmXC|EQ~21T1M^7l_AxeNKVv z{)JCuZiGsa13UHw&rRl*cU=NcN_lmnZ`Bj%BmJ&b+ax%ql+>Wglnuw^sqPGB=Mk?D zE^fZA8vbv7+YG$rXe&*6_r2~H^3Ty5f@I-$^`v_r-k-27@_8T%P@CF$5kG%XY8$>+57<%C?R3-;*=2uFrih>E`E+shfV02nV(&o*G@ne*QXFo~ECS zHCWgUyhumi;0CYBfh*R?ZtT0D9`^JXD9w}-f~Ao^{9SkZOe0)pxD)y0vNBNG+oMc_ zef=NT4u1@tO~zh&l!HE3CQKVNn9Z2LUYy>}nV$_C^C@QG$%GTS3E1C{YI|7Yp6h~u zs~GoY?C_f>waF&an;=gGM?uo#ht)O;GUmeQ;Gf8p8`$L+RG{Iq^E{7&@!9E4?DLCG zVZx?X54?C@PL@n#i-&-z6{`>y3&qDVX z;|EB`|2SpkrZ&Df;LRa-F$8=5I}aOCvwRH$oBkZLBVGUC7aA)O5oRFw{oA#Ydj*i{ zukPoF{QbytQ)h=0KJRE&@~4JoSO%Q2s6HnvTu*3tRZ`R9{YE?$myEL{(jnK?DdpsS zxkTZm`BQ5jHs(vuLMwSnBM#gHm{LA7Lf0gZ^5b6~*n+zNH4MwCM^>znhSe4A9^40r zp160Pb>0u$yDiLk4R->x7^v1A)=!{c!_?|`XmF{~LIB3-X#!@UZTb3meXyj)D9w5~ z70#YC`x1HK1}yr@oy}I2gF9tX`}g}r{d@f;vv@z0DgTAxX}D!pghrM-2o22Uzer-o zJ}kwP-hi8-;BG-2C)pWbl#f1@mEeP3&sf%J9VmoV8M{YZoTNZwugs%sxH~YlzRi+a zTnsTed{qlxts_ocIL#s-cOAx#(l-(&Y4AwKVGR|z9Kz|&x?=wCjrqZ|@bQx^;byo` z5dZvBo{?c35Tg~YAv*<6R7bxou7`jY_Re2quOOd~IwI9J5PYalfAI@<3p{M>%4L8s z(A4)IB>M%EihXX!U#NjeCc3T7xMNVVjb-H?cN%m?`qMf-*CAVaxckLd*~DN|q2!Qz z^v3W1EZnhO!jtSAeAz!@x_90k-Sz(PvlaIa_%c)@zAMFm)%5J`WcMIup;{`b2=Dir zF1s4#gg?&}cx#@~kp*jlO~1r&2SNPjacKn=8RXNMaDFfDA#81S{5aW^2Ax2=xJgPX z_9XoV&Rb^_!nW^4H%)EKZ<~d!9??`9xR-GFc1cvl&TtUPNcr9bcN1nBkJQN*MS{-A zJa4j}u!-Bp{>?p4v@^Auhk~IPPFpBmE=S4jv>v%ON8Fv-X zyAOta3OAq--7ltvJ1NkV{W*jCY8J7N;xvu9e9XVsKRFAvqZ`G^?!wVhzv1I!5#XJ2 zz$3E1U{xVYTM>@W-$?1$lN|=$?49@SZSq3pRiV^&xW`Z#(G%y%$Oj}vZ8Kw8>!Eex zJMOI$LTLXP>sdM6XFy-5mkN7tz{QFi-hW;uL#+p{IV)jVgsGU&UzyyE`4n^TzUVVn zvfn_t=aJ|h$`FwB>+D0+JPW_P(+6N^Y+8WeEf6%tasPleB6P!XOoguAdvt#<9WEfaSvkdnOn8fBR{~}(d|xlAr!QC zO#*#5Y!%=lKbJ00G3 z*t5QgD+xZ>ZnQfiGn0rK?EV@r68rD_FFgmTx>jk)o`j>x$;p`ST1a(2I&>y^7LIA_ zwl3s_f}ZT-PsqN+(p!fB@%{eD=T^{KB<@TYQHH*dYWOHYtvgnD4tr{$k&Rod2aN#; z_XvB9yA!Sq-*hY_GhmkkOxdD#4NhG4s@Qut6YmEytBS;*i~j%l*97~@cO(VKE=B&_ z(vvBlt7vm*+%nmxc#|At6j7W24vAeAXuzF{LkjB#bJgZZ?iIVt2mCzYO@HSTRVyhp zO8DF;#odZx9d`dQ6H%a7%q?7o`xV`c*WRPs8L)p|_(;^IMEGa|eGR*vLF`dox=(+5 zV}9@)Jis)-O7<-jiQ$uSCqfZZ{ojXV=R$3Ud&?{c2EmIhcgfy`X$1FzSE3VA(s7A2 z$K8t%PNq4A1Q}oxb%3b{_b<4Ixle_2Xrn(=F)Xie2P68K%VY0-nJ`2+%`C(&9^TjN zIJNh52GOP>JalDbV}AY|RMwuJO~3ON-qzU4#`)6?(Y-dBZMrlIYmYlyB1UcW*xn*o z0Iz>Lt9@a6)#r(LbyVIgE0jUbn6&)~fCCie^-5IYjz&_K98Gr2Q6Qw?ooIu58ohRX ziq%)JhixD|zHRg>RE~b_KGmE~9Pya<+qCKGzwdwB9PEmJlr)2T8znpbq^dC_AlsXh z0r@hsFxy;WpWC&o;CE_YK|1bl2uSlsCanabCEFJJYq-Nve5Odrw?xs`S#Bv zLPR&_Q_RD!X}L{s`B02lPJE2)0 zyb&?H0C5-ORjT+A6(xu_cGLbnwS?|i*9qmQEcia7sYXpN z3hq^s&OUnK25~X-@XO8THs-U>L!~_Jv#PiwQu~?ZXLMyODsfyrnM^$kw|XkmuZTvY zi&8TqWLG5gt?ru|{vZ^0;I)Ac?u-1Ut$6iapA%hiYORbf0 zZ^U`*u1nCXEI8}EnrE>X0eQXx5!JplVw}lJwNZUzKEBVC!MgBy+#}KO;?<;iWe$$@ z+TSO;B$vO1_}j)C01NseMp?2?a?;;4JJt;}$?xPU#GR6n#n)<#zhpp1Q1=4aD>*&k zS#WK;3;=0arewE-Rd!^)0e?=eiS#q)4GxDZ&T_vmX{Ql+5l`pFwKnFPV85D2If3k& z)o2zVR=#+#j2Pj9z_rKO4KF1FkYZYjEd;*Nt*f>vRBk@a=;DKkl8}l_=OD zWO)`C9db~*jJqd-6BSdRmz2PJ1JS;)=i%5_Cuu{#R;DVUlNp^sKK34 z8<=G&AN+*7DQlqTGtb_0;B540gB9+lxLApu$yk<0Z*{rL$c{=tK`s6DTiLKKR9E znQRw-vk7-scAhHmyCdg@+#YA=|Hb_ks`!f8xD)4q#@*u+oB~zwWoE5PVYCuTd(xmn z_E>ay^b_2tv!O@pslI5pV3>QT@Y3*XDp9*Le=SdZ5BHt@8|daV1A8unvt(tN zqq9e{J;-j$?9Jg&>YPNh`O5U{Ebg~lcHCVza#js3N33}29w=h zaL?teuz-ny_SgHlrnxuBt_%BF&_*!lK;!z_O@CAa;r$wgy&?9g#B%pv6K?K}`IGbT zub=S}4eq|UpZBuT=FvklM+F40CCosH=B%^?nhHspz`u3<+i*vJr6&5#fE1V?Z6iA~aK%@0r(X`V{v9BkqUj6yeag;o`lJvw zwD(G{EpNR4v*YL7OpoqR+@66H_d>bm*{=c(jhO{W+@r}(RIuLGuLJ6)4m-r*E)An2 zxY2dO2b~RR+#7eY8eZ7H|D|-1Dw>zS%E*R0HD6YS6!MHOg64(7vt+O4z|Hnfnc^Ji zdXN?zTK0m!cN}Ltx1LNS@?XmM)V(oZdI8R+j&qVdn~CFjpW12Skcnj`xP`kml+9N| zjmx|NtNt!MvTxJx1)oY@3ILJgzCmM>GPo7YX;N8@_LL3^>K z4%xj?dd2Ii`XmP`@=(w>r+C0yeK!jCMFTh1-QU)nv(3|)I^sbj5*^3 zoP2KDACR7bOkWz_(uXReHfrV-vXj#%@b%_mfg5txxbo>TRSn)RX?)xACj+_}@YpI4 zcXNd5)$$JmaJ6_z=Wlfg-U)I^tL}A^Q43W__BJNksThKcNaC-kqeVgWN1Cw?E<+kXo_yn zNW%NL)T;vJHsw8+q>_PrY5@ZGYlQxs(|qSwA%Uta|sr8ag6Zm1@XPdQj5a^rL0 zVh;q2E@naYgyMaT<%C{;lMr;{KdObh zLVlmm=>HX&zke8HQnTW|P)+E5x)&wEN68qO!I){$=KWpZ^yj z+m;x=Z@53SQ)8sU<9-NY2yP7BhdV@ctFWlm!v)Pu>yMH>qRlD0V!O}zV2`Gt&~U8= z+R~0~|7;@(Ttd9}i3*g!fj$aO!%`Kb)bezI33rN|SsvQc8Rf#mp6V~ECyijnqvNV# z*Aj{Q#pPuW^#A+(zX%hLiF_hEM(uKmL5B;Yfzzg`p98pOG;hr!cWXQvnIl_fvTHP) zC~54p;sjPDBwfh9k=quPnouWg^qI##cnWupr01ViGxMDQX&>I~Tf)5~)}kGo0owP9&0Zn^NIFTK(Ly((1x?!UvMH=f|$V!WO>uyOxsvIv`njtY}qrCWjB zr)l#O&^e<|#bjS8%Y24nx!@{-MUBH`XQ`CS$y!U<5eXb)Sz!*j1Al#!IHMnN8W3Iv zW{J4FWI;LF8tW;DHgCEcB8~e?yRRiZ3&0M7;OL*za+cCCBxviL#D_Ryyju3}^SF)q z!He*|pgSAcXHqNc8t$3(MCoz;tYoKYkpgIZ$@mILxBofQ;In*~7J~p4YtIfX$e)#@k zEp=}kv5RKM)mYh$`T2`5x8nIX6Wn>~vZs`}P!ocFKjj`!!@VbqkFn}P+L2&XiHU{m zKB3pl1?;RR(c5PpE}ppmbnMWo>LjH)`gk#Tiz)6vQC*Jg$O}~gBGHVYcDM(%e4J&g zmrpKSQubeo&=)0K#q$NPi(e%qaoE&jW>NRfQNIXmh4BFN*YQvQ)mH}q7HwuBc;F296gVpx7j8icm0lgQWe9#K6Y{{ zh$B?oc}vJ`;*q;ckCR6(v=jKfJkFp*3@VpAS2K?#ax2B050`ArpIn5dvWK(9ad%4C zes*zyB@Dg!oEd0@`%`widU6ClhJcv6x%bEp)h1p+yN`SQP?mjXpbA$lv@(>5-}yxs z@X!+FWS8pQkPvj`-iw}Jar%LOBeF@&~U7p=bb z#(au*aDUdmD6(Jmc)m+Hfzkvh(ofzdJ686&eNeQ+4bvu$Pbd0atsHa2!XGtY%J!p3_uHFWX5 zXOZ`EL^SaiS@=lM6M~mP7*MCO$3WNMdVs zV80>d#{A%SFu~7o583x>U)Uua(P)OwnYgFB;Lg{t&hHo1OQL|*36rf#xcB9M*y7ug zj6X>3dYtcwyI&Ilo+@G|g}^K*W+VGwUT603?QD@jt{O`me7FOq8Z@!3i!&D{YWUGT zmb4*KRyk>UGb4y*k?VB}WgE|*^WQ-UHi465CoH|;Gvk;37{HhlXWoZ~l< z1DvZvcgb$p#lMS@Q6rkDmV1DM?1w$s$5Rz*u^-LkN1X4+9Wj0O*VECm{Al}|rstDX z<%D}S+YXDJxo}uPtc7aUj;M;`Wwv}BPDt$ko~^64F~98{ytZSyiR_I%S3g5Z_1Fjr z)oivVyJM7Do5kj6@cY4SaR;(L_Mt?KQtXo}GQK|IN_NO5!r2BW%Z*Wa_QMWy+#_p| zl=kF5C` z+uaJ>E#v3?awaRq8ZE@THk19bqcj)lR?f?XmY?-=fz9rkW^Us!T}=Y=9mt2~r&2hFbURoS1!NN`BU@;!}XKk>Q2 z`K;Sd2aqQ;b@c-7qV3~!gS+DlKvv@J6FYDp?Nm>nSjgBeq)MUur5AV7CR<*z%-+v| zOK-ksiSoD-wX=!^Dy5-Bg6n5$BdLw~>`U-6U!ck^{2c1jH7ORmcbCzzq```}xTp4( z&;QQTI_!^fd_GNf)gq`*{0i&zKyO#CYdvwq=Skg}PwF@50`WeJ^aHrF<~l{u^5qX7 zh_Iwoew15ENWL%Dn#|6@pUa+<(kr_WWwu(ITEB!4F*L3j7kRSAmVk7vDM6ej@c_`!01+6(rGha#0g^+M>4%?~A9C zKn-dvMmKS<&6@6yd7B3Xpz!%!!hySOPTX{3Gx+|;=$LL#n}s{Eb!h)fSJ@DviK*Wr zG<;*e$rALUR(2q}Zn?Jowse5E3}WW`=an; zd~Ia!t-`Q>^J5)pa4}-3Fc){NtxaC`9n8_&l4;3b$Lxg$9p_u+PRMVpER$0DhaSvnfL9)@noa^BENM6AEK zhsa(W1B;JAsGBD^yz*I@?8bS#XRynzIthdr-)Zi^{kXvRpEl9)M}X*TktQuZe;WDe z+a8_MIdG()nc2kKlL&l#v)1lq5D~(j|A?z+WBoCI38tSki1>~>bF_Rd{NvmGK?|E4 z%>?ev8G2-XvPzE!Y-{JVGr0N*sT~vb6dW=jBYNc5dEB20>xS0*ETi14&`X=g`PB^l#Pw~V(GL8s=w?rw$U)q( zYyEXFY;}hg2p?aFBYSq5mzU&hH20z((W1fkao6tWpln?KY&NW@tNhh$>`jdDT^QE| z0mQdJVw#?IWB%k4_K?}>g7A8`o7tAa56O{W*64Lj1Mc75rEWMBSak(#lWI1vr|u^L z)IIO@J#+>9kKS9*;2z%gCPUZvCQ3kp0Zl*hOM`MJLq9PQ$Iw}H@%TC1$2*=rsm6h_ z;Sss=_sQ};#22-5J6eAE5yu3}S+`VgtUpsM!_$gBU1UFRb-bMWVuug%S>p&HJ9_`V znt_;exk_YDPl-~+@${kzVtO(@OLq0+bcviD*0CB|+^S|H*Iaq|8CqP^-H^RaV~uFfA$cKAY~1B9+UjR5*= zm6qLjJ^mbR!_X1BX!Nz;^B39W>pz@kdRo*CNLev4l6}6Fv8majALkMEE7mkFA{A~` zC@^qZ;6X#{?WbmDi;1U6n?}SevfXSXcETuYux^ud~@Gbt|tWCi}-b31bn?k@>mlhTi-1qD2JoW3w1wZ5+`}G{z`HPtd zs(=6d7&=zneyb1n{;~=hIxbf;AYV z_Bf%V|6}jn<6_+Yzu{>b#3UhvDC8VMa+qOFOp2nAa};vi*+LFqLP$I0xN|;*oO2G@ zGfW5}6d{B#s3g^liqg8@pP8wh_Wu3u`*%Oj>-GHeT(8$P@9TQ6&-$#-IzWm{ z{1NRJc&}BLf(MG>O0POjrVp@hV5`=v?$nX@lKwt_@7YM~ANZt6#LUZ8ce8VCoT{&x zzgX2bNYt*c;{uh>=4Z0QJq+OoXR})C|Jp$N3+@jYRsZlg7wMYfWo>Am!99!Km0II_ zZrRX=J!!u|)vYGO`}g;iPC4rFllC3#ceV8Tk%>N1yBC9d)a|{QIqdt{Bxt8Z>fVJ* zpI{%tlSyY<*1-Jh$K*-rG3|p?PX=8`TU~FyYSrRu6CPYLtpAA2W~r$w#8a_P;U634 zxJRqkOKZ!*3l3tx!nRgZyQsa^D>qnOnM?Z?248vRbh70qo4*VD7&iZYxNpJLM#{m{bB^uV5~Z@-AAPiC)GlWI<098Q3sQ~g+41Jk;y~4e z{>h#D^QDIQf9yYa>sFdA_B-sIaB@h?Ez70h`I=@%*!S?_)FwWiW;-kUEh^g8Y*(_% zwQ03;HHP{r`|UmCx_Mm;TkB@jcf@)h>Ah(89AB(+n0kEX;`YzmOIJHQ2>#hOO69zF z%jCwhcd=emue&c^yhOEr&8(w;ewwT5;JfKfii;uq^lWy!c~+fd?3>uT=CuvJUH*_B zI2&|nCiYLv96Ry%n%Da(rDqEV(msk~`czf^CZDEM*ll@F`zf~A^l+5#`cYE(532!+ zGaFdHcGxo3p`P^aB8gQ|?m^X>fX@Lxq`TO%wa3RVt-n+y3L4eE?~6IAv4=Z_?buYd z{^tuD-+9~>+J8}o&w?YXhDh()dflLX7+L65?X`m&l&f|wX+Zli_J6Wt#`49pm8ZCe z1?|gt@IYeP`5xV*Erz!*uHSM!d*0a6w{}o1snad1;~TM0!dBJa)&DgGs z=IjraR_UIxQa9cUjYpk-#lb;#1Pvpu!quY#b z+h5u*udU4u8_cJQ`nH#^>7*QBwR!Q8(gUi!pQdReckW~!_wFV7UtFg0+4*=^(wSMR z4LjjK@|5Aa9TTCwtZ( zVsc^PPWHOR>x7e*!Ky}{es>Ne%v5c2-1PbTEv%8GBlrvZGjd;>HrSu?Sg%e^SNN`y zDu&dXP5V^Z)!H_DeL}Eui|285D*gY~sY@}PUrmwLzMhgr`&KqRxcU7VHbgq#`BH%o z_OHCuXoLnWmgM-4^qQlvk7e%cKerdP-N|;2Gig6zXs~Md&Dt&RW&ft?`uOr6lPnG4 zM2ZD`-jqJY)= zpWgOXM*UXWg!a$0>OFZ+gQ)>hiK65Q?W0*$>FJZuyrFbogI<{{C$3^+>K+-Necedu z@mpN(1?;OSlB`iXUEIN%)oAnf)nCD?S2y1`-aC4l>SMy3UgzT$>eD~{3v-(;>q+}= z9xAA}pi8Y_<@)Dy*U|o)8{ZY#k4l~`{aoe7EZT?jQv9eM@39_u_~v7Av>&HO-HsMs zal@q#XKSvv5{9sr6PJ{nSyiGKw&BUJ&sgWXWa9qAzKeITg+cRHKg$eOJ(c#WS>?bK z)xIm^cB>i~!WZPQL2K$=O2Yn~4K6=!JF#%FGT7YcYBBcl)Z=pHeUH_$&)Cm%=jq|s zF600A3R`X}rhPrn)a}}7;(~5?-z*8aeq;r^wCx&;7+@`(mod=o5%&4aIeS)<&UP?~ z$@P?(^_Hu4AMa)=DezNu>Ywx>DZsG)(p>)*Y^Ti76JKBHGsv{1!x3lFtOLOi|T&{}CvR}FE z+5}Y%3|CoOL-@Wq>~rC;`Lr+ThCVe)YdiK(UYNbC9qmtg%XQl52?6t@hlf0jnfWkD z6|S%xdt!&XwDm++TOaIKI>N(RF?!%w>AAHn9Is;E(gVL`-%WnmM4IF;dwUJvecpY# zby?Fj+gb1pe*b33a@AVv5p|q;_^PHIUOwn@*gQl1&tW&O`;VmkO>e{|Ec^Z96lvOz zz-Zd%^bbqLf}(E0%45P6OKHE;ku3&Uy9WP9I@fznUE25b%bv5}PTz1))^5Ff$-%ru zY+d!dMz@z{NvxCmU0f!NR6V;i;`Ube?d;S+ssF`;%T@h1JJ$^e9H)wU9?*1FmSO#I zWDfhVsAwVWlj>0F-TiFyV5w+R=i0ZiUuwga^;$;U!2EwuY_FrIlT;yf&$n*nF-N*E zU6h%M{q|a{j3|1o8m=tvpg58}e56!%jwy}~yd-l9YU9K9~_`zf6t0Pq|f{Q_a#mqI-{~Xq^vk?7n2J=09 zqGgi~!<4sLC2yhqTMu_n%zk`)m2~Rdy?(ThYwP{ZzW8V2`=dKcx6ppBMu)eZZn3+o z^1uhnF^<^R_4Vv|E-mL+E4w*~QreE#tBRkwu*;QA+gQAP?vR*R_68b4F)RsY_4u;UxoRGat{rAzOcMAk8_DS-kkp9@Vi|YtEz$ z-NvdW%PwRHSEw@I?^*R>+)!1seLn~KhZ)wt+k9ob_rq(mu#fD_mm^wrE)G`qxIg>( zAG7g2kd2*9)L*NmC;l9joH;8=6?(xm%`J41^2@RhLA1ZDrJG0F^#cYd6R-Z>m-d;B zlZWP;bP_7%ZX>*1vES^&MOkl7)ZNCs&o`N0Qg?-FK&_|d4R(5{c9{i?di`y-q5gkm zd$isb&+#6pYrnMlvaGezopqf*TVr2Z>zBtTZy&H!TL0j%hWS28s#=RL?r*+ho^(o+ z@HpD1*0ih5qhWuJm5MHgyZny*YR9B>I`H`7PeqR=HN7`t-`e~GClqceTiM$s*v_r_ z3e`p9?NR;q4^-_{2W-AN*$}?(S9UMHsA`ww47PUX(Z9lt7Av)9YZTn}OlMn1KD_m= zXp%H;-Hy^ik0ez?zne>>e=LwTbGjZx``z9Q@m}Acb7!g1q^h28Oa0jX33H6LJBp;( zciC>Z-EP%%&FDg9#8x(=@1Oor9apG^_>Zf*Kgn6O;aZ1}wNnEO_5UjyAGiA$?T0gU!pIj$FQE{oYOj=!-^qKa{t>YxPEak(Ln`WLKL;L2woH-<}<^eBh z4_WlBW!OKrPIZTNIltvf+8IAh+;(V}D)4f9fywZ#Y;D!#N4`B)sFaf@PFdR8NtHF_ zx5;VlhVUc5vZ;A;)AM;5>}S`Wm+vOeln(9~Tk2wu{Qod#=!l%@Qs>=~18Cn}#ng%C zM%M^XcIr^Ig!bP}@6qtA>tExfS0`)Kjj<1JqsKdsth!JnX>c;dWHk2UmF?(W>QHYh zGi$wn;v=>~m0hD38#b_~>fK$p$i88Q??2+cvOn^2`n<$`y&I&yA0~%}N`sfFIPKf3 zM;oaq`07$_ouo3_xa}dY+gJIrj-Ysm*9ErkP_M$OBYG+Yv*(rU!+yR=ULQ(d-2N;{ zvUOOp1N-_m5Jo?7d$NTMkh+a9bzY$g&3ydv%_e(Q^D$o~w-*0ysQ+J?WaW+_8tnVq z{M$>jHK!&?ON)znHS=_)$4H4l`}r%cm84qo{X4H-N2V+|J|>Iy1D2h;bm91}q00CZ zw|VO}GIoAOj_T>bv64Rno^BhB{ee%{FlpnpWea;}w|adu*A=S62LehLxZ0?uzFKGI z5;#*Iei8P0TG2D*N0Ur8e4Tb?!x;;eyqGT&h*1BF@W~bbs`&X?#c4m`((imE|43 zF<^zN?cCC3)#?aT?Mf$EeLd^13;)fRTRmtP>ihLpH^NR|ZgnBd$hp;mu>O}@wF&?2 z@ZB?{sX%as$==0p9a-fJyVQF5M6Yk1WL3v@+ndv5r@}m-QDXu27rwMP_V~1_`2UAD z?CR}09c4~OmKZy1#-Ag;)fprU0caoRW03Mc5;WJ zuwIok&arQ+{6Z7+IW>0?9|BG#1H0-bI+A^Mb&Odc6C&ha*qA1?oVGCYo%l@@=rCG@7P?X**&mt z55Y}|^Twgb!z-+CX_IT8t*@}bz16Wk5zS<_`G<#Avso@_dvs1J=U3RJr|R{iTU=#6 z;~LI4{b?gxb@%706VGE5A(Aef^Q-K`+>P0y)+$!Z#>Rg3EF0P8=_~6TSaeCUWz#29 zfgp}eNVHcjs29h=299_-;EA;?sfPE~S(_6SmYK2~zATOzMgM2Tx@~dHSQ)YT!po+z zr_QGac0ClV__-+#{;^Npxi|8g4X-iF^-HQMa+}Da`WARt+9fLXJMO3{2)@SL#+Y2T z-hGX=b$l?pQQao8vE8Ou9X9!fBCN9y^7k6+pbE^{)ATwU{?wFTbh47&e7N4_+te`0 zkQupE1i{xC>ntAbwEsGL^ikMg^Ww&`(#}RbhMYL5*xR)?((gKZGvDV(4ci-RkL+Se zf~t{hWs|lwABt~DW~~eR!k67(m&PU5Ek1mM)$HE2&xKu23L| zXNvhF-_^zbTgvMpKRWm|l+7A4B5~Z6B!##2uzbEOo{1bTy&irto^{*!dr|3iOIgAn z2gZEjyCs_kET}6G++@|>n=QF+f0K1PZQ9+xt);BX)9=31)s$;!+vafyIO%PQ!TuyFK@9o2a38*p=ss^`LergT^rvMd*0n;&t}^%>?5u#Q-uucz2envMO~`~#hl+|za49Kz-QV$wj?kv zbU4Tcg`)qK?$JJ++-)HMuZPHkesV&oNN;~Jh>#^js`+N&Q@O@TO^}6*Q zlLt)Zl2F{LrQKpeM;71A zWy^nl@?{U0t>{8nw+0W{&icZui3`kS3*J~a&#}I!aP+!?`uC8DqniDEzxN@_;Gded z=xi>#_HEzo_pMVTU0);{34$Lo@3${6&8VBiK8${{VD$4^vS+UUdAk4B8Ogc2rd0)k zBxdPx^7yKeNo+;(yjFX?YRSxBo5?1g zS{XZX#B)X6F`ZC9lbEw-!=1M2Nh~3M+K-|UX0r8tyvF?X?6u@uqrZfLxFqJ5|LNT^ z+hoQjm8xQ1)s$^$?Q0tPSDNBl-zkNhC$W!w;@e@e;G-;KwXCEbiqjn-tdTz5LIS0o7&8 zJr*??8h2fBa6`9hg1E=5N#_=`UQ9`0S#=JNSz}pUmbQNUv_r!}B@Znn2>&trtz( ztI0+>?y_3r@=$W;k6h$`3ft-@uNHad3Hu!8EdRKyn#@#@6_vK&n!=*TS`&fn3H#pC zX+(?KPub)n%O_s#T1^%|B;cFf&FhLOqn{M=Wlz|XLlJMEje5$gm&D9<%d9H9HFL-J zhn-$XHrlF81aVK;x^wd`U5&*5LuX&Cw=}Y-Bcisx4X1C3k&BR};vdvY;8m<63rp#)NxL{k5xZRoTk+^<;cas^rBV z^^FC=Pg&B#cbkv==NW4smVWoQhgD=lBKqw+5S6NU_b}lbS3PB4hQ{n0fBhM|pEu#= ziSR12z$FI@4$pqC=$zlAi1VlH!i$)PZsJt-_>gp+hg%idzB_xShW5WF8Q){}56+%3 zEYC}y<(10jH#>LUORK-C-ukW0tvUVpgyLDUqoGlx?`P7RBBH8Wm?mGpsDUxfO(vbhD z%;@6m)(dYwXFEo&TBvUx0{Lt`2S(`?fFCA=e}T7w}|hxHZqnCIJ#=sOMX`3 zGFXKCf6i>{R9i4c`jXuq|IBk)qENP`qk z*}25oCXFdnzDwIW2xVQb46bJ-crS7F)*}C3u#e8`7T@qsW78irdTD1Yl+|~9+^6XC z2Zj526Qn=FUAOeWs>^At{Z8kU8jp=+$?qnd>SB?kFr6JzLmR-{O#@0?T0Rj*jXGc$sm zOw*Zfs|l(NpEzqe?SY1a5Rq_O;d|z!ksuELkLa~H?efWVc4X+)@u$y~vY$S7on@a=Bt|v8(f_<=>uL<& z9Q-t$<^G&qbJVm_w!`cE*2Afh6Z0Y*F;&661C+BmxUpwEu6|UHR(K9*f_yfM&y1oE-3z-I&>;cSomqiT}c3oLi?e zm)@z>G*NHaXWn?#2GLJu(YUDXo>9q?OGfWYIZJ0N4jzt;e}MOWdxiwfh$~^|p4yK6 z81Pu4a{L_+rbxHg!L@G|y=9?O2OaFOq=cnh+wS&ybC#mtabJvY(%HQS*(bEk@%?r? zhXvYRCG7h3L&gOzuM`;*7Z?j7(^L2b@d*q)V6tdb6j084s+4ZS4-drtu z$J(8W-I-GIgZ0-K|JnEEJIQcO656M?Om(}&#M1UXbKJRjz(v&$=CJwD1$o?O$r{sQ z#Q!Z@J7Ko%A&>X0L2|2_lUDvXb)ukLk6)0#in#B*B@v~BiTA`Xc_{=Q{V>X=n) zAHQc`v-7(M9)D+nOB9zIop`C(-}FT>fAf}g%8{zR^7kyYG+^qf9p710W^_!N_=TkF zmhH%Y{D0NP*1OkYy?S)s^Yl6szOzQD2ReOjn4@U5u07)aj@_Nt@U72iH47em{C?ZE z-9>7O^W|zs)xq_f}HJ`q&Sy!vDVv?$jqoitnA?^j-C5 z<096+-INCRhkuZ4at$lxZ{D#0+eZE^f5ZC7tmf+Vp9)!RQ{yY5Zn={7_5Q%~<2$zh zc-F3+J3g@UnH!RAV+xs{S)TRj$A|e$2!^%>8A%Ld|)ZD>$(nIUdXy-9v#<4 zn;Nt#|%f2!1q1li64K?Z}pMcwUp1F z+N6*b_X0RO)+Z%Lfp{tF*jQO7gpr`Hy+D|auI z7AJgCEPMFPSb+b>D0n@(&)W|lSuM{AW*xi>nDas(<0$ca#q%0%(Eq4eANLcRrqut$ zHd^I2?9`!v&G5-YV$A_sh9(S26TZ+_^d;=TC;#9z&hUR(0?HvXS4Ce@=V{sazB&Czwat*!n6(w{ubQ3ez}w%9!gmyt8}vMP zOUtU<4)wm?I#2QW<9va@<^#(ZGNQq!XBn)@E@zLgyR@uCvD_&+^Q=PBAsNpn`2P6I z{9~iUnM^w{|L2a`T6Q|S=8Xp7?2;SJ?A_~X^@%4T#pT@cC4y~UD>)cW5 zGH_>>WVO%560Z8lI{j?Aec$@etnj&OrcXpZoAXAP5i#_x;#l<&CH&1td^h;z$C_K8 zSyQL3^@@JaXH#xA{x)n=ks|c#V6=Z9S!tE#x1N=LX5rfc%svjtXCwIK1I;$xkeuH> z2>Jhsot!p(_8;A|*^mWSC$wpq&uTZ%3A}mdt7M*My%NqovB5uYjo%fJ&1!dja^Z>~ zpG`V7{lK6#?f!i>cX_x*Y!UsIu@-E3DQ5Y+$;0D)r62IW=hw(%&c30epQdLk4!(C43S=2<^0!O7YPsex@AQ!3xf!`^^P4U8 zGCpV}Bd<9d34AlKe$Tu{UI_NXU3?|z@~vE!)GY7G$31TqmpdbV!5PdY_pR9FdJg;8 zM?BN{P%fKg_t(L*bFM4eEc6ixA~TrPU(Wt@1z%b9TJ28P56Q)MFq6iPXrCc@7m?%CCDQZ8%x`D%xgJ(Co-ZRp1}>mwaUn?Z>_f>6^>C z9{c>Z>%M1_?*AE#_CJF;9p2FhUqLW&$n<^I&2yP$dd}jIy;%zDmfg_)WwMPe&h4#U z@)hks(5zykTvnr_apzBU#wh-6P8|;v0y>efznsRn|L;x_-2ZP*c>6C8vg7X~SO2~O zHTG}r|G)ZwGX?%{@}0`W|4qJ^`T3vNUsnFg{G#(O51X#bPD~04{!h+okgIr_;J)$+ z>i_tlr_lz6(+Y@}Pl8rB+u_8E6hV8Oohl%`=yJr_6Q>lX3}-)_E;t9`lvlV$OD^b- za{x|voP%)=!TJBiVT(ZRagxoh{|^kXgkKw+ZE%u4dJ!nY`9IZJmhMg9w*}6&I4Pa! zg`xzf6VCt1L3v2|*9>P_{*gWhoRn96aQ4Ode|k_kC_5^agRUUE<0Ko)8n-gJ{|T0r ztFrP`=C_mo^ofoRo&5be_)q_R-og$GdpLG*bm%yDR>v*^qsGRPR3uz4p+FF2oyWDf zc4!7frtAe;G#3awo9FSM4gx_eFa(hw)*_EbIit?C%;Q#d1Of~9JT3>yf!;tbU?4CA z7!HgAMgc7b<#8p@512ykz-(XyP=q&7YM>QR3v>W_4bJ24zz~l-?gxwq1_4E$c{~Cr z2Sx+Efbn!c1a<>0{GbPKBx2^lA5aYp0$R+6KcMY`JRU>$OJE03eiwECLx86BfcNsa z9Z;Q!cmTbU5f5MlFdAt46yX6KQuBBk;Y;|d4?Ssl+!h%4DvwJE(~(}li1&y$FiMT^ zfGHmk9=T`0P871h&qz0*S8g8P4UEW#UZA!F>4JQSX^_wDfLfqCP}DG=`vcX$5MV_6 zd>#Xg2POjLUGlkAL)-%$fKd+lJO~&Ai~xpogB(!X2Xc+z?gTlYZNGf(1@v;s=YhbG z8TmXM7!QmFiv06=8qgM~1v&stQK(a9=W{tQVgbS-T#RslQNUa z!^44cU=%O{s051IX?PmB1GT_Fps5Y=2WSiQYY%;N5A-Iq)9?^rU{#sHN-+m0HZ z0`voB15`8l3n~25Jx~cu0j2=e zz-*vxZ`hAc!U1Rnlmi`rUO;!CAJ7jN0t_N#8XgUdchYb*Fr^>tXbF_VA26^#;tdRO zLHNKJU=&a^5a|zea7TD(sBH&pxE;_7CS3@CC>nwMMnmiXv;(F9 z-GSk0eyWB?07Wy9UO??{h&Kio zYJb=PwD=w20z+mYT%c$+!Ud+xLAb#9xd@jq5a9y-7Qi1m4~s=eU!Z6);txy#h6CkG zk-tD~Fyal22thpUaK8%rfq@%f2T-&b=?hE&s(~Rpk?-g?w0n>qK+!&=BQOxC1X}Dz ze1Wz=i;l1dCQCE>p7+{F5!!Do&&;jTGbO*|Te!v)D5aCVu2a0YXesm9v2ihi}9027& zEzk>S+8KK8ARU2zKq=7cF7yG_z;MEQhzHO%5%C~*U^XxUDC&av0Ih(c`>+e>2lN64 z0{zJy7y`6?fcykT0F^*3Fa@Z72z!8jNl4GGh%e9%C`v{>0Lp>h!~+9?YG63f>k-l! zs0Ahh10O>VFdk^?fOJYhynxy#umkAz6zKsB1jYkXfNG%V8S)b-2U>K49Y8x^2v81m zNJY8=qkvIB(R0`jjCle7z=$;X2d2D&e@BG#8vcQSKshi3=nb?@N4}6dFdFCwj0Xk+ z(|{2`EieXX+8y`~=?T=TksmAf zpgYh@q~-oVKVS&C19#JX6)jH$MpV;sH82WTLiZ+GE|sD@)POuN5V#u{0gM5r)Py`R z-VE}DwY1!#H|(i{@PL69S{?-StEc4=bYEY~qX{ixFEG9l?Cb-1Ys42AZv*{6i?&)G z5A*`20YiXVatE3+q#Mu{7-0wdfH6QXpu7X(2ejyfbOPD}l|U^}4OH7BePp-?S^+J( zz)qkX=m(4d1_9NMuoIXfLHOh@MfgB3ps5q=0onp%fKs3q=miw@M)*KALwXSp+)XG$ zdXc*m(i!LlR0E@cC4_yUr!U<5Asv8Tz#w1@a5qpcM?B~rmv`bPv?h{XnFH9QQye(8~?!08|4bfLeFt1Gx`EegXXk zBmT~?(*xlFqk!H(+hMSmcrVxqlmpX%@xT(G#c+hvANdY+07d}afiXZoU;}dFqk!>YNOxe= z2G|b_+=X}pu)4Euq83fK({yaN3m;IG0iU|<~b5f~qj@(R=@Am2TauXhoDpf(Y90;BGuTml1M zB0q+}t~8`GFzPkzB7B2z2-A_yK&=|#422yZAqR~31b3h)6Z(J-pJ6vp4J;w|Y^2{X zg!={Y07d}iggLMi==Bx$0Aq5Ij==alq$A-sq#scI9pQN)o~GZp6ezFxjr##p8h_)v zfg+o4TnP+u{Kiv&w*9|x(QxP+@r~O7<41nu?sPxy8}|nWuKUJAfGL~ckNAjhJR2z5 z2Kf=tvjh5p+Fj5ORA2nYtbQJVf zFW^$3pBQq$_?nOdifR>bEill$fLo15y4HalFt9n~fFj!h9zocufGY`GLoZ>Q0$u`) zu`A#XV_;W@0v-so=v2UC=)Ow)#daW zvA2+y0Amgma*K(u=TITHBRpEjHIt1-2p_Z+&Z9N+INb}( z%=?>J4y+|!U=l1~jU?^5+BPSjB!^~RkX|Q`S8t6ACo}VvLb;i*PYpA3Co>Z_F*qC) zjz7+Xo_Sp7(Z$Ssgqews4*{PJ-WXVRko<0(so>j`kwD^OaOQ$}Aaxum60;4_IQ z{WZ)?oW&FHJ5}t8UsuELG=xj}iWSiU*WP*jVIACzHQQ*kP8e<+Dq2~^mbAbMWF{2Y<6VJU)i(GSmlq;Rt<&kc)-RxN@fS8-j~Lq}yHZHcUKDe=$%@_U(qA zX_xZ&G!X@)KPdbd@NtTNw~zd#z&#!AVHNxlpACLgTpq8Ac$XbiE<}*?yq?E@5U;b> z*aumL@*o@pa25-L$|Fd693XFVGmqD#_!$o3-N9Sl%H!=S@N)2e;O%ec@w{^Vu4chT zLKHk|A)LjY`U?-SFdA1#86UCGPtOfAG#|S8^l0eGxRb|gBOZD?NsqA{wvwWOWr|#M z7tn*ohwM_rUlQhNE8ANFKH>ha_ELISpuD6%$m4qq_J&ems2F_&%%+hu3 z(aI{JBI8GhChRbFs}6LgxKX~RK|Zxk{x9tb#a9bH7yLY6Svis!*Mbg8Swt2G$yrrH z`(TpCXAl89=jzO)xH^kH3@r_XBZr&~=GlWu&TzF#PK zGp<&izrMP})v42^uL$X2GbEqe=qcSV#mfqO8}LZ3@`KXd!63hhG6d;P;~g{&r;%w$ z78kKltIs}EjP3fXsbccy4}W1J^7*+6{sN4J=u63;yLi0*!dYyrHrVQ>>j$FX&)hqo z7gM`uILJOF_#&TtUbBn@5}yJ-7rad+KHDH)F+LhCLc1D2r1YgiYX7#y6%?z&5q5fpdmjDbG;Ie0HsuFp+xPk^!VZ+(5m!ujPo(3Q_F(?@3M z`qL8Vi4Dx>=Shz4c%|q1#`eFTFa?)E+^M>X(Bl#-n(T_nO9q72BPSM#eAx zP7vL=j_mb=eC}$z_p`>$-}#^$AG(;u8Bx3N_xR97Y}}eMMn7OgKIqzWYA>Rpr_Hf{ zulMAh2zS^2!rcz;*>Il*_uF_5)7M)!vtU!>ViSG6lZ(gdFIq|XW!%ftlpw7CAa zc18;KHgK<7-p){G)?c4!$j(5$I$eiC<=r3hmemdVNGA^BL%_?xchE8VAL4g|AN4Qt zG2ny2cd8^$OCYy{cdEcsJk;Qm!21)A`T@Jp$j;E^Cxs)zgN{uN%`g26@mAn1!DAYv z{2<-|yf1jaa#o*S?%-p=FC@M^oVn%U_>(@dhR?6y&lcAq;Df<`BVKMMqYewrCOfrW(GQ2v;PvTo;iA6ad+k2=@fISAHH+gU8qvr$Ma-7_{d7U9P(-4Gr*sr@<~At)}@zDF>1GdAR`>EOJ+QZAhCb> zEzdVwJV<)h{%8E8;8*Zmeh%u3OZ7T64;ETXl?q@B~u9Lh&C3!pWmJK!k7;n(J9&_*&$EOr7t@AMf zU%`BxJ+$se@GtVT4v6f5S>*?{+q5o-MqlX>pOAT@qzYxfoH^X~Kk{e}aBm5nOV4&C+zpmn; z`0X#As;^Ck@(=l3$Tz3(G5#F~M~ZhMc$4ND-tV9BzEB=-H)>aZjkgGyWn-)1?aALL zGfyF;P5Oz22LT2%_0NBhYtu@@KkDuD6duycEvz615rG$ea$9Tk>xe{yf65Q_0|D=BKT3@=aUEBI17W@@_9JSl$@t=Rr!Ed7h}>Vs*nD|QNz37n#$8m z#DjP%@Co26hwlJB4*VgKHykAI4t`Ykf3^>P;61?)FB1lmd=U8U;9FJVBfy^l->niK z4L%h--93=j>nMlgZM!3>EKUN`7#{T4uq4w-Wr}x z9P(kZuGmb#ua9A77ITOuGcY>U>sLa)O&<-Xb(v*{7cNr3d&)HY3&jKT>??)Bi8@vE zK!ApYhF5N4R5ujL0lHr&{Cenme-H68Tss+Lf+#AwgW^l;3p1QF{1Y)WPE+Vab?#J8 zY29ILU*uY}sQ(69Crd+F<>t|6itHB9WSFZ%SZfYK)ddLpr|YgVOvhz4II z*YHJ^_;~QX{Wbh{B|Z(jrK^U2&{?SeA^o&&H5a_D{WiEsfu?v7kUBuaBg^akV00O7 zW%b@La6_xI9u&Hbabh7^jw=t{^SwL#_i)E}tK9z}JY|Ye>GbWIVV1X_c%+`8=M1tZ z1pdwp{->S0!H0Qhc#^?J0xBml;ANf~KG6_PDEcYP7rMh(Re3wFd-~Ep=cyqdJXFI^ z{bHA`!7hvhU11MeNz7azN6A)qG36(%`z-RpI+pV1UR^&r2yX(6J^y~rLy=cj2v%t5 zU-WGy>G6Xe&rupa%1|y0_6|Y`x(bgd>5wh&kL7fYbS;1Sg$Dh69IY>%Hd@1%Vje>< zFw}UZ$ivJxTqvA`VkpWAyr{S9V8B7zPhGKXMJr(C6 z6CpQhw&s_487kLm@MpmPJq{TN(=f;|_cSvZSyub{>EF9hBvNM9%xI8FF;!;t%;qtcSGGG5R0k zgTNmJU$Gyjbd4~`XOQS1GaI}VqEQh&50@2l-FQz4xoKEmc}4^|-MDxlnt&b1SJWX) z+T7DuX3RwVp}!g>*7?)IU;1hde^Ehd4o>{Z&OABi4Qc$SBy9D;RgAsmE>t1w*6)e7gP#Y3Epzc zKc53rz30WjvR$KpU+tow zhot=U18)Of*AM-jpM#N~Wv_8`<3d_Do&mWPq_n<*ZxD!bBBh1CpkmD z+sx2sF`5~FeLm_3oD@Gbg}+n7dy>52Aie~=EBN+hB#?Lu8? z2IU*Ptc(PrY6-k;Fn$C-l6bstMq`L}>vvsD$X^iLO?Lg-t`HvqUI2a&pzI(%+6L`6 z_@QMakiv-v9}M1)`0{Y(m4~B-dlKA7kh|d^ez4&cvJ;^mNc2cH4{g%NI`ccwnQFn~fwC4?aa=ym}5Nhf-?Ex*S}CiX#q@Ob%X|}kpAZTE7zURgl%Lt)kAnZN$|HTx zkOB9~&m*?r1qU>|N4YkA`bfdI0blv~!VA28CEfvk{lWJDf132@^2bF#M4}mpnMrf^G%+#l4F3Gr|$JK%Dg^4 zrVvhu((tDwXE-Q7Y{73ltl_K@F9jcasXzEO;48MLlrA9#`AE`_ zbTNz%JFt(*|l<*gJ?4RvX3iwFyH6c@WkbE}y?f=4yS|WbnE0!0M zw*pV{6?v!-(03-JpZ-y)te*J_lgb)kkos{teTTB}1nRF)FK2kKuX|aTULG0!IFj_z z_bOp0HQd-BPwy22XflSz#}(!$VjvfA8uNk`!nYT0`iC5S?=tO-hVQH(=P4}tMULtP zeGijNzNoE-B%NNHW6z%8YNE!>mNY4|W)!(ApEY-U1zfE2vt`HJ&Rx^)Y>_`N8P zpZ--Ch2szT9v3wH1jP^UdyRx|5Rm>sh1|p8o^T2IR_>mttJ-kV*%1x**vlAy5JB~S zjF}0g8-1@M_)EhJE5sAC9nA26qg#STa`Zhp?etlzyTS~_e z3J>o4$z50e4e2NouBeoZI{RWEZxfICwF>sx3y=Jguas}}9a0;7pHh|d8V=&=yCfU% z)yha9@${XNCHND>Q&bL^ndtH#{2B0-=ZEM!rqqAYPv12qf!Fmfqzeb>q3@h};QN@$ zJbm{R2_BCrGhjpAe@n87!Sff9i-nDd|a|dzur&B>Yw|i z;Ez7~yM3qUz(}LNAG^vI^HDoT;h;?*yXd>QGx%O=N_jg^{*28Hc3~RktzLexVf_!} zbMgJuTSM3cWEXvJm+;K+-oW5S`IQ1bE>*)z4e4#@cU-WZOnAP$LBaX}nw{vUv&=B7 zt#6MkU}W$M4R`+4zNQBI28e~1%Hu=f$sr$^rs3U1xcR&NqV;RStnwi6UY}ClFdbr; z4%e@LBmejgEACf&`%@2*Q0@ayz<6^RI1|i=xLa7AbaiLo(lKsxGp=8qyjnkB=8l-BLTvf zdfR-&o;n*19!O6hx#VjSS_B>KT?sx*N(PTDM*L zu-x_ai@yJ~FVOI;3i7C5mkjc*V&f%-OZ_@qQ76=|ADVxx8@B@QTKsEzlAR9VW#B8@ z?+$(xcyue}2g&<^4**~J`5_4WcJLL`ljP}p)Q#YuS1L!*q`&l^_QZqt1g|X*RiB<| z;Ct|Y>eqs|2VXIrDO^)~lppZ@E9lX+|KKCRmlAJi|Lujd^l9#@kCL9ucc>y~Zk+(Sq|+}#cC`p3cmU5`cnqu`$O-}sM* zySb58{~iYVso3I46EoWS@YQe+hWm7bem|Z2;&T0>&d?9{1$uW+TEiygM>)h#WLAe@T{>dR{U-iG%;|KQuxc_&0sGf&IE(3D9 z@s+Ne^+#i67+$!F{VTR3Bv0QpyH?Zks^#q@$*dJL-i0jU0s+0y$X?EuTx{ z6y0-?z6{|`H{Pf3t|M#W`!FJq&(!Qw0jK;b%TFq&^j-FmSGoLEnOv%w3F%jpelsoa zL%b`!5ByE10I}A^SLA^D3HN_1|K#5m?s0I}wHGKS6*~?JR}S}FxQ{3OhJ$!-@I7j2 ze;Jn%9|&FszHXT?koa)$uHc(i;3=P@zNOf=4%2eh?oGej#`? ztK|pr@!$i%S1D%=?LYWw|H5kx`YXy)KASqCe}O!PkB0g&S=UC=Eyb0-vnPE86pvxL z&jZ%sC7f=ERaOp3&I@v~dRjh{`Y(5yZyJJCp6i9{jDxcGyIstZjOZOL8H8a-jA0mp6d}Fze*@E+X}JmM)rszdI?U*wEYqsDi~f(m zvxSzsL5$ibq0G$00hfv3!@%#W5dVO(SGpczG~fD!DEqjECPv)hPlSO1v}IA zpPrD1fnq!-=q;YDzvy4K!UnIFuIQO{R*WYiD%xFuI4cdB`fmvxm+H)jRtC21|VZ zUkle|2k~Cu&B1>uBZ0*GgU|REJ_LMR*I(O7vU@l91n`Fb`(OJR(i;ysnS=Hp>t)iw zPXj*~GGzzJYr#i?XJsUic+*}84}9hL*n*D(U$I>#d8t7@fbzv~5bp)v#_@l(ckSU- z6j%Im_Yxx^AtJ@7s8>a#7DChru|`bD1CRg_qoSfDkU#<<2}z(qqecTMg(QF=pdw;@ zR|Ra!W*Skdk8%$&2CyW9XO-`9Vf@0)wh`JKnk&hF04 z&hE|)g}ui|cq#Cqz!!)yDAoI7;46V|BwQVz?6@=xR`ki|pQaenAyJ&iVDB3h3j6+( z&XXO$qk;FM<2RoAIcszPr-J`hzW;-M?|C8TZDT@=;?epSEo1OqIiJIT^z{$CW>Uy` z#lWdAp!G45uztXewBPEzd78(6N($^=Ep&gaubb)aF3|R>;a_(p))S!XjT7OGw7siC z&KA$O{~qA+1tI4RF$N|3r-APRj@vsoC4<`uyaV``d|fqQ9vSb4SkH5FlNH0SvZTkP zOQAF2*B3kYU zhd33pFkUgv3p$@mfu|IQoM#Bv$7d;ugxm8%x1XW&VGZnBOG5hnpNZ6e;N=KdjscNDaOsZoyGU6ljuE<4Eip_ zDx(WMTkRiOUQ7_tRgXu0+)m`cKlyz0&t)NJ6m3tvw}5(TwzAy!7SIMYM5WVv3z!3m z#xzih=j$m{9?!T?y(~t&-13m~D~fkjTwRR&ooxeEkFuog(mE*Z6=?SZvfZ)ncU#@> zOYnAE6Rb@*S`oIaCgdsJK8jZz(%)aH{lNP!{2f@9`~C&TYl*iuTM^@_`E`nyGaBtj zO~?tl^%5ywCe;fjXQKW8iBvkop+xa$U6=KXLe86XoK*SL`yuK(HMPHHJ=Yy=J>>5> zAl368#2Z>0avlMX^8{T;PTb09yg+0O@H3$rfQE4^>|Tt8fbBNZb%(4Y#;Sq9Ig@lU7Wfs;5G<(8selZ!@3t#ALvD*t>fu-$e0+O2cFo?%+bwER!pTdgjCP9h||9M5aM*Z>o|xkap<^iL!6E^Jl;^> z5%#8f#NZ^)ZC9wC_P{P>EylO{y6@ll1 ztyv5;@7V~uU9ejoCw3EJqsp4Cra*mEV{dC6m)}Z1f?Ox7URj<0@Jo7;+p!4Wk$wPu z+AASv{y-{#PQyTGJ){TT4>`BffJgTG3Urh+)t2x*@uz;-7ut_u8K_^Z*RnL;u(zJ# zVgW;<^5ns;u9q$A60~^NC8&nJ!f*GuF2Ne;)1qzXHzQO?^+U(^Vc_kfZ092LIQd_$ z?@d$QsyZ`btm9RY!{+lpfM0y7?Y!eh5VfDE*D3XZM$4L_tkFfL(T<`?NrlOPOpJ#{ z+wS~-gCFNZma?Cxb{13d8^}HrQ+^;BF}e6v#Z<>J5B{xbwzJUOURI-ZF}hcL6c1Z8 zEe%A`!xm{*+P_BlC1lvnOw%s|$78B;!gGgua>C5V9PI?3!N|1URBjgP^Ee1{9ItJ% z8ZmOf(gm;`uiyWt`1!Cik6(@2uN1Babv+Eo!u3#LJ88I|a^sbw9Bly|>~bRd3Zi~0 z6ZReV+lQs!qk33_cr6duPP$tU*>b$z=lU<85^(jaW38@#`0e_I?L2Ntx#3qp*G^NQ z*|GwbcEZ97aON|Fu7dz3eDgQk&S%t~sQN>@aV7Q_U#G%yLQDmIp`t|gv>sQ|Ry%Bb zrrs#&VSGmGbyYlShmFs){r=-Kwg0g1_@(V!si^keKbxo?n9*_A z0l$RD?ZY-M8#EU86Ic&P-N&L|jn}Ws?ANbk!Y=pMcEo;#>Z=g?{HJW^S+||R{$ydm z*c2G6TDFJ!xfM+3^BUOuUb3AgIv&)YTgiGHi1%aVIFQ}buq%Gq*3bEr9X+C>CKx?1 zh8ZwX?GdeCmbSx|@k2|rXZ%3xngw6AW&8kr_xOR1$6)Avui4K10Z?f__;_UCc+|>? zwS|s{ZuzMlnFha_*KIxT1;2WfKjJunUOl55C1ZR*{u|(5{Kg^pyW<1@6d4x`fd6jz zPu*!d&(rn5iEvt%Eq<5n42%*~_s_IWTf)2HxY~c$ z)8k_5Osz}Q^`oyFvJYH{@$Me9yYBHFN8d9Z(HPa#yE(AJvYu6~qdU$|hJ8l|u4me> zLl~FWA7os<81ZsHxAnL@#~7E-#%av=U3AkP)J*`_X2q$OF>dr{(7OX%K*k3m{EM(GWMa=KFZb2#HExiTn z!gXH{vTnhH-SN=9V?vf=U}RDtys9F)9v?%Tj&+^RYKr5oTd*D>^lS@;mWo3|T_9H^ z)$1PkO~v|ccb^CW=dHO;Rm61&f>hDC_d`Wt9Rl?vd>CAlC!&9TveRjH$G@)e8P*jxt~k)V&(pAfa(GwRxI)|SKdzwu zWDo39Ms$7ad7ojEalN0}b=bxiwTQPD@pycJ^>6mSZ>96$9@wRw-E~;{2Wl@vh!-5y z6}Dav;eB&apXYWtAJcWkiEvs+b7g9mb96vZ-Cw2xU!R8c2tD?Bz;iRY9NUAJ0#C`t zx`YNU5qqJHQqL_ISU`Oj(wCa}hBGBX>*TFry};?rtY>@!%QKnEGr3JH3&Eo>H~rS- zFg;}OCYuLgiV1*U&D*>T{4WgMTBD3x7>_gbe>ZrOecTXUV*YoazebKh{;3g{)xO!n z7&Mmo;jmw9_|W|O!^md>JI=t#{89QrT4dmA9HC+Ldlc(d7&fH%0pwU@wXT<8uhvI_ zyb3xsXJqJvHHKooX9WcPgTePPc$~t%pCF!@8X;VQT&D(k(7;bq~ z!XqxTLk4nZE|K7CFfBTBh_p*j?aDke@^@MP7-# z1DR5}ChGTQ=BWu=!n|7FjQJBlKV;q**7;6ij0n0R^4mU|&S^)2e2im_vX(VXTnkP8?i5(MT=D;P+N zpd(ch<4<`VSzZ#sFT=n}4c-hff$^C==uO)L@t3fFCycH`?hQE#`M(jIX#V$dggE`&s6MUaA5$Mk%*pu1$5o}w5t?R*l5aay}ztO;ci2N5| zm$5z#{8;db$ZvtqM3!_8+aw6UbQI(9Ea$QOj>qmu#s$6sauI}R2L8tM6)^xE3Y!|1 zUo-F@d18%$e4Bw4v+W6tEn|8UD18@xD$7@}-89hKflWp(L!J(KH0y+<0DlC+xuBHV z)GwAcW|_o2$e%M#WG6DcFL144LwJAWeB|qaCxb>xXB*%IgBSKeVLWuRAy@HsvzV%H zzoB0Uc^+eixnk!V_(z8FWX2PLZD;&ELoe*rusZ^I6@Y1=H?rT2Y;Zf%CUIao7W8EU zyAS+emQOQqVuu>?`5fPX6ng>VPq5-t&|8>)h-nMc^-Q;d4usz?Stdf?@h2l6&+*i{ zMZiyCd6r>I>;}fmz~5x(jsU+5xf1#Y#^)RQp4dA$UL^f^L-&(N1_m~Vd2<~Yf~FfW z4D&-~`*{3Ez;hU|pK^qa9=#cO;sJDIw~LKyJa%WX{Ja^AdCP;n>5&VKSPyt~-$p#z z<5XuZ za5Lm{;Z%4q#~$?0dGLRGWD(Ec?T#?Ef3+waiDv9u=ytN*M_m**pD|1T-a+2{U`wq`a^^NChV|pV*I`B z_cic+4gBA0z~LkX@ydcrlhLoQM&ej;EXz!M+qt2PWqtd5QHl$&ylJhzQ?$R<%W%~B zwW2rcTlof5dtu&WpjPx@{S@9%49f{jWo*{Ig+_@!ABXj&F*AVeXsk@>7)^Xjsc}aV zJbsdvqc!o>aNr|ZmhJ6xbouiqYQeyIvz{c^-Xx zc>JVRt>4t7{d_~h?Sr3$%X{e~(Fm!N&+n)_tsKa72-A^FvzcDXbQaTvOdFW4WqKde zCz!s#^i8H8G3{g;bqQ~u=@6zPnPxM+l<6#{EnCB`j~g&TkHue>&l`SL;+f~*Z^|iZ z|Jt~qFR`k)s=BheV1_TTth~A?adz2)#2E`p@WFt21LHe8Ny_(@dT z(D7ze!5Sr+URX3^!R*qKvbnl`zw0lxQ`ELddz8YA(7~P!gr9|aPTusN#{NQs2k{>U zeJ9!y*}k;5LW>9J0J2?a_ay8{FtiWiFYU2QhiFT>s>nwCrJWoNjG9pKm-bz#wC6BU zNw*dv>E|-kR*Jv0k3vUt`z+-bJE3&BQrj%DwAVuGcvDnX zm82XZ*MTwp+qnG`D)ZQ4Fa4d+|2p=U z`uDZ*_LwH*NsZ|UK?%h4PEgu^@ed~VQyQV(duwm`@AvqpvcJ&XN2ze`kGK4fd;Al! z_4b7>&UIZC6TUa-hk?qqNd_|h61tQojFDu!;xF>=p`-nm@l`ALi>>r03P|4l6@R6~ z&kM+=e;fO^9isoM9{&#Z?_huL_Pp}z@TVg#<(GbaFZ;Jr;gG0~D2c!9*W19%@^9Zf zLfLKK%;y37E70(lIBmd8e;J>)Z_)m{#F44^38m+MroZ&xEnBreH{Wg)@e|-vFoene sw{ic!ll{kuAye6JfkR+CyQoy+@7=!F)-1ckB-+l~r}-%}c|_m;02H7h4gdfE literal 0 HcmV?d00001 From f5f686dc78aa98e9c654fa8ac5256706cf5a24b1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 9 Jan 2017 20:25:11 +0000 Subject: [PATCH 263/729] Forgot to remove from i386 --- lgsm/functions/fix_glibc.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 84c244a9e..8580e3e71 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -20,7 +20,7 @@ do done # libm.so.6 -local libm_servers_array=( "Black Mesa: Deathmatch" "Codename CURE" "Day of Infamy" "Double Action: Boogaloo" "Empires Mod" "Factorio" "Fistful of Frags" "Garry's Mod" "GoldenEye: Source" "Insurgency" "Natural Selection 2" "NS2: Combat" "No More Room in Hell" ) +local libm_servers_array=( "Black Mesa: Deathmatch" "Codename CURE" "Day of Infamy" "Double Action: Boogaloo" "Empires Mod" "Fistful of Frags" "Garry's Mod" "GoldenEye: Source" "Insurgency" "Natural Selection 2" "NS2: Combat" "No More Room in Hell" ) for libm_server in "${libm_servers_array[@]}" do if [ "${gamename}" == "${libm_server}" ]; then @@ -29,7 +29,7 @@ do done # libc.so.6 -local libc_servers_array=( "Black Mesa: Deathmatch" "Blade Symphony" "Factorio" "Garry's Mod" "GoldenEye: Source" ) +local libc_servers_array=( "Black Mesa: Deathmatch" "Blade Symphony" "Garry's Mod" "GoldenEye: Source" ) for libc_server in "${libc_servers_array[@]}" do if [ "${gamename}" == "${libc_server}" ]; then @@ -60,7 +60,7 @@ do done # libc.so.6 -local libm_servers_array=( "Factorio" ) +local libc_servers_array=( "Factorio" ) for libc_server in "${libc_servers_array[@]}" do if [ "${gamename}" == "${libc_server}" ]; then From 0db7db8e8434808c7df2600f3d4bae413cca1a5d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 9 Jan 2017 20:54:25 +0000 Subject: [PATCH 264/729] Changed back to start-server save as auto save was not working --- Factorio/fctrserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 88f69b1a1..326f48077 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -31,7 +31,7 @@ ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters # Edit with care fn_parms(){ -parms="--start-server-load-latest --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" +parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" } #### LinuxGSM Settings #### From da76b7f707291e8f38cabba54ca0d74b785590d9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 9 Jan 2017 20:55:09 +0000 Subject: [PATCH 265/729] missing then --- lgsm/functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 8f86b3117..3af2b7ac7 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -756,7 +756,7 @@ fn_display_details() { fn_details_realvirtuality elif [ "${engine}" == "seriousengine35" ]; then fn_details_seriousengine35 - elif [ "${engine}" == "source" ] + elif [ "${engine}" == "source" ]; then fn_details_source elif [ "${engine}" == "spark" ]; then fn_details_spark From 6fec3d13a48849043fd542d1bc8c30f90bee07a9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 9 Jan 2017 20:58:19 +0000 Subject: [PATCH 266/729] Added factorio graceful stop --- lgsm/functions/command_stop.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index c5483a864..2013f85bf 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -58,6 +58,24 @@ fn_stop_graceful_goldsource(){ fn_stop_tmux } +fn_stop_graceful_factorio(){ + fn_print_dots "Graceful: console CTRL+c" + fn_script_log_info "Graceful: console CTRL+c" + # sends quit + tmux send-keys C-c -t "${servicename}" > /dev/null 2>&1 + # waits 3 seconds as goldsource servers restart with the quit command + for seconds in {1..3}; do + sleep 1 + fn_print_dots "Graceful: console CTRL+c: ${seconds}" + done + fn_print_ok "Graceful: console CTRL+c: ${seconds}: " + fn_print_ok_eol_nl + fn_script_log_pass "Graceful: console CTRL+c: OK: ${seconds} seconds" + sleep 1 + fn_stop_tmux +} + + # Attempts graceful of 7 Days To Die using telnet. fn_stop_telnet_sdtd(){ sdtd_telnet_shutdown=$( expect -c ' @@ -175,6 +193,8 @@ fn_stop_graceful_minecraft(){ fn_stop_graceful_select(){ if [ "${gamename}" == "7 Days To Die" ]; then fn_stop_graceful_sdtd + elif [ "${gamename}" == "Factorio" ]; then + fn_stop_graceful_factorio elif [ "${engine}" == "source" ]; then fn_stop_graceful_source elif [ "${engine}" == "goldsource" ]; then From 12a3957f051d706562e7743d4d62fb1f15e7cf19 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 10 Jan 2017 19:50:08 +0000 Subject: [PATCH 267/729] Changed to master --- Factorio/fctrserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 326f48077..ca21b262c 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -67,7 +67,7 @@ logdays="7" # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" -githubbranch="feature/factorio" +githubbranch="master" ## LinuxGSM Server Details # Do not edit From 61e6a7d2885b5298f346a2550f4b7854615407c1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 10 Jan 2017 19:56:49 +0000 Subject: [PATCH 268/729] Updated to release 170110 --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CallOfDuty4/cod4server | 2 +- CallOfDutyUnitedOffensive/coduoserver | 2 +- CallOfDutyWorldAtWar/codwawserver | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- EmpiresMod/emserver | 2 +- Factorio/fctrserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- QuakeWorld/qwserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- 66 files changed, 66 insertions(+), 66 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 99f77df29..4839083c0 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 9912429cd..569be1483 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index 77cb59eb2..357253709 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index d9c0537e4..42d616617 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 6a599555f..18f0647bb 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index f4214061a..e0ea10bca 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 5a9e401af..540d50873 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index a5d88b91a..d78cbaece 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index c7277d16b..ecf79db64 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server index 0290ab69d..8ccebd949 100644 --- a/CallOfDuty4/cod4server +++ b/CallOfDuty4/cod4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index d658af116..02f2b8b09 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index 15a984e25..2f3e93fae 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 93e6595c5..08eb09a3d 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 9853a148c..c23d9c988 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 69c68a8b7..3e25bb09a 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 6f97641a8..de6450a99 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 554b1ee8f..dca4bfa8a 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 55ade1e61..d9e1b19c4 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 45b0407e6..2e98b7771 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index dbc17e178..215a1d8a4 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 2c7ed676e..a0e438363 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index df915813c..99239c49a 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 4bfb6fa9b..821fbf872 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 525657530..d64f0491a 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Factorio/fctrserver b/Factorio/fctrserver index ca21b262c..948af8b31 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index f57dea7c7..8cbda31ac 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index da7bf61b8..a73ac81fa 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 4714c9a64..b5c7aa25b 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index eaedd7e05..bb4f2c73a 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index d82e3228f..c2a95d39f 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 95c542c99..707881508 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index af38201da..43a6e465f 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index 4f7d585a6..722fcea46 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 3112912eb..d36ef0a00 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 0cd35653d..3227bdd58 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index f8f4f84db..a6446c8bf 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index d7c3a0fcc..23902ea43 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 8d0f317cf..74e03c6ab 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 13f8a5bae..4e4a28f4c 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index ce5348a19..ccb7de1be 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index a449c704c..d81b3b5a3 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index ea7251ab0..54e59c299 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index b75a9d67e..5d347f06b 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 73702aeb5..56ad17438 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 70298be30..c39c86f5e 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index 98ecb348e..a1ff9bb75 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index 78f68fb21..1a64eeb1b 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index f0bcd183b..73047718d 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index f1d5a43ab..7e27f0a89 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index cc8d24232..3506d0285 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 0775d0f75..8a7658131 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index b7848b97d..14d9e4e42 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 577205ad1..33487a651 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index 45136f09e..732a1d9c0 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 0be845023..b2e7f35e8 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 4db8d44c6..a278d0921 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index fbd933328..beec9da19 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 5fb6e174b..d1d97c172 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 45b4a9bf9..4dab7b02b 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index f76c5ec53..c86a93734 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index be80e850b..49d955329 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index c29fe97e6..c235f0746 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 5946ff18d..8a839fc92 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index e0b6a2539..0a62996d1 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index cdcb14e2c..564473568 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 697176aec..cd765b480 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="161224" +version="170110" ########################## ######## Settings ######## From 01011b5360455dd0f6640f61ca5ee9e8701beaa1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 10 Jan 2017 20:12:21 +0000 Subject: [PATCH 269/729] Added engine --- Factorio/fctrserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 948af8b31..0d10ee24d 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -72,7 +72,7 @@ githubbranch="master" ## LinuxGSM Server Details # Do not edit gamename="Factorio" -engine="" +engine="factorio" ## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers servicename="fctr-server" From 2d97072581cda11a5ae2cdd599d3fda77ca2f068 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:27:28 +0100 Subject: [PATCH 270/729] Revert single quote on ${steampass} --- lgsm/functions/check_steamcmd.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 79c016b58..20a36afea 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -58,7 +58,7 @@ fn_check_steamcmd_sh(){ fn_check_steamcmd_guard(){ if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then # Checks that SteamCMD is working correctly and will prompt Steam Guard if required. - "${steamcmddir}"/steamcmd.sh +login "${steamuser}" '${steampass}' +quit + "${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit if [ $? -ne 0 ]; then fn_print_failure_nl "Error running SteamCMD" fi From da6b5087b7e80be45c942e64e711b03c7ba00ee3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:27:50 +0100 Subject: [PATCH 271/729] Revert single quote on ${steampass} --- lgsm/functions/command_validate.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 8b55aaae9..6125ed513 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -24,9 +24,9 @@ fn_validation(){ fi if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}" else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}" fi if [ $? != 0 ]; then fn_print_fail_nl "Validating files: SteamCMD" @@ -54,4 +54,4 @@ if [ "${status}" != "0" ]; then else fn_validation fi -core_exit.sh \ No newline at end of file +core_exit.sh From 683fe847f75972a0ac452c31b28e574e0b8f9f0e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:28:36 +0100 Subject: [PATCH 272/729] Revert single quote on ${steampass} --- lgsm/functions/install_server_files.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 896347388..792cb5e49 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -78,18 +78,18 @@ fn_install_server_files_steamcmd(){ if [ "${counter}" -le "4" ]; then if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} +quit local exitcode=$? else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit local exitcode=$? fi elif [ "${counter}" -ge "5" ]; then if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} -validate +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} -validate +quit local exitcode=$? else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} -validate +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} -validate +quit local exitcode=$? fi fi @@ -107,7 +107,7 @@ fn_install_server_files_steamcmd(){ counter="0" while [ "${counter}" -le "4" ]; do counter=$((counter+1)) - ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} -validate +quit + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} -validate +quit local exitcode=$? done fi From 7ab3eadc0ddae4f4a63b08643ba900c7730f36e9 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:30:35 +0100 Subject: [PATCH 273/729] Revert single quote on ${steampass} --- lgsm/functions/update_steamcmd.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index d2808974c..167daf5fb 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -26,9 +26,9 @@ fn_update_steamcmd_dl(){ fi if [ "${engine}" == "goldsource" ]; then - ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}" else - ${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}" + ${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}" fi fix.sh @@ -156,7 +156,7 @@ fn_update_steamcmd_check(){ fi # Gets availablebuild info - availablebuild=$(./steamcmd.sh +login "${steamuser}" '${steampass}' +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"${branchname}\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) + availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"${branchname}\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) if [ -z "${availablebuild}" ]; then fn_print_fail "Checking for update: SteamCMD" sleep 1 From 46bce6bc5be6adc7338fe610d7ae98f43a429c80 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:32:33 +0100 Subject: [PATCH 274/729] single quote password --- 7DaysToDie/sdtdserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 4839083c0..36bfbed5d 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" From aef9c2d3891477d9f0132869975d3cffcedb8877 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:32:55 +0100 Subject: [PATCH 275/729] single quote password --- Arma3/arma3server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Arma3/arma3server b/Arma3/arma3server index 357253709..8898beb93 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" From a51bcf0b8445ceea80ed39a7819c7cf5b5ba6f15 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:33:06 +0100 Subject: [PATCH 276/729] single quote password --- BladeSymphony/bsserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index e0ea10bca..0bac17035 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="duel_winter" From 64a5777bee1be6e489320f08ef0d22d73466ceab Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:35:03 +0100 Subject: [PATCH 277/729] single quote password --- BrainBread2/bb2server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 540d50873..50e46bf72 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -23,7 +23,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login # Steam login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="bba_barracks" From 594a636ace1d9f498ce8cbc8dbf8a640371482a5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:35:04 +0100 Subject: [PATCH 278/729] single quote password --- KillingFloor/kfserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 3227bdd58..e42dd92a1 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="KF-BioticsLab.rom" @@ -203,4 +203,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 447bf80a9c7c8cbc8d86dac652b461d13216b8dd Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:35:06 +0100 Subject: [PATCH 279/729] single quote password --- NaturalSelection2/ns2server | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index d81b3b5a3..c662ecbd5 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="ns2_summit" @@ -208,4 +208,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 9a2cc8d8bfcc21db903242ee00e0e5ae905d40ef Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:35:09 +0100 Subject: [PATCH 280/729] single quote password --- NS2Combat/ns2cserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index ccb7de1be..b5fcd7b8f 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="co_core" @@ -208,4 +208,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 461021560999715dbcde9aaed3cf22b60a936275 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:35:11 +0100 Subject: [PATCH 281/729] single quote password --- RedOrchestra/roserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 3506d0285..8170bb53d 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="RO-Arad.rom" @@ -205,4 +205,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From c1308b55b04983a8bf0c2d5cb473a7f9bbadc330 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:35:13 +0100 Subject: [PATCH 282/729] single quote password --- Starbound/sbserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Starbound/sbserver b/Starbound/sbserver index 732a1d9c0..e6b37dc71 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" @@ -197,4 +197,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 0310b3d00942570bc6af805ea4228c446a875f03 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:35:15 +0100 Subject: [PATCH 283/729] single quote password --- Teeworlds/twserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 4dab7b02b..4a9684003 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" @@ -198,4 +198,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 994eda68e6382ef9e60af0cb8f7ac21cf2d7e589 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 12 Jan 2017 22:35:17 +0100 Subject: [PATCH 284/729] single quote password --- Terraria/terrariaserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index c86a93734..a55c57286 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -24,7 +24,7 @@ version="170110" ## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login steamuser="username" -steampass="password" +steampass='password' ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" @@ -197,4 +197,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 95942d7e51e94edb69b4bb632bd30a77fcfa9356 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 12 Jan 2017 21:47:53 +0000 Subject: [PATCH 285/729] changed quotes --- lgsm/functions/check_steamcmd.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 20a36afea..25b73a70b 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -31,7 +31,7 @@ fn_check_steamcmd_user(){ fn_script_log_info "Using anonymous Steam login." fi steamuser="anonymous" - steampass="" + steampass='' sleep 1 fi } From a300a15df2d8b596e1fc1961e0d6c7bd1be0ef42 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 12 Jan 2017 21:48:10 +0000 Subject: [PATCH 286/729] this is a anonymous login removed steamuser var --- Ricochet/ricochetserver | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 8a7658131..d3165f2fd 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -41,10 +41,6 @@ parms="-game ricochet -strictportbind +ip ${ip} -port ${port} +clientport ${clie #### Server Settings #### -## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login -steamuser="username" -steampass="password" - ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" From 1b9e0bcd1b13cbb12aca510a0ddd50062b76c637 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 03:12:01 +0100 Subject: [PATCH 287/729] Fixes #1235 and more No config alteration for Ark, and requires to create the cfgdir. + Rearranging presentation to make more visual sense --- lgsm/functions/install_config.sh | 73 +++++++++++++++++--------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 10a7040d2..426bec9c8 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -8,35 +8,7 @@ local commandname="INSTALL" local commandaction="Install" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -fn_fetch_default_config(){ - mkdir -pv "${lgsmdir}/default-configs" - githuburl="https://github.com/GameServerManagers/Game-Server-Configs/master" - - for config in "${array_configs[@]}" - do - fileurl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master/${gamedirname}/${config}"; filedir="${lgsmdir}/default-configs"; filename="${config}"; executecmd="noexecute" run="norun"; force="noforce" - fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" - done -} - -# Changes some variables within the default configs -# SERVERNAME to LinuxGSM -# PASSWORD to random password -fn_set_config_vars(){ - random=$(strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 8 | tr -d '\n'; echo) - servername="LinuxGSM" - rconpass="admin$random" - echo "changing hostname." - fn_script_log_info "changing hostname." - sleep 1 - sed -i "s/SERVERNAME/${servername}/g" "${servercfgfullpath}" - echo "changing rcon/admin password." - fn_script_log_info "changing rcon/admin password." - sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgfullpath}" - sleep 1 -} - -# Checks if cfg dir exists, creates it if it doesn't +# Checks if server cfg dir exists, creates it if it doesn't fn_check_cfgdir(){ if [ ! -d "${servercfgdir}" ]; then echo "creating ${servercfgdir} config directory." @@ -45,11 +17,19 @@ fn_check_cfgdir(){ fi } -# Copys the default configs from Game-Server-Configs repo to the -# correct location +# Downloads default configs from Game-Server-Configs repo to lgsm/default-configs +fn_fetch_default_config(){ + mkdir -pv "${lgsmdir}/default-configs" + githuburl="https://github.com/GameServerManagers/Game-Server-Configs/master" + for config in "${array_configs[@]}"; do + fileurl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master/${gamedirname}/${config}"; filedir="${lgsmdir}/default-configs"; filename="${config}"; executecmd="noexecute" run="norun"; force="noforce" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + done +} + +# Copys default configs from Game-Server-Configs repo to server config location fn_default_config_remote(){ - for config in "${array_configs[@]}" - do + for config in "${array_configs[@]}"; do # every config is copied echo "copying ${config} config file." fn_script_log_info "copying ${servercfg} config file." @@ -66,6 +46,29 @@ fn_default_config_remote(){ sleep 1 } +# Changes some variables within the default configs +# SERVERNAME to LinuxGSM +# PASSWORD to random password +fn_set_config_vars(){ + if [ -f "${servercfgfullpath}" ]; then + random=$(strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 8 | tr -d '\n'; echo) + servername="LinuxGSM" + rconpass="admin$random" + echo "changing hostname." + fn_script_log_info "changing hostname." + sleep 1 + sed -i "s/SERVERNAME/${servername}/g" "${servercfgfullpath}" + echo "changing rcon/admin password." + fn_script_log_info "changing rcon/admin password." + sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgfullpath}" + sleep 1 + else + fn_script_log_warn "Config file not found, cannot alter it." + echo "Config file not found, cannot alter it." + sleep 1 + fi +} + # Changes some variables within the default Don't Starve Together configs fn_set_dst_config_vars(){ ## cluster.ini @@ -129,10 +132,10 @@ if [ "${gamename}" == "7 Days To Die" ]; then fn_set_config_vars elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then gamedirname="ARKSurvivalEvolved" + fn_check_cfgdir array_configs+=( GameUserSettings.ini ) fn_fetch_default_config fn_default_config_remote - fn_set_config_vars elif [ "${gamename}" == "ARMA 3" ]; then gamedirname="Arma3" fn_check_cfgdir @@ -494,4 +497,4 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars -fi \ No newline at end of file +fi From 6da044b55e80e501a915e564a5efa56848c291e6 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 04:22:22 +0100 Subject: [PATCH 288/729] Real default values --- ARKSurvivalEvolved/arkserver | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 569be1483..95fce2b44 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -24,11 +24,11 @@ version="170110" ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters servername="ark-server" -port="7778" +port="7777" queryport="27015" -rconport="32330" +rconport="27020" rconpassword="" # Set to enable rcon -maxplayers="50" +maxplayers="60" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters From 8f143f0d3baec3049b1ace4cfdf70e915b43bc28 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 04:36:40 +0100 Subject: [PATCH 289/729] More explicit servername Otherwise you can think it's a servicename --- ARKSurvivalEvolved/arkserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 95fce2b44..47ba8919e 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -23,7 +23,7 @@ version="170110" #### Server Settings #### ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters -servername="ark-server" +servername="LGSM ARK Server" port="7777" queryport="27015" rconport="27020" From eb2788ed9e25bdf6ad602c542d66e7deb72640ae Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 04:54:55 +0100 Subject: [PATCH 290/729] Better ARK ports info Will test if ok --- lgsm/functions/command_details.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 3af2b7ac7..20ad29222 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -347,9 +347,14 @@ fn_details_ark(){ echo -e "netstat -atunp | grep ShooterGame" echo -e "" { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + # Don't do arithmetics if ever the port wasn't a numeric value + if [ "${port}" -eq "${port}" ];then + echo -e "> RAW\t\INBOUND\t$((port+1))\tudp + fi echo -e "> Query\tINBOUND\t${queryport}\tudp" + echo -e "> RCON\INBOUND\t${rconport}\ttcp" } | column -s $'\t' -t } From 07fc2472992c0d2972ff59c30dd2487798ab2d67 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 04:56:23 +0100 Subject: [PATCH 291/729] missing space --- lgsm/functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 20ad29222..fae41b1a1 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -350,7 +350,7 @@ fn_details_ark(){ echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" # Don't do arithmetics if ever the port wasn't a numeric value - if [ "${port}" -eq "${port}" ];then + if [ "${port}" -eq "${port}" ]; then echo -e "> RAW\t\INBOUND\t$((port+1))\tudp fi echo -e "> Query\tINBOUND\t${queryport}\tudp" From 6d15a580e72b9f9438e0c2cea2b706a5fac85f94 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 05:01:15 +0100 Subject: [PATCH 292/729] better close an echo --- lgsm/functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index fae41b1a1..bc634a4ce 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -351,7 +351,7 @@ fn_details_ark(){ echo -e "> Game\tINBOUND\t${port}\tudp" # Don't do arithmetics if ever the port wasn't a numeric value if [ "${port}" -eq "${port}" ]; then - echo -e "> RAW\t\INBOUND\t$((port+1))\tudp + echo -e "> RAW\t\INBOUND\t$((port+1))\tudp" fi echo -e "> Query\tINBOUND\t${queryport}\tudp" echo -e "> RCON\INBOUND\t${rconport}\ttcp" From a12d6cc2276f1e2c105858978a440b9a47839ceb Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 05:03:04 +0100 Subject: [PATCH 293/729] I need to get better with tables. --- lgsm/functions/command_details.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index bc634a4ce..eee2af76e 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -351,10 +351,10 @@ fn_details_ark(){ echo -e "> Game\tINBOUND\t${port}\tudp" # Don't do arithmetics if ever the port wasn't a numeric value if [ "${port}" -eq "${port}" ]; then - echo -e "> RAW\t\INBOUND\t$((port+1))\tudp" + echo -e "> RAW\tINBOUND\t$((port+1))\tudp" fi echo -e "> Query\tINBOUND\t${queryport}\tudp" - echo -e "> RCON\INBOUND\t${rconport}\ttcp" + echo -e "> RCON\tINBOUND\t${rconport}\ttcp" } | column -s $'\t' -t } From 8543ec774414d1116d3954eecb93a5e2cc5a213b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 05:37:55 +0100 Subject: [PATCH 294/729] added back config vars for ark --- lgsm/functions/install_config.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 426bec9c8..51d8c4065 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -136,6 +136,7 @@ elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then array_configs+=( GameUserSettings.ini ) fn_fetch_default_config fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "ARMA 3" ]; then gamedirname="Arma3" fn_check_cfgdir From a557486a526af84e61de7ea727805a127f9d3321 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 05:57:25 +0100 Subject: [PATCH 295/729] Cleaning parameters set within .ini file and default maxplayers is actually 70 --- ARKSurvivalEvolved/arkserver | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 47ba8919e..d2d45f904 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -23,18 +23,16 @@ version="170110" #### Server Settings #### ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters -servername="LGSM ARK Server" port="7777" queryport="27015" rconport="27020" -rconpassword="" # Set to enable rcon -maxplayers="60" +maxplayers="70" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters # Edit with care fn_parms(){ -parms="\"TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?ServerAdminPassword=${rconpassword}\"" +parms="\"TheIsland?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?\"" } #### LinuxGSM Settings #### From 5144d86be55f7c63e0e581b9fc2821f69ddfcc4f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 06:07:35 +0100 Subject: [PATCH 296/729] Ark info config, to test --- lgsm/functions/info_config.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 2da3c4d84..c487d3917 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -39,6 +39,16 @@ fn_info_config_avalanche(){ fi } +fn_info_config_ark(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + else + servername=$(grep "Name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/SessionName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + # Not Set + servername=${servername:-"NOT SET"} + fi +} + fn_info_config_bf1942(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" @@ -596,6 +606,9 @@ fn_info_config_sdtd(){ # Just Cause 2 if [ "${engine}" == "avalanche" ]; then fn_info_config_avalanche +# ARK: Survival Evolved +elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then + fn_info_config_ark # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then fn_info_config_bf1942 @@ -663,4 +676,4 @@ elif [ "${gamename}" == "7 Days To Die" ]; then fn_info_config_sdtd elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_info_config_wolfensteinenemyterritory -fi \ No newline at end of file +fi From e4b0054f637452dbd3584aa8be9d89f4f29b4571 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 06:11:33 +0100 Subject: [PATCH 297/729] Grep Ark SessionName --- lgsm/functions/info_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index c487d3917..ea05055cd 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -43,7 +43,7 @@ fn_info_config_ark(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" else - servername=$(grep "Name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/SessionName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + servername=$(grep "SessionName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/SessionName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') # Not Set servername=${servername:-"NOT SET"} fi From 43a924a12483b2947f1366677c249c1051cd1136 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 14:54:44 +0100 Subject: [PATCH 298/729] Typo: Survivial > Survival --- lgsm/functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 51d8c4065..840347ab4 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -130,7 +130,7 @@ if [ "${gamename}" == "7 Days To Die" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars -elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then +elif [ "${gamename}" == "ARK: Survival Evolved" ]; then gamedirname="ARKSurvivalEvolved" fn_check_cfgdir array_configs+=( GameUserSettings.ini ) From 4d4de5c822e0ad2a8afa0fb92d2083ececcf2b05 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 14:55:19 +0100 Subject: [PATCH 299/729] Typo: Survivial > Survival --- lgsm/functions/command_stop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 2013f85bf..a23f4ad5c 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -296,7 +296,7 @@ fn_stop_tmux(){ rm -f "${rootdir}/${lockselfname}" # ARK doesn't clean up immediately after tmux is killed. # Make certain the ports are cleared before continuing. - if [ "${gamename}" == "ARK: Survivial Evolved" ]; then + if [ "${gamename}" == "ARK: Survival Evolved" ]; then fn_stop_ark echo -en "\n" fi From d6944b6f94f279278aaec570855e76025891a692 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 14:56:09 +0100 Subject: [PATCH 300/729] Typo: Survivial > Survival --- lgsm/functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index eee2af76e..73e54c3ff 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -777,7 +777,7 @@ fn_display_details() { fn_details_ut3 elif [ "${gamename}" == "7 Days To Die" ]; then fn_details_sdtd - elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then + elif [ "${gamename}" == "ARK: Survival Evolved" ]; then fn_details_ark elif [ "${gamename}" == "Call of Duty" ]; then fn_details_cod From c909a85b569dd561fde67f1efb62cc8757b90b0d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 13 Jan 2017 14:56:47 +0100 Subject: [PATCH 301/729] Typo: Survivial > Survival --- ARKSurvivalEvolved/arkserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index d2d45f904..6bc5079c0 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -80,7 +80,7 @@ githubbranch="master" ## LinuxGSM Server Details # Do not edit -gamename="ARK: Survivial Evolved" +gamename="ARK: Survival Evolved" engine="unreal4" ## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers From 189a1659fc1820a52774bac2d23c04b33060ccf0 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 18:34:45 +0100 Subject: [PATCH 302/729] Fixes arma3 ports actually working with parms Fixes #1240 --- lgsm/functions/command_details.sh | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 3af2b7ac7..f606b2f37 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -310,7 +310,7 @@ fn_details_ports(){ parmslocation="${red}UNKNOWN${default}" # engines/games that require editing in the config file - 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" ) + local ports_edit_array=( "avalanche" "dontstarve" "idtech2" "idtech3" "idtech3_ql" "lwjgl2" "projectzomboid" "quake" "refractor" "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 @@ -318,7 +318,7 @@ fn_details_ports(){ fi done # engines/games that require editing in the script file - local ports_edit_array=( "goldsource" "Factorio" "Hurtworld" "iw3.0" "Rust" "spark" "source" "starbound" "unreal4" ) + local ports_edit_array=( "goldsource" "Factorio" "Hurtworld" "iw3.0" "Rust" "spark" "source" "starbound" "unreal4" "realvirtuality") for port_edit in "${ports_edit_array[@]}" do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then @@ -347,9 +347,14 @@ fn_details_ark(){ echo -e "netstat -atunp | grep ShooterGame" echo -e "" { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tudp" + # Don't do arithmetics if ever the port wasn't a numeric value + if [ "${port}" -eq "${port}" ]; then + echo -e "> RAW\tINBOUND\t$((port+1))\tudp" + fi echo -e "> Query\tINBOUND\t${queryport}\tudp" + echo -e "> RCON\tINBOUND\t${rconport}\ttcp" } | column -s $'\t' -t } @@ -521,15 +526,19 @@ fn_details_quakelive(){ fn_details_realvirtuality(){ echo -e "netstat -atunp | grep arma3server" echo -e "" - if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then - echo -e "${red}ERROR!${default} Missing/commented ports in ${servercfg}." - echo -e "" + # Default port + if [ -z "${port}" ]; then + port="2302" fi { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" - echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" - echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" + # Don't do arithmetics if ever the port wasn't a numeric value + if [ "${port}" -eq "${port}" ]; then + echo -e "> Steam: Query\tINBOUND\t$((port+1))\tudp" + echo -e "> Steam: Master traffic\tINBOUND\t$((port+2))\tudp" + echo -e "> Undocumented Port\tINBOUND\t$((port+3))\tudp" + fi } | column -s $'\t' -t } @@ -772,7 +781,7 @@ fn_display_details() { fn_details_ut3 elif [ "${gamename}" == "7 Days To Die" ]; then fn_details_sdtd - elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then + elif [ "${gamename}" == "ARK: Survival Evolved" ]; then fn_details_ark elif [ "${gamename}" == "Call of Duty" ]; then fn_details_cod @@ -816,4 +825,3 @@ then fn_display_details core_exit.sh fi - From c5535543e1106bc5b1680e02f04f357bf3870245 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 18:36:12 +0100 Subject: [PATCH 303/729] Revert change to Ark to fit master, not develop --- lgsm/functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index f606b2f37..5f7f43b1e 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -781,7 +781,7 @@ fn_display_details() { fn_details_ut3 elif [ "${gamename}" == "7 Days To Die" ]; then fn_details_sdtd - elif [ "${gamename}" == "ARK: Survival Evolved" ]; then + elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then fn_details_ark elif [ "${gamename}" == "Call of Duty" ]; then fn_details_cod From 4cca1e82dfcd210ff8939cec527aa065aaffa866 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 19:03:57 +0100 Subject: [PATCH 304/729] Mods install command --- lgsm/functions/command_mods_install.sh | 175 +++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 lgsm/functions/command_mods_install.sh diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh new file mode 100644 index 000000000..a2c7b8bed --- /dev/null +++ b/lgsm/functions/command_mods_install.sh @@ -0,0 +1,175 @@ +#!/bin/bash +# LGSM command_mods_install.sh function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: https://gameservermanagers.com +# Description: List and installs available mods along with mods_list.sh. + +local commandname="MODS" +local commandaction="Mod Installation" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh +mods_list.sh + +fn_mods_install_init(){ + fn_script_log "Entering mods & addons installation" + echo "=================================" + echo "${gamename} mods & addons installation" + echo "" + # Display available mods from mods_list.sh + fn_mods_show_available + echo "" + # Keep prompting as long as the user input doesn't correspond to an available mod + while [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; do + echo -en "Enter a \e[36mmod\e[0m to install (or exit to abort): " + read -r usermodselect + # Exit if user says exit or abort + if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then + fn_script_log "User aborted." + echo "Aborted." + core_exit.sh + # Supplementary output upon invalid user input + elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then + fn_print_error2_nl "${usermodselect} is not a valid mod." + echo " * Enter a valid mod or input exit to abort." + fi + done + # Gives a pretty name to the user and get all mod info + currentmod="${usermodselect}" + fn_mod_get_info_from_command + fn_print_dots "Installing ${modprettyname}" + sleep 1 + fn_script_log "Installing ${modprettyname}." +} + +# Create mods directory if it doesn't exist +# Assuming the game is already installed as mods_list.sh checked for it. +fn_mods_dir(){ + if [ ! -d "${modinstalldir}" ]; then + fn_script_log_info "Creating mods directory: ${modinstalldir}" + fn_print_dots "Creating mods directory" + sleep 1 + mkdir -p "${modinstalldir}" + fn_print_ok_nl "Created mods directory" + fi +} + +# Clear mod download directory so that there is only one file in it since we don't the file name and extention +fn_clear_tmp_mods(){ + if [ -d "${modstmpdir}" ]; then + rm -r "${modstmpdir}" + fn_script_log "Clearing temp mod download directory: ${modstmpdir}" + fi +} + +# Create tmp download mod directory +fn_mods_tmpdir(){ + if [ ! -d "${modstmpdir}" ]; then + mkdir -p "${modstmpdir}" + fn_script_log "Creating temp mod download directory: ${modstmpdir}" + fi +} + +fn_mod_dl(){ + # fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + fileurl="${modurl}" + filedir="${modstmpdir}" + filename="${modfilename}" + fn_script_log "Downloading mods to ${modstmpdir}" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" + # Check if variable is valid checking if file has been downloaded and exists + if [ ! -f "${modstmpdir}/${modfilename}" ]; then + fn_print_fail "An issue occurred upon downloading ${modprettyname}" + core_exit.sh + fi +} + +fn_mod_extract(){ + # fn_dl_extract "${filedir}" "${filename}" "${extractdir}" + filename="${modfilename}" + extractdir="${modstmpdir}/extracted" + if [ ! -d "${extractdir}" ]; then + mkdir -p "${extractdir}" + fi + fn_script_log "Extracting ${modprettyname} to ${extractdir}" + fn_dl_extract "${filedir}" "${filename}" "${extractdir}" +} + +fn_mod_fileslist(){ + # ${modsdatadir}/${modcommand}-files.list + true; +} + +fn_mod_copy_destination(){ + # Destination directory: ${modinstalldir} + fn_script_log "Copying ${modprettyname} to ${modinstalldir}" + cp -Rf "${extractdir}/." "${modinstalldir}/" +} + +# Check if the mod is already installed and warn the user +fn_mod_already_installed(){ + if [ -f "${modslockfilefullpath}" ]; then + if [ -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then + echo "" + fn_print_warning_nl "${modprettyname} has already been installed." + echo " * Mod files will be overwritten." + sleep 4 + fi + fi +} + +# Add the mod to the installed mods list +fn_mod_add_list(){ + # Create lgsm/data directory + if [ ! -d "${modsdatadir}" ]; then + mkdir -p "${modsdatadir}" + fn_script_log "Created ${modsdatadir}" + fi + # Create lgsm/data/${modslockfile} + if [ ! -f "${modslockfilefullpath}" ]; then + touch "${modslockfilefullpath}" + fn_script_log "Created ${modslockfilefullpath}" + fi + # Input mod name to lockfile + if [ ! -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then + echo "${modcommand}" >> "${modslockfilefullpath}" + fn_script_log "${modcommand} added to ${modslockfile}" + fi +} + +# Run all required operation +fn_mod_installation(){ + # If a mod was selected + if [ -n "${currentmod}" ]; then + # Get mod info + fn_mod_get_info_from_command + # Check if mod is already installed + fn_mod_already_installed + # Check and create required directories + fn_mods_dir + # Clear lgsm/tmp/mods dir if exists then recreate it + fn_clear_tmp_mods + fn_mods_tmpdir + # Download mod + fn_mod_dl + # Extract the mod + fn_mod_extract + # Build a file list + fn_mod_fileslist + # Copying to destination + fn_mod_copy_destination + # Ending with installation routines + fn_mod_add_list + fn_clear_tmp_mods + fn_print_ok_nl "${modprettyname} installed." + fn_script_log "${modprettyname} installed." + else + fn_print_fail "No mod was selected." + core_exit.sh + fi +} + +fn_mods_install_checks +fn_mods_install_init +fn_mod_installation From f677f13b666eff74745a44cb4837d74081bd3859 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 19:04:50 +0100 Subject: [PATCH 305/729] Mods remove init --- lgsm/functions/command_mods_remove.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 lgsm/functions/command_mods_remove.sh diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh new file mode 100644 index 000000000..c2bb35f48 --- /dev/null +++ b/lgsm/functions/command_mods_remove.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# LGSM command_mods_uninstall.sh function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: https://gameservermanagers.com +# Description: Uninstall mods along with mods_list.sh. + +local commandname="MODS" +local commandaction="Mod Remove" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" From 18d6168c30e7bfaf11f46867b712ae55397d7e83 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 19:05:17 +0100 Subject: [PATCH 306/729] Command mods update init --- lgsm/functions/command_mods_update.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 lgsm/functions/command_mods_update.sh diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh new file mode 100644 index 000000000..e1a818bc1 --- /dev/null +++ b/lgsm/functions/command_mods_update.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# LGSM command_mods_update.sh function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: https://gameservermanagers.com +# Description: Updates installed mods along with mods_list.sh. + +local commandname="MODS" +local commandaction="Mod Update" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" From 24fb13ffac418a903d32a5bf8b0d8125302877a7 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 19:05:59 +0100 Subject: [PATCH 307/729] Declare mods functions --- lgsm/functions/core_functions.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 3a233174a..a8c41fc32 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -180,6 +180,21 @@ functionfile="${FUNCNAME}" fn_fetch_function } +command_mods_install.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_mods_update.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + +command_mods_remove.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + command_fastdl.sh(){ functionfile="${FUNCNAME}" fn_fetch_function @@ -276,6 +291,12 @@ functionfile="${FUNCNAME}" fn_fetch_function } +# Mods + +mods_list.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} # Dev From f303ce2eb56acf1596fbaee7749db7d609c47e5c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 19:06:37 +0100 Subject: [PATCH 308/729] Mods install/update/remove opt --- lgsm/functions/core_getopt.sh | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 0cbd6f2b0..faa9c7011 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -43,6 +43,12 @@ case "${getopt}" in command_install.sh;; ai|auto-install) fn_autoinstall;; + mi|mods-install) + command_mods_install.sh;; + mu|mods-update) + command_mods_update.sh;; + mr|mods-remove) + command_mods_remove.sh;; dd|detect-deps) command_dev_detect_deps.sh;; dg|detect-glibc) @@ -76,6 +82,9 @@ 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}mods-install\t${default}mi |View and install available mods/addons." + echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." + echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." } | column -s $'\t' -t esac } @@ -517,14 +526,20 @@ case "${getopt}" in command_install.sh;; ai|auto-install) fn_autoinstall;; + fd|fastdl) + command_fastdl.sh;; + mi|mods-install) + command_mods_install.sh;; + mu|mods-update) + command_mods_update.sh;; + mr|mods-remove) + command_mods_remove.sh;; dd|detect-deps) command_dev_detect_deps.sh;; dg|detect-glibc) command_dev_detect_glibc.sh;; dl|detect-ldd) command_dev_detect_ldd.sh;; - fd|fastdl) - command_fastdl.sh;; *) if [ -n "${getopt}" ]; then echo -e "${red}Unknown command${default}: $0 ${getopt}" @@ -552,6 +567,9 @@ case "${getopt}" in 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 directory for your server." + echo -e "${blue}mods-install\t${default}mi |View and install available mods/addons." + echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." + echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." } | column -s $'\t' -t esac } From cc07590575e1bfcbd2da9c0dba4498feebf270fb Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 19:07:32 +0100 Subject: [PATCH 309/729] Base for mods_list.sh --- lgsm/functions/mods_list.sh | 286 ++++++++++++++++++++++++++++++++++++ 1 file changed, 286 insertions(+) create mode 100644 lgsm/functions/mods_list.sh diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh new file mode 100644 index 000000000..f4c1910b5 --- /dev/null +++ b/lgsm/functions/mods_list.sh @@ -0,0 +1,286 @@ +#!/bin/bash +# LGSM mods_list.sh function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: https://gameservermanagers.com +# Description: Lists and defines available mods for LGSM supported servers. +# Usage: To add a mod, you just need to add an array variable into fn_mods_info following the guide to set proper values. +# Usage: Then add this array to the mods_global_array. +# Usage: If needed, you can scrape to define the download URL inside the fn_mods_scrape_urls function. + +local commandname="MODS" +local commandaction="List Mods" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh + +## Useful variables +# Files and Directories +modstmpdir="${tmpdir}/mods" +modsdatadir="${lgsmdir}/data/mods" +modslockfile="installed-mods-listing" +modslockfilefullpath="${modsdatadir}/${modslockfile}" +# Separator name +modseparator="MOD" + +# Define mods information (required) +fn_mods_info(){ + # REQUIRED: mod_info_name=( MOD "modcommand" "Pretty Name" "URL" "filename" "modsubfolders" "LowercaseOn/Off" "/files/to/keep;" "/install/path" "ENGINES" "GAMES" "NOTGAMES" "AUTHOR_URL" "Short Description" ) + # Example 1) Well made mod: mod_info_name=( MOD "awesomemod" "This is an Awesome Mod" "https://awesomemod.com/latest.zip" "awesomemod.zip" "0" "LowercaseOff" "OVERWRITE" "${systemdir}/addons" "source;unity3d;" "GAMES" "NOTGAMES" "https://awesomemod.com/" "This mod knows that 42 is the answer" ) + # Example 2) Poorly made mod: mod_info_name=( MOD "stupidmod" "This is a stupid mod" "${crappymodurl}" "StupidMod.zip" "2" "LowercaseOn" "cfg;data/crappymod;" "${systemdir}" "source;" "GAMES" "Garry's mod;Counter-Strike: Source;" "This mod is dumber than dumb" ) + # None of those values can be empty + # [index] | Usage + # [0] | MOD: separator, all mods must begin with it + # [1] | "modcommand": the LGSM name and command to install the mod (must be unique and lowercase) + # [2] | "Pretty Name": the common name people use to call the mod that will be displayed to the user + # [3] | "URL": link to the file; can be a variable defined in fn_mods_nasty_urls (make sure curl can download it) + # [4] | "filename": the output filename + # [5] | "modsubfolders": in how many subfolders is the mod (none is 1) + # [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) + # [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) + # [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" to ignore the value or "NOUPDATE" to disallow updating + # [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value + # [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value + # [11] | "Unsupported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use NOTGAMES to ignore the value (useful to exclude a game when using Supported Engines) + # [12] | "AUTHOR_URL" is the author's website, displayed to the user when chosing mods to install + # [13] | "Short Description" a description showed to the user upon installation + + # Source mods + mod_info_metamod=( MOD "metamod" "MetaMod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "source;" "GAMES" "Garry's Mod;" "https://www.sourcemm.net" "Plugins Framework" ) + mod_info_sourcemod=( MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;" "source;" "GAMES" "Garry's Mod;" "http://www.sourcemod.net" "Admin Features (requires MetaMod)" ) + # Garry's Mod Addons + mod_info_ulib=( MOD "ulib" "ULib" "https://codeload.github.com/TeamUlysses/ulib/zip/master" "ulib-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Complete Framework" ) + mod_info_ulx=( MOD "ulx" "ULX" "https://codeload.github.com/TeamUlysses/ulx/zip/master" "ulx-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Admin Panel (requires ULib)" ) + mod_info_utime=( MOD "utime" "UTime" "https://github.com/TeamUlysses/utime/archive/master.zip" "utime-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Keep track of players play time" ) + mod_info_uclip=( MOD "uclip" "UClib" "https://github.com/TeamUlysses/uclip/archive/master.zip" "uclip-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "An alternative to noclip" ) + mod_info_acf=( MOD "acf" "Armoured Combat Framework" "https://github.com/nrlulz/ACF/archive/master.zip" "acf-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/nrlulz/ACF" "Realistic Wepons & Engines" ) + mod_info_acf_missiles=( MOD "acfmissiles" "ACF Missiles" "https://github.com/Bubbus/ACF-Missiles/archive/master.zip" "acf-missiles-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Bubbus/ACF-Missiles" "More missiles for ACF" ) + mod_info_acf_advdupe2=( MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/wiremod/advdupe2/archive/master.zip" "advdupe2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://www.wiremod.com" "Save your constructions" ) + mod_info_darkrp=( MOD "darkrp" "DarkRP" "https://github.com/FPtje/DarkRP/archive/master.zip" "darkrp-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Most popular gamemode" ) + mod_info_darkrpmodification=( MOD "darkrpmodification" "DarkRP Modification" "https://github.com/FPtje/darkrpmodification/archive/master.zip" "darkrpmodification-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "NOUPDATE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Customize DarkRP settings" ) + # Oxidemod + mod_info_rustoxide=( MOD "rustoxide" "Oxide for Rust" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-Rust.zip" "Oxide-Rust_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Rust;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-rust.1659" "Allows for the use of plugins" ) + mod_info_hwoxide=( MOD "hwoxide" "Oxide for Hurtworld" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-Hurtworld.zip" "Oxide-Hurtworld_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Hurtworld;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-hurtworld.1332" "Allows for the use of plugins" ) + mod_info_sdtdoxide=( MOD "sdtdoxide" "Oxide for 7 Days To Die" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-7DaysToDie.zip" "Oxide-7DaysToDie_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-7-days-to-die.813" "Allows for the use of plugins" ) + + # REQUIRED: Set all mods info into one array for convenience + mods_global_array=( "${mod_info_metamod[@]}" "${mod_info_sourcemod[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" ) +} + +# Get a proper URL for mods that don't provide a good one (optional) +fn_mods_scrape_urls(){ + # Metamod + metamodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" + metamodlatestfile="$(wget "${metamodscrapeurl}/?MD" -q -O -| grep "mmsource" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" + metamodfasterurl="http://cdn.probablyaserver.com/sourcemod/" + metamodurl="${metamodfasterurl}/${metamodlatestfile}" + # Sourcemod + sourcemodmversion="1.8" + sourcemodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" + sourcemodlatestfile="$(wget "${sourcemodscrapeurl}/?MD" -q -O -| grep "sourcemod-" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" + sourcemodfasterurl="http://cdn.probablyaserver.com/sourcemod/" + sourcemodurl="${sourcemodfasterurl}/${sourcemodlatestfile}" +} + +# Define all variables from a mod at once when index is set to a separator +fn_mod_info(){ +# If for some reason no index is set, none of this can work +if [ -z "$index" ]; then + fn_print_error "index variable not set. Please report an issue to LGSM Team." + echo "* https://github.com/GameServerManagers/LinuxGSM/issues" + core_exit.sh +fi + modcommand="${mods_global_array[index+1]}" + modprettyname="${mods_global_array[index+2]}" + modurl="${mods_global_array[index+3]}" + modfilename="${mods_global_array[index+4]}" + modsubfolders="${mods_global_array[index+5]}" + modlowercase="${mods_global_array[index+6]}" + modinstalldir="${mods_global_array[index+7]}" + modkeepfiles="${mods_global_array[index+8]}" + modengines="${mods_global_array[index+9]}" + modgames="${mods_global_array[index+10]}" + modexcludegames="${mods_global_array[index+11]}" + modsite="${mods_global_array[index+12]}" + moddescription="${mods_global_array[index+13]}" +} + + +# Find out if a game is compatible with a mod from a modgames (list of games supported by a mod) variable +fn_compatible_mod_games(){ + # Reset test value + modcompatiblegame="0" + # If value is set to GAMES (ignore) + if [ "${modgames}" != "GAMES" ]; then + # How many games we need to test + gamesamount="$(echo "${modgames}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modgames" using the ";" separator + for ((gamevarindex=1; gamevarindex < ${gamesamount}; gamevarindex++)); do + # Put current game name into modtest variable + gamemodtest="$( echo "${modgames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" + # If game name matches + if [ "${gamemodtest}" == "${gamename}" ]; then + # Mod is compatible ! + modcompatiblegame="1" + fi + done + fi +} + +# Find out if an engine is compatible with a mod from a modengines (list of engines supported by a mod) variable +fn_compatible_mod_engines(){ + # Reset test value + modcompatibleengine="0" + # If value is set to ENGINES (ignore) + if [ "${modengines}" != "ENGINES" ]; then + # How many engines we need to test + enginesamount="$(echo "${modengines}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modengines" using the ";" separator + for ((gamevarindex=1; gamevarindex < ${enginesamount}; gamevarindex++)); do + # Put current engine name into modtest variable + enginemodtest="$( echo "${modengines}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" + # If engine name matches + if [ "${enginemodtest}" == "${engine}" ]; then + # Mod is compatible ! + modcompatibleengine="1" + fi + done + fi +} + +# Find out if a game is not compatible with a mod from a modnotgames (list of games not supported by a mod) variable +fn_not_compatible_mod_games(){ + # Reset test value + modeincompatiblegame="0" + # If value is set to NOTGAMES (ignore) + if [ "${modexcludegames}" != "NOTGAMES" ]; then + # How many engines we need to test + excludegamesamount="$(echo "${modexcludegames}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modexcludegames" using the ";" separator + for ((gamevarindex=1; gamevarindex < ${excludegamesamount}; gamevarindex++)); do + # Put current engine name into modtest variable + excludegamemodtest="$( echo "${modexcludegames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" + # If engine name matches + if [ "${excludegamemodtest}" == "${gamename}" ]; then + # Mod is compatible ! + modeincompatiblegame="1" + fi + done + fi +} + +# Sums up if a mod is compatible or not with modcompatibility=0/1 +fn_mod_compatible_test(){ + # Test game and engine compatibility + fn_compatible_mod_games + fn_compatible_mod_engines + fn_not_compatible_mod_games + if [ "${modeincompatiblegame}" == "1" ]; then + modcompatibility="0" + elif [ "${modcompatibleengine}" == "1" ]||[ "${modcompatiblegame}" == "1" ]; then + modcompatibility="1" + else + modcompatibility="0" + fi +} + +# Checks if a mod is compatibile for installation +# Provides available mods for installation +# Provides commands for mods installation +fn_mods_available(){ + # First, reset variables + compatiblemodslist=() + availablemodscommands=() + modprettynamemaxlength="0" + modsitemaxlength="0" + moddescriptionmaxlength="0" + modcommandmaxlength="0" + # Find compatible games + # Find separators through the global array + for ((index="0"; index <= ${#mods_global_array[@]}; index++)); do + # If current value is a separator; then + if [ "${mods_global_array[index]}" == "${modseparator}" ]; then + # Set mod variables + fn_mod_info + # Test if game is compatible + fn_mod_compatible_test + # If game is compatible + if [ "${modcompatibility}" == "1" ]; then + # Put it into the list to display to the user + compatiblemodslist+=( "${modprettyname}" "${modcommand}" "${modsite}" "${moddescription}" ) + # Keep available commands in an array + availablemodscommands+=( "${modcommand}" ) + fi + fi + done +} + +# Output available mods in a nice way to the user +fn_mods_show_available(){ + # Set and reset vars + compatiblemodslistindex=0 + spaces=" " + # As long as we're within index values + while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do + # Set values for convenience + displayedmodname="${compatiblemodslist[compatiblemodslistindex]}" + displayedmodcommand="${compatiblemodslist[compatiblemodslistindex+1]}" + displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" + displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" + # Output mods to the user + echo -e "\e[1m${displayedmodname}\e[0m" + echo -e " * ${displayedmoddescription} - ${displayedmodsite}" + echo -e " * \e[36m${displayedmodcommand}\e[0m" + # Increment index from the amount of values we just displayed + let "compatiblemodslistindex+=4" + done +} + +# Get details of a mod any (relevant and unique, such as full mod name or install command) value +fn_mod_get_info_from_command(){ + # Variable to know when job is done + modinfocommand="0" + # Find entry in global array + for ((index=0; index <= ${#mods_global_array[@]}; index++)); do + # When entry is found + if [ "${mods_global_array[index]}" == "${currentmod}" ]; then + # Go back to the previous "MOD" separator + for ((index=index; index <= ${#mods_global_array[@]}; index--)); do + # When "MOD" is found + if [ "${mods_global_array[index]}" == "MOD" ]; then + # Get info + fn_mod_info + modinfocommand="1" + break + fi + done + fi + # Exit the loop if job is done + if [ "${modinfocommand}" == "1" ]; then + break + fi + done +} + +# Requirements to install mods +fn_mods_install_checks(){ + # If no mods are found + if [ -z "${compatiblemodslist}" ]; then + fn_print_fail "No mods are currently available for ${gamename}." + core_exit.sh + # If systemdir doesn't exist, then the game isn't installed + elif [ ! -d "${systemdir}" ]; then + fn_print_fail "${gamename} needs to be installed first." + core_exit.sh + # If tompdir variable doesn't exist, LGSM is too old + elif [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then + fn_print_fail "Your LGSM version is too old." + echo " * Please do a full update, including ${selfname} script." + core_exit.sh + fi +} + +fn_mods_scrape_urls +fn_mods_info +fn_mods_available +fn_mods_install_checks From 05b4e3b06a675eda7efb2fb44b87a6223c45e076 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 20:29:56 +0100 Subject: [PATCH 310/729] Checks done differently --- lgsm/functions/mods_list.sh | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index f4c1910b5..42a301499 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -234,6 +234,11 @@ fn_mods_show_available(){ # Increment index from the amount of values we just displayed let "compatiblemodslistindex+=4" done + # If no mods are found + if [ -z "${compatiblemodslist}" ]; then + fn_print_fail "No mods are currently available for ${gamename}." + core_exit.sh + fi } # Get details of a mod any (relevant and unique, such as full mod name or install command) value @@ -262,25 +267,6 @@ fn_mod_get_info_from_command(){ done } -# Requirements to install mods -fn_mods_install_checks(){ - # If no mods are found - if [ -z "${compatiblemodslist}" ]; then - fn_print_fail "No mods are currently available for ${gamename}." - core_exit.sh - # If systemdir doesn't exist, then the game isn't installed - elif [ ! -d "${systemdir}" ]; then - fn_print_fail "${gamename} needs to be installed first." - core_exit.sh - # If tompdir variable doesn't exist, LGSM is too old - elif [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then - fn_print_fail "Your LGSM version is too old." - echo " * Please do a full update, including ${selfname} script." - core_exit.sh - fi -} - fn_mods_scrape_urls fn_mods_info fn_mods_available -fn_mods_install_checks From 5c8b59db19c6ce0167462dcfe9699faa05d9ce21 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 20:30:09 +0100 Subject: [PATCH 311/729] Checks done differently --- lgsm/functions/command_mods_install.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index a2c7b8bed..c1bbcf89c 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -43,6 +43,19 @@ fn_mods_install_init(){ fn_script_log "Installing ${modprettyname}." } +fn_mods_requirements(){ + # If systemdir doesn't exist, then the game isn't installed + if [ ! -d "${systemdir}" ]; then + fn_print_fail "${gamename} needs to be installed first." + core_exit.sh + # If tompdir variable doesn't exist, LGSM is too old + elif [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then + fn_print_fail "Your LGSM version is too old." + echo " * Please do a full update, including ${selfname} script." + core_exit.sh + fi +} + # Create mods directory if it doesn't exist # Assuming the game is already installed as mods_list.sh checked for it. fn_mods_dir(){ @@ -170,6 +183,6 @@ fn_mod_installation(){ fi } -fn_mods_install_checks +fn_mods_requirements fn_mods_install_init fn_mod_installation From 29d2b51085ac7b5a6d134f9203271b0eeac172cf Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 20:35:18 +0100 Subject: [PATCH 312/729] No need to check for systemdir, lgsm already does --- lgsm/functions/command_mods_install.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index c1bbcf89c..5e419b86b 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -44,12 +44,8 @@ fn_mods_install_init(){ } fn_mods_requirements(){ - # If systemdir doesn't exist, then the game isn't installed - if [ ! -d "${systemdir}" ]; then - fn_print_fail "${gamename} needs to be installed first." - core_exit.sh # If tompdir variable doesn't exist, LGSM is too old - elif [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then + if [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then fn_print_fail "Your LGSM version is too old." echo " * Please do a full update, including ${selfname} script." core_exit.sh From 77e2043700cad4893ef80935c43d8b679c7a6c55 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 20:36:47 +0100 Subject: [PATCH 313/729] checks moves to mods_list.sh --- lgsm/functions/command_mods_install.sh | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 5e419b86b..8601567a7 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -43,15 +43,6 @@ fn_mods_install_init(){ fn_script_log "Installing ${modprettyname}." } -fn_mods_requirements(){ - # If tompdir variable doesn't exist, LGSM is too old - if [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then - fn_print_fail "Your LGSM version is too old." - echo " * Please do a full update, including ${selfname} script." - core_exit.sh - fi -} - # Create mods directory if it doesn't exist # Assuming the game is already installed as mods_list.sh checked for it. fn_mods_dir(){ @@ -179,6 +170,5 @@ fn_mod_installation(){ fi } -fn_mods_requirements fn_mods_install_init fn_mod_installation From ad2965d9f234ef52354bfdf69f4c15fb76109c37 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 20:37:52 +0100 Subject: [PATCH 314/729] Checks back here --- lgsm/functions/mods_list.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 42a301499..5da1d5dfc 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -82,6 +82,16 @@ fn_mods_scrape_urls(){ sourcemodurl="${sourcemodfasterurl}/${sourcemodlatestfile}" } +# Sets some gsm requirements +fn_gsm_requirements(){ + # If tmpdir variable doesn't exist, LGSM is too old + if [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then + fn_print_fail "Your LGSM version is too old." + echo " * Please do a full update, including ${selfname} script." + core_exit.sh + fi +} + # Define all variables from a mod at once when index is set to a separator fn_mod_info(){ # If for some reason no index is set, none of this can work @@ -267,6 +277,7 @@ fn_mod_get_info_from_command(){ done } +fn_gsm_requirements fn_mods_scrape_urls fn_mods_info fn_mods_available From 7df96359817ff2aa0b8cf3c40d2d6b867c2a1a80 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 20:42:10 +0100 Subject: [PATCH 315/729] New line for better output --- lgsm/functions/command_mods_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 8601567a7..9bde617cd 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -38,7 +38,7 @@ fn_mods_install_init(){ # Gives a pretty name to the user and get all mod info currentmod="${usermodselect}" fn_mod_get_info_from_command - fn_print_dots "Installing ${modprettyname}" + fn_print_dots_nl "Installing ${modprettyname}" sleep 1 fn_script_log "Installing ${modprettyname}." } From d35de663b0074712a4cd028e49607f3b410868fc Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 20:51:18 +0100 Subject: [PATCH 316/729] trying different mod view --- lgsm/functions/mods_list.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 5da1d5dfc..f05a7ac47 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -238,9 +238,8 @@ fn_mods_show_available(){ displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" # Output mods to the user - echo -e "\e[1m${displayedmodname}\e[0m" + echo -e "\e[36m${displayedmodcommand}\e[0m - \e[1m${displayedmodname}\e[0m" echo -e " * ${displayedmoddescription} - ${displayedmodsite}" - echo -e " * \e[36m${displayedmodcommand}\e[0m" # Increment index from the amount of values we just displayed let "compatiblemodslistindex+=4" done From 46802979b380d12df404477b2efbc12d0e204cbd Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 20:54:06 +0100 Subject: [PATCH 317/729] Trying another look --- lgsm/functions/mods_list.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index f05a7ac47..4d09807c9 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -238,8 +238,8 @@ fn_mods_show_available(){ displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" # Output mods to the user - echo -e "\e[36m${displayedmodcommand}\e[0m - \e[1m${displayedmodname}\e[0m" - echo -e " * ${displayedmoddescription} - ${displayedmodsite}" + echo -e "\e[1m${displayedmodname}\e[0m - ${displayedmoddescription} - ${displayedmodsite}" + echo -e " * \e[36m${displayedmodcommand}\e[0m" # Increment index from the amount of values we just displayed let "compatiblemodslistindex+=4" done From 9ae8cb4d8f1c6568499ab8308ca5bbd2c5de5af2 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 14 Jan 2017 20:59:00 +0100 Subject: [PATCH 318/729] typo ublib > uclip --- lgsm/functions/mods_list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 4d09807c9..ebff4c67a 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -52,7 +52,7 @@ fn_mods_info(){ mod_info_ulib=( MOD "ulib" "ULib" "https://codeload.github.com/TeamUlysses/ulib/zip/master" "ulib-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Complete Framework" ) mod_info_ulx=( MOD "ulx" "ULX" "https://codeload.github.com/TeamUlysses/ulx/zip/master" "ulx-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Admin Panel (requires ULib)" ) mod_info_utime=( MOD "utime" "UTime" "https://github.com/TeamUlysses/utime/archive/master.zip" "utime-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Keep track of players play time" ) - mod_info_uclip=( MOD "uclip" "UClib" "https://github.com/TeamUlysses/uclip/archive/master.zip" "uclip-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "An alternative to noclip" ) + mod_info_uclip=( MOD "uclip" "UClip" "https://github.com/TeamUlysses/uclip/archive/master.zip" "uclip-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "An alternative to noclip" ) mod_info_acf=( MOD "acf" "Armoured Combat Framework" "https://github.com/nrlulz/ACF/archive/master.zip" "acf-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/nrlulz/ACF" "Realistic Wepons & Engines" ) mod_info_acf_missiles=( MOD "acfmissiles" "ACF Missiles" "https://github.com/Bubbus/ACF-Missiles/archive/master.zip" "acf-missiles-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Bubbus/ACF-Missiles" "More missiles for ACF" ) mod_info_acf_advdupe2=( MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/wiremod/advdupe2/archive/master.zip" "advdupe2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://www.wiremod.com" "Save your constructions" ) From 80b21df4b05e0eff16cc209802da0088cbb62779 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 02:02:36 +0100 Subject: [PATCH 319/729] Added file list generation --- lgsm/functions/command_mods_install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 9bde617cd..9ea76257f 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -98,7 +98,8 @@ fn_mod_extract(){ fn_mod_fileslist(){ # ${modsdatadir}/${modcommand}-files.list - true; + find "${extractdir}" -mindepth 1 -printf '%P\n' >> ${modsdatadir}/${modcommand}-files.list + fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}" } fn_mod_copy_destination(){ From aecdd4c3a36a17d08a9559f4e9d448b24a845ca5 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 19:32:49 -0600 Subject: [PATCH 320/729] Trying out a hypothesis on the travis failures. --- .travis.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f91811da3..abb770e05 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,16 @@ language: bash -sudo: false +sudo: required env: - DISTRO=ubuntu-trusty before_script: + - sudo ls -l /sys/class/net + - sudo ls -l --dereference /sys/class/net + - sudo ls -lad /sys/class + - sudo ls -lad /sys/devices + - sudo chmod a+x /sys + - sudo chmod a+rx /sys/class + - sudo chmod a+r /sys/class/net - curl -L "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/shunit2/shunit2-2.1.6.tgz" | tar zx addons: From 1e83458917e5b19d67455978b069956c1d843d04 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 02:36:39 +0100 Subject: [PATCH 321/729] Trying recursive installed mods display --- lgsm/functions/command_mods_update.sh | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index e1a818bc1..26bf7ba69 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -6,5 +6,28 @@ # Description: Updates installed mods along with mods_list.sh. local commandname="MODS" -local commandaction="Mod Update" +local commandaction="Mods Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh +mods_list.sh + +fn_mods_update_init(){ + fn_script_log "Entering mods & addons update" + echo "=================================" + echo "${gamename} mods & addons update" + echo "" + # Installed mod dir is "${modslockfilefullpath}" + # How many mods will be updated + installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" + # Loop showing mods to update + for (( installedmodsline=$installedmodscount; installedmodsline<=5; installedmodsline++ )); do + sed -n 'installedmodsline{p;q}' "${modslockfilefullpath}" + done + + currentmod="${usermodselect}" + fn_mod_get_info_from_command + fn_print_dots_nl "Updating ${modprettyname}" + sleep 1 + fn_script_log "Updating ${modprettyname}." +} From e229b2c7ea6586d532865e2e7d780105fb93d57b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 02:46:26 +0100 Subject: [PATCH 322/729] new attempt --- lgsm/functions/command_mods_update.sh | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 26bf7ba69..c99162ae1 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -17,17 +17,20 @@ fn_mods_update_init(){ echo "=================================" echo "${gamename} mods & addons update" echo "" - # Installed mod dir is "${modslockfilefullpath}" - # How many mods will be updated - installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" - # Loop showing mods to update - for (( installedmodsline=$installedmodscount; installedmodsline<=5; installedmodsline++ )); do - sed -n 'installedmodsline{p;q}' "${modslockfilefullpath}" - done + # Installed mod dir is "${modslockfilefullpath}" + # How many mods will be updated + installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" + # Loop showing mods to update + while [ $installedmodsline -lte $installedmodscount ]; do + sed -n 'installedmodsline{p;q}' "${modslockfilefullpath}" + let installedmodscount=installedmodscount+1 + done - currentmod="${usermodselect}" - fn_mod_get_info_from_command - fn_print_dots_nl "Updating ${modprettyname}" - sleep 1 - fn_script_log "Updating ${modprettyname}." + #currentmod="${usermodselect}" + #fn_mod_get_info_from_command + #fn_print_dots_nl "Updating ${modprettyname}" + #sleep 1 + #fn_script_log "Updating ${modprettyname}." } + +fn_mods_update_init From 896c1b8fa54d391e6e69147321af8bf165332d37 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 19:50:13 -0600 Subject: [PATCH 323/729] One successful travis build. Ref: #1186 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index abb770e05..0b4a10ab8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ env: - DISTRO=ubuntu-trusty before_script: - - sudo ls -l /sys/class/net + - sudo ls -l /sys - sudo ls -l --dereference /sys/class/net - sudo ls -lad /sys/class - sudo ls -lad /sys/devices From 2c2ac53082696987a1171c3a73e19d51303fdcb6 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 19:58:07 -0600 Subject: [PATCH 324/729] #1186 revisited. --- .travis.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0b4a10ab8..b63d7cd85 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,13 +4,7 @@ env: - DISTRO=ubuntu-trusty before_script: - - sudo ls -l /sys - - sudo ls -l --dereference /sys/class/net - - sudo ls -lad /sys/class - - sudo ls -lad /sys/devices - - sudo chmod a+x /sys - - sudo chmod a+rx /sys/class - - sudo chmod a+r /sys/class/net + - sudo ls -ld /sys - curl -L "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/shunit2/shunit2-2.1.6.tgz" | tar zx addons: From a1a68db23369bc6cd93c95d1b0e6092f3f58b676 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 20:01:42 -0600 Subject: [PATCH 325/729] #1186 - Making sudo required seems to resolve the issue. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b63d7cd85..d385c27fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ env: - DISTRO=ubuntu-trusty before_script: - - sudo ls -ld /sys - curl -L "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/shunit2/shunit2-2.1.6.tgz" | tar zx addons: From 89eb3ee9f9b29de982412ffda8263602a8f6c187 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:17:58 +0100 Subject: [PATCH 326/729] Fixed output --- lgsm/functions/command_mods_update.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index c99162ae1..f162bb33b 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -20,12 +20,14 @@ fn_mods_update_init(){ # Installed mod dir is "${modslockfilefullpath}" # How many mods will be updated installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" + echo "${installedmodscount} addons will be updated:" # Loop showing mods to update - while [ $installedmodsline -lte $installedmodscount ]; do - sed -n 'installedmodsline{p;q}' "${modslockfilefullpath}" - let installedmodscount=installedmodscount+1 - done - + installedmodsline=1 + while [ $installedmodsline -le $installedmodscount ]; do + echo -e " * \e[36m$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")\e[0m" + let installedmodsline=installedmodsline+1 + done + exit #currentmod="${usermodselect}" #fn_mod_get_info_from_command #fn_print_dots_nl "Updating ${modprettyname}" From 8ca7bca3cacd29a5449c1a04f025dd290d17e89c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:25:51 +0100 Subject: [PATCH 327/729] Testing for multiple installations --- lgsm/functions/command_mods_update.sh | 44 +++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index f162bb33b..272fee642 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -27,12 +27,44 @@ fn_mods_update_init(){ echo -e " * \e[36m$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")\e[0m" let installedmodsline=installedmodsline+1 done - exit - #currentmod="${usermodselect}" - #fn_mod_get_info_from_command - #fn_print_dots_nl "Updating ${modprettyname}" - #sleep 1 - #fn_script_log "Updating ${modprettyname}." + sleep 2 +} + +fn_mods_update_loop(){ + while [ $installedmodsline -le $installedmodscount ]; do + currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" + fn_mod_get_info_from_command + if [ -n "${currentmod}" ]; then + fn_print_dots_nl "Updating ${modprettyname}" + sleep 0.5 + fn_script_log "Updating ${modprettyname}." + # Get mod info + fn_mod_get_info_from_command + # Check if mod is already installed + fn_mod_already_installed + # Check and create required directories + fn_mods_dir + # Clear lgsm/tmp/mods dir if exists then recreate it + fn_clear_tmp_mods + fn_mods_tmpdir + # Download mod + fn_mod_dl + # Extract the mod + fn_mod_extract + # Build a file list + fn_mod_fileslist + # Copying to destination + fn_mod_copy_destination + # Ending with installation routines + fn_mod_add_list + fn_clear_tmp_mods + fn_print_ok_nl "${modprettyname} installed." + fn_script_log "${modprettyname} installed." + else + fn_print_fail "No mod was selected." + core_exit.sh + fi + done } fn_mods_update_init From 5adee73be4ae46efa8afb40cd1f4a83f19275994 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:32:09 +0100 Subject: [PATCH 328/729] moving mods core functions away --- lgsm/functions/core_functions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index a8c41fc32..fc9dfaab0 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -298,6 +298,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +mods_core.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + # Dev command_dev_debug.sh(){ From c91831a133e25d8e89c8750c5505e8e298825e04 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:32:12 +0100 Subject: [PATCH 329/729] moving mods core functions away --- lgsm/functions/mods_core.sh | 114 ++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 lgsm/functions/mods_core.sh diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh new file mode 100644 index 000000000..17bce6f30 --- /dev/null +++ b/lgsm/functions/mods_core.sh @@ -0,0 +1,114 @@ +176 lines (161 sloc) 5.27 KB +#!/bin/bash +# LGSM command_mods_install.sh function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: https://gameservermanagers.com +# Description: List and installs available mods along with mods_list.sh. + +local commandname="MODS" +local commandaction="Core functions for mods" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +## Useful variables +# Files and Directories +modstmpdir="${tmpdir}/mods" +modsdatadir="${lgsmdir}/data/mods" +modslockfile="installed-mods-listing" +modslockfilefullpath="${modsdatadir}/${modslockfile}" + +# Create mods directory if it doesn't exist +# Assuming the game is already installed as mods_list.sh checked for it. +fn_mods_dir(){ + if [ ! -d "${modinstalldir}" ]; then + fn_script_log_info "Creating mods directory: ${modinstalldir}" + fn_print_dots "Creating mods directory" + sleep 1 + mkdir -p "${modinstalldir}" + fn_print_ok_nl "Created mods directory" + fi +} + +# Clear mod download directory so that there is only one file in it since we don't the file name and extention +fn_clear_tmp_mods(){ + if [ -d "${modstmpdir}" ]; then + rm -r "${modstmpdir}" + fn_script_log "Clearing temp mod download directory: ${modstmpdir}" + fi +} + +# Create tmp download mod directory +fn_mods_tmpdir(){ + if [ ! -d "${modstmpdir}" ]; then + mkdir -p "${modstmpdir}" + fn_script_log "Creating temp mod download directory: ${modstmpdir}" + fi +} + +fn_mod_dl(){ + # fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + fileurl="${modurl}" + filedir="${modstmpdir}" + filename="${modfilename}" + fn_script_log "Downloading mods to ${modstmpdir}" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" + # Check if variable is valid checking if file has been downloaded and exists + if [ ! -f "${modstmpdir}/${modfilename}" ]; then + fn_print_fail "An issue occurred upon downloading ${modprettyname}" + core_exit.sh + fi +} + +fn_mod_extract(){ + # fn_dl_extract "${filedir}" "${filename}" "${extractdir}" + filename="${modfilename}" + extractdir="${modstmpdir}/extracted" + if [ ! -d "${extractdir}" ]; then + mkdir -p "${extractdir}" + fi + fn_script_log "Extracting ${modprettyname} to ${extractdir}" + fn_dl_extract "${filedir}" "${filename}" "${extractdir}" +} + +fn_mod_fileslist(){ + # ${modsdatadir}/${modcommand}-files.list + find "${extractdir}" -mindepth 1 -printf '%P\n' >> ${modsdatadir}/${modcommand}-files.list + fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}" +} + +fn_mod_copy_destination(){ + # Destination directory: ${modinstalldir} + fn_script_log "Copying ${modprettyname} to ${modinstalldir}" + cp -Rf "${extractdir}/." "${modinstalldir}/" +} + +# Check if the mod is already installed and warn the user +fn_mod_already_installed(){ + if [ -f "${modslockfilefullpath}" ]; then + if [ -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then + echo "" + fn_print_warning_nl "${modprettyname} has already been installed." + echo " * Mod files will be overwritten." + sleep 4 + fi + fi +} + +# Add the mod to the installed mods list +fn_mod_add_list(){ + # Create lgsm/data directory + if [ ! -d "${modsdatadir}" ]; then + mkdir -p "${modsdatadir}" + fn_script_log "Created ${modsdatadir}" + fi + # Create lgsm/data/${modslockfile} + if [ ! -f "${modslockfilefullpath}" ]; then + touch "${modslockfilefullpath}" + fn_script_log "Created ${modslockfilefullpath}" + fi + # Input mod name to lockfile + if [ ! -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then + echo "${modcommand}" >> "${modslockfilefullpath}" + fn_script_log "${modcommand} added to ${modslockfile}" + fi +} From e2d26df74464de321cdaed6465279ff17bb76388 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:32:15 +0100 Subject: [PATCH 330/729] moving mods core functions away --- lgsm/functions/mods_list.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index ebff4c67a..28d8d5621 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -15,11 +15,6 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh ## Useful variables -# Files and Directories -modstmpdir="${tmpdir}/mods" -modsdatadir="${lgsmdir}/data/mods" -modslockfile="installed-mods-listing" -modslockfilefullpath="${modsdatadir}/${modslockfile}" # Separator name modseparator="MOD" From 1de06e19458a5f1ff537ecaa1a7821689e3d9dc1 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:32:18 +0100 Subject: [PATCH 331/729] moving mods core functions away --- lgsm/functions/command_mods_install.sh | 97 +------------------------- 1 file changed, 1 insertion(+), 96 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 9ea76257f..5c3fb7032 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -10,6 +10,7 @@ local commandaction="Mod Installation" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh +mods_core.sh mods_list.sh fn_mods_install_init(){ @@ -43,102 +44,6 @@ fn_mods_install_init(){ fn_script_log "Installing ${modprettyname}." } -# Create mods directory if it doesn't exist -# Assuming the game is already installed as mods_list.sh checked for it. -fn_mods_dir(){ - if [ ! -d "${modinstalldir}" ]; then - fn_script_log_info "Creating mods directory: ${modinstalldir}" - fn_print_dots "Creating mods directory" - sleep 1 - mkdir -p "${modinstalldir}" - fn_print_ok_nl "Created mods directory" - fi -} - -# Clear mod download directory so that there is only one file in it since we don't the file name and extention -fn_clear_tmp_mods(){ - if [ -d "${modstmpdir}" ]; then - rm -r "${modstmpdir}" - fn_script_log "Clearing temp mod download directory: ${modstmpdir}" - fi -} - -# Create tmp download mod directory -fn_mods_tmpdir(){ - if [ ! -d "${modstmpdir}" ]; then - mkdir -p "${modstmpdir}" - fn_script_log "Creating temp mod download directory: ${modstmpdir}" - fi -} - -fn_mod_dl(){ - # fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" - fileurl="${modurl}" - filedir="${modstmpdir}" - filename="${modfilename}" - fn_script_log "Downloading mods to ${modstmpdir}" - fn_fetch_file "${fileurl}" "${filedir}" "${filename}" - # Check if variable is valid checking if file has been downloaded and exists - if [ ! -f "${modstmpdir}/${modfilename}" ]; then - fn_print_fail "An issue occurred upon downloading ${modprettyname}" - core_exit.sh - fi -} - -fn_mod_extract(){ - # fn_dl_extract "${filedir}" "${filename}" "${extractdir}" - filename="${modfilename}" - extractdir="${modstmpdir}/extracted" - if [ ! -d "${extractdir}" ]; then - mkdir -p "${extractdir}" - fi - fn_script_log "Extracting ${modprettyname} to ${extractdir}" - fn_dl_extract "${filedir}" "${filename}" "${extractdir}" -} - -fn_mod_fileslist(){ - # ${modsdatadir}/${modcommand}-files.list - find "${extractdir}" -mindepth 1 -printf '%P\n' >> ${modsdatadir}/${modcommand}-files.list - fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}" -} - -fn_mod_copy_destination(){ - # Destination directory: ${modinstalldir} - fn_script_log "Copying ${modprettyname} to ${modinstalldir}" - cp -Rf "${extractdir}/." "${modinstalldir}/" -} - -# Check if the mod is already installed and warn the user -fn_mod_already_installed(){ - if [ -f "${modslockfilefullpath}" ]; then - if [ -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then - echo "" - fn_print_warning_nl "${modprettyname} has already been installed." - echo " * Mod files will be overwritten." - sleep 4 - fi - fi -} - -# Add the mod to the installed mods list -fn_mod_add_list(){ - # Create lgsm/data directory - if [ ! -d "${modsdatadir}" ]; then - mkdir -p "${modsdatadir}" - fn_script_log "Created ${modsdatadir}" - fi - # Create lgsm/data/${modslockfile} - if [ ! -f "${modslockfilefullpath}" ]; then - touch "${modslockfilefullpath}" - fn_script_log "Created ${modslockfilefullpath}" - fi - # Input mod name to lockfile - if [ ! -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then - echo "${modcommand}" >> "${modslockfilefullpath}" - fn_script_log "${modcommand} added to ${modslockfile}" - fi -} - # Run all required operation fn_mod_installation(){ # If a mod was selected From 9502cbdb034f6fddd4dcd8cdf1e9e92a1a9e9d89 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:33:18 +0100 Subject: [PATCH 332/729] Removed jerk line --- lgsm/functions/mods_core.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 17bce6f30..ac1b0ab61 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -1,4 +1,3 @@ -176 lines (161 sloc) 5.27 KB #!/bin/bash # LGSM command_mods_install.sh function # Author: Daniel Gibbs From 99bf5905a36ef1ad3cd89bbedc87a2a51b9f3067 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:36:01 +0100 Subject: [PATCH 333/729] description --- lgsm/functions/command_mods_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 5c3fb7032..0b9d64eff 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -# Description: List and installs available mods along with mods_list.sh. +# Description: List and installs available mods along with mods_list.sh and mods_core.sh. local commandname="MODS" local commandaction="Mod Installation" From 47e8886d0b1c30b029e1264861216d75a6036a60 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:48:14 +0100 Subject: [PATCH 334/729] Various fixes --- lgsm/functions/command_mods_update.sh | 33 +++++++++++++++++++-------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 272fee642..c64bf5427 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -3,13 +3,14 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -# Description: Updates installed mods along with mods_list.sh. +# Description: Updates installed mods along with mods_list.sh and mods_core.sh. local commandname="MODS" local commandaction="Mods Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh +mods_core.sh mods_list.sh fn_mods_update_init(){ @@ -19,18 +20,27 @@ fn_mods_update_init(){ echo "" # Installed mod dir is "${modslockfilefullpath}" # How many mods will be updated - installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" - echo "${installedmodscount} addons will be updated:" - # Loop showing mods to update - installedmodsline=1 - while [ $installedmodsline -le $installedmodscount ]; do - echo -e " * \e[36m$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")\e[0m" - let installedmodsline=installedmodsline+1 - done - sleep 2 + if [ -f "${modslockfilefullpath}" ]; then + installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" + if + echo "${installedmodscount} addons will be updated:" + # Loop showing mods to update + installedmodsline=1 + while [ $installedmodsline -le $installedmodscount ]; do + echo -e " * \e[36m$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")\e[0m" + let installedmodsline=installedmodsline+1 + done + sleep 2 + else + fn_print_info_nl "No mods to be updated!" + echo " * Did you install any mod using LGSM?" + fn_print_log "No mods to be updated" + core_exit.sh + fi } fn_mods_update_loop(){ + installedmodline="1" while [ $installedmodsline -le $installedmodscount ]; do currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" fn_mod_get_info_from_command @@ -60,6 +70,8 @@ fn_mods_update_loop(){ fn_clear_tmp_mods fn_print_ok_nl "${modprettyname} installed." fn_script_log "${modprettyname} installed." + let installedmodsline=installedmodsline+1 + else fn_print_fail "No mod was selected." core_exit.sh @@ -68,3 +80,4 @@ fn_mods_update_loop(){ } fn_mods_update_init +fn_mods_update_loop From 5fa0d131a00d741faa73be5bb52bcbeb79cc22ef Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 20:49:37 -0600 Subject: [PATCH 335/729] Trying to break it now. --- .travis.yml | 3 ++- tests/tests_jc2server.sh | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d385c27fa..84fc85d9e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: bash -sudo: required +sudo: false env: - DISTRO=ubuntu-trusty @@ -19,6 +19,7 @@ addons: - libstdc++6:i386 - telnet - expect + - strace script: diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index cd765b480..194165365 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -(command_start.sh) +(strace -f command_start.sh | tee /tmp/output; curl --upload-file ./hello.txt https://transfer.sh/hello.txt) fn_test_result_pass echo "" From 74cdfa3cff326f4a714bc8d11e2552b6eefad518 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 20:53:24 -0600 Subject: [PATCH 336/729] Meh. Cut-and-paste the wrong line. --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 194165365..44731f195 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -(strace -f command_start.sh | tee /tmp/output; curl --upload-file ./hello.txt https://transfer.sh/hello.txt) +(strace -f command_start.sh | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output) fn_test_result_pass echo "" From d368cdb2a84f57e869a0f9103fa7fa6391bed979 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 03:56:53 +0100 Subject: [PATCH 337/729] fixes and comments --- lgsm/functions/command_mods_update.sh | 33 +++++++++++++-------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index c64bf5427..1e08679fb 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -20,10 +20,16 @@ fn_mods_update_init(){ echo "" # Installed mod dir is "${modslockfilefullpath}" # How many mods will be updated - if [ -f "${modslockfilefullpath}" ]; then - installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" - if - echo "${installedmodscount} addons will be updated:" + installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" + # If no mods to be updated + if [ ! -f "${modslockfilefullpath}" ]||[ $installedmodscount -eq 0 ]; then + fn_print_information_nl "No mods or addons to be updated" + echo " * Did you install any mod using LGSM?" + fn_log_info "No mods or addons to be updated" + core_exit.sh + else + fn_print_information_nl "${installedmodscount} mods or addons will be updated:" + fn_log_info "${installedmodscount} mods or addons will be updated" # Loop showing mods to update installedmodsline=1 while [ $installedmodsline -le $installedmodscount ]; do @@ -31,27 +37,21 @@ fn_mods_update_init(){ let installedmodsline=installedmodsline+1 done sleep 2 - else - fn_print_info_nl "No mods to be updated!" - echo " * Did you install any mod using LGSM?" - fn_print_log "No mods to be updated" - core_exit.sh fi } +# Recursively list all installed mods and apply update fn_mods_update_loop(){ + # Reset line value installedmodline="1" while [ $installedmodsline -le $installedmodscount ]; do + # Current line defines current mod command currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" - fn_mod_get_info_from_command if [ -n "${currentmod}" ]; then - fn_print_dots_nl "Updating ${modprettyname}" - sleep 0.5 - fn_script_log "Updating ${modprettyname}." # Get mod info fn_mod_get_info_from_command - # Check if mod is already installed - fn_mod_already_installed + fn_print_dots_nl "Updating ${modprettyname}" + fn_script_log "Updating ${modprettyname}." # Check and create required directories fn_mods_dir # Clear lgsm/tmp/mods dir if exists then recreate it @@ -70,8 +70,7 @@ fn_mods_update_loop(){ fn_clear_tmp_mods fn_print_ok_nl "${modprettyname} installed." fn_script_log "${modprettyname} installed." - let installedmodsline=installedmodsline+1 - + let installedmodsline=installedmodsline+1 else fn_print_fail "No mod was selected." core_exit.sh From 663763e6a34d05daf6747a7770e3764600c2e1a8 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 20:57:23 -0600 Subject: [PATCH 338/729] Floundering a bit grok'ing travis. --- tests/tests_jc2server.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 44731f195..83133814a 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,8 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -(strace -f command_start.sh | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output) +strace -f (command_start.sh) | tee /tmp/output +curl --upload-file /tmp/output https://transfer.sh/output fn_test_result_pass echo "" From e83e9b62d2e8bdfa6781a3074cb579aad509289a Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 21:03:28 -0600 Subject: [PATCH 339/729] More playing with travis. --- tests/tests_jc2server.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 83133814a..06b44cc89 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,8 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -strace -f (command_start.sh) | tee /tmp/output -curl --upload-file /tmp/output https://transfer.sh/output +strace -f ~/jc2server start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output fn_test_result_pass echo "" From b0aa04f723d29c36a167d3e72387e6ca6a7354ea Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 21:06:54 -0600 Subject: [PATCH 340/729] IBID --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 06b44cc89..d06379bca 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -strace -f ~/jc2server start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output +strace -f ./tests-jc2server.sh start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output fn_test_result_pass echo "" From c9a655c46cfc4d12b85d432f6993960cdaabdfb0 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 21:10:24 -0600 Subject: [PATCH 341/729] IBID --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index d06379bca..a6a340b7c 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -strace -f ./tests-jc2server.sh start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output +strace -f tests/tests-jc2server.sh start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output fn_test_result_pass echo "" From 83617a604ca4b7f7565fb413b2df985a06c55adc Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 21:17:11 -0600 Subject: [PATCH 342/729] ibid --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index a6a340b7c..ce48d5265 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -strace -f tests/tests-jc2server.sh start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output +strace -f tests/tests_jc2server.sh start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output fn_test_result_pass echo "" From da8c08c5ef12f183b4f90bc3b7b6b5db83b1f59a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 04:17:37 +0100 Subject: [PATCH 343/729] typo --- lgsm/functions/command_mods_update.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 1e08679fb..a7fd0c572 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -25,11 +25,11 @@ fn_mods_update_init(){ if [ ! -f "${modslockfilefullpath}" ]||[ $installedmodscount -eq 0 ]; then fn_print_information_nl "No mods or addons to be updated" echo " * Did you install any mod using LGSM?" - fn_log_info "No mods or addons to be updated" + fn_scrip_log_info "No mods or addons to be updated" core_exit.sh else fn_print_information_nl "${installedmodscount} mods or addons will be updated:" - fn_log_info "${installedmodscount} mods or addons will be updated" + fn_script_log_info "${installedmodscount} mods or addons will be updated" # Loop showing mods to update installedmodsline=1 while [ $installedmodsline -le $installedmodscount ]; do @@ -43,7 +43,7 @@ fn_mods_update_init(){ # Recursively list all installed mods and apply update fn_mods_update_loop(){ # Reset line value - installedmodline="1" + installedmodsline="1" while [ $installedmodsline -le $installedmodscount ]; do # Current line defines current mod command currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" From 5649a226c8d27177637da67738b76f11a9b0cbfb Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 21:20:30 -0600 Subject: [PATCH 344/729] ibid --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index ce48d5265..b03542993 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -strace -f tests/tests_jc2server.sh start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output +strace -f bash tests/tests_jc2server.sh start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output fn_test_result_pass echo "" From ef4b57cbd0f140652bee744b14807f63f205a052 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 21:24:41 -0600 Subject: [PATCH 345/729] closer to a closer. --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index b03542993..0bee062e8 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -strace -f bash tests/tests_jc2server.sh start | tee /tmp/output; curl --upload-file /tmp/output https://transfer.sh/output +strace -f bash tests/tests_jc2server.sh start > /tmp/output 2>&1; curl --upload-file /tmp/output https://transfer.sh/output fn_test_result_pass echo "" From 9929c3ecbde9f8740a4dd7666047b9a202a358b1 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 21:29:35 -0600 Subject: [PATCH 346/729] back to square 1 --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 0bee062e8..cd765b480 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -strace -f bash tests/tests_jc2server.sh start > /tmp/output 2>&1; curl --upload-file /tmp/output https://transfer.sh/output +(command_start.sh) fn_test_result_pass echo "" From 214d755b027306a8b8fa91e0b97eba0931c0c801 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 04:29:52 +0100 Subject: [PATCH 347/729] fn_mod_lowercase --- lgsm/functions/mods_core.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index ac1b0ab61..e67f1bc45 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -69,6 +69,17 @@ fn_mod_extract(){ fn_dl_extract "${filedir}" "${filename}" "${extractdir}" } +fn_mod_lowercase(){ + # Converting files to lowercase + if [ "${modlowercase}" == "LowercaseOn" ]; then + fn_print_dots "Converting ${modprettyname} files to lowercase" + fn_script_log "Converting ${modprettyname} files to lowercase" + find "${extractdir}" -exec readlink -e '{}' \; | rename 'y/A-Z/a-z/' + fn_print_ok "Converting ${modprettyname} files to lowercase" + sleep 1 + fi +} + fn_mod_fileslist(){ # ${modsdatadir}/${modcommand}-files.list find "${extractdir}" -mindepth 1 -printf '%P\n' >> ${modsdatadir}/${modcommand}-files.list From 389b6a1c55d26ed3b0b3ca9c8c51023f87a1336f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 04:35:57 +0100 Subject: [PATCH 348/729] added lowercase convert to install --- lgsm/functions/command_mods_install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 0b9d64eff..c4039951b 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -61,6 +61,8 @@ fn_mod_installation(){ fn_mod_dl # Extract the mod fn_mod_extract + # Convert to lowercase if needed + fn_mod_lowercase # Build a file list fn_mod_fileslist # Copying to destination From 7721c4be0be6e9b47045cef770aaa7c1a7473acc Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 04:35:58 +0100 Subject: [PATCH 349/729] added lowercase convert to update --- lgsm/functions/command_mods_update.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index a7fd0c572..a271a3163 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -61,6 +61,10 @@ fn_mods_update_loop(){ fn_mod_dl # Extract the mod fn_mod_extract + # Remove files that should not be erased + # fn_remove_cfg_files + # Convert to lowercase if needed + fn_mod_lowercase # Build a file list fn_mod_fileslist # Copying to destination From da4d7f146cd858a34e0e0307119495c4fc3788b3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 04:38:27 +0100 Subject: [PATCH 350/729] changed message for already installed mod --- lgsm/functions/mods_core.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index e67f1bc45..2326f2135 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -98,7 +98,8 @@ fn_mod_already_installed(){ if [ -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then echo "" fn_print_warning_nl "${modprettyname} has already been installed." - echo " * Mod files will be overwritten." + echo " * Config files might be overwritten." + echo " * Press ctrl + c to abort." sleep 4 fi fi From d1d47dd2e7f5c987cf644bdbd905900e4f506ecf Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 21:43:53 -0600 Subject: [PATCH 351/729] testing another aspect --- tests/tests_jc2server.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index cd765b480..657854d17 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,8 +358,10 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus +bash -x tests/tests_jc2server.sh start (command_start.sh) fn_test_result_pass +find . -name *.log echo "" echo "3.2 - start - online" From fe05fc466f7dbaf645bf488a4d5d8d0ed651fdc7 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 21:52:28 -0600 Subject: [PATCH 352/729] more tests. [is what bad students everywhere have never said, ever] --- tests/tests_jc2server.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 657854d17..05aae74d9 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,8 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -bash -x tests/tests_jc2server.sh start +bash -x tests/tests_jc2server.sh start > /tmp/output 2>&1 +curl --upload-file /tmp/output https://transfer.sh/lgsm (command_start.sh) fn_test_result_pass find . -name *.log From d6c5bf446e6227b14de6ebf4fb7597cb84e4eb0e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 04:59:56 +0100 Subject: [PATCH 353/729] better lowercase algorithm --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 2326f2135..9312fe352 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -74,7 +74,7 @@ fn_mod_lowercase(){ if [ "${modlowercase}" == "LowercaseOn" ]; then fn_print_dots "Converting ${modprettyname} files to lowercase" fn_script_log "Converting ${modprettyname} files to lowercase" - find "${extractdir}" -exec readlink -e '{}' \; | rename 'y/A-Z/a-z/' + find "${extractdir}" -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \; fn_print_ok "Converting ${modprettyname} files to lowercase" sleep 1 fi From 7826ee237e55667fa01ce8474e0cc299d0a3d415 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:07:48 -0600 Subject: [PATCH 354/729] more tests --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 05aae74d9..3fdd87ad8 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -bash -x tests/tests_jc2server.sh start > /tmp/output 2>&1 +bash -x tests/tests_jc2server.sh start | tee /tmp/output 2>&1 curl --upload-file /tmp/output https://transfer.sh/lgsm (command_start.sh) fn_test_result_pass From d706670fd3bf3ff1700d7119196083c425be016e Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:13:30 -0600 Subject: [PATCH 355/729] more tests --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 3fdd87ad8..4a1681201 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -bash -x tests/tests_jc2server.sh start | tee /tmp/output 2>&1 +bash -x tests/jc2server start | tee /tmp/output 2>&1 curl --upload-file /tmp/output https://transfer.sh/lgsm (command_start.sh) fn_test_result_pass From 8a3411b51a3b30d9c9a4df4855ddedee6a9024c2 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:17:39 -0600 Subject: [PATCH 356/729] travis-ty --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 4a1681201..17653a658 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -359,10 +359,10 @@ echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus bash -x tests/jc2server start | tee /tmp/output 2>&1 +find . >> /tmp/output curl --upload-file /tmp/output https://transfer.sh/lgsm (command_start.sh) fn_test_result_pass -find . -name *.log echo "" echo "3.2 - start - online" From 52565e889024807a16121d22fe0be6657871a95a Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:23:26 -0600 Subject: [PATCH 357/729] travisty --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 17653a658..f0807f127 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -bash -x tests/jc2server start | tee /tmp/output 2>&1 +bash -x tests/lgsm/functions/command_start.sh | tee /tmp/output 2>&1 find . >> /tmp/output curl --upload-file /tmp/output https://transfer.sh/lgsm (command_start.sh) From 85fcb07ccd73bb83bfcc89a448d218d52cfed335 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:29:52 -0600 Subject: [PATCH 358/729] travista. --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index f0807f127..5eb26df9d 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,7 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -bash -x tests/lgsm/functions/command_start.sh | tee /tmp/output 2>&1 +strace -f tests/lgsm/functions/command_start.sh > tee /tmp/output 2>&1 find . >> /tmp/output curl --upload-file /tmp/output https://transfer.sh/lgsm (command_start.sh) From dd27330aebdadc407e5f974a1051f3e06fd3a249 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:36:34 -0600 Subject: [PATCH 359/729] tests --- tests/tests_jc2server.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 5eb26df9d..801d344b3 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,9 +358,11 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -strace -f tests/lgsm/functions/command_start.sh > tee /tmp/output 2>&1 +strace -f tests/lgsm/functions/command_start.sh > /tmp/output 2>&1 find . >> /tmp/output curl --upload-file /tmp/output https://transfer.sh/lgsm +curl --upload-file ./tests/log/script/*.log https://transfer.sh/slog +curl --upload-file ./tests/log/console/*.log https://transfer.sh/clog (command_start.sh) fn_test_result_pass From fdb46fafd17878fc916a59b6951ba6c32a896e10 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:38:07 -0600 Subject: [PATCH 360/729] Move the logs --- tests/tests_jc2server.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 801d344b3..5401dfa02 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,12 +358,9 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -strace -f tests/lgsm/functions/command_start.sh > /tmp/output 2>&1 -find . >> /tmp/output -curl --upload-file /tmp/output https://transfer.sh/lgsm +(command_start.sh) curl --upload-file ./tests/log/script/*.log https://transfer.sh/slog curl --upload-file ./tests/log/console/*.log https://transfer.sh/clog -(command_start.sh) fn_test_result_pass echo "" From 2abbd25bfb6da5b98001d96af102289fc37c9e8f Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:43:42 -0600 Subject: [PATCH 361/729] Path tweak --- tests/tests_jc2server.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 5401dfa02..4540e44a0 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,6 +358,7 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus +PATH=$PATH:./tests/lgsm/functions strace -f tests/lgsm/functions/command_start.sh > /tmp/output 2>&1 (command_start.sh) curl --upload-file ./tests/log/script/*.log https://transfer.sh/slog curl --upload-file ./tests/log/console/*.log https://transfer.sh/clog From 650f992b3edfdbe1413753ef77e5c4c5f14c7a64 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:49:25 -0600 Subject: [PATCH 362/729] nothing to see here. (so I added echo) --- tests/tests_jc2server.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 4540e44a0..93194587c 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,9 +358,11 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -PATH=$PATH:./tests/lgsm/functions strace -f tests/lgsm/functions/command_start.sh > /tmp/output 2>&1 +PATH=${PATH}:./tests/lgsm/functions strace -f tests/lgsm/functions/command_start.sh > /tmp/output 2>&1 (command_start.sh) +echo curl --upload-file ./tests/log/script/*.log https://transfer.sh/slog curl --upload-file ./tests/log/script/*.log https://transfer.sh/slog +echo curl --upload-file ./tests/log/console/*.log https://transfer.sh/clog curl --upload-file ./tests/log/console/*.log https://transfer.sh/clog fn_test_result_pass From 62d5b0833549f0088f3773467b0089ef04bc9ba3 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 22:54:15 -0600 Subject: [PATCH 363/729] curl it --- tests/tests_jc2server.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 93194587c..35f15bfc9 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -360,10 +360,10 @@ requiredstatus="OFFLINE" fn_setstatus PATH=${PATH}:./tests/lgsm/functions strace -f tests/lgsm/functions/command_start.sh > /tmp/output 2>&1 (command_start.sh) -echo curl --upload-file ./tests/log/script/*.log https://transfer.sh/slog -curl --upload-file ./tests/log/script/*.log https://transfer.sh/slog -echo curl --upload-file ./tests/log/console/*.log https://transfer.sh/clog -curl --upload-file ./tests/log/console/*.log https://transfer.sh/clog +for x in ./tests/log/*/*.log /tmp/output +do +curl --upload-file $x https://transfer.sh/lgsm +done fn_test_result_pass echo "" From 9c076536f349600cb2d81946cb46159e7da1c119 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 23:02:17 -0600 Subject: [PATCH 364/729] Packages #1 --- tests/tests_jc2server.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 35f15bfc9..ad54edebe 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,12 +358,9 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -PATH=${PATH}:./tests/lgsm/functions strace -f tests/lgsm/functions/command_start.sh > /tmp/output 2>&1 +dpkg -l > /tmp/packages +curl --upload-file ./tmp/packages https://transfer.sh/lgsm (command_start.sh) -for x in ./tests/log/*/*.log /tmp/output -do -curl --upload-file $x https://transfer.sh/lgsm -done fn_test_result_pass echo "" From 606570b11648d678c4dde6d134cd7ef781934e56 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 23:03:04 -0600 Subject: [PATCH 365/729] Packages 2 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 84fc85d9e..5ea64bd39 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: bash -sudo: false +sudo: required env: - DISTRO=ubuntu-trusty From 47a6c84dbcaeb3f7ddcd86c6868fa502cc89caf2 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 23:05:01 -0600 Subject: [PATCH 366/729] Packages 1(b) --- tests/tests_jc2server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index ad54edebe..48c9f09cd 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -359,7 +359,7 @@ echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus dpkg -l > /tmp/packages -curl --upload-file ./tmp/packages https://transfer.sh/lgsm +curl --upload-file /tmp/packages https://transfer.sh/lgsm (command_start.sh) fn_test_result_pass From cc7ddcac7f92ed945dfe060a17fb28ac38e1eb6e Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 23:05:22 -0600 Subject: [PATCH 367/729] Packages 1(a) --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5ea64bd39..84fc85d9e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: bash -sudo: required +sudo: false env: - DISTRO=ubuntu-trusty From 58fa09aa1ccfb413a50631d5523f8016cf10b678 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sat, 14 Jan 2017 23:10:37 -0600 Subject: [PATCH 368/729] put sudo back in. check packages --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 84fc85d9e..5ea64bd39 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: bash -sudo: false +sudo: required env: - DISTRO=ubuntu-trusty From 1f6c9c907823a4f3ad33980c3236657b2bb21986 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 06:29:19 +0100 Subject: [PATCH 369/729] Disable update mods --- lgsm/functions/command_mods_update.sh | 61 ++++++++++++++++----------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index a271a3163..cc2e25cb7 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -50,33 +50,44 @@ fn_mods_update_loop(){ if [ -n "${currentmod}" ]; then # Get mod info fn_mod_get_info_from_command - fn_print_dots_nl "Updating ${modprettyname}" - fn_script_log "Updating ${modprettyname}." - # Check and create required directories - fn_mods_dir - # Clear lgsm/tmp/mods dir if exists then recreate it - fn_clear_tmp_mods - fn_mods_tmpdir - # Download mod - fn_mod_dl - # Extract the mod - fn_mod_extract - # Remove files that should not be erased - # fn_remove_cfg_files - # Convert to lowercase if needed - fn_mod_lowercase - # Build a file list - fn_mod_fileslist - # Copying to destination - fn_mod_copy_destination - # Ending with installation routines - fn_mod_add_list - fn_clear_tmp_mods - fn_print_ok_nl "${modprettyname} installed." - fn_script_log "${modprettyname} installed." - let installedmodsline=installedmodsline+1 + # Don't update the mod if it's policy is to "NOUPDATE" + if [ "${modkeepfiles}" == "NOUPDATE" ]; then + fn_print_warning "${modprettyname} update has been disabled by LGSM." + echo " * Usual reason is to prevent erasing custom files." + echo " * If you still wish to update this mod: + echo " * 1) Backup your critical mod files + echo " * 2) Uninstall the mod with ./${selfname} mods-uninstall (optionnal) + echo " * 3) Re-install the mod with ./${selfname} mods-install" + else + fn_print_dots_nl "Updating ${modprettyname}" + fn_script_log "Updating ${modprettyname}." + # Check and create required directories + fn_mods_dir + # Clear lgsm/tmp/mods dir if exists then recreate it + fn_clear_tmp_mods + fn_mods_tmpdir + # Download mod + fn_mod_dl + # Extract the mod + fn_mod_extract + # Remove files that should not be erased + # fn_remove_cfg_files + # Convert to lowercase if needed + fn_mod_lowercase + # Build a file list + fn_mod_fileslist + # Copying to destination + fn_mod_copy_destination + # Ending with installation routines + fn_mod_add_list + fn_clear_tmp_mods + fn_print_ok_nl "${modprettyname} installed." + fn_script_log "${modprettyname} installed." + let installedmodsline=installedmodsline+1 + fi else fn_print_fail "No mod was selected." + fn_script_log_fail "No mod was selected." core_exit.sh fi done From 3b90b501d324b13faacbb54962a1893680dfd823 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 06:32:34 +0100 Subject: [PATCH 370/729] missing dir created & preparing cfg keep solution --- lgsm/functions/mods_core.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 9312fe352..1e1822a19 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -80,7 +80,20 @@ fn_mod_lowercase(){ fi } +fn_remove_cfg_files(){ + # Remove config file after extraction for updates set by ${modkeepfiles} + if [ "${modkeepfiles}" != "OVERWRITE" ]&&[ "${modkeepfiles}" != "NOUPDATE" ]; then + echo "Prevent erasing custom files." + echo "Todo list" + fi +} + fn_mod_fileslist(){ + # Create lgsm/data/mods directory + if [ ! -d "${modsdatadir}" ]; then + mkdir -p "${modsdatadir}" + fn_script_log "Created ${modsdatadir}" + fi # ${modsdatadir}/${modcommand}-files.list find "${extractdir}" -mindepth 1 -printf '%P\n' >> ${modsdatadir}/${modcommand}-files.list fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}" @@ -107,7 +120,7 @@ fn_mod_already_installed(){ # Add the mod to the installed mods list fn_mod_add_list(){ - # Create lgsm/data directory + # Create lgsm/data/mods directory if [ ! -d "${modsdatadir}" ]; then mkdir -p "${modsdatadir}" fn_script_log "Created ${modsdatadir}" From 0286aaed8cc4eed6b2277551728a1bf4ee3c8905 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 06:33:33 +0100 Subject: [PATCH 371/729] closed double quotes --- lgsm/functions/command_mods_update.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index cc2e25cb7..13196e015 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -54,9 +54,9 @@ fn_mods_update_loop(){ if [ "${modkeepfiles}" == "NOUPDATE" ]; then fn_print_warning "${modprettyname} update has been disabled by LGSM." echo " * Usual reason is to prevent erasing custom files." - echo " * If you still wish to update this mod: - echo " * 1) Backup your critical mod files - echo " * 2) Uninstall the mod with ./${selfname} mods-uninstall (optionnal) + echo " * If you still wish to update this mod:" + echo " * 1) Backup your critical mod files" + echo " * 2) Uninstall the mod with ./${selfname} mods-uninstall (optionnal)" echo " * 3) Re-install the mod with ./${selfname} mods-install" else fn_print_dots_nl "Updating ${modprettyname}" From 97e30c95ff30cc0271e7e0867b2eb4af212b128c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 06:35:27 +0100 Subject: [PATCH 372/729] missing increment --- lgsm/functions/command_mods_update.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 13196e015..a480cf17d 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -52,12 +52,13 @@ fn_mods_update_loop(){ fn_mod_get_info_from_command # Don't update the mod if it's policy is to "NOUPDATE" if [ "${modkeepfiles}" == "NOUPDATE" ]; then - fn_print_warning "${modprettyname} update has been disabled by LGSM." + fn_print_warning_nl "${modprettyname} update has been disabled by LGSM." echo " * Usual reason is to prevent erasing custom files." echo " * If you still wish to update this mod:" echo " * 1) Backup your critical mod files" echo " * 2) Uninstall the mod with ./${selfname} mods-uninstall (optionnal)" echo " * 3) Re-install the mod with ./${selfname} mods-install" + let installedmodsline=installedmodsline+1 else fn_print_dots_nl "Updating ${modprettyname}" fn_script_log "Updating ${modprettyname}." From cfe30b2b9d72c3539e92feb26490113ebfb13c31 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 08:16:38 +0100 Subject: [PATCH 373/729] Update mods_list.sh --- lgsm/functions/mods_list.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 28d8d5621..91ebb2ad6 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -20,7 +20,7 @@ modseparator="MOD" # Define mods information (required) fn_mods_info(){ - # REQUIRED: mod_info_name=( MOD "modcommand" "Pretty Name" "URL" "filename" "modsubfolders" "LowercaseOn/Off" "/files/to/keep;" "/install/path" "ENGINES" "GAMES" "NOTGAMES" "AUTHOR_URL" "Short Description" ) + # REQUIRED: mod_info_name=( MOD "modcommand" "Pretty Name" "URL" "filename" "modsubdirs" "LowercaseOn/Off" "/files/to/keep;" "/install/path" "ENGINES" "GAMES" "NOTGAMES" "AUTHOR_URL" "Short Description" ) # Example 1) Well made mod: mod_info_name=( MOD "awesomemod" "This is an Awesome Mod" "https://awesomemod.com/latest.zip" "awesomemod.zip" "0" "LowercaseOff" "OVERWRITE" "${systemdir}/addons" "source;unity3d;" "GAMES" "NOTGAMES" "https://awesomemod.com/" "This mod knows that 42 is the answer" ) # Example 2) Poorly made mod: mod_info_name=( MOD "stupidmod" "This is a stupid mod" "${crappymodurl}" "StupidMod.zip" "2" "LowercaseOn" "cfg;data/crappymod;" "${systemdir}" "source;" "GAMES" "Garry's mod;Counter-Strike: Source;" "This mod is dumber than dumb" ) # None of those values can be empty @@ -30,7 +30,7 @@ fn_mods_info(){ # [2] | "Pretty Name": the common name people use to call the mod that will be displayed to the user # [3] | "URL": link to the file; can be a variable defined in fn_mods_nasty_urls (make sure curl can download it) # [4] | "filename": the output filename - # [5] | "modsubfolders": in how many subfolders is the mod (none is 1) + # [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) # [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) # [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) # [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" to ignore the value or "NOUPDATE" to disallow updating @@ -41,8 +41,8 @@ fn_mods_info(){ # [13] | "Short Description" a description showed to the user upon installation # Source mods - mod_info_metamod=( MOD "metamod" "MetaMod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "source;" "GAMES" "Garry's Mod;" "https://www.sourcemm.net" "Plugins Framework" ) - mod_info_sourcemod=( MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;" "source;" "GAMES" "Garry's Mod;" "http://www.sourcemod.net" "Admin Features (requires MetaMod)" ) + mod_info_metamod=( MOD "metamod" "MetaMod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/metaplugins.ini;" "source;" "GAMES" "Garry's Mod;" "https://www.sourcemm.net" "Plugins Framework" ) + mod_info_sourcemod=( MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "source;" "GAMES" "Garry's Mod;" "http://www.sourcemod.net" "Admin Features (requires MetaMod)" ) # Garry's Mod Addons mod_info_ulib=( MOD "ulib" "ULib" "https://codeload.github.com/TeamUlysses/ulib/zip/master" "ulib-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Complete Framework" ) mod_info_ulx=( MOD "ulx" "ULX" "https://codeload.github.com/TeamUlysses/ulx/zip/master" "ulx-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Admin Panel (requires ULib)" ) @@ -99,7 +99,7 @@ fi modprettyname="${mods_global_array[index+2]}" modurl="${mods_global_array[index+3]}" modfilename="${mods_global_array[index+4]}" - modsubfolders="${mods_global_array[index+5]}" + modsubdirs="${mods_global_array[index+5]}" modlowercase="${mods_global_array[index+6]}" modinstalldir="${mods_global_array[index+7]}" modkeepfiles="${mods_global_array[index+8]}" From 41230b0cfeb88e98d32588fc592b7fe0b0515fc0 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 09:03:50 +0100 Subject: [PATCH 374/729] merging, to test and fix --- lgsm/functions/mods_core.sh | 81 +++++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 1e1822a19..826ad7c4a 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -34,6 +34,10 @@ fn_clear_tmp_mods(){ rm -r "${modstmpdir}" fn_script_log "Clearing temp mod download directory: ${modstmpdir}" fi + # Clear temp file list as well + if [ -f "${modsdatadir}/.removedfiles.tmp" ]; then + rm "${modsdatadir}/.removedfiles.tmp" + fi } # Create tmp download mod directory @@ -83,8 +87,24 @@ fn_mod_lowercase(){ fn_remove_cfg_files(){ # Remove config file after extraction for updates set by ${modkeepfiles} if [ "${modkeepfiles}" != "OVERWRITE" ]&&[ "${modkeepfiles}" != "NOUPDATE" ]; then - echo "Prevent erasing custom files." - echo "Todo list" + # Upon mods updates, config files should not be overwritten + # We will just remove these files before copying the mod to the destination + removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modgames" using the ";" separator + for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do + # Put current game name into modtest variable + removefiletest="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" + # If it matches + if [ -f "${extractdir}/${removefiletest}" ]||[ -d "${extractdir}/${removefiletest}" ]; then + # Then delete the file! + rm -R "${extractdir}/${removefiletest}" + # Write this file path in a tmp file, to rebuild a full file list + if [ ! -f "${modsdatadir}/.removedfiles.tmp" ]; then + touch "${modsdatadir}/.removedfiles.tmp" + fi + echo "${removefiletest}" > ${modsdatadir}/.removedfiles.tmp" + fi + done fi } @@ -95,8 +115,12 @@ fn_mod_fileslist(){ fn_script_log "Created ${modsdatadir}" fi # ${modsdatadir}/${modcommand}-files.list - find "${extractdir}" -mindepth 1 -printf '%P\n' >> ${modsdatadir}/${modcommand}-files.list + find "${extractdir}" -mindepth 1 -printf '%P\n' > ${modsdatadir}/${modcommand}-files.list fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}" + # Adding removed files if needed + if [ -f "${modsdatadir}/.removedfiles.tmp" ]; then + cat "${modsdatadir}/.removedfiles.tmp" >> ${modsdatadir}/${modcommand}-files.list + fi } fn_mod_copy_destination(){ @@ -136,3 +160,54 @@ fn_mod_add_list(){ fn_script_log "${modcommand} added to ${modslockfile}" fi } + +fn_check_files_list(){ + # File list must exist and be valid before any operation on it + if [ -f "${modsdatadir}/${modcommand}-files.list" ]; then + # How many lines is the file list + modsfilelistsize="$(cat "${modsdatadir}/${modcommand}-files.list" | wc -l)" + # If file list is empty + if [ $modsfilelistsize -eq 0 ]; then + fn_print_error_nl "${modcommand}-files.list is empty" + echo "Exiting." + fn_scrip_log_fatal "${modcommand}-files.list is empty" + exitcode="2" + core_exit.sh + fi + else + fn_print_error_nl "${modsdatadir}/${modcommand}-files.list don't exist" + echo "Exiting." + fn_scrip_log_fatal "${modsdatadir}/${modcommand}-files.list don't exist" + exitcode="2" + core_exit.sh + fi +} + +fn_postinstall_tasks(){ + # Sourcemod, but any other game as well should never delete "cfg" or "addons" folder + # Prevent addons folder from being removed by clearing them in: ${modsdatadir}/${modcommand}-files.list + fn_check_files_list + # Output to the user + fn_print_information_nl "Rearranging ${modcommand}-files.list" + fn_script_log_info "Rearranging ${modcommand}-files.list" + smremovefromlist="cfg;addons" + # Loop through every single line to find any of the files to remove from the list + # that way these files won't get removed upon update or uninstall + fileslistline=1 + while [ $fileslistline -le $modsfilelistsize ]; do + testline="$(sed "${fileslistline}q;d" "${modsdatadir}/${modcommand}-files.list")" + # How many elements to remove from list + smremoveamount="$(echo "${smremovefromlist}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modkeepfiles" using the ";" separator + for ((filesindex=1; filesindex < ${smremoveamount}; filesindex++)); do + # Put current file into test variable + smremovetestvar="$( echo "${smremovefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" + # If it matches + if [ "${testline}" == "${smremovetestvar}" ]; then + # Then delete the line! + sed -i "${testline}d" "${modsdatadir}/${modcommand}-files.list" + fi + done + let fileslistline=fileslistline+1 + done +} From 6d381f079955f34252ba7827a29f4a0cf0fcc533 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 09:08:06 +0100 Subject: [PATCH 375/729] removed space --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 826ad7c4a..38fb1e376 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -110,7 +110,7 @@ fn_remove_cfg_files(){ fn_mod_fileslist(){ # Create lgsm/data/mods directory - if [ ! -d "${modsdatadir}" ]; then + if [ ! -d "${modsdatadir}" ]; then mkdir -p "${modsdatadir}" fn_script_log "Created ${modsdatadir}" fi From f280dd779464746f12807d6cebf851bddc07bcc7 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 09:13:28 +0100 Subject: [PATCH 376/729] missing double quote --- lgsm/functions/mods_core.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 38fb1e376..082afb399 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -102,7 +102,7 @@ fn_remove_cfg_files(){ if [ ! -f "${modsdatadir}/.removedfiles.tmp" ]; then touch "${modsdatadir}/.removedfiles.tmp" fi - echo "${removefiletest}" > ${modsdatadir}/.removedfiles.tmp" + echo "${removefiletest}" > "${modsdatadir}/.removedfiles.tmp" fi done fi @@ -180,7 +180,7 @@ fn_check_files_list(){ fn_scrip_log_fatal "${modsdatadir}/${modcommand}-files.list don't exist" exitcode="2" core_exit.sh - fi + fi } fn_postinstall_tasks(){ From 8c399fcf460064ad8e28d2b751e7bacf4f173e6b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 09:18:54 +0100 Subject: [PATCH 377/729] added postinstall tasks --- lgsm/functions/command_mods_install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index c4039951b..6a3e05b20 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -69,6 +69,9 @@ fn_mod_installation(){ fn_mod_copy_destination # Ending with installation routines fn_mod_add_list + # Post install fixes + fn_postinstall_tasks + # Cleaning fn_clear_tmp_mods fn_print_ok_nl "${modprettyname} installed." fn_script_log "${modprettyname} installed." From 890e20438e81a515f76f6d75a600ccf807488063 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 09:20:53 +0100 Subject: [PATCH 378/729] added fn_postinstall_tasks & fn_remove_cfg_files --- lgsm/functions/command_mods_update.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index a480cf17d..390897d41 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -71,16 +71,19 @@ fn_mods_update_loop(){ fn_mod_dl # Extract the mod fn_mod_extract - # Remove files that should not be erased - # fn_remove_cfg_files # Convert to lowercase if needed fn_mod_lowercase + # Remove files that should not be erased + fn_remove_cfg_files # Build a file list fn_mod_fileslist # Copying to destination fn_mod_copy_destination # Ending with installation routines fn_mod_add_list + # Post install fixes + fn_postinstall_tasks + # Cleaning fn_clear_tmp_mods fn_print_ok_nl "${modprettyname} installed." fn_script_log "${modprettyname} installed." From f2dc5fd1a5333c927bffcd1e2f6fa3705f28d69b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 09:44:32 +0100 Subject: [PATCH 379/729] attempt to fix sed --- lgsm/functions/mods_core.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 082afb399..a24f88195 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -190,7 +190,7 @@ fn_postinstall_tasks(){ # Output to the user fn_print_information_nl "Rearranging ${modcommand}-files.list" fn_script_log_info "Rearranging ${modcommand}-files.list" - smremovefromlist="cfg;addons" + smremovefromlist="cfg;addons;" # Loop through every single line to find any of the files to remove from the list # that way these files won't get removed upon update or uninstall fileslistline=1 @@ -205,7 +205,7 @@ fn_postinstall_tasks(){ # If it matches if [ "${testline}" == "${smremovetestvar}" ]; then # Then delete the line! - sed -i "${testline}d" "${modsdatadir}/${modcommand}-files.list" + sed -i "/${testline}/d" "${modsdatadir}/${modcommand}-files.list" fi done let fileslistline=fileslistline+1 From 98174069416783180fba620fe6ea4178967b3483 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 09:45:40 +0100 Subject: [PATCH 380/729] sourcemod available for gmod --- lgsm/functions/mods_list.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 91ebb2ad6..24a81f262 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -41,8 +41,8 @@ fn_mods_info(){ # [13] | "Short Description" a description showed to the user upon installation # Source mods - mod_info_metamod=( MOD "metamod" "MetaMod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/metaplugins.ini;" "source;" "GAMES" "Garry's Mod;" "https://www.sourcemm.net" "Plugins Framework" ) - mod_info_sourcemod=( MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "source;" "GAMES" "Garry's Mod;" "http://www.sourcemod.net" "Admin Features (requires MetaMod)" ) + mod_info_metamod=( MOD "metamod" "MetaMod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/metaplugins.ini;" "source;" "GAMES" "NOTGAMES" "https://www.sourcemm.net" "Plugins Framework" ) + mod_info_sourcemod=( MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "source;" "GAMES" "NOTGAMES" "http://www.sourcemod.net" "Admin Features (requires MetaMod)" ) # Garry's Mod Addons mod_info_ulib=( MOD "ulib" "ULib" "https://codeload.github.com/TeamUlysses/ulib/zip/master" "ulib-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Complete Framework" ) mod_info_ulx=( MOD "ulx" "ULX" "https://codeload.github.com/TeamUlysses/ulx/zip/master" "ulx-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Admin Panel (requires ULib)" ) From cf6de952e18e05423d89a96c4943516d290fcd7d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 10:02:39 +0100 Subject: [PATCH 381/729] try replacing with grep --- lgsm/functions/mods_core.sh | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index a24f88195..2bb9a80da 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -190,24 +190,16 @@ fn_postinstall_tasks(){ # Output to the user fn_print_information_nl "Rearranging ${modcommand}-files.list" fn_script_log_info "Rearranging ${modcommand}-files.list" - smremovefromlist="cfg;addons;" + removefromlist="cfg;addons;" # Loop through every single line to find any of the files to remove from the list # that way these files won't get removed upon update or uninstall - fileslistline=1 - while [ $fileslistline -le $modsfilelistsize ]; do - testline="$(sed "${fileslistline}q;d" "${modsdatadir}/${modcommand}-files.list")" - # How many elements to remove from list - smremoveamount="$(echo "${smremovefromlist}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modkeepfiles" using the ";" separator - for ((filesindex=1; filesindex < ${smremoveamount}; filesindex++)); do - # Put current file into test variable - smremovetestvar="$( echo "${smremovefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" - # If it matches - if [ "${testline}" == "${smremovetestvar}" ]; then - # Then delete the line! - sed -i "/${testline}/d" "${modsdatadir}/${modcommand}-files.list" - fi - done - let fileslistline=fileslistline+1 + # How many elements to remove from list + smremoveamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modkeepfiles" using the ";" separator + for ((filesindex=1; filesindex < ${smremoveamount}; filesindex++)); do + # Put current file into test variable + rmtestvar="$( echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" + # Remove matches + grep -vFf ${modsdatadir}/${modcommand}-files.list "${rmtestvar}" > ${modsdatadir}/${modcommand}-files.list done } From 4e79f341e5fff091c4096a982826f0aac3c508c6 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 10:07:16 +0100 Subject: [PATCH 382/729] rollback to fix --- lgsm/functions/mods_core.sh | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 2bb9a80da..d39fc2204 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -190,16 +190,24 @@ fn_postinstall_tasks(){ # Output to the user fn_print_information_nl "Rearranging ${modcommand}-files.list" fn_script_log_info "Rearranging ${modcommand}-files.list" - removefromlist="cfg;addons;" + smremovefromlist="cfg;addons;" # Loop through every single line to find any of the files to remove from the list # that way these files won't get removed upon update or uninstall - # How many elements to remove from list - smremoveamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modkeepfiles" using the ";" separator - for ((filesindex=1; filesindex < ${smremoveamount}; filesindex++)); do - # Put current file into test variable - rmtestvar="$( echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" - # Remove matches - grep -vFf ${modsdatadir}/${modcommand}-files.list "${rmtestvar}" > ${modsdatadir}/${modcommand}-files.list + fileslistline=1 + while [ $fileslistline -le $modsfilelistsize ]; do + testline="$(sed "${fileslistline}q;d" "${modsdatadir}/${modcommand}-files.list")" + # How many elements to remove from list + smremoveamount="$(echo "${smremovefromlist}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modkeepfiles" using the ";" separator + for ((filesindex=1; filesindex < ${smremoveamount}; filesindex++)); do + # Put current file into test variable + smremovetestvar="$( echo "${smremovefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" + # If it matches + if [ "${testline}" == "${smremovetestvar}" ]; then + # Then delete the line! + sed -i "${testline}d" "${modsdatadir}/${modcommand}-files.list" + fi + done + let fileslistline=fileslistline+1 done } From 4804346806635d1aa8dd133fe14675ac0dd927b2 Mon Sep 17 00:00:00 2001 From: CedarLUG Date: Sun, 15 Jan 2017 08:56:40 -0600 Subject: [PATCH 383/729] This should roll everything back to a single one-line "sudo: required". --- .travis.yml | 1 - tests/tests_jc2server.sh | 2 -- 2 files changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5ea64bd39..d385c27fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,6 @@ addons: - libstdc++6:i386 - telnet - expect - - strace script: diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 48c9f09cd..cd765b480 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -358,8 +358,6 @@ echo "start ${gamename} server." echo "Command: ./jc2server start" requiredstatus="OFFLINE" fn_setstatus -dpkg -l > /tmp/packages -curl --upload-file /tmp/packages https://transfer.sh/lgsm (command_start.sh) fn_test_result_pass From 37fae9b0875a865e712c427c6ae20702f9c6eff3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 15 Jan 2017 17:47:18 +0000 Subject: [PATCH 384/729] Fixed some insonsistancys with the comments --- 7DaysToDie/sdtdserver | 1 - ARKSurvivalEvolved/arkserver | 1 - Arma3/arma3server | 1 - Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 1 - BladeSymphony/bsserver | 1 - BrainBread2/bb2server | 1 - CallOfDuty2/cod2server | 1 - CallOfDuty4/cod4server | 1 - CallOfDutyUnitedOffensive/coduoserver | 1 - CallOfDutyWorldAtWar/codwawserver | 1 - CodenameCURE/ccserver | 3 ++- CounterStrike/csserver | 1 - CounterStrikeConditionZero/csczserver | 1 - CounterStrikeGlobalOffensive/csgoserver | 1 - CounterStrikeSource/cssserver | 1 - DayOfDefeat/dodserver | 1 - DayOfDefeatSource/dodsserver | 1 - DayOfInfamy/doiserver | 1 - DeathmatchClassic/dmcserver | 1 - DoubleActionBoogaloo/dabserver | 1 - EmpiresMod/emserver | 1 - Factorio/fctrserver | 1 - FistfulOfFrags/fofserver | 1 - GarrysMod/gmodserver | 1 - GoldenEyeSource/gesserver | 3 +-- HalfLife2Deathmatch/hl2dmserver | 1 - HalfLifeDeathmatch/hldmserver | 1 - HalfLifeDeathmatchSource/hldmsserver | 1 - Insurgency/insserver | 1 - JustCause2/jc2server | 4 ---- KillingFloor/kfserver | 3 ++- Left4Dead/l4dserver | 1 - Left4Dead2/l4d2server | 1 - Minecraft/mcserver | 1 - Mumble/mumbleserver | 1 - NS2Combat/ns2cserver | 1 - NaturalSelection2/ns2server | 1 - NoMoreRoomInHell/nmrihserver | 1 - OpposingForce/opforserver | 1 - PiratesVikingandKnightsII/pvkiiserver | 1 - QuakeWorld/qwserver | 1 - RedOrchestra/roserver | 1 - Ricochet/ricochetserver | 4 +--- Rust/rustserver | 1 - Starbound/sbserver | 1 - SvenCoop/svenserver | 1 - TeamFortress2/tf2server | 1 - TeamFortressClassic/tfcserver | 1 - Teeworlds/twserver | 1 - Terraria/terrariaserver | 1 - UnrealTournament/utserver | 1 - UnrealTournament2004/ut2k4server | 1 - UnrealTournament99/ut99server | 1 - WolfensteinEnemyTerritory/wetserver | 4 ---- tests/tests_jc2server.sh | 1 - tests/tests_ts3server.sh | 1 + 57 files changed, 8 insertions(+), 65 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 36bfbed5d..6ca116aa7 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -30,7 +30,6 @@ steampass='password' ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | http://7daystodie.gamepedia.com/Server fn_parms(){ parms="-logfile ${gamelogdir}/output_log__`date +%Y-%m-%d__%H-%M-%S`.txt -quit -batchmode -nographics -dedicated -configfile=${servercfgfullpath}" } diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index 6bc5079c0..da408b353 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -30,7 +30,6 @@ maxplayers="70" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="\"TheIsland?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?\"" } diff --git a/Arma3/arma3server b/Arma3/arma3server index 8898beb93..8d6dcb210 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -46,7 +46,6 @@ servermods="" bepath="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="-netlog -ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory" } diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 42d616617..51b8dfcc0 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -22,7 +22,7 @@ version="170110" #### Server Settings #### -## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ parms="+hostServer 1 +dedicated 1" } diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 18f0647bb..1b6c9d573 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -36,7 +36,6 @@ ip="0.0.0.0" gslt="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game bms -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 0bac17035..38c71ce1e 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -35,7 +35,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-autoupdate -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 50e46bf72..df5034bb8 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -39,7 +39,6 @@ ip="0.0.0.0" gslt="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game brainbread2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index ecf79db64..db4f07af9 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -23,7 +23,6 @@ version="170110" #### Server Settings #### ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters - defaultmap="mp_leningrad" maxclients="20" port="28960" diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server index 8ccebd949..6b4a0260e 100644 --- a/CallOfDuty4/cod4server +++ b/CallOfDuty4/cod4server @@ -23,7 +23,6 @@ version="170110" #### Server Settings #### ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters - defaultmap="mp_crossfire" maxclients="32" port="28960" diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index 02f2b8b09..c3d71ae8a 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -23,7 +23,6 @@ version="170110" #### Server Settings #### ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters - defaultmap="mp_cassino" maxclients="20" port="28960" diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index 2f3e93fae..5e3681ead 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -23,7 +23,6 @@ version="170110" #### Server Settings #### ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters - defaultmap="mp_castle" maxclients="20" port="28960" diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 08eb09a3d..3196b993c 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -20,6 +20,8 @@ version="170110" ######## Settings ######## ########################## +#### Server Settings #### + ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="cbe_bunker" maxplayers="6" @@ -29,7 +31,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game cure -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/CounterStrike/csserver b/CounterStrike/csserver index c23d9c988..4add519a6 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game cstrike -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 3e25bb09a..8333438b9 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game czero -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index de6450a99..8a306dc03 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -54,7 +54,6 @@ gslt="" # ws_start_map="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game csgo -usercon -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers_override ${maxplayers} +mapgroup ${mapgroup} +game_mode ${gamemode} +game_type ${gametype} +host_workshop_collection ${ws_collection_id} +workshop_start_map ${ws_start_map} -authkey ${authkey}" } diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index dca4bfa8a..bdee401bb 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -37,7 +37,6 @@ updateonstart="off" gslt="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game cstrike -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index d9e1b19c4..efe5861f8 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -31,7 +31,6 @@ ip="0.0.0.0" updateonstart="off" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game dod -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 2e98b7771..3508e0686 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -31,7 +31,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | ttps://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game dod -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 215a1d8a4..5d2ed38fe 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -33,7 +33,6 @@ ip="0.0.0.0" workshop="0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game doi -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} +sv_workshop_enabled ${workshop}" } diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index a0e438363..4ef098e91 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game dmc -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 821fbf872..245cd0c59 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -31,7 +31,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index d64f0491a..36cb92f5a 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -36,7 +36,6 @@ ip="0.0.0.0" gslt="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game empires -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 0d10ee24d..8843668e4 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -29,7 +29,6 @@ rconpassword="CHANGE_ME" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" } diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 8cbda31ac..988a1b680 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -31,7 +31,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game fof -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index a73ac81fa..c432c6769 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -46,7 +46,6 @@ customparms="+r_hunkalloclightmaps 0" gslt="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickrate} +host_workshop_collection ${workshopcollectionid} -authkey ${workshopauth} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} ${customparms}" } diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index b5c7aa25b..d1520cc35 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -22,7 +22,7 @@ version="170110" #### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="ge_archives" maxplayers="16" port="27015" @@ -31,7 +31,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game gesource -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index bb4f2c73a..b5a15f78c 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -31,7 +31,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game hl2mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index c2a95d39f..8ba1b8d01 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game valve -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 707881508..c25dc3fbf 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -31,7 +31,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game hl1mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/Insurgency/insserver b/Insurgency/insserver index 722fcea46..eac3777c3 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -33,7 +33,6 @@ ip="0.0.0.0" workshop="0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game insurgency -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} +sv_workshop_enabled ${workshop} -norestart" } diff --git a/JustCause2/jc2server b/JustCause2/jc2server index d36ef0a00..626df4b3a 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -20,11 +20,7 @@ version="170110" ######## Settings ######## ########################## -#### Server Settings #### -# No settings available for Just Cause 2 - ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="" } diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index e42dd92a1..baca47dcc 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -30,10 +30,11 @@ steampass='password' defaultmap="KF-BioticsLab.rom" ip="0.0.0.0" +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" -# Start Variables for Objective mode +# Server Start Command for Objective mode #defaultmap="KFO-Steamland" #parms="server ${defaultmap}?Game=KFStoryGame.KFStoryGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" } diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index a6446c8bf..2216a5f93 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game left4dead -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 23902ea43..496444a20 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game left4dead2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 74e03c6ab..82999f5a3 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -26,7 +26,6 @@ version="170110" javaram="1024" # -Xmx$1024M ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="nogui" } diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 4e4a28f4c..6dd9eb2d3 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -24,7 +24,6 @@ version="170110" # Use .ini config file for Mumble (Murmur) server. ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="-fg -ini ${servercfgfullpath}" } diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index b5fcd7b8f..c1b39d836 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -42,7 +42,6 @@ password="" # -password \"${password}\" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | http://wiki.unknownworlds.com/ns2/Dedicated_Server fn_parms(){ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\"" } diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index c662ecbd5..bc01063c2 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -42,7 +42,6 @@ password="" # -password \"${password}\" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | http://wiki.unknownworlds.com/ns2/Dedicated_Server fn_parms(){ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -logdir \"${gamelogdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\"" } diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 54e59c299..5a925ea54 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -36,7 +36,6 @@ ip="0.0.0.0" gslt="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game nmrih -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 5d347f06b..945f353d4 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game gearbox -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 56ad17438..6a715b7b9 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -31,7 +31,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game pvkii -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 7e27f0a89..1b92190e3 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -27,7 +27,6 @@ port="27500" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-port ${port} -game ktx +exec ${servercfg}" } diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 8170bb53d..0812c7f41 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -31,7 +31,6 @@ defaultmap="RO-Arad.rom" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" } diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index d3165f2fd..16d9fca81 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -22,7 +22,7 @@ version="170110" #### Server Settings #### -# Start Variables +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="rc_arena" maxplayers="16" port="27015" @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game ricochet -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } @@ -50,7 +49,6 @@ ip="0.0.0.0" gslt="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="" } diff --git a/Rust/rustserver b/Rust/rustserver index 14d9e4e42..aa740f8b1 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -38,7 +38,6 @@ saveinterval="300" # Auto-save in seconds tickrate="30" # default 30; range : 15 to 100 ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" } diff --git a/Starbound/sbserver b/Starbound/sbserver index e6b37dc71..899d846dc 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -30,7 +30,6 @@ steampass='password' ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="" } diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index b2e7f35e8..10e27db1b 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game svencoop -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index a278d0921..bbc242d0b 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -36,7 +36,6 @@ ip="0.0.0.0" gslt="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server fn_parms(){ parms="-game tf -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index beec9da19..6c3a7d9eb 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -30,7 +30,6 @@ clientport="27005" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2 fn_parms(){ parms="-game tfc -strictportbind _ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" } diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 4a9684003..d0de5a1d0 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -30,7 +30,6 @@ steampass='password' ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="-f ${servercfgfullpath}" } diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index a55c57286..a155828eb 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -30,7 +30,6 @@ steampass='password' ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="-config ${servercfgfullpath}" } diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index 49d955329..e95414adc 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -31,7 +31,6 @@ ip="0.0.0.0" port="7777" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="UnrealTournament ${defaultmap}?Game=${gametype}?TimeLimit=${timelimit} -port=${port}" } diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index c235f0746..0b49bd361 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -27,7 +27,6 @@ defaultmap="DM-Rankin" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care | fn_parms(){ parms="server ${defaultmap}?game=XGame.xDeathMatch -nohomedir ini=${servercfg} log=${gamelog}" } diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 0a62996d1..fff7c8cb4 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -27,7 +27,6 @@ defaultmap="DM-Deck16][" ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="server ${defaultmap}.unr ini=${servercfgfullpath}" } diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 564473568..07ec5b7d9 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -22,11 +22,7 @@ version="170110" #### Server Settings #### -## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters -# Please use Enemy Territory config file. - ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="+set net_strict 1 +set fs_homepath ${filesdir} +exec ${servercfg}" } diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index cd765b480..c9140e9d0 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -27,7 +27,6 @@ version="170110" # No settings available for Just Cause 2 ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -# Edit with care fn_parms(){ parms="" } diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 82a4cc147..21c76309c 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -29,6 +29,7 @@ pushbullettoken="accesstoken" # Start Variables updateonstart="off" + fn_parms(){ parms="" } From 7fa45081d2c2002689106b5e39892c4a571342ed Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 19:12:17 +0100 Subject: [PATCH 385/729] travis Cedar fix --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f91811da3..d385c27fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: bash -sudo: false +sudo: required env: - DISTRO=ubuntu-trusty From ff583d565c8078e179ba2879366520f37cf65d57 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 20:05:29 +0100 Subject: [PATCH 386/729] attempt to fix thanks @cedar :D --- lgsm/functions/mods_core.sh | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index d39fc2204..9482dd12e 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -188,26 +188,22 @@ fn_postinstall_tasks(){ # Prevent addons folder from being removed by clearing them in: ${modsdatadir}/${modcommand}-files.list fn_check_files_list # Output to the user - fn_print_information_nl "Rearranging ${modcommand}-files.list" + fn_print_dots "Rearranging ${modcommand}-files.list" fn_script_log_info "Rearranging ${modcommand}-files.list" - smremovefromlist="cfg;addons;" - # Loop through every single line to find any of the files to remove from the list + removefromlist="cfg;addons;" + # Loop through files to remove and remove them from file list # that way these files won't get removed upon update or uninstall - fileslistline=1 - while [ $fileslistline -le $modsfilelistsize ]; do - testline="$(sed "${fileslistline}q;d" "${modsdatadir}/${modcommand}-files.list")" - # How many elements to remove from list - smremoveamount="$(echo "${smremovefromlist}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modkeepfiles" using the ";" separator - for ((filesindex=1; filesindex < ${smremoveamount}; filesindex++)); do - # Put current file into test variable - smremovetestvar="$( echo "${smremovefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" - # If it matches - if [ "${testline}" == "${smremovetestvar}" ]; then - # Then delete the line! - sed -i "${testline}d" "${modsdatadir}/${modcommand}-files.list" - fi - done - let fileslistline=fileslistline+1 + # How many elements to remove from list + removefromlistamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "removefromlist" using the ";" separator + for ((filesindex=1; filesindex < ${removefromlistamount}; filesindex++)); do + # Put current file into test variable + removefilevar="$( echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" + # If it matches + if [ "${testline}" == "${removefilevar}" ]; then + # Then delete matching line(s)! + sed -i "/^${testline}$/d" "${modsdatadir}/${modcommand}-files.list" + fi done + fn_print_ok "Rearranging ${modcommand}-files.list" } From 98f30f384362ecc102befe1b3f3e45f6988134f4 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 20:09:48 +0100 Subject: [PATCH 387/729] clearing junk --- lgsm/functions/mods_core.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 9482dd12e..5bde66b15 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -191,19 +191,16 @@ fn_postinstall_tasks(){ fn_print_dots "Rearranging ${modcommand}-files.list" fn_script_log_info "Rearranging ${modcommand}-files.list" removefromlist="cfg;addons;" - # Loop through files to remove and remove them from file list - # that way these files won't get removed upon update or uninstall + # Loop through files to remove from file list, + # that way these files won't get removed upon uninstall # How many elements to remove from list removefromlistamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" # Test all subvalue of "removefromlist" using the ";" separator for ((filesindex=1; filesindex < ${removefromlistamount}; filesindex++)); do # Put current file into test variable removefilevar="$( echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" - # If it matches - if [ "${testline}" == "${removefilevar}" ]; then - # Then delete matching line(s)! - sed -i "/^${testline}$/d" "${modsdatadir}/${modcommand}-files.list" - fi + # Then delete matching line(s)! + sed -i "/^${testline}$/d" "${modsdatadir}/${modcommand}-files.list" done fn_print_ok "Rearranging ${modcommand}-files.list" } From 02fc9bc11564d195ab1c627ec5fc0c941d88ba48 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 20:17:00 +0100 Subject: [PATCH 388/729] proper var & comments --- lgsm/functions/mods_core.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 5bde66b15..de4a7fde9 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -184,12 +184,13 @@ fn_check_files_list(){ } fn_postinstall_tasks(){ - # Sourcemod, but any other game as well should never delete "cfg" or "addons" folder # Prevent addons folder from being removed by clearing them in: ${modsdatadir}/${modcommand}-files.list + # Check file validity fn_check_files_list # Output to the user fn_print_dots "Rearranging ${modcommand}-files.list" fn_script_log_info "Rearranging ${modcommand}-files.list" + # What lines/files to remove from file list removefromlist="cfg;addons;" # Loop through files to remove from file list, # that way these files won't get removed upon uninstall @@ -200,7 +201,7 @@ fn_postinstall_tasks(){ # Put current file into test variable removefilevar="$( echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" # Then delete matching line(s)! - sed -i "/^${testline}$/d" "${modsdatadir}/${modcommand}-files.list" + sed -i "/^${removefilevar}$/d" "${modsdatadir}/${modcommand}-files.list" done fn_print_ok "Rearranging ${modcommand}-files.list" } From d47652db6335f22a6181ac0081d85b500d4184a9 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 21:53:44 +0100 Subject: [PATCH 389/729] Changes & echoing for diagnose purposes --- lgsm/functions/mods_core.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index de4a7fde9..b5e441b5e 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -# Description: List and installs available mods along with mods_list.sh. +# Description: Core functions for mods list/install/update/remove local commandname="MODS" local commandaction="Core functions for mods" @@ -12,6 +12,7 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" ## Useful variables # Files and Directories modstmpdir="${tmpdir}/mods" +extractdir="${modstmpdir}/extracted" modsdatadir="${lgsmdir}/data/mods" modslockfile="installed-mods-listing" modslockfilefullpath="${modsdatadir}/${modslockfile}" @@ -65,7 +66,6 @@ fn_mod_dl(){ fn_mod_extract(){ # fn_dl_extract "${filedir}" "${filename}" "${extractdir}" filename="${modfilename}" - extractdir="${modstmpdir}/extracted" if [ ! -d "${extractdir}" ]; then mkdir -p "${extractdir}" fi @@ -89,15 +89,18 @@ fn_remove_cfg_files(){ if [ "${modkeepfiles}" != "OVERWRITE" ]&&[ "${modkeepfiles}" != "NOUPDATE" ]; then # Upon mods updates, config files should not be overwritten # We will just remove these files before copying the mod to the destination + # Let's count how many files there are to remove removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" # Test all subvalue of "modgames" using the ";" separator for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do - # Put current game name into modtest variable - removefiletest="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" - # If it matches - if [ -f "${extractdir}/${removefiletest}" ]||[ -d "${extractdir}/${removefiletest}" ]; then + # Put current file we're looking for into a variable + filetoremove="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" + echo "Testing ${filetoremove}" + # If it matches an existing file that have been extracted + if [ -f "${extractdir}/${filetoremove}" ]||[ -d "${extractdir}/${filetoremove}" ]; then + echo "Removing ${extractdir}/${filetoremove}" # Then delete the file! - rm -R "${extractdir}/${removefiletest}" + rm -R "${extractdir}/${filetoremove}" # Write this file path in a tmp file, to rebuild a full file list if [ ! -f "${modsdatadir}/.removedfiles.tmp" ]; then touch "${modsdatadir}/.removedfiles.tmp" From 8d6fe73cc4058d0716deb452dee7fc9cd91549c3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 22:00:45 +0100 Subject: [PATCH 390/729] Attempt for fix fn_remove_cfg_files --- lgsm/functions/mods_core.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index b5e441b5e..294193237 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -95,17 +95,15 @@ fn_remove_cfg_files(){ for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do # Put current file we're looking for into a variable filetoremove="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" - echo "Testing ${filetoremove}" # If it matches an existing file that have been extracted if [ -f "${extractdir}/${filetoremove}" ]||[ -d "${extractdir}/${filetoremove}" ]; then - echo "Removing ${extractdir}/${filetoremove}" # Then delete the file! rm -R "${extractdir}/${filetoremove}" # Write this file path in a tmp file, to rebuild a full file list if [ ! -f "${modsdatadir}/.removedfiles.tmp" ]; then touch "${modsdatadir}/.removedfiles.tmp" fi - echo "${removefiletest}" > "${modsdatadir}/.removedfiles.tmp" + echo "${filetoremove}" > "${modsdatadir}/.removedfiles.tmp" fi done fi From bcd64144e44c46e7e65f4dd85786bfa3521ace94 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 22:18:12 +0100 Subject: [PATCH 391/729] trying to improve output --- lgsm/functions/command_mods_update.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 390897d41..ea2355581 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -60,7 +60,8 @@ fn_mods_update_loop(){ echo " * 3) Re-install the mod with ./${selfname} mods-install" let installedmodsline=installedmodsline+1 else - fn_print_dots_nl "Updating ${modprettyname}" + echo "" + fn_print_dots "Updating ${modprettyname}" fn_script_log "Updating ${modprettyname}." # Check and create required directories fn_mods_dir From 97dcc1bca87ce8e2c1b8fa0eef4a6bbdbd981216 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 22:21:29 +0100 Subject: [PATCH 392/729] output --- lgsm/functions/command_mods_update.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index ea2355581..8a7869431 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -52,12 +52,11 @@ fn_mods_update_loop(){ fn_mod_get_info_from_command # Don't update the mod if it's policy is to "NOUPDATE" if [ "${modkeepfiles}" == "NOUPDATE" ]; then - fn_print_warning_nl "${modprettyname} update has been disabled by LGSM." - echo " * Usual reason is to prevent erasing custom files." + fn_print_info_nl "${modprettyname} won't be updated to prevent erasing custom files." echo " * If you still wish to update this mod:" - echo " * 1) Backup your critical mod files" - echo " * 2) Uninstall the mod with ./${selfname} mods-uninstall (optionnal)" - echo " * 3) Re-install the mod with ./${selfname} mods-install" + echo " 1) Backup your critical mod files" + echo " 2) Uninstall the mod with ./${selfname} mods-uninstall (optionnal)" + echo " 3) Re-install the mod with ./${selfname} mods-install" let installedmodsline=installedmodsline+1 else echo "" From 9ceca05b8ae3840cf226ca7477208fe1c519ffab Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 15 Jan 2017 23:02:50 +0100 Subject: [PATCH 393/729] way more output --- lgsm/functions/mods_core.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 294193237..aa0a2c61c 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -76,7 +76,7 @@ fn_mod_extract(){ fn_mod_lowercase(){ # Converting files to lowercase if [ "${modlowercase}" == "LowercaseOn" ]; then - fn_print_dots "Converting ${modprettyname} files to lowercase" + fn_print_dots_nl "Converting ${modprettyname} files to lowercase" fn_script_log "Converting ${modprettyname} files to lowercase" find "${extractdir}" -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \; fn_print_ok "Converting ${modprettyname} files to lowercase" @@ -90,6 +90,8 @@ fn_remove_cfg_files(){ # Upon mods updates, config files should not be overwritten # We will just remove these files before copying the mod to the destination # Let's count how many files there are to remove + fn_print_dots_nl "Allow for preserving ${modprettyname} config files" + sleep 0.5 removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" # Test all subvalue of "modgames" using the ";" separator for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do @@ -103,9 +105,10 @@ fn_remove_cfg_files(){ if [ ! -f "${modsdatadir}/.removedfiles.tmp" ]; then touch "${modsdatadir}/.removedfiles.tmp" fi - echo "${filetoremove}" > "${modsdatadir}/.removedfiles.tmp" + echo "${filetoremove}" >> "${modsdatadir}/.removedfiles.tmp" fi done + fn_print_ok "Allow for preserving ${modprettyname} config files" fi } @@ -115,6 +118,8 @@ fn_mod_fileslist(){ mkdir -p "${modsdatadir}" fn_script_log "Created ${modsdatadir}" fi + fn_print_dots_nl "Building ${modcommand}-files.list" + fn_script_log "Building ${modcommand}-files.list" # ${modsdatadir}/${modcommand}-files.list find "${extractdir}" -mindepth 1 -printf '%P\n' > ${modsdatadir}/${modcommand}-files.list fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}" @@ -122,10 +127,12 @@ fn_mod_fileslist(){ if [ -f "${modsdatadir}/.removedfiles.tmp" ]; then cat "${modsdatadir}/.removedfiles.tmp" >> ${modsdatadir}/${modcommand}-files.list fi + fn_print_ok "Building ${modcommand}-files.list" } fn_mod_copy_destination(){ # Destination directory: ${modinstalldir} + fn_print_dots_nl "Copying ${modprettyname} to ${modinstalldir}" fn_script_log "Copying ${modprettyname} to ${modinstalldir}" cp -Rf "${extractdir}/." "${modinstalldir}/" } @@ -134,12 +141,12 @@ fn_mod_copy_destination(){ fn_mod_already_installed(){ if [ -f "${modslockfilefullpath}" ]; then if [ -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then - echo "" fn_print_warning_nl "${modprettyname} has already been installed." - echo " * Config files might be overwritten." + echo " * Config files, if any, might be overwritten." echo " * Press ctrl + c to abort." sleep 4 fi + fn_script_log "${modprettyname} is already installed, overwriting any file." fi } @@ -157,7 +164,7 @@ fn_mod_add_list(){ fi # Input mod name to lockfile if [ ! -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then - echo "${modcommand}" >> "${modslockfilefullpath}" + echo "${modcommand}" > "${modslockfilefullpath}" fn_script_log "${modcommand} added to ${modslockfile}" fi } @@ -190,6 +197,7 @@ fn_postinstall_tasks(){ fn_check_files_list # Output to the user fn_print_dots "Rearranging ${modcommand}-files.list" + sleep 1 fn_script_log_info "Rearranging ${modcommand}-files.list" # What lines/files to remove from file list removefromlist="cfg;addons;" From 988d79e88a29748e852d27ddbf37e3358b404b76 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 15 Jan 2017 22:36:10 +0000 Subject: [PATCH 394/729] Prevents Legacy arkserver from failing issue was caused by a Typo in to word Survival --- lgsm/functions/core_functions.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 3a233174a..f4b6c47f7 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -6,7 +6,9 @@ # This function is called first before any other function. Without this file other functions will not load. # Fixes for legacy code -if [ "${gamename}" == "Teamspeak 3" ]; then +if [ "${gamename}" == "ARK: Survivial Evolved" ]; then + gamename="ARK: Survival Evolved" +elif [ "${gamename}" == "Teamspeak 3" ]; then gamename="TeamSpeak 3" elif [ "${gamename}" == "Counter Strike: Global Offensive" ]; then gamename="Counter-Strike: Global Offensive" From 9cd758ea33321082af57c40b936c2b01f53aca66 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 01:26:45 +0100 Subject: [PATCH 395/729] Don't overwrite, append & less space try --- lgsm/functions/mods_core.sh | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index aa0a2c61c..09d4e2163 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -25,7 +25,7 @@ fn_mods_dir(){ fn_print_dots "Creating mods directory" sleep 1 mkdir -p "${modinstalldir}" - fn_print_ok_nl "Created mods directory" + fn_print_ok "Created mods directory" fi } @@ -76,7 +76,7 @@ fn_mod_extract(){ fn_mod_lowercase(){ # Converting files to lowercase if [ "${modlowercase}" == "LowercaseOn" ]; then - fn_print_dots_nl "Converting ${modprettyname} files to lowercase" + fn_print_dots "Converting ${modprettyname} files to lowercase" fn_script_log "Converting ${modprettyname} files to lowercase" find "${extractdir}" -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \; fn_print_ok "Converting ${modprettyname} files to lowercase" @@ -90,7 +90,7 @@ fn_remove_cfg_files(){ # Upon mods updates, config files should not be overwritten # We will just remove these files before copying the mod to the destination # Let's count how many files there are to remove - fn_print_dots_nl "Allow for preserving ${modprettyname} config files" + fn_print_dots "Allow for preserving ${modprettyname} config files" sleep 0.5 removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" # Test all subvalue of "modgames" using the ";" separator @@ -118,7 +118,7 @@ fn_mod_fileslist(){ mkdir -p "${modsdatadir}" fn_script_log "Created ${modsdatadir}" fi - fn_print_dots_nl "Building ${modcommand}-files.list" + fn_print_dots "Building ${modcommand}-files.list" fn_script_log "Building ${modcommand}-files.list" # ${modsdatadir}/${modcommand}-files.list find "${extractdir}" -mindepth 1 -printf '%P\n' > ${modsdatadir}/${modcommand}-files.list @@ -132,9 +132,11 @@ fn_mod_fileslist(){ fn_mod_copy_destination(){ # Destination directory: ${modinstalldir} - fn_print_dots_nl "Copying ${modprettyname} to ${modinstalldir}" + fn_print_dots "Copying ${modprettyname} to ${modinstalldir}" fn_script_log "Copying ${modprettyname} to ${modinstalldir}" cp -Rf "${extractdir}/." "${modinstalldir}/" + sleep 0.5 + fn_print_ok "Copying ${modprettyname} to ${modinstalldir}" } # Check if the mod is already installed and warn the user @@ -164,7 +166,7 @@ fn_mod_add_list(){ fi # Input mod name to lockfile if [ ! -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then - echo "${modcommand}" > "${modslockfilefullpath}" + echo "${modcommand}" >> "${modslockfilefullpath}" fn_script_log "${modcommand} added to ${modslockfile}" fi } From 60effd5e0f689c4d0a257b65f74cdbca70bbc461 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 02:50:28 +0100 Subject: [PATCH 396/729] installed > updated --- lgsm/functions/command_mods_update.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 8a7869431..ae8222761 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -60,7 +60,7 @@ fn_mods_update_loop(){ let installedmodsline=installedmodsline+1 else echo "" - fn_print_dots "Updating ${modprettyname}" + fn_print_dots_nl "Updating ${modprettyname}" fn_script_log "Updating ${modprettyname}." # Check and create required directories fn_mods_dir @@ -85,8 +85,8 @@ fn_mods_update_loop(){ fn_postinstall_tasks # Cleaning fn_clear_tmp_mods - fn_print_ok_nl "${modprettyname} installed." - fn_script_log "${modprettyname} installed." + fn_print_ok_nl "${modprettyname} updated" + fn_script_log "${modprettyname} updated." let installedmodsline=installedmodsline+1 fi else From 424cc93c284192fdbc176f36a14f036d67b266e5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 02:55:56 +0100 Subject: [PATCH 397/729] better output --- lgsm/functions/command_mods_update.sh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index ae8222761..6c468aa11 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -52,11 +52,8 @@ fn_mods_update_loop(){ fn_mod_get_info_from_command # Don't update the mod if it's policy is to "NOUPDATE" if [ "${modkeepfiles}" == "NOUPDATE" ]; then - fn_print_info_nl "${modprettyname} won't be updated to prevent erasing custom files." - echo " * If you still wish to update this mod:" - echo " 1) Backup your critical mod files" - echo " 2) Uninstall the mod with ./${selfname} mods-uninstall (optionnal)" - echo " 3) Re-install the mod with ./${selfname} mods-install" + fn_print_info_nl "${modprettyname} won't be updated to preserve custom files" + fn_script_log "${modprettyname} won't be updated to preserve custom files." let installedmodsline=installedmodsline+1 else echo "" @@ -85,7 +82,7 @@ fn_mods_update_loop(){ fn_postinstall_tasks # Cleaning fn_clear_tmp_mods - fn_print_ok_nl "${modprettyname} updated" + fn_print_ok "${modprettyname} updated" fn_script_log "${modprettyname} updated." let installedmodsline=installedmodsline+1 fi From b3b0a0cb55fa50b0b43818af8388f8feed08152c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 03:28:00 +0100 Subject: [PATCH 398/729] Moved functions to core --- lgsm/functions/mods_list.sh | 197 ------------------------------------ 1 file changed, 197 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 24a81f262..d9288a11f 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -77,201 +77,4 @@ fn_mods_scrape_urls(){ sourcemodurl="${sourcemodfasterurl}/${sourcemodlatestfile}" } -# Sets some gsm requirements -fn_gsm_requirements(){ - # If tmpdir variable doesn't exist, LGSM is too old - if [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then - fn_print_fail "Your LGSM version is too old." - echo " * Please do a full update, including ${selfname} script." - core_exit.sh - fi -} - -# Define all variables from a mod at once when index is set to a separator -fn_mod_info(){ -# If for some reason no index is set, none of this can work -if [ -z "$index" ]; then - fn_print_error "index variable not set. Please report an issue to LGSM Team." - echo "* https://github.com/GameServerManagers/LinuxGSM/issues" - core_exit.sh -fi - modcommand="${mods_global_array[index+1]}" - modprettyname="${mods_global_array[index+2]}" - modurl="${mods_global_array[index+3]}" - modfilename="${mods_global_array[index+4]}" - modsubdirs="${mods_global_array[index+5]}" - modlowercase="${mods_global_array[index+6]}" - modinstalldir="${mods_global_array[index+7]}" - modkeepfiles="${mods_global_array[index+8]}" - modengines="${mods_global_array[index+9]}" - modgames="${mods_global_array[index+10]}" - modexcludegames="${mods_global_array[index+11]}" - modsite="${mods_global_array[index+12]}" - moddescription="${mods_global_array[index+13]}" -} - - -# Find out if a game is compatible with a mod from a modgames (list of games supported by a mod) variable -fn_compatible_mod_games(){ - # Reset test value - modcompatiblegame="0" - # If value is set to GAMES (ignore) - if [ "${modgames}" != "GAMES" ]; then - # How many games we need to test - gamesamount="$(echo "${modgames}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modgames" using the ";" separator - for ((gamevarindex=1; gamevarindex < ${gamesamount}; gamevarindex++)); do - # Put current game name into modtest variable - gamemodtest="$( echo "${modgames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" - # If game name matches - if [ "${gamemodtest}" == "${gamename}" ]; then - # Mod is compatible ! - modcompatiblegame="1" - fi - done - fi -} - -# Find out if an engine is compatible with a mod from a modengines (list of engines supported by a mod) variable -fn_compatible_mod_engines(){ - # Reset test value - modcompatibleengine="0" - # If value is set to ENGINES (ignore) - if [ "${modengines}" != "ENGINES" ]; then - # How many engines we need to test - enginesamount="$(echo "${modengines}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modengines" using the ";" separator - for ((gamevarindex=1; gamevarindex < ${enginesamount}; gamevarindex++)); do - # Put current engine name into modtest variable - enginemodtest="$( echo "${modengines}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" - # If engine name matches - if [ "${enginemodtest}" == "${engine}" ]; then - # Mod is compatible ! - modcompatibleengine="1" - fi - done - fi -} - -# Find out if a game is not compatible with a mod from a modnotgames (list of games not supported by a mod) variable -fn_not_compatible_mod_games(){ - # Reset test value - modeincompatiblegame="0" - # If value is set to NOTGAMES (ignore) - if [ "${modexcludegames}" != "NOTGAMES" ]; then - # How many engines we need to test - excludegamesamount="$(echo "${modexcludegames}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modexcludegames" using the ";" separator - for ((gamevarindex=1; gamevarindex < ${excludegamesamount}; gamevarindex++)); do - # Put current engine name into modtest variable - excludegamemodtest="$( echo "${modexcludegames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" - # If engine name matches - if [ "${excludegamemodtest}" == "${gamename}" ]; then - # Mod is compatible ! - modeincompatiblegame="1" - fi - done - fi -} - -# Sums up if a mod is compatible or not with modcompatibility=0/1 -fn_mod_compatible_test(){ - # Test game and engine compatibility - fn_compatible_mod_games - fn_compatible_mod_engines - fn_not_compatible_mod_games - if [ "${modeincompatiblegame}" == "1" ]; then - modcompatibility="0" - elif [ "${modcompatibleengine}" == "1" ]||[ "${modcompatiblegame}" == "1" ]; then - modcompatibility="1" - else - modcompatibility="0" - fi -} - -# Checks if a mod is compatibile for installation -# Provides available mods for installation -# Provides commands for mods installation -fn_mods_available(){ - # First, reset variables - compatiblemodslist=() - availablemodscommands=() - modprettynamemaxlength="0" - modsitemaxlength="0" - moddescriptionmaxlength="0" - modcommandmaxlength="0" - # Find compatible games - # Find separators through the global array - for ((index="0"; index <= ${#mods_global_array[@]}; index++)); do - # If current value is a separator; then - if [ "${mods_global_array[index]}" == "${modseparator}" ]; then - # Set mod variables - fn_mod_info - # Test if game is compatible - fn_mod_compatible_test - # If game is compatible - if [ "${modcompatibility}" == "1" ]; then - # Put it into the list to display to the user - compatiblemodslist+=( "${modprettyname}" "${modcommand}" "${modsite}" "${moddescription}" ) - # Keep available commands in an array - availablemodscommands+=( "${modcommand}" ) - fi - fi - done -} - -# Output available mods in a nice way to the user -fn_mods_show_available(){ - # Set and reset vars - compatiblemodslistindex=0 - spaces=" " - # As long as we're within index values - while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do - # Set values for convenience - displayedmodname="${compatiblemodslist[compatiblemodslistindex]}" - displayedmodcommand="${compatiblemodslist[compatiblemodslistindex+1]}" - displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" - displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" - # Output mods to the user - echo -e "\e[1m${displayedmodname}\e[0m - ${displayedmoddescription} - ${displayedmodsite}" - echo -e " * \e[36m${displayedmodcommand}\e[0m" - # Increment index from the amount of values we just displayed - let "compatiblemodslistindex+=4" - done - # If no mods are found - if [ -z "${compatiblemodslist}" ]; then - fn_print_fail "No mods are currently available for ${gamename}." - core_exit.sh - fi -} - -# Get details of a mod any (relevant and unique, such as full mod name or install command) value -fn_mod_get_info_from_command(){ - # Variable to know when job is done - modinfocommand="0" - # Find entry in global array - for ((index=0; index <= ${#mods_global_array[@]}; index++)); do - # When entry is found - if [ "${mods_global_array[index]}" == "${currentmod}" ]; then - # Go back to the previous "MOD" separator - for ((index=index; index <= ${#mods_global_array[@]}; index--)); do - # When "MOD" is found - if [ "${mods_global_array[index]}" == "MOD" ]; then - # Get info - fn_mod_info - modinfocommand="1" - break - fi - done - fi - # Exit the loop if job is done - if [ "${modinfocommand}" == "1" ]; then - break - fi - done -} - -fn_gsm_requirements fn_mods_scrape_urls -fn_mods_info -fn_mods_available From 609b346b9a7c0078ee20cd5a3956a1b09246cfc3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 03:28:10 +0100 Subject: [PATCH 399/729] moved mods_list.sh functions to core --- lgsm/functions/mods_core.sh | 200 ++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 09d4e2163..54c394cf5 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -17,6 +17,16 @@ modsdatadir="${lgsmdir}/data/mods" modslockfile="installed-mods-listing" modslockfilefullpath="${modsdatadir}/${modslockfile}" +# Sets some gsm requirements +fn_gsm_requirements(){ + # If tmpdir variable doesn't exist, LGSM is too old + if [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then + fn_print_fail "Your LGSM version is too old." + echo " * Please do a full update, including ${selfname} script." + core_exit.sh + fi +} + # Create mods directory if it doesn't exist # Assuming the game is already installed as mods_list.sh checked for it. fn_mods_dir(){ @@ -216,3 +226,193 @@ fn_postinstall_tasks(){ done fn_print_ok "Rearranging ${modcommand}-files.list" } + +## mods_list.sh arrays + +# Define all variables from a mod at once when index is set to a separator +fn_mod_info(){ +# If for some reason no index is set, none of this can work +if [ -z "$index" ]; then + fn_print_error "index variable not set. Please report an issue to LGSM Team." + echo "* https://github.com/GameServerManagers/LinuxGSM/issues" + core_exit.sh +fi + modcommand="${mods_global_array[index+1]}" + modprettyname="${mods_global_array[index+2]}" + modurl="${mods_global_array[index+3]}" + modfilename="${mods_global_array[index+4]}" + modsubdirs="${mods_global_array[index+5]}" + modlowercase="${mods_global_array[index+6]}" + modinstalldir="${mods_global_array[index+7]}" + modkeepfiles="${mods_global_array[index+8]}" + modengines="${mods_global_array[index+9]}" + modgames="${mods_global_array[index+10]}" + modexcludegames="${mods_global_array[index+11]}" + modsite="${mods_global_array[index+12]}" + moddescription="${mods_global_array[index+13]}" +} + + +# Find out if a game is compatible with a mod from a modgames (list of games supported by a mod) variable +fn_compatible_mod_games(){ + # Reset test value + modcompatiblegame="0" + # If value is set to GAMES (ignore) + if [ "${modgames}" != "GAMES" ]; then + # How many games we need to test + gamesamount="$(echo "${modgames}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modgames" using the ";" separator + for ((gamevarindex=1; gamevarindex < ${gamesamount}; gamevarindex++)); do + # Put current game name into modtest variable + gamemodtest="$( echo "${modgames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" + # If game name matches + if [ "${gamemodtest}" == "${gamename}" ]; then + # Mod is compatible ! + modcompatiblegame="1" + fi + done + fi +} + +# Find out if an engine is compatible with a mod from a modengines (list of engines supported by a mod) variable +fn_compatible_mod_engines(){ + # Reset test value + modcompatibleengine="0" + # If value is set to ENGINES (ignore) + if [ "${modengines}" != "ENGINES" ]; then + # How many engines we need to test + enginesamount="$(echo "${modengines}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modengines" using the ";" separator + for ((gamevarindex=1; gamevarindex < ${enginesamount}; gamevarindex++)); do + # Put current engine name into modtest variable + enginemodtest="$( echo "${modengines}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" + # If engine name matches + if [ "${enginemodtest}" == "${engine}" ]; then + # Mod is compatible ! + modcompatibleengine="1" + fi + done + fi +} + +# Find out if a game is not compatible with a mod from a modnotgames (list of games not supported by a mod) variable +fn_not_compatible_mod_games(){ + # Reset test value + modeincompatiblegame="0" + # If value is set to NOTGAMES (ignore) + if [ "${modexcludegames}" != "NOTGAMES" ]; then + # How many engines we need to test + excludegamesamount="$(echo "${modexcludegames}" | awk -F ';' '{ print NF }')" + # Test all subvalue of "modexcludegames" using the ";" separator + for ((gamevarindex=1; gamevarindex < ${excludegamesamount}; gamevarindex++)); do + # Put current engine name into modtest variable + excludegamemodtest="$( echo "${modexcludegames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" + # If engine name matches + if [ "${excludegamemodtest}" == "${gamename}" ]; then + # Mod is compatible ! + modeincompatiblegame="1" + fi + done + fi +} + +# Sums up if a mod is compatible or not with modcompatibility=0/1 +fn_mod_compatible_test(){ + # Test game and engine compatibility + fn_compatible_mod_games + fn_compatible_mod_engines + fn_not_compatible_mod_games + if [ "${modeincompatiblegame}" == "1" ]; then + modcompatibility="0" + elif [ "${modcompatibleengine}" == "1" ]||[ "${modcompatiblegame}" == "1" ]; then + modcompatibility="1" + else + modcompatibility="0" + fi +} + +# Checks if a mod is compatibile for installation +# Provides available mods for installation +# Provides commands for mods installation +fn_mods_available(){ + # First, reset variables + compatiblemodslist=() + availablemodscommands=() + modprettynamemaxlength="0" + modsitemaxlength="0" + moddescriptionmaxlength="0" + modcommandmaxlength="0" + # Find compatible games + # Find separators through the global array + for ((index="0"; index <= ${#mods_global_array[@]}; index++)); do + # If current value is a separator; then + if [ "${mods_global_array[index]}" == "${modseparator}" ]; then + # Set mod variables + fn_mod_info + # Test if game is compatible + fn_mod_compatible_test + # If game is compatible + if [ "${modcompatibility}" == "1" ]; then + # Put it into an array to prepare user output + compatiblemodslist+=( "${modprettyname}" "${modcommand}" "${modsite}" "${moddescription}" ) + # Keep available commands in an array to make life easier + availablemodscommands+=( "${modcommand}" ) + fi + fi + done +} + +# Output available mods in a nice way to the user +fn_mods_show_available(){ + # Set and reset vars + compatiblemodslistindex=0 + spaces=" " + # As long as we're within index values + while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do + # Set values for convenience + displayedmodname="${compatiblemodslist[compatiblemodslistindex]}" + displayedmodcommand="${compatiblemodslist[compatiblemodslistindex+1]}" + displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" + displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" + # Output mods to the user + echo -e "\e[1m${displayedmodname}\e[0m - ${displayedmoddescription} - ${displayedmodsite}" + echo -e " * \e[36m${displayedmodcommand}\e[0m" + # Increment index from the amount of values we just displayed + let "compatiblemodslistindex+=4" + done + # If no mods are found + if [ -z "${compatiblemodslist}" ]; then + fn_print_fail "No mods are currently available for ${gamename}." + core_exit.sh + fi +} + +# Get details of a mod any (relevant and unique, such as full mod name or install command) value +fn_mod_get_info_from_command(){ + # Variable to know when job is done + modinfocommand="0" + # Find entry in global array + for ((index=0; index <= ${#mods_global_array[@]}; index++)); do + # When entry is found + if [ "${mods_global_array[index]}" == "${currentmod}" ]; then + # Go back to the previous "MOD" separator + for ((index=index; index <= ${#mods_global_array[@]}; index--)); do + # When "MOD" is found + if [ "${mods_global_array[index]}" == "MOD" ]; then + # Get info + fn_mod_info + modinfocommand="1" + break + fi + done + fi + # Exit the loop if job is done + if [ "${modinfocommand}" == "1" ]; then + break + fi + done +} + +fn_gsm_requirements +fn_mods_info +fn_mods_available From 7cadebbe5b62e7eb357f3e196e2a54c16f28befd Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 03:53:12 +0100 Subject: [PATCH 400/729] move to core --- lgsm/functions/mods_list.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index d9288a11f..e99ff2214 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -76,5 +76,3 @@ fn_mods_scrape_urls(){ sourcemodfasterurl="http://cdn.probablyaserver.com/sourcemod/" sourcemodurl="${sourcemodfasterurl}/${sourcemodlatestfile}" } - -fn_mods_scrape_urls From 3bfde779a1a863884362e23ce36e17b3691763f6 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 03:54:24 +0100 Subject: [PATCH 401/729] moves & fixes running functions --- lgsm/functions/mods_core.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 54c394cf5..dcb50a400 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -16,6 +16,8 @@ extractdir="${modstmpdir}/extracted" modsdatadir="${lgsmdir}/data/mods" modslockfile="installed-mods-listing" modslockfilefullpath="${modsdatadir}/${modslockfile}" +# Database initialization +mods_list.sh # Sets some gsm requirements fn_gsm_requirements(){ @@ -415,4 +417,5 @@ fn_mod_get_info_from_command(){ fn_gsm_requirements fn_mods_info +fn_mods_scrape_urls fn_mods_available From 7c29d0c38334db02992dd4322c74e78f8a6a913e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 04:00:33 +0100 Subject: [PATCH 402/729] scrape_urls goes first, right --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index dcb50a400..efdcec31f 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -416,6 +416,6 @@ fn_mod_get_info_from_command(){ } fn_gsm_requirements -fn_mods_info fn_mods_scrape_urls +fn_mods_info fn_mods_available From cdd78a9c0753d5848ffdc4e8f5131963dade7494 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 04:12:25 +0100 Subject: [PATCH 403/729] Mods update conclusion --- lgsm/functions/command_mods_update.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 6c468aa11..19eb449cf 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -92,6 +92,9 @@ fn_mods_update_loop(){ core_exit.sh fi done + echo "" + fn_print_ok_nl "Mods update complete" + fn_script_log "Mods update complete." } fn_mods_update_init From a3501e6544708a206e0fcb45fd798bf09f05e79d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 05:05:41 +0100 Subject: [PATCH 404/729] Remove metamod dir from sourcemod file list --- lgsm/functions/mods_core.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index efdcec31f..d55b84631 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -226,6 +226,13 @@ fn_postinstall_tasks(){ # Then delete matching line(s)! sed -i "/^${removefilevar}$/d" "${modsdatadir}/${modcommand}-files.list" done + # Sourcemod fix + # Remove metamod from sourcemod fileslist + if [ "${modcommand}" == "sourcemod" ]; then + # Remove addons/metamod & addons/metamod/sourcemod.vdf from ${modcommand}-files.list + sed -i "/^addons/metamod$/d" "${modsdatadir}/${modcommand}-files.list" + sed -i "/^addons/metamod/sourcemod.vdf$/d" "${modsdatadir}/${modcommand}-files.list" + fi fn_print_ok "Rearranging ${modcommand}-files.list" } From bee22481997cf49e579364bde5be7d8aa31576c9 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 05:26:10 +0100 Subject: [PATCH 405/729] Escape slashes in sed --- lgsm/functions/mods_core.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index d55b84631..78de67a96 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -230,8 +230,8 @@ fn_postinstall_tasks(){ # Remove metamod from sourcemod fileslist if [ "${modcommand}" == "sourcemod" ]; then # Remove addons/metamod & addons/metamod/sourcemod.vdf from ${modcommand}-files.list - sed -i "/^addons/metamod$/d" "${modsdatadir}/${modcommand}-files.list" - sed -i "/^addons/metamod/sourcemod.vdf$/d" "${modsdatadir}/${modcommand}-files.list" + sed -i "/^addons\/metamod$/d" "${modsdatadir}/${modcommand}-files.list" + sed -i "/^addons\/metamod\/sourcemod.vdf$/d" "${modsdatadir}/${modcommand}-files.list" fi fn_print_ok "Rearranging ${modcommand}-files.list" } From 57b5374078d5fec3b400000097d2ab84e758c735 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 19:23:45 +0100 Subject: [PATCH 406/729] fn_mods_remove_init --- lgsm/functions/command_mods_remove.sh | 54 +++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index c2bb35f48..6e7abc531 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -8,3 +8,57 @@ local commandname="MODS" local commandaction="Mod Remove" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh +mods_core.sh +mods_list.sh + +fn_mods_remove_init(){ + fn_script_log "Entering mods & addons removal" + echo "=================================" + echo "${gamename} mods & addons update" + echo "" + # Installed mod dir is "${modslockfilefullpath}" + # How many mods are installed + installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" + # If no mods to be updated + if [ ! -f "${modslockfilefullpath}" ]||[ $installedmodscount -eq 0 ]; then + fn_print_information_nl "No mods or addons to remove" + echo " * Did you install any mod using LGSM?" + fn_scrip_log_info "No mods or addons to remove." + core_exit.sh + fi + # Build installed mods list and display to the user. + installedmodsline=1 + availablemodsremove=() + while [ $installedmodsline -le $installedmodscount ]; do + availablemodsremove+=( "$(sed "${installedmodsline}q;d" "${modslockfilefullpath})" ) + echo -e " * \e[36m$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")\e[0m" + let installedmodsline=installedmodsline+1 + done + sleep 2 + + # Keep prompting as long as the user input doesn't correspond to an available mod + while [[ ! " ${availablemodsremove[@]} " =~ " ${usermodselect} " ]]; do + echo -en "Enter a \e[36mmod\e[0m to ${red}remove${default} (or exit to abort): " + read -r usermodselect + # Exit if user says exit or abort + if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then + fn_script_log "User aborted." + echo "Aborted." + core_exit.sh + # Supplementary output upon invalid user input + elif [[ ! " ${availablemodsremove[@]} " =~ " ${usermodselect} " ]]; then + fn_print_error2_nl "${usermodselect} is not a valid mod." + echo " * Enter a valid mod or input exit to abort." + fi + done + # Gives a pretty name to the user and get all mod info + currentmod="${usermodselect}" + fn_mod_get_info_from_command + fn_print_dots_nl "Removing ${modprettyname}" + sleep 1 + fn_script_log "Removing ${modprettyname}." +} + +fn_mods_remove_init From 90a795adaa31fc9782520eeeba3182ba10cb0d54 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 19:28:43 +0100 Subject: [PATCH 407/729] one fix --- lgsm/functions/command_mods_remove.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 6e7abc531..f72e3b385 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -30,9 +30,9 @@ fn_mods_remove_init(){ fi # Build installed mods list and display to the user. installedmodsline=1 - availablemodsremove=() + availablemodsremove=() while [ $installedmodsline -le $installedmodscount ]; do - availablemodsremove+=( "$(sed "${installedmodsline}q;d" "${modslockfilefullpath})" ) + availablemodsremove+=( "$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" ) echo -e " * \e[36m$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")\e[0m" let installedmodsline=installedmodsline+1 done @@ -40,7 +40,7 @@ fn_mods_remove_init(){ # Keep prompting as long as the user input doesn't correspond to an available mod while [[ ! " ${availablemodsremove[@]} " =~ " ${usermodselect} " ]]; do - echo -en "Enter a \e[36mmod\e[0m to ${red}remove${default} (or exit to abort): " + echo -en "Enter a \e[36mmod\e[0m to \e[31mremove\e[0m (or exit to abort): " read -r usermodselect # Exit if user says exit or abort if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then From b8fc80443ecd4374b8368426cef45eac4bc7c9c5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 19:49:18 +0100 Subject: [PATCH 408/729] tabs and line jump --- lgsm/functions/command_mods_remove.sh | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index f72e3b385..e86fefedf 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -36,22 +36,23 @@ fn_mods_remove_init(){ echo -e " * \e[36m$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")\e[0m" let installedmodsline=installedmodsline+1 done - sleep 2 + echo "" + sleep 1 - # Keep prompting as long as the user input doesn't correspond to an available mod + # Keep prompting as long as the user input doesn't correspond to an available mod while [[ ! " ${availablemodsremove[@]} " =~ " ${usermodselect} " ]]; do - echo -en "Enter a \e[36mmod\e[0m to \e[31mremove\e[0m (or exit to abort): " - read -r usermodselect - # Exit if user says exit or abort - if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then - fn_script_log "User aborted." - echo "Aborted." - core_exit.sh + echo -en "Enter a \e[36mmod\e[0m to \e[31mremove\e[0m (or exit to abort): " + read -r usermodselect + # Exit if user says exit or abort + if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then + fn_script_log "User aborted." + echo "Aborted." + core_exit.sh # Supplementary output upon invalid user input - elif [[ ! " ${availablemodsremove[@]} " =~ " ${usermodselect} " ]]; then + elif [[ ! " ${availablemodsremove[@]} " =~ " ${usermodselect} " ]]; then fn_print_error2_nl "${usermodselect} is not a valid mod." echo " * Enter a valid mod or input exit to abort." - fi + fi done # Gives a pretty name to the user and get all mod info currentmod="${usermodselect}" From efa647966cc19a6dc40fbdf8176a6944c1d4e3da Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:13:54 +0100 Subject: [PATCH 409/729] Trying mod remove process --- lgsm/functions/command_mods_remove.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index e86fefedf..f761210f5 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -62,4 +62,26 @@ fn_mods_remove_init(){ fn_script_log "Removing ${modprettyname}." } +fn_mod_remove_process(){ + # Check file list in order to make sure we're able to remove the mod + # Returns ${modsfilelistsize} + fn_check_files_list + modfileline="1" + while [ $modfileline -le $modsfilelistsize ]; do + # Current line defines current mod command + currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.list")" + if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -f "${modinstalldir}/${currentfileremove}" ]; then + rm -rfv "${currentfileremove}" + fi + let installedmodsline=installedmodsline+1 + done + # Remove file list + rm -rfv "${modsdatadir}/${modcommand}-files.list" + # Remove from installed mods list + sed -i "/^${modcommand}$/d" "${modslockfilefullpath}" + fn_print_ok_nl "Removed ${modprettyname}" + fn_script_log "Removed ${modprettyname}" +} + fn_mods_remove_init +fn_mod_remove_process From 0b3da9d2d3f2a81cf331a3ce6eb9cf18f0453ed5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:17:20 +0100 Subject: [PATCH 410/729] woops --- lgsm/functions/command_mods_remove.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index f761210f5..eeb00f2ed 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -73,7 +73,7 @@ fn_mod_remove_process(){ if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -f "${modinstalldir}/${currentfileremove}" ]; then rm -rfv "${currentfileremove}" fi - let installedmodsline=installedmodsline+1 + let modfileline=modfileline+1 done # Remove file list rm -rfv "${modsdatadir}/${modcommand}-files.list" From ac58e6eddb9f889a7a8fc02665fdb05c43717fc8 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:26:14 +0100 Subject: [PATCH 411/729] =?UTF-8?q?woops=C2=B2=20should=20remove=20mods=20?= =?UTF-8?q?now?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lgsm/functions/command_mods_remove.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index eeb00f2ed..43a8ddae5 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -70,8 +70,8 @@ fn_mod_remove_process(){ while [ $modfileline -le $modsfilelistsize ]; do # Current line defines current mod command currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.list")" - if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -f "${modinstalldir}/${currentfileremove}" ]; then - rm -rfv "${currentfileremove}" + if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then + rm -rfv "${modinstalldir}/${currentfileremove}" fi let modfileline=modfileline+1 done From 86186dc90ba195a9cb5d1d6c3b6a28a646ca614e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:38:12 +0100 Subject: [PATCH 412/729] Various improvements --- lgsm/functions/command_mods_remove.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 43a8ddae5..dcaa572c3 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -57,27 +57,30 @@ fn_mods_remove_init(){ # Gives a pretty name to the user and get all mod info currentmod="${usermodselect}" fn_mod_get_info_from_command - fn_print_dots_nl "Removing ${modprettyname}" - sleep 1 - fn_script_log "Removing ${modprettyname}." + # Returns ${modsfilelistsize} + fn_check_files_list + fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" + fn_print_dots_nl "Removing ${modsfilelistsize} files from ${modprettyname}" + sleep 4 } fn_mod_remove_process(){ # Check file list in order to make sure we're able to remove the mod - # Returns ${modsfilelistsize} - fn_check_files_list modfileline="1" while [ $modfileline -le $modsfilelistsize ]; do # Current line defines current mod command currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.list")" if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then - rm -rfv "${modinstalldir}/${currentfileremove}" + fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" + rm -rf "${modinstalldir}/${currentfileremove}" fi let modfileline=modfileline+1 done # Remove file list - rm -rfv "${modsdatadir}/${modcommand}-files.list" + fn_script_log "Removing: ${modsdatadir}/${modcommand}-files.list" + rm -rf "${modsdatadir}/${modcommand}-files.list" # Remove from installed mods list + fn_script_log "Removing: ${modcommand} from "${modslockfilefullpath}" sed -i "/^${modcommand}$/d" "${modslockfilefullpath}" fn_print_ok_nl "Removed ${modprettyname}" fn_script_log "Removed ${modprettyname}" From 5c4baae75c08e082dcbf4cb36cd705a56d1a35d0 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:40:28 +0100 Subject: [PATCH 413/729] removed wrongly c/pasted double quote --- lgsm/functions/command_mods_remove.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index dcaa572c3..74cbbac0d 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -80,7 +80,7 @@ fn_mod_remove_process(){ fn_script_log "Removing: ${modsdatadir}/${modcommand}-files.list" rm -rf "${modsdatadir}/${modcommand}-files.list" # Remove from installed mods list - fn_script_log "Removing: ${modcommand} from "${modslockfilefullpath}" + fn_script_log "Removing: ${modcommand} from ${modslockfilefullpath}" sed -i "/^${modcommand}$/d" "${modslockfilefullpath}" fn_print_ok_nl "Removed ${modprettyname}" fn_script_log "Removed ${modprettyname}" From ce9702227d3295c99e7ec1360fb2c93596c3c14d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:42:48 +0100 Subject: [PATCH 414/729] message --- lgsm/functions/command_mods_remove.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 74cbbac0d..4684a0d96 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -61,6 +61,8 @@ fn_mods_remove_init(){ fn_check_files_list fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" fn_print_dots_nl "Removing ${modsfilelistsize} files from ${modprettyname}" + echo " * Any mod's custom file will be deleted." + echo " * Press ctrl + c to abort." sleep 4 } From 86bb4381c9c445a2698ef674b4e72537e4716ede Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:44:31 +0100 Subject: [PATCH 415/729] fn_scrip_log_info don't exist --- lgsm/functions/command_mods_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 19eb449cf..7e2bc6612 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -25,7 +25,7 @@ fn_mods_update_init(){ if [ ! -f "${modslockfilefullpath}" ]||[ $installedmodscount -eq 0 ]; then fn_print_information_nl "No mods or addons to be updated" echo " * Did you install any mod using LGSM?" - fn_scrip_log_info "No mods or addons to be updated" + fn_scrip_log "No mods or addons to be updated" core_exit.sh else fn_print_information_nl "${installedmodscount} mods or addons will be updated:" From 83b6d2d07f1d09339b3721bbd4554e68fe38ffbf Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:45:12 +0100 Subject: [PATCH 416/729] fn_scrip_log_info don't exist > fn_script_log_info --- lgsm/functions/command_mods_remove.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 4684a0d96..3f2021c70 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -25,7 +25,7 @@ fn_mods_remove_init(){ if [ ! -f "${modslockfilefullpath}" ]||[ $installedmodscount -eq 0 ]; then fn_print_information_nl "No mods or addons to remove" echo " * Did you install any mod using LGSM?" - fn_scrip_log_info "No mods or addons to remove." + fn_script_log_info "No mods or addons to remove." core_exit.sh fi # Build installed mods list and display to the user. From fc112a27aaf8568353100b32aec55f611a08371b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:45:36 +0100 Subject: [PATCH 417/729] scrip > script --- lgsm/functions/command_mods_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 7e2bc6612..62528446f 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -25,7 +25,7 @@ fn_mods_update_init(){ if [ ! -f "${modslockfilefullpath}" ]||[ $installedmodscount -eq 0 ]; then fn_print_information_nl "No mods or addons to be updated" echo " * Did you install any mod using LGSM?" - fn_scrip_log "No mods or addons to be updated" + fn_script_log_info "No mods or addons to be updated" core_exit.sh else fn_print_information_nl "${installedmodscount} mods or addons will be updated:" From 63373a6ce07a5a59c4ecef73c2fa799e44f0d528 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:49:00 +0100 Subject: [PATCH 418/729] no end line dot --- lgsm/functions/command_mods_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 62528446f..c737d2a4a 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -87,7 +87,7 @@ fn_mods_update_loop(){ let installedmodsline=installedmodsline+1 fi else - fn_print_fail "No mod was selected." + fn_print_fail "No mod was selected" fn_script_log_fail "No mod was selected." core_exit.sh fi From a9a72af1aa58a4f7aab33aba82559c24f203ece4 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:49:16 +0100 Subject: [PATCH 419/729] no end line dot --- lgsm/functions/command_mods_install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 6a3e05b20..dc3c497cc 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -73,10 +73,10 @@ fn_mod_installation(){ fn_postinstall_tasks # Cleaning fn_clear_tmp_mods - fn_print_ok_nl "${modprettyname} installed." + fn_print_ok_nl "${modprettyname} installed" fn_script_log "${modprettyname} installed." else - fn_print_fail "No mod was selected." + fn_print_fail "No mod was selected" core_exit.sh fi } From 26bf25619b832ff3d9f57753b041b9ebaf717934 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:57:18 +0100 Subject: [PATCH 420/729] no nl for dots --- lgsm/functions/command_mods_remove.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 3f2021c70..889c6dfb6 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -60,7 +60,7 @@ fn_mods_remove_init(){ # Returns ${modsfilelistsize} fn_check_files_list fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" - fn_print_dots_nl "Removing ${modsfilelistsize} files from ${modprettyname}" + fn_print_dots "Removing ${modsfilelistsize} files from ${modprettyname}" echo " * Any mod's custom file will be deleted." echo " * Press ctrl + c to abort." sleep 4 From 5295bd94fed851c7cb3f8e2366887c103a114f4d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 21:59:10 +0100 Subject: [PATCH 421/729] removal --- lgsm/functions/command_mods_remove.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 889c6dfb6..642e472d3 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -16,7 +16,7 @@ mods_list.sh fn_mods_remove_init(){ fn_script_log "Entering mods & addons removal" echo "=================================" - echo "${gamename} mods & addons update" + echo "${gamename} mods & addons removal" echo "" # Installed mod dir is "${modslockfilefullpath}" # How many mods are installed From f042aee9f55919ed1b241f81c76dc39604f27248 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 22:00:49 +0100 Subject: [PATCH 422/729] no need for sleep --- lgsm/functions/command_mods_remove.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 642e472d3..4d67f6d81 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -37,8 +37,6 @@ fn_mods_remove_init(){ let installedmodsline=installedmodsline+1 done echo "" - sleep 1 - # Keep prompting as long as the user input doesn't correspond to an available mod while [[ ! " ${availablemodsremove[@]} " =~ " ${usermodselect} " ]]; do echo -en "Enter a \e[36mmod\e[0m to \e[31mremove\e[0m (or exit to abort): " From 142b02d17ec5f8f6caf216b8f9cbe361a2abbdae Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 22:04:53 +0100 Subject: [PATCH 423/729] dots & sleep --- lgsm/functions/mods_core.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 78de67a96..bc02b1442 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -149,13 +149,14 @@ fn_mod_copy_destination(){ cp -Rf "${extractdir}/." "${modinstalldir}/" sleep 0.5 fn_print_ok "Copying ${modprettyname} to ${modinstalldir}" + sleep 0.5 } # Check if the mod is already installed and warn the user fn_mod_already_installed(){ if [ -f "${modslockfilefullpath}" ]; then if [ -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then - fn_print_warning_nl "${modprettyname} has already been installed." + fn_print_warning_nl "${modprettyname} has already been installed" echo " * Config files, if any, might be overwritten." echo " * Press ctrl + c to abort." sleep 4 From bae4085e194b170fd796f84d69a12c89c156b8ea Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 22:12:12 +0100 Subject: [PATCH 424/729] sleep times --- lgsm/functions/mods_core.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index bc02b1442..c0765d25a 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -35,9 +35,10 @@ fn_mods_dir(){ if [ ! -d "${modinstalldir}" ]; then fn_script_log_info "Creating mods directory: ${modinstalldir}" fn_print_dots "Creating mods directory" - sleep 1 + sleep 0.5 mkdir -p "${modinstalldir}" fn_print_ok "Created mods directory" + sleep 0.5 fi } @@ -89,10 +90,11 @@ fn_mod_lowercase(){ # Converting files to lowercase if [ "${modlowercase}" == "LowercaseOn" ]; then fn_print_dots "Converting ${modprettyname} files to lowercase" + sleep 0.5 fn_script_log "Converting ${modprettyname} files to lowercase" find "${extractdir}" -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \; fn_print_ok "Converting ${modprettyname} files to lowercase" - sleep 1 + sleep 0.5 fi } @@ -121,6 +123,7 @@ fn_remove_cfg_files(){ fi done fn_print_ok "Allow for preserving ${modprettyname} config files" + sleep 0.5 fi } @@ -132,6 +135,7 @@ fn_mod_fileslist(){ fi fn_print_dots "Building ${modcommand}-files.list" fn_script_log "Building ${modcommand}-files.list" + sleep 0.5 # ${modsdatadir}/${modcommand}-files.list find "${extractdir}" -mindepth 1 -printf '%P\n' > ${modsdatadir}/${modcommand}-files.list fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}" @@ -140,14 +144,15 @@ fn_mod_fileslist(){ cat "${modsdatadir}/.removedfiles.tmp" >> ${modsdatadir}/${modcommand}-files.list fi fn_print_ok "Building ${modcommand}-files.list" + sleep 0.5 } fn_mod_copy_destination(){ # Destination directory: ${modinstalldir} fn_print_dots "Copying ${modprettyname} to ${modinstalldir}" fn_script_log "Copying ${modprettyname} to ${modinstalldir}" - cp -Rf "${extractdir}/." "${modinstalldir}/" sleep 0.5 + cp -Rf "${extractdir}/." "${modinstalldir}/" fn_print_ok "Copying ${modprettyname} to ${modinstalldir}" sleep 0.5 } @@ -157,9 +162,10 @@ fn_mod_already_installed(){ if [ -f "${modslockfilefullpath}" ]; then if [ -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then fn_print_warning_nl "${modprettyname} has already been installed" + sleep 1 echo " * Config files, if any, might be overwritten." echo " * Press ctrl + c to abort." - sleep 4 + sleep 3 fi fn_script_log "${modprettyname} is already installed, overwriting any file." fi @@ -212,7 +218,7 @@ fn_postinstall_tasks(){ fn_check_files_list # Output to the user fn_print_dots "Rearranging ${modcommand}-files.list" - sleep 1 + sleep 0.5 fn_script_log_info "Rearranging ${modcommand}-files.list" # What lines/files to remove from file list removefromlist="cfg;addons;" @@ -235,6 +241,7 @@ fn_postinstall_tasks(){ sed -i "/^addons\/metamod\/sourcemod.vdf$/d" "${modsdatadir}/${modcommand}-files.list" fi fn_print_ok "Rearranging ${modcommand}-files.list" + sleep 0.5 } ## mods_list.sh arrays From b85a1bb18e566502c526e4d7423ce1762feee5ec Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 22:23:10 +0100 Subject: [PATCH 425/729] try replacing cat with sed --- lgsm/functions/mods_core.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index c0765d25a..796567109 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -160,7 +160,8 @@ fn_mod_copy_destination(){ # Check if the mod is already installed and warn the user fn_mod_already_installed(){ if [ -f "${modslockfilefullpath}" ]; then - if [ -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then + + if [ -n "$(sed -n "/^${modcommand}$/p" "${modslockfilefullpath}")" ]; then fn_print_warning_nl "${modprettyname} has already been installed" sleep 1 echo " * Config files, if any, might be overwritten." From 99c29531f39d37a43893ccac7f7c8de390f71b8f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 22:30:01 +0100 Subject: [PATCH 426/729] replace with sed again --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 796567109..e3028f7db 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -185,7 +185,7 @@ fn_mod_add_list(){ fn_script_log "Created ${modslockfilefullpath}" fi # Input mod name to lockfile - if [ ! -n "$(cat "${modslockfilefullpath}" | grep "${modcommand}")" ]; then + if [ ! -n "$(sed -n "/^${modcommand}$/p" "${modslockfilefullpath}")" ]; then echo "${modcommand}" >> "${modslockfilefullpath}" fn_script_log "${modcommand} added to ${modslockfile}" fi From 369416ff62153ea2dfdded479ff0bf2ff371e840 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 16 Jan 2017 23:07:00 +0100 Subject: [PATCH 427/729] missing echo --- lgsm/functions/command_mods_remove.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 4d67f6d81..054e0cf20 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -59,6 +59,7 @@ fn_mods_remove_init(){ fn_check_files_list fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" fn_print_dots "Removing ${modsfilelistsize} files from ${modprettyname}" + echo "" echo " * Any mod's custom file will be deleted." echo " * Press ctrl + c to abort." sleep 4 From 64a7610505b7c499ac3f11be8298c83320afff61 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 17 Jan 2017 20:33:49 +0000 Subject: [PATCH 428/729] renamed RenderWare to renderware --- lgsm/functions/check_deps.sh | 6 ++---- lgsm/functions/command_details.sh | 4 ++-- lgsm/functions/command_stop.sh | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 16df3860e..3ee12f3f5 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -6,8 +6,6 @@ local commandname="CHECK" - - fn_deps_detector(){ # Checks if dependency is missing if [ "${tmuxcheck}" == "1" ]; then @@ -159,7 +157,7 @@ if [ -n "$(command -v dpkg-query)" ]; then fi # All servers except ts3,mumble,multitheftauto and minecraft servers require libstdc++6 and lib32gcc1 - if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${engine}" != "lwjgl2" ]&&[ "${engine}" != "RenderWare" ]; then + if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${engine}" != "lwjgl2" ]&&[ "${engine}" != "renderware" ]; then if [ "${arch}" == "x86_64" ]; then array_deps_required+=( lib32gcc1 libstdc++6:i386 ) else @@ -242,7 +240,7 @@ elif [ -n "$(command -v yum)" ]; then fi # All servers except ts3,mumble,multitheftauto and minecraft servers require glibc.i686 and libstdc++.i686 - if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${engine}" != "lwjgl2" ]&&[ "${engine}" != "RenderWare" ]; then + if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${engine}" != "lwjgl2" ]&&[ "${engine}" != "renderware" ]; then array_deps_required+=( glibc.i686 libstdc++.i686 ) fi diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index a4333f041..c227694c8 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -315,7 +315,7 @@ fn_details_ports(){ parmslocation="${red}UNKNOWN${default}" # engines/games that require editing in the config file - local ports_edit_array=( "avalanche" "dontstarve" "idtech2" "idtech3" "idtech3_ql" "lwjgl2" "projectzomboid" "quake" "refractor" "realvirtuality" "RenderWare" "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" "renderware" "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 @@ -759,7 +759,7 @@ fn_display_details() { fn_details_script fn_details_backup # Some game servers do not have parms. - if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]&&[ "${engine}" != "RenderWare" ]; then + if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]&&[ "${engine}" != "renderware" ]; then fn_parms fn_details_commandlineparms fi diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index dda42c19a..62d73c3da 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -229,7 +229,7 @@ fn_stop_graceful_select(){ fn_stop_graceful_goldsource elif [ "${engine}" == "lwjgl2" ]; then fn_stop_graceful_minecraft - elif [ "${engine}" == "RenderWare" ]; then + elif [ "${engine}" == "renderware" ]; then fn_stop_graceful_mta else fn_stop_tmux From 99e5c34cdbb6f9b7cd14b5713d583ae553d36c68 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 17 Jan 2017 20:58:23 +0000 Subject: [PATCH 429/729] added mta to servefiles install --- lgsm/functions/command_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 0d5f95213..2da3992b7 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}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "Factorio" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "Factorio" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Multi Theft Auto" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then installer=1 install_server_files.sh elif [ -n "${appid}" ]; then From edb4d40f3844e9fbe21dd3f9a28d4ba8cefc13d8 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 17 Jan 2017 22:11:13 +0100 Subject: [PATCH 430/729] polishing --- lgsm/functions/mods_core.sh | 69 ++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index e3028f7db..b466340b0 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -29,9 +29,9 @@ fn_gsm_requirements(){ fi } -# Create mods directory if it doesn't exist +# Create mods files and directories if it doesn't exist # Assuming the game is already installed as mods_list.sh checked for it. -fn_mods_dir(){ +fn_mods_files(){ if [ ! -d "${modinstalldir}" ]; then fn_script_log_info "Creating mods directory: ${modinstalldir}" fn_print_dots "Creating mods directory" @@ -40,6 +40,16 @@ fn_mods_dir(){ fn_print_ok "Created mods directory" sleep 0.5 fi + # Create lgsm/data/mods directory + if [ ! -d "${modsdatadir}" ]; then + mkdir -p "${modsdatadir}" + fn_script_log "Created ${modsdatadir}" + fi + # Create lgsm/data/${modslockfile} + if [ ! -f "${modslockfilefullpath}" ]; then + touch "${modslockfilefullpath}" + fn_script_log "Created ${modslockfilefullpath}" + fi } # Clear mod download directory so that there is only one file in it since we don't the file name and extention @@ -62,6 +72,7 @@ fn_mods_tmpdir(){ fi } +# Fetches mod URL fn_mod_dl(){ # fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fileurl="${modurl}" @@ -76,6 +87,7 @@ fn_mod_dl(){ fi } +# Extract the mod fn_mod_extract(){ # fn_dl_extract "${filedir}" "${filename}" "${extractdir}" filename="${modfilename}" @@ -86,8 +98,8 @@ fn_mod_extract(){ fn_dl_extract "${filedir}" "${filename}" "${extractdir}" } +# Convert mod files to lowercase if needed fn_mod_lowercase(){ - # Converting files to lowercase if [ "${modlowercase}" == "LowercaseOn" ]; then fn_print_dots "Converting ${modprettyname} files to lowercase" sleep 0.5 @@ -98,24 +110,24 @@ fn_mod_lowercase(){ fi } +# Don't overwrite specified files upon update (set by ${modkeepfiles}) +# For that matter, remove cfg files after extraction before copying them to destination fn_remove_cfg_files(){ - # Remove config file after extraction for updates set by ${modkeepfiles} if [ "${modkeepfiles}" != "OVERWRITE" ]&&[ "${modkeepfiles}" != "NOUPDATE" ]; then - # Upon mods updates, config files should not be overwritten - # We will just remove these files before copying the mod to the destination - # Let's count how many files there are to remove - fn_print_dots "Allow for preserving ${modprettyname} config files" + fn_print_dots "Allow for not overwriting ${modprettyname} config files" + fn_script_log "Allow for not overwriting ${modprettyname} config files" sleep 0.5 + # Let's count how many files there are to remove removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modgames" using the ";" separator + # Test all subvalue of "modkeepfiles" using the ";" separator for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do # Put current file we're looking for into a variable filetoremove="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" # If it matches an existing file that have been extracted if [ -f "${extractdir}/${filetoremove}" ]||[ -d "${extractdir}/${filetoremove}" ]; then # Then delete the file! - rm -R "${extractdir}/${filetoremove}" - # Write this file path in a tmp file, to rebuild a full file list + rm -r "${extractdir}/${filetoremove}" + # Write this file path in a tmp file, to rebuild a full file list since it is rebuilt upon update if [ ! -f "${modsdatadir}/.removedfiles.tmp" ]; then touch "${modsdatadir}/.removedfiles.tmp" fi @@ -127,12 +139,8 @@ fn_remove_cfg_files(){ fi } +# Create ${modcommand}-files.list containing the full extracted file/directory list fn_mod_fileslist(){ - # Create lgsm/data/mods directory - if [ ! -d "${modsdatadir}" ]; then - mkdir -p "${modsdatadir}" - fn_script_log "Created ${modsdatadir}" - fi fn_print_dots "Building ${modcommand}-files.list" fn_script_log "Building ${modcommand}-files.list" sleep 0.5 @@ -147,8 +155,8 @@ fn_mod_fileslist(){ sleep 0.5 } +# Copy the mod to the destination ${modinstalldir} fn_mod_copy_destination(){ - # Destination directory: ${modinstalldir} fn_print_dots "Copying ${modprettyname} to ${modinstalldir}" fn_script_log "Copying ${modprettyname} to ${modinstalldir}" sleep 0.5 @@ -160,7 +168,6 @@ fn_mod_copy_destination(){ # Check if the mod is already installed and warn the user fn_mod_already_installed(){ if [ -f "${modslockfilefullpath}" ]; then - if [ -n "$(sed -n "/^${modcommand}$/p" "${modslockfilefullpath}")" ]; then fn_print_warning_nl "${modprettyname} has already been installed" sleep 1 @@ -174,17 +181,7 @@ fn_mod_already_installed(){ # Add the mod to the installed mods list fn_mod_add_list(){ - # Create lgsm/data/mods directory - if [ ! -d "${modsdatadir}" ]; then - mkdir -p "${modsdatadir}" - fn_script_log "Created ${modsdatadir}" - fi - # Create lgsm/data/${modslockfile} - if [ ! -f "${modslockfilefullpath}" ]; then - touch "${modslockfilefullpath}" - fn_script_log "Created ${modslockfilefullpath}" - fi - # Input mod name to lockfile + # Append modname to lockfile if it's not already in it if [ ! -n "$(sed -n "/^${modcommand}$/p" "${modslockfilefullpath}")" ]; then echo "${modcommand}" >> "${modslockfilefullpath}" fn_script_log "${modcommand} added to ${modslockfile}" @@ -213,15 +210,16 @@ fn_check_files_list(){ fi } +# Apply some postinstall fixes to make sure everything will be fine fn_postinstall_tasks(){ - # Prevent addons folder from being removed by clearing them in: ${modsdatadir}/${modcommand}-files.list + # Prevent sensitive directories from being erased upon uninstall by removing them them from: ${modsdatadir}/${modcommand}-files.list # Check file validity fn_check_files_list # Output to the user fn_print_dots "Rearranging ${modcommand}-files.list" sleep 0.5 fn_script_log_info "Rearranging ${modcommand}-files.list" - # What lines/files to remove from file list + # What lines/files to remove from file list (end var with a ";" separator) removefromlist="cfg;addons;" # Loop through files to remove from file list, # that way these files won't get removed upon uninstall @@ -234,6 +232,7 @@ fn_postinstall_tasks(){ # Then delete matching line(s)! sed -i "/^${removefilevar}$/d" "${modsdatadir}/${modcommand}-files.list" done + # Sourcemod fix # Remove metamod from sourcemod fileslist if [ "${modcommand}" == "sourcemod" ]; then @@ -245,7 +244,11 @@ fn_postinstall_tasks(){ sleep 0.5 } -## mods_list.sh arrays +######################### +## mods_list.sh arrays ## +######################### + +## Define info for a mod # Define all variables from a mod at once when index is set to a separator fn_mod_info(){ @@ -253,6 +256,7 @@ fn_mod_info(){ if [ -z "$index" ]; then fn_print_error "index variable not set. Please report an issue to LGSM Team." echo "* https://github.com/GameServerManagers/LinuxGSM/issues" + exitcode="1" core_exit.sh fi modcommand="${mods_global_array[index+1]}" @@ -270,6 +274,7 @@ fi moddescription="${mods_global_array[index+13]}" } +## Mod compatibility check # Find out if a game is compatible with a mod from a modgames (list of games supported by a mod) variable fn_compatible_mod_games(){ From acdfafe4baca25105139f6b54120f795bbd5b185 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 17 Jan 2017 22:12:48 +0100 Subject: [PATCH 431/729] polishing --- lgsm/functions/mods_list.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index e99ff2214..08d6805d8 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -24,13 +24,13 @@ fn_mods_info(){ # Example 1) Well made mod: mod_info_name=( MOD "awesomemod" "This is an Awesome Mod" "https://awesomemod.com/latest.zip" "awesomemod.zip" "0" "LowercaseOff" "OVERWRITE" "${systemdir}/addons" "source;unity3d;" "GAMES" "NOTGAMES" "https://awesomemod.com/" "This mod knows that 42 is the answer" ) # Example 2) Poorly made mod: mod_info_name=( MOD "stupidmod" "This is a stupid mod" "${crappymodurl}" "StupidMod.zip" "2" "LowercaseOn" "cfg;data/crappymod;" "${systemdir}" "source;" "GAMES" "Garry's mod;Counter-Strike: Source;" "This mod is dumber than dumb" ) # None of those values can be empty - # [index] | Usage + # index | Usage # [0] | MOD: separator, all mods must begin with it # [1] | "modcommand": the LGSM name and command to install the mod (must be unique and lowercase) # [2] | "Pretty Name": the common name people use to call the mod that will be displayed to the user # [3] | "URL": link to the file; can be a variable defined in fn_mods_nasty_urls (make sure curl can download it) # [4] | "filename": the output filename - # [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) + # [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) # [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) # [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) # [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" to ignore the value or "NOUPDATE" to disallow updating @@ -64,6 +64,7 @@ fn_mods_info(){ # Get a proper URL for mods that don't provide a good one (optional) fn_mods_scrape_urls(){ + fn_script_log "Retriving latest mods URLs" # Metamod metamodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" metamodlatestfile="$(wget "${metamodscrapeurl}/?MD" -q -O -| grep "mmsource" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" From 6df0855bdab3ac5d27d936db65056b06d08bda9b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 17 Jan 2017 21:13:25 +0000 Subject: [PATCH 432/729] added ip= --- lgsm/functions/info_config.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index e092c127b..547eb7c47 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -605,6 +605,7 @@ fn_info_config_sdtd(){ fn_info_config_mta(){ if [ ! -f "${servercfgfullpath}" ]; then + ip="${zero}" port="${unavailable}" httpport="${unavailable}" ase="${unavailable}" @@ -612,6 +613,7 @@ fn_info_config_mta(){ serverpassword="${unavailable}" maxplayers="${zero}" else + ip=$(grep -m 1 "serverip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') port=$(grep -m 1 "serverport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') httpport=$(grep -m 1 "httpport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') ase=$(grep -m 1 "ase" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') From 821db9741798a4129c5764fef3159545947e6824 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 17 Jan 2017 22:17:03 +0100 Subject: [PATCH 433/729] Polishing --- lgsm/functions/command_mods_install.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index dc3c497cc..219f00908 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -11,7 +11,6 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh mods_core.sh -mods_list.sh fn_mods_install_init(){ fn_script_log "Entering mods & addons installation" @@ -52,8 +51,8 @@ fn_mod_installation(){ fn_mod_get_info_from_command # Check if mod is already installed fn_mod_already_installed - # Check and create required directories - fn_mods_dir + # Check and create required files + fn_mods_files # Clear lgsm/tmp/mods dir if exists then recreate it fn_clear_tmp_mods fn_mods_tmpdir @@ -77,9 +76,11 @@ fn_mod_installation(){ fn_script_log "${modprettyname} installed." else fn_print_fail "No mod was selected" + exitcode="1" core_exit.sh fi } fn_mods_install_init fn_mod_installation +core_exit.sh From f9da8c9a1ee6cebd004cdc3993c1e3630de9ce31 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 17 Jan 2017 21:19:01 +0000 Subject: [PATCH 434/729] corrections to mta ip= --- lgsm/functions/info_config.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 547eb7c47..0c95770cc 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -613,7 +613,6 @@ fn_info_config_mta(){ serverpassword="${unavailable}" maxplayers="${zero}" else - ip=$(grep -m 1 "serverip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') port=$(grep -m 1 "serverport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') httpport=$(grep -m 1 "httpport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') ase=$(grep -m 1 "ase" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') @@ -627,6 +626,10 @@ fn_info_config_mta(){ ase="Disabled" fi + ip=$(grep -m 1 "serverip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') + ipsetinconfig=1 + ipinconfigvar="serverip" + # Not Set port=${port:-"NOT SET - Defaults to 22003"} httpport=${httpport:-"NOT SET - Defaults to 22005"} From c3924fa16ddda494663d0ccfc8350741bcd65d04 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 17 Jan 2017 22:23:29 +0100 Subject: [PATCH 435/729] Polishing --- lgsm/functions/command_mods_remove.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 054e0cf20..3404f2feb 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -# Description: Uninstall mods along with mods_list.sh. +# Description: Uninstall mods along with mods_list.sh and mods_core.sh. local commandname="MODS" local commandaction="Mod Remove" @@ -11,7 +11,6 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh mods_core.sh -mods_list.sh fn_mods_remove_init(){ fn_script_log "Entering mods & addons removal" @@ -55,7 +54,7 @@ fn_mods_remove_init(){ # Gives a pretty name to the user and get all mod info currentmod="${usermodselect}" fn_mod_get_info_from_command - # Returns ${modsfilelistsize} + # Check file list in order to make sure we're able to remove the mod (returns ${modsfilelistsize}) fn_check_files_list fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" fn_print_dots "Removing ${modsfilelistsize} files from ${modprettyname}" @@ -65,12 +64,14 @@ fn_mods_remove_init(){ sleep 4 } +# Uninstall the mod fn_mod_remove_process(){ - # Check file list in order to make sure we're able to remove the mod + # Go through every file and remove it modfileline="1" while [ $modfileline -le $modsfilelistsize ]; do - # Current line defines current mod command + # Current line defines current file to remove currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.list")" + # If file or directory exists, then remove it if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" rm -rf "${modinstalldir}/${currentfileremove}" @@ -89,3 +90,4 @@ fn_mod_remove_process(){ fn_mods_remove_init fn_mod_remove_process +core_exit.sh From 77c42746ccda457444d6b19e7b84891b05b99bff Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 17 Jan 2017 22:23:47 +0100 Subject: [PATCH 436/729] Polishing --- lgsm/functions/command_mods_update.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index c737d2a4a..40250a58d 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -11,7 +11,6 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh mods_core.sh -mods_list.sh fn_mods_update_init(){ fn_script_log "Entering mods & addons update" @@ -59,8 +58,8 @@ fn_mods_update_loop(){ echo "" fn_print_dots_nl "Updating ${modprettyname}" fn_script_log "Updating ${modprettyname}." - # Check and create required directories - fn_mods_dir + # Check and create required files + fn_mods_files # Clear lgsm/tmp/mods dir if exists then recreate it fn_clear_tmp_mods fn_mods_tmpdir @@ -89,6 +88,7 @@ fn_mods_update_loop(){ else fn_print_fail "No mod was selected" fn_script_log_fail "No mod was selected." + exitcode="1" core_exit.sh fi done @@ -99,3 +99,4 @@ fn_mods_update_loop(){ fn_mods_update_init fn_mods_update_loop +core_exit.sh From b048b14b2357b2850b18d51224a3c5f67980fce0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 17 Jan 2017 21:32:37 +0000 Subject: [PATCH 437/729] check_config must be completed before check_ip --- lgsm/functions/check.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 25fead75b..bc0b9f83c 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -42,6 +42,14 @@ do fi done +local allowed_commands_array=( command_console.sh command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_config.sh + fi +done + local allowed_commands_array=( command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh ) for allowed_command in "${allowed_commands_array[@]}" do @@ -60,13 +68,7 @@ do fi done -local allowed_commands_array=( command_console.sh command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh ) -for allowed_command in "${allowed_commands_array[@]}" -do - if [ "${allowed_command}" == "${function_selfname}" ]; then - check_config.sh - fi -done + local allowed_commands_array=( command_details.sh command_monitor.sh command_start.sh command_stop.sh command_ts3_server_pass.sh command_update.sh command_details.sh command_validate.sh ) for allowed_command in "${allowed_commands_array[@]}" From 7d848c30c4d8f88e6fdf6384444c6689cbddf50d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 17 Jan 2017 21:40:00 +0000 Subject: [PATCH 438/729] added no-clobber option preventing overwriting of already existing configs --- lgsm/functions/install_config.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index e8501eaa6..3bb99da89 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -34,13 +34,13 @@ fn_default_config_remote(){ echo "copying ${config} config file." fn_script_log_info "copying ${servercfg} config file." if [ "${config}" == "${servercfgdefault}" ]; then - cp -v "${lgsmdir}/default-configs/${config}" "${servercfgfullpath}" + cp -nv "${lgsmdir}/default-configs/${config}" "${servercfgfullpath}" elif [ "${gamename}" == "ARMA 3" ]&&[ "${config}" == "${networkcfgdefault}" ]; then - cp -v "${lgsmdir}/default-configs/${config}" "${networkcfgfullpath}" + cp -nv "${lgsmdir}/default-configs/${config}" "${networkcfgfullpath}" elif [ "${gamename}" == "Don't Starve Together" ]&&[ "${config}" == "${clustercfgdefault}" ]; then cp -nv "${lgsmdir}/default-configs/${clustercfgdefault}" "${clustercfgfullpath}" else - cp -v "${lgsmdir}/default-configs/${config}" "${servercfgdir}/${config}" + cp -nv "${lgsmdir}/default-configs/${config}" "${servercfgdir}/${config}" fi done sleep 1 @@ -361,6 +361,13 @@ elif [ "${gamename}" == "No More Room in Hell" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Multi Theft Auto" ]; then + gamedirname="MultiTheftAuto" + fn_check_cfgdir + array_configs+=( acl.xml mtaserver.conf vehiclecolors.conf ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Mumble" ]; then gamedirname="Mumble" array_configs+=( murmur.ini ) @@ -498,11 +505,4 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars -elif [ "${gamename}" == "Multi Theft Auto" ]; then - gamedirname="MultiTheftAuto" - fn_check_cfgdir - array_configs+=( acl.xml mtaserver.conf vehiclecolors.conf ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars fi From 6a5bad9db2b4e2abb0b4ed8b964cd20f4d2d2786 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 17 Jan 2017 22:41:48 +0100 Subject: [PATCH 439/729] Validate after Oxide uninstall --- lgsm/functions/mods_core.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index b466340b0..b6f36b26d 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -210,7 +210,7 @@ fn_check_files_list(){ fi } -# Apply some postinstall fixes to make sure everything will be fine +# Apply some post-install fixes to make sure everything will be fine fn_postinstall_tasks(){ # Prevent sensitive directories from being erased upon uninstall by removing them them from: ${modsdatadir}/${modcommand}-files.list # Check file validity @@ -244,6 +244,18 @@ fn_postinstall_tasks(){ sleep 0.5 } +# Apply some post-uninstall fixes to make sure everything will be fine + +fn_postuninstall_tasks(){ + # Oxide fix + # Oxide replaces server files, so a validate is required after uninstall + if [ "${engine}" == "unity3d" ]&&[[ "${modprettyname}" == *"Oxide"* ]]; then + fn_print_information_nl "Validating to restore original ${gamename} files replaced by Oxide" + fn_script_log "Validating to restore original ${gamename} files replaced by Oxide" + command_validate.sh + fi +} + ######################### ## mods_list.sh arrays ## ######################### From ea37fc9b684e340a59677b5b0c016f9361e7f710 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 17 Jan 2017 22:42:47 +0100 Subject: [PATCH 440/729] validate after remove oxide --- lgsm/functions/command_mods_remove.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 3404f2feb..67b4e7f1d 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -84,6 +84,8 @@ fn_mod_remove_process(){ # Remove from installed mods list fn_script_log "Removing: ${modcommand} from ${modslockfilefullpath}" sed -i "/^${modcommand}$/d" "${modslockfilefullpath}" + # Post install tasks to solve potential issues + fn_postuninstall_tasks fn_print_ok_nl "Removed ${modprettyname}" fn_script_log "Removed ${modprettyname}" } From e38afe11ba2a7ad244a2f29c37e6770ea722f925 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 17 Jan 2017 22:50:01 +0100 Subject: [PATCH 441/729] exitbypass --- lgsm/functions/mods_core.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index b6f36b26d..fbfa9e5db 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -245,14 +245,15 @@ fn_postinstall_tasks(){ } # Apply some post-uninstall fixes to make sure everything will be fine - fn_postuninstall_tasks(){ # Oxide fix # Oxide replaces server files, so a validate is required after uninstall if [ "${engine}" == "unity3d" ]&&[[ "${modprettyname}" == *"Oxide"* ]]; then fn_print_information_nl "Validating to restore original ${gamename} files replaced by Oxide" fn_script_log "Validating to restore original ${gamename} files replaced by Oxide" + exitbypass="1" command_validate.sh + unset exitbypass fi } From 88c70c99288c0a60ac4f0a867c30930efd6b77e5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 17 Jan 2017 22:55:59 +0100 Subject: [PATCH 442/729] Validate fix Fixes Fixes #991 for validate command Also, it lacked a line jump. --- lgsm/functions/command_validate.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 6125ed513..3627acdb6 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -9,6 +9,7 @@ local commandaction="Validate" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_validation(){ + echo "" echo -e " * Validating may overwrite some customised files." echo -en " * https://developer.valvesoftware.com/wiki/SteamCMD#Validate" sleep 3 @@ -19,7 +20,9 @@ fn_validation(){ cd "${rootdir}/steamcmd" - if [ $(command -v stdbuf) ]; then + # Detects if unbuffer command is available for 32 bit distributions only. + info_distro.sh + if [ $(command -v stdbuf) ]&&[ "${arch}" != "x86_64" ]; then unbuffer="stdbuf -i0 -o0 -e0" fi From 213ab5ee0859248ca49eeb72d9200c4703a27f91 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 18 Jan 2017 21:17:30 +0000 Subject: [PATCH 443/729] fixes unary operator expected --- lgsm/functions/core_dl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 7355c840c..b1db1b8fd 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -117,7 +117,7 @@ fn_fetch_file(){ # trap to remove part downloaded files trap fn_fetch_trap INT # if larger file shows progress bar - if [ ${filename##*.} == "bz2" ]||[ ${filename##*.} == "gz" ]||[ ${filename##*.} == "zip" ]||[ ${filename##*.} == "jar" ]; then + if [ "${filename##*.}" == "bz2" ]||[ "${filename##*.}" == "gz" ]||[ "${filename##*.}" == "zip" ]||[ "${filename##*.}" == "jar" ]; then echo -ne "downloading ${filename}..." sleep 1 curlcmd=$(${curlcmd} --progress-bar --fail -L -o "${filedir}/${filename}" "${fileurl}") From 6409a07af93ab4ef9b4506326404123659e2f95b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 18 Jan 2017 21:17:42 +0000 Subject: [PATCH 444/729] removed tabs --- lgsm/functions/mods_core.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index fbfa9e5db..813db7e8c 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -67,8 +67,8 @@ fn_clear_tmp_mods(){ # Create tmp download mod directory fn_mods_tmpdir(){ if [ ! -d "${modstmpdir}" ]; then - mkdir -p "${modstmpdir}" - fn_script_log "Creating temp mod download directory: ${modstmpdir}" + mkdir -p "${modstmpdir}" + fn_script_log "Creating temp mod download directory: ${modstmpdir}" fi } From c61440d1be3202a09be980f8ff34cae5787e9db6 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 18 Jan 2017 21:52:49 +0000 Subject: [PATCH 445/729] Updated info_config.sh to match other servers --- lgsm/functions/info_config.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 0c95770cc..0164999a3 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -631,11 +631,11 @@ fn_info_config_mta(){ ipinconfigvar="serverip" # Not Set - port=${port:-"NOT SET - Defaults to 22003"} - httpport=${httpport:-"NOT SET - Defaults to 22005"} - ase=${ase:-"NOT SET - Defaults to Disabled"} + port=${port:-"22003"} + httpport=${httpport:-"22005"} + ase=${ase:-"Disabled"} servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET - Defaults to none"} + serverpassword=${serverpassword:-"NOT SET"} maxplayers=${maxplayers:-"0"} fi } From a54a34c8a33e3ccca90802cb441ea4e074be09ed Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 18 Jan 2017 21:56:00 +0000 Subject: [PATCH 446/729] Removed ini variable as not required --- lgsm/functions/command_details.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index c227694c8..e34f65702 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -735,8 +735,8 @@ fn_details_mta(){ echo -e "netstat -atunp | grep mta-server64" echo -e "" { - echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" - echo -e "> Game\tOUTBOUND\t${port}\tudp\tPort=${port}" + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tOUTBOUND\t${port}\tudp" echo -e "> HTTP Server\tINBOUND\t${httpport}\ttcp" if [ "${ase}" == "Enabled" ]; then echo -e "> ASE Game_Monitor\tOUTBOUND\t$((${port} + 123))\tudp" From 0546be54d287cfc961e267dbc0802a00f0a0fb4a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Wed, 18 Jan 2017 23:29:17 +0100 Subject: [PATCH 447/729] Attempt for installed mods list --- lgsm/functions/mods_core.sh | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 813db7e8c..e6d78ede0 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -402,7 +402,6 @@ fn_mods_available(){ fn_mods_show_available(){ # Set and reset vars compatiblemodslistindex=0 - spaces=" " # As long as we're within index values while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do # Set values for convenience @@ -423,6 +422,23 @@ fn_mods_show_available(){ fi } + +# Builds installed mods list and display it to the user. +fn_installed_mods_list(){ + # Set variables + installedmodsline=1 + installedmodslist=() + while [ $installedmodsline -le $installedmodscount ]; do + currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )"" + installedmodslist+=( "$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" ) + fn_mod_get_info_from_command + echo -e "\e[1m${displayedmodname}\e[0m - ${displayedmoddescription} - ${displayedmodsite}" + echo -e " * \e[36m${displayedmodcommand}\e[0m" + let installedmodsline=installedmodsline+1 + done + echo "" +} + # Get details of a mod any (relevant and unique, such as full mod name or install command) value fn_mod_get_info_from_command(){ # Variable to know when job is done From 3853dd36cd3c31322abe91ded943a28e34985c0a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Wed, 18 Jan 2017 23:30:45 +0100 Subject: [PATCH 448/729] attempd for new mods remove list --- lgsm/functions/command_mods_remove.sh | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 67b4e7f1d..bf0d13f7c 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -27,17 +27,10 @@ fn_mods_remove_init(){ fn_script_log_info "No mods or addons to remove." core_exit.sh fi - # Build installed mods list and display to the user. - installedmodsline=1 - availablemodsremove=() - while [ $installedmodsline -le $installedmodscount ]; do - availablemodsremove+=( "$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" ) - echo -e " * \e[36m$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")\e[0m" - let installedmodsline=installedmodsline+1 - done - echo "" + # Displays installed addons to the user + fn_installed_mods_list # Keep prompting as long as the user input doesn't correspond to an available mod - while [[ ! " ${availablemodsremove[@]} " =~ " ${usermodselect} " ]]; do + while [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; do echo -en "Enter a \e[36mmod\e[0m to \e[31mremove\e[0m (or exit to abort): " read -r usermodselect # Exit if user says exit or abort @@ -46,7 +39,7 @@ fn_mods_remove_init(){ echo "Aborted." core_exit.sh # Supplementary output upon invalid user input - elif [[ ! " ${availablemodsremove[@]} " =~ " ${usermodselect} " ]]; then + elif [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; then fn_print_error2_nl "${usermodselect} is not a valid mod." echo " * Enter a valid mod or input exit to abort." fi From f645ace2433b39d1a82bf10c36831567f9c67c73 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Wed, 18 Jan 2017 23:55:37 +0100 Subject: [PATCH 449/729] () lolilol --- lgsm/functions/mods_core.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index e6d78ede0..91ef10dc7 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -422,15 +422,14 @@ fn_mods_show_available(){ fi } - # Builds installed mods list and display it to the user. fn_installed_mods_list(){ # Set variables - installedmodsline=1 + installedmodsline="1" installedmodslist=() while [ $installedmodsline -le $installedmodscount ]; do - currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )"" - installedmodslist+=( "$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" ) + currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" + installedmodslist+="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" fn_mod_get_info_from_command echo -e "\e[1m${displayedmodname}\e[0m - ${displayedmoddescription} - ${displayedmodsite}" echo -e " * \e[36m${displayedmodcommand}\e[0m" From 11174b4ed887be31b179501fac035af097de4b8b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 00:03:47 +0100 Subject: [PATCH 450/729] corrected variables --- lgsm/functions/mods_core.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 91ef10dc7..30195b350 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -431,8 +431,8 @@ fn_installed_mods_list(){ currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" installedmodslist+="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" fn_mod_get_info_from_command - echo -e "\e[1m${displayedmodname}\e[0m - ${displayedmoddescription} - ${displayedmodsite}" - echo -e " * \e[36m${displayedmodcommand}\e[0m" + echo -e "\e[1m${modprettyname}\e[0m - ${moddescription} - ${modsite}" + echo -e " * \e[36m${modcommand}\e[0m" let installedmodsline=installedmodsline+1 done echo "" From efe7b219a68e15084716189126942b40a422ff03 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 00:08:38 +0100 Subject: [PATCH 451/729] installedmodslist --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 30195b350..c77c3364e 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -429,10 +429,10 @@ fn_installed_mods_list(){ installedmodslist=() while [ $installedmodsline -le $installedmodscount ]; do currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" - installedmodslist+="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" fn_mod_get_info_from_command echo -e "\e[1m${modprettyname}\e[0m - ${moddescription} - ${modsite}" echo -e " * \e[36m${modcommand}\e[0m" + installedmodslist+=( "${modcommand}" ) let installedmodsline=installedmodsline+1 done echo "" From e83683f198b4dd01d21e65a0e1cbee326d4fb937 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 00:45:15 +0100 Subject: [PATCH 452/729] fn_installed_mods_lightlist --- lgsm/functions/mods_core.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index c77c3364e..b8084cbcf 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -438,6 +438,28 @@ fn_installed_mods_list(){ echo "" } +# Display a simple list of installed mods +fn_installed_mods_lightlist(){ + # How many mods installed + installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" + if [ -f "${modslockfilefullpath}" ]&&[ $installedmodscount -gt 0 ]; then + echo "=================================" + echo "Installed mods/addons + # Set variables + installedmodsline="1" + installedmodslist=() + # Loop through mods + while [ $installedmodsline -le $installedmodscount ]; do + currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" + fn_mod_get_info_from_command + echo -e " * \e[1m${modprettyname}\e[0m" + installedmodslist+=( "${modcommand}" ) + let installedmodsline=installedmodsline+1 + done + echo "" + fi +} + # Get details of a mod any (relevant and unique, such as full mod name or install command) value fn_mod_get_info_from_command(){ # Variable to know when job is done From 16f54c62814b182d379987601f25c2bf5284c48b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 00:45:25 +0100 Subject: [PATCH 453/729] fn_installed_mods_lightlist --- lgsm/functions/command_mods_install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 219f00908..beb1ac242 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -13,6 +13,8 @@ check.sh mods_core.sh fn_mods_install_init(){ + # Display installed mods + fn_installed_mods_lightlist fn_script_log "Entering mods & addons installation" echo "=================================" echo "${gamename} mods & addons installation" From b2c96b67fcd90661bf861d539039e3f2fc55e41e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 00:50:09 +0100 Subject: [PATCH 454/729] "" --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index b8084cbcf..146b60c71 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -444,7 +444,7 @@ fn_installed_mods_lightlist(){ installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" if [ -f "${modslockfilefullpath}" ]&&[ $installedmodscount -gt 0 ]; then echo "=================================" - echo "Installed mods/addons + echo "Installed mods/addons" # Set variables installedmodsline="1" installedmodslist=() From 3593866157e6ae6037de0978a0d743279c746434 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 00:52:43 +0100 Subject: [PATCH 455/729] echo "" moved --- lgsm/functions/mods_core.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 146b60c71..5c62e8981 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -435,7 +435,6 @@ fn_installed_mods_list(){ installedmodslist+=( "${modcommand}" ) let installedmodsline=installedmodsline+1 done - echo "" } # Display a simple list of installed mods @@ -456,7 +455,6 @@ fn_installed_mods_lightlist(){ installedmodslist+=( "${modcommand}" ) let installedmodsline=installedmodsline+1 done - echo "" fi } From 156b351d10c2cc7888c037308989896183ec7f16 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 00:53:10 +0100 Subject: [PATCH 456/729] echo "" moved here --- lgsm/functions/command_mods_remove.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index bf0d13f7c..63f7f5bec 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -29,6 +29,7 @@ fn_mods_remove_init(){ fi # Displays installed addons to the user fn_installed_mods_list + echo "" # Keep prompting as long as the user input doesn't correspond to an available mod while [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; do echo -en "Enter a \e[36mmod\e[0m to \e[31mremove\e[0m (or exit to abort): " From c9ef22f68778706cb9603a0ef277638cae49ab12 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 01:36:52 +0100 Subject: [PATCH 457/729] Prompt if already installed --- lgsm/functions/mods_core.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 5c62e8981..3268379ad 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -172,8 +172,14 @@ fn_mod_already_installed(){ fn_print_warning_nl "${modprettyname} has already been installed" sleep 1 echo " * Config files, if any, might be overwritten." - echo " * Press ctrl + c to abort." - sleep 3 + while true; do + read -e -i "y" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; core_exit.sh;; + * ) echo "Please answer yes or no.";; + esac + done fi fn_script_log "${modprettyname} is already installed, overwriting any file." fi From fa8e32a7a3360c01af4092231c2dfe64a42fb013 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 21:14:55 +0100 Subject: [PATCH 458/729] Fixed sourcemod URL --- lgsm/functions/mods_list.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 08d6805d8..7012fa1f7 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -68,12 +68,12 @@ fn_mods_scrape_urls(){ # Metamod metamodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" metamodlatestfile="$(wget "${metamodscrapeurl}/?MD" -q -O -| grep "mmsource" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" - metamodfasterurl="http://cdn.probablyaserver.com/sourcemod/" - metamodurl="${metamodfasterurl}/${metamodlatestfile}" + metamoddownloadurl="http://cdn.probablyaserver.com/sourcemod/" + metamodurl="${metamoddownloadurl}/${metamodlatestfile}" # Sourcemod sourcemodmversion="1.8" - sourcemodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" - sourcemodlatestfile="$(wget "${sourcemodscrapeurl}/?MD" -q -O -| grep "sourcemod-" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" - sourcemodfasterurl="http://cdn.probablyaserver.com/sourcemod/" - sourcemodurl="${sourcemodfasterurl}/${sourcemodlatestfile}" + sourcemodscrapeurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}/sourcemod-latest-linux" + sourcemodlatestfile="$(wget "${sourcemodscrapeurl}/?MD" -q -O -)" + sourcemoddownloadurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}" + sourcemodurl="${sourcemoddownloadurl}/${sourcemodlatestfile}" } From 8a08cda9055abf338379e9a9dd98737570d1b4ad Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 21:18:33 +0100 Subject: [PATCH 459/729] "/?MD" drugs are bad --- lgsm/functions/mods_list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 7012fa1f7..7f795cbe1 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -73,7 +73,7 @@ fn_mods_scrape_urls(){ # Sourcemod sourcemodmversion="1.8" sourcemodscrapeurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}/sourcemod-latest-linux" - sourcemodlatestfile="$(wget "${sourcemodscrapeurl}/?MD" -q -O -)" + sourcemodlatestfile="$(wget "${sourcemodscrapeurl}" -q -O -)" sourcemoddownloadurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}" sourcemodurl="${sourcemoddownloadurl}/${sourcemodlatestfile}" } From 858f1f24b895666e0f2b04fafbeb7f0a538340a0 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 22:53:02 +0100 Subject: [PATCH 460/729] Executable not found message --- lgsm/functions/check_permissions.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 1411e649c..38ea23eca 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -123,6 +123,12 @@ fn_check_permissions(){ fi fi fi + else + fn_script_log_warn "Expected executable not found: ${executabledir}/${execname}" + fn_print_fail_nl "Executable ${execname} was not found." + echo " * Is the server properly installed?" + exitcode="1" + core_exit.sh fi } From b126bc6584c40d3b3a3290831361e3fbd08255b3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 22:53:56 +0100 Subject: [PATCH 461/729] Cleaning message --- lgsm/functions/check_permissions.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 38ea23eca..65ade3aae 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -125,8 +125,7 @@ fn_check_permissions(){ fi else fn_script_log_warn "Expected executable not found: ${executabledir}/${execname}" - fn_print_fail_nl "Executable ${execname} was not found." - echo " * Is the server properly installed?" + fn_print_fail_nl "Executable ${execname} was not found" exitcode="1" core_exit.sh fi From a96b54748828950f12b758332addf5cca72b2b8f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 22:58:39 +0100 Subject: [PATCH 462/729] Reverted changes --- lgsm/functions/check_permissions.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 65ade3aae..1411e649c 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -123,11 +123,6 @@ fn_check_permissions(){ fi fi fi - else - fn_script_log_warn "Expected executable not found: ${executabledir}/${execname}" - fn_print_fail_nl "Executable ${execname} was not found" - exitcode="1" - core_exit.sh fi } From 5f95892b8dde450109ee51d121bd2029f97cf973 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 23:04:03 +0100 Subject: [PATCH 463/729] Check if executable exists --- lgsm/functions/check_executable.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 lgsm/functions/check_executable.sh diff --git a/lgsm/functions/check_executable.sh b/lgsm/functions/check_executable.sh new file mode 100644 index 000000000..a0a81aa4d --- /dev/null +++ b/lgsm/functions/check_executable.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# LGSM check_system_dir.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +# Description: Checks if systemdir is accessible. + +local commandname="CHECK" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +# Check if executable exists +if [ -f "${executabledir}/${execname}" ]; then + fn_script_log_warn "Expected executable not found: ${executabledir}/${execname}" + if [ -d "${scriptlogdir}" ]; then + fn_print_fail_nl "Executable ${execname} was not found" + fi + exitcode="1" + core_exit.sh +fi From f5bda64008b160528f013e972d1ad961ced98256 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 23:04:41 +0100 Subject: [PATCH 464/729] check_executable.sh --- lgsm/functions/check.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 25fead75b..42d0a90b2 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -83,3 +83,11 @@ do check_system_requirements.sh fi done + +local allowed_commands_array=( command_start.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_executable.sh + fi +done From a11aca6af94e0c892597fbf13d2aa2df3ac04741 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 23:05:17 +0100 Subject: [PATCH 465/729] check_executable.sh --- lgsm/functions/core_functions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index fc9dfaab0..4bfc4c9b2 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -228,6 +228,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +check_executable.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + check_glibc.sh(){ functionfile="${FUNCNAME}" fn_fetch_function From 625ba3e558db64e83231c6d3f0dde25a98ef1bb7 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 23:07:27 +0100 Subject: [PATCH 466/729] Maybe check executable first --- lgsm/functions/check.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 42d0a90b2..255ab5ee1 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -18,6 +18,14 @@ if [ "${function_selfname}" != "command_install.sh" ]&&[ "${function_selfname}" check_system_dir.sh fi +local allowed_commands_array=( command_start.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_executable.sh + fi +done + local allowed_commands_array=( command_debug.sh command_start.sh command_install.sh ) for allowed_command in "${allowed_commands_array[@]}" do @@ -83,11 +91,3 @@ do check_system_requirements.sh fi done - -local allowed_commands_array=( command_start.sh ) -for allowed_command in "${allowed_commands_array[@]}" -do - if [ "${allowed_command}" == "${function_selfname}" ]; then - check_executable.sh - fi -done From 7ea7a6d94be3df682a41d5cad9453a4150644657 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 23:16:14 +0100 Subject: [PATCH 467/729] I'm dumb --- lgsm/functions/check_executable.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_executable.sh b/lgsm/functions/check_executable.sh index a0a81aa4d..94337a26d 100644 --- a/lgsm/functions/check_executable.sh +++ b/lgsm/functions/check_executable.sh @@ -8,7 +8,7 @@ local commandname="CHECK" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" # Check if executable exists -if [ -f "${executabledir}/${execname}" ]; then +if [ ! -f "${executabledir}/${execname}" ]; then fn_script_log_warn "Expected executable not found: ${executabledir}/${execname}" if [ -d "${scriptlogdir}" ]; then fn_print_fail_nl "Executable ${execname} was not found" From 16b03293455ea885a957a1f44b7f7e956851d52b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 19 Jan 2017 23:50:59 +0100 Subject: [PATCH 468/729] spacing --- lgsm/functions/command_mods_remove.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 63f7f5bec..779c86fd9 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -13,7 +13,7 @@ check.sh mods_core.sh fn_mods_remove_init(){ - fn_script_log "Entering mods & addons removal" + fn_script_log "Entering mods & addons removal" echo "=================================" echo "${gamename} mods & addons removal" echo "" From c5d94762189bc461681131ecffb2740861e162c0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 19 Jan 2017 23:30:05 +0000 Subject: [PATCH 469/729] Added command_install_resources_mta.sh --- .../command_install_resources_mta.sh | 31 ++++++++ lgsm/functions/core_functions.sh | 5 ++ lgsm/functions/core_getopt.sh | 72 ++++++++++++++++++- 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 lgsm/functions/command_install_resources_mta.sh diff --git a/lgsm/functions/command_install_resources_mta.sh b/lgsm/functions/command_install_resources_mta.sh new file mode 100644 index 000000000..4748774d5 --- /dev/null +++ b/lgsm/functions/command_install_resources_mta.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# LGSM command_install_resources_mta.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +# Description: Installs the default resources for Multi Theft Auto. + +local commandname="DEFAULT_RESOURCES" +local commandaction="Default Resources" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +fn_install_resources(){ + echo "" + echo "Installing Default Resources" + echo "=================================" + fileurl="http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip"; filedir="${tmpdir}"; filename="multitheftauto_resources.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="97a587509698f7f010bcd6e5c6dd9c31" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + fn_dl_extract "${filedir}" "${filename}" "${resourcesdir}" + echo "Default Resources Installed." +} + +fn_print_header + +fn_print_warning_nl "Installing the default resources with existing resources may cause issues." +while true; do + read -e -i "y" -p "Do you want to install MTA default resources? [Y/n]" yn + case $yn in + [Yy]* ) fn_install_resources && break;; + [Nn]* ) break;; + * ) echo "Please answer yes or no.";; + esac +done \ No newline at end of file diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 77fff799f..8c92f3198 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -182,6 +182,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +command_install_resources_mta.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + command_fastdl.sh(){ functionfile="${FUNCNAME}" fn_fetch_function diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 416427ae8..bc18e3292 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -342,6 +342,73 @@ case "${getopt}" in esac } +fn_getopt_mta(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ir|install-default-resources) + command_install_resources_mta.sh;; + ai|auto-install) + fn_autoinstall;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + echo -e "${blue}details\t${default}dt |Displays useful infomation 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}install-default-resources\t${default}ir |Install the MTA default resources." + } | column -s $'\t' -t + esac +} + fn_getopt_mumble(){ case "${getopt}" in st|start) @@ -772,6 +839,9 @@ elif [ "${gamename}" == "Garry's Mod" ]; then # Minecraft elif [ "${engine}" == "lwjgl2" ]; then fn_getopt_minecraft +# Multi Theft Auto +elif [ "${gamename}" == "Multi Theft Auto" ]; then + fn_getopt_mta # Mumble elif [ "${gamename}" == "Mumble" ]; then fn_getopt_mumble @@ -789,7 +859,7 @@ elif [ "${engine}" == "unreal2" ]; then elif [ "${engine}" == "unreal" ]; then fn_getopt_unreal # Generic -elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "Multi Theft Auto" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_getopt_generic_no_update elif [ "${gamename}" == "Factorio" ]; then fn_getopt_generic_update_no_steam From 233275c3eb17855b74ef429679b83922647650e6 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 01:16:06 +0100 Subject: [PATCH 470/729] Attempt for cleaner functions (core) --- lgsm/functions/mods_core.sh | 141 +++++++++++++++++++++++++++++++----- 1 file changed, 122 insertions(+), 19 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 3268379ad..fa9328e26 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -428,42 +428,138 @@ fn_mods_show_available(){ fi } -# Builds installed mods list and display it to the user. -fn_installed_mods_list(){ - # Set variables +# Checks if mods have been installed +# Also returns ${installedmodscount} if mods were found +fn_check_installed_mods(){ + # Count installed mods + if [ -f "${modslockfilefullpath}" ]; then + installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" + fi +} + +# A simple function to exit if no mods were installed +# Also returns ${installedmodscount} if mods were found +fn_mods_exit_if_not_installed(){ + # Checks if mods have been installed + # Also returns ${installedmodscount} if mods were found + fn_check_installed_mods + # If no mods lockfile is found or if it is empty + if [ ! -f "${modslockfilefullpath}" ]||[ -z "${installedmodscount}" ]||[ $installedmodscount -le 0 ]; then + fn_print_information_nl "No installed mods or addons were found" + echo " * Install mods using LGSM first with: ./${selfname} mods-install" + fn_script_log_info "No installed mods or addons were found." + core_exit.sh + fi +} + +# Builds installed mods list and sets available commands according to installed mods +# (requires ${installedmodscount} from fn_check_installed_mods) +fn_mods_available_commands_from_installed(){ + # Set/reset variables installedmodsline="1" installedmodslist=() + # Loop through every line of the installed mods list ${modslockfilefullpath} while [ $installedmodsline -le $installedmodscount ]; do - currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" + currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" + # Get mod info to make sure mod exists fn_mod_get_info_from_command - echo -e "\e[1m${modprettyname}\e[0m - ${moddescription} - ${modsite}" - echo -e " * \e[36m${modcommand}\e[0m" + # Add the mod to available commands installedmodslist+=( "${modcommand}" ) + # Increment line check let installedmodsline=installedmodsline+1 done } -# Display a simple list of installed mods -fn_installed_mods_lightlist(){ - # How many mods installed - installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" - if [ -f "${modslockfilefullpath}" ]&&[ $installedmodscount -gt 0 ]; then +# Displays a detailed list of installed mods +# Requires fn_check_installed_mods and fn_mods_available_commands_from_installed to run +fn_installed_mods_detailed_list(){ + fn_check_installed_mods + fn_mods_available_commands_from_installed + # Were now based on ${installedmodslist} array's values + # We're gonna go through all available commands, get details and display them to the user + for ((index=0; index <= ${#installedmodslist[@]}; index++)); do + # Current mod is the "index" value of the array we're going through + currentmod="${installedmodslist[index]}" + # Get mod info + fn_mod_get_info_from_command + # Display mod info to the user + echo -e "\e[1m${modprettyname}\e[0m - ${moddescription} - ${modsite}" + echo -e " * \e[36m${modcommand}\e[0m" + done +} + +# Displays a detailed list of installed mods +# Requires fn_check_installed_mods and fn_mods_available_commands_from_installed to run +fn_installed_mods_medium_list(){ + fn_check_installed_mods + fn_mods_available_commands_from_installed + # Were now based on ${installedmodslist} array's values + # We're gonna go through all available commands, get details and display them to the user + for ((index=0; index <= ${#installedmodslist[@]}; index++)); do + # Current mod is the "index" value of the array we're going through + currentmod="${installedmodslist[index]}" + # Get mod info + fn_mod_get_info_from_command + # Display mod info to the user + echo -e "\e[36m${modcommand}\e[0m - \e[1m${modprettyname}\e[0m - ${moddescription}" + done +} + +# Displays a simple list of installed mods +# Requires fn_check_installed_mods and fn_mods_available_commands_from_installed to run +# This list is only displayed when some mods are installed +fn_installed_mods_light_list(){ + fn_check_installed_mods + fn_mods_available_commands_from_installed + if [ $installedmodscount -gt 0 ]; then echo "=================================" echo "Installed mods/addons" - # Set variables - installedmodsline="1" - installedmodslist=() - # Loop through mods - while [ $installedmodsline -le $installedmodscount ]; do - currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}" )" + # Were now based on ${installedmodslist} array's values + # We're gonna go through all available commands, get details and display them to the user + for ((index=0; index <= ${#installedmodslist[@]}; index++)); do + # Current mod is the "index" value of the array we're going through + currentmod="${installedmodslist[index]}" + # Get mod info fn_mod_get_info_from_command + # Display simple mod info to the user echo -e " * \e[1m${modprettyname}\e[0m" - installedmodslist+=( "${modcommand}" ) - let installedmodsline=installedmodsline+1 done fi } +# Displays a simple list of installed mods for mods-update command +# Requires fn_check_installed_mods and fn_mods_available_commands_from_installed to run +fn_installed_mods_update_list(){ + fn_check_installed_mods + fn_mods_available_commands_from_installed + echo "=================================" + echo "Installed mods/addons" + # Were now based on ${installedmodslist} array's values + # We're gonna go through all available commands, get details and display them to the user + for ((index=0; index <= ${#installedmodslist[@]}; index++)); do + # Current mod is the "index" value of the array we're going through + currentmod="${installedmodslist[index]}" + # Get mod info + fn_mod_get_info_from_command + # Display simple mod info to the user according to the update policy + # If modkeepfiles is not set for some reason, that's a problem + if [ -z "${modkeepfiles}" ]; then + fn_script_log_error "Couldn't find update policy for ${modprettyname}" + fn_print_error_nl "Couldn't find update policy for ${modprettyname}" + exitcode="1" + core_exit.sh + # If the mod won't get updated + elif [ "${modkeepfiles}" == "NOUPDATE" ]; then + echo -e " * \e[31m${modprettyname}\e[0m (won't be updated)" + # If the mode is just overwritten + elif [ "${modkeepfiles}" == "OVERWRITE" ]; then + echo -e " * \e[1m${modprettyname}\e[0m (overwrite)" + else + echo -e " * \e[33m${modprettyname}\e[0m (common custom files remain untouched)" + fi + done +} + # Get details of a mod any (relevant and unique, such as full mod name or install command) value fn_mod_get_info_from_command(){ # Variable to know when job is done @@ -488,6 +584,13 @@ fn_mod_get_info_from_command(){ break fi done + # What happens if mod is not found + if [ "${modinfocommand}" == "0" ]; then + fn_script_log_error "Couldn't find information for ${currentmod}" + fn_print_error_nl ""Couldn't find information for ${currentmod}" + exitcode="1" + core_exit.sh + fi } fn_gsm_requirements From 849c13037a0e5203cf32add675b5ac4b086897db Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 01:16:24 +0100 Subject: [PATCH 471/729] Attempt for the use of cleaner core functions --- lgsm/functions/command_mods_remove.sh | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 779c86fd9..006367850 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -17,18 +17,11 @@ fn_mods_remove_init(){ echo "=================================" echo "${gamename} mods & addons removal" echo "" - # Installed mod dir is "${modslockfilefullpath}" - # How many mods are installed - installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" - # If no mods to be updated - if [ ! -f "${modslockfilefullpath}" ]||[ $installedmodscount -eq 0 ]; then - fn_print_information_nl "No mods or addons to remove" - echo " * Did you install any mod using LGSM?" - fn_script_log_info "No mods or addons to remove." - core_exit.sh - fi + # A simple function to exit if no mods were installed + # Also returns ${installedmodscount} if mods were found + fn_mods_exit_if_not_installed # Displays installed addons to the user - fn_installed_mods_list + fn_installed_mods_medium_list echo "" # Keep prompting as long as the user input doesn't correspond to an available mod while [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; do From 9830a59ff1143eac9dff969dd13862d644ace0b4 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 01:16:30 +0100 Subject: [PATCH 472/729] Attempt for the use of cleaner core functions --- lgsm/functions/command_mods_update.sh | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 40250a58d..88ac2fb31 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -14,29 +14,16 @@ mods_core.sh fn_mods_update_init(){ fn_script_log "Entering mods & addons update" + # A simple function to exit if no mods were installed + # Also returns ${installedmodscount} if mods were found + fn_mods_exit_if_not_installed echo "=================================" echo "${gamename} mods & addons update" echo "" - # Installed mod dir is "${modslockfilefullpath}" - # How many mods will be updated - installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" - # If no mods to be updated - if [ ! -f "${modslockfilefullpath}" ]||[ $installedmodscount -eq 0 ]; then - fn_print_information_nl "No mods or addons to be updated" - echo " * Did you install any mod using LGSM?" - fn_script_log_info "No mods or addons to be updated" - core_exit.sh - else - fn_print_information_nl "${installedmodscount} mods or addons will be updated:" - fn_script_log_info "${installedmodscount} mods or addons will be updated" - # Loop showing mods to update - installedmodsline=1 - while [ $installedmodsline -le $installedmodscount ]; do - echo -e " * \e[36m$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")\e[0m" - let installedmodsline=installedmodsline+1 - done - sleep 2 - fi + fn_print_information_nl "${installedmodscount} mods or addons will be updated:" + fn_script_log_info "${installedmodscount} mods or addons will be updated" + # Display a list of installed addons + fn_installed_mods_update_list } # Recursively list all installed mods and apply update From bd07a687ace5d655f4fe016fdfa7aab33aab246d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 01:16:34 +0100 Subject: [PATCH 473/729] Attempt for the use of cleaner core functions --- lgsm/functions/command_mods_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index beb1ac242..c0097a5b5 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -14,7 +14,7 @@ mods_core.sh fn_mods_install_init(){ # Display installed mods - fn_installed_mods_lightlist + fn_installed_mods_light_list fn_script_log "Entering mods & addons installation" echo "=================================" echo "${gamename} mods & addons installation" From 59f5d8606b5ba4cda489083eff914d5a8f014d06 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 01:19:05 +0100 Subject: [PATCH 474/729] Damn automatic double quotes --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index fa9328e26..ce0582f60 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -587,7 +587,7 @@ fn_mod_get_info_from_command(){ # What happens if mod is not found if [ "${modinfocommand}" == "0" ]; then fn_script_log_error "Couldn't find information for ${currentmod}" - fn_print_error_nl ""Couldn't find information for ${currentmod}" + fn_print_error_nl "Couldn't find information for ${currentmod}" exitcode="1" core_exit.sh fi From 532335aa1328d7896dae99f0245ff18bfdfbf7a5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 02:59:25 +0100 Subject: [PATCH 475/729] new index variables should fix issue --- lgsm/functions/mods_core.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index ce0582f60..d97b310e4 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -477,9 +477,9 @@ fn_installed_mods_detailed_list(){ fn_mods_available_commands_from_installed # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user - for ((index=0; index <= ${#installedmodslist[@]}; index++)); do - # Current mod is the "index" value of the array we're going through - currentmod="${installedmodslist[index]}" + for ((dlindex=0; dlindex <= ${#installedmodslist[@]}; dlindex++)); do + # Current mod is the "dlindex" value of the array we're going through + currentmod="${installedmodslist[dlindex]}" # Get mod info fn_mod_get_info_from_command # Display mod info to the user @@ -495,9 +495,9 @@ fn_installed_mods_medium_list(){ fn_mods_available_commands_from_installed # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user - for ((index=0; index <= ${#installedmodslist[@]}; index++)); do - # Current mod is the "index" value of the array we're going through - currentmod="${installedmodslist[index]}" + for ((mlindex=0; mlindex <= ${#installedmodslist[@]}; mlindex++)); do + # Current mod is the "mlindex" value of the array we're going through + currentmod="${installedmodslist[mlindex]}" # Get mod info fn_mod_get_info_from_command # Display mod info to the user @@ -516,9 +516,9 @@ fn_installed_mods_light_list(){ echo "Installed mods/addons" # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user - for ((index=0; index <= ${#installedmodslist[@]}; index++)); do - # Current mod is the "index" value of the array we're going through - currentmod="${installedmodslist[index]}" + for ((llindex=0; llindex <= ${#installedmodslist[@]}; llindex++)); do + # Current mod is the "llindex" value of the array we're going through + currentmod="${installedmodslist[llindex]}" # Get mod info fn_mod_get_info_from_command # Display simple mod info to the user @@ -536,9 +536,9 @@ fn_installed_mods_update_list(){ echo "Installed mods/addons" # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user - for ((index=0; index <= ${#installedmodslist[@]}; index++)); do - # Current mod is the "index" value of the array we're going through - currentmod="${installedmodslist[index]}" + for ((ulindex=0; ulindex <= ${#installedmodslist[@]}; ulindex++)); do + # Current mod is the "ulindex" value of the array we're going through + currentmod="${installedmodslist[ulindex]}" # Get mod info fn_mod_get_info_from_command # Display simple mod info to the user according to the update policy From 9f01c51788c74e8cd0df2e7b7b55632b104b7ecb Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 03:13:12 +0100 Subject: [PATCH 476/729] < rather than <= for lists --- lgsm/functions/mods_core.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index d97b310e4..60adb8d91 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -477,7 +477,7 @@ fn_installed_mods_detailed_list(){ fn_mods_available_commands_from_installed # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user - for ((dlindex=0; dlindex <= ${#installedmodslist[@]}; dlindex++)); do + for ((dlindex=0; dlindex < ${#installedmodslist[@]}; dlindex++)); do # Current mod is the "dlindex" value of the array we're going through currentmod="${installedmodslist[dlindex]}" # Get mod info @@ -495,7 +495,7 @@ fn_installed_mods_medium_list(){ fn_mods_available_commands_from_installed # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user - for ((mlindex=0; mlindex <= ${#installedmodslist[@]}; mlindex++)); do + for ((mlindex=0; mlindex < ${#installedmodslist[@]}; mlindex++)); do # Current mod is the "mlindex" value of the array we're going through currentmod="${installedmodslist[mlindex]}" # Get mod info @@ -516,7 +516,7 @@ fn_installed_mods_light_list(){ echo "Installed mods/addons" # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user - for ((llindex=0; llindex <= ${#installedmodslist[@]}; llindex++)); do + for ((llindex=0; llindex < ${#installedmodslist[@]}; llindex++)); do # Current mod is the "llindex" value of the array we're going through currentmod="${installedmodslist[llindex]}" # Get mod info From ec68e34e862a894ed4c900761cb1f79aba684c24 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 03:27:15 +0100 Subject: [PATCH 477/729] Move mods error message --- lgsm/functions/command_mods_remove.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 006367850..392f3332a 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -16,10 +16,10 @@ fn_mods_remove_init(){ fn_script_log "Entering mods & addons removal" echo "=================================" echo "${gamename} mods & addons removal" - echo "" # A simple function to exit if no mods were installed # Also returns ${installedmodscount} if mods were found fn_mods_exit_if_not_installed + echo "" # Displays installed addons to the user fn_installed_mods_medium_list echo "" From 3c966c5bc6082d1a4744b09887a347b306ce8886 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 03:27:51 +0100 Subject: [PATCH 478/729] Move mods error message --- lgsm/functions/command_mods_update.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 88ac2fb31..4dd290f0f 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -14,11 +14,11 @@ mods_core.sh fn_mods_update_init(){ fn_script_log "Entering mods & addons update" + echo "=================================" + echo "${gamename} mods & addons update" # A simple function to exit if no mods were installed # Also returns ${installedmodscount} if mods were found fn_mods_exit_if_not_installed - echo "=================================" - echo "${gamename} mods & addons update" echo "" fn_print_information_nl "${installedmodscount} mods or addons will be updated:" fn_script_log_info "${installedmodscount} mods or addons will be updated" From abb4ba32c7984d0238fecc487c2836e1b3aad34a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 03:31:10 +0100 Subject: [PATCH 479/729] < rather than <= --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 60adb8d91..cd99e74a5 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -536,7 +536,7 @@ fn_installed_mods_update_list(){ echo "Installed mods/addons" # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user - for ((ulindex=0; ulindex <= ${#installedmodslist[@]}; ulindex++)); do + for ((ulindex=0; ulindex < ${#installedmodslist[@]}; ulindex++)); do # Current mod is the "ulindex" value of the array we're going through currentmod="${installedmodslist[ulindex]}" # Get mod info From 98b0b91d843c5c34f7d7c77ab9654fa5d36eb59f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 03:31:42 +0100 Subject: [PATCH 480/729] no nl --- lgsm/functions/command_mods_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 4dd290f0f..9eb257907 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -38,7 +38,7 @@ fn_mods_update_loop(){ fn_mod_get_info_from_command # Don't update the mod if it's policy is to "NOUPDATE" if [ "${modkeepfiles}" == "NOUPDATE" ]; then - fn_print_info_nl "${modprettyname} won't be updated to preserve custom files" + fn_print_info "${modprettyname} won't be updated to preserve custom files" fn_script_log "${modprettyname} won't be updated to preserve custom files." let installedmodsline=installedmodsline+1 else From d9a1030837d0b8133d14d691b88708a06639e973 Mon Sep 17 00:00:00 2001 From: Braunson Date: Fri, 20 Jan 2017 11:03:19 -0600 Subject: [PATCH 481/729] Lowercase engine name --- MultiTheftAuto/mtaserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MultiTheftAuto/mtaserver b/MultiTheftAuto/mtaserver index 07ac899f0..c119ac910 100644 --- a/MultiTheftAuto/mtaserver +++ b/MultiTheftAuto/mtaserver @@ -61,7 +61,7 @@ githubbranch="master" ## LinuxGSM Server Details # Do not edit gamename="Multi Theft Auto" -engine="RenderWare" +engine="renderware" ## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers servicename="mta-server" From fa5bafbed3163d7e80b603d1653ba48d40d22cfb Mon Sep 17 00:00:00 2001 From: Braunson Date: Fri, 20 Jan 2017 11:11:24 -0600 Subject: [PATCH 482/729] Removed default resource question when running the install after Daniel said so --- lgsm/functions/install_mta_resources.sh | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh index c1f16393a..4b6bc0c62 100644 --- a/lgsm/functions/install_mta_resources.sh +++ b/lgsm/functions/install_mta_resources.sh @@ -31,28 +31,7 @@ fn_install_libmysqlclient16(){ fi } -fn_install_resources(){ - echo "" - echo "Installing Default Resources" - echo "=================================" - fileurl="http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip"; filedir="${tmpdir}"; filename="multitheftauto_resources.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="97a587509698f7f010bcd6e5c6dd9c31" - fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" - fn_dl_extract "${filedir}" "${filename}" "${resourcesdir}" - echo "Default Resources Installed." -} - fn_install_libmysqlclient16 -if [ -z "${autoinstall}" ]; then - echo "" - while true; do - read -e -i "y" -p "Do you want to have the default resources downloaded? (Server is inoperable without resources!) [y/N]" yn - case $yn in - [Yy]* ) fn_install_resources && break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac - done -else -fn_print_warning_nl "./${selfname} auto-install does not download the default resources. If you require them use ./${selfname} install" -fi +fn_print_header +fn_print_information_nl "Server is inoperable by default without resources, you can install default ones by running the command install-default-resources" From bdb5ea53b9ccf32a50b371e130933aa773bc2cb8 Mon Sep 17 00:00:00 2001 From: Braunson Date: Fri, 20 Jan 2017 11:12:54 -0600 Subject: [PATCH 483/729] Format change --- lgsm/functions/install_mta_resources.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh index 4b6bc0c62..f4fff4010 100644 --- a/lgsm/functions/install_mta_resources.sh +++ b/lgsm/functions/install_mta_resources.sh @@ -33,5 +33,5 @@ fn_install_libmysqlclient16(){ fn_install_libmysqlclient16 -fn_print_header fn_print_information_nl "Server is inoperable by default without resources, you can install default ones by running the command install-default-resources" +echo "" From 544d4508cdb9ad68040f310d73ecd4206d33b414 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 20 Jan 2017 17:52:54 +0000 Subject: [PATCH 484/729] command_install_resources_mta.sh --- lgsm/functions/command_install.sh | 2 +- lgsm/functions/command_install_resources_mta.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 2da3992b7..15ed1bafd 100644 --- a/lgsm/functions/command_install.sh +++ b/lgsm/functions/command_install.sh @@ -35,7 +35,7 @@ elif [ "${gamename}" == "Don't Starve Together" ]; then elif [ "${gamename}" == "TeamSpeak 3" ]; then install_ts3db.sh elif [ "${gamename}" == "Multi Theft Auto" ]; then - install_mta_resources.sh + command_install_resources_mta.sh fi fix.sh diff --git a/lgsm/functions/command_install_resources_mta.sh b/lgsm/functions/command_install_resources_mta.sh index 4748774d5..4c049115c 100644 --- a/lgsm/functions/command_install_resources_mta.sh +++ b/lgsm/functions/command_install_resources_mta.sh @@ -19,7 +19,6 @@ fn_install_resources(){ } fn_print_header - fn_print_warning_nl "Installing the default resources with existing resources may cause issues." while true; do read -e -i "y" -p "Do you want to install MTA default resources? [Y/n]" yn From ea018494b0758d94bcbc51bdba6c6d17fa3f154a Mon Sep 17 00:00:00 2001 From: Braunson Date: Fri, 20 Jan 2017 11:55:08 -0600 Subject: [PATCH 485/729] fix_mta for libmysql --- lgsm/functions/core_functions.sh | 10 +++++----- lgsm/functions/fix.sh | 2 ++ lgsm/functions/fix_mta.sh | 25 +++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 lgsm/functions/fix_mta.sh diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 8c92f3198..df8b4980c 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -374,6 +374,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +fix_mta.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + # Info info_config.sh(){ @@ -576,11 +581,6 @@ functionfile="${FUNCNAME}" fn_fetch_function } -install_mta_resources.sh(){ -functionfile="${FUNCNAME}" -fn_fetch_function -} - # Calls the global Ctrl-C trap core_trap.sh diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index 85a65a814..327fcccf9 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -47,6 +47,8 @@ if [ "${function_selfname}" != "command_install.sh" ]; then fix_ins.sh elif [ "${gamename}" == "Rust" ]; then fix_rust.sh + elif [ "${gamename}" == "Multi Theft Auto" ]; then + fix_mta.sh fi fi diff --git a/lgsm/functions/fix_mta.sh b/lgsm/functions/fix_mta.sh new file mode 100644 index 000000000..72d3228bd --- /dev/null +++ b/lgsm/functions/fix_mta.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# LGSM fix_mta.sh function +# Author: Daniel Gibbs +# Contributor: ChaosMTA +# Website: https://gameservermanagers.com +# Description: Installs the libmysqlclient for database functions on the server +local commandname="FIX" +local commandaction="Fix" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +if [ ! -f /usr/lib/libmysqlclient.so.16 ]; then + fixname="libmysqlclient16 install" + fn_fix_msg_start + fn_print_warn_nl "libmysqlclient16 not installed. Installing.." + sleep 1 + fileurl="https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16"; filedir="${lgsmdir}/lib"; filename="libmysqlclient.so.16"; executecmd="executecmd" run="norun"; force="noforce"; md5="6c188e0f8fb5d7a29f4bc413b9fed6c2" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + fn_fix_msg_end +fi +} + +fixname="libmysqlclient16" +fn_fix_msg_start +export LD_LIBRARY_PATH=:"${libdir}" +fn_fix_msg_end From f9a6d872ccff3aed94f5d24af147ff0aae838d3a Mon Sep 17 00:00:00 2001 From: Braunson Date: Fri, 20 Jan 2017 11:56:36 -0600 Subject: [PATCH 486/729] Typo --- lgsm/functions/fix_mta.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/fix_mta.sh b/lgsm/functions/fix_mta.sh index 72d3228bd..e63972e50 100644 --- a/lgsm/functions/fix_mta.sh +++ b/lgsm/functions/fix_mta.sh @@ -17,7 +17,6 @@ if [ ! -f /usr/lib/libmysqlclient.so.16 ]; then fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_fix_msg_end fi -} fixname="libmysqlclient16" fn_fix_msg_start From 8ad76124ffcabf2c32c6c57a0302e15f917c2d32 Mon Sep 17 00:00:00 2001 From: Braunson Date: Fri, 20 Jan 2017 11:57:20 -0600 Subject: [PATCH 487/729] No MD5 for default resources --- lgsm/functions/command_install_resources_mta.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_install_resources_mta.sh b/lgsm/functions/command_install_resources_mta.sh index 4c049115c..678e412ad 100644 --- a/lgsm/functions/command_install_resources_mta.sh +++ b/lgsm/functions/command_install_resources_mta.sh @@ -12,13 +12,14 @@ fn_install_resources(){ echo "" echo "Installing Default Resources" echo "=================================" - fileurl="http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip"; filedir="${tmpdir}"; filename="multitheftauto_resources.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="97a587509698f7f010bcd6e5c6dd9c31" + fileurl="http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip"; filedir="${tmpdir}"; filename="multitheftauto_resources.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="nomd5" fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${resourcesdir}" echo "Default Resources Installed." } fn_print_header + fn_print_warning_nl "Installing the default resources with existing resources may cause issues." while true; do read -e -i "y" -p "Do you want to install MTA default resources? [Y/n]" yn @@ -27,4 +28,4 @@ while true; do [Nn]* ) break;; * ) echo "Please answer yes or no.";; esac -done \ No newline at end of file +done From b4d3bb549e36198d332e4e5decd6bc30231791e0 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 20 Jan 2017 19:00:02 +0100 Subject: [PATCH 488/729] Fixed error spacing with a ! |ERROR!] is better than [ERROR ], as per @ChaosMTA and @Cedarlug mentioned. --- lgsm/functions/core_messages.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 540729af7..66a1d6d80 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -157,17 +157,17 @@ fn_print_fail_nl(){ # [ ERROR ] fn_print_error(){ if [ -n "${commandaction}" ]; then - echo -en "${creeol}[${red}ERROR ${default}] ${commandaction} ${servicename}: $@" + echo -en "${creeol}[${red}ERROR!${default}] ${commandaction} ${servicename}: $@" else - echo -en "${creeol}[${red}ERROR ${default}] $@" + echo -en "${creeol}[${red}ERROR!${default}] $@" fi } fn_print_error_nl(){ if [ -n "${commandaction}" ]; then - echo -en "${creeol}[${red}ERROR ${default}] ${commandaction} ${servicename}: $@" + echo -en "${creeol}[${red}ERROR!${default}] ${commandaction} ${servicename}: $@" else - echo -en "${creeol}[${red}ERROR ${default}] $@" + echo -en "${creeol}[${red}ERROR!${default}] $@" fi sleep 0.5 echo -en "\n" From a84ba451aa2f744de6b32f63769939f1cefec5c1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 20 Jan 2017 21:01:46 +0000 Subject: [PATCH 489/729] Changes to the UI more to come soon --- lgsm/functions/command_mods_install.sh | 18 ++++++------- lgsm/functions/command_mods_remove.sh | 35 ++++++++++++++------------ lgsm/functions/mods_core.sh | 24 +++++++++--------- 3 files changed, 39 insertions(+), 38 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index c0097a5b5..ee7d5bdbc 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -6,35 +6,33 @@ # Description: List and installs available mods along with mods_list.sh and mods_core.sh. local commandname="MODS" -local commandaction="Mod Installation" +local commandaction="addons/mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh mods_core.sh fn_mods_install_init(){ + fn_print_header # Display installed mods fn_installed_mods_light_list - fn_script_log "Entering mods & addons installation" - echo "=================================" - echo "${gamename} mods & addons installation" echo "" + echo "Available addons/mods" + echo "=================================" + # Display available mods from mods_list.sh fn_mods_show_available echo "" # Keep prompting as long as the user input doesn't correspond to an available mod while [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; do - echo -en "Enter a \e[36mmod\e[0m to install (or exit to abort): " + echo -en "Enter an ${cyan}addon/mod${default} to ${green}install${default} (or exit to abort): " read -r usermodselect # Exit if user says exit or abort if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then - fn_script_log "User aborted." - echo "Aborted." core_exit.sh # Supplementary output upon invalid user input elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then - fn_print_error2_nl "${usermodselect} is not a valid mod." - echo " * Enter a valid mod or input exit to abort." + fn_print_error2_nl "${usermodselect} is not a valid addon/mod." fi done # Gives a pretty name to the user and get all mod info @@ -77,7 +75,7 @@ fn_mod_installation(){ fn_print_ok_nl "${modprettyname} installed" fn_script_log "${modprettyname} installed." else - fn_print_fail "No mod was selected" + fn_print_fail "No addon/mod was selected" exitcode="1" core_exit.sh fi diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 392f3332a..d49b81441 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -6,16 +6,16 @@ # Description: Uninstall mods along with mods_list.sh and mods_core.sh. local commandname="MODS" -local commandaction="Mod Remove" +local commandaction="addons/mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh mods_core.sh fn_mods_remove_init(){ - fn_script_log "Entering mods & addons removal" + fn_print_header + echo "Remove addons/mods" echo "=================================" - echo "${gamename} mods & addons removal" # A simple function to exit if no mods were installed # Also returns ${installedmodscount} if mods were found fn_mods_exit_if_not_installed @@ -25,19 +25,26 @@ fn_mods_remove_init(){ echo "" # Keep prompting as long as the user input doesn't correspond to an available mod while [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; do - echo -en "Enter a \e[36mmod\e[0m to \e[31mremove\e[0m (or exit to abort): " + echo -en "Enter a ${cyan}mod${default} to ${red}remove${default} (or exit to abort): " read -r usermodselect # Exit if user says exit or abort if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then - fn_script_log "User aborted." - echo "Aborted." - core_exit.sh - # Supplementary output upon invalid user input - elif [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; then - fn_print_error2_nl "${usermodselect} is not a valid mod." - echo " * Enter a valid mod or input exit to abort." + core_exit.sh + # Supplementary output upon invalid user input + elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then + fn_print_error2_nl "${usermodselect} is not a valid addon/mod." fi done + fn_print_warning_nl "You are about to remove ${usermodselect}." + echo " * Any custom files/configuration will be removed." + while true; do + read -e -i "y" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; exit;; + * ) echo "Please answer yes or no.";; + esac + done # Gives a pretty name to the user and get all mod info currentmod="${usermodselect}" fn_mod_get_info_from_command @@ -45,17 +52,13 @@ fn_mods_remove_init(){ fn_check_files_list fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" fn_print_dots "Removing ${modsfilelistsize} files from ${modprettyname}" - echo "" - echo " * Any mod's custom file will be deleted." - echo " * Press ctrl + c to abort." - sleep 4 } # Uninstall the mod fn_mod_remove_process(){ # Go through every file and remove it modfileline="1" - while [ $modfileline -le $modsfilelistsize ]; do + while [ "${modfileline}" -le "${modsfilelistsize}" ]; do # Current line defines current file to remove currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.list")" # If file or directory exists, then remove it diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index cd99e74a5..be815c3b3 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -6,7 +6,7 @@ # Description: Core functions for mods list/install/update/remove local commandname="MODS" -local commandaction="Core functions for mods" +local commandaction="addons/mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" ## Useful variables @@ -416,8 +416,8 @@ fn_mods_show_available(){ displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" # Output mods to the user - echo -e "\e[1m${displayedmodname}\e[0m - ${displayedmoddescription} - ${displayedmodsite}" - echo -e " * \e[36m${displayedmodcommand}\e[0m" + echo -e "\e[1m${displayedmodname}${default} - ${displayedmoddescription} - ${displayedmodsite}" + echo -e " * ${cyan}${displayedmodcommand}${default}" # Increment index from the amount of values we just displayed let "compatiblemodslistindex+=4" done @@ -483,8 +483,8 @@ fn_installed_mods_detailed_list(){ # Get mod info fn_mod_get_info_from_command # Display mod info to the user - echo -e "\e[1m${modprettyname}\e[0m - ${moddescription} - ${modsite}" - echo -e " * \e[36m${modcommand}\e[0m" + echo -e "\e[1m${modprettyname}${default} - ${moddescription} - ${modsite}" + echo -e " * ${cyan}${modcommand}${default}" done } @@ -501,7 +501,7 @@ fn_installed_mods_medium_list(){ # Get mod info fn_mod_get_info_from_command # Display mod info to the user - echo -e "\e[36m${modcommand}\e[0m - \e[1m${modprettyname}\e[0m - ${moddescription}" + echo -e "${cyan}${modcommand}${default} - \e[1m${modprettyname}${default} - ${moddescription}" done } @@ -512,8 +512,8 @@ fn_installed_mods_light_list(){ fn_check_installed_mods fn_mods_available_commands_from_installed if [ $installedmodscount -gt 0 ]; then + echo "Installed addons/mods" echo "=================================" - echo "Installed mods/addons" # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user for ((llindex=0; llindex < ${#installedmodslist[@]}; llindex++)); do @@ -522,7 +522,7 @@ fn_installed_mods_light_list(){ # Get mod info fn_mod_get_info_from_command # Display simple mod info to the user - echo -e " * \e[1m${modprettyname}\e[0m" + echo -e " * \e[1m${green}${modprettyname}${default}${default}" done fi } @@ -533,7 +533,7 @@ fn_installed_mods_update_list(){ fn_check_installed_mods fn_mods_available_commands_from_installed echo "=================================" - echo "Installed mods/addons" + echo "Installed addons/mods" # Were now based on ${installedmodslist} array's values # We're gonna go through all available commands, get details and display them to the user for ((ulindex=0; ulindex < ${#installedmodslist[@]}; ulindex++)); do @@ -550,12 +550,12 @@ fn_installed_mods_update_list(){ core_exit.sh # If the mod won't get updated elif [ "${modkeepfiles}" == "NOUPDATE" ]; then - echo -e " * \e[31m${modprettyname}\e[0m (won't be updated)" + echo -e " * \e[31m${modprettyname}${default} (won't be updated)" # If the mode is just overwritten elif [ "${modkeepfiles}" == "OVERWRITE" ]; then - echo -e " * \e[1m${modprettyname}\e[0m (overwrite)" + echo -e " * \e[1m${modprettyname}${default} (overwrite)" else - echo -e " * \e[33m${modprettyname}\e[0m (common custom files remain untouched)" + echo -e " * \e[33m${modprettyname}${default} (common custom files remain untouched)" fi done } From 63c697fe33f6c338d24893de5871860ae8eab56b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 20 Jan 2017 21:44:08 +0000 Subject: [PATCH 490/729] spaces --- lgsm/functions/command_mods_install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index ee7d5bdbc..dec97c7a3 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -16,10 +16,9 @@ fn_mods_install_init(){ fn_print_header # Display installed mods fn_installed_mods_light_list - echo "" + echo "Available addons/mods" echo "=================================" - # Display available mods from mods_list.sh fn_mods_show_available echo "" From 6e407e74874d5b12c29a6f491d7a505cfa35a612 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 20 Jan 2017 21:45:15 +0000 Subject: [PATCH 491/729] minor ui changes --- lgsm/functions/mods_core.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index be815c3b3..cc67fd4f3 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -16,14 +16,14 @@ extractdir="${modstmpdir}/extracted" modsdatadir="${lgsmdir}/data/mods" modslockfile="installed-mods-listing" modslockfilefullpath="${modsdatadir}/${modslockfile}" -# Database initialization +# Database initialisation mods_list.sh -# Sets some gsm requirements -fn_gsm_requirements(){ +# Sets some lgsm requirements +fn_lgsm_requirements(){ # If tmpdir variable doesn't exist, LGSM is too old if [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then - fn_print_fail "Your LGSM version is too old." + fn_print_fail "Your LinuxGSM version is too old." echo " * Please do a full update, including ${selfname} script." core_exit.sh fi @@ -145,11 +145,11 @@ fn_mod_fileslist(){ fn_script_log "Building ${modcommand}-files.list" sleep 0.5 # ${modsdatadir}/${modcommand}-files.list - find "${extractdir}" -mindepth 1 -printf '%P\n' > ${modsdatadir}/${modcommand}-files.list + find "${extractdir}" -mindepth 1 -printf '%P\n' > "${modsdatadir}"/${modcommand}-files.list fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}" # Adding removed files if needed if [ -f "${modsdatadir}/.removedfiles.tmp" ]; then - cat "${modsdatadir}/.removedfiles.tmp" >> ${modsdatadir}/${modcommand}-files.list + cat "${modsdatadir}/.removedfiles.tmp" >> "${modsdatadir}"/${modcommand}-files.list fi fn_print_ok "Building ${modcommand}-files.list" sleep 0.5 @@ -511,7 +511,7 @@ fn_installed_mods_medium_list(){ fn_installed_mods_light_list(){ fn_check_installed_mods fn_mods_available_commands_from_installed - if [ $installedmodscount -gt 0 ]; then + if [ "${installedmodscount}" -gt 0 ]; then echo "Installed addons/mods" echo "=================================" # Were now based on ${installedmodslist} array's values @@ -522,8 +522,9 @@ fn_installed_mods_light_list(){ # Get mod info fn_mod_get_info_from_command # Display simple mod info to the user - echo -e " * \e[1m${green}${modprettyname}${default}${default}" + echo -e " * \e[1m${green}${modcommand}${default}${default}" done + echo "" fi } @@ -593,7 +594,7 @@ fn_mod_get_info_from_command(){ fi } -fn_gsm_requirements +fn_lgsm_requirements fn_mods_scrape_urls fn_mods_info fn_mods_available From 27b88e3baf7f3c69304a590ef956db3f4b0f3bcc Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 21 Jan 2017 01:04:13 +0000 Subject: [PATCH 492/729] "" --- lgsm/functions/command_dev_detect_ldd.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_dev_detect_ldd.sh b/lgsm/functions/command_dev_detect_ldd.sh index 07ad3f581..16f1f9473 100644 --- a/lgsm/functions/command_dev_detect_ldd.sh +++ b/lgsm/functions/command_dev_detect_ldd.sh @@ -22,8 +22,8 @@ elif [ -f "${filesdir}" ]; then fi echo "" -files=$(find ${filesdir} | wc -l) -find ${filesdir} -type f -print0 | +files=$(find "${filesdir}" | wc -l) +find "${filesdir}" -type f -print0 | while IFS= read -r -d $'\0' line; do #ldd -v $line 2>/dev/null|grep "=>" >>"${tmpdir}/detect_ldd.tmp" if [ -n "$(ldd $line 2>/dev/null |grep -v "not a dynamic executable")" ]; then From 4d692f59e2888661cf44f59fe3e8ff2dbb8d1747 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 21 Jan 2017 01:07:19 +0000 Subject: [PATCH 493/729] Various UI and code changes. --- lgsm/functions/command_mods_install.sh | 67 +++++------- lgsm/functions/command_mods_remove.sh | 6 +- lgsm/functions/mods_core.sh | 144 ++++++++++++++----------- 3 files changed, 114 insertions(+), 103 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index dec97c7a3..5dca19bf6 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -34,50 +34,41 @@ fn_mods_install_init(){ fn_print_error2_nl "${usermodselect} is not a valid addon/mod." fi done + echo "" + echo "Installing ${modprettyname}" + echo "=================================" + fn_script_log "Installing ${modprettyname}." # Gives a pretty name to the user and get all mod info currentmod="${usermodselect}" - fn_mod_get_info_from_command - fn_print_dots_nl "Installing ${modprettyname}" - sleep 1 - fn_script_log "Installing ${modprettyname}." } # Run all required operation fn_mod_installation(){ - # If a mod was selected - if [ -n "${currentmod}" ]; then - # Get mod info - fn_mod_get_info_from_command - # Check if mod is already installed - fn_mod_already_installed - # Check and create required files - fn_mods_files - # Clear lgsm/tmp/mods dir if exists then recreate it - fn_clear_tmp_mods - fn_mods_tmpdir - # Download mod - fn_mod_dl - # Extract the mod - fn_mod_extract - # Convert to lowercase if needed - fn_mod_lowercase - # Build a file list - fn_mod_fileslist - # Copying to destination - fn_mod_copy_destination - # Ending with installation routines - fn_mod_add_list - # Post install fixes - fn_postinstall_tasks - # Cleaning - fn_clear_tmp_mods - fn_print_ok_nl "${modprettyname} installed" - fn_script_log "${modprettyname} installed." - else - fn_print_fail "No addon/mod was selected" - exitcode="1" - core_exit.sh - fi + # Get mod info + fn_mod_get_info_from_command + # Check if mod is already installed + fn_mod_already_installed + # Check and create required files + fn_mods_files + # Clear lgsm/tmp/mods dir if exists then recreate it + fn_clear_tmp_mods + fn_mods_tmpdir + # Download & extract mod + fn_install_mod_dl_extract + # Convert to lowercase if needed + fn_mod_lowercase + # Build a file list + fn_mod_fileslist + # Copying to destination + fn_mod_copy_destination + # Ending with installation routines + fn_mod_add_list + # Post install fixes + fn_postinstall_tasks + # Cleaning + fn_clear_tmp_mods + echo "${modprettyname} installed" + fn_script_log "${modprettyname} installed." } fn_mods_install_init diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index d49b81441..464b2caff 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -60,7 +60,7 @@ fn_mod_remove_process(){ modfileline="1" while [ "${modfileline}" -le "${modsfilelistsize}" ]; do # Current line defines current file to remove - currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.list")" + currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.txt")" # If file or directory exists, then remove it if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" @@ -69,8 +69,8 @@ fn_mod_remove_process(){ let modfileline=modfileline+1 done # Remove file list - fn_script_log "Removing: ${modsdatadir}/${modcommand}-files.list" - rm -rf "${modsdatadir}/${modcommand}-files.list" + fn_script_log "Removing: ${modsdatadir}/${modcommand}-files.txt" + rm -rf "${modsdatadir}/${modcommand}-files.txt" # Remove from installed mods list fn_script_log "Removing: ${modcommand} from ${modslockfilefullpath}" sed -i "/^${modcommand}$/d" "${modslockfilefullpath}" diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index cc67fd4f3..47fa1ecf8 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -11,9 +11,10 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" ## Useful variables # Files and Directories -modstmpdir="${tmpdir}/mods" -extractdir="${modstmpdir}/extracted" -modsdatadir="${lgsmdir}/data/mods" +modsdir="${lgsmdir}/mods" +modstmpdir="${modsdir}/tmp" +extractdir="${modstmpdir}/extract" +modsdatadir="${modsdir}" modslockfile="installed-mods-listing" modslockfilefullpath="${modsdatadir}/${modslockfile}" # Database initialisation @@ -34,13 +35,11 @@ fn_lgsm_requirements(){ fn_mods_files(){ if [ ! -d "${modinstalldir}" ]; then fn_script_log_info "Creating mods directory: ${modinstalldir}" - fn_print_dots "Creating mods directory" - sleep 0.5 - mkdir -p "${modinstalldir}" - fn_print_ok "Created mods directory" + echo "Creating mods directory" sleep 0.5 + mkdir -pv "${modinstalldir}" fi - # Create lgsm/data/mods directory + # Create data/mods directory if [ ! -d "${modsdatadir}" ]; then mkdir -p "${modsdatadir}" fn_script_log "Created ${modsdatadir}" @@ -52,11 +51,11 @@ fn_mods_files(){ fi } -# Clear mod download directory so that there is only one file in it since we don't the file name and extention +# Clear mod download directory so that there is only one file in it since we don't know the file name and extention fn_clear_tmp_mods(){ if [ -d "${modstmpdir}" ]; then rm -r "${modstmpdir}" - fn_script_log "Clearing temp mod download directory: ${modstmpdir}" + fn_script_log "Clearing mod download directory: ${modstmpdir}" fi # Clear temp file list as well if [ -f "${modsdatadir}/.removedfiles.tmp" ]; then @@ -68,44 +67,49 @@ fn_clear_tmp_mods(){ fn_mods_tmpdir(){ if [ ! -d "${modstmpdir}" ]; then mkdir -p "${modstmpdir}" - fn_script_log "Creating temp mod download directory: ${modstmpdir}" + fn_script_log "Creating mod download directory: ${modstmpdir}" fi } -# Fetches mod URL -fn_mod_dl(){ - # fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" - fileurl="${modurl}" - filedir="${modstmpdir}" - filename="${modfilename}" - fn_script_log "Downloading mods to ${modstmpdir}" - fn_fetch_file "${fileurl}" "${filedir}" "${filename}" +fn_install_mod_dl_extract(){ + fn_fetch_file "${modurl}" "${modstmpdir}" "${modfilename}" # Check if variable is valid checking if file has been downloaded and exists if [ ! -f "${modstmpdir}/${modfilename}" ]; then - fn_print_fail "An issue occurred upon downloading ${modprettyname}" + fn_print_failure "An issue occurred upon downloading ${modprettyname}" core_exit.sh fi -} - -# Extract the mod -fn_mod_extract(){ - # fn_dl_extract "${filedir}" "${filename}" "${extractdir}" - filename="${modfilename}" if [ ! -d "${extractdir}" ]; then mkdir -p "${extractdir}" fi - fn_script_log "Extracting ${modprettyname} to ${extractdir}" - fn_dl_extract "${filedir}" "${filename}" "${extractdir}" + fn_dl_extract "${modstmpdir}" "${filename}" "${extractdir}" } # Convert mod files to lowercase if needed fn_mod_lowercase(){ if [ "${modlowercase}" == "LowercaseOn" ]; then - fn_print_dots "Converting ${modprettyname} files to lowercase" + + echo -ne "converting ${modprettyname} files to lowercase..." sleep 0.5 fn_script_log "Converting ${modprettyname} files to lowercase" - find "${extractdir}" -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \; - fn_print_ok "Converting ${modprettyname} files to lowercase" + files=$(find "${extractdir}" -depth | wc -l) + echo -en "\r" + while read SRC; do + DST=`dirname "${SRC}"`/`basename "${SRC}" | tr '[A-Z]' '[a-z]'` + if [ "${SRC}" != "${DST}" ] + then + [ ! -e "${DST}" ] && mv -T "${SRC}" "${DST}" || echo "${SRC} was not renamed" + ((renamedwc++)) + fi + echo -ne "${renamedwc} / ${totalfileswc} / $files converting ${modprettyname} files to lowercase..." $'\r' + ((totalfileswc++)) + done < <(find "${extractdir}" -depth) + echo -ne "${renamedwc} / ${totalfileswc} / $files converting ${modprettyname} files to lowercase..." + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + else + fn_print_ok_eol_nl + fi sleep 0.5 fi } @@ -139,30 +143,39 @@ fn_remove_cfg_files(){ fi } -# Create ${modcommand}-files.list containing the full extracted file/directory list +# Create ${modcommand}-files.txt containing the full extracted file/directory list fn_mod_fileslist(){ - fn_print_dots "Building ${modcommand}-files.list" - fn_script_log "Building ${modcommand}-files.list" + echo -ne "building ${modcommand}-files.txt..." + fn_script_log "Building ${modcommand}-files.txt" sleep 0.5 - # ${modsdatadir}/${modcommand}-files.list - find "${extractdir}" -mindepth 1 -printf '%P\n' > "${modsdatadir}"/${modcommand}-files.list - fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.list}" + # ${modsdatadir}/${modcommand}-files.txt + find "${extractdir}" -mindepth 1 -printf '%P\n' > "${modsdatadir}"/${modcommand}-files.txt + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + else + fn_print_ok_eol_nl + fi + fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.txt}" # Adding removed files if needed if [ -f "${modsdatadir}/.removedfiles.tmp" ]; then - cat "${modsdatadir}/.removedfiles.tmp" >> "${modsdatadir}"/${modcommand}-files.list + cat "${modsdatadir}/.removedfiles.tmp" >> "${modsdatadir}"/${modcommand}-files.txt fi - fn_print_ok "Building ${modcommand}-files.list" sleep 0.5 } # Copy the mod to the destination ${modinstalldir} fn_mod_copy_destination(){ - fn_print_dots "Copying ${modprettyname} to ${modinstalldir}" + echo -ne "copying ${modprettyname} to ${modinstalldir}..." fn_script_log "Copying ${modprettyname} to ${modinstalldir}" sleep 0.5 cp -Rf "${extractdir}/." "${modinstalldir}/" - fn_print_ok "Copying ${modprettyname} to ${modinstalldir}" - sleep 0.5 + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + else + fn_print_ok_eol_nl + fi } # Check if the mod is already installed and warn the user @@ -196,21 +209,21 @@ fn_mod_add_list(){ fn_check_files_list(){ # File list must exist and be valid before any operation on it - if [ -f "${modsdatadir}/${modcommand}-files.list" ]; then + if [ -f "${modsdatadir}/${modcommand}-files.txt" ]; then # How many lines is the file list - modsfilelistsize="$(cat "${modsdatadir}/${modcommand}-files.list" | wc -l)" + modsfilelistsize="$(cat "${modsdatadir}/${modcommand}-files.txt" | wc -l)" # If file list is empty if [ $modsfilelistsize -eq 0 ]; then - fn_print_error_nl "${modcommand}-files.list is empty" + fn_print_error_nl "${modcommand}-files.txt is empty" echo "Exiting." - fn_scrip_log_fatal "${modcommand}-files.list is empty" + fn_scrip_log_fatal "${modcommand}-files.txt is empty" exitcode="2" core_exit.sh fi else - fn_print_error_nl "${modsdatadir}/${modcommand}-files.list don't exist" + fn_print_error_nl "${modsdatadir}/${modcommand}-files.txt don't exist" echo "Exiting." - fn_scrip_log_fatal "${modsdatadir}/${modcommand}-files.list don't exist" + fn_scrip_log_fatal "${modsdatadir}/${modcommand}-files.txt don't exist" exitcode="2" core_exit.sh fi @@ -218,13 +231,13 @@ fn_check_files_list(){ # Apply some post-install fixes to make sure everything will be fine fn_postinstall_tasks(){ - # Prevent sensitive directories from being erased upon uninstall by removing them them from: ${modsdatadir}/${modcommand}-files.list + # Prevent sensitive directories from being erased upon uninstall by removing them from: ${modsdatadir}/${modcommand}-files.txt # Check file validity fn_check_files_list # Output to the user - fn_print_dots "Rearranging ${modcommand}-files.list" + echo -ne "tidy up ${modcommand}-files.txt..." sleep 0.5 - fn_script_log_info "Rearranging ${modcommand}-files.list" + fn_script_log_info "Rearranging ${modcommand}-files.txt" # What lines/files to remove from file list (end var with a ";" separator) removefromlist="cfg;addons;" # Loop through files to remove from file list, @@ -236,18 +249,25 @@ fn_postinstall_tasks(){ # Put current file into test variable removefilevar="$( echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" # Then delete matching line(s)! - sed -i "/^${removefilevar}$/d" "${modsdatadir}/${modcommand}-files.list" - done - + sed -i "/^${removefilevar}$/d" "${modsdatadir}/${modcommand}-files.txt" + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + break + fi + done + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + else + fn_print_ok_eol_nl + fi + # Sourcemod fix # Remove metamod from sourcemod fileslist if [ "${modcommand}" == "sourcemod" ]; then - # Remove addons/metamod & addons/metamod/sourcemod.vdf from ${modcommand}-files.list - sed -i "/^addons\/metamod$/d" "${modsdatadir}/${modcommand}-files.list" - sed -i "/^addons\/metamod\/sourcemod.vdf$/d" "${modsdatadir}/${modcommand}-files.list" + # Remove addons/metamod & addons/metamod/sourcemod.vdf from ${modcommand}-files.txt + sed -i "/^addons\/metamod$/d" "${modsdatadir}/${modcommand}-files.txt" + sed -i "/^addons\/metamod\/sourcemod.vdf$/d" "${modsdatadir}/${modcommand}-files.txt" fi - fn_print_ok "Rearranging ${modcommand}-files.list" - sleep 0.5 } # Apply some post-uninstall fixes to make sure everything will be fine @@ -444,7 +464,7 @@ fn_mods_exit_if_not_installed(){ # Also returns ${installedmodscount} if mods were found fn_check_installed_mods # If no mods lockfile is found or if it is empty - if [ ! -f "${modslockfilefullpath}" ]||[ -z "${installedmodscount}" ]||[ $installedmodscount -le 0 ]; then + if [ ! -f "${modslockfilefullpath}" ]||[ -z "${installedmodscount}" ]||[ ${installedmodscount} -le 0 ]; then fn_print_information_nl "No installed mods or addons were found" echo " * Install mods using LGSM first with: ./${selfname} mods-install" fn_script_log_info "No installed mods or addons were found." @@ -459,7 +479,7 @@ fn_mods_available_commands_from_installed(){ installedmodsline="1" installedmodslist=() # Loop through every line of the installed mods list ${modslockfilefullpath} - while [ $installedmodsline -le $installedmodscount ]; do + while [ ${installedmodsline} -le ${installedmodscount} ]; do currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" # Get mod info to make sure mod exists fn_mod_get_info_from_command @@ -556,7 +576,7 @@ fn_installed_mods_update_list(){ elif [ "${modkeepfiles}" == "OVERWRITE" ]; then echo -e " * \e[1m${modprettyname}${default} (overwrite)" else - echo -e " * \e[33m${modprettyname}${default} (common custom files remain untouched)" + echo -e " * ${yellow}${modprettyname}${default} (common custom files remain untouched)" fi done } From 1985955f3a2d9a0147877afe661e4c1392488a15 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 21 Jan 2017 22:39:39 +0000 Subject: [PATCH 494/729] Loads of UI improvements and fixes still lots of testing to do --- lgsm/functions/command_mods_install.sh | 4 +- lgsm/functions/command_mods_remove.sh | 54 +++++++++++++++++++---- lgsm/functions/mods_core.sh | 60 ++++++++++++++------------ lgsm/functions/mods_list.sh | 6 +-- 4 files changed, 82 insertions(+), 42 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 5dca19bf6..0169589c7 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -29,14 +29,14 @@ fn_mods_install_init(){ # Exit if user says exit or abort if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then core_exit.sh - # Supplementary output upon invalid user input + # Supplementary output upon invalid user input elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then fn_print_error2_nl "${usermodselect} is not a valid addon/mod." fi done echo "" echo "Installing ${modprettyname}" - echo "=================================" + echo "=================================" fn_script_log "Installing ${modprettyname}." # Gives a pretty name to the user and get all mod info currentmod="${usermodselect}" diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 464b2caff..060898aa8 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -19,7 +19,6 @@ fn_mods_remove_init(){ # A simple function to exit if no mods were installed # Also returns ${installedmodscount} if mods were found fn_mods_exit_if_not_installed - echo "" # Displays installed addons to the user fn_installed_mods_medium_list echo "" @@ -30,12 +29,12 @@ fn_mods_remove_init(){ # Exit if user says exit or abort if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then core_exit.sh - # Supplementary output upon invalid user input + # Supplementary output upon invalid user input elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then fn_print_error2_nl "${usermodselect} is not a valid addon/mod." fi done - fn_print_warning_nl "You are about to remove ${usermodselect}." + fn_print_warning_nl "You are about to remove ${cyan}${usermodselect}${default}." echo " * Any custom files/configuration will be removed." while true; do read -e -i "y" -p "Continue? [Y/n]" yn @@ -44,40 +43,77 @@ fn_mods_remove_init(){ [Nn]* ) echo Exiting; exit;; * ) echo "Please answer yes or no.";; esac - done + done # Gives a pretty name to the user and get all mod info currentmod="${usermodselect}" fn_mod_get_info_from_command # Check file list in order to make sure we're able to remove the mod (returns ${modsfilelistsize}) fn_check_files_list - fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" - fn_print_dots "Removing ${modsfilelistsize} files from ${modprettyname}" + } # Uninstall the mod fn_mod_remove_process(){ + fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" + echo -e "removing ${modprettyname}" + echo -e "* ${modsfilelistsize} files to be removed" + echo -e "* location: ${modinstalldir}" + sleep 1 # Go through every file and remove it modfileline="1" + tput sc while [ "${modfileline}" -le "${modsfilelistsize}" ]; do # Current line defines current file to remove currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.txt")" # If file or directory exists, then remove it + fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then - fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" rm -rf "${modinstalldir}/${currentfileremove}" + local exitcode=$? fi + tput rc; tput el + printf "removing ${modprettyname} ${totalfileswc} / ${modsfilelistsize} : ${currentfileremove}..." + + ((totalfileswc++)) let modfileline=modfileline+1 done + tput rc; tput ed; + echo -ne "removing ${modprettyname} ${totalfileswc} / ${modsfilelistsize}..." + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + core_exit.sh + else + fn_print_ok_eol_nl + fi + sleep 0.5 # Remove file list + echo -en "removing ${modcommand}-files.txt..." + sleep 0.5 fn_script_log "Removing: ${modsdatadir}/${modcommand}-files.txt" rm -rf "${modsdatadir}/${modcommand}-files.txt" + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + core_exit.sh + else + fn_print_ok_eol_nl + fi # Remove from installed mods list + echo -en "removing ${modcommand} from ${modslockfile}..." + sleep 0.5 fn_script_log "Removing: ${modcommand} from ${modslockfilefullpath}" sed -i "/^${modcommand}$/d" "${modslockfilefullpath}" # Post install tasks to solve potential issues + local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + core_exit.sh + else + fn_print_ok_eol_nl + fi fn_postuninstall_tasks - fn_print_ok_nl "Removed ${modprettyname}" - fn_script_log "Removed ${modprettyname}" + echo "${modprettyname} removed" + fn_script_log "${modprettyname} removed" } fn_mods_remove_init diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 47fa1ecf8..aead8e714 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -93,21 +93,23 @@ fn_mod_lowercase(){ fn_script_log "Converting ${modprettyname} files to lowercase" files=$(find "${extractdir}" -depth | wc -l) echo -en "\r" - while read SRC; do - DST=`dirname "${SRC}"`/`basename "${SRC}" | tr '[A-Z]' '[a-z]'` - if [ "${SRC}" != "${DST}" ] - then - [ ! -e "${DST}" ] && mv -T "${SRC}" "${DST}" || echo "${SRC} was not renamed" - ((renamedwc++)) - fi + while read src; do + dst=`dirname "${src}"`/`basename "${src}" | tr '[A-Z]' '[a-z]'` + if [ "${src}" != "${dst}" ] + then + [ ! -e "${dst}" ] && mv -T "${src}" "${dst}" || echo "${src} was not renamed" + local exitcode=$? + ((renamedwc++)) + fi echo -ne "${renamedwc} / ${totalfileswc} / $files converting ${modprettyname} files to lowercase..." $'\r' ((totalfileswc++)) done < <(find "${extractdir}" -depth) echo -ne "${renamedwc} / ${totalfileswc} / $files converting ${modprettyname} files to lowercase..." - local exitcode=$? + if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl - else + core_exit.sh + else fn_print_ok_eol_nl fi sleep 0.5 @@ -153,7 +155,7 @@ fn_mod_fileslist(){ local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl - else + else fn_print_ok_eol_nl fi fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.txt}" @@ -173,7 +175,7 @@ fn_mod_copy_destination(){ local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl - else + else fn_print_ok_eol_nl fi } @@ -213,19 +215,16 @@ fn_check_files_list(){ # How many lines is the file list modsfilelistsize="$(cat "${modsdatadir}/${modcommand}-files.txt" | wc -l)" # If file list is empty - if [ $modsfilelistsize -eq 0 ]; then - fn_print_error_nl "${modcommand}-files.txt is empty" - echo "Exiting." - fn_scrip_log_fatal "${modcommand}-files.txt is empty" - exitcode="2" + if [ "${modsfilelistsize}" -eq 0 ]; then + fn_print_failure "${modcommand}-files.txt is empty" + echo "* Unable to remove ${modprettyname}" + fn_script_log_fatal "${modcommand}-files.txt is empty: Unable to remove ${modprettyname}." core_exit.sh fi else - fn_print_error_nl "${modsdatadir}/${modcommand}-files.txt don't exist" - echo "Exiting." - fn_scrip_log_fatal "${modsdatadir}/${modcommand}-files.txt don't exist" - exitcode="2" - core_exit.sh + fn_print_failure "${modsdatadir}/${modcommand}-files.txt does not exist" + fn_script_log_fatal "${modsdatadir}/${modcommand}-files.txt does not exist: Unable to remove ${modprettyname}." + core_exit.sh fi } @@ -253,11 +252,11 @@ fn_postinstall_tasks(){ local exitcode=$? if [ ${exitcode} -ne 0 ]; then break - fi - done + fi + done if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl - else + else fn_print_ok_eol_nl fi @@ -527,7 +526,7 @@ fn_installed_mods_medium_list(){ # Displays a simple list of installed mods # Requires fn_check_installed_mods and fn_mods_available_commands_from_installed to run -# This list is only displayed when some mods are installed +# This list is only displayed when some mods are installed fn_installed_mods_light_list(){ fn_check_installed_mods fn_mods_available_commands_from_installed @@ -575,9 +574,11 @@ fn_installed_mods_update_list(){ # If the mode is just overwritten elif [ "${modkeepfiles}" == "OVERWRITE" ]; then echo -e " * \e[1m${modprettyname}${default} (overwrite)" - else + else echo -e " * ${yellow}${modprettyname}${default} (common custom files remain untouched)" fi + ((totalmodsinstalled++)) + fn_script_log_info "${totalmodsinstalled} are already installed" done } @@ -598,17 +599,20 @@ fn_mod_get_info_from_command(){ modinfocommand="1" break fi + ((totalmods++)) done + fi # Exit the loop if job is done if [ "${modinfocommand}" == "1" ]; then break fi done + fn_script_log_info "${totalmods} are available for install" # What happens if mod is not found if [ "${modinfocommand}" == "0" ]; then - fn_script_log_error "Couldn't find information for ${currentmod}" - fn_print_error_nl "Couldn't find information for ${currentmod}" + fn_script_log_error "Could not find information for ${currentmod}" + fn_print_error_nl "Could not find information for ${currentmod}" exitcode="1" core_exit.sh fi diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 7f795cbe1..298da3ce1 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -4,7 +4,7 @@ # Contributor: UltimateByte # Website: https://gameservermanagers.com # Description: Lists and defines available mods for LGSM supported servers. -# Usage: To add a mod, you just need to add an array variable into fn_mods_info following the guide to set proper values. +# Usage: To add a mod, you just need to add an array variable into fn_mods_info following the guide to set proper values. # Usage: Then add this array to the mods_global_array. # Usage: If needed, you can scrape to define the download URL inside the fn_mods_scrape_urls function. @@ -35,7 +35,7 @@ fn_mods_info(){ # [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) # [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" to ignore the value or "NOUPDATE" to disallow updating # [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value - # [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value + # [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value # [11] | "Unsupported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use NOTGAMES to ignore the value (useful to exclude a game when using Supported Engines) # [12] | "AUTHOR_URL" is the author's website, displayed to the user when chosing mods to install # [13] | "Short Description" a description showed to the user upon installation @@ -64,7 +64,7 @@ fn_mods_info(){ # Get a proper URL for mods that don't provide a good one (optional) fn_mods_scrape_urls(){ - fn_script_log "Retriving latest mods URLs" + fn_script_log_info "retrieving latest mods URLs" # Metamod metamodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" metamodlatestfile="$(wget "${metamodscrapeurl}/?MD" -q -O -| grep "mmsource" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" From 23030d8e0e5a3a2082bb443f2e718fbc7d25d348 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 22 Jan 2017 00:00:10 +0000 Subject: [PATCH 495/729] Altered script log message for extracting --- lgsm/functions/core_dl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index b1db1b8fd..f7768a7cf 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -54,7 +54,6 @@ fn_dl_extract(){ extractdir="${3}" # extracts archives echo -ne "extracting ${filename}..." - fn_script_log_info "Extracting download" mime=$(file -b --mime-type "${filedir}/${filename}") if [ "${mime}" == "application/gzip" ]||[ "${mime}" == "application/x-gzip" ]; then @@ -72,6 +71,7 @@ fn_dl_extract(){ core_exit.sh else fn_print_ok_eol_nl + fn_script_log_pass "Extracting download: OK" fi } From e0e071139f49167acc1e8af8b55f5be987ff4741 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 22 Jan 2017 00:02:07 +0000 Subject: [PATCH 496/729] removed color from log --- lgsm/functions/check_deps.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 924d3f19b..4a040b13a 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -78,7 +78,7 @@ fn_found_missing_deps(){ fn_print_dots "Checking dependencies" sleep 0.5 fn_print_error_nl "Checking dependencies: missing: ${red}${array_deps_missing[@]}${default}" - fn_script_log_error "Checking dependencies: missing: ${red}${array_deps_missing[@]}${default}" + fn_script_log_error "Checking dependencies: missing: ${array_deps_missing[@]}" sleep 1 sudo -v > /dev/null 2>&1 if [ $? -eq 0 ]; then @@ -204,7 +204,7 @@ if [ -n "$(command -v dpkg-query)" ]; then array_deps_required+=( zlib1g:i386 libldap-2.4-2:i386 ) # Serious Sam 3: BFE elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then - array_deps_required+=( libxrandr2:i386 libglu1-mesa:i386 libxtst6:i386 libusb-1.0-0-dev:i386 libxxf86vm1:i386 libopenal1:i386 libssl1.0.0:i386 libgtk2.0-0:i386 libdbus-glib-1-2:i386 libnm-glib-dev:i386 ) + array_deps_required+=( libxrandr2:i386 libglu1-mesa:i386 libxtst6:i386 libusb-1.0-0-dev:i386 libxxf86vm1:i386 libopenal1:i386 libssl1.0.0:i386 libgtk2.0-0:i386 libdbus-glib-1-2:i386 libnm-glib-dev:i386 ) # Unreal Engine elif [ "${executable}" == "./ucc-bin" ]; then #UT2K4 From 1f566a9a4e176146efacf0a99207cec97efcd580 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 22 Jan 2017 00:10:24 +0000 Subject: [PATCH 497/729] Reverting [ERROR!] to [ERROR ] b4d3bb549e36198d332e4e5decd6bc30231791e0 No other message have an ! and is not consistant. Nothing I can do about the space. --- lgsm/functions/core_messages.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 66a1d6d80..632b01378 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -157,9 +157,9 @@ fn_print_fail_nl(){ # [ ERROR ] fn_print_error(){ if [ -n "${commandaction}" ]; then - echo -en "${creeol}[${red}ERROR!${default}] ${commandaction} ${servicename}: $@" + echo -en "${creeol}[${red}ERROR ${default}] ${commandaction} ${servicename}: $@" else - echo -en "${creeol}[${red}ERROR!${default}] $@" + echo -en "${creeol}[${red}ERROR ${default}] $@" fi } From 5b4a172edc1da298824bd38d5beb344c6ea0f512 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 22 Jan 2017 00:57:28 +0000 Subject: [PATCH 498/729] removed space --- lgsm/functions/command_dev_debug.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/command_dev_debug.sh b/lgsm/functions/command_dev_debug.sh index 6186c0fb0..e17a8a719 100644 --- a/lgsm/functions/command_dev_debug.sh +++ b/lgsm/functions/command_dev_debug.sh @@ -8,7 +8,6 @@ local commandname="DEV-DEBUG" local commandaction="Dev-Debug" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" - if [ -f "${rootdir}/.dev-debug" ]; then rm "${rootdir}/.dev-debug" fn_print_ok_nl "Disabled dev-debug" From 8b3721f25a3af83545e3ffad1bc17097fb890a34 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 22 Jan 2017 00:58:05 +0000 Subject: [PATCH 499/729] Many various changes Im being laxy with commits. Still work to be done --- lgsm/functions/command_mods_install.sh | 11 +- lgsm/functions/command_mods_remove.sh | 5 +- lgsm/functions/command_mods_update.sh | 4 +- lgsm/functions/mods_core.sh | 168 ++++++++++++++----------- lgsm/functions/mods_list.sh | 4 +- 5 files changed, 107 insertions(+), 85 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 0169589c7..d15250594 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -9,9 +9,6 @@ local commandname="MODS" local commandaction="addons/mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -check.sh -mods_core.sh - fn_mods_install_init(){ fn_print_header # Display installed mods @@ -37,7 +34,7 @@ fn_mods_install_init(){ echo "" echo "Installing ${modprettyname}" echo "=================================" - fn_script_log "Installing ${modprettyname}." + fn_script_log_info "${modprettyname} selected for install" # Gives a pretty name to the user and get all mod info currentmod="${usermodselect}" } @@ -68,9 +65,11 @@ fn_mod_installation(){ # Cleaning fn_clear_tmp_mods echo "${modprettyname} installed" - fn_script_log "${modprettyname} installed." + fn_script_log_pass "${modprettyname} installed." } +check.sh +mods_core.sh fn_mods_install_init fn_mod_installation -core_exit.sh +core_exit.sh \ No newline at end of file diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 060898aa8..6c8fdf0bb 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -9,8 +9,7 @@ local commandname="MODS" local commandaction="addons/mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -check.sh -mods_core.sh + fn_mods_remove_init(){ fn_print_header @@ -116,6 +115,8 @@ fn_mod_remove_process(){ fn_script_log "${modprettyname} removed" } +check.sh +mods_core.sh fn_mods_remove_init fn_mod_remove_process core_exit.sh diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 9eb257907..ad757da6c 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -9,8 +9,6 @@ local commandname="MODS" local commandaction="Mods Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -check.sh -mods_core.sh fn_mods_update_init(){ fn_script_log "Entering mods & addons update" @@ -84,6 +82,8 @@ fn_mods_update_loop(){ fn_script_log "Mods update complete." } +check.sh +mods_core.sh fn_mods_update_init fn_mods_update_loop core_exit.sh diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index aead8e714..4295fc478 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -9,68 +9,84 @@ local commandname="MODS" local commandaction="addons/mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -## Useful variables # Files and Directories modsdir="${lgsmdir}/mods" modstmpdir="${modsdir}/tmp" extractdir="${modstmpdir}/extract" -modsdatadir="${modsdir}" -modslockfile="installed-mods-listing" -modslockfilefullpath="${modsdatadir}/${modslockfile}" +modsinstalledlist="installed-mods.txt" +modsinstalledlistfullpath="${modsdir}/${modsinstalledlist}" + # Database initialisation mods_list.sh -# Sets some lgsm requirements -fn_lgsm_requirements(){ - # If tmpdir variable doesn't exist, LGSM is too old - if [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then - fn_print_fail "Your LinuxGSM version is too old." - echo " * Please do a full update, including ${selfname} script." - core_exit.sh - fi -} +## Directory management # Create mods files and directories if it doesn't exist # Assuming the game is already installed as mods_list.sh checked for it. fn_mods_files(){ + # Create mod install directory if [ ! -d "${modinstalldir}" ]; then - fn_script_log_info "Creating mods directory: ${modinstalldir}" - echo "Creating mods directory" + echo "creating mods install directory ${modinstalldir}..." + mkdir -p "${modinstalldir}" + exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_script_log_fatal "Creating mod download dir ${modstmpdir}" + core_exit.sh + else + fn_print_ok_eol_nl + fn_script_log_pass "Creating mod download dir ${modstmpdir}" + fi sleep 0.5 - mkdir -pv "${modinstalldir}" fi - # Create data/mods directory - if [ ! -d "${modsdatadir}" ]; then - mkdir -p "${modsdatadir}" - fn_script_log "Created ${modsdatadir}" + + # Create lgsm/data/${modsinstalledlist} + if [ ! -f "${modsinstalledlistfullpath}" ]; then + touch "${modsinstalledlistfullpath}" + fn_script_log "Created ${modsinstalledlistfullpath}" fi - # Create lgsm/data/${modslockfile} - if [ ! -f "${modslockfilefullpath}" ]; then - touch "${modslockfilefullpath}" - fn_script_log "Created ${modslockfilefullpath}" +} + +# Create tmp download mod directory +fn_mods_tmpdir(){ + if [ ! -d "${modstmpdir}" ]; then + mkdir -p "${modstmpdir}" + exitcode=$? + echo -ne "creating mod download dir ${modstmpdir}..." + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_script_log_fatal "Creating mod download dir ${modstmpdir}" + core_exit.sh + else + fn_print_ok_eol_nl + fn_script_log_pass "Creating mod download dir ${modstmpdir}" + fi fi } -# Clear mod download directory so that there is only one file in it since we don't know the file name and extention +# Clear contents of mod download directory when finished fn_clear_tmp_mods(){ if [ -d "${modstmpdir}" ]; then - rm -r "${modstmpdir}" - fn_script_log "Clearing mod download directory: ${modstmpdir}" + rm -r "${modstmpdir}"/* + exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_script_log_fatal "Clearing mod download directory ${modstmpdir}" + core_exit.sh + else + fn_print_ok_eol_nl + fn_script_log_pass "Clearing mod download directory ${modstmpdir}" + fi + fi # Clear temp file list as well - if [ -f "${modsdatadir}/.removedfiles.tmp" ]; then - rm "${modsdatadir}/.removedfiles.tmp" + if [ -f "${modsdir}/.removedfiles.tmp" ]; then + rm "${modsdir}/.removedfiles.tmp" fi } -# Create tmp download mod directory -fn_mods_tmpdir(){ - if [ ! -d "${modstmpdir}" ]; then - mkdir -p "${modstmpdir}" - fn_script_log "Creating mod download directory: ${modstmpdir}" - fi -} +## Download management fn_install_mod_dl_extract(){ fn_fetch_file "${modurl}" "${modstmpdir}" "${modfilename}" # Check if variable is valid checking if file has been downloaded and exists @@ -134,10 +150,10 @@ fn_remove_cfg_files(){ # Then delete the file! rm -r "${extractdir}/${filetoremove}" # Write this file path in a tmp file, to rebuild a full file list since it is rebuilt upon update - if [ ! -f "${modsdatadir}/.removedfiles.tmp" ]; then - touch "${modsdatadir}/.removedfiles.tmp" + if [ ! -f "${modsdir}/.removedfiles.tmp" ]; then + touch "${modsdir}/.removedfiles.tmp" fi - echo "${filetoremove}" >> "${modsdatadir}/.removedfiles.tmp" + echo "${filetoremove}" >> "${modsdir}/.removedfiles.tmp" fi done fn_print_ok "Allow for preserving ${modprettyname} config files" @@ -148,20 +164,23 @@ fn_remove_cfg_files(){ # Create ${modcommand}-files.txt containing the full extracted file/directory list fn_mod_fileslist(){ echo -ne "building ${modcommand}-files.txt..." - fn_script_log "Building ${modcommand}-files.txt" + sleep 0.5 - # ${modsdatadir}/${modcommand}-files.txt - find "${extractdir}" -mindepth 1 -printf '%P\n' > "${modsdatadir}"/${modcommand}-files.txt + # ${modsdir}/${modcommand}-files.txt + find "${extractdir}" -mindepth 1 -printf '%P\n' > "${modsdir}"/${modcommand}-files.txt local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl + fn_script_log_fatal "Building ${modcommand}-files.txt" + core_exit.sh else fn_print_ok_eol_nl + fn_script_log_pass "Building ${modcommand}-files.txt" fi - fn_script_log "Writing file list: ${modsdatadir}/${modcommand}-files.txt}" + fn_script_log "Writing file list ${modsdir}/${modcommand}-files.txt" # Adding removed files if needed - if [ -f "${modsdatadir}/.removedfiles.tmp" ]; then - cat "${modsdatadir}/.removedfiles.tmp" >> "${modsdatadir}"/${modcommand}-files.txt + if [ -f "${modsdir}/.removedfiles.tmp" ]; then + cat "${modsdir}/.removedfiles.tmp" >> "${modsdir}"/${modcommand}-files.txt fi sleep 0.5 } @@ -169,24 +188,26 @@ fn_mod_fileslist(){ # Copy the mod to the destination ${modinstalldir} fn_mod_copy_destination(){ echo -ne "copying ${modprettyname} to ${modinstalldir}..." - fn_script_log "Copying ${modprettyname} to ${modinstalldir}" sleep 0.5 cp -Rf "${extractdir}/." "${modinstalldir}/" local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl + fn_script_log_fatal "Copying ${modprettyname} to ${modinstalldir}" else fn_print_ok_eol_nl + fn_script_log_pass "Copying ${modprettyname} to ${modinstalldir}" fi } # Check if the mod is already installed and warn the user fn_mod_already_installed(){ - if [ -f "${modslockfilefullpath}" ]; then - if [ -n "$(sed -n "/^${modcommand}$/p" "${modslockfilefullpath}")" ]; then - fn_print_warning_nl "${modprettyname} has already been installed" + if [ -f "${modsinstalledlistfullpath}" ]; then + if [ -n "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then + fn_print_warning_nl "${modprettyname} is already installed" + fn_script_log_warn "${modprettyname} is already installed" sleep 1 - echo " * Config files, if any, might be overwritten." + echo " * Any configs may be overwritten." while true; do read -e -i "y" -p "Continue? [Y/n]" yn case $yn in @@ -196,24 +217,24 @@ fn_mod_already_installed(){ esac done fi - fn_script_log "${modprettyname} is already installed, overwriting any file." + fn_script_log_info "User selected to continue" fi } # Add the mod to the installed mods list fn_mod_add_list(){ # Append modname to lockfile if it's not already in it - if [ ! -n "$(sed -n "/^${modcommand}$/p" "${modslockfilefullpath}")" ]; then - echo "${modcommand}" >> "${modslockfilefullpath}" - fn_script_log "${modcommand} added to ${modslockfile}" + if [ ! -n "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then + echo "${modcommand}" >> "${modsinstalledlistfullpath}" + fn_script_log_info "${modcommand} added to ${modsinstalledlist}" fi } fn_check_files_list(){ # File list must exist and be valid before any operation on it - if [ -f "${modsdatadir}/${modcommand}-files.txt" ]; then + if [ -f "${modsdir}/${modcommand}-files.txt" ]; then # How many lines is the file list - modsfilelistsize="$(cat "${modsdatadir}/${modcommand}-files.txt" | wc -l)" + modsfilelistsize="$(cat "${modsdir}/${modcommand}-files.txt" | wc -l)" # If file list is empty if [ "${modsfilelistsize}" -eq 0 ]; then fn_print_failure "${modcommand}-files.txt is empty" @@ -222,15 +243,15 @@ fn_check_files_list(){ core_exit.sh fi else - fn_print_failure "${modsdatadir}/${modcommand}-files.txt does not exist" - fn_script_log_fatal "${modsdatadir}/${modcommand}-files.txt does not exist: Unable to remove ${modprettyname}." + fn_print_failure "${modsdir}/${modcommand}-files.txt does not exist" + fn_script_log_fatal "${modsdir}/${modcommand}-files.txt does not exist: Unable to remove ${modprettyname}." core_exit.sh fi } # Apply some post-install fixes to make sure everything will be fine fn_postinstall_tasks(){ - # Prevent sensitive directories from being erased upon uninstall by removing them from: ${modsdatadir}/${modcommand}-files.txt + # Prevent sensitive directories from being erased upon uninstall by removing them from: ${modsdir}/${modcommand}-files.txt # Check file validity fn_check_files_list # Output to the user @@ -248,7 +269,7 @@ fn_postinstall_tasks(){ # Put current file into test variable removefilevar="$( echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" # Then delete matching line(s)! - sed -i "/^${removefilevar}$/d" "${modsdatadir}/${modcommand}-files.txt" + sed -i "/^${removefilevar}$/d" "${modsdir}/${modcommand}-files.txt" local exitcode=$? if [ ${exitcode} -ne 0 ]; then break @@ -264,8 +285,8 @@ fn_postinstall_tasks(){ # Remove metamod from sourcemod fileslist if [ "${modcommand}" == "sourcemod" ]; then # Remove addons/metamod & addons/metamod/sourcemod.vdf from ${modcommand}-files.txt - sed -i "/^addons\/metamod$/d" "${modsdatadir}/${modcommand}-files.txt" - sed -i "/^addons\/metamod\/sourcemod.vdf$/d" "${modsdatadir}/${modcommand}-files.txt" + sed -i "/^addons\/metamod$/d" "${modsdir}/${modcommand}-files.txt" + sed -i "/^addons\/metamod\/sourcemod.vdf$/d" "${modsdir}/${modcommand}-files.txt" fi } @@ -392,7 +413,7 @@ fn_mod_compatible_test(){ fi } -# Checks if a mod is compatibile for installation +# Checks if a mod is compatible for installation # Provides available mods for installation # Provides commands for mods installation fn_mods_available(){ @@ -439,20 +460,22 @@ fn_mods_show_available(){ echo -e " * ${cyan}${displayedmodcommand}${default}" # Increment index from the amount of values we just displayed let "compatiblemodslistindex+=4" + ((totalmods++)) done # If no mods are found if [ -z "${compatiblemodslist}" ]; then fn_print_fail "No mods are currently available for ${gamename}." core_exit.sh fi + fn_script_log_info "${totalmods} addons/mods are available for install" } # Checks if mods have been installed # Also returns ${installedmodscount} if mods were found fn_check_installed_mods(){ # Count installed mods - if [ -f "${modslockfilefullpath}" ]; then - installedmodscount="$(cat "${modslockfilefullpath}" | wc -l)" + if [ -f "${modsinstalledlistfullpath}" ]; then + installedmodscount="$(cat "${modsinstalledlistfullpath}" | wc -l)" fi } @@ -463,7 +486,7 @@ fn_mods_exit_if_not_installed(){ # Also returns ${installedmodscount} if mods were found fn_check_installed_mods # If no mods lockfile is found or if it is empty - if [ ! -f "${modslockfilefullpath}" ]||[ -z "${installedmodscount}" ]||[ ${installedmodscount} -le 0 ]; then + if [ ! -f "${modsinstalledlistfullpath}" ]||[ -z "${installedmodscount}" ]||[ ${installedmodscount} -le 0 ]; then fn_print_information_nl "No installed mods or addons were found" echo " * Install mods using LGSM first with: ./${selfname} mods-install" fn_script_log_info "No installed mods or addons were found." @@ -477,9 +500,9 @@ fn_mods_available_commands_from_installed(){ # Set/reset variables installedmodsline="1" installedmodslist=() - # Loop through every line of the installed mods list ${modslockfilefullpath} + # Loop through every line of the installed mods list ${modsinstalledlistfullpath} while [ ${installedmodsline} -le ${installedmodscount} ]; do - currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" + currentmod="$(sed "${installedmodsline}q;d" "${modsinstalledlistfullpath}")" # Get mod info to make sure mod exists fn_mod_get_info_from_command # Add the mod to available commands @@ -487,6 +510,9 @@ fn_mods_available_commands_from_installed(){ # Increment line check let installedmodsline=installedmodsline+1 done + if [ -n "${totalmods}" ] ;then + fn_script_log_info "${totalmods} addons/mods are already installed" + fi } # Displays a detailed list of installed mods @@ -542,6 +568,7 @@ fn_installed_mods_light_list(){ fn_mod_get_info_from_command # Display simple mod info to the user echo -e " * \e[1m${green}${modcommand}${default}${default}" + ((totalmodsinstalled++)) done echo "" fi @@ -577,8 +604,6 @@ fn_installed_mods_update_list(){ else echo -e " * ${yellow}${modprettyname}${default} (common custom files remain untouched)" fi - ((totalmodsinstalled++)) - fn_script_log_info "${totalmodsinstalled} are already installed" done } @@ -608,7 +633,7 @@ fn_mod_get_info_from_command(){ break fi done - fn_script_log_info "${totalmods} are available for install" + # What happens if mod is not found if [ "${modinfocommand}" == "0" ]; then fn_script_log_error "Could not find information for ${currentmod}" @@ -618,7 +643,6 @@ fn_mod_get_info_from_command(){ fi } -fn_lgsm_requirements fn_mods_scrape_urls fn_mods_info fn_mods_available diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 298da3ce1..73584f3dd 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -12,8 +12,6 @@ local commandname="MODS" local commandaction="List Mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -check.sh - ## Useful variables # Separator name modseparator="MOD" @@ -64,7 +62,7 @@ fn_mods_info(){ # Get a proper URL for mods that don't provide a good one (optional) fn_mods_scrape_urls(){ - fn_script_log_info "retrieving latest mods URLs" + fn_script_log_info "Retrieving latest mods URLs" # Metamod metamodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" metamodlatestfile="$(wget "${metamodscrapeurl}/?MD" -q -O -| grep "mmsource" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" From 939854cfe093779caa0d6b740cb5b8fd79cd5416 Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 20:11:23 -0600 Subject: [PATCH 500/729] MTA updater --- lgsm/functions/command_update.sh | 4 +- lgsm/functions/core_functions.sh | 5 + lgsm/functions/core_getopt.sh | 9 +- lgsm/functions/install_server_files.sh | 2 + lgsm/functions/update_mta.sh | 149 +++++++++++++++++++++++++ 5 files changed, 165 insertions(+), 4 deletions(-) create mode 100644 lgsm/functions/update_mta.sh diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index 13fff9e90..ca82f541a 100644 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -20,7 +20,9 @@ elif [ "${engine}" == "lwjgl2" ]; then elif [ "${gamename}" == "Mumble" ]; then update_mumble.sh elif [ "${gamename}" == "Factorio" ]; then - update_factorio.sh + update_factorio.sh +elif [ "$Pgamename" == "Multi Theft Auto" ]; then + update_mta.sh else update_steamcmd.sh fi diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index df8b4980c..39737640c 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -462,6 +462,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +update_mta.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + update_factorio.sh(){ functionfile="${FUNCNAME}" fn_fetch_function diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index bc18e3292..721d317e0 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -350,6 +350,8 @@ case "${getopt}" in command_stop.sh;; r|restart) command_restart.sh;; + u|update) + command_update.sh;; uf|update-functions) command_update_functions.sh;; m|monitor) @@ -394,6 +396,7 @@ case "${getopt}" in echo -e "${blue}start\t${default}st |Start the server." echo -e "${blue}stop\t${default}sp |Stop the server." echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from linux.mtasa.com." echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." echo -e "${blue}monitor\t${default}m |Checks that the server is running." echo -e "${blue}test-alert\t${default}ta |Sends test alert." @@ -845,7 +848,7 @@ elif [ "${gamename}" == "Multi Theft Auto" ]; then # Mumble elif [ "${gamename}" == "Mumble" ]; then fn_getopt_mumble -# Teamspeak 3 +# Teamspeak 3 elif [ "${gamename}" == "TeamSpeak 3" ]; then fn_getopt_teamspeak3 # Unreal 2 Engine @@ -855,14 +858,14 @@ elif [ "${engine}" == "unreal2" ]; then else fn_getopt_unreal2 fi -# Unreal Engine +# Unreal Engine elif [ "${engine}" == "unreal" ]; then fn_getopt_unreal # Generic elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fn_getopt_generic_no_update elif [ "${gamename}" == "Factorio" ]; then - fn_getopt_generic_update_no_steam + fn_getopt_generic_update_no_steam else fn_getopt_generic fi diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index fff0e923d..8d8d8d608 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -131,6 +131,8 @@ elif [ "${gamename}" == "Minecraft" ]; then update_minecraft.sh elif [ "${gamename}" == "Mumble" ]; then update_mumble.sh +elif [ "${gamename}" == "Multi Theft Auto" ]; then + update_mta.sh elif [ "${gamename}" == "Factorio" ]; then update_factorio.sh install_factorio_save.sh diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh new file mode 100644 index 000000000..0268c5d0e --- /dev/null +++ b/lgsm/functions/update_mta.sh @@ -0,0 +1,149 @@ +#!/bin/bash +# LGSM update_mta.sh function +# Author: Daniel Gibbs +# Website: https://gameservermanagers.com +# Description: Handles updating of Multi Theft Auto servers. + +local commandname="UPDATE" +local commandaction="Update" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +fn_update_mta_dl(){ + fn_fetch_file "http://linux.mtasa.com/dl/${NUM_VERSION}/multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" + fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" "${tmpdir}" + echo -e "copying to ${filesdir}...\c" + fn_script_log "Copying to ${filesdir}" + cp -R "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}.tar.gz"* "${filesdir}" + local exitcode=$? + if [ "${exitcode}" == "0" ]; then + fn_print_ok_eol_nl + else + fn_print_fail_eol_nl + fi +} + +fn_update_mta_currentbuild(){ + # Gets current build info + # Checks if current build info is available. If it fails, then a server restart will be forced to generate logs. + if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then + fn_print_error "Checking for update: linux.mtasa.com" + sleep 1 + fn_print_error_nl "Checking for update: linux.mtasa.com: No logs with server version found" + fn_script_log_error "Checking for update: linux.mtasa.com: No logs with server version found" + sleep 1 + fn_print_info_nl "Checking for update: linux.mtasa.com: Forcing server restart" + fn_script_log_info "Checking for update: linux.mtasa.com: Forcing server restart" + sleep 1 + exitbypass=1 + command_stop.sh + exitbypass=1 + command_start.sh + sleep 1 + # Check again and exit on failure. + if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then + fn_print_fail_nl "Checking for update: linux.mtasa.com: Still No logs with server version found" + fn_script_log_fatal "Checking for update: linux.mtasa.com: Still No logs with server version found" + core_exit.sh + fi + fi + + # Get current build from logs + currentbuild=$(awk -F"= Multi Theft Auto: San Andreas v" '{print $2}' "${consolelogdir}"/"${servicename}"-console.log | awk '{print $1}') + if [ -z "${currentbuild}" ]; then + fn_print_error_nl "Checking for update: linux.mtasa.com: Current build version not found" + fn_script_log_error "Checking for update: linux.mtasa.com: Current build version not found" + sleep 1 + fn_print_info_nl "Checking for update: linux.mtasa.com: Forcing server restart" + fn_script_log_info "Checking for update: linux.mtasa.com: Forcing server restart" + exitbypass=1 + command_stop.sh + exitbypass=1 + command_start.sh + currentbuild=$(awk -F"= Multi Theft Auto: San Andreas v" '{print $2}' "${consolelogdir}"/"${servicename}"-console.log | awk '{print $1}') + if [ -z "${currentbuild}" ]; then + fn_print_fail_nl "Checking for update: linux.mtasa.com: Current build version still not found" + fn_script_log_fatal "Checking for update: linux.mtasa.com: Current build version still not found" + core_exit.sh + fi + fi +} + +fn_mta_getServerVersion() +{ + fn_fetch_file "https://raw.githubusercontent.com/multitheftauto/mtasa-blue/master/Server/version.h" "${tmpdir}" # we need to find latest stable version here + local MAJOR_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAJOR" | awk '{ print $3 }' | sed 's/\r//g')" + local MINOR_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MINOR" | awk '{ print $3 }' | sed 's/\r//g')" + local MAINTENANCE_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAINTENANCE" | awk '{ print $3 }' | sed 's/\r//g')" + NUM_VERSION="${MAJOR_VERSION}${MINOR_VERSION}${MAINTENANCE_VERSION}" + FUL_VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${MAINTENANCE_VERSION}" + rm -f "${tmpdir}/version.h" +} + +fn_update_mta_compare(){ + # Removes dots so if can compare version numbers + currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]') + + if [ "${currentbuilddigit}" -ne "${NUM_VERSION}" ]; then + echo -e "\n" + echo -e "Update available:" + sleep 1 + echo -e " Current build: ${red}${currentbuild} ${default}" + echo -e " Available build: ${green}${FULL_VERSION} ${default}" + echo -e "" + sleep 1 + echo "" + echo -en "Applying update.\r" + sleep 1 + echo -en "Applying update..\r" + sleep 1 + echo -en "Applying update...\r" + sleep 1 + echo -en "\n" + fn_script_log "Update available" + fn_script_log "Current build: ${currentbuild}" + fn_script_log "Available build: ${FULL_VERSION}" + fn_script_log "${currentbuild} > ${FULL_VERSION}" + + unset updateonstart + + check_status.sh + if [ "${status}" == "0" ]; then + fn_update_mta_dl + exitbypass=1 + command_start.sh + exitbypass=1 + command_stop.sh + else + exitbypass=1 + command_stop.sh + fn_update_mta_dl + exitbypass=1 + command_start.sh + fi + alert="update" + alert.sh + else + echo -e "\n" + echo -e "No update available:" + echo -e " Current version: ${green}${currentbuild}${default}" + echo -e " Available version: ${green}${FULL_VERSION}${default}" + echo -e "" + fn_print_ok_nl "No update available" + fn_script_log_info "Current build: ${currentbuild}" + fn_script_log_info "Available build: ${FULL_VERSION}" + fi +} + + +if [ "${installer}" == "1" ]; then + fn_mta_getServerVersion + fn_update_mta_dl +else + # Checks for server update from linux.mtasa.com using the github repo. + fn_print_dots "Checking for update: linux.mtasa.com" + fn_script_log_info "Checking for update: linux.mtasa.com" + sleep 1 + fn_update_mta_currentbuild + fn_mta_getServerVersion + fn_update_mta_compare +fi From dd122132e0a231c491e5166acc3efc3c1480af7f Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 20:14:38 -0600 Subject: [PATCH 501/729] File name for the fetch --- lgsm/functions/update_mta.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index 0268c5d0e..ce7824dc6 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -70,7 +70,7 @@ fn_update_mta_currentbuild(){ fn_mta_getServerVersion() { - fn_fetch_file "https://raw.githubusercontent.com/multitheftauto/mtasa-blue/master/Server/version.h" "${tmpdir}" # we need to find latest stable version here + fn_fetch_file "https://raw.githubusercontent.com/multitheftauto/mtasa-blue/master/Server/version.h" "${tmpdir}" "version.h" # we need to find latest stable version here local MAJOR_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAJOR" | awk '{ print $3 }' | sed 's/\r//g')" local MINOR_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MINOR" | awk '{ print $3 }' | sed 's/\r//g')" local MAINTENANCE_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAINTENANCE" | awk '{ print $3 }' | sed 's/\r//g')" From d3ebec1514d7b5602c07e999f50b3b4de617a0c6 Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 20:31:43 -0600 Subject: [PATCH 502/729] No longer needed as this is handled in the update file --- lgsm/functions/core_dl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 7596c4789..7355c840c 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -58,7 +58,7 @@ fn_dl_extract(){ mime=$(file -b --mime-type "${filedir}/${filename}") if [ "${mime}" == "application/gzip" ]||[ "${mime}" == "application/x-gzip" ]; then - tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}" --strip-components=1) + tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}") elif [ "${mime}" == "application/x-bzip2" ]; then tarcmd=$(tar -jxf "${filedir}/${filename}" -C "${extractdir}") elif [ "${mime}" == "application/zip" ]; then From 96b059a5b736dcc712f5b56ec9c6aceb20729f80 Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 20:31:53 -0600 Subject: [PATCH 503/729] Directory changes --- lgsm/functions/update_mta.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index ce7824dc6..76e31f451 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -9,11 +9,12 @@ local commandaction="Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_update_mta_dl(){ - fn_fetch_file "http://linux.mtasa.com/dl/${NUM_VERSION}/multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" - fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" "${tmpdir}" + fn_fetch_file "http://linux.mtasa.com/dl/${NUM_VERSION}/multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" "${tmpdir}" "multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" + mkdir "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}" + fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" - cp -R "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}.tar.gz"* "${filesdir}" + cp -R "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}/"* "${filesdir}" local exitcode=$? if [ "${exitcode}" == "0" ]; then fn_print_ok_eol_nl From fbac3e7c42805e96645efc142e4f1effb7274ea0 Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 20:33:34 -0600 Subject: [PATCH 504/729] Typo --- lgsm/functions/command_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index ca82f541a..dd2206f00 100644 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -21,7 +21,7 @@ elif [ "${gamename}" == "Mumble" ]; then update_mumble.sh elif [ "${gamename}" == "Factorio" ]; then update_factorio.sh -elif [ "$Pgamename" == "Multi Theft Auto" ]; then +elif [ "${gamename}" == "Multi Theft Auto" ]; then update_mta.sh else update_steamcmd.sh From c0f9078f063d4fe5be474b8d0c00b3f16d0acbd5 Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 20:35:16 -0600 Subject: [PATCH 505/729] =?UTF-8?q?Don=E2=80=99t=20attempt=20to=20change?= =?UTF-8?q?=20server=20name=20vars?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lgsm/functions/install_config.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 3bb99da89..4a0cf13b2 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -367,7 +367,6 @@ elif [ "${gamename}" == "Multi Theft Auto" ]; then array_configs+=( acl.xml mtaserver.conf vehiclecolors.conf ) fn_fetch_default_config fn_default_config_remote - fn_set_config_vars elif [ "${gamename}" == "Mumble" ]; then gamedirname="Mumble" array_configs+=( murmur.ini ) From d739b9e2c3d785d3053e435c43c2a63da7cfd795 Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 20:51:20 -0600 Subject: [PATCH 506/729] Another directory fix --- lgsm/functions/update_mta.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index 76e31f451..a7623d4cb 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -14,7 +14,7 @@ fn_update_mta_dl(){ fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" - cp -R "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}/"* "${filesdir}" + cp -R "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}/multitheftauto_linux_x64-${FUL_VERSION}"* "${filesdir}" local exitcode=$? if [ "${exitcode}" == "0" ]; then fn_print_ok_eol_nl From e5176ba57dbb9fc42a44e860bf5a35624f8fbec1 Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 21:05:20 -0600 Subject: [PATCH 507/729] Forgot a slash.. --- lgsm/functions/update_mta.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index a7623d4cb..099344b71 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -14,7 +14,7 @@ fn_update_mta_dl(){ fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" - cp -R "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}/multitheftauto_linux_x64-${FUL_VERSION}"* "${filesdir}" + cp -R "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}/multitheftauto_linux_x64-${FUL_VERSION}/"* "${filesdir}" local exitcode=$? if [ "${exitcode}" == "0" ]; then fn_print_ok_eol_nl From 29073d4dbb4b8523da86f12131e94f416ecba732 Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 21:07:55 -0600 Subject: [PATCH 508/729] Fix for where LGSM looks for the libmysqlclient file --- lgsm/functions/fix_mta.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/fix_mta.sh b/lgsm/functions/fix_mta.sh index e63972e50..6bf11dbc9 100644 --- a/lgsm/functions/fix_mta.sh +++ b/lgsm/functions/fix_mta.sh @@ -8,7 +8,7 @@ local commandname="FIX" local commandaction="Fix" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -if [ ! -f /usr/lib/libmysqlclient.so.16 ]; then +if [ ! -f "${lgsmdir}/lib/libmysqlclient.so.16" ]; then fixname="libmysqlclient16 install" fn_fix_msg_start fn_print_warn_nl "libmysqlclient16 not installed. Installing.." From eb1c9b7854c39e3ce5571b021de8d93f6bc6e04e Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 21:13:07 -0600 Subject: [PATCH 509/729] Better naming --- lgsm/functions/update_mta.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index 099344b71..0bc8a7d53 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -9,12 +9,12 @@ local commandaction="Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_update_mta_dl(){ - fn_fetch_file "http://linux.mtasa.com/dl/${NUM_VERSION}/multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" "${tmpdir}" "multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" - mkdir "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}" - fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${FUL_VERSION}.tar.gz" "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}" + fn_fetch_file "http://linux.mtasa.com/dl/${NUM_VERSION}/multitheftauto_linux_x64-${FULL_VERSION}.tar.gz" "${tmpdir}" "multitheftauto_linux_x64-${FULL_VERSION}.tar.gz" + mkdir "${tmpdir}/multitheftauto_linux_x64-${FULL_VERSION}" + fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${FULL_VERSION}.tar.gz" "${tmpdir}/multitheftauto_linux_x64-${FULL_VERSION}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" - cp -R "${tmpdir}/multitheftauto_linux_x64-${FUL_VERSION}/multitheftauto_linux_x64-${FUL_VERSION}/"* "${filesdir}" + cp -R "${tmpdir}/multitheftauto_linux_x64-${FULL_VERSION}/multitheftauto_linux_x64-${FULL_VERSION}/"* "${filesdir}" local exitcode=$? if [ "${exitcode}" == "0" ]; then fn_print_ok_eol_nl @@ -76,7 +76,7 @@ fn_mta_getServerVersion() local MINOR_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MINOR" | awk '{ print $3 }' | sed 's/\r//g')" local MAINTENANCE_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAINTENANCE" | awk '{ print $3 }' | sed 's/\r//g')" NUM_VERSION="${MAJOR_VERSION}${MINOR_VERSION}${MAINTENANCE_VERSION}" - FUL_VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${MAINTENANCE_VERSION}" + FULL_VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${MAINTENANCE_VERSION}" rm -f "${tmpdir}/version.h" } From 475a2089438d2151a3ce9c96cc4804da4fdebd76 Mon Sep 17 00:00:00 2001 From: Braunson Date: Sun, 22 Jan 2017 21:21:41 -0600 Subject: [PATCH 510/729] No longer needed, handled in the update file --- lgsm/functions/install_server_files.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 8d8d8d608..dd79d9150 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -39,8 +39,6 @@ fn_install_server_files(){ fileurl="http://files.gameservermanagers.com/UnrealTournament3/UT3-linux-server-2.1.tar.bz2"; filedir="${tmpdir}"; filename="UT3-linux-server-2.1.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="2527437b46f1b47f20228d27d72395a6" elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then fileurl="http://files.gameservermanagers.com/WolfensteinEnemyTerritory/enemy-territory.260b.tar.bz2"; filedir="${tmpdir}"; filename="enemy-territory.260b.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="f833f514bfcdd46b42c111f83350c5a7" - elif [ "${gamename}" == "Multi Theft Auto" ]; then - fileurl="https://linux.mtasa.com/dl/153/multitheftauto_linux_x64-1.5.3.tar.gz"; filedir="${tmpdir}"; filename="multitheftauto_linux_x64-1.5.3.tar.gz"; executecmd="noexecute" run="norun"; force="noforce"; md5="77caf91fe280877a8d21f8046d5f42ba" fi fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_dl_extract "${filedir}" "${filename}" "${filesdir}" From bd1dabc19403908a18594a0a1e3a19839bca84e6 Mon Sep 17 00:00:00 2001 From: Chaos Date: Mon, 23 Jan 2017 14:49:08 -0600 Subject: [PATCH 511/729] Add a contributing guide This file will give new pull requests a warning to adhere to the projects guidelines and is a good reminder of our standards. https://help.github.com/articles/setting-guidelines-for-repository-contributors/ This is related to issue #1624 Feel free to suggest edits. --- CONTRIBUTING.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..28d8d3dac --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,40 @@ +# How to contribute + +I'm really glad you're reading this, because if you are then you have shown an interest in helping make LinuxGSM great. + +If you haven't already, come find us on [Discord](https://gameservermanagers.com/discord). From there you will have contact with other contributers of the project. We want you working on things you're excited about. + +Here are some important resources: + + * [Issues Page](https://github.com/GameServerManagers/LinuxGSM/issues) provides a list of areas that could use some work, + * [Developing LGSM](https://github.com/GameServerManagers/LinuxGSM/wiki/Developing-LGSM) gives a detailed guide on developing LGSM, + * [LGSM Exit Codes](https://github.com/GameServerManagers/LinuxGSM/wiki/LGSM-Exit-Codes) describes and gives an explanation for exit codes, + * [gsquery](https://github.com/GameServerManagers/LinuxGSM/wiki/gsquery.py) describes the uses of the gsquery.py file, and + * [Branching](https://github.com/GameServerManagers/LinuxGSM/wiki/Branching) is our final guide to submitting changes. + +## Testing + +Please make sure all the code you write is working properly **before** you create a pull request. Information on debugging can be found in the following document: +[Debug Command](https://github.com/GameServerManagers/LinuxGSM/wiki/debug) +[Debugging your code](https://github.com/GameServerManagers/LinuxGSM/wiki/Developing-LGSM#testing-and-debugging-your-code) + +## Submitting changes + +Please send a [GitHub Pull Request to LinuxGSM](https://github.com/GameServerManagers/LinuxGSM/pull/new/develop) with a clear list of what you've done (read more about [pull requests](https://help.github.com/articles/about-pull-requests/)). Please follow our coding conventions (below) and make sure all of your commits are atomic (one feature per commit). + +Always write a clear log message for your commits. One-line messages are fine for small changes, but bigger changes should look like this: + + $ git commit -m "A brief summary of the commit + > + > A paragraph describing what changed and its impact." +This will help us in understanding your code and determining where problems may arise. + +## Coding conventions + +Start reading our code and you'll get the hang of it. Explore how functions are organized and you'll see how we strive for readable code. + +Please give the following document a read and adjust your code according to its specifications. +[Syntax & Coding Conventions](https://github.com/GameServerManagers/LinuxGSM/wiki/Syntax-&-Conventions) + + + From bf1dc5b71d2068575cbca01c25812023a64c0e5e Mon Sep 17 00:00:00 2001 From: Chaos Date: Mon, 23 Jan 2017 15:43:11 -0600 Subject: [PATCH 512/729] Update based on code review --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 28d8d3dac..6fe85bae6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# How to contribute +# How to contribute to LinuxGSM -I'm really glad you're reading this, because if you are then you have shown an interest in helping make LinuxGSM great. +We are really glad you're reading this, because if you are then you have shown an interest in helping make LinuxGSM great. If you haven't already, come find us on [Discord](https://gameservermanagers.com/discord). From there you will have contact with other contributers of the project. We want you working on things you're excited about. From 1272cb42c60f4788345d84e667efdcbbbb121eaa Mon Sep 17 00:00:00 2001 From: Chaos Date: Mon, 23 Jan 2017 15:57:06 -0600 Subject: [PATCH 513/729] Updated to add developer commands --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6fe85bae6..edb8ebf50 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,7 +15,7 @@ Here are some important resources: ## Testing Please make sure all the code you write is working properly **before** you create a pull request. Information on debugging can be found in the following document: -[Debug Command](https://github.com/GameServerManagers/LinuxGSM/wiki/debug) +[Developer Commands](https://github.com/GameServerManagers/LinuxGSM/wiki/Developer-Commands) [Debugging your code](https://github.com/GameServerManagers/LinuxGSM/wiki/Developing-LGSM#testing-and-debugging-your-code) ## Submitting changes From 7152d821c043722423afda967d2800fb32e9ae73 Mon Sep 17 00:00:00 2001 From: Chaos Date: Mon, 23 Jan 2017 20:53:44 -0600 Subject: [PATCH 514/729] Support forced updates, sometimes MTA releases versions lower than maintenance versions that cannot otherwise be detected. --- lgsm/functions/core_getopt.sh | 4 ++++ lgsm/functions/update_mta.sh | 12 +++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 721d317e0..42ee3d44e 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -352,6 +352,9 @@ case "${getopt}" in command_restart.sh;; u|update) command_update.sh;; + fu|force-update|update-restart) + forceupdate=1; + command_update.sh;; uf|update-functions) command_update_functions.sh;; m|monitor) @@ -397,6 +400,7 @@ case "${getopt}" in echo -e "${blue}stop\t${default}sp |Stop the server." echo -e "${blue}restart\t${default}r |Restart the server." echo -e "${blue}update\t${default}u |Checks and applies updates from linux.mtasa.com." + echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from linux.mtasa.com." echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." echo -e "${blue}monitor\t${default}m |Checks that the server is running." echo -e "${blue}test-alert\t${default}ta |Sends test alert." diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index 0bc8a7d53..365dae131 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -84,9 +84,15 @@ fn_update_mta_compare(){ # Removes dots so if can compare version numbers currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]') - if [ "${currentbuilddigit}" -ne "${NUM_VERSION}" ]; then + if [ "${currentbuilddigit}" -ne "${NUM_VERSION}" ]||[ "${forceupdate}" == "1" ]; then + if [ "${forceupdate}" == "1" ]; then + # forceupdate bypasses checks, useful for small build changes + mta_update_string="forced" + else + mta_update_string="available" + fi echo -e "\n" - echo -e "Update available:" + echo -e "Update ${mta_update_string}:" sleep 1 echo -e " Current build: ${red}${currentbuild} ${default}" echo -e " Available build: ${green}${FULL_VERSION} ${default}" @@ -100,7 +106,7 @@ fn_update_mta_compare(){ echo -en "Applying update...\r" sleep 1 echo -en "\n" - fn_script_log "Update available" + fn_script_log "Update ${mta_update_string}" fn_script_log "Current build: ${currentbuild}" fn_script_log "Available build: ${FULL_VERSION}" fn_script_log "${currentbuild} > ${FULL_VERSION}" From 3e17bc1daa6098022ccc41e5dbac732fcb41fb9f Mon Sep 17 00:00:00 2001 From: Chaos Date: Wed, 25 Jan 2017 08:41:59 -0600 Subject: [PATCH 515/729] Added a note about making an issue for features you work on --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index edb8ebf50..a90acec99 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,6 +4,8 @@ We are really glad you're reading this, because if you are then you have shown a If you haven't already, come find us on [Discord](https://gameservermanagers.com/discord). From there you will have contact with other contributers of the project. We want you working on things you're excited about. +Before working on a project we recommend that you create a issue in regards to the issue/feature. This will prevent duplicates while you work on the feature. If an issue already exists, make note that you are working on it so nobody else wastes their time working on the same project at the same time! + Here are some important resources: * [Issues Page](https://github.com/GameServerManagers/LinuxGSM/issues) provides a list of areas that could use some work, From f1dbdd6cc61565236a7569737c4d5b1302cc4ce4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 20:00:42 +0000 Subject: [PATCH 516/729] Major re-organise This is a major sort out of the new functions. To simplify and make it easier to follow the code. All functionality remains. Possible bugs in this that will be resolved after testing --- lgsm/functions/command_mods_install.sh | 160 ++++--- lgsm/functions/command_mods_remove.sh | 215 ++++----- lgsm/functions/command_mods_update.sh | 168 ++++--- lgsm/functions/mods_core.sh | 613 +++++++++---------------- lgsm/functions/mods_list.sh | 104 ++--- 5 files changed, 568 insertions(+), 692 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index d15250594..fc6f78c9e 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -9,67 +9,113 @@ local commandname="MODS" local commandaction="addons/mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -fn_mods_install_init(){ - fn_print_header - # Display installed mods - fn_installed_mods_light_list +check.sh +mods_core.sh + +fn_print_header + +# exits if no mods installed +fn_mods_check_installed - echo "Available addons/mods" +# Displays a list of installed mods +fn_mods_installed_list +if [ ${installedmodscount} -gt 0 ]; then + echo "Installed addons/mods" echo "=================================" - # Display available mods from mods_list.sh - fn_mods_show_available - echo "" - # Keep prompting as long as the user input doesn't correspond to an available mod - while [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; do - echo -en "Enter an ${cyan}addon/mod${default} to ${green}install${default} (or exit to abort): " - read -r usermodselect - # Exit if user says exit or abort - if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then - core_exit.sh - # Supplementary output upon invalid user input - elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then - fn_print_error2_nl "${usermodselect} is not a valid addon/mod." - fi + # Go through all available commands, get details and display them to the user + for ((llindex=0; llindex < ${#installedmodslist[@]}; llindex++)); do + # Current mod is the "llindex" value of the array we're going through + currentmod="${installedmodslist[llindex]}" + fn_mod_get_info + # Display mod info to the user + echo -e " * \e[1m${green}${modcommand}${default}${default}" + ((totalmodsinstalled++)) done echo "" - echo "Installing ${modprettyname}" - echo "=================================" - fn_script_log_info "${modprettyname} selected for install" - # Gives a pretty name to the user and get all mod info - currentmod="${usermodselect}" -} +fi -# Run all required operation -fn_mod_installation(){ - # Get mod info - fn_mod_get_info_from_command - # Check if mod is already installed - fn_mod_already_installed - # Check and create required files - fn_mods_files - # Clear lgsm/tmp/mods dir if exists then recreate it - fn_clear_tmp_mods - fn_mods_tmpdir - # Download & extract mod - fn_install_mod_dl_extract - # Convert to lowercase if needed - fn_mod_lowercase - # Build a file list - fn_mod_fileslist - # Copying to destination - fn_mod_copy_destination - # Ending with installation routines - fn_mod_add_list - # Post install fixes - fn_postinstall_tasks - # Cleaning - fn_clear_tmp_mods - echo "${modprettyname} installed" - fn_script_log_pass "${modprettyname} installed." -} +echo "Available addons/mods" +echo "=================================" +# Display available mods from mods_list.sh +# Set and reset vars +compatiblemodslistindex=0 +# As long as we're within index values +while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do + # Set values for convenience + displayedmodname="${compatiblemodslist[compatiblemodslistindex]}" + displayedmodcommand="${compatiblemodslist[compatiblemodslistindex+1]}" + displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" + displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" + # Output mods to the user + echo -e "\e[1m${displayedmodname}${default} - ${displayedmoddescription} - ${displayedmodsite}" + echo -e " * ${cyan}${displayedmodcommand}${default}" + # Increment index from the amount of values we just displayed + let "compatiblemodslistindex+=4" + ((totalmods++)) +done + +# If no mods are available for a specific game +if [ -z "${compatiblemodslist}" ]; then + fn_print_fail "No mods are currently available for ${gamename}." + fn_script_log_info "No mods are currently available for ${gamename}." + core_exit.sh +fi +fn_script_log_info "${totalmods} addons/mods are available for install" + +## User selects a mod +echo "" +while [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; do + echo -en "Enter an ${cyan}addon/mod${default} to ${green}install${default} (or exit to abort): " + read -r usermodselect + # Exit if user says exit or abort + if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then + core_exit.sh + # Supplementary output upon invalid user input + elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then + fn_print_error2_nl "${usermodselect} is not a valid addon/mod." + fi +done +currentmod="${usermodselect}" + +echo "" +echo "Installing ${modprettyname}" +echo "=================================" +fn_script_log_info "${modprettyname} selected for install" + +# Check if the mod is already installed and warn the user +if [ -f "${modsinstalledlistfullpath}" ]; then + if [ -n "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then + fn_print_warning_nl "${modprettyname} is already installed" + fn_script_log_warn "${modprettyname} is already installed" + sleep 1 + echo " * Any configs may be overwritten." + while true; do + read -e -i "y" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; core_exit.sh;; + * ) echo "Please answer yes or no.";; + esac + done + fi +fn_script_log_info "User selected to continue" +fi + +## Installation + +fn_mod_get_info +fn_mod_already_installed +fn_create_mods_dir +fn_mods_clear_tmp_dir +fn_mods_create_tmp_dir +fn_mod_install_files +fn_mod_lowercase +fn_mod_create_filelist +fn_mod_copy_destination +fn_mod_add_list +fn_mod_tidy_files_list +fn_mods_clear_tmp_dir +echo "${modprettyname} installed" +fn_script_log_pass "${modprettyname} installed." -check.sh -mods_core.sh -fn_mods_install_init -fn_mod_installation core_exit.sh \ No newline at end of file diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 6c8fdf0bb..e0b1623d1 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -9,114 +9,123 @@ local commandname="MODS" local commandaction="addons/mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +check.sh +mods_core.sh +fn_mods_check_installed +fn_print_header +echo "Remove addons/mods" +echo "=================================" -fn_mods_remove_init(){ - fn_print_header - echo "Remove addons/mods" - echo "=================================" - # A simple function to exit if no mods were installed - # Also returns ${installedmodscount} if mods were found - fn_mods_exit_if_not_installed - # Displays installed addons to the user - fn_installed_mods_medium_list - echo "" - # Keep prompting as long as the user input doesn't correspond to an available mod - while [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; do - echo -en "Enter a ${cyan}mod${default} to ${red}remove${default} (or exit to abort): " - read -r usermodselect - # Exit if user says exit or abort - if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then - core_exit.sh - # Supplementary output upon invalid user input - elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then - fn_print_error2_nl "${usermodselect} is not a valid addon/mod." - fi - done - fn_print_warning_nl "You are about to remove ${cyan}${usermodselect}${default}." - echo " * Any custom files/configuration will be removed." - while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; - esac - done - # Gives a pretty name to the user and get all mod info - currentmod="${usermodselect}" - fn_mod_get_info_from_command - # Check file list in order to make sure we're able to remove the mod (returns ${modsfilelistsize}) - fn_check_files_list +## Displays list of installed mods +# Generates list to display to user +fn_mods_installed_list +for ((mlindex=0; mlindex < ${#installedmodslist[@]}; mlindex++)); do + # Current mod is the "mlindex" value of the array we are going through + currentmod="${installedmodslist[mlindex]}" + # Get mod info + fn_mod_get_info + # Display mod info to the user + echo -e "${cyan}${modcommand}${default} - \e[1m${modprettyname}${default} - ${moddescription}" +done -} +echo "" +# Keep prompting as long as the user input doesn't correspond to an available mod +while [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; do + echo -en "Enter an ${cyan}addon/mod${default} to ${green}install${default} (or exit to abort): " + read -r usermodselect + # Exit if user says exit or abort + if [ "${usermodselect}" == "exit" ]||[ "${usermodselect}" == "abort" ]; then + core_exit.sh + # Supplementary output upon invalid user input + elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then + fn_print_error2_nl "${usermodselect} is not a valid addon/mod." + fi +done -# Uninstall the mod -fn_mod_remove_process(){ - fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" - echo -e "removing ${modprettyname}" - echo -e "* ${modsfilelistsize} files to be removed" - echo -e "* location: ${modinstalldir}" - sleep 1 - # Go through every file and remove it - modfileline="1" - tput sc - while [ "${modfileline}" -le "${modsfilelistsize}" ]; do - # Current line defines current file to remove - currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.txt")" - # If file or directory exists, then remove it - fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" - if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then - rm -rf "${modinstalldir}/${currentfileremove}" - local exitcode=$? - fi - tput rc; tput el - printf "removing ${modprettyname} ${totalfileswc} / ${modsfilelistsize} : ${currentfileremove}..." +fn_print_warning_nl "You are about to remove ${cyan}${usermodselect}${default}." +echo " * Any custom files/configuration will be removed." +while true; do + read -e -i "y" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; exit;; + * ) echo "Please answer yes or no.";; +esac +done - ((totalfileswc++)) - let modfileline=modfileline+1 - done - tput rc; tput ed; - echo -ne "removing ${modprettyname} ${totalfileswc} / ${modsfilelistsize}..." - if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi - sleep 0.5 - # Remove file list - echo -en "removing ${modcommand}-files.txt..." - sleep 0.5 - fn_script_log "Removing: ${modsdatadir}/${modcommand}-files.txt" - rm -rf "${modsdatadir}/${modcommand}-files.txt" - local exitcode=$? - if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi - # Remove from installed mods list - echo -en "removing ${modcommand} from ${modslockfile}..." - sleep 0.5 - fn_script_log "Removing: ${modcommand} from ${modslockfilefullpath}" - sed -i "/^${modcommand}$/d" "${modslockfilefullpath}" - # Post install tasks to solve potential issues - local exitcode=$? - if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl +currentmod="${usermodselect}" +fn_mod_get_info +fn_check_mod_files_list + +# Uninstall the mod +fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" +echo -e "removing ${modprettyname}" +echo -e "* ${modsfilelistsize} files to be removed" +echo -e "* location: ${modinstalldir}" +sleep 1 +# Go through every file and remove it +modfileline="1" +tput sc +while [ "${modfileline}" -le "${modsfilelistsize}" ]; do + # Current line defines current file to remove + currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.txt")" + # If file or directory exists, then remove it + fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" + if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then + rm -rf "${modinstalldir}/${currentfileremove}" + local exitcode=$? fi - fn_postuninstall_tasks - echo "${modprettyname} removed" - fn_script_log "${modprettyname} removed" -} + tput rc; tput el + printf "removing ${modprettyname} ${modfileline} / ${modsfilelistsize} : ${currentfileremove}..." + ((modfileline++)) +done +tput rc; tput ed; +echo -ne "removing ${modprettyname} ${modfileline} / ${modsfilelistsize}..." +if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + core_exit.sh +else + fn_print_ok_eol_nl +fi +sleep 0.5 + +# Remove file list +echo -en "removing ${modcommand}-files.txt..." +sleep 0.5 +fn_script_log "Removing: ${modsdatadir}/${modcommand}-files.txt" +rm -rf "${modsdatadir}/${modcommand}-files.txt" +local exitcode=$? +if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + core_exit.sh +else + fn_print_ok_eol_nl +fi + +# Remove mods from installed mods list +echo -en "removing ${modcommand} from ${modslockfile}..." +sleep 0.5 +fn_script_log "Removing: ${modcommand} from ${modslockfilefullpath}" +sed -i "/^${modcommand}$/d" "${modslockfilefullpath}" +local exitcode=$? +if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + core_exit.sh +else + fn_print_ok_eol_nl +fi + +# Oxide fix +# Oxide replaces server files, so a validate is required after uninstall +if [ "${engine}" == "unity3d" ]&&[[ "${modprettyname}" == *"Oxide"* ]]; then + fn_print_information_nl "Validating to restore original ${gamename} files replaced by Oxide" + fn_script_log "Validating to restore original ${gamename} files replaced by Oxide" + exitbypass="1" + command_validate.sh + unset exitbypass +fi +echo "${modprettyname} removed" +fn_script_log "${modprettyname} removed" -check.sh -mods_core.sh -fn_mods_remove_init -fn_mod_remove_process core_exit.sh diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index ad757da6c..123e2b4e8 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -9,81 +9,107 @@ local commandname="MODS" local commandaction="Mods Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" +check.sh +mods_core.sh -fn_mods_update_init(){ - fn_script_log "Entering mods & addons update" - echo "=================================" - echo "${gamename} mods & addons update" - # A simple function to exit if no mods were installed - # Also returns ${installedmodscount} if mods were found - fn_mods_exit_if_not_installed - echo "" - fn_print_information_nl "${installedmodscount} mods or addons will be updated:" - fn_script_log_info "${installedmodscount} mods or addons will be updated" - # Display a list of installed addons - fn_installed_mods_update_list -} +fn_print_header -# Recursively list all installed mods and apply update -fn_mods_update_loop(){ - # Reset line value - installedmodsline="1" - while [ $installedmodsline -le $installedmodscount ]; do - # Current line defines current mod command - currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" - if [ -n "${currentmod}" ]; then - # Get mod info - fn_mod_get_info_from_command - # Don't update the mod if it's policy is to "NOUPDATE" - if [ "${modkeepfiles}" == "NOUPDATE" ]; then - fn_print_info "${modprettyname} won't be updated to preserve custom files" - fn_script_log "${modprettyname} won't be updated to preserve custom files." - let installedmodsline=installedmodsline+1 - else - echo "" - fn_print_dots_nl "Updating ${modprettyname}" - fn_script_log "Updating ${modprettyname}." - # Check and create required files - fn_mods_files - # Clear lgsm/tmp/mods dir if exists then recreate it - fn_clear_tmp_mods - fn_mods_tmpdir - # Download mod - fn_mod_dl - # Extract the mod - fn_mod_extract - # Convert to lowercase if needed - fn_mod_lowercase - # Remove files that should not be erased - fn_remove_cfg_files - # Build a file list - fn_mod_fileslist - # Copying to destination - fn_mod_copy_destination - # Ending with installation routines - fn_mod_add_list - # Post install fixes - fn_postinstall_tasks - # Cleaning - fn_clear_tmp_mods - fn_print_ok "${modprettyname} updated" - fn_script_log "${modprettyname} updated." - let installedmodsline=installedmodsline+1 - fi +echo "Update addons/mods" +echo "=================================" +fn_mods_check_installed +fn_print_information_nl "${installedmodscount} addons/mods will be updated" +fn_script_log_info "${installedmodscount} mods or addons will be updated" +fn_mods_installed_list +echo "" +echo "Installed addons/mods" +echo "=================================" +# Go through all available commands, get details and display them to the user +for ((ulindex=0; ulindex < ${#installedmodslist[@]}; ulindex++)); do + # Current mod is the "ulindex" value of the array we're going through + currentmod="${installedmodslist[ulindex]}" + fn_mod_get_info + # Display installed mods and the update policy + if [ -z "${modkeepfiles}" ]; then + # If modkeepfiles is not set for some reason, that's a problem + fn_script_log_error "Couldn't find update policy for ${modprettyname}" + fn_print_error_nl "Couldn't find update policy for ${modprettyname}" + exitcode="1" + core_exit.sh + # If the mod won't get updated + elif [ "${modkeepfiles}" == "NOUPDATE" ]; then + echo -e " * \e[31m${modprettyname}${default} (won't be updated)" + # If the mode is just overwritten + elif [ "${modkeepfiles}" == "OVERWRITE" ]; then + echo -e " * \e[1m${modprettyname}${default} (overwrite)" + else + echo -e " * ${yellow}${modprettyname}${default} (common custom files remain untouched)" + fi +done + +## Update +# List all installed mods and apply update +# Reset line value +installedmodsline="1" +while [ ${installedmodsline} -le ${installedmodscount} ]; do + currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" + if [ -n "${currentmod}" ]; then + fn_mod_get_info + # Don not update mod if the policy is set to "NOUPDATE" + if [ "${modkeepfiles}" == "NOUPDATE" ]; then + fn_print_info "${modprettyname} will not be updated to preserve custom files" + fn_script_log_info "${modprettyname} will not be updated to preserve custom files" else - fn_print_fail "No mod was selected" - fn_script_log_fail "No mod was selected." - exitcode="1" - core_exit.sh + echo "" + fn_create_mods_dir + fn_mods_clear_tmp_dir + fn_mods_create_tmp_dir + fn_mod_install_files + fn_mod_lowercase + fn_remove_cfg_files + fn_mod_create_filelist + fn_mod_copy_destination + fn_mod_add_list + fn_mod_tidy_files_list + fn_mods_clear_tmp_dir fi - done - echo "" - fn_print_ok_nl "Mods update complete" - fn_script_log "Mods update complete." + ((installedmodsline++)) + else + fn_print_fail "No mod was selected" + fn_script_log_fail "No mod was selected" + exitcode="1" + core_exit.sh + fi +done +echo "" +fn_print_ok_nl "Mods update complete" +fn_script_log "Mods update complete" + +# Prevents specific files being overwritten upon update (set by ${modkeepfiles}) +# For that matter, remove cfg files after extraction before copying them to destination +fn_remove_cfg_files(){ + if [ "${modkeepfiles}" != "OVERWRITE" ]&&[ "${modkeepfiles}" != "NOUPDATE" ]; then + fn_print_dots "Preventing overwriting of ${modprettyname} config files" + fn_script_log "Preventing overwriting of ${modprettyname} config files" + sleep 0.5 + # Count how many files there are to remove + removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" + # Test all subvalues of "modkeepfiles" using the ";" separator + for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do + # Put the current file we are looking for into a variable + filetoremove="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" + # If it matches an existing file that have been extracted delete the file + if [ -f "${extractdir}/${filetoremove}" ]||[ -d "${extractdir}/${filetoremove}" ]; then + rm -r "${extractdir}/${filetoremove}" + # Write the file path in a tmp file, to rebuild a full file list as it is rebuilt upon update + if [ ! -f "${modsdir}/.removedfiles.tmp" ]; then + touch "${modsdir}/.removedfiles.tmp" + fi + echo "${filetoremove}" >> "${modsdir}/.removedfiles.tmp" + fi + done + fn_print_ok "Preventing overwriting of ${modprettyname} config files" + sleep 0.5 + fi } -check.sh -mods_core.sh -fn_mods_update_init -fn_mods_update_loop core_exit.sh diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 4295fc478..f35667c6b 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -16,82 +16,17 @@ extractdir="${modstmpdir}/extract" modsinstalledlist="installed-mods.txt" modsinstalledlistfullpath="${modsdir}/${modsinstalledlist}" -# Database initialisation -mods_list.sh - -## Directory management - -# Create mods files and directories if it doesn't exist -# Assuming the game is already installed as mods_list.sh checked for it. -fn_mods_files(){ - # Create mod install directory - if [ ! -d "${modinstalldir}" ]; then - echo "creating mods install directory ${modinstalldir}..." - mkdir -p "${modinstalldir}" - exitcode=$? - if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Creating mod download dir ${modstmpdir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Creating mod download dir ${modstmpdir}" - fi - sleep 0.5 - fi - - # Create lgsm/data/${modsinstalledlist} - if [ ! -f "${modsinstalledlistfullpath}" ]; then - touch "${modsinstalledlistfullpath}" - fn_script_log "Created ${modsinstalledlistfullpath}" - fi -} - -# Create tmp download mod directory -fn_mods_tmpdir(){ - if [ ! -d "${modstmpdir}" ]; then - mkdir -p "${modstmpdir}" - exitcode=$? - echo -ne "creating mod download dir ${modstmpdir}..." - if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Creating mod download dir ${modstmpdir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Creating mod download dir ${modstmpdir}" - fi - fi -} -# Clear contents of mod download directory when finished -fn_clear_tmp_mods(){ - if [ -d "${modstmpdir}" ]; then - rm -r "${modstmpdir}"/* - exitcode=$? - if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Clearing mod download directory ${modstmpdir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Clearing mod download directory ${modstmpdir}" - fi - - fi - # Clear temp file list as well - if [ -f "${modsdir}/.removedfiles.tmp" ]; then - rm "${modsdir}/.removedfiles.tmp" - fi -} +## Installation -## Download management -fn_install_mod_dl_extract(){ +# Download management +fn_mod_install_files(){ fn_fetch_file "${modurl}" "${modstmpdir}" "${modfilename}" # Check if variable is valid checking if file has been downloaded and exists if [ ! -f "${modstmpdir}/${modfilename}" ]; then - fn_print_failure "An issue occurred upon downloading ${modprettyname}" + fn_print_failure "An issue occurred downloading ${modprettyname}" + fn_script_log_fail "An issue occurred downloading ${modprettyname}" core_exit.sh fi if [ ! -d "${extractdir}" ]; then @@ -132,60 +67,29 @@ fn_mod_lowercase(){ fi } -# Don't overwrite specified files upon update (set by ${modkeepfiles}) -# For that matter, remove cfg files after extraction before copying them to destination -fn_remove_cfg_files(){ - if [ "${modkeepfiles}" != "OVERWRITE" ]&&[ "${modkeepfiles}" != "NOUPDATE" ]; then - fn_print_dots "Allow for not overwriting ${modprettyname} config files" - fn_script_log "Allow for not overwriting ${modprettyname} config files" - sleep 0.5 - # Let's count how many files there are to remove - removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" - # Test all subvalue of "modkeepfiles" using the ";" separator - for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do - # Put current file we're looking for into a variable - filetoremove="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" - # If it matches an existing file that have been extracted - if [ -f "${extractdir}/${filetoremove}" ]||[ -d "${extractdir}/${filetoremove}" ]; then - # Then delete the file! - rm -r "${extractdir}/${filetoremove}" - # Write this file path in a tmp file, to rebuild a full file list since it is rebuilt upon update - if [ ! -f "${modsdir}/.removedfiles.tmp" ]; then - touch "${modsdir}/.removedfiles.tmp" - fi - echo "${filetoremove}" >> "${modsdir}/.removedfiles.tmp" - fi - done - fn_print_ok "Allow for preserving ${modprettyname} config files" - sleep 0.5 - fi -} - # Create ${modcommand}-files.txt containing the full extracted file/directory list -fn_mod_fileslist(){ +fn_mod_create_filelist(){ echo -ne "building ${modcommand}-files.txt..." - sleep 0.5 # ${modsdir}/${modcommand}-files.txt - find "${extractdir}" -mindepth 1 -printf '%P\n' > "${modsdir}"/${modcommand}-files.txt + find "${extractdir}" -mindepth 1 -printf '%P\n' > "${modsdir}/${modcommand}-files.txt" local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl - fn_script_log_fatal "Building ${modcommand}-files.txt" + fn_script_log_fatal "Building ${modsdir}/${modcommand}-files.txt" core_exit.sh else fn_print_ok_eol_nl - fn_script_log_pass "Building ${modcommand}-files.txt" + fn_script_log_pass "Building ${modsdir}/${modcommand}-files.txt" fi - fn_script_log "Writing file list ${modsdir}/${modcommand}-files.txt" # Adding removed files if needed if [ -f "${modsdir}/.removedfiles.tmp" ]; then - cat "${modsdir}/.removedfiles.tmp" >> "${modsdir}"/${modcommand}-files.txt + cat "${modsdir}/.removedfiles.tmp" >> "${modsdir}/${modcommand}-files.txt" fi sleep 0.5 } -# Copy the mod to the destination ${modinstalldir} +# Copy the mod into serverfiles fn_mod_copy_destination(){ echo -ne "copying ${modprettyname} to ${modinstalldir}..." sleep 0.5 @@ -200,75 +104,32 @@ fn_mod_copy_destination(){ fi } -# Check if the mod is already installed and warn the user -fn_mod_already_installed(){ - if [ -f "${modsinstalledlistfullpath}" ]; then - if [ -n "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then - fn_print_warning_nl "${modprettyname} is already installed" - fn_script_log_warn "${modprettyname} is already installed" - sleep 1 - echo " * Any configs may be overwritten." - while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; core_exit.sh;; - * ) echo "Please answer yes or no.";; - esac - done - fi - fn_script_log_info "User selected to continue" - fi -} - -# Add the mod to the installed mods list +# Add the mod to the installed-mods.txt fn_mod_add_list(){ - # Append modname to lockfile if it's not already in it if [ ! -n "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then echo "${modcommand}" >> "${modsinstalledlistfullpath}" fn_script_log_info "${modcommand} added to ${modsinstalledlist}" fi } -fn_check_files_list(){ - # File list must exist and be valid before any operation on it - if [ -f "${modsdir}/${modcommand}-files.txt" ]; then - # How many lines is the file list - modsfilelistsize="$(cat "${modsdir}/${modcommand}-files.txt" | wc -l)" - # If file list is empty - if [ "${modsfilelistsize}" -eq 0 ]; then - fn_print_failure "${modcommand}-files.txt is empty" - echo "* Unable to remove ${modprettyname}" - fn_script_log_fatal "${modcommand}-files.txt is empty: Unable to remove ${modprettyname}." - core_exit.sh - fi - else - fn_print_failure "${modsdir}/${modcommand}-files.txt does not exist" - fn_script_log_fatal "${modsdir}/${modcommand}-files.txt does not exist: Unable to remove ${modprettyname}." - core_exit.sh - fi -} - -# Apply some post-install fixes to make sure everything will be fine -fn_postinstall_tasks(){ - # Prevent sensitive directories from being erased upon uninstall by removing them from: ${modsdir}/${modcommand}-files.txt +fn_mod_tidy_files_list(){ + # Prevent sensitive directories from being erased by removing them from: ${modcommand}-files.txt # Check file validity - fn_check_files_list + fn_check_mod_files_list # Output to the user echo -ne "tidy up ${modcommand}-files.txt..." sleep 0.5 - fn_script_log_info "Rearranging ${modcommand}-files.txt" - # What lines/files to remove from file list (end var with a ";" separator) + fn_script_log_info "Tidy up ${modcommand}-files.txt" + # Lines/files to remove from file list (end with ";" separator) removefromlist="cfg;addons;" # Loop through files to remove from file list, - # that way these files won't get removed upon uninstall - # How many elements to remove from list + # generate elements to remove from list removefromlistamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" # Test all subvalue of "removefromlist" using the ";" separator for ((filesindex=1; filesindex < ${removefromlistamount}; filesindex++)); do # Put current file into test variable - removefilevar="$( echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }' )" - # Then delete matching line(s)! + removefilevar="$(echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }')" + # Delete matching line(s) sed -i "/^${removefilevar}$/d" "${modsdir}/${modcommand}-files.txt" local exitcode=$? if [ ${exitcode} -ne 0 ]; then @@ -290,47 +151,112 @@ fn_postinstall_tasks(){ fi } -# Apply some post-uninstall fixes to make sure everything will be fine -fn_postuninstall_tasks(){ - # Oxide fix - # Oxide replaces server files, so a validate is required after uninstall - if [ "${engine}" == "unity3d" ]&&[[ "${modprettyname}" == *"Oxide"* ]]; then - fn_print_information_nl "Validating to restore original ${gamename} files replaced by Oxide" - fn_script_log "Validating to restore original ${gamename} files replaced by Oxide" - exitbypass="1" - command_validate.sh - unset exitbypass +## Information Gathering + +# Get details of a mod any (relevant and unique, such as full mod name or install command) value +fn_mod_get_info(){ + # Variable to know when job is done + modinfocommand="0" + # Find entry in global array + for ((index=0; index <= ${#mods_global_array[@]}; index++)); do + # When entry is found + if [ "${mods_global_array[index]}" == "${currentmod}" ]; then + # Go back to the previous "MOD" separator + for ((index=index; index <= ${#mods_global_array[@]}; index--)); do + # When "MOD" is found + if [ "${mods_global_array[index]}" == "MOD" ]; then + # Get info + if [ -z "$index" ]; then + fn_print_error "index variable not set. Please report an issue." + echo "* https://github.com/GameServerManagers/LinuxGSM/issues" + exitcode="1" + core_exit.sh + fi + modcommand="${mods_global_array[index+1]}" + modprettyname="${mods_global_array[index+2]}" + modurl="${mods_global_array[index+3]}" + modfilename="${mods_global_array[index+4]}" + modsubdirs="${mods_global_array[index+5]}" + modlowercase="${mods_global_array[index+6]}" + modinstalldir="${mods_global_array[index+7]}" + modkeepfiles="${mods_global_array[index+8]}" + modengines="${mods_global_array[index+9]}" + modgames="${mods_global_array[index+10]}" + modexcludegames="${mods_global_array[index+11]}" + modsite="${mods_global_array[index+12]}" + moddescription="${mods_global_array[index+13]}" + fi + modinfocommand="1" + break + fi + ((totalmods++)) + done + fi + # Exit the loop if job is done + if [ "${modinfocommand}" == "1" ]; then + break + fi + done + + # What happens if mod is not found + if [ "${modinfocommand}" == "0" ]; then + fn_script_log_error "Could not find information for ${currentmod}" + fn_print_error_nl "Could not find information for ${currentmod}" + exitcode="1" + core_exit.sh fi } -######################### -## mods_list.sh arrays ## -######################### - -## Define info for a mod - -# Define all variables from a mod at once when index is set to a separator -fn_mod_info(){ -# If for some reason no index is set, none of this can work -if [ -z "$index" ]; then - fn_print_error "index variable not set. Please report an issue to LGSM Team." - echo "* https://github.com/GameServerManagers/LinuxGSM/issues" - exitcode="1" - core_exit.sh -fi - modcommand="${mods_global_array[index+1]}" - modprettyname="${mods_global_array[index+2]}" - modurl="${mods_global_array[index+3]}" - modfilename="${mods_global_array[index+4]}" - modsubdirs="${mods_global_array[index+5]}" - modlowercase="${mods_global_array[index+6]}" - modinstalldir="${mods_global_array[index+7]}" - modkeepfiles="${mods_global_array[index+8]}" - modengines="${mods_global_array[index+9]}" - modgames="${mods_global_array[index+10]}" - modexcludegames="${mods_global_array[index+11]}" - modsite="${mods_global_array[index+12]}" - moddescription="${mods_global_array[index+13]}" +# Builds list of installed mods +# using installed-mods.txt grabing mod info from mods_list.sh +fn_mods_installed_list(){ + # Set/reset variables + installedmodsline="1" + installedmodslist=() + # Loop through every line of the installed mods list ${modsinstalledlistfullpath} + while [ ${installedmodsline} -le ${installedmodscount} ]; do + currentmod="$(sed "${installedmodsline}q;d" "${modsinstalledlistfullpath}")" + # Get mod info to make sure mod exists + fn_mod_get_info + # Add the mod to available commands + installedmodslist+=( "${modcommand}" ) + # Increment line check + ((installedmodsline++)) + done + if [ -n "${totalmods}" ] ;then + fn_script_log_info "${totalmods} addons/mods are already installed" + fi +} + +# Checks if a mod is compatible for installation +# Provides available mods for installation +# Provides commands for mods installation +fn_mods_available(){ + # First, reset variables + compatiblemodslist=() + availablemodscommands=() + modprettynamemaxlength="0" + modsitemaxlength="0" + moddescriptionmaxlength="0" + modcommandmaxlength="0" + # Find compatible games + # Find separators through the global array + for ((index="0"; index <= ${#mods_global_array[@]}; index++)); do + # If current value is a separator; then + if [ "${mods_global_array[index]}" == "${modseparator}" ]; then + # Set mod variables + fn_mods_define + # Test if game is compatible + fn_mod_compatible_test + # If game is compatible + if [ "${modcompatibility}" == "1" ]; then + # Put it into an array to prepare user output + compatiblemodslist+=( "${modprettyname}" "${modcommand}" "${modsite}" "${moddescription}" ) + # Keep available commands in an array to make life easier + availablemodscommands+=( "${modcommand}" ) + fi + fi + done } ## Mod compatibility check @@ -413,80 +339,82 @@ fn_mod_compatible_test(){ fi } -# Checks if a mod is compatible for installation -# Provides available mods for installation -# Provides commands for mods installation -fn_mods_available(){ - # First, reset variables - compatiblemodslist=() - availablemodscommands=() - modprettynamemaxlength="0" - modsitemaxlength="0" - moddescriptionmaxlength="0" - modcommandmaxlength="0" - # Find compatible games - # Find separators through the global array - for ((index="0"; index <= ${#mods_global_array[@]}; index++)); do - # If current value is a separator; then - if [ "${mods_global_array[index]}" == "${modseparator}" ]; then - # Set mod variables - fn_mod_info - # Test if game is compatible - fn_mod_compatible_test - # If game is compatible - if [ "${modcompatibility}" == "1" ]; then - # Put it into an array to prepare user output - compatiblemodslist+=( "${modprettyname}" "${modcommand}" "${modsite}" "${moddescription}" ) - # Keep available commands in an array to make life easier - availablemodscommands+=( "${modcommand}" ) - fi +## Directory management + +# Create mods files and directories if it doesn't exist +fn_create_mods_dir(){ + # Create mod install directory + if [ ! -d "${modinstalldir}" ]; then + echo "creating mods install directory ${modinstalldir}..." + mkdir -p "${modinstalldir}" + exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_script_log_fatal "Creating mod download dir ${modinstalldir}" + core_exit.sh + else + fn_print_ok_eol_nl + fn_script_log_pass "Creating mod download dir ${modinstalldir}" fi - done + sleep 0.5 + fi + + # Create lgsm/data/${modsinstalledlist} + if [ ! -f "${modsinstalledlistfullpath}" ]; then + touch "${modsinstalledlistfullpath}" + fn_script_log_info "Created ${modsinstalledlistfullpath}" + fi } -# Output available mods in a nice way to the user -fn_mods_show_available(){ - # Set and reset vars - compatiblemodslistindex=0 - # As long as we're within index values - while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do - # Set values for convenience - displayedmodname="${compatiblemodslist[compatiblemodslistindex]}" - displayedmodcommand="${compatiblemodslist[compatiblemodslistindex+1]}" - displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" - displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" - # Output mods to the user - echo -e "\e[1m${displayedmodname}${default} - ${displayedmoddescription} - ${displayedmodsite}" - echo -e " * ${cyan}${displayedmodcommand}${default}" - # Increment index from the amount of values we just displayed - let "compatiblemodslistindex+=4" - ((totalmods++)) - done - # If no mods are found - if [ -z "${compatiblemodslist}" ]; then - fn_print_fail "No mods are currently available for ${gamename}." - core_exit.sh +# Create tmp download mod directory +fn_mods_create_tmp_dir(){ + if [ ! -d "${modstmpdir}" ]; then + mkdir -p "${modstmpdir}" + exitcode=$? + echo -ne "creating mod download dir ${modstmpdir}..." + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_script_log_fatal "Creating mod download dir ${modstmpdir}" + core_exit.sh + else + fn_print_ok_eol_nl + fn_script_log_pass "Creating mod download dir ${modstmpdir}" + fi fi - fn_script_log_info "${totalmods} addons/mods are available for install" } -# Checks if mods have been installed -# Also returns ${installedmodscount} if mods were found -fn_check_installed_mods(){ +# Remove the tmp mod download directory when finished +fn_mods_clear_tmp_dir(){ + if [ -d "${modstmpdir}" ]; then + rm -r "${modstmpdir}" + exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_script_log_fatal "Clearing mod download directory ${modstmpdir}" + core_exit.sh + else + fn_print_ok_eol_nl + fn_script_log_pass "Clearing mod download directory ${modstmpdir}" + fi + + fi + # Clear temp file list as well + if [ -f "${modsdir}/.removedfiles.tmp" ]; then + rm "${modsdir}/.removedfiles.tmp" + fi +} + + +# Exit if no mods were installed +fn_mods_check_installed(){ # Count installed mods if [ -f "${modsinstalledlistfullpath}" ]; then installedmodscount="$(cat "${modsinstalledlistfullpath}" | wc -l)" + else + installedmodscount=0 fi -} - -# A simple function to exit if no mods were installed -# Also returns ${installedmodscount} if mods were found -fn_mods_exit_if_not_installed(){ - # Checks if mods have been installed - # Also returns ${installedmodscount} if mods were found - fn_check_installed_mods - # If no mods lockfile is found or if it is empty - if [ ! -f "${modsinstalledlistfullpath}" ]||[ -z "${installedmodscount}" ]||[ ${installedmodscount} -le 0 ]; then + # If no mods are found + if [ ${installedmodscount} -eq 0 ]; then fn_print_information_nl "No installed mods or addons were found" echo " * Install mods using LGSM first with: ./${selfname} mods-install" fn_script_log_info "No installed mods or addons were found." @@ -494,155 +422,26 @@ fn_mods_exit_if_not_installed(){ fi } -# Builds installed mods list and sets available commands according to installed mods -# (requires ${installedmodscount} from fn_check_installed_mods) -fn_mods_available_commands_from_installed(){ - # Set/reset variables - installedmodsline="1" - installedmodslist=() - # Loop through every line of the installed mods list ${modsinstalledlistfullpath} - while [ ${installedmodsline} -le ${installedmodscount} ]; do - currentmod="$(sed "${installedmodsline}q;d" "${modsinstalledlistfullpath}")" - # Get mod info to make sure mod exists - fn_mod_get_info_from_command - # Add the mod to available commands - installedmodslist+=( "${modcommand}" ) - # Increment line check - let installedmodsline=installedmodsline+1 - done - if [ -n "${totalmods}" ] ;then - fn_script_log_info "${totalmods} addons/mods are already installed" - fi -} - -# Displays a detailed list of installed mods -# Requires fn_check_installed_mods and fn_mods_available_commands_from_installed to run -fn_installed_mods_detailed_list(){ - fn_check_installed_mods - fn_mods_available_commands_from_installed - # Were now based on ${installedmodslist} array's values - # We're gonna go through all available commands, get details and display them to the user - for ((dlindex=0; dlindex < ${#installedmodslist[@]}; dlindex++)); do - # Current mod is the "dlindex" value of the array we're going through - currentmod="${installedmodslist[dlindex]}" - # Get mod info - fn_mod_get_info_from_command - # Display mod info to the user - echo -e "\e[1m${modprettyname}${default} - ${moddescription} - ${modsite}" - echo -e " * ${cyan}${modcommand}${default}" - done -} - -# Displays a detailed list of installed mods -# Requires fn_check_installed_mods and fn_mods_available_commands_from_installed to run -fn_installed_mods_medium_list(){ - fn_check_installed_mods - fn_mods_available_commands_from_installed - # Were now based on ${installedmodslist} array's values - # We're gonna go through all available commands, get details and display them to the user - for ((mlindex=0; mlindex < ${#installedmodslist[@]}; mlindex++)); do - # Current mod is the "mlindex" value of the array we're going through - currentmod="${installedmodslist[mlindex]}" - # Get mod info - fn_mod_get_info_from_command - # Display mod info to the user - echo -e "${cyan}${modcommand}${default} - \e[1m${modprettyname}${default} - ${moddescription}" - done -} - -# Displays a simple list of installed mods -# Requires fn_check_installed_mods and fn_mods_available_commands_from_installed to run -# This list is only displayed when some mods are installed -fn_installed_mods_light_list(){ - fn_check_installed_mods - fn_mods_available_commands_from_installed - if [ "${installedmodscount}" -gt 0 ]; then - echo "Installed addons/mods" - echo "=================================" - # Were now based on ${installedmodslist} array's values - # We're gonna go through all available commands, get details and display them to the user - for ((llindex=0; llindex < ${#installedmodslist[@]}; llindex++)); do - # Current mod is the "llindex" value of the array we're going through - currentmod="${installedmodslist[llindex]}" - # Get mod info - fn_mod_get_info_from_command - # Display simple mod info to the user - echo -e " * \e[1m${green}${modcommand}${default}${default}" - ((totalmodsinstalled++)) - done - echo "" - fi -} - -# Displays a simple list of installed mods for mods-update command -# Requires fn_check_installed_mods and fn_mods_available_commands_from_installed to run -fn_installed_mods_update_list(){ - fn_check_installed_mods - fn_mods_available_commands_from_installed - echo "=================================" - echo "Installed addons/mods" - # Were now based on ${installedmodslist} array's values - # We're gonna go through all available commands, get details and display them to the user - for ((ulindex=0; ulindex < ${#installedmodslist[@]}; ulindex++)); do - # Current mod is the "ulindex" value of the array we're going through - currentmod="${installedmodslist[ulindex]}" - # Get mod info - fn_mod_get_info_from_command - # Display simple mod info to the user according to the update policy - # If modkeepfiles is not set for some reason, that's a problem - if [ -z "${modkeepfiles}" ]; then - fn_script_log_error "Couldn't find update policy for ${modprettyname}" - fn_print_error_nl "Couldn't find update policy for ${modprettyname}" - exitcode="1" +fn_check_mod_files_list(){ + # File list must exist and be valid before any operation on it + if [ -f "${modsdir}/${modcommand}-files.txt" ]; then + # How many lines is the file list + modsfilelistsize="$(cat "${modsdir}/${modcommand}-files.txt" | wc -l)" + # If file list is empty + if [ "${modsfilelistsize}" -eq 0 ]; then + fn_print_failure "${modcommand}-files.txt is empty" + echo "* Unable to remove ${modprettyname}" + fn_script_log_fatal "${modcommand}-files.txt is empty: Unable to remove ${modprettyname}." core_exit.sh - # If the mod won't get updated - elif [ "${modkeepfiles}" == "NOUPDATE" ]; then - echo -e " * \e[31m${modprettyname}${default} (won't be updated)" - # If the mode is just overwritten - elif [ "${modkeepfiles}" == "OVERWRITE" ]; then - echo -e " * \e[1m${modprettyname}${default} (overwrite)" - else - echo -e " * ${yellow}${modprettyname}${default} (common custom files remain untouched)" - fi - done -} - -# Get details of a mod any (relevant and unique, such as full mod name or install command) value -fn_mod_get_info_from_command(){ - # Variable to know when job is done - modinfocommand="0" - # Find entry in global array - for ((index=0; index <= ${#mods_global_array[@]}; index++)); do - # When entry is found - if [ "${mods_global_array[index]}" == "${currentmod}" ]; then - # Go back to the previous "MOD" separator - for ((index=index; index <= ${#mods_global_array[@]}; index--)); do - # When "MOD" is found - if [ "${mods_global_array[index]}" == "MOD" ]; then - # Get info - fn_mod_info - modinfocommand="1" - break - fi - ((totalmods++)) - done - - fi - # Exit the loop if job is done - if [ "${modinfocommand}" == "1" ]; then - break fi - done - - # What happens if mod is not found - if [ "${modinfocommand}" == "0" ]; then - fn_script_log_error "Could not find information for ${currentmod}" - fn_print_error_nl "Could not find information for ${currentmod}" - exitcode="1" + else + fn_print_failure "${modsdir}/${modcommand}-files.txt does not exist" + fn_script_log_fatal "${modsdir}/${modcommand}-files.txt does not exist: Unable to remove ${modprettyname}." core_exit.sh fi } -fn_mods_scrape_urls -fn_mods_info -fn_mods_available +# Database initialisation +mods_list.sh +mods_dir.sh +fn_mods_available \ No newline at end of file diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 73584f3dd..566efedc1 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -17,61 +17,57 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" modseparator="MOD" # Define mods information (required) -fn_mods_info(){ - # REQUIRED: mod_info_name=( MOD "modcommand" "Pretty Name" "URL" "filename" "modsubdirs" "LowercaseOn/Off" "/files/to/keep;" "/install/path" "ENGINES" "GAMES" "NOTGAMES" "AUTHOR_URL" "Short Description" ) - # Example 1) Well made mod: mod_info_name=( MOD "awesomemod" "This is an Awesome Mod" "https://awesomemod.com/latest.zip" "awesomemod.zip" "0" "LowercaseOff" "OVERWRITE" "${systemdir}/addons" "source;unity3d;" "GAMES" "NOTGAMES" "https://awesomemod.com/" "This mod knows that 42 is the answer" ) - # Example 2) Poorly made mod: mod_info_name=( MOD "stupidmod" "This is a stupid mod" "${crappymodurl}" "StupidMod.zip" "2" "LowercaseOn" "cfg;data/crappymod;" "${systemdir}" "source;" "GAMES" "Garry's mod;Counter-Strike: Source;" "This mod is dumber than dumb" ) - # None of those values can be empty - # index | Usage - # [0] | MOD: separator, all mods must begin with it - # [1] | "modcommand": the LGSM name and command to install the mod (must be unique and lowercase) - # [2] | "Pretty Name": the common name people use to call the mod that will be displayed to the user - # [3] | "URL": link to the file; can be a variable defined in fn_mods_nasty_urls (make sure curl can download it) - # [4] | "filename": the output filename - # [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) - # [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) - # [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) - # [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" to ignore the value or "NOUPDATE" to disallow updating - # [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value - # [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value - # [11] | "Unsupported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use NOTGAMES to ignore the value (useful to exclude a game when using Supported Engines) - # [12] | "AUTHOR_URL" is the author's website, displayed to the user when chosing mods to install - # [13] | "Short Description" a description showed to the user upon installation +# REQUIRED: mod_info_name=( MOD "modcommand" "Pretty Name" "URL" "filename" "modsubdirs" "LowercaseOn/Off" "/files/to/keep;" "/install/path" "ENGINES" "GAMES" "NOTGAMES" "AUTHOR_URL" "Short Description" ) +# Example 1) Well made mod: mod_info_name=( MOD "awesomemod" "This is an Awesome Mod" "https://awesomemod.com/latest.zip" "awesomemod.zip" "0" "LowercaseOff" "OVERWRITE" "${systemdir}/addons" "source;unity3d;" "GAMES" "NOTGAMES" "https://awesomemod.com/" "This mod knows that 42 is the answer" ) +# Example 2) Poorly made mod: mod_info_name=( MOD "stupidmod" "This is a stupid mod" "${crappymodurl}" "StupidMod.zip" "2" "LowercaseOn" "cfg;data/crappymod;" "${systemdir}" "source;" "GAMES" "Garry's mod;Counter-Strike: Source;" "This mod is dumber than dumb" ) +# None of those values can be empty +# index | Usage +# [0] | MOD: separator, all mods must begin with it +# [1] | "modcommand": the LGSM name and command to install the mod (must be unique and lowercase) +# [2] | "Pretty Name": the common name people use to call the mod that will be displayed to the user +# [3] | "URL": link to the file; can be a variable defined in fn_mods_nasty_urls (make sure curl can download it) +# [4] | "filename": the output filename +# [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) +# [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) +# [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) +# [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" to ignore the value or "NOUPDATE" to disallow updating +# [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value +# [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value +# [11] | "Unsupported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use NOTGAMES to ignore the value (useful to exclude a game when using Supported Engines) +# [12] | "AUTHOR_URL" is the author's website, displayed to the user when chosing mods to install +# [13] | "Short Description" a description showed to the user upon installation - # Source mods - mod_info_metamod=( MOD "metamod" "MetaMod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/metaplugins.ini;" "source;" "GAMES" "NOTGAMES" "https://www.sourcemm.net" "Plugins Framework" ) - mod_info_sourcemod=( MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "source;" "GAMES" "NOTGAMES" "http://www.sourcemod.net" "Admin Features (requires MetaMod)" ) - # Garry's Mod Addons - mod_info_ulib=( MOD "ulib" "ULib" "https://codeload.github.com/TeamUlysses/ulib/zip/master" "ulib-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Complete Framework" ) - mod_info_ulx=( MOD "ulx" "ULX" "https://codeload.github.com/TeamUlysses/ulx/zip/master" "ulx-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Admin Panel (requires ULib)" ) - mod_info_utime=( MOD "utime" "UTime" "https://github.com/TeamUlysses/utime/archive/master.zip" "utime-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Keep track of players play time" ) - mod_info_uclip=( MOD "uclip" "UClip" "https://github.com/TeamUlysses/uclip/archive/master.zip" "uclip-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "An alternative to noclip" ) - mod_info_acf=( MOD "acf" "Armoured Combat Framework" "https://github.com/nrlulz/ACF/archive/master.zip" "acf-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/nrlulz/ACF" "Realistic Wepons & Engines" ) - mod_info_acf_missiles=( MOD "acfmissiles" "ACF Missiles" "https://github.com/Bubbus/ACF-Missiles/archive/master.zip" "acf-missiles-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Bubbus/ACF-Missiles" "More missiles for ACF" ) - mod_info_acf_advdupe2=( MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/wiremod/advdupe2/archive/master.zip" "advdupe2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://www.wiremod.com" "Save your constructions" ) - mod_info_darkrp=( MOD "darkrp" "DarkRP" "https://github.com/FPtje/DarkRP/archive/master.zip" "darkrp-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Most popular gamemode" ) - mod_info_darkrpmodification=( MOD "darkrpmodification" "DarkRP Modification" "https://github.com/FPtje/darkrpmodification/archive/master.zip" "darkrpmodification-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "NOUPDATE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Customize DarkRP settings" ) - # Oxidemod - mod_info_rustoxide=( MOD "rustoxide" "Oxide for Rust" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-Rust.zip" "Oxide-Rust_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Rust;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-rust.1659" "Allows for the use of plugins" ) - mod_info_hwoxide=( MOD "hwoxide" "Oxide for Hurtworld" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-Hurtworld.zip" "Oxide-Hurtworld_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Hurtworld;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-hurtworld.1332" "Allows for the use of plugins" ) - mod_info_sdtdoxide=( MOD "sdtdoxide" "Oxide for 7 Days To Die" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-7DaysToDie.zip" "Oxide-7DaysToDie_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-7-days-to-die.813" "Allows for the use of plugins" ) +# Source mods +mod_info_metamod=( MOD "metamod" "MetaMod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/metaplugins.ini;" "source;" "GAMES" "NOTGAMES" "https://www.sourcemm.net" "Plugins Framework" ) +mod_info_sourcemod=( MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "source;" "GAMES" "NOTGAMES" "http://www.sourcemod.net" "Admin Features (requires MetaMod)" ) +# Garry's Mod Addons +mod_info_ulib=( MOD "ulib" "ULib" "https://codeload.github.com/TeamUlysses/ulib/zip/master" "ulib-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Complete Framework" ) +mod_info_ulx=( MOD "ulx" "ULX" "https://codeload.github.com/TeamUlysses/ulx/zip/master" "ulx-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Admin Panel (requires ULib)" ) +mod_info_utime=( MOD "utime" "UTime" "https://github.com/TeamUlysses/utime/archive/master.zip" "utime-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Keep track of players play time" ) +mod_info_uclip=( MOD "uclip" "UClip" "https://github.com/TeamUlysses/uclip/archive/master.zip" "uclip-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "An alternative to noclip" ) +mod_info_acf=( MOD "acf" "Armoured Combat Framework" "https://github.com/nrlulz/ACF/archive/master.zip" "acf-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/nrlulz/ACF" "Realistic Wepons & Engines" ) +mod_info_acf_missiles=( MOD "acfmissiles" "ACF Missiles" "https://github.com/Bubbus/ACF-Missiles/archive/master.zip" "acf-missiles-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Bubbus/ACF-Missiles" "More missiles for ACF" ) +mod_info_acf_advdupe2=( MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/wiremod/advdupe2/archive/master.zip" "advdupe2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://www.wiremod.com" "Save your constructions" ) +mod_info_darkrp=( MOD "darkrp" "DarkRP" "https://github.com/FPtje/DarkRP/archive/master.zip" "darkrp-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Most popular gamemode" ) +mod_info_darkrpmodification=( MOD "darkrpmodification" "DarkRP Modification" "https://github.com/FPtje/darkrpmodification/archive/master.zip" "darkrpmodification-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "NOUPDATE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Customize DarkRP settings" ) +# Oxidemod +mod_info_rustoxide=( MOD "rustoxide" "Oxide for Rust" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-Rust.zip" "Oxide-Rust_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Rust;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-rust.1659" "Allows for the use of plugins" ) +mod_info_hwoxide=( MOD "hwoxide" "Oxide for Hurtworld" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-Hurtworld.zip" "Oxide-Hurtworld_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Hurtworld;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-hurtworld.1332" "Allows for the use of plugins" ) +mod_info_sdtdoxide=( MOD "sdtdoxide" "Oxide for 7 Days To Die" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-7DaysToDie.zip" "Oxide-7DaysToDie_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-7-days-to-die.813" "Allows for the use of plugins" ) - # REQUIRED: Set all mods info into one array for convenience - mods_global_array=( "${mod_info_metamod[@]}" "${mod_info_sourcemod[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" ) -} +# REQUIRED: Set all mods info into one array for convenience +mods_global_array=( "${mod_info_metamod[@]}" "${mod_info_sourcemod[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" ) # Get a proper URL for mods that don't provide a good one (optional) -fn_mods_scrape_urls(){ - fn_script_log_info "Retrieving latest mods URLs" - # Metamod - metamodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" - metamodlatestfile="$(wget "${metamodscrapeurl}/?MD" -q -O -| grep "mmsource" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" - metamoddownloadurl="http://cdn.probablyaserver.com/sourcemod/" - metamodurl="${metamoddownloadurl}/${metamodlatestfile}" - # Sourcemod - sourcemodmversion="1.8" - sourcemodscrapeurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}/sourcemod-latest-linux" - sourcemodlatestfile="$(wget "${sourcemodscrapeurl}" -q -O -)" - sourcemoddownloadurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}" - sourcemodurl="${sourcemoddownloadurl}/${sourcemodlatestfile}" -} +fn_script_log_info "Retrieving latest mods URLs" +# Metamod +metamodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" +metamodlatestfile="$(wget "${metamodscrapeurl}/?MD" -q -O -| grep "mmsource" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" +metamoddownloadurl="http://cdn.probablyaserver.com/sourcemod/" +metamodurl="${metamoddownloadurl}/${metamodlatestfile}" +# Sourcemod +sourcemodmversion="1.8" +sourcemodscrapeurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}/sourcemod-latest-linux" +sourcemodlatestfile="$(wget "${sourcemodscrapeurl}" -q -O -)" +sourcemoddownloadurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}" +sourcemodurl="${sourcemoddownloadurl}/${sourcemodlatestfile}" From db3e0c64ebadff7bba1963fd9b1b16e2c5613682 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 21:06:36 +0000 Subject: [PATCH 517/729] Bug fixes --- lgsm/functions/command_mods_install.sh | 4 -- lgsm/functions/mods_core.sh | 78 ++++++++++++++------------ 2 files changed, 43 insertions(+), 39 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index fc6f78c9e..0519c75c8 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -14,9 +14,6 @@ mods_core.sh fn_print_header -# exits if no mods installed -fn_mods_check_installed - # Displays a list of installed mods fn_mods_installed_list if [ ${installedmodscount} -gt 0 ]; then @@ -104,7 +101,6 @@ fi ## Installation fn_mod_get_info -fn_mod_already_installed fn_create_mods_dir fn_mods_clear_tmp_dir fn_mods_create_tmp_dir diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index f35667c6b..9be5127c0 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -44,7 +44,7 @@ fn_mod_lowercase(){ fn_script_log "Converting ${modprettyname} files to lowercase" files=$(find "${extractdir}" -depth | wc -l) echo -en "\r" - while read src; do + while read -r src; do dst=`dirname "${src}"`/`basename "${src}" | tr '[A-Z]' '[a-z]'` if [ "${src}" != "${dst}" ] then @@ -126,7 +126,7 @@ fn_mod_tidy_files_list(){ # generate elements to remove from list removefromlistamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" # Test all subvalue of "removefromlist" using the ";" separator - for ((filesindex=1; filesindex < ${removefromlistamount}; filesindex++)); do + for ((filesindex=1; filesindex < removefromlistamount; filesindex++)); do # Put current file into test variable removefilevar="$(echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }')" # Delete matching line(s) @@ -166,31 +166,13 @@ fn_mod_get_info(){ # When "MOD" is found if [ "${mods_global_array[index]}" == "MOD" ]; then # Get info - if [ -z "$index" ]; then - fn_print_error "index variable not set. Please report an issue." - echo "* https://github.com/GameServerManagers/LinuxGSM/issues" - exitcode="1" - core_exit.sh - fi - modcommand="${mods_global_array[index+1]}" - modprettyname="${mods_global_array[index+2]}" - modurl="${mods_global_array[index+3]}" - modfilename="${mods_global_array[index+4]}" - modsubdirs="${mods_global_array[index+5]}" - modlowercase="${mods_global_array[index+6]}" - modinstalldir="${mods_global_array[index+7]}" - modkeepfiles="${mods_global_array[index+8]}" - modengines="${mods_global_array[index+9]}" - modgames="${mods_global_array[index+10]}" - modexcludegames="${mods_global_array[index+11]}" - modsite="${mods_global_array[index+12]}" - moddescription="${mods_global_array[index+13]}" - fi + fn_mod_info modinfocommand="1" break fi ((totalmods++)) done + fi # Exit the loop if job is done if [ "${modinfocommand}" == "1" ]; then @@ -207,12 +189,40 @@ fn_mod_get_info(){ fi } +# Define all variables for a mod at once when index is set to a separator +fn_mods_define(){ +if [ -z "$index" ]; then + fn_print_error "index variable not set. Please report an issue." + echo "* https://github.com/GameServerManagers/LinuxGSM/issues" + exitcode="1" + core_exit.sh +fi + modcommand="${mods_global_array[index+1]}" + modprettyname="${mods_global_array[index+2]}" + modurl="${mods_global_array[index+3]}" + modfilename="${mods_global_array[index+4]}" + modsubdirs="${mods_global_array[index+5]}" + modlowercase="${mods_global_array[index+6]}" + modinstalldir="${mods_global_array[index+7]}" + modkeepfiles="${mods_global_array[index+8]}" + modengines="${mods_global_array[index+9]}" + modgames="${mods_global_array[index+10]}" + modexcludegames="${mods_global_array[index+11]}" + modsite="${mods_global_array[index+12]}" + moddescription="${mods_global_array[index+13]}" +} + # Builds list of installed mods # using installed-mods.txt grabing mod info from mods_list.sh fn_mods_installed_list(){ + fn_mods_count_installed # Set/reset variables installedmodsline="1" installedmodslist=() + modprettynamemaxlength="0" + modsitemaxlength="0" + moddescriptionmaxlength="0" + modcommandmaxlength="0" # Loop through every line of the installed mods list ${modsinstalledlistfullpath} while [ ${installedmodsline} -le ${installedmodscount} ]; do currentmod="$(sed "${installedmodsline}q;d" "${modsinstalledlistfullpath}")" @@ -235,10 +245,6 @@ fn_mods_available(){ # First, reset variables compatiblemodslist=() availablemodscommands=() - modprettynamemaxlength="0" - modsitemaxlength="0" - moddescriptionmaxlength="0" - modcommandmaxlength="0" # Find compatible games # Find separators through the global array for ((index="0"; index <= ${#mods_global_array[@]}; index++)); do @@ -270,7 +276,7 @@ fn_compatible_mod_games(){ # How many games we need to test gamesamount="$(echo "${modgames}" | awk -F ';' '{ print NF }')" # Test all subvalue of "modgames" using the ";" separator - for ((gamevarindex=1; gamevarindex < ${gamesamount}; gamevarindex++)); do + for ((gamevarindex=1; gamevarindex < gamesamount; gamevarindex++)); do # Put current game name into modtest variable gamemodtest="$( echo "${modgames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" # If game name matches @@ -312,7 +318,7 @@ fn_not_compatible_mod_games(){ # How many engines we need to test excludegamesamount="$(echo "${modexcludegames}" | awk -F ';' '{ print NF }')" # Test all subvalue of "modexcludegames" using the ";" separator - for ((gamevarindex=1; gamevarindex < ${excludegamesamount}; gamevarindex++)); do + for ((gamevarindex=1; gamevarindex < excludegamesamount; gamevarindex++)); do # Put current engine name into modtest variable excludegamemodtest="$( echo "${modexcludegames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" # If engine name matches @@ -404,15 +410,18 @@ fn_mods_clear_tmp_dir(){ fi } - -# Exit if no mods were installed -fn_mods_check_installed(){ - # Count installed mods +fn_mods_count_installed(){ if [ -f "${modsinstalledlistfullpath}" ]; then - installedmodscount="$(cat "${modsinstalledlistfullpath}" | wc -l)" + installedmodscount="$(wc -l < "${modsinstalledlistfullpath}")" else installedmodscount=0 fi +} + +# Exit if no mods were installed +fn_mods_check_installed(){ + # Count installed mods + # If no mods are found if [ ${installedmodscount} -eq 0 ]; then fn_print_information_nl "No installed mods or addons were found" @@ -426,7 +435,7 @@ fn_check_mod_files_list(){ # File list must exist and be valid before any operation on it if [ -f "${modsdir}/${modcommand}-files.txt" ]; then # How many lines is the file list - modsfilelistsize="$(cat "${modsdir}/${modcommand}-files.txt" | wc -l)" + modsfilelistsize="$(wc -l < "${modsdir}/${modcommand}-files.txt")" # If file list is empty if [ "${modsfilelistsize}" -eq 0 ]; then fn_print_failure "${modcommand}-files.txt is empty" @@ -443,5 +452,4 @@ fn_check_mod_files_list(){ # Database initialisation mods_list.sh -mods_dir.sh fn_mods_available \ No newline at end of file From 6422904488422178c02934e378e9d1e40824cef5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 21:09:07 +0000 Subject: [PATCH 518/729] fn_mods_define --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 9be5127c0..c8aa5f492 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -166,7 +166,7 @@ fn_mod_get_info(){ # When "MOD" is found if [ "${mods_global_array[index]}" == "MOD" ]; then # Get info - fn_mod_info + fn_mods_define modinfocommand="1" break fi From 63a8193798bb03d814490a3c5efc77497f4caf00 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 21:19:01 +0000 Subject: [PATCH 519/729] corrected variable --- lgsm/functions/command_mods_remove.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index e0b1623d1..a19a48ae7 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -69,7 +69,7 @@ modfileline="1" tput sc while [ "${modfileline}" -le "${modsfilelistsize}" ]; do # Current line defines current file to remove - currentfileremove="$(sed "${modfileline}q;d" "${modsdatadir}/${modcommand}-files.txt")" + currentfileremove="$(sed "${modfileline}q;d" "${modsdir}/${modcommand}-files.txt")" # If file or directory exists, then remove it fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then @@ -93,8 +93,8 @@ sleep 0.5 # Remove file list echo -en "removing ${modcommand}-files.txt..." sleep 0.5 -fn_script_log "Removing: ${modsdatadir}/${modcommand}-files.txt" -rm -rf "${modsdatadir}/${modcommand}-files.txt" +fn_script_log "Removing: ${modsdir}/${modcommand}-files.txt" +rm -rf "${modsdir}/${modcommand}-files.txt" local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl From c2de5e9c81cc3b16cd0abbf65390905a4996570c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 21:28:25 +0000 Subject: [PATCH 520/729] corrected var --- lgsm/functions/command_mods_remove.sh | 6 +++--- lgsm/functions/command_mods_update.sh | 2 +- lgsm/functions/mods_core.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index a19a48ae7..662f738bf 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -81,7 +81,7 @@ while [ "${modfileline}" -le "${modsfilelistsize}" ]; do ((modfileline++)) done tput rc; tput ed; -echo -ne "removing ${modprettyname} ${modfileline} / ${modsfilelistsize}..." +echo -ne "sed ${modprettyname} ${modfileline} / ${modsfilelistsize}..." if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl core_exit.sh @@ -106,8 +106,8 @@ fi # Remove mods from installed mods list echo -en "removing ${modcommand} from ${modslockfile}..." sleep 0.5 -fn_script_log "Removing: ${modcommand} from ${modslockfilefullpath}" -sed -i "/^${modcommand}$/d" "${modslockfilefullpath}" +fn_script_log "Removing: ${modcommand} from ${modsinstalledlist}" +sed -i "/^${modcommand}$/d" "${modsinstalledlist}" local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 123e2b4e8..b89fdf015 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -51,7 +51,7 @@ done # Reset line value installedmodsline="1" while [ ${installedmodsline} -le ${installedmodscount} ]; do - currentmod="$(sed "${installedmodsline}q;d" "${modslockfilefullpath}")" + currentmod="$(sed "${installedmodsline}q;d" "${modsinstalledlist}")" if [ -n "${currentmod}" ]; then fn_mod_get_info # Don not update mod if the policy is set to "NOUPDATE" diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index c8aa5f492..1760d852f 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -421,7 +421,7 @@ fn_mods_count_installed(){ # Exit if no mods were installed fn_mods_check_installed(){ # Count installed mods - + fn_mods_count_installed # If no mods are found if [ ${installedmodscount} -eq 0 ]; then fn_print_information_nl "No installed mods or addons were found" From 622a3bc8fd76216606bc78a000cf2eb7f67c7ef9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 21:42:54 +0000 Subject: [PATCH 521/729] messages --- lgsm/functions/mods_core.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 1760d852f..1d3edc48d 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -377,14 +377,14 @@ fn_mods_create_tmp_dir(){ if [ ! -d "${modstmpdir}" ]; then mkdir -p "${modstmpdir}" exitcode=$? - echo -ne "creating mod download dir ${modstmpdir}..." + echo -ne "creating mod download directory ${modstmpdir}..." if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl - fn_script_log_fatal "Creating mod download dir ${modstmpdir}" + fn_script_log_fatal "Creating mod download directory ${modstmpdir}" core_exit.sh else fn_print_ok_eol_nl - fn_script_log_pass "Creating mod download dir ${modstmpdir}" + fn_script_log_pass "Creating mod download directory ${modstmpdir}" fi fi } @@ -392,6 +392,7 @@ fn_mods_create_tmp_dir(){ # Remove the tmp mod download directory when finished fn_mods_clear_tmp_dir(){ if [ -d "${modstmpdir}" ]; then + echo -ne "clearing mod download directory ${modstmpdir}..." rm -r "${modstmpdir}" exitcode=$? if [ ${exitcode} -ne 0 ]; then From f51c520d5047d6e7d88607f9f723befc64d8d443 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 21:45:15 +0000 Subject: [PATCH 522/729] corrected function name --- lgsm/functions/command_mods_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index b89fdf015..80589bc8d 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -75,7 +75,7 @@ while [ ${installedmodsline} -le ${installedmodscount} ]; do ((installedmodsline++)) else fn_print_fail "No mod was selected" - fn_script_log_fail "No mod was selected" + fn_script_log_fatal "No mod was selected" exitcode="1" core_exit.sh fi From 3ca9951ceefcc9dc65f1a76a657625ee467eea42 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 21:51:30 +0000 Subject: [PATCH 523/729] corrected var --- lgsm/functions/command_mods_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 80589bc8d..4521df74d 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -51,7 +51,7 @@ done # Reset line value installedmodsline="1" while [ ${installedmodsline} -le ${installedmodscount} ]; do - currentmod="$(sed "${installedmodsline}q;d" "${modsinstalledlist}")" + currentmod="$(sed "${installedmodsline}q;d" "${modsinstalledlistfullpath}")" if [ -n "${currentmod}" ]; then fn_mod_get_info # Don not update mod if the policy is set to "NOUPDATE" From 63f2ace5f83688967d4f471a91e6a784fed8a975 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 21:55:02 +0000 Subject: [PATCH 524/729] Moved function in to correct place --- lgsm/functions/command_mods_update.sh | 56 +++++++++++++-------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 4521df74d..614abf6d0 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -14,6 +14,34 @@ mods_core.sh fn_print_header +# Prevents specific files being overwritten upon update (set by ${modkeepfiles}) +# For that matter, remove cfg files after extraction before copying them to destination +fn_remove_cfg_files(){ + if [ "${modkeepfiles}" != "OVERWRITE" ]&&[ "${modkeepfiles}" != "NOUPDATE" ]; then + fn_print_dots "Preventing overwriting of ${modprettyname} config files" + fn_script_log "Preventing overwriting of ${modprettyname} config files" + sleep 0.5 + # Count how many files there are to remove + removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" + # Test all subvalues of "modkeepfiles" using the ";" separator + for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do + # Put the current file we are looking for into a variable + filetoremove="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" + # If it matches an existing file that have been extracted delete the file + if [ -f "${extractdir}/${filetoremove}" ]||[ -d "${extractdir}/${filetoremove}" ]; then + rm -r "${extractdir}/${filetoremove}" + # Write the file path in a tmp file, to rebuild a full file list as it is rebuilt upon update + if [ ! -f "${modsdir}/.removedfiles.tmp" ]; then + touch "${modsdir}/.removedfiles.tmp" + fi + echo "${filetoremove}" >> "${modsdir}/.removedfiles.tmp" + fi + done + fn_print_ok "Preventing overwriting of ${modprettyname} config files" + sleep 0.5 + fi +} + echo "Update addons/mods" echo "=================================" fn_mods_check_installed @@ -84,32 +112,4 @@ echo "" fn_print_ok_nl "Mods update complete" fn_script_log "Mods update complete" -# Prevents specific files being overwritten upon update (set by ${modkeepfiles}) -# For that matter, remove cfg files after extraction before copying them to destination -fn_remove_cfg_files(){ - if [ "${modkeepfiles}" != "OVERWRITE" ]&&[ "${modkeepfiles}" != "NOUPDATE" ]; then - fn_print_dots "Preventing overwriting of ${modprettyname} config files" - fn_script_log "Preventing overwriting of ${modprettyname} config files" - sleep 0.5 - # Count how many files there are to remove - removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" - # Test all subvalues of "modkeepfiles" using the ";" separator - for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do - # Put the current file we are looking for into a variable - filetoremove="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" - # If it matches an existing file that have been extracted delete the file - if [ -f "${extractdir}/${filetoremove}" ]||[ -d "${extractdir}/${filetoremove}" ]; then - rm -r "${extractdir}/${filetoremove}" - # Write the file path in a tmp file, to rebuild a full file list as it is rebuilt upon update - if [ ! -f "${modsdir}/.removedfiles.tmp" ]; then - touch "${modsdir}/.removedfiles.tmp" - fi - echo "${filetoremove}" >> "${modsdir}/.removedfiles.tmp" - fi - done - fn_print_ok "Preventing overwriting of ${modprettyname} config files" - sleep 0.5 - fi -} - core_exit.sh From 33b94670093dada8287d7cfa2af236db30b68a1a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 22:03:41 +0000 Subject: [PATCH 525/729] used correct var --- lgsm/functions/command_mods_remove.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 662f738bf..e9c6031f3 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -107,7 +107,7 @@ fi echo -en "removing ${modcommand} from ${modslockfile}..." sleep 0.5 fn_script_log "Removing: ${modcommand} from ${modsinstalledlist}" -sed -i "/^${modcommand}$/d" "${modsinstalledlist}" +sed -i "/^${modcommand}$/d" "${modsinstalledlistfullpath}" local exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl From 9cbca7b20b2478332fd70f0da7fb8fe3f9e17861 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 22:33:02 +0000 Subject: [PATCH 526/729] Altered UI of update function --- lgsm/functions/command_mods_update.sh | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 614abf6d0..0b42fdaa6 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -42,15 +42,13 @@ fn_remove_cfg_files(){ fi } -echo "Update addons/mods" -echo "=================================" +fn_print_dots "Update addons/mods" +sleep 0.5 fn_mods_check_installed -fn_print_information_nl "${installedmodscount} addons/mods will be updated" +fn_print_info "Update addons/mods: ${installedmodscount} addons/mods will be updated" +sleep 0.5 fn_script_log_info "${installedmodscount} mods or addons will be updated" fn_mods_installed_list -echo "" -echo "Installed addons/mods" -echo "=================================" # Go through all available commands, get details and display them to the user for ((ulindex=0; ulindex < ${#installedmodslist[@]}; ulindex++)); do # Current mod is the "ulindex" value of the array we're going through @@ -59,8 +57,8 @@ for ((ulindex=0; ulindex < ${#installedmodslist[@]}; ulindex++)); do # Display installed mods and the update policy if [ -z "${modkeepfiles}" ]; then # If modkeepfiles is not set for some reason, that's a problem - fn_script_log_error "Couldn't find update policy for ${modprettyname}" - fn_print_error_nl "Couldn't find update policy for ${modprettyname}" + fn_script_log_error "Could not find update policy for ${modprettyname}" + fn_print_error_nl "Could not find update policy for ${modprettyname}" exitcode="1" core_exit.sh # If the mod won't get updated From 57d12ceca21a99f0b2c77aabd9f81dea1e8190f0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 22:43:14 +0000 Subject: [PATCH 527/729] Further ui changes --- lgsm/functions/command_mods_update.sh | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 0b42fdaa6..d4233a43d 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -12,8 +12,6 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh mods_core.sh -fn_print_header - # Prevents specific files being overwritten upon update (set by ${modkeepfiles}) # For that matter, remove cfg files after extraction before copying them to destination fn_remove_cfg_files(){ @@ -45,8 +43,7 @@ fn_remove_cfg_files(){ fn_print_dots "Update addons/mods" sleep 0.5 fn_mods_check_installed -fn_print_info "Update addons/mods: ${installedmodscount} addons/mods will be updated" -sleep 0.5 +fn_print_info_nl "Update addons/mods: ${installedmodscount} addons/mods will be updated" fn_script_log_info "${installedmodscount} mods or addons will be updated" fn_mods_installed_list # Go through all available commands, get details and display them to the user @@ -63,14 +60,15 @@ for ((ulindex=0; ulindex < ${#installedmodslist[@]}; ulindex++)); do core_exit.sh # If the mod won't get updated elif [ "${modkeepfiles}" == "NOUPDATE" ]; then - echo -e " * \e[31m${modprettyname}${default} (won't be updated)" + echo -e " * \e[31m${modprettyname}${default} (won't be updated)" # If the mode is just overwritten elif [ "${modkeepfiles}" == "OVERWRITE" ]; then - echo -e " * \e[1m${modprettyname}${default} (overwrite)" + echo -e " * \e[1m${modprettyname}${default} (overwrite)" else - echo -e " * ${yellow}${modprettyname}${default} (common custom files remain untouched)" + echo -e " * ${yellow}${modprettyname}${default} (common custom files remain untouched)" fi done +sleep 1 ## Update # List all installed mods and apply update From 53b528f996ccd4ea8aa96867742d9a9dfd835c0b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 22:46:49 +0000 Subject: [PATCH 528/729] added header to separate mods --- lgsm/functions/command_mods_update.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index d4233a43d..73827c50c 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -84,6 +84,7 @@ while [ ${installedmodsline} -le ${installedmodscount} ]; do fn_script_log_info "${modprettyname} will not be updated to preserve custom files" else echo "" + echo "==> Updating ${modprettyname}" fn_create_mods_dir fn_mods_clear_tmp_dir fn_mods_create_tmp_dir From b8ea04d06255f35116d473c25472f5051ae7c15f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 25 Jan 2017 22:54:18 +0000 Subject: [PATCH 529/729] re arrainged to fix sm and mm not downloading --- lgsm/functions/mods_list.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 566efedc1..4b586df1b 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -12,7 +12,20 @@ local commandname="MODS" local commandaction="List Mods" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -## Useful variables +# Get a proper URL for mods that don't provide a good one (optional) +fn_script_log_info "Retrieving latest mods URLs" +# Metamod +metamodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" +metamodlatestfile="$(wget "${metamodscrapeurl}/?MD" -q -O -| grep "mmsource" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" +metamoddownloadurl="http://cdn.probablyaserver.com/sourcemod/" +metamodurl="${metamoddownloadurl}/${metamodlatestfile}" +# Sourcemod +sourcemodmversion="1.8" +sourcemodscrapeurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}/sourcemod-latest-linux" +sourcemodlatestfile="$(wget "${sourcemodscrapeurl}" -q -O -)" +sourcemoddownloadurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}" +sourcemodurl="${sourcemoddownloadurl}/${sourcemodlatestfile}" + # Separator name modseparator="MOD" @@ -58,16 +71,3 @@ mod_info_sdtdoxide=( MOD "sdtdoxide" "Oxide for 7 Days To Die" "https://raw.gith # REQUIRED: Set all mods info into one array for convenience mods_global_array=( "${mod_info_metamod[@]}" "${mod_info_sourcemod[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" ) -# Get a proper URL for mods that don't provide a good one (optional) -fn_script_log_info "Retrieving latest mods URLs" -# Metamod -metamodscrapeurl="http://www.gsptalk.com/mirror/sourcemod" -metamodlatestfile="$(wget "${metamodscrapeurl}/?MD" -q -O -| grep "mmsource" | grep "\-linux" | head -n1 | awk -F '>' '{ print $3 }' | awk -F '<' '{ print $1}')" -metamoddownloadurl="http://cdn.probablyaserver.com/sourcemod/" -metamodurl="${metamoddownloadurl}/${metamodlatestfile}" -# Sourcemod -sourcemodmversion="1.8" -sourcemodscrapeurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}/sourcemod-latest-linux" -sourcemodlatestfile="$(wget "${sourcemodscrapeurl}" -q -O -)" -sourcemoddownloadurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}" -sourcemodurl="${sourcemoddownloadurl}/${sourcemodlatestfile}" From bb99b30bd1b7d416151b4ab357214586c3c06d12 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 00:03:12 +0100 Subject: [PATCH 530/729] get mod info at the right time --- lgsm/functions/command_mods_install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 0519c75c8..de1be8046 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -72,7 +72,9 @@ while [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; do fn_print_error2_nl "${usermodselect} is not a valid addon/mod." fi done +# Get mod info currentmod="${usermodselect}" +fn_mod_get_info echo "" echo "Installing ${modprettyname}" @@ -100,7 +102,6 @@ fi ## Installation -fn_mod_get_info fn_create_mods_dir fn_mods_clear_tmp_dir fn_mods_create_tmp_dir @@ -114,4 +115,4 @@ fn_mods_clear_tmp_dir echo "${modprettyname} installed" fn_script_log_pass "${modprettyname} installed." -core_exit.sh \ No newline at end of file +core_exit.sh From 3c3d68fbdc18cb7794fbea76a67f7f3c7a3d628f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 00:23:37 +0100 Subject: [PATCH 531/729] check fails in the loop and echo the right files amount --- lgsm/functions/command_mods_remove.sh | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index e9c6031f3..3ea2c7e87 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -75,19 +75,17 @@ while [ "${modfileline}" -le "${modsfilelistsize}" ]; do if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then rm -rf "${modinstalldir}/${currentfileremove}" local exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + core_exit.sh + else + fn_print_ok_eol_nl + fi fi tput rc; tput el printf "removing ${modprettyname} ${modfileline} / ${modsfilelistsize} : ${currentfileremove}..." ((modfileline++)) done -tput rc; tput ed; -echo -ne "sed ${modprettyname} ${modfileline} / ${modsfilelistsize}..." -if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - core_exit.sh -else - fn_print_ok_eol_nl -fi sleep 0.5 # Remove file list From b62d58fe8515ae0d66fe53f3d1223bd9c1c22315 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 00:31:26 +0100 Subject: [PATCH 532/729] added missing fn_print_ok_eol_nl --- lgsm/functions/command_mods_remove.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 3ea2c7e87..28a1a6a43 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -86,8 +86,8 @@ while [ "${modfileline}" -le "${modsfilelistsize}" ]; do printf "removing ${modprettyname} ${modfileline} / ${modsfilelistsize} : ${currentfileremove}..." ((modfileline++)) done +fn_print_ok_eol_nl sleep 0.5 - # Remove file list echo -en "removing ${modcommand}-files.txt..." sleep 0.5 From 75295065d2a8a6180334b73f678931e061d22324 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 13:59:29 +0100 Subject: [PATCH 533/729] comments & form revision --- lgsm/functions/mods_list.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 4b586df1b..abbe3299e 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -3,10 +3,10 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -# Description: Lists and defines available mods for LGSM supported servers. -# Usage: To add a mod, you just need to add an array variable into fn_mods_info following the guide to set proper values. +# Description: Lists and defines available mods for LGSM supported servers; works along with mods_core.sh. +# Usage: To add a mod, you need to add an array variable following the guide to set proper values; # Usage: Then add this array to the mods_global_array. -# Usage: If needed, you can scrape to define the download URL inside the fn_mods_scrape_urls function. +# Usage: If needed, you can scrape the download URL first. local commandname="MODS" local commandaction="List Mods" @@ -26,10 +26,11 @@ sourcemodlatestfile="$(wget "${sourcemodscrapeurl}" -q -O -)" sourcemoddownloadurl="https://sm.alliedmods.net/smdrop/${sourcemodmversion}" sourcemodurl="${sourcemoddownloadurl}/${sourcemodlatestfile}" +# Define mods information (required) + # Separator name modseparator="MOD" -# Define mods information (required) # REQUIRED: mod_info_name=( MOD "modcommand" "Pretty Name" "URL" "filename" "modsubdirs" "LowercaseOn/Off" "/files/to/keep;" "/install/path" "ENGINES" "GAMES" "NOTGAMES" "AUTHOR_URL" "Short Description" ) # Example 1) Well made mod: mod_info_name=( MOD "awesomemod" "This is an Awesome Mod" "https://awesomemod.com/latest.zip" "awesomemod.zip" "0" "LowercaseOff" "OVERWRITE" "${systemdir}/addons" "source;unity3d;" "GAMES" "NOTGAMES" "https://awesomemod.com/" "This mod knows that 42 is the answer" ) # Example 2) Poorly made mod: mod_info_name=( MOD "stupidmod" "This is a stupid mod" "${crappymodurl}" "StupidMod.zip" "2" "LowercaseOn" "cfg;data/crappymod;" "${systemdir}" "source;" "GAMES" "Garry's mod;Counter-Strike: Source;" "This mod is dumber than dumb" ) @@ -38,17 +39,17 @@ modseparator="MOD" # [0] | MOD: separator, all mods must begin with it # [1] | "modcommand": the LGSM name and command to install the mod (must be unique and lowercase) # [2] | "Pretty Name": the common name people use to call the mod that will be displayed to the user -# [3] | "URL": link to the file; can be a variable defined in fn_mods_nasty_urls (make sure curl can download it) +# [3] | "URL": link to the mod archive file; can be a variable previously defined while scraping a URL # [4] | "filename": the output filename -# [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) -# [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) +# [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) +# [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) # [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) -# [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" to ignore the value or "NOUPDATE" to disallow updating +# [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" value to ignore the value or "NOUPDATE" to disallow updating # [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value # [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value # [11] | "Unsupported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use NOTGAMES to ignore the value (useful to exclude a game when using Supported Engines) # [12] | "AUTHOR_URL" is the author's website, displayed to the user when chosing mods to install -# [13] | "Short Description" a description showed to the user upon installation +# [13] | "Short Description" a description showed to the user upon installation/removal # Source mods mod_info_metamod=( MOD "metamod" "MetaMod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/metaplugins.ini;" "source;" "GAMES" "NOTGAMES" "https://www.sourcemm.net" "Plugins Framework" ) @@ -68,6 +69,5 @@ mod_info_rustoxide=( MOD "rustoxide" "Oxide for Rust" "https://raw.githubusercon mod_info_hwoxide=( MOD "hwoxide" "Oxide for Hurtworld" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-Hurtworld.zip" "Oxide-Hurtworld_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Hurtworld;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-hurtworld.1332" "Allows for the use of plugins" ) mod_info_sdtdoxide=( MOD "sdtdoxide" "Oxide for 7 Days To Die" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-7DaysToDie.zip" "Oxide-7DaysToDie_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-7-days-to-die.813" "Allows for the use of plugins" ) -# REQUIRED: Set all mods info into one array for convenience +# REQUIRED: Set all mods info into the global array mods_global_array=( "${mod_info_metamod[@]}" "${mod_info_sourcemod[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" ) - From eb91545efc8ac4dacd8aa6aef835650d2a988ca2 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 14:00:14 +0100 Subject: [PATCH 534/729] tab fix --- lgsm/functions/mods_list.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index abbe3299e..46fc8f046 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -41,10 +41,10 @@ modseparator="MOD" # [2] | "Pretty Name": the common name people use to call the mod that will be displayed to the user # [3] | "URL": link to the mod archive file; can be a variable previously defined while scraping a URL # [4] | "filename": the output filename -# [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) -# [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) +# [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) +# [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) # [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) -# [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" value to ignore the value or "NOUPDATE" to disallow updating +# [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" value to ignore the value or "NOUPDATE" to disallow updating # [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value # [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value # [11] | "Unsupported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use NOTGAMES to ignore the value (useful to exclude a game when using Supported Engines) From 9819ada0a49ecce4bf7d57560e182c1fef35b374 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 14:11:48 +0100 Subject: [PATCH 535/729] added fn_mod_tidy_files_list info --- lgsm/functions/mods_list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 46fc8f046..730aeb081 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -44,7 +44,7 @@ modseparator="MOD" # [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) # [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) # [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) -# [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" value to ignore the value or "NOUPDATE" to disallow updating +# [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" value to ignore the value or "NOUPDATE" to disallow updating; for files to keep upon uninstall, see fn_mod_tidy_files_list from mods_core.sh # [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value # [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value # [11] | "Unsupported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use NOTGAMES to ignore the value (useful to exclude a game when using Supported Engines) From d19313569594032224bf6447fb7b7dd6006ab8c6 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 14:23:47 +0100 Subject: [PATCH 536/729] check_logs.sh for mods commands --- lgsm/functions/check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 255ab5ee1..577579171 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -34,7 +34,7 @@ do fi done -local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh command_update.sh command_validate.sh command_update_functions.sh command_email_test.sh ) +local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh command_update.sh command_validate.sh command_update_functions.sh command_email_test.sh command_mods_install.sh command_mods_update.sh command_mods_remove.sh ) for allowed_command in "${allowed_commands_array[@]}" do if [ "${allowed_command}" == "${function_selfname}" ]; then From ef05b348aeaa77fea09675c080d14864ec791e01 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 14:44:59 +0100 Subject: [PATCH 537/729] Comments, output and exits improvements --- lgsm/functions/mods_core.sh | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 1d3edc48d..6169d95fb 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -112,9 +112,9 @@ fn_mod_add_list(){ fi } +# Prevent sensitive directories from being erased upon uninstall by removing them from: ${modcommand}-files.txt fn_mod_tidy_files_list(){ - # Prevent sensitive directories from being erased by removing them from: ${modcommand}-files.txt - # Check file validity + # Check file list validity fn_check_mod_files_list # Output to the user echo -ne "tidy up ${modcommand}-files.txt..." @@ -129,19 +129,18 @@ fn_mod_tidy_files_list(){ for ((filesindex=1; filesindex < removefromlistamount; filesindex++)); do # Put current file into test variable removefilevar="$(echo "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }')" - # Delete matching line(s) + # Delete line(s) matching exactly sed -i "/^${removefilevar}$/d" "${modsdir}/${modcommand}-files.txt" + # Exit on error local exitcode=$? if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_script_log_fatal "Error while tidying line: ${removefilevar} from: ${modsdir}/${modcommand}-files.txt" + core_exit.sh break fi done - if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - else - fn_print_ok_eol_nl - fi - + fn_print_ok_eol_nl # Sourcemod fix # Remove metamod from sourcemod fileslist if [ "${modcommand}" == "sourcemod" ]; then @@ -172,7 +171,6 @@ fn_mod_get_info(){ fi ((totalmods++)) done - fi # Exit the loop if job is done if [ "${modinfocommand}" == "1" ]; then @@ -192,9 +190,9 @@ fn_mod_get_info(){ # Define all variables for a mod at once when index is set to a separator fn_mods_define(){ if [ -z "$index" ]; then + fn_script_log_fatal "index variable not set. Please report an issue." fn_print_error "index variable not set. Please report an issue." echo "* https://github.com/GameServerManagers/LinuxGSM/issues" - exitcode="1" core_exit.sh fi modcommand="${mods_global_array[index+1]}" @@ -238,9 +236,7 @@ fn_mods_installed_list(){ fi } -# Checks if a mod is compatible for installation -# Provides available mods for installation -# Provides commands for mods installation +# Loops through mods_global_array to define available mods & provide available commands for mods installation fn_mods_available(){ # First, reset variables compatiblemodslist=() @@ -302,7 +298,7 @@ fn_compatible_mod_engines(){ enginemodtest="$( echo "${modengines}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" # If engine name matches if [ "${enginemodtest}" == "${engine}" ]; then - # Mod is compatible ! + # Mod is compatible! modcompatibleengine="1" fi done @@ -323,7 +319,7 @@ fn_not_compatible_mod_games(){ excludegamemodtest="$( echo "${modexcludegames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )" # If engine name matches if [ "${excludegamemodtest}" == "${gamename}" ]; then - # Mod is compatible ! + # Mod is compatible! modeincompatiblegame="1" fi done @@ -411,6 +407,7 @@ fn_mods_clear_tmp_dir(){ fi } +# Counts how many mods were installed fn_mods_count_installed(){ if [ -f "${modsinstalledlistfullpath}" ]; then installedmodscount="$(wc -l < "${modsinstalledlistfullpath}")" @@ -419,12 +416,13 @@ fn_mods_count_installed(){ fi } -# Exit if no mods were installed +# Exits if no mods were installed fn_mods_check_installed(){ # Count installed mods fn_mods_count_installed # If no mods are found if [ ${installedmodscount} -eq 0 ]; then + echo "" fn_print_information_nl "No installed mods or addons were found" echo " * Install mods using LGSM first with: ./${selfname} mods-install" fn_script_log_info "No installed mods or addons were found." @@ -432,6 +430,7 @@ fn_mods_check_installed(){ fi } +# Checks that mod files list exists and isn't empty fn_check_mod_files_list(){ # File list must exist and be valid before any operation on it if [ -f "${modsdir}/${modcommand}-files.txt" ]; then @@ -451,6 +450,7 @@ fn_check_mod_files_list(){ fi } -# Database initialisation +## Database initialisation + mods_list.sh -fn_mods_available \ No newline at end of file +fn_mods_available From 2b302fc0ac550e298514511b9a3fcd31ad725aac Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 14:58:02 +0100 Subject: [PATCH 538/729] "User selected to continue" to be in check loop --- lgsm/functions/command_mods_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index de1be8046..4e563b7b9 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -96,8 +96,8 @@ if [ -f "${modsinstalledlistfullpath}" ]; then * ) echo "Please answer yes or no.";; esac done + fn_script_log_info "User selected to continue" fi -fn_script_log_info "User selected to continue" fi ## Installation From a86030b551353596c91e710986d75820f9a7d100 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 18:40:25 +0100 Subject: [PATCH 539/729] Total mods fix --- lgsm/functions/mods_core.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 6169d95fb..0ccc548de 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -169,7 +169,7 @@ fn_mod_get_info(){ modinfocommand="1" break fi - ((totalmods++)) + ((totalmodsavailable++)) done fi # Exit the loop if job is done @@ -231,8 +231,8 @@ fn_mods_installed_list(){ # Increment line check ((installedmodsline++)) done - if [ -n "${totalmods}" ] ;then - fn_script_log_info "${totalmods} addons/mods are already installed" + if [ -n "${installedmodscount}" ] ;then + fn_script_log_info "${installedmodscount} addons/mods are already installed" fi } From 94c1b57f8561ea5303d11df91174711047c589a9 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 18:41:57 +0100 Subject: [PATCH 540/729] total mods fix --- lgsm/functions/mods_core.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 0ccc548de..8d0eaf19d 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -169,7 +169,6 @@ fn_mod_get_info(){ modinfocommand="1" break fi - ((totalmodsavailable++)) done fi # Exit the loop if job is done From 0ddc146631cb4af34cc17c9adf3153ac2277e5d2 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 18:45:36 +0100 Subject: [PATCH 541/729] total mods fix --- lgsm/functions/command_mods_install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 4e563b7b9..f8e5a40da 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -48,7 +48,7 @@ while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do echo -e " * ${cyan}${displayedmodcommand}${default}" # Increment index from the amount of values we just displayed let "compatiblemodslistindex+=4" - ((totalmods++)) + ((totalmodsavailable++)) done # If no mods are available for a specific game @@ -57,7 +57,7 @@ if [ -z "${compatiblemodslist}" ]; then fn_script_log_info "No mods are currently available for ${gamename}." core_exit.sh fi -fn_script_log_info "${totalmods} addons/mods are available for install" +fn_script_log_info "${totalmodsavailable} addons/mods are available for install" ## User selects a mod echo "" From 82441e5d6db0cd520e3d7798eb55640a7bef9f39 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 18:57:10 +0100 Subject: [PATCH 542/729] ((totalmodsinstalled++)) not needed anymore --- lgsm/functions/command_mods_install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index f8e5a40da..7e76ac727 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -26,7 +26,6 @@ if [ ${installedmodscount} -gt 0 ]; then fn_mod_get_info # Display mod info to the user echo -e " * \e[1m${green}${modcommand}${default}${default}" - ((totalmodsinstalled++)) done echo "" fi From f1c753d4159122728f7d8a7b4a99375c102fad92 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 26 Jan 2017 19:04:41 +0100 Subject: [PATCH 543/729] keep files usually customized for ACF mod --- lgsm/functions/mods_list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 730aeb081..8b0beb604 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -59,7 +59,7 @@ mod_info_ulib=( MOD "ulib" "ULib" "https://codeload.github.com/TeamUlysses/ulib/ mod_info_ulx=( MOD "ulx" "ULX" "https://codeload.github.com/TeamUlysses/ulx/zip/master" "ulx-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Admin Panel (requires ULib)" ) mod_info_utime=( MOD "utime" "UTime" "https://github.com/TeamUlysses/utime/archive/master.zip" "utime-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Keep track of players play time" ) mod_info_uclip=( MOD "uclip" "UClip" "https://github.com/TeamUlysses/uclip/archive/master.zip" "uclip-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "An alternative to noclip" ) -mod_info_acf=( MOD "acf" "Armoured Combat Framework" "https://github.com/nrlulz/ACF/archive/master.zip" "acf-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/nrlulz/ACF" "Realistic Wepons & Engines" ) +mod_info_acf=( MOD "acf" "Armoured Combat Framework" "https://github.com/nrlulz/ACF/archive/master.zip" "acf-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "acf-master/lua/acf/shared/guns;" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/nrlulz/ACF" "Realistic Wepons & Engines" ) mod_info_acf_missiles=( MOD "acfmissiles" "ACF Missiles" "https://github.com/Bubbus/ACF-Missiles/archive/master.zip" "acf-missiles-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Bubbus/ACF-Missiles" "More missiles for ACF" ) mod_info_acf_advdupe2=( MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/wiremod/advdupe2/archive/master.zip" "advdupe2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://www.wiremod.com" "Save your constructions" ) mod_info_darkrp=( MOD "darkrp" "DarkRP" "https://github.com/FPtje/DarkRP/archive/master.zip" "darkrp-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Most popular gamemode" ) From ae864bb92bba5cc040ee96c9b1dc6cb8a90c8087 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 26 Jan 2017 19:46:00 +0000 Subject: [PATCH 544/729] More UI modifications --- lgsm/functions/command_mods_remove.sh | 19 +++++++++---------- lgsm/functions/mods_core.sh | 4 ++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 28a1a6a43..1a0799122 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -74,19 +74,18 @@ while [ "${modfileline}" -le "${modsfilelistsize}" ]; do fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then rm -rf "${modinstalldir}/${currentfileremove}" - local exitcode=$? - if [ ${exitcode} -ne 0 ]; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi + ((exitcode=$?)) fi tput rc; tput el - printf "removing ${modprettyname} ${modfileline} / ${modsfilelistsize} : ${currentfileremove}..." + printf "removing ${modprettyname} ${modfileline} / ${modsfilelistsize} : ${currentfileremove}..." ((modfileline++)) done -fn_print_ok_eol_nl +if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + core_exit.sh +else + fn_print_ok_eol_nl +fi sleep 0.5 # Remove file list echo -en "removing ${modcommand}-files.txt..." @@ -102,7 +101,7 @@ else fi # Remove mods from installed mods list -echo -en "removing ${modcommand} from ${modslockfile}..." +echo -en "removing ${modcommand} from ${modsinstalledlist}..." sleep 0.5 fn_script_log "Removing: ${modcommand} from ${modsinstalledlist}" sed -i "/^${modcommand}$/d" "${modsinstalledlistfullpath}" diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 6169d95fb..5d42e15e0 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -423,9 +423,9 @@ fn_mods_check_installed(){ # If no mods are found if [ ${installedmodscount} -eq 0 ]; then echo "" - fn_print_information_nl "No installed mods or addons were found" + fn_print_failure_nl "No installed mods or addons were found" echo " * Install mods using LGSM first with: ./${selfname} mods-install" - fn_script_log_info "No installed mods or addons were found." + fn_script_log_fail "No installed mods or addons were found." core_exit.sh fi } From 8acf2189a919ef08f2618d5a3e6c46ea55b7e163 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 26 Jan 2017 19:48:27 +0000 Subject: [PATCH 545/729] corrected script_log --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 959476b2d..5fa8e21c9 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -26,7 +26,7 @@ fn_mod_install_files(){ # Check if variable is valid checking if file has been downloaded and exists if [ ! -f "${modstmpdir}/${modfilename}" ]; then fn_print_failure "An issue occurred downloading ${modprettyname}" - fn_script_log_fail "An issue occurred downloading ${modprettyname}" + fn_script_log_fatal "An issue occurred downloading ${modprettyname}" core_exit.sh fi if [ ! -d "${extractdir}" ]; then From d83666625d217d438b071fd67cbca6369552fcb3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 26 Jan 2017 20:44:10 +0000 Subject: [PATCH 546/729] update wording for script log --- lgsm/functions/command_mods_install.sh | 4 ++-- lgsm/functions/command_mods_remove.sh | 2 +- lgsm/functions/command_mods_update.sh | 24 +++++++++++------------- lgsm/functions/core_dl.sh | 8 ++++---- lgsm/functions/mods_core.sh | 4 ++-- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 7e76ac727..2d85c12f6 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -25,7 +25,7 @@ if [ ${installedmodscount} -gt 0 ]; then currentmod="${installedmodslist[llindex]}" fn_mod_get_info # Display mod info to the user - echo -e " * \e[1m${green}${modcommand}${default}${default}" + echo -e " * ${green}${modcommand}${default}${default}" done echo "" fi @@ -43,7 +43,7 @@ while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}" displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}" # Output mods to the user - echo -e "\e[1m${displayedmodname}${default} - ${displayedmoddescription} - ${displayedmodsite}" + echo -e "${displayedmodname} - ${displayedmoddescription} - ${displayedmodsite}" echo -e " * ${cyan}${displayedmodcommand}${default}" # Increment index from the amount of values we just displayed let "compatiblemodslistindex+=4" diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 1a0799122..adf30adea 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -26,7 +26,7 @@ for ((mlindex=0; mlindex < ${#installedmodslist[@]}; mlindex++)); do # Get mod info fn_mod_get_info # Display mod info to the user - echo -e "${cyan}${modcommand}${default} - \e[1m${modprettyname}${default} - ${moddescription}" + echo -e "${red}${modcommand}${default} - ${modprettyname} - ${moddescription}" done echo "" diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 73827c50c..0b12e04aa 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -16,27 +16,25 @@ mods_core.sh # For that matter, remove cfg files after extraction before copying them to destination fn_remove_cfg_files(){ if [ "${modkeepfiles}" != "OVERWRITE" ]&&[ "${modkeepfiles}" != "NOUPDATE" ]; then - fn_print_dots "Preventing overwriting of ${modprettyname} config files" - fn_script_log "Preventing overwriting of ${modprettyname} config files" + echo -e "the following files/directories will be preserved:" sleep 0.5 # Count how many files there are to remove - removefilesamount="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" + filestopreserve="$(echo "${modkeepfiles}" | awk -F ';' '{ print NF }')" # Test all subvalues of "modkeepfiles" using the ";" separator - for ((removefilesindex=1; removefilesindex < ${removefilesamount}; removefilesindex++)); do + for ((preservefilesindex=1; preservefilesindex < ${filestopreserve}; preservefilesindex++)); do # Put the current file we are looking for into a variable - filetoremove="$( echo "${modkeepfiles}" | awk -F ';' -v x=${removefilesindex} '{ print $x }' )" + filetopreserve="$(echo "${modkeepfiles}" | awk -F ';' -v x=${preservefilesindex} '{ print $x }' )" + echo -e " * serverfiles/${filetopreserve}" # If it matches an existing file that have been extracted delete the file - if [ -f "${extractdir}/${filetoremove}" ]||[ -d "${extractdir}/${filetoremove}" ]; then - rm -r "${extractdir}/${filetoremove}" + if [ -f "${extractdir}/${filetopreserve}" ]||[ -d "${extractdir}/${filetopreserve}" ]; then + rm -r "${extractdir}/${filetopreserve}" # Write the file path in a tmp file, to rebuild a full file list as it is rebuilt upon update if [ ! -f "${modsdir}/.removedfiles.tmp" ]; then touch "${modsdir}/.removedfiles.tmp" fi - echo "${filetoremove}" >> "${modsdir}/.removedfiles.tmp" + echo "${filetopreserve}" >> "${modsdir}/.removedfiles.tmp" fi done - fn_print_ok "Preventing overwriting of ${modprettyname} config files" - sleep 0.5 fi } @@ -60,12 +58,12 @@ for ((ulindex=0; ulindex < ${#installedmodslist[@]}; ulindex++)); do core_exit.sh # If the mod won't get updated elif [ "${modkeepfiles}" == "NOUPDATE" ]; then - echo -e " * \e[31m${modprettyname}${default} (won't be updated)" + echo -e " * ${red}{modprettyname}${default} (won't be updated)" # If the mode is just overwritten elif [ "${modkeepfiles}" == "OVERWRITE" ]; then - echo -e " * \e[1m${modprettyname}${default} (overwrite)" + echo -e " * ${modprettyname} (overwrite)" else - echo -e " * ${yellow}${modprettyname}${default} (common custom files remain untouched)" + echo -e " * ${yellow}${modprettyname}${default} (retain common custom files)" fi done sleep 1 diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index f7768a7cf..aad8f1963 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -80,12 +80,12 @@ fn_fetch_trap(){ echo "" echo -ne "downloading ${filename}..." fn_print_canceled_eol_nl - fn_script_log_info "downloading ${filename}...CANCELED" + fn_script_log_info "Downloading ${filename}...CANCELED" sleep 1 rm -f "${filedir}/${filename}" | tee -a "${scriptlog}" echo -ne "downloading ${filename}..." fn_print_removed_eol_nl - fn_script_log_info "downloading ${filename}...REMOVED" + fn_script_log_info "Downloading ${filename}...REMOVED" core_exit.sh } @@ -130,7 +130,7 @@ fn_fetch_file(){ if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl if [ -f "${scriptlog}" ]; then - fn_script_log_fatal "downloading ${filename}: FAIL" + fn_script_log_fatal "Downloading ${filename}: FAIL" fi echo -e "${fileurl}" | tee -a "${scriptlog}" echo "${curlcmd}" | tee -a "${scriptlog}" @@ -138,7 +138,7 @@ fn_fetch_file(){ else fn_print_ok_eol_nl if [ -f "${scriptlog}" ]; then - fn_script_log_pass "downloading ${filename}: OK" + fn_script_log_pass "Downloading ${filename}: OK" fi fi # remove trap diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 5fa8e21c9..1eb5984b0 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -41,7 +41,7 @@ fn_mod_lowercase(){ echo -ne "converting ${modprettyname} files to lowercase..." sleep 0.5 - fn_script_log "Converting ${modprettyname} files to lowercase" + fn_script_log_info "Converting ${modprettyname} files to lowercase" files=$(find "${extractdir}" -depth | wc -l) echo -en "\r" while read -r src; do @@ -231,7 +231,7 @@ fn_mods_installed_list(){ ((installedmodsline++)) done if [ -n "${installedmodscount}" ] ;then - fn_script_log_info "${installedmodscount} addons/mods are already installed" + fn_script_log_info "${installedmodscount} addons/mods are currently installed" fi } From 8311e2c972aa186c72a26671bac474ed3e6e65c4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 26 Jan 2017 20:48:09 +0000 Subject: [PATCH 547/729] script_log to info --- lgsm/functions/command_mods_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 0b12e04aa..e93303016 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -105,6 +105,6 @@ while [ ${installedmodsline} -le ${installedmodscount} ]; do done echo "" fn_print_ok_nl "Mods update complete" -fn_script_log "Mods update complete" +fn_script_log_info "Mods update complete" core_exit.sh From b9f47518b955edccfba96f99f5111cbee28dfa40 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 26 Jan 2017 20:52:49 +0000 Subject: [PATCH 548/729] uf was missing a commandname --- lgsm/functions/command_update_functions.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/functions/command_update_functions.sh b/lgsm/functions/command_update_functions.sh index 538a8dee8..e3d96d378 100644 --- a/lgsm/functions/command_update_functions.sh +++ b/lgsm/functions/command_update_functions.sh @@ -4,6 +4,7 @@ # Website: https://gameservermanagers.com # Description: Deletes the functions dir to allow re-downloading of functions from GitHub. +local commandname="UPDATE LGSM" local commandaction="Update LGSM" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" From bea65fb35ac102fa95b984013d8ecacd5e47f4f4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 26 Jan 2017 21:11:25 +0000 Subject: [PATCH 549/729] script log message capital --- lgsm/functions/command_backup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 8e18a619b..b4bff70b0 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -16,12 +16,12 @@ fn_backup_trap(){ echo "" echo -ne "backup ${backupname}.tar.gz..." fn_print_canceled_eol_nl - fn_script_log_info "backup ${backupname}.tar.gz: CANCELED" + fn_script_log_info "Backup ${backupname}.tar.gz: CANCELED" sleep 1 rm -f "${backupdir}/${backupname}.tar.gz" | tee -a "${scriptlog}" echo -ne "backup ${backupname}.tar.gz..." fn_print_removed_eol_nl - fn_script_log_info "backup ${backupname}.tar.gz: REMOVED" + fn_script_log_info "Backup ${backupname}.tar.gz: REMOVED" # Remove lock file rm -f "${tmpdir}/.backup.lock" core_exit.sh From 3ea100cc723a11797160f9743303862527e442c0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 26 Jan 2017 21:18:26 +0000 Subject: [PATCH 550/729] improvements to script log messages --- lgsm/functions/command_mods_remove.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index adf30adea..7b96503ec 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -59,7 +59,7 @@ fn_mod_get_info fn_check_mod_files_list # Uninstall the mod -fn_script_log "Removing ${modsfilelistsize} files from ${modprettyname}" +fn_script_log_info "Removing ${modsfilelistsize} files from ${modprettyname}" echo -e "removing ${modprettyname}" echo -e "* ${modsfilelistsize} files to be removed" echo -e "* location: ${modinstalldir}" @@ -71,10 +71,16 @@ while [ "${modfileline}" -le "${modsfilelistsize}" ]; do # Current line defines current file to remove currentfileremove="$(sed "${modfileline}q;d" "${modsdir}/${modcommand}-files.txt")" # If file or directory exists, then remove it - fn_script_log "Removing: ${modinstalldir}/${currentfileremove}" + if [ -f "${modinstalldir}/${currentfileremove}" ]||[ -d "${modinstalldir}/${currentfileremove}" ]; then rm -rf "${modinstalldir}/${currentfileremove}" ((exitcode=$?)) + if [ ${exitcode} -ne 0 ]; then + fn_script_log_fatal "Removing ${modinstalldir}/${currentfileremove}" + break + else + fn_script_log_pass "Removing ${modinstalldir}/${currentfileremove}" + fi fi tput rc; tput el printf "removing ${modprettyname} ${modfileline} / ${modsfilelistsize} : ${currentfileremove}..." @@ -90,26 +96,29 @@ sleep 0.5 # Remove file list echo -en "removing ${modcommand}-files.txt..." sleep 0.5 -fn_script_log "Removing: ${modsdir}/${modcommand}-files.txt" rm -rf "${modsdir}/${modcommand}-files.txt" local exitcode=$? if [ ${exitcode} -ne 0 ]; then + fn_script_log_fatal "Removing ${modsdir}/${modcommand}-files.txt" fn_print_fail_eol_nl core_exit.sh else + fn_script_log_pass "Removing ${modsdir}/${modcommand}-files.txt" fn_print_ok_eol_nl fi # Remove mods from installed mods list echo -en "removing ${modcommand} from ${modsinstalledlist}..." sleep 0.5 -fn_script_log "Removing: ${modcommand} from ${modsinstalledlist}" + sed -i "/^${modcommand}$/d" "${modsinstalledlistfullpath}" local exitcode=$? if [ ${exitcode} -ne 0 ]; then + fn_script_loga_fatal "Removing ${modcommand} from ${modsinstalledlist}" fn_print_fail_eol_nl core_exit.sh else + fn_script_loga_pass "Removing ${modcommand} from ${modsinstalledlist}" fn_print_ok_eol_nl fi From bc8083218987d3877c33c0f7bd98bdcd70fbaeaa Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 05:31:13 +0100 Subject: [PATCH 551/729] fn_getopt_rustserver (wipe command) --- lgsm/functions/core_getopt.sh | 88 +++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index faa9c7011..495cc7825 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -574,6 +574,92 @@ case "${getopt}" in esac } +fn_getopt_rustserver(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + fu|force-update|update-restart) + forceupdate=1; + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + mi|mods-install) + command_mods_install.sh;; + mu|mods-update) + command_mods_update.sh;; + mr|mods-remove) + command_mods_remove.sh;; + wi|wipe + command_wipe.sh + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." + echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}mods-install\t${default}mi |View and install available mods/addons." + echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." + echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." + echo -e "${blue}wipe\t${default}wi |Wipe your Rust server." + } | column -s $'\t' -t + esac +} + fn_getopt_unreal(){ case "${getopt}" in st|start) @@ -796,6 +882,8 @@ elif [ "${gamename}" == "Mumble" ]; then # Teamspeak 3 elif [ "${gamename}" == "TeamSpeak 3" ]; then fn_getopt_teamspeak3 +elif [ "${gamename}" == "Rust" ]; then + fn_getopt_rustserver # Unreal 2 Engine elif [ "${engine}" == "unreal2" ]; then if [ "${gamename}" == "Unreal Tournament 2004" ]; then From 694b27b35ae81e51c4de42aec626a64b7f0f6c87 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 05:32:32 +0100 Subject: [PATCH 552/729] command_wipe.sh --- lgsm/functions/core_functions.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index cd7aa07c7..a84163921 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -212,6 +212,10 @@ functionfile="${FUNCNAME}" fn_fetch_function } +command_wipe.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} # Checks From 63e0c184c320952af0612ada908fc90b96910b72 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 06:05:53 +0100 Subject: [PATCH 553/729] file init --- lgsm/functions/command_wipe.sh | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 lgsm/functions/command_wipe.sh diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh new file mode 100644 index 000000000..2bdcf9c76 --- /dev/null +++ b/lgsm/functions/command_wipe.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# LGSM command_backup.sh function +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: https://gameservermanagers.com +# Description: Wipes server data for Rust, useful after monthly updates + From e830e8f9428f4045c388c1a673f6a028f713f51f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 07:29:09 +0100 Subject: [PATCH 554/729] various fixes --- lgsm/functions/mods_core.sh | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 1eb5984b0..9fd731c97 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -121,7 +121,7 @@ fn_mod_tidy_files_list(){ sleep 0.5 fn_script_log_info "Tidy up ${modcommand}-files.txt" # Lines/files to remove from file list (end with ";" separator) - removefromlist="cfg;addons;" + removefromlist="cfg;addons;RustDedicated_Data;RustDedicated_Data/Managed;RustDedicated_Data/Managed/x86;" # Loop through files to remove from file list, # generate elements to remove from list removefromlistamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" @@ -344,6 +344,21 @@ fn_mod_compatible_test(){ # Create mods files and directories if it doesn't exist fn_create_mods_dir(){ + # Create lgsm data modsdir + if [ ! -d "${modsdir}" ];then + echo "creating lgsm mods data directory ${modsdir}..." + mkdir -p "${modsdir}" + exitcode=$? + if [ ${exitcode} -ne 0 ]; then + fn_print_fail_eol_nl + fn_script_log_fatal "Creating mod download dir ${modsdir}" + core_exit.sh + else + fn_print_ok_eol_nl + fn_script_log_pass "Creating mod download dir ${modsdir}" + fi + sleep 0.5 + fi # Create mod install directory if [ ! -d "${modinstalldir}" ]; then echo "creating mods install directory ${modinstalldir}..." @@ -351,11 +366,11 @@ fn_create_mods_dir(){ exitcode=$? if [ ${exitcode} -ne 0 ]; then fn_print_fail_eol_nl - fn_script_log_fatal "Creating mod download dir ${modinstalldir}" + fn_script_log_fatal "Creating mod install directory ${modinstalldir}" core_exit.sh else fn_print_ok_eol_nl - fn_script_log_pass "Creating mod download dir ${modinstalldir}" + fn_script_log_pass "Creating mod install directory ${modinstalldir}" fi sleep 0.5 fi From 7b28f2b609acb5264dfe545883e6432d04031d41 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 07:30:49 +0100 Subject: [PATCH 555/729] missing ;; --- lgsm/functions/core_getopt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 495cc7825..121c7c244 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -618,7 +618,7 @@ case "${getopt}" in mr|mods-remove) command_mods_remove.sh;; wi|wipe - command_wipe.sh + command_wipe.sh;; dd|detect-deps) command_dev_detect_deps.sh;; dg|detect-glibc) From 332bcee4840be3d27aba2eb917881b090e6426a1 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 07:33:03 +0100 Subject: [PATCH 556/729] missing ), damn! --- lgsm/functions/core_getopt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 121c7c244..06dbccc43 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -617,7 +617,7 @@ case "${getopt}" in command_mods_update.sh;; mr|mods-remove) command_mods_remove.sh;; - wi|wipe + wi|wipe) command_wipe.sh;; dd|detect-deps) command_dev_detect_deps.sh;; From 451191c4777f733992917f3d8cfc480054d2cc4d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 07:42:14 +0100 Subject: [PATCH 557/729] escape for sed & fn_script_log_fail > fn_script_log_error --- lgsm/functions/mods_core.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 9fd731c97..f6319f284 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -121,7 +121,7 @@ fn_mod_tidy_files_list(){ sleep 0.5 fn_script_log_info "Tidy up ${modcommand}-files.txt" # Lines/files to remove from file list (end with ";" separator) - removefromlist="cfg;addons;RustDedicated_Data;RustDedicated_Data/Managed;RustDedicated_Data/Managed/x86;" + removefromlist="cfg;addons;RustDedicated_Data;RustDedicated_Data\/Managed;RustDedicated_Data\/Managed\/x86;" # Loop through files to remove from file list, # generate elements to remove from list removefromlistamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" @@ -439,7 +439,7 @@ fn_mods_check_installed(){ echo "" fn_print_failure_nl "No installed mods or addons were found" echo " * Install mods using LGSM first with: ./${selfname} mods-install" - fn_script_log_fail "No installed mods or addons were found." + fn_script_log_error "No installed mods or addons were found." core_exit.sh fi } From c13ab40e0d98f2aefe4683aa7673107092ebe0af Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 07:45:10 +0100 Subject: [PATCH 558/729] don't erase rust x64 dir --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index f6319f284..8c5e858ab 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -121,7 +121,7 @@ fn_mod_tidy_files_list(){ sleep 0.5 fn_script_log_info "Tidy up ${modcommand}-files.txt" # Lines/files to remove from file list (end with ";" separator) - removefromlist="cfg;addons;RustDedicated_Data;RustDedicated_Data\/Managed;RustDedicated_Data\/Managed\/x86;" + removefromlist="cfg;addons;RustDedicated_Data;RustDedicated_Data\/Managed;RustDedicated_Data\/Managed\/x86;RustDedicated_Data\/Managed\/x64" # Loop through files to remove from file list, # generate elements to remove from list removefromlistamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" From f8072b69ded7034b813a2a20fcb9ea4d9eaa2fb0 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 07:48:33 +0100 Subject: [PATCH 559/729] typo: loga > log --- lgsm/functions/command_mods_remove.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 7b96503ec..d63a00101 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -114,11 +114,11 @@ sleep 0.5 sed -i "/^${modcommand}$/d" "${modsinstalledlistfullpath}" local exitcode=$? if [ ${exitcode} -ne 0 ]; then - fn_script_loga_fatal "Removing ${modcommand} from ${modsinstalledlist}" + fn_script_log_fatal "Removing ${modcommand} from ${modsinstalledlist}" fn_print_fail_eol_nl core_exit.sh else - fn_script_loga_pass "Removing ${modcommand} from ${modsinstalledlist}" + fn_script_log_pass "Removing ${modcommand} from ${modsinstalledlist}" fn_print_ok_eol_nl fi From c972ef09257094100baf1279cec920b660f6c56e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 07:51:32 +0100 Subject: [PATCH 560/729] missing semicolon for x64 dir to preserve --- lgsm/functions/mods_core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 8c5e858ab..1e36285e1 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -121,7 +121,7 @@ fn_mod_tidy_files_list(){ sleep 0.5 fn_script_log_info "Tidy up ${modcommand}-files.txt" # Lines/files to remove from file list (end with ";" separator) - removefromlist="cfg;addons;RustDedicated_Data;RustDedicated_Data\/Managed;RustDedicated_Data\/Managed\/x86;RustDedicated_Data\/Managed\/x64" + removefromlist="cfg;addons;RustDedicated_Data;RustDedicated_Data\/Managed;RustDedicated_Data\/Managed\/x86;RustDedicated_Data\/Managed\/x64;" # Loop through files to remove from file list, # generate elements to remove from list removefromlistamount="$(echo "${removefromlist}" | awk -F ';' '{ print NF }')" From 462a653b36ff4efc6ef7a49ed4579dbc74070840 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 08:36:46 +0100 Subject: [PATCH 561/729] attempt for permission errors in /sys fix||alert --- lgsm/functions/check_permissions.sh | 91 +++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 1411e649c..987faef7f 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -126,5 +126,96 @@ fn_check_permissions(){ fi } +## The following fn_sys_perm_* functions checks for permission errors in /sys directory + +# Checks for permission errors in /sys directory +fn_sys_perm_errors(){ + # Reset test variables + sysdirpermerror="0" + classdirpermerror="0" + netdirpermerror="0" + # Check permissions + if [ ! -r "/sys" ]||[ ! -x "/sys" ]; then + sysdirpermerror="1" + fi + if [ ! -r "/sys/class" ]||[ ! -x "/sys/class" ]; then + classdirpermerror="1" + if [ ! -r "/sys/class/net" ]||[ ! -x "sys/class/net" ]; then + netdirpermerror="1" + fi +} + +# Displays /sys related permission errors to the user +fn_sys_perm_error_display(){ + # /sys, /sys/class and /sys/class/net should be readable & executable + # If any error was found + if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then + fn_print_error_nl "Permission error(s) found:" + fn_script_log_error "Permission error(s) found:" + if [ "${sysdirpermerror}" == "1" ]; then + echo " * /sys permissions are $(stat -c %a /sys) instead of expected 555" + fn_script_log "/sys permissions are $(stat -c %a /sys) instead of expected 555" + fi + if [ "${classdirpermerror}" == "1" ]; then + echo " * /sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" + fn_script_log "/sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" + fi + if [ "${netdirpermerror}" == "1" ]; then + echo " * /sys/class/net permissions are $(stat -c %a /sys/class) instead of expected 755" + fn_script_log "/sys/class/net permissions are $(stat -c %a /sys/class) instead of expected 755" + fi + echo "" + fn_print_information_nl "This error causes servers to fail starting properly" + fn_script_log_info "This error causes servers to fail starting properly." +} + +# Attempt to fix /sys related permission errors if sudo is available, exits otherwise +fn_fix_sys_perm_errors(){ + sudo -v > /dev/null 2>&1 + iif [ $? -eq 0 ]; then + fn_print_information_nl "Automatically fixing permissions" + fn_script_log_info "Automatically fixing permissions." + if [ "${sysdirpermerror}" == "1" ]; then + sudo chmod a+rx "/sys" + fi + if [ "${classdirpermerror}" == "1" ]; then + sudo chmod a+rx "/sys/class" + fi + if [ "${netdirpermerror}" == "1" ]; then + sudo a+rx "/sys/class/net" + fi + else + fn_fix_sys_perm_manually_msg + fi + # Run check again to see if it's fixed + fn_sys_perm_errors + if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then + fn_print_error "Could not fix permissions" + fn_script_log_error "Could not fix permissions." + fn_fix_sys_perm_manually_msg + else + fn_print_ok "Automatically fixing permissions" + fi +} + +# Display a message on how to fix the issue manually +fn_fix_sys_perm_manually_msg(){ + echo "" + fn_print_information_nl "To fix this issue, run this command as root:" + fn_script_log_info "To fix this issue, run this command as root:" + echo " * chmod a+rx /sys /sys/class /sys/class/net" + fn_script_log "chmod a+rx /sys /sys/class /sys/class/net" + core_exit.sh +} + +# Run perm error detect & fix/alert functions on /sys directories +fn_fix_sus_perm_run(){ + fn_sys_perm_errors + fn_sys_perm_error_display + fn_fix_sys_perm_errors +} + +## Run checks fn_check_ownership fn_check_permissions +fn_fix_sus_perm_run From 6bcf93e218e98591548124d627c719cea7838bb9 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 08:41:58 +0100 Subject: [PATCH 562/729] fixes & rework perms on /sys --- lgsm/functions/check_permissions.sh | 34 +++++++++++++++-------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 987faef7f..aaf75939a 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -140,6 +140,7 @@ fn_sys_perm_errors(){ fi if [ ! -r "/sys/class" ]||[ ! -x "/sys/class" ]; then classdirpermerror="1" + fi if [ ! -r "/sys/class/net" ]||[ ! -x "sys/class/net" ]; then netdirpermerror="1" fi @@ -167,12 +168,13 @@ fn_sys_perm_error_display(){ echo "" fn_print_information_nl "This error causes servers to fail starting properly" fn_script_log_info "This error causes servers to fail starting properly." + fi } # Attempt to fix /sys related permission errors if sudo is available, exits otherwise -fn_fix_sys_perm_errors(){ +fn_sys_perm_errors_fix(){ sudo -v > /dev/null 2>&1 - iif [ $? -eq 0 ]; then + if [ $? -eq 0 ]; then fn_print_information_nl "Automatically fixing permissions" fn_script_log_info "Automatically fixing permissions." if [ "${sysdirpermerror}" == "1" ]; then @@ -184,22 +186,22 @@ fn_fix_sys_perm_errors(){ if [ "${netdirpermerror}" == "1" ]; then sudo a+rx "/sys/class/net" fi + # Run check again to see if it's fixed + fn_sys_perm_errors + if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then + fn_print_error "Could not fix permissions" + fn_script_log_error "Could not fix permissions." + fn_sys_perm_fix_manually_msg + else + fn_print_ok "Automatically fixing permissions" + fi else - fn_fix_sys_perm_manually_msg - fi - # Run check again to see if it's fixed - fn_sys_perm_errors - if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then - fn_print_error "Could not fix permissions" - fn_script_log_error "Could not fix permissions." - fn_fix_sys_perm_manually_msg - else - fn_print_ok "Automatically fixing permissions" + fn_sys_perm_fix_manually_msg fi } # Display a message on how to fix the issue manually -fn_fix_sys_perm_manually_msg(){ +fn_sys_perm_fix_manually_msg(){ echo "" fn_print_information_nl "To fix this issue, run this command as root:" fn_script_log_info "To fix this issue, run this command as root:" @@ -209,13 +211,13 @@ fn_fix_sys_perm_manually_msg(){ } # Run perm error detect & fix/alert functions on /sys directories -fn_fix_sus_perm_run(){ +fn_fix_sum_perm_run(){ fn_sys_perm_errors fn_sys_perm_error_display - fn_fix_sys_perm_errors + fn_sys_perm_errors_fix } ## Run checks fn_check_ownership fn_check_permissions -fn_fix_sus_perm_run +fn_fix_sum_perm_run From 0ba392d4902233520e3f6d66ea3e0195b1d02f18 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 08:51:50 +0100 Subject: [PATCH 563/729] typo fixes --- lgsm/functions/check_permissions.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index aaf75939a..664a5f63b 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -141,7 +141,7 @@ fn_sys_perm_errors(){ if [ ! -r "/sys/class" ]||[ ! -x "/sys/class" ]; then classdirpermerror="1" fi - if [ ! -r "/sys/class/net" ]||[ ! -x "sys/class/net" ]; then + if [ ! -r "/sys/class/net" ]||[ ! -x "/sys/class/net" ]; then netdirpermerror="1" fi } @@ -162,8 +162,8 @@ fn_sys_perm_error_display(){ fn_script_log "/sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" fi if [ "${netdirpermerror}" == "1" ]; then - echo " * /sys/class/net permissions are $(stat -c %a /sys/class) instead of expected 755" - fn_script_log "/sys/class/net permissions are $(stat -c %a /sys/class) instead of expected 755" + echo " * /sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" + fn_script_log "/sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" fi echo "" fn_print_information_nl "This error causes servers to fail starting properly" From 416d15e76e7e994b34ffd55b9834fd8b74395624 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 08:59:14 +0100 Subject: [PATCH 564/729] Ordering/naming to make more sense --- lgsm/functions/check_permissions.sh | 76 ++++++++++++++--------------- 1 file changed, 37 insertions(+), 39 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 664a5f63b..087e019cc 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -129,7 +129,7 @@ fn_check_permissions(){ ## The following fn_sys_perm_* functions checks for permission errors in /sys directory # Checks for permission errors in /sys directory -fn_sys_perm_errors(){ +fn_sys_perm_errors_detect(){ # Reset test variables sysdirpermerror="0" classdirpermerror="0" @@ -146,29 +146,14 @@ fn_sys_perm_errors(){ fi } -# Displays /sys related permission errors to the user -fn_sys_perm_error_display(){ - # /sys, /sys/class and /sys/class/net should be readable & executable - # If any error was found - if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then - fn_print_error_nl "Permission error(s) found:" - fn_script_log_error "Permission error(s) found:" - if [ "${sysdirpermerror}" == "1" ]; then - echo " * /sys permissions are $(stat -c %a /sys) instead of expected 555" - fn_script_log "/sys permissions are $(stat -c %a /sys) instead of expected 555" - fi - if [ "${classdirpermerror}" == "1" ]; then - echo " * /sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" - fn_script_log "/sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" - fi - if [ "${netdirpermerror}" == "1" ]; then - echo " * /sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" - fn_script_log "/sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" - fi - echo "" - fn_print_information_nl "This error causes servers to fail starting properly" - fn_script_log_info "This error causes servers to fail starting properly." - fi +# Display a message on how to fix the issue manually +fn_sys_perm_fix_manually_msg(){ + echo "" + fn_print_information_nl "To fix this issue, run this command as root:" + fn_script_log_info "To fix this issue, run this command as root:" + echo " * chmod a+rx /sys /sys/class /sys/class/net" + fn_script_log "chmod a+rx /sys /sys/class /sys/class/net" + core_exit.sh } # Attempt to fix /sys related permission errors if sudo is available, exits otherwise @@ -187,7 +172,7 @@ fn_sys_perm_errors_fix(){ sudo a+rx "/sys/class/net" fi # Run check again to see if it's fixed - fn_sys_perm_errors + fn_sys_perm_errors_detect if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then fn_print_error "Could not fix permissions" fn_script_log_error "Could not fix permissions." @@ -200,24 +185,37 @@ fn_sys_perm_errors_fix(){ fi } -# Display a message on how to fix the issue manually -fn_sys_perm_fix_manually_msg(){ - echo "" - fn_print_information_nl "To fix this issue, run this command as root:" - fn_script_log_info "To fix this issue, run this command as root:" - echo " * chmod a+rx /sys /sys/class /sys/class/net" - fn_script_log "chmod a+rx /sys /sys/class /sys/class/net" - core_exit.sh +# Processes to the /sys related permission errors check & fix/info +fn_sys_perm_error_process(){ + fn_sys_perm_errors + # /sys, /sys/class and /sys/class/net should be readable & executable + # If any error was found + if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then + fn_print_error_nl "Permission error(s) found:" + fn_script_log_error "Permission error(s) found:" + if [ "${sysdirpermerror}" == "1" ]; then + echo " * /sys permissions are $(stat -c %a /sys) instead of expected 555" + fn_script_log "/sys permissions are $(stat -c %a /sys) instead of expected 555" + fi + if [ "${classdirpermerror}" == "1" ]; then + echo " * /sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" + fn_script_log "/sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" + fi + if [ "${netdirpermerror}" == "1" ]; then + echo " * /sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" + fn_script_log "/sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" + fi + echo "" + fn_print_information_nl "This error causes servers to fail starting properly" + fn_script_log_info "This error causes servers to fail starting properly." + # Run the fix + fn_sys_perm_errors_fix + fi } # Run perm error detect & fix/alert functions on /sys directories -fn_fix_sum_perm_run(){ - fn_sys_perm_errors - fn_sys_perm_error_display - fn_sys_perm_errors_fix -} ## Run checks fn_check_ownership fn_check_permissions -fn_fix_sum_perm_run +fn_sys_perm_error_process From 369f5cc9519980838192007b7611514bdda058b2 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 09:01:14 +0100 Subject: [PATCH 565/729] comments location & func name --- lgsm/functions/check_permissions.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 087e019cc..10f9ce701 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -135,6 +135,7 @@ fn_sys_perm_errors_detect(){ classdirpermerror="0" netdirpermerror="0" # Check permissions + # /sys, /sys/class and /sys/class/net should be readable & executable if [ ! -r "/sys" ]||[ ! -x "/sys" ]; then sysdirpermerror="1" fi @@ -176,19 +177,20 @@ fn_sys_perm_errors_fix(){ if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then fn_print_error "Could not fix permissions" fn_script_log_error "Could not fix permissions." + # Show the user how to fix fn_sys_perm_fix_manually_msg else fn_print_ok "Automatically fixing permissions" fi else + # Show the user how to fix fn_sys_perm_fix_manually_msg fi } # Processes to the /sys related permission errors check & fix/info fn_sys_perm_error_process(){ - fn_sys_perm_errors - # /sys, /sys/class and /sys/class/net should be readable & executable + fn_sys_perm_errors_detect # If any error was found if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then fn_print_error_nl "Permission error(s) found:" From cc8273d24f4329f9b6d5d1b68c860b1b2b123443 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 09:13:18 +0100 Subject: [PATCH 566/729] missing chmod --- lgsm/functions/check_permissions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 10f9ce701..0f2220880 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -170,7 +170,7 @@ fn_sys_perm_errors_fix(){ sudo chmod a+rx "/sys/class" fi if [ "${netdirpermerror}" == "1" ]; then - sudo a+rx "/sys/class/net" + sudo chmod a+rx "/sys/class/net" fi # Run check again to see if it's fixed fn_sys_perm_errors_detect From 63d58bccb4ae3bb895ee17c4f8266abb01676172 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 09:17:45 +0100 Subject: [PATCH 567/729] better output with sleeps --- lgsm/functions/check_permissions.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 0f2220880..ff9d619ee 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -154,6 +154,7 @@ fn_sys_perm_fix_manually_msg(){ fn_script_log_info "To fix this issue, run this command as root:" echo " * chmod a+rx /sys /sys/class /sys/class/net" fn_script_log "chmod a+rx /sys /sys/class /sys/class/net" + sleep 1 core_exit.sh } @@ -162,6 +163,7 @@ fn_sys_perm_errors_fix(){ sudo -v > /dev/null 2>&1 if [ $? -eq 0 ]; then fn_print_information_nl "Automatically fixing permissions" + sleep 1 fn_script_log_info "Automatically fixing permissions." if [ "${sysdirpermerror}" == "1" ]; then sudo chmod a+rx "/sys" @@ -177,10 +179,12 @@ fn_sys_perm_errors_fix(){ if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then fn_print_error "Could not fix permissions" fn_script_log_error "Could not fix permissions." + sleep 1 # Show the user how to fix fn_sys_perm_fix_manually_msg else fn_print_ok "Automatically fixing permissions" + sleep 1 fi else # Show the user how to fix @@ -195,19 +199,20 @@ fn_sys_perm_error_process(){ if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then fn_print_error_nl "Permission error(s) found:" fn_script_log_error "Permission error(s) found:" + sleep 1 if [ "${sysdirpermerror}" == "1" ]; then - echo " * /sys permissions are $(stat -c %a /sys) instead of expected 555" + echo " * /sys permissions are $(stat -c %a /sys) instead of expected 555" fn_script_log "/sys permissions are $(stat -c %a /sys) instead of expected 555" fi if [ "${classdirpermerror}" == "1" ]; then - echo " * /sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" + echo " * /sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" fn_script_log "/sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" fi if [ "${netdirpermerror}" == "1" ]; then - echo " * /sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" + echo " * /sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" fn_script_log "/sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" fi - echo "" + sleep 1 fn_print_information_nl "This error causes servers to fail starting properly" fn_script_log_info "This error causes servers to fail starting properly." # Run the fix From 51f6a5b25ae47bbb6417e1b772c80d0a1202cb95 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 09:23:01 +0100 Subject: [PATCH 568/729] warn & error in the right places --- lgsm/functions/check_permissions.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index ff9d619ee..8609708e2 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -197,8 +197,8 @@ fn_sys_perm_error_process(){ fn_sys_perm_errors_detect # If any error was found if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then - fn_print_error_nl "Permission error(s) found:" - fn_script_log_error "Permission error(s) found:" + fn_print_warn_nl "Permission error(s) found:" + fn_script_log_warn "Permission error(s) found:" sleep 1 if [ "${sysdirpermerror}" == "1" ]; then echo " * /sys permissions are $(stat -c %a /sys) instead of expected 555" From 81848996fff4bf0b9b7455805d88d2e7399441e4 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 09:27:02 +0100 Subject: [PATCH 569/729] log_info instead of warn otherwise fails even if fixed because of exitcode from log_warn --- lgsm/functions/check_permissions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 8609708e2..ad7f30a78 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -198,7 +198,7 @@ fn_sys_perm_error_process(){ # If any error was found if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then fn_print_warn_nl "Permission error(s) found:" - fn_script_log_warn "Permission error(s) found:" + fn_script_log_info "Permission error(s) found:" sleep 1 if [ "${sysdirpermerror}" == "1" ]; then echo " * /sys permissions are $(stat -c %a /sys) instead of expected 555" From f54e5af2648d7df71eb4d05102c13d744ca7c051 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 09:42:46 +0100 Subject: [PATCH 570/729] output improvements --- lgsm/functions/check_permissions.sh | 30 +++++++++-------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index ad7f30a78..312f24700 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -162,9 +162,9 @@ fn_sys_perm_fix_manually_msg(){ fn_sys_perm_errors_fix(){ sudo -v > /dev/null 2>&1 if [ $? -eq 0 ]; then - fn_print_information_nl "Automatically fixing permissions" - sleep 1 - fn_script_log_info "Automatically fixing permissions." + fn_print_dots "Automatically fixing /sys permissions" + sleep 2 + fn_script_log_info "Automatically fixing /sys permissions." if [ "${sysdirpermerror}" == "1" ]; then sudo chmod a+rx "/sys" fi @@ -177,13 +177,14 @@ fn_sys_perm_errors_fix(){ # Run check again to see if it's fixed fn_sys_perm_errors_detect if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then - fn_print_error "Could not fix permissions" - fn_script_log_error "Could not fix permissions." + fn_print_error "Could not fix /sys permissions" + fn_script_log_error "Could not fix /sys permissions." sleep 1 # Show the user how to fix fn_sys_perm_fix_manually_msg else - fn_print_ok "Automatically fixing permissions" + fn_print_ok "Automatically fixing /sys permissions" + fn_script_log_pass "Permissions in /sys fixed" sleep 1 fi else @@ -197,21 +198,8 @@ fn_sys_perm_error_process(){ fn_sys_perm_errors_detect # If any error was found if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then - fn_print_warn_nl "Permission error(s) found:" - fn_script_log_info "Permission error(s) found:" - sleep 1 - if [ "${sysdirpermerror}" == "1" ]; then - echo " * /sys permissions are $(stat -c %a /sys) instead of expected 555" - fn_script_log "/sys permissions are $(stat -c %a /sys) instead of expected 555" - fi - if [ "${classdirpermerror}" == "1" ]; then - echo " * /sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" - fn_script_log "/sys/class permissions are $(stat -c %a /sys/class) instead of expected 755" - fi - if [ "${netdirpermerror}" == "1" ]; then - echo " * /sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" - fn_script_log "/sys/class/net permissions are $(stat -c %a /sys/class/net) instead of expected 755" - fi + fn_print_error_nl "Permission error(s) found in /sys" + fn_script_log_error "Permission error(s) found in /sys" sleep 1 fn_print_information_nl "This error causes servers to fail starting properly" fn_script_log_info "This error causes servers to fail starting properly." From f09274abc88df8a3a956d1d7278d4efbed590c5d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 09:45:31 +0100 Subject: [PATCH 571/729] better output & logging --- lgsm/functions/check_permissions.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 312f24700..fa1e70f74 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -150,9 +150,11 @@ fn_sys_perm_errors_detect(){ # Display a message on how to fix the issue manually fn_sys_perm_fix_manually_msg(){ echo "" - fn_print_information_nl "To fix this issue, run this command as root:" - fn_script_log_info "To fix this issue, run this command as root:" - echo " * chmod a+rx /sys /sys/class /sys/class/net" + fn_print_information_nl "This error causes servers to fail starting properly" + fn_script_log_info "This error causes servers to fail starting properly." + echo " * To fix this issue, run the following command as root:" + fn_script_log_info "To fix this issue, run the following command as root:" + echo " chmod a+rx /sys /sys/class /sys/class/net" fn_script_log "chmod a+rx /sys /sys/class /sys/class/net" sleep 1 core_exit.sh @@ -201,8 +203,6 @@ fn_sys_perm_error_process(){ fn_print_error_nl "Permission error(s) found in /sys" fn_script_log_error "Permission error(s) found in /sys" sleep 1 - fn_print_information_nl "This error causes servers to fail starting properly" - fn_script_log_info "This error causes servers to fail starting properly." # Run the fix fn_sys_perm_errors_fix fi From 6a49021878d26434f3b54c4211fec340e93da50c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 27 Jan 2017 14:48:00 +0000 Subject: [PATCH 572/729] Minor changes to UI --- lgsm/functions/fix.sh | 8 ++++++++ lgsm/functions/fix_glibc.sh | 6 +++--- lgsm/functions/fix_mta.sh | 14 +++++--------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index 327fcccf9..5bac281a3 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -17,6 +17,14 @@ fn_fix_msg_start(){ sleep 1 } +fn_fix_msg_start_nl(){ + fn_print_dots "Applying ${fixname} fix: ${gamename}" + sleep 1 + fn_print_info "Applying ${fixname} fix: ${gamename}" + fn_script_log_info "Applying ${fixname} fix: ${gamename}" + sleep 1 +} + fn_fix_msg_end(){ if [ $? -ne 0 ]; then fn_print_error_nl "Applying ${fixname} fix: ${gamename}" diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index 8580e3e71..d03b2c41e 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -46,8 +46,6 @@ do fi done -export LD_LIBRARY_PATH=:"${libdir}" - ## amd64 # libm.so.6 @@ -66,4 +64,6 @@ do if [ "${gamename}" == "${libc_server}" ]; then fn_fetch_file_github "lgsm/lib/ubuntu12.04/amd64" "libc.so.6" "${lgsmdir}/lib" "noexecutecmd" "norun" "noforce" "nomd5" fi -done \ No newline at end of file +done + +export LD_LIBRARY_PATH=:"${libdir}" \ No newline at end of file diff --git a/lgsm/functions/fix_mta.sh b/lgsm/functions/fix_mta.sh index 6bf11dbc9..7347201d9 100644 --- a/lgsm/functions/fix_mta.sh +++ b/lgsm/functions/fix_mta.sh @@ -9,16 +9,12 @@ local commandaction="Fix" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" if [ ! -f "${lgsmdir}/lib/libmysqlclient.so.16" ]; then - fixname="libmysqlclient16 install" - fn_fix_msg_start - fn_print_warn_nl "libmysqlclient16 not installed. Installing.." + fixname="libmysqlclient16" + fn_fix_msg_start_nl sleep 1 - fileurl="https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16"; filedir="${lgsmdir}/lib"; filename="libmysqlclient.so.16"; executecmd="executecmd" run="norun"; force="noforce"; md5="6c188e0f8fb5d7a29f4bc413b9fed6c2" - fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" + fileurl="https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16"; filedir="${lgsmdir}/lib"; filename="libmysqlclient.so.16"; executecmd="executecmd" run="norun"; force="noforce"; md5="6c188e0f8fb5d7a29f4bc413b9fed6c2" + fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}" fn_fix_msg_end fi -fixname="libmysqlclient16" -fn_fix_msg_start -export LD_LIBRARY_PATH=:"${libdir}" -fn_fix_msg_end +export LD_LIBRARY_PATH=:"${libdir}" \ No newline at end of file From 185e93f38e6627311fc145567c00e675fc38b658 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 27 Jan 2017 15:48:12 +0000 Subject: [PATCH 573/729] minot variable changes --- lgsm/functions/update_mta.sh | 41 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index 365dae131..fff189ca7 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -9,12 +9,12 @@ local commandaction="Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_update_mta_dl(){ - fn_fetch_file "http://linux.mtasa.com/dl/${NUM_VERSION}/multitheftauto_linux_x64-${FULL_VERSION}.tar.gz" "${tmpdir}" "multitheftauto_linux_x64-${FULL_VERSION}.tar.gz" - mkdir "${tmpdir}/multitheftauto_linux_x64-${FULL_VERSION}" - fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${FULL_VERSION}.tar.gz" "${tmpdir}/multitheftauto_linux_x64-${FULL_VERSION}" + fn_fetch_file "http://linux.mtasa.com/dl/${numversion}/multitheftauto_linux_x64-${fullversion}.tar.gz" "${tmpdir}" "multitheftauto_linux_x64-${fullversion}.tar.gz" + mkdir "${tmpdir}/multitheftauto_linux_x64-${fullversion}" + fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${fullversion}.tar.gz" "${tmpdir}/multitheftauto_linux_x64-${fullversion}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" - cp -R "${tmpdir}/multitheftauto_linux_x64-${FULL_VERSION}/multitheftauto_linux_x64-${FULL_VERSION}/"* "${filesdir}" + cp -R "${tmpdir}/multitheftauto_linux_x64-${fullversion}/multitheftauto_linux_x64-${fullversion}/"* "${filesdir}" local exitcode=$? if [ "${exitcode}" == "0" ]; then fn_print_ok_eol_nl @@ -69,22 +69,21 @@ fn_update_mta_currentbuild(){ fi } -fn_mta_getServerVersion() +fn_mta_get_availablebuild() { - fn_fetch_file "https://raw.githubusercontent.com/multitheftauto/mtasa-blue/master/Server/version.h" "${tmpdir}" "version.h" # we need to find latest stable version here - local MAJOR_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAJOR" | awk '{ print $3 }' | sed 's/\r//g')" - local MINOR_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MINOR" | awk '{ print $3 }' | sed 's/\r//g')" - local MAINTENANCE_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAINTENANCE" | awk '{ print $3 }' | sed 's/\r//g')" - NUM_VERSION="${MAJOR_VERSION}${MINOR_VERSION}${MAINTENANCE_VERSION}" - FULL_VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${MAINTENANCE_VERSION}" - rm -f "${tmpdir}/version.h" + fn_fetch_file "https://raw.githubusercontent.com/multitheftauto/mtasa-blue/master/Server/version.h" "${tmpdir}" "version.h" # we need to find latest stable version here + local majorversion="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAJOR" | awk '{ print $3 }' | sed 's/\r//g')" + local minorversion="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MINOR" | awk '{ print $3 }' | sed 's/\r//g')" + local maintenanceversion="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAINTENANCE" | awk '{ print $3 }' | sed 's/\r//g')" + numversion="${majorversion}${minorversion}${maintenanceversion}" + fullversion="${majorversion}.${minorversion}.${maintenanceversion}" + rm -f "${tmpdir}/version.h" } fn_update_mta_compare(){ # Removes dots so if can compare version numbers currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]') - - if [ "${currentbuilddigit}" -ne "${NUM_VERSION}" ]||[ "${forceupdate}" == "1" ]; then + if [ "${currentbuilddigit}" -ne "${numversion}" ]||[ "${forceupdate}" == "1" ]; then if [ "${forceupdate}" == "1" ]; then # forceupdate bypasses checks, useful for small build changes mta_update_string="forced" @@ -95,7 +94,7 @@ fn_update_mta_compare(){ echo -e "Update ${mta_update_string}:" sleep 1 echo -e " Current build: ${red}${currentbuild} ${default}" - echo -e " Available build: ${green}${FULL_VERSION} ${default}" + echo -e " Available build: ${green}${fullversion} ${default}" echo -e "" sleep 1 echo "" @@ -108,8 +107,8 @@ fn_update_mta_compare(){ echo -en "\n" fn_script_log "Update ${mta_update_string}" fn_script_log "Current build: ${currentbuild}" - fn_script_log "Available build: ${FULL_VERSION}" - fn_script_log "${currentbuild} > ${FULL_VERSION}" + fn_script_log "Available build: ${fullversion}" + fn_script_log "${currentbuild} > ${fullversion}" unset updateonstart @@ -133,17 +132,17 @@ fn_update_mta_compare(){ echo -e "\n" echo -e "No update available:" echo -e " Current version: ${green}${currentbuild}${default}" - echo -e " Available version: ${green}${FULL_VERSION}${default}" + echo -e " Available version: ${green}${fullversion}${default}" echo -e "" fn_print_ok_nl "No update available" fn_script_log_info "Current build: ${currentbuild}" - fn_script_log_info "Available build: ${FULL_VERSION}" + fn_script_log_info "Available build: ${fullversion}" fi } if [ "${installer}" == "1" ]; then - fn_mta_getServerVersion + fn_mta_get_availablebuild fn_update_mta_dl else # Checks for server update from linux.mtasa.com using the github repo. @@ -151,6 +150,6 @@ else fn_script_log_info "Checking for update: linux.mtasa.com" sleep 1 fn_update_mta_currentbuild - fn_mta_getServerVersion + fn_mta_get_availablebuild fn_update_mta_compare fi From 8577632c92d55c96c461048593cb926bce85ca13 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 27 Jan 2017 15:48:12 +0000 Subject: [PATCH 574/729] minor variable changes --- lgsm/functions/update_mta.sh | 41 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index 365dae131..fff189ca7 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -9,12 +9,12 @@ local commandaction="Update" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_update_mta_dl(){ - fn_fetch_file "http://linux.mtasa.com/dl/${NUM_VERSION}/multitheftauto_linux_x64-${FULL_VERSION}.tar.gz" "${tmpdir}" "multitheftauto_linux_x64-${FULL_VERSION}.tar.gz" - mkdir "${tmpdir}/multitheftauto_linux_x64-${FULL_VERSION}" - fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${FULL_VERSION}.tar.gz" "${tmpdir}/multitheftauto_linux_x64-${FULL_VERSION}" + fn_fetch_file "http://linux.mtasa.com/dl/${numversion}/multitheftauto_linux_x64-${fullversion}.tar.gz" "${tmpdir}" "multitheftauto_linux_x64-${fullversion}.tar.gz" + mkdir "${tmpdir}/multitheftauto_linux_x64-${fullversion}" + fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64-${fullversion}.tar.gz" "${tmpdir}/multitheftauto_linux_x64-${fullversion}" echo -e "copying to ${filesdir}...\c" fn_script_log "Copying to ${filesdir}" - cp -R "${tmpdir}/multitheftauto_linux_x64-${FULL_VERSION}/multitheftauto_linux_x64-${FULL_VERSION}/"* "${filesdir}" + cp -R "${tmpdir}/multitheftauto_linux_x64-${fullversion}/multitheftauto_linux_x64-${fullversion}/"* "${filesdir}" local exitcode=$? if [ "${exitcode}" == "0" ]; then fn_print_ok_eol_nl @@ -69,22 +69,21 @@ fn_update_mta_currentbuild(){ fi } -fn_mta_getServerVersion() +fn_mta_get_availablebuild() { - fn_fetch_file "https://raw.githubusercontent.com/multitheftauto/mtasa-blue/master/Server/version.h" "${tmpdir}" "version.h" # we need to find latest stable version here - local MAJOR_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAJOR" | awk '{ print $3 }' | sed 's/\r//g')" - local MINOR_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MINOR" | awk '{ print $3 }' | sed 's/\r//g')" - local MAINTENANCE_VERSION="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAINTENANCE" | awk '{ print $3 }' | sed 's/\r//g')" - NUM_VERSION="${MAJOR_VERSION}${MINOR_VERSION}${MAINTENANCE_VERSION}" - FULL_VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${MAINTENANCE_VERSION}" - rm -f "${tmpdir}/version.h" + fn_fetch_file "https://raw.githubusercontent.com/multitheftauto/mtasa-blue/master/Server/version.h" "${tmpdir}" "version.h" # we need to find latest stable version here + local majorversion="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAJOR" | awk '{ print $3 }' | sed 's/\r//g')" + local minorversion="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MINOR" | awk '{ print $3 }' | sed 's/\r//g')" + local maintenanceversion="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAINTENANCE" | awk '{ print $3 }' | sed 's/\r//g')" + numversion="${majorversion}${minorversion}${maintenanceversion}" + fullversion="${majorversion}.${minorversion}.${maintenanceversion}" + rm -f "${tmpdir}/version.h" } fn_update_mta_compare(){ # Removes dots so if can compare version numbers currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]') - - if [ "${currentbuilddigit}" -ne "${NUM_VERSION}" ]||[ "${forceupdate}" == "1" ]; then + if [ "${currentbuilddigit}" -ne "${numversion}" ]||[ "${forceupdate}" == "1" ]; then if [ "${forceupdate}" == "1" ]; then # forceupdate bypasses checks, useful for small build changes mta_update_string="forced" @@ -95,7 +94,7 @@ fn_update_mta_compare(){ echo -e "Update ${mta_update_string}:" sleep 1 echo -e " Current build: ${red}${currentbuild} ${default}" - echo -e " Available build: ${green}${FULL_VERSION} ${default}" + echo -e " Available build: ${green}${fullversion} ${default}" echo -e "" sleep 1 echo "" @@ -108,8 +107,8 @@ fn_update_mta_compare(){ echo -en "\n" fn_script_log "Update ${mta_update_string}" fn_script_log "Current build: ${currentbuild}" - fn_script_log "Available build: ${FULL_VERSION}" - fn_script_log "${currentbuild} > ${FULL_VERSION}" + fn_script_log "Available build: ${fullversion}" + fn_script_log "${currentbuild} > ${fullversion}" unset updateonstart @@ -133,17 +132,17 @@ fn_update_mta_compare(){ echo -e "\n" echo -e "No update available:" echo -e " Current version: ${green}${currentbuild}${default}" - echo -e " Available version: ${green}${FULL_VERSION}${default}" + echo -e " Available version: ${green}${fullversion}${default}" echo -e "" fn_print_ok_nl "No update available" fn_script_log_info "Current build: ${currentbuild}" - fn_script_log_info "Available build: ${FULL_VERSION}" + fn_script_log_info "Available build: ${fullversion}" fi } if [ "${installer}" == "1" ]; then - fn_mta_getServerVersion + fn_mta_get_availablebuild fn_update_mta_dl else # Checks for server update from linux.mtasa.com using the github repo. @@ -151,6 +150,6 @@ else fn_script_log_info "Checking for update: linux.mtasa.com" sleep 1 fn_update_mta_currentbuild - fn_mta_getServerVersion + fn_mta_get_availablebuild fn_update_mta_compare fi From 6d63023ac23f9d173542b54bd834ec690ba63817 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 19:34:06 +0100 Subject: [PATCH 575/729] fn_print_ok_nl "Automatically fixing ... --- lgsm/functions/check_permissions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index fa1e70f74..defde5771 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -185,7 +185,7 @@ fn_sys_perm_errors_fix(){ # Show the user how to fix fn_sys_perm_fix_manually_msg else - fn_print_ok "Automatically fixing /sys permissions" + fn_print_ok_nl "Automatically fixing /sys permissions" fn_script_log_pass "Permissions in /sys fixed" sleep 1 fi From 0001a2136a9f64d91b9807ea4b00dadb58ce942b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 19:55:56 +0100 Subject: [PATCH 576/729] command_wipe.sh for check_logs.sh --- lgsm/functions/check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 577579171..a56bb2942 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -34,7 +34,7 @@ do fi done -local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh command_update.sh command_validate.sh command_update_functions.sh command_email_test.sh command_mods_install.sh command_mods_update.sh command_mods_remove.sh ) +local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_ut99_maps.sh command_monitor.sh command_start.sh command_stop.sh command_update.sh command_validate.sh command_update_functions.sh command_email_test.sh command_mods_install.sh command_mods_update.sh command_mods_remove.sh command_wipe.sh ) for allowed_command in "${allowed_commands_array[@]}" do if [ "${allowed_command}" == "${function_selfname}" ]; then From e3dc66aeb2dba47e3670989d64ce51bdda3c010b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 20:01:18 +0100 Subject: [PATCH 577/729] code premisses --- lgsm/functions/command_wipe.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 2bdcf9c76..339d9d726 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -5,3 +5,34 @@ # Website: https://gameservermanagers.com # Description: Wipes server data for Rust, useful after monthly updates +local commandname="WIPE" +local commandaction="wipe data" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +check.sh + +fn_print_header + +# Checks if there is something to wipe +fn_wipe_check(){ + if [ "${gamename}" == "Rust" ]; then + if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -f "${serveridentitydir}/proceduralmap*.sav" ]; then + fn_wipe_server_process + else + echo "Nothing to wipe" + core_exit.sh + fi +} + +fn_wipe_server_process(){ + check_status.sh + if [ "${status}" != "0" ]; then + exitbypass=1 + command_stop.sh + fn_validation + exitbypass=1 + command_start.sh +else + fn_validation +fi +} From 8240e9c93730c3789e6af1dbb2fd872ecf6428aa Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 20:24:54 +0100 Subject: [PATCH 578/729] should be working, needs logging & proper output --- lgsm/functions/command_wipe.sh | 75 +++++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 19 deletions(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 339d9d726..ec9871108 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -# Description: Wipes server data for Rust, useful after monthly updates +# Description: Wipes server data, useful after updates for some games like Rust local commandname="WIPE" local commandaction="wipe data" @@ -14,25 +14,62 @@ check.sh fn_print_header # Checks if there is something to wipe -fn_wipe_check(){ - if [ "${gamename}" == "Rust" ]; then - if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -f "${serveridentitydir}/proceduralmap*.sav" ]; then - fn_wipe_server_process - else - echo "Nothing to wipe" - core_exit.sh - fi +fn_wipe_server(){ + # Rust Wipe + if [ "${gamename}" == "Rust" ]; then + if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "{serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then + echo " * Any user, storage, and map data will be erased." + while true; do + read -e -i "y" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; core_exit.sh;; + * ) echo "Please answer yes or no.";; + esac + done + fn_script_log_info "User selected to continue" + fn_wipe_server_process + else + echo "Nothing to wipe" + core_exit.sh + fi + else + echo "Wipe is not available" + core_exit.sh + fi } +# Removes files to wipe server +fn_wipe_server_remove_files(){ + if [ "${gamename}" == "Rust" ]; then + if [ -n "$(find "{serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then + echo "Removing map" + rm -f "${serveridentitydir}/proceduralmap*.sav" + fi + if [ -d "${serveridentitydir}/user" ]; then + echo "Removing users data" + rm -rf "${serveridentitydir}/user" + fi + if [ -d "${serveridentitydir}/storage" ]; then + echo "Removing storage data" + rm -rf "${serveridentitydir}/storage" + fi + fi +} + +# Process to server wipe fn_wipe_server_process(){ - check_status.sh - if [ "${status}" != "0" ]; then - exitbypass=1 - command_stop.sh - fn_validation - exitbypass=1 - command_start.sh -else - fn_validation -fi + check_status.sh + if [ "${status}" != "0" ]; then + exitbypass=1 + command_stop.sh + fn_wipe_server_remove_files + exitbypass=1 + command_start.sh + else + fn_wipe_server_remove_files + fi + echo "Server Wiped" } + +fn_wipe_server From 526402adc16c3d30c2dccae1be96bb451e683c0d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Fri, 27 Jan 2017 20:33:36 +0100 Subject: [PATCH 579/729] missing $ --- lgsm/functions/command_wipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index ec9871108..1b90bd9eb 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -17,7 +17,7 @@ fn_print_header fn_wipe_server(){ # Rust Wipe if [ "${gamename}" == "Rust" ]; then - if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "{serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then + if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then echo " * Any user, storage, and map data will be erased." while true; do read -e -i "y" -p "Continue? [Y/n]" yn @@ -42,7 +42,7 @@ fn_wipe_server(){ # Removes files to wipe server fn_wipe_server_remove_files(){ if [ "${gamename}" == "Rust" ]; then - if [ -n "$(find "{serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then + if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then echo "Removing map" rm -f "${serveridentitydir}/proceduralmap*.sav" fi From 2da83d47a7d223db627b269bfdf6ba9a0f7ca1c7 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 04:53:39 +0100 Subject: [PATCH 580/729] Attempt for better logging and outputs --- lgsm/functions/command_wipe.sh | 112 +++++++++++++++++++++------------ 1 file changed, 71 insertions(+), 41 deletions(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 1b90bd9eb..e54969b47 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -6,70 +6,100 @@ # Description: Wipes server data, useful after updates for some games like Rust local commandname="WIPE" -local commandaction="wipe data" +local commandaction="data wipe" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh - fn_print_header +fn_scripg_log "Entering ${gamename} ${commandaction}" -# Checks if there is something to wipe -fn_wipe_server(){ - # Rust Wipe - if [ "${gamename}" == "Rust" ]; then - if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then - echo " * Any user, storage, and map data will be erased." - while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; core_exit.sh;; - * ) echo "Please answer yes or no.";; - esac - done - fn_script_log_info "User selected to continue" - fn_wipe_server_process - else - echo "Nothing to wipe" - core_exit.sh - fi +# Process to server wipe +fn_wipe_server_process(){ + check_status.sh + if [ "${status}" != "0" ]; then + exitbypass=1 + command_stop.sh + fn_wipe_server_remove_files + exitbypass=1 + command_start.sh else - echo "Wipe is not available" + fn_wipe_server_remove_files + fi + echo "server data wiped" + fn_script_log "server data wiped." +} + +# Provides an exit code upon error +fn_wipe_exit_code(){ + ((exitcode=$?)) + if [ ${exitcode} -ne 0 ]; then + fn_script_log_fatal "${currentaction}" core_exit.sh + else + fn_print_ok_eol_nl fi } # Removes files to wipe server fn_wipe_server_remove_files(){ + # Rust Wipe if [ "${gamename}" == "Rust" ]; then if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then - echo "Removing map" + currentaction="Removing map ${serveridentitydir}/proceduralmap*.sav" + echo -en "${currentaction}" + fn_script_log "${currentaction}" rm -f "${serveridentitydir}/proceduralmap*.sav" + fn_wipe_exit_code fi if [ -d "${serveridentitydir}/user" ]; then - echo "Removing users data" + currentaction="Removing user ${serveridentitydir}/user" + echo -en "${currentaction}" + fn_script_log "${currentaction}" rm -rf "${serveridentitydir}/user" + fn_wipe_exit_code fi if [ -d "${serveridentitydir}/storage" ]; then - echo "Removing storage data" + currentaction="Removing storage ${serveridentitydir}/storage" + echo -en "${currentaction}" + fn_script_log "${currentaction}" rm -rf "${serveridentitydir}/storage" + fn_wipe_exit_code + fi + if [ -d "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then + currentaction="Removing storage ${serveridentitydir}/Log.*.txt" + echo -en "${currentaction}" + fn_script_log "${currentaction}" + rm -f "${serveridentitydir}/Log.*.txt" + fn_wipe_exit_code fi + # You can add an "elif" here to add another game or engine fi } -# Process to server wipe -fn_wipe_server_process(){ - check_status.sh - if [ "${status}" != "0" ]; then - exitbypass=1 - command_stop.sh - fn_wipe_server_remove_files - exitbypass=1 - command_start.sh - else - fn_wipe_server_remove_files +# Check if there is something to wipe, prompt the user, and call appropriate functions +# Rust Wipe +if [ "${gamename}" == "Rust" ]; then + if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then + fn_print_warning_nl "Any user, storage, log and map data from ${serveridentitydir} will be erased." + while true; do + read -e -i "y" -p "Continue? [Y/n]" yn + case $yn in + [Yy]* ) break;; + [Nn]* ) echo Exiting; core_exit.sh;; + * ) echo "Please answer yes or no.";; + esac + done + fn_script_log_info "User selects to erase any user, storage, log and map data from ${serveridentitydir}" + fn_wipe_server_process + else + fn_print_information "No data to wipe was found" + fn_script_log_info "No data to wipe was found." + core_exit.sh fi - echo "Server Wiped" -} - -fn_wipe_server +# You can add an "elif" here to add another game or engine +else + # Game not listed + fn_print_information "Wipe is not available for this game" + fn_script_log_info "Wipe is not available for this game." + core_exit.sh +fi From 9c7e9057071719da0d52b4b0140a98d1f8022039 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 04:54:04 +0100 Subject: [PATCH 581/729] typo --- lgsm/functions/command_wipe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index e54969b47..536655fcb 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -11,7 +11,7 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh fn_print_header -fn_scripg_log "Entering ${gamename} ${commandaction}" +fn_script_log "Entering ${gamename} ${commandaction}" # Process to server wipe fn_wipe_server_process(){ From fb8c4c93c7d63bab06e9d7d1d366c79d5688d995 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 05:04:56 +0100 Subject: [PATCH 582/729] sleeps & better outputs --- lgsm/functions/command_wipe.sh | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 536655fcb..11c5b920a 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -45,32 +45,40 @@ fn_wipe_server_remove_files(){ # Rust Wipe if [ "${gamename}" == "Rust" ]; then if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then - currentaction="Removing map ${serveridentitydir}/proceduralmap*.sav" - echo -en "${currentaction}" + currentaction="Removing map file(s): ${serveridentitydir}/proceduralmap*.sav" + echo -en "Removing map proceduralmap*.sav file(s)..." + sleep 1 fn_script_log "${currentaction}" rm -f "${serveridentitydir}/proceduralmap*.sav" fn_wipe_exit_code + sleep 0.5 fi if [ -d "${serveridentitydir}/user" ]; then - currentaction="Removing user ${serveridentitydir}/user" - echo -en "${currentaction}" + currentaction="Removing user directory: ${serveridentitydir}/user" + echo -en "Removing user directory..." + sleep 1 fn_script_log "${currentaction}" rm -rf "${serveridentitydir}/user" fn_wipe_exit_code + sleep 0.5 fi if [ -d "${serveridentitydir}/storage" ]; then - currentaction="Removing storage ${serveridentitydir}/storage" - echo -en "${currentaction}" + currentaction="Removing storage directory: ${serveridentitydir}/storage" + echo -en "Removing storage directory..." + sleep 1 fn_script_log "${currentaction}" rm -rf "${serveridentitydir}/storage" fn_wipe_exit_code + sleep 0.5 fi if [ -d "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then - currentaction="Removing storage ${serveridentitydir}/Log.*.txt" - echo -en "${currentaction}" + currentaction="Removing log files: ${serveridentitydir}/Log.*.txt" + echo -en "Removing Log files..." + sleep 1 fn_script_log "${currentaction}" rm -f "${serveridentitydir}/Log.*.txt" fn_wipe_exit_code + sleep 0.5 fi # You can add an "elif" here to add another game or engine fi @@ -90,10 +98,12 @@ if [ "${gamename}" == "Rust" ]; then esac done fn_script_log_info "User selects to erase any user, storage, log and map data from ${serveridentitydir}" + sleep 1 fn_wipe_server_process else fn_print_information "No data to wipe was found" fn_script_log_info "No data to wipe was found." + sleep 1 core_exit.sh fi # You can add an "elif" here to add another game or engine @@ -101,5 +111,6 @@ else # Game not listed fn_print_information "Wipe is not available for this game" fn_script_log_info "Wipe is not available for this game." + sleep 1 core_exit.sh fi From 70cc6996a81ef07029e3e2edaa67b01d9e981c13 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 05:11:06 +0100 Subject: [PATCH 583/729] various improvements --- lgsm/functions/command_wipe.sh | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 11c5b920a..4ff3ad94f 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -44,14 +44,17 @@ fn_wipe_exit_code(){ fn_wipe_server_remove_files(){ # Rust Wipe if [ "${gamename}" == "Rust" ]; then - if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]; then - currentaction="Removing map file(s): ${serveridentitydir}/proceduralmap*.sav" - echo -en "Removing map proceduralmap*.sav file(s)..." + if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.sav")" ]; then + currentaction="Removing map file(s): ${serveridentitydir}/proceduralmap.*.sav" + echo -en "Removing map proceduralmap.*.sav file(s)..." sleep 1 fn_script_log "${currentaction}" - rm -f "${serveridentitydir}/proceduralmap*.sav" + rm -f "${serveridentitydir}/proceduralmap.*.sav" fn_wipe_exit_code sleep 0.5 + else + fn_print_information "No map file to remove" + fn_script_log_info "No map file to remove." fi if [ -d "${serveridentitydir}/user" ]; then currentaction="Removing user directory: ${serveridentitydir}/user" @@ -61,6 +64,9 @@ fn_wipe_server_remove_files(){ rm -rf "${serveridentitydir}/user" fn_wipe_exit_code sleep 0.5 + else + fn_print_information "No user directory to remove" + fn_script_log_info "No user directory to remove." fi if [ -d "${serveridentitydir}/storage" ]; then currentaction="Removing storage directory: ${serveridentitydir}/storage" @@ -70,8 +76,11 @@ fn_wipe_server_remove_files(){ rm -rf "${serveridentitydir}/storage" fn_wipe_exit_code sleep 0.5 + else + fn_print_information "No storage directory to remove" + fn_script_log_info "No storage directory to remove." fi - if [ -d "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then + if [ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then currentaction="Removing log files: ${serveridentitydir}/Log.*.txt" echo -en "Removing Log files..." sleep 1 @@ -79,6 +88,9 @@ fn_wipe_server_remove_files(){ rm -f "${serveridentitydir}/Log.*.txt" fn_wipe_exit_code sleep 0.5 + else + fn_print_information "No log files to remove" + fn_script_log_info "No log files to remove." fi # You can add an "elif" here to add another game or engine fi From fe7ac7d6b6d5b4682c6dc91182bd6023b94a657b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 05:17:44 +0100 Subject: [PATCH 584/729] wildcard appear not to work for "rm" command --- lgsm/functions/command_wipe.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 4ff3ad94f..1537341ac 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -49,11 +49,11 @@ fn_wipe_server_remove_files(){ echo -en "Removing map proceduralmap.*.sav file(s)..." sleep 1 fn_script_log "${currentaction}" - rm -f "${serveridentitydir}/proceduralmap.*.sav" + find "${serveridentitydir}" -type f -name "proceduralmap.*.sav" -delete fn_wipe_exit_code sleep 0.5 else - fn_print_information "No map file to remove" + fn_print_information_nl "No map file to remove" fn_script_log_info "No map file to remove." fi if [ -d "${serveridentitydir}/user" ]; then @@ -65,7 +65,7 @@ fn_wipe_server_remove_files(){ fn_wipe_exit_code sleep 0.5 else - fn_print_information "No user directory to remove" + fn_print_information_nl "No user directory to remove" fn_script_log_info "No user directory to remove." fi if [ -d "${serveridentitydir}/storage" ]; then @@ -77,7 +77,7 @@ fn_wipe_server_remove_files(){ fn_wipe_exit_code sleep 0.5 else - fn_print_information "No storage directory to remove" + fn_print_information_nl "No storage directory to remove" fn_script_log_info "No storage directory to remove." fi if [ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then @@ -85,11 +85,11 @@ fn_wipe_server_remove_files(){ echo -en "Removing Log files..." sleep 1 fn_script_log "${currentaction}" - rm -f "${serveridentitydir}/Log.*.txt" + find "${serveridentitydir}" -type f -name "Log.*.txt" -delete fn_wipe_exit_code sleep 0.5 else - fn_print_information "No log files to remove" + fn_print_information_nl "No log files to remove" fn_script_log_info "No log files to remove." fi # You can add an "elif" here to add another game or engine From 95ad518e3b74e5c7c247e1be7b3acb006b57408a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 05:18:38 +0100 Subject: [PATCH 585/729] some more sleeps --- lgsm/functions/command_wipe.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 1537341ac..56e28df55 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -55,6 +55,7 @@ fn_wipe_server_remove_files(){ else fn_print_information_nl "No map file to remove" fn_script_log_info "No map file to remove." + sleep 0.5 fi if [ -d "${serveridentitydir}/user" ]; then currentaction="Removing user directory: ${serveridentitydir}/user" @@ -67,6 +68,7 @@ fn_wipe_server_remove_files(){ else fn_print_information_nl "No user directory to remove" fn_script_log_info "No user directory to remove." + sleep 0.5 fi if [ -d "${serveridentitydir}/storage" ]; then currentaction="Removing storage directory: ${serveridentitydir}/storage" @@ -79,6 +81,7 @@ fn_wipe_server_remove_files(){ else fn_print_information_nl "No storage directory to remove" fn_script_log_info "No storage directory to remove." + sleep 0.5 fi if [ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then currentaction="Removing log files: ${serveridentitydir}/Log.*.txt" @@ -91,6 +94,7 @@ fn_wipe_server_remove_files(){ else fn_print_information_nl "No log files to remove" fn_script_log_info "No log files to remove." + sleep 0.5 fi # You can add an "elif" here to add another game or engine fi From 20314d09b298a790300cfd4e7914f7c16334cf55 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 05:19:04 +0100 Subject: [PATCH 586/729] new liners --- lgsm/functions/command_wipe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 56e28df55..fd9306dd3 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -117,7 +117,7 @@ if [ "${gamename}" == "Rust" ]; then sleep 1 fn_wipe_server_process else - fn_print_information "No data to wipe was found" + fn_print_information_nl "No data to wipe was found" fn_script_log_info "No data to wipe was found." sleep 1 core_exit.sh @@ -125,7 +125,7 @@ if [ "${gamename}" == "Rust" ]; then # You can add an "elif" here to add another game or engine else # Game not listed - fn_print_information "Wipe is not available for this game" + fn_print_information_nl "Wipe is not available for this game" fn_script_log_info "Wipe is not available for this game." sleep 1 core_exit.sh From 69e20bec520e71ac0f43786847f803f763433395 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 05:22:42 +0100 Subject: [PATCH 587/729] rconweb info --- Rust/rustserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rust/rustserver b/Rust/rustserver index aa740f8b1..acd9a9590 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -29,7 +29,7 @@ ip="0.0.0.0" port="28015" rconport="28016" rconpassword="CHANGE_ME" -rconweb="1" +rconweb="1" # Value is: 1 for Facepunch's web panel; 0 for RCON tools like Rusty or Rustadmin maxplayers="50" # Advanced Start Settings seed="" # default random; range : 1 to 2147483647 ; used to change or reproduce a procedural map From 616be584d8b2de0dd0b161e3e46bec757be4b774 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 05:32:13 +0100 Subject: [PATCH 588/729] always end with core_exit.sh --- lgsm/functions/command_wipe.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index fd9306dd3..440c8080e 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -130,3 +130,5 @@ else sleep 1 core_exit.sh fi + +core_exit.sh From 873a8d3f5bf4c2da517433e04a79be541c3d4845 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 28 Jan 2017 05:59:07 +0100 Subject: [PATCH 589/729] typo on advdupe 2 --- lgsm/functions/mods_list.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 8b0beb604..0be15b08b 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -61,7 +61,7 @@ mod_info_utime=( MOD "utime" "UTime" "https://github.com/TeamUlysses/utime/archi mod_info_uclip=( MOD "uclip" "UClip" "https://github.com/TeamUlysses/uclip/archive/master.zip" "uclip-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "An alternative to noclip" ) mod_info_acf=( MOD "acf" "Armoured Combat Framework" "https://github.com/nrlulz/ACF/archive/master.zip" "acf-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "acf-master/lua/acf/shared/guns;" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/nrlulz/ACF" "Realistic Wepons & Engines" ) mod_info_acf_missiles=( MOD "acfmissiles" "ACF Missiles" "https://github.com/Bubbus/ACF-Missiles/archive/master.zip" "acf-missiles-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Bubbus/ACF-Missiles" "More missiles for ACF" ) -mod_info_acf_advdupe2=( MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/wiremod/advdupe2/archive/master.zip" "advdupe2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://www.wiremod.com" "Save your constructions" ) +mod_info_advdupe2=( MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/wiremod/advdupe2/archive/master.zip" "advdupe2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://www.wiremod.com" "Save your constructions" ) mod_info_darkrp=( MOD "darkrp" "DarkRP" "https://github.com/FPtje/DarkRP/archive/master.zip" "darkrp-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Most popular gamemode" ) mod_info_darkrpmodification=( MOD "darkrpmodification" "DarkRP Modification" "https://github.com/FPtje/darkrpmodification/archive/master.zip" "darkrpmodification-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "NOUPDATE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Customize DarkRP settings" ) # Oxidemod From 5e5153c71c6f38d1eb9673b7c3ab440a9766231b Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Sat, 28 Jan 2017 02:00:21 -0500 Subject: [PATCH 590/729] update UT XAN-3270765 --- lgsm/functions/install_server_files.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 792cb5e49..4304d3b04 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -34,7 +34,7 @@ fn_install_server_files(){ elif [ "${gamename}" == "Unreal Tournament 99" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${tmpdir}"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd" elif [ "${gamename}" == "Unreal Tournament" ]; then - fileurl="http://files.gameservermanagers.com/UnrealTournament/UnrealTournament-Server-XAN-3193528-Linux.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-XAN-3193528-Linux.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="e3dd5853c4eb193674d5c832f60040d8" + fileurl="https://s3.amazonaws.com/unrealtournament/UnrealTournament-Server-XAN-3270765-Linux.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-XAN-3270765-Linux.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="8791dc087383061d7f7f9f523237b8b3" elif [ "${gamename}" == "Unreal Tournament 3" ]; then fileurl="http://files.gameservermanagers.com/UnrealTournament3/UT3-linux-server-2.1.tar.bz2"; filedir="${tmpdir}"; filename="UT3-linux-server-2.1.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="2527437b46f1b47f20228d27d72395a6" elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then From 5756d4157d5f911cf490e3c7444028fbe17463ff Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 28 Jan 2017 10:36:56 +0000 Subject: [PATCH 591/729] minor update to jc2 tests --- tests/tests_jc2server.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index c9140e9d0..af06805a3 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -23,9 +23,6 @@ version="170110" ######## Settings ######## ########################## -#### Server Settings #### -# No settings available for Just Cause 2 - ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ parms="" @@ -43,6 +40,7 @@ emailfrom="" # Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +channeltag="" ## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" From 377ecf38b5e30527a15de0e9059cb655b8b92dfe Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 28 Jan 2017 21:45:49 +0000 Subject: [PATCH 592/729] Updated version number 170728 --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CallOfDuty4/cod4server | 2 +- CallOfDutyUnitedOffensive/coduoserver | 2 +- CallOfDutyWorldAtWar/codwawserver | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- EmpiresMod/emserver | 2 +- Factorio/fctrserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- QuakeWorld/qwserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- 66 files changed, 66 insertions(+), 66 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 6ca116aa7..518628004 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index da408b353..a6a5080a8 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index 8d6dcb210..f6c03be06 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 51b8dfcc0..ae7447aa9 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 1b6c9d573..6baa4e739 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 38c71ce1e..1e5ad15cc 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index df5034bb8..8668fffce 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index d78cbaece..b13aa8ed2 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index db4f07af9..2939c036e 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server index 6b4a0260e..661077042 100644 --- a/CallOfDuty4/cod4server +++ b/CallOfDuty4/cod4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index c3d71ae8a..172af806c 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index 5e3681ead..43b5c7a42 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 3196b993c..30bb0a0b2 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 4add519a6..e6de0dc7e 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index 8333438b9..ba70f15f3 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 8a306dc03..3122255fc 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index bdee401bb..be253b1d8 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index efe5861f8..83929712f 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 3508e0686..60dfa9f66 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 5d2ed38fe..acf036430 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 4ef098e91..fbd3ee106 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 99239c49a..972009a08 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 245cd0c59..04ab7fdda 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 36cb92f5a..e628f4c42 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Factorio/fctrserver b/Factorio/fctrserver index 8843668e4..f6b29d916 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 988a1b680..9039576f5 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index c432c6769..89eea5994 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index d1520cc35..228d54523 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index b5a15f78c..53cc2f4ab 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 8ba1b8d01..b008887a9 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index c25dc3fbf..22ab2c5d1 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 43a6e465f..24b43ca40 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index eac3777c3..d6f7a8841 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 626df4b3a..0f4ef2dba 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index baca47dcc..de04e2db9 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 2216a5f93..915efab6f 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 496444a20..8d9e428fa 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 82999f5a3..265e07746 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index 6dd9eb2d3..e19c936cd 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index c1b39d836..41949f3c6 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index bc01063c2..272f68fef 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 5a925ea54..0c44dd2ff 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 945f353d4..32a668f53 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 6a715b7b9..7442c678a 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index c39c86f5e..31cc52efa 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index a1ff9bb75..e86933c26 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index 1a64eeb1b..aca7dfcde 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 73047718d..7433273d9 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 1b92190e3..800ada9cd 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 0812c7f41..19d4b65cf 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 16d9fca81..e1486d67f 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index acd9a9590..8d4ded872 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 33487a651..029db5b59 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index 899d846dc..38f48c97e 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index 10e27db1b..b401e72ea 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index bbc242d0b..e9982d1f8 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 6c3a7d9eb..501ef64a4 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index d1d97c172..6df71f193 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index d0de5a1d0..e038f175f 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index a155828eb..1f803e45b 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index e95414adc..6e3afdf5b 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 0b49bd361..1cbfd4c59 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 8a839fc92..5dfe1207d 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index fff7c8cb4..237c1531a 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 07ec5b7d9..bfc0cbd16 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index af06805a3..fd0a0e4d7 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170110" +version="170128" ########################## ######## Settings ######## From 3d7ee63bd7e61cf57960c38c196fe4f3b8878cb9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 28 Jan 2017 21:46:07 +0000 Subject: [PATCH 593/729] Updates TS3 tests to match current layout --- tests/tests_ts3server.sh | 78 ++++++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 26 deletions(-) diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 21c76309c..8e0e54c2e 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -1,54 +1,75 @@ #!/bin/bash -# TravisCI Tests: Teamspeak 3 -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs +# Purpose: TravisCI Tests: Teamspeak 3 | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com -version="101716" +# Debugging if [ -f ".dev-debug" ]; then exec 5>dev-debug.log BASH_XTRACEFD="5" set -x fi -#### Variables #### +version="170128" -# Notification Alerts -# (on|off) +########################## +######## Settings ######## +########################## + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +# Edit serverfiles/ts3-server.ini after installation -# Email +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" -#emailfrom="email@example.com" +emailfrom="" -# Pushbullet -# https://www.pushbullet.com/#settings +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet pushbulletalert="off" pushbullettoken="accesstoken" +channeltag="" -# Start Variables +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update updateonstart="off" +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" -fn_parms(){ -parms="" -} +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" -#### Advanced Variables #### +#### LinuxGSM Advanced Settings #### -# Github Branch Select +## Github Branch Select # Allows for the use of different function files # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" githubbranch="$TRAVIS_BRANCH" -# Server Details -gamename="Teamspeak 3" -servername="Teamspeak 3 Server" +## LinuxGSM Server Details +# Do not edit +gamename="TeamSpeak 3" +servername="TeamSpeak 3 Server" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers servicename="ts3-server" -# Directories +#### Directories #### +# Edit with care + +## Work Directories rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" lockselfname=".${servicename}.lock" @@ -57,6 +78,8 @@ functionsdir="${lgsmdir}/functions" libdir="${lgsmdir}/lib" tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" + +## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" executable="./ts3server_startscript.sh" @@ -64,20 +87,23 @@ servercfg="${servicename}.ini" servercfgdefault="ts3server.ini" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory backupdir="${rootdir}/backups" -# Logging -logdays="7" +## Logging Directories gamelogdir="${filesdir}/logs" scriptlogdir="${rootdir}/log/script" - scriptlog="${scriptlogdir}/${servicename}-script.log" emaillog="${scriptlogdir}/${servicename}-email.log" -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" -##### Script ##### -# Do not edit +######################## +######## Script ######## +###### Do not edit ##### +######################## # Fetches core_dl for file downloads fn_fetch_core_dl(){ From e16f1a842413cc4a31b3a5d9c4bdf0a49d67a8dd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 28 Jan 2017 22:07:46 +0000 Subject: [PATCH 594/729] Testing possible fix for jc2server test --- tests/tests_jc2server.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index fd0a0e4d7..8fbb910a1 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -575,12 +575,13 @@ echo "gsquery.py will fail to query port." echo "Command: ./jc2server monitor" requiredstatus="ONLINE" fn_setstatus +cp "${servercfgfullpath}" "config.lua" sed -i 's/[0-9]\+/0/' "${servercfgfullpath}" (command_monitor.sh) fn_test_result_fail echo "" fn_print_info_nl "Re-generating ${servercfg}." -install_config.sh +cp -v "config.lua" "${servercfgfullpath}" echo "=================================" echo "" From 35269a57c7ad22e69877b933fbac15927f7e88a5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 28 Jan 2017 22:47:21 +0000 Subject: [PATCH 595/729] Corrected header --- lgsm/functions/check_executable.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_executable.sh b/lgsm/functions/check_executable.sh index 94337a26d..94e517cb5 100644 --- a/lgsm/functions/check_executable.sh +++ b/lgsm/functions/check_executable.sh @@ -1,8 +1,8 @@ #!/bin/bash -# LGSM check_system_dir.sh function +# LGSM check_executable.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -# Description: Checks if systemdir is accessible. +# Description: Checks if executable exists. local commandname="CHECK" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" From c7f44d46304af76ce4b82c62be99899cad31d2f8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 28 Jan 2017 22:50:33 +0000 Subject: [PATCH 596/729] tab --- lgsm/functions/command_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index dd2206f00..3b0176ca4 100644 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -20,7 +20,7 @@ elif [ "${engine}" == "lwjgl2" ]; then elif [ "${gamename}" == "Mumble" ]; then update_mumble.sh elif [ "${gamename}" == "Factorio" ]; then - update_factorio.sh + update_factorio.sh elif [ "${gamename}" == "Multi Theft Auto" ]; then update_mta.sh else From d0ccb28fd4dce1b23d034e83fc28065d4d37a27b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 28 Jan 2017 22:52:40 +0000 Subject: [PATCH 597/729] Removed ! from error again --- lgsm/functions/core_messages.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 632b01378..540729af7 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -165,9 +165,9 @@ fn_print_error(){ fn_print_error_nl(){ if [ -n "${commandaction}" ]; then - echo -en "${creeol}[${red}ERROR!${default}] ${commandaction} ${servicename}: $@" + echo -en "${creeol}[${red}ERROR ${default}] ${commandaction} ${servicename}: $@" else - echo -en "${creeol}[${red}ERROR!${default}] $@" + echo -en "${creeol}[${red}ERROR ${default}] $@" fi sleep 0.5 echo -en "\n" From 70f4334492a03de3c85eb076bc68bea712f29e25 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 28 Jan 2017 22:53:52 +0000 Subject: [PATCH 598/729] Glibc is required for MTA --- lgsm/functions/info_glibc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 677ec4432..12ba262a4 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -135,7 +135,7 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then glibcrequired="2.2.4" glibcfix="no" elif [ "${gamename}" == "Multi Theft Auto" ]; then - glibcrequired="NOT REQUIRED" + glibcrequired="2.7" glibcfix="no" else glibcrequired="UNKNOWN" From eb36d6b473e31b8465b3f45a72611b0af5983e16 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 28 Jan 2017 22:58:43 +0000 Subject: [PATCH 599/729] Corrected header --- MultiTheftAuto/mtaserver | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/MultiTheftAuto/mtaserver b/MultiTheftAuto/mtaserver index c119ac910..1fc07fdbb 100644 --- a/MultiTheftAuto/mtaserver +++ b/MultiTheftAuto/mtaserver @@ -1,7 +1,10 @@ #!/bin/bash -# Multi Theft Auto -# Server Management Script +# Project: Game Server Managers - LinuxGSM # Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs +# Purpose: Multi Theft Auto | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki # Website: https://gameservermanagers.com if [ -f ".dev-debug" ]; then exec 5>dev-debug.log From b25c430aee463ccb34e563075d0e677e7105d7c1 Mon Sep 17 00:00:00 2001 From: Chaos Date: Sun, 29 Jan 2017 13:24:14 -0600 Subject: [PATCH 600/729] Stopping debug message --- lgsm/functions/command_debug.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index ac1d0add8..25e855c94 100644 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -106,6 +106,9 @@ else ${executable} ${parms} fi +fn_print_dots "Stopping debug" +sleep 1 +fn_print_ok_nl "Stopping debug" # remove trap. trap - INT core_exit.sh From c034ce60004f8516dfd905200cef9bb83e8ac23c Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Mon, 30 Jan 2017 13:16:40 -0500 Subject: [PATCH 601/729] adding Counter-Strike: Classic Offensive --- CounterStrikeClassicOffensive/cscoserver | 205 +++++++++++++++++++++++ lgsm/functions/install_server_files.sh | 2 + 2 files changed, 207 insertions(+) create mode 100755 CounterStrikeClassicOffensive/cscoserver diff --git a/CounterStrikeClassicOffensive/cscoserver b/CounterStrikeClassicOffensive/cscoserver new file mode 100755 index 000000000..09a247588 --- /dev/null +++ b/CounterStrikeClassicOffensive/cscoserver @@ -0,0 +1,205 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs +# Purpose: Counter-Strike: Classic Offensive | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="170128" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +defaultmap="de_dust2_csco" +maxplayers="16" +port="27015" +sourcetvport="27020" +clientport="27005" +ip="0.0.0.0" + +## Required: Game Server Login Token +# GSLT is required for running a public server. +# More info: https://gameservermanagers.com/gslt +gslt="" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms="-game csco -usercon -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers_override ${maxplayers}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" + +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="740" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit +gamename="Counter-Strike: Classic Offensive" +engine="source" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="csco-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}/csco" +executabledir="${filesdir}" +executable="./srcds_run" +servercfg="${servicename}.cfg" +servercfgdefault="server.cfg" +servercfgdir="${systemdir}/cfg" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +gamelogdir="${systemdir}/logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh \ No newline at end of file diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index a988f2644..73777c146 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -21,6 +21,8 @@ fn_install_server_files(){ fileurl="http://files.gameservermanagers.com/CallOfDuty4/cod4x18_dedrun.tar.bz2"; filedir="${tmpdir}"; filename="cod4x18_dedrun.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="bebdfc1755626462bdaad49f6f926c08" elif [ "${gamename}" == "Call of Duty: World at War" ]; then fileurl="http://files.gameservermanagers.com/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.bz2"; filedir="${tmpdir}"; filename="codwaw-lnxded-1.7-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="0489697ff3bf678c109bfb377d1b7895" + elif [ "${gamename}" == "Counter-Strike: Classic Offensive" ]; then + fileurl="https://s3.amazonaws.com/linuxgsm/ClassicOffensive_Beta1.1d.zip"; filedir="${tmpdir}"; filename="ClassicOffensive_Beta1.1d.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="922ff1abe08ba12309b19900f1cbd33a" 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 From 6946a61abec822c51a5d32577feabfcbc130bbe8 Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Mon, 30 Jan 2017 13:47:56 -0500 Subject: [PATCH 602/729] fix --- lgsm/functions/install_server_files.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 73777c146..9b099edd4 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -136,7 +136,7 @@ elif [ "${gamename}" == "Multi Theft Auto" ]; then elif [ "${gamename}" == "Factorio" ]; then update_factorio.sh install_factorio_save.sh -elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then +elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]||[ "${gamename}" == "Counter-Strike: Classic Offensive" ]; then if [ "${gamename}" == "Unreal Tournament" ]; then install_unreal_tournament_eula.sh fi From f6ad588ab73f113502b4a7f01e3f31bb99f9745d Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Mon, 30 Jan 2017 14:25:15 -0500 Subject: [PATCH 603/729] adding Counter-Strike: Classic Offensive config --- lgsm/functions/install_config.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 4a0cf13b2..44a251d3a 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -210,6 +210,12 @@ elif [ "${gamename}" == "Counter-Strike 1.6" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Counter-Strike: Classic Offensive" ]; then + gamedirname="CounterStrikeClassicOffensive" + array_configs+=( server.cfg ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Counter-Strike: Condition Zero" ]; then gamedirname="CounterStrikeConditionZero" array_configs+=( server.cfg ) From b554a0e03c6b1f07f06b4469d296351a82df2c9a Mon Sep 17 00:00:00 2001 From: Chaos Date: Mon, 30 Jan 2017 23:19:41 -0600 Subject: [PATCH 604/729] Fix for minecraft servers being unable to start --- Minecraft/mcserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 265e07746..cfd87fc44 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -86,7 +86,7 @@ filesdir="${rootdir}/serverfiles" ## Server Specific Directories systemdir="${filesdir}" executabledir="${filesdir}" -executable="java -Xmx${javaram}M -jar minecraft_server.jar" +executable="java -Xmx${javaram}M -jar ${filesdir}/minecraft_server.jar" servercfg="server.properties" servercfgdefault="server.properties" servercfgdir="${filesdir}" @@ -182,4 +182,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 1ed8bd63372a4b5b4ba0a12bad0bd0b98e8fd98b Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Thu, 2 Feb 2017 15:47:37 +0100 Subject: [PATCH 605/729] Added Tower Unite WIP: A few things still need to be done like adding deps, gslt or probably a specific steamclient.so fix.. --- TowerUnite/tuserver | 197 ++++++++++++++++++++++++++++++ lgsm/functions/command_details.sh | 16 +++ lgsm/functions/info_config.sh | 17 +++ lgsm/functions/install_config.sh | 6 + 4 files changed, 236 insertions(+) create mode 100644 TowerUnite/tuserver diff --git a/TowerUnite/tuserver b/TowerUnite/tuserver new file mode 100644 index 000000000..187fee91d --- /dev/null +++ b/TowerUnite/tuserver @@ -0,0 +1,197 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs +# Purpose: Tower Unite | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="170128" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +port="7777" +queryport="27015" +ip="0.0.0.0" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms="-log -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -TowerServerINI=${servicename}.ini" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" + +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="439660" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="feature/tuserver" + +## LinuxGSM Server Details +# Do not edit +gamename="Tower Unite" +engine="unreal4" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="tu-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}/Tower" +executabledir="${systemdir}/Binaries/Linux" +executable="./TowerServer-Linux-Shipping" +servercfgdir="${systemdir}/Saved/Config/LinuxServer" +servercfg="${servicename}.ini" +servercfgfullpath="${servercfgdir}/${servercfg}" +servercfgdefault="${servercfgdir}/TowerServer.ini" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +gamelogdir="${systemdir}/Saved/Logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index e34f65702..14f11f025 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -675,6 +675,20 @@ fn_details_terraria(){ } | column -s $'\t' -t } +fn_details_towerunite(){ + echo -e "netstat -atunp | grep TowerServer-Linux-Shipping" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\ttcp" + # Don't do arithmetics if ever the port wasn't a numeric value + if [ "${port}" -eq "${port}" ]; then + echo -e "> Steam\tINBOUND\t$((port+1))\tudp" + fi + echo -e "> Query\tINBOUND\t${queryport}\tudp" + } | column -s $'\t' -t +} + fn_details_unreal(){ echo -e "netstat -atunp | grep ucc-bin" echo -e "" @@ -824,6 +838,8 @@ fn_display_details() { fn_details_quakelive elif [ "${gamename}" == "TeamSpeak 3" ]; then fn_details_teamspeak3 + elif [ "${gamename}" == "Tower Unite" ]; then + fn_details_towerunite elif [ "${gamename}" == "Multi Theft Auto" ]; then fn_details_mta elif [ "${gamename}" == "Mumble" ]; then diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 0164999a3..238e06ca0 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -514,6 +514,20 @@ fn_info_config_terraria(){ fi } +fn_info_config_towerunite(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + maxplayers="${zero}" + else + servername=$(grep "ServerTitle" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/ServerTitle//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') + + # Not Set + servername=${servername:-"NOT SET"} + maxplayers=${maxplayers:-"0"} + fi +} + fn_info_config_unreal(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" @@ -705,6 +719,9 @@ elif [ "${engine}" == "teeworlds" ]; then # Terraria elif [ "${engine}" == "terraria" ]; then fn_info_config_terraria +# Tower Unite +elif [ "${gamename}" == "towerunite" ]; then + fn_info_config_towerunite # Unreal/Unreal 2 engine elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then fn_info_config_unreal diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 44a251d3a..89522de57 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -480,6 +480,12 @@ elif [ "${gamename}" == "Terraria" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Tower Unite" ]; then + gamedirname="TowerUnite" + array_configs+=( TowerServer.ini ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Unreal Tournament" ]; then gamedirname="UnrealTournament" array_configs+=( Game.ini Engine.ini ) From 4ec6b9eeba0e80a6c44b79f059415058a9a0ce23 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Thu, 2 Feb 2017 15:57:46 +0100 Subject: [PATCH 606/729] Corrected ARK game log directory --- ARKSurvivalEvolved/arkserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index a6a5080a8..5d6464073 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -111,7 +111,7 @@ servercfgdefault="${servercfgdir}/GameUserSettings.ini" backupdir="${rootdir}/backups" ## Logging Directories -gamelogdir="${systemdir}/logs" +gamelogdir="${systemdir}/Saved/Logs" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" scriptlog="${scriptlogdir}/${servicename}-script.log" From e57b163c582badf672348c327147dc7ded5c34eb Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Thu, 2 Feb 2017 17:40:45 +0100 Subject: [PATCH 607/729] Fixes config stuff --- TowerUnite/tuserver | 4 ++-- lgsm/functions/info_config.sh | 2 +- lgsm/functions/install_config.sh | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/TowerUnite/tuserver b/TowerUnite/tuserver index 187fee91d..f4f8330b2 100644 --- a/TowerUnite/tuserver +++ b/TowerUnite/tuserver @@ -100,10 +100,10 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/Tower" executabledir="${systemdir}/Binaries/Linux" executable="./TowerServer-Linux-Shipping" -servercfgdir="${systemdir}/Saved/Config/LinuxServer" +servercfgdir="${systemdir}/Binaries/Linux" servercfg="${servicename}.ini" servercfgfullpath="${servercfgdir}/${servercfg}" -servercfgdefault="${servercfgdir}/TowerServer.ini" +servercfgdefault="TowerServer.ini" ## Backup Directory backupdir="${rootdir}/backups" diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 238e06ca0..a0ff00fee 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -720,7 +720,7 @@ elif [ "${engine}" == "teeworlds" ]; then elif [ "${engine}" == "terraria" ]; then fn_info_config_terraria # Tower Unite -elif [ "${gamename}" == "towerunite" ]; then +elif [ "${gamename}" == "Tower Unite" ]; then fn_info_config_towerunite # Unreal/Unreal 2 engine elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 89522de57..8a71bcc22 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -482,6 +482,7 @@ elif [ "${gamename}" == "Terraria" ]; then fn_set_config_vars elif [ "${gamename}" == "Tower Unite" ]; then gamedirname="TowerUnite" + fn_check_cfgdir array_configs+=( TowerServer.ini ) fn_fetch_default_config fn_default_config_remote From ac6df8490028fce2126eb0c8b26da7167804598c Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Thu, 2 Feb 2017 17:43:23 +0100 Subject: [PATCH 608/729] Added steamclient.so fix --- lgsm/functions/fix_steamcmd.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh index 9f08fd36a..444409cfe 100644 --- a/lgsm/functions/fix_steamcmd.sh +++ b/lgsm/functions/fix_steamcmd.sh @@ -40,4 +40,12 @@ elif [ "${gamename}" == "Hurtworld" ]; then cp -v "${rootdir}/steamcmd/linux32/steamclient.so" "${filesdir}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${scriptlog}" fn_fix_msg_end fi +elif [ "${gamename}" == "Tower Unite" ]; then + # Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so. + if [ ! -f "${executabledir}/steamclient.so" ]; then + fixname="steamclient.so" + fn_fix_msg_start + cp -v "${filesdir}/linux64/steamclient.so" "${executabledir}/steamclient.so" >> "${scriptlog}" + fn_fix_msg_end + fi fi From ecb71045b64b3461935dc5f6044f9bef5608cb98 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Thu, 2 Feb 2017 18:26:13 +0100 Subject: [PATCH 609/729] Shortened program name for netstat .. because it's cut off. --- lgsm/functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 14f11f025..40b719f2c 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -676,7 +676,7 @@ fn_details_terraria(){ } fn_details_towerunite(){ - echo -e "netstat -atunp | grep TowerServer-Linux-Shipping" + echo -e "netstat -atunp | grep TowerServer" echo -e "" { echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" From e69bcd732ae57f0a3da4a4aff9d2d18433fba584 Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 3 Feb 2017 14:17:41 +0100 Subject: [PATCH 610/729] Corrected servercfgdefault --- ARKSurvivalEvolved/arkserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index a6a5080a8..f5a3049db 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -104,8 +104,8 @@ executabledir="${systemdir}/Binaries/Linux" executable="./ShooterGameServer" servercfgdir="${systemdir}/Saved/Config/LinuxServer" servercfg="GameUserSettings.ini" +servercfgdefault="GameUserSettings.ini" servercfgfullpath="${servercfgdir}/${servercfg}" -servercfgdefault="${servercfgdir}/GameUserSettings.ini" ## Backup Directory backupdir="${rootdir}/backups" From 3486c20f8f40dc7eb2fce7f6bdc9600cde9f36ea Mon Sep 17 00:00:00 2001 From: Marvin Lehmann Date: Fri, 3 Feb 2017 14:19:51 +0100 Subject: [PATCH 611/729] Removed wrong servercfgdefault duplicate --- Minecraft/mcserver | 1 - 1 file changed, 1 deletion(-) diff --git a/Minecraft/mcserver b/Minecraft/mcserver index cfd87fc44..39db226d1 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -91,7 +91,6 @@ servercfg="server.properties" servercfgdefault="server.properties" servercfgdir="${filesdir}" servercfgfullpath="${servercfgdir}/${servercfg}" -servercfgdefault="${servercfgdir}/lgsm-default.ini" ## Backup Directory backupdir="${rootdir}/backups" From 7363190723a000bb3b0a1bd089f25357c630931b Mon Sep 17 00:00:00 2001 From: Alexander Hurd Date: Fri, 3 Feb 2017 14:25:45 -0500 Subject: [PATCH 612/729] adding Ballistic Overkill --- BallisticOverkill/boserver | 198 +++++++++++++++++++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100755 BallisticOverkill/boserver diff --git a/BallisticOverkill/boserver b/BallisticOverkill/boserver new file mode 100755 index 000000000..c17e02b6e --- /dev/null +++ b/BallisticOverkill/boserver @@ -0,0 +1,198 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs +# Purpose: Ballistic Overkill | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="170128" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Optional: Game Server Login Token +# GSLT can be used for running a public server. +# More info: https://gameservermanagers.com/gslt +gslt="" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms=" -batchmode -nographics -logFile output.txt" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" + +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## SteamCMD Settings +# Server appid +appid="416880" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## LinuxGSM Server Details +# Do not edit +gamename="Ballistic Overkill" +engine="unity" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bo-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./BODS.x86" +servercfg="config.txt" +servercfgdefault="${servercfg}" +servercfgdir="${systemdir}" +servercfgfullpath="${servercfgdir}/${servercfg}" + + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directorie +gamelogdir="${systemdir}/logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh \ No newline at end of file From 54e6948d24619dfad9109875b985fc6b752c61ad Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 4 Feb 2017 20:11:27 +0000 Subject: [PATCH 613/729] ] to ) --- GarrysMod/gmodserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 89eea5994..4a790b467 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -53,7 +53,7 @@ parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickr #### LinuxGSM Settings #### ## Notification Alerts -# (on|off] +# (on|off) # Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email emailalert="off" email="email@example.com" From 5c5e0538ffce14add65c836b874da4d03df7004a Mon Sep 17 00:00:00 2001 From: Gianni Stubbe Date: Mon, 6 Feb 2017 13:46:46 +0100 Subject: [PATCH 614/729] Edit defaultmap for active duty map change Dust2 has been taken out of active duty. Changed map to mirage and changed mappool to mg_active following the Valve documentation: https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Dedicated_Servers#Starting_the_Server --- CounterStrikeGlobalOffensive/csgoserver | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 3122255fc..347983ebb 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -32,8 +32,8 @@ version="170128" # Deathmatch 1 2 gametype="0" gamemode="0" -defaultmap="de_dust2" -mapgroup="random_classic" +defaultmap="de_mirage" +mapgroup="mg_active" maxplayers="16" tickrate="64" port="27015" @@ -220,4 +220,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh \ No newline at end of file +core_getopt.sh From 3c0ed33c4a080ddb58897fe71f638a08b853d265 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 9 Feb 2017 23:10:17 +0000 Subject: [PATCH 615/729] Updated Glibc requirements for Sven Co-op --- lgsm/functions/info_glibc.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 12ba262a4..1736e0be6 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -68,6 +68,9 @@ elif [ "${gamename}" == "Quake 3: Arena" ]; then elif [ "${gamename}" == "Quake Live" ]; then glibcrequired="2.15" glibcfix="no" +elif [ "${gamename}" == "Sven Co-op" ]; then + glibcrequired="2.18" + glibcfix="no" elif [ "${gamename}" == "TeamSpeak 3" ]; then glibcrequired="NOT REQUIRED" glibcfix="no" From 5492cf6b0b395b8f7f56639e917976b92ac0f999 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 9 Feb 2017 23:39:19 +0000 Subject: [PATCH 616/729] Added glibc requirements --- lgsm/functions/info_glibc.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 12ba262a4..d698c7ba2 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -74,6 +74,9 @@ elif [ "${gamename}" == "TeamSpeak 3" ]; then elif [ "${gamename}" == "Teeworlds" ]; then glibcrequired="2.3" glibcfix="no" +elif [ "${gamename}" == "Tower Unite" ]; then + glibcrequired="2.14" + glibcfix="no" elif [ "${engine}" == "avalanche" ]; then glibcrequired="2.13" glibcfix="yes" From cd3f9299f4d6f9bcc50b2989b886d6b0f9be411e Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 9 Feb 2017 23:56:48 +0000 Subject: [PATCH 617/729] added graceful shutdown --- lgsm/functions/command_stop.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 62d73c3da..0e5dc899b 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -58,7 +58,7 @@ fn_stop_graceful_goldsource(){ fn_stop_tmux } -fn_stop_graceful_factorio(){ +fn_stop_graceful_ctrlc(){ fn_print_dots "Graceful: console CTRL+c" fn_script_log_info "Graceful: console CTRL+c" # sends quit @@ -222,7 +222,7 @@ fn_stop_graceful_select(){ if [ "${gamename}" == "7 Days To Die" ]; then fn_stop_graceful_sdtd elif [ "${gamename}" == "Factorio" ]; then - fn_stop_graceful_factorio + fn_stop_graceful_ctrlc elif [ "${engine}" == "source" ]; then fn_stop_graceful_source elif [ "${engine}" == "goldsource" ]; then @@ -231,6 +231,8 @@ fn_stop_graceful_select(){ fn_stop_graceful_minecraft elif [ "${engine}" == "renderware" ]; then fn_stop_graceful_mta + elif [ "${engine}" == "unreal4" ]; then + fn_stop_graceful_ctrlc else fn_stop_tmux fi From 28b4b9e9da33bc7c7db30d7c2bc1eacd3b2d4f68 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 10 Feb 2017 00:02:59 +0000 Subject: [PATCH 618/729] Updated GSLT list --- lgsm/functions/command_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 15ed1bafd..da3f516d9 100644 --- a/lgsm/functions/command_install.sh +++ b/lgsm/functions/command_install.sh @@ -28,7 +28,7 @@ fi # Configuration install_config.sh -if [ "${gamename}" == "Counter-Strike: Global Offensive" ]||[ "${gamename}" == "Team Fortress 2" ]||[ "${gamename}" == "BrainBread 2" ]; then +if [ "${gamename}" == "BrainBread 2" ]||[ "${gamename}" == "Black Mesa: Deathmatch" ]||[ "${gamename}" == "Counter-Strike: Global Offensive" ]||[ "${gamename}" == "Empires Mod" ]||[ "${gamename}" == "Garry’s Mod" ]||[ "${gamename}" == "No more Room in Hell" ]||[ "${gamename}" == "Team Fortress 2" ]||[ "${gamename}" == "Tower Unite" ]; then install_gslt.sh elif [ "${gamename}" == "Don't Starve Together" ]; then install_dst_token.sh From 0901753364d3a768e61fd23851bfaf3f319696e3 Mon Sep 17 00:00:00 2001 From: s-eam Date: Wed, 8 Feb 2017 23:41:55 -0500 Subject: [PATCH 619/729] Abstract Y/N Prompt Logic - Modularize prompt logic into separate function (fn_prompt_yn) - Refactor scripts to utilize fn_prompt_yn - Enhance Y/N prompt interface for usability --- lgsm/functions/command_console.sh | 21 +++----- lgsm/functions/command_debug.sh | 11 ++-- lgsm/functions/command_fastdl.sh | 50 +++++++------------ .../command_install_resources_mta.sh | 11 ++-- lgsm/functions/command_mods_install.sh | 11 ++-- lgsm/functions/command_mods_remove.sh | 11 ++-- lgsm/functions/command_ts3_server_pass.sh | 11 ++-- lgsm/functions/command_wipe.sh | 13 ++--- lgsm/functions/compress_unreal2_maps.sh | 13 ++--- lgsm/functions/compress_ut99_maps.sh | 13 ++--- lgsm/functions/core_messages.sh | 24 +++++++++ lgsm/functions/install_dst_token.sh | 15 +++--- lgsm/functions/install_minecraft_eula.sh | 13 ++--- lgsm/functions/install_retry.sh | 13 ++--- lgsm/functions/install_server_dir.sh | 13 ++--- lgsm/functions/install_server_files.sh | 11 ++-- lgsm/functions/install_ts3db.sh | 11 ++-- .../install_unreal_tournament_eula.sh | 13 ++--- 18 files changed, 104 insertions(+), 174 deletions(-) diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index ee9f13b6e..e59d24a2f 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -13,13 +13,9 @@ fn_print_header fn_print_information_nl "Press \"CTRL+b\" then \"d\" to exit console." fn_print_warning_nl "Do NOT press CTRL+c to exit." echo "" -while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; - * ) echo "Please answer yes or no.";; -esac +if ! fn_prompt_yn "Continue?" Y; then + echo Exiting; return +fi done fn_print_dots "Accessing console" sleep 1 @@ -35,14 +31,9 @@ else fn_print_error_nl "Server not running" fn_script_log_error "Failed to access: Server not running" sleep 1 - while true; do - read -e -i "y" -p "Do you want to start the server? [Y/n]" yn - case $yn in - [Yy]* ) exitbypass=1; command_start.sh; break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac - done + if fn_prompt_yn "Do you want to start the server?" Y; then + exitbypass=1; command_start.sh + fi fi core_exit.sh diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 25e855c94..a98048638 100644 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -68,14 +68,9 @@ echo -e "Use for identifying server issues only!" echo -e "Press CTRL+c to drop out of debug mode." fn_print_warning_nl "If ${servicename} is already running it will be stopped." echo "" -while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; - * ) echo "Please answer yes or no.";; -esac -done +if ! fn_prompt_yn "Continue?" Y; then + echo Exiting; return +fi fn_print_info_nl "Stopping any running servers" fn_script_log_info "Stopping any running servers" diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index c66834b98..345ff765b 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -42,14 +42,9 @@ fn_fastdl_init(){ sleep 1 echo -en "\n" fn_script_log "Started FastDL creation" - while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) exit;; - * ) echo "Please answer yes or no.";; - esac - done + if ! fn_prompt_yn "Continue?" Y; then + exit + fi fn_script_log "Initiating FastDL creation" # Check and create directories @@ -91,27 +86,21 @@ fn_fastdl_config(){ # Prompt for clearing old files if directory was already here if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then fn_print_dots - while true; do - read -e -i "y" -p "Clear old FastDL files? [Y/n]" yn - case $yn in - [Yy]* ) clearoldfastdl="on"; fn_script_log "clearoldfastdl enabled"; fn_print_ok "Clearing Enabled"; break;; - [Nn]* ) clearoldfastdl="off"; fn_script_log "clearoldfastdl disabled"; fn_print_ok "Clearing Disabled"; break;; - * ) echo "Please answer yes or no.";; - esac - done + if fn_prompt_yn "Clear old FastDL files?" Y; then + clearoldfastdl="on"; fn_script_log "clearoldfastdl enabled"; fn_print_ok "Clearing Enabled" + else + clearoldfastdl="off"; fn_script_log "clearoldfastdl disabled"; fn_print_ok "Clearing Disabled" + fi echo -en "\n" fi # Prompt for using bzip2 if it's installed if [ ${bzip2installed} == 1 ]; then fn_print_dots - while true; do - read -e -i "y" -p "Enable file compression using bzip2? [Y/n]" yn - case $yn in - [Yy]* ) bzip2enable="on"; fn_script_log "bzip2 enabled"; fn_print_ok "bzip2 Enabled"; break;; - [Nn]* ) bzip2enable="off"; fn_script_log "bzip2 disabled"; fn_print_ok "bzip2 Disabled"; break;; - * ) echo "Please answer yes or no.";; - esac - done + if fn_prompt_yn "Enable file compression using bzip2?" Y; then + bzip2enable="on"; fn_script_log "bzip2 enabled"; fn_print_ok "bzip2 Enabled" + else + bzip2enable="off"; fn_script_log "bzip2 disabled"; fn_print_ok "bzip2 Disabled" + fi echo -en "\n" fi } @@ -119,14 +108,11 @@ fn_fastdl_config(){ fn_fastdl_gmod_config(){ # Prompt for download enforcer, that is using a .lua addfile resource generator fn_print_dots - while true; do - read -e -i "y" -p "Use client download enforcer? [Y/n]" yn - case $yn in - [Yy]* ) luaressource="on"; fn_script_log "DL enforcer Enabled"; fn_print_ok "Enforcer Enabled"; break;; - [Nn]* ) luaressource="off"; fn_script_log "DL enforcer Disabled"; fn_print_ok "Enforcer Disabled"; break;; - * ) echo "Please answer yes or no.";; - esac - done + if fn_prompt_yn "Use client download enforcer?" Y; then + luaressource="on"; fn_script_log "DL enforcer Enabled"; fn_print_ok "Enforcer Enabled" + else + luaressource="off"; fn_script_log "DL enforcer Disabled"; fn_print_ok "Enforcer Disabled" + fi echo -en "\n" } diff --git a/lgsm/functions/command_install_resources_mta.sh b/lgsm/functions/command_install_resources_mta.sh index 678e412ad..b4432e0f5 100644 --- a/lgsm/functions/command_install_resources_mta.sh +++ b/lgsm/functions/command_install_resources_mta.sh @@ -21,11 +21,6 @@ fn_install_resources(){ fn_print_header fn_print_warning_nl "Installing the default resources with existing resources may cause issues." -while true; do - read -e -i "y" -p "Do you want to install MTA default resources? [Y/n]" yn - case $yn in - [Yy]* ) fn_install_resources && break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac -done +if fn_prompt_yn "Do you want to install MTA default resources?" Y; then + fn_install_resources +fi diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 2d85c12f6..9610d5e91 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -87,14 +87,9 @@ if [ -f "${modsinstalledlistfullpath}" ]; then fn_script_log_warn "${modprettyname} is already installed" sleep 1 echo " * Any configs may be overwritten." - while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; core_exit.sh;; - * ) echo "Please answer yes or no.";; - esac - done + if ! fn_prompt_yn "Continue?" Y; then + echo Exiting; core_exit.sh + fi fn_script_log_info "User selected to continue" fi fi diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index d63a00101..932a3d733 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -45,14 +45,9 @@ done fn_print_warning_nl "You are about to remove ${cyan}${usermodselect}${default}." echo " * Any custom files/configuration will be removed." -while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; -esac -done +if ! fn_prompt_yn "Continue?" Y; then + echo Exiting; exit +fi currentmod="${usermodselect}" fn_mod_get_info diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index 1a9896889..529b705b1 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -19,14 +19,9 @@ fn_serveradmin_password_prompt(){ fn_print_information_nl "You are about to change the ${gamename} ServerAdmin password." fn_print_warning_nl "${gamename} will restart during this process." echo "" - while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; - esac - done + if ! fn_prompt_yn "Continue?" Y; then + echo Exiting; exit + fi fn_script_log_info "Initiating ${gamename} ServerAdmin password change" read -p "Enter new password : " newpassword } diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 440c8080e..d50e354fc 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -105,18 +105,13 @@ fn_wipe_server_remove_files(){ if [ "${gamename}" == "Rust" ]; then if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then fn_print_warning_nl "Any user, storage, log and map data from ${serveridentitydir} will be erased." - while true; do - read -e -i "y" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; core_exit.sh;; - * ) echo "Please answer yes or no.";; - esac - done + if ! fn_prompt_yn "Continue?" Y; then + echo Exiting; core_exit.sh + fi fn_script_log_info "User selects to erase any user, storage, log and map data from ${serveridentitydir}" sleep 1 fn_wipe_server_process - else + else fn_print_information_nl "No data to wipe was found" fn_script_log_info "No data to wipe was found." sleep 1 diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh index 67d3621e2..f2bcb2135 100644 --- a/lgsm/functions/compress_unreal2_maps.sh +++ b/lgsm/functions/compress_unreal2_maps.sh @@ -19,14 +19,9 @@ echo "Compressed maps saved to:" echo "" echo "${compressedmapsdir}" echo "" -while true; do - read -e -i "y" -p "Start compression [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; - * ) echo "Please answer yes or no.";; - esac -done +if ! fn_prompt_yn "Start compression?" Y; then + echo Exiting; return +fi mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1 rm -rfv "${filesdir}/Maps/"*.ut2.uz2 cd "${systemdir}" @@ -34,4 +29,4 @@ for map in "${filesdir}/Maps/"*; do ./ucc-bin compress "${map}" --nohomedir done mv -fv "${filesdir}/Maps/"*.ut2.uz2 "${compressedmapsdir}" -core_exit.sh \ No newline at end of file +core_exit.sh diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh index 3ef6e140e..872b3da06 100644 --- a/lgsm/functions/compress_ut99_maps.sh +++ b/lgsm/functions/compress_ut99_maps.sh @@ -19,14 +19,9 @@ echo "Compressed maps saved to:" echo "" echo "${compressedmapsdir}" echo "" -while true; do - read -e -i "y" -p "Start compression [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) echo Exiting; return;; - * ) echo "Please answer yes or no.";; - esac -done +if ! fn_prompt_yn "Start compression?" Y; then + echo Exiting; return +fi mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1 rm -rfv "${filesdir}/Maps/"*.unr.uz cd "${systemdir}" @@ -34,4 +29,4 @@ for map in "${filesdir}/Maps/"*; do ./ucc-bin compress "${map}" --nohomedir done mv -fv "${filesdir}/Maps/"*.unr.uz "${compressedmapsdir}" -core_exit.sh \ No newline at end of file +core_exit.sh diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 540729af7..1d3623173 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -1,6 +1,7 @@ #!/bin/bash # LGSM core_messages.sh function # Author: Daniel Gibbs +# Contributor: s-eam # Website: https://gameservermanagers.com # Description: Defines on-screen messages such as [ OK ] and how script logs look. @@ -268,6 +269,29 @@ fn_print_information_nl(){ echo -e "${cyan}Information!${default} $@" } +# Y/N Prompt +fn_prompt_yn(){ + local prompt="$1" + local initial="$2" + + if [ "${initial}" == "Y" ]; then + prompt+=" [Y/n] " + elif [ "${initial}" == "N" ]; then + prompt+=" [y/N] " + else + prompt+=" [y/n] " + fi + + while true; do + read -e -i "${initial}" -p "${prompt}" -r yn + case "${yn}" in + [Yy]|[Yy][Ee][Ss]) return 0 ;; + [Nn]|[Nn][Oo]) return 1 ;; + *) echo "Please answer yes or no." ;; + esac + done +} + # On-Screen End of Line ################################## diff --git a/lgsm/functions/install_dst_token.sh b/lgsm/functions/install_dst_token.sh index 2e9713e71..27966bcbc 100644 --- a/lgsm/functions/install_dst_token.sh +++ b/lgsm/functions/install_dst_token.sh @@ -21,15 +21,12 @@ if [ -z "${autoinstall}" ]; then if [ -s "${clustercfgdir}/cluster_token.txt" ]; then echo "The cluster token is already set. Do you want to overwrite it?" fn_script_log_info "Don't Starve Together cluster token is already set" - while true; do - read -e -i "n" -p "Continue? [Y/n]" yn - case $yn in - [Yy]* ) overwritetoken="true"; break;; - [Nn]* ) overwritetoken="false"; break;; - * ) echo "Please answer yes or no.";; - esac - done - fi + if fn_prompt_yn "Continue?" N; then + overwritetoken="true" + else + overwritetoken="false" + fi + fi if [ "${overwritetoken}" == "true" ]; then echo "Once you have the cluster token, enter it below" echo -n "Cluster Token: " diff --git a/lgsm/functions/install_minecraft_eula.sh b/lgsm/functions/install_minecraft_eula.sh index 410e283b4..e4901979b 100644 --- a/lgsm/functions/install_minecraft_eula.sh +++ b/lgsm/functions/install_minecraft_eula.sh @@ -16,18 +16,13 @@ echo "eula=false" > "${filesdir}/eula.txt" if [ -z "${autoinstall}" ]; then echo "By continuing you are indicating your agreement to the EULA." echo "" - while true; do - read -e -i "y" -p "Continue [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) core_exit.sh;; - * ) echo "Please answer yes or no.";; - esac - done + if ! fn_prompt_yn "Continue?" Y; then + core_exit.sh + fi else echo "By using auto-install you are indicating your agreement to the EULA." echo "" sleep 5 fi -sed -i "s/eula=false/eula=true/g" "${filesdir}/eula.txt" \ No newline at end of file +sed -i "s/eula=false/eula=true/g" "${filesdir}/eula.txt" diff --git a/lgsm/functions/install_retry.sh b/lgsm/functions/install_retry.sh index d0ca16fef..757dd6574 100644 --- a/lgsm/functions/install_retry.sh +++ b/lgsm/functions/install_retry.sh @@ -8,11 +8,8 @@ local commandname="INSTALL" local commandaction="Install" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -while true; do - read -e -i "y" -p "Retry install? [Y/n]" yn - case $yn in - [Yy]* ) command_install.sh; exit;; - [Nn]* ) echo Exiting; exit;; - * ) echo "Please answer yes or no.";; - esac -done \ No newline at end of file +if fn_prompt_yn "Retry install?" Y; then + command_install.sh; exit +else + echo Exiting; exit +fi diff --git a/lgsm/functions/install_server_dir.sh b/lgsm/functions/install_server_dir.sh index d527b6193..1cd64110d 100644 --- a/lgsm/functions/install_server_dir.sh +++ b/lgsm/functions/install_server_dir.sh @@ -19,16 +19,11 @@ if [ -d "${filesdir}" ]; then fn_print_warning_nl "A server is already installed here." fi if [ -z "${autoinstall}" ]; then - while true; do - read -e -i "y" -p "Continue [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) exit;; - * ) echo "Please answer yes or no.";; - esac - done + if ! fn_prompt_yn "Continue?" Y; then + exit + fi fi if [ ! -d "${filesdir}" ]; then mkdir -v "${filesdir}" fi -sleep 1 \ No newline at end of file +sleep 1 diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 9b099edd4..4d4dfe892 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -146,12 +146,7 @@ fi if [ -z "${autoinstall}" ]; then echo "" echo "=================================" - while true; do - read -e -i "y" -p "Was the install successful? [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) install_retry.sh;; - * ) echo "Please answer yes or no.";; - esac - done + if ! fn_prompt_yn "Was the install successful?" Y; then + install_retry.sh + fi fi diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh index bada12c0b..dec3b6773 100644 --- a/lgsm/functions/install_ts3db.sh +++ b/lgsm/functions/install_ts3db.sh @@ -48,14 +48,9 @@ fn_install_ts3db_mariadb(){ if [ -z "${autoinstall}" ]; then echo "" - while true; do - read -e -i "n" -p "Do you want to use MariaDB/MySQL instead of sqlite (Database Server including user and database already has to be set up!)? [y/N]" yn - case $yn in - [Yy]* ) fn_install_ts3db_mariadb && break;; - [Nn]* ) break;; - * ) echo "Please answer yes or no.";; - esac - done + if ! fn_prompt_yn "Do you want to use MariaDB/MySQL instead of sqlite (Database Server including user and database already has to be set up!)?" N; then + fn_install_ts3db_mariadb + fi else fn_print_warning_nl "./${selfname} auto-install is uses sqlite. For MariaDB/MySQL use ./${selfname} install" fi diff --git a/lgsm/functions/install_unreal_tournament_eula.sh b/lgsm/functions/install_unreal_tournament_eula.sh index b39f9b2e2..f2a5eb445 100644 --- a/lgsm/functions/install_unreal_tournament_eula.sh +++ b/lgsm/functions/install_unreal_tournament_eula.sh @@ -16,18 +16,13 @@ echo "eula=false" > "${filesdir}/eula.txt" if [ -z "${autoinstall}" ]; then echo "By continuing you are indicating your agreement to the EULA." echo "" - while true; do - read -e -i "y" -p "Continue [Y/n]" yn - case $yn in - [Yy]* ) break;; - [Nn]* ) core_exit.sh;; - * ) echo "Please answer yes or no.";; - esac - done + if ! fn_prompt_yn "Continue?" Y; then + core_exit.sh + fi else echo "By using auto-install you are indicating your agreement to the EULA." echo "" sleep 5 fi -sed -i "s/eula=false/eula=true/g" "${filesdir}/eula.txt" \ No newline at end of file +sed -i "s/eula=false/eula=true/g" "${filesdir}/eula.txt" From f2901c0e946c612e3a3d4cfe3dad36fb273bd8db Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 10 Feb 2017 22:02:32 +0000 Subject: [PATCH 620/729] Tower Unite bypasses GSLT input and only informs user --- lgsm/functions/install_gslt.sh | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/install_gslt.sh b/lgsm/functions/install_gslt.sh index c611e91a3..1c8f25194 100644 --- a/lgsm/functions/install_gslt.sh +++ b/lgsm/functions/install_gslt.sh @@ -26,12 +26,19 @@ fn_script_log_info "Get more info and a token here:" fn_script_log_info "https://gameservermanagers.com/gslt" echo "" if [ -z "${autoinstall}" ]; then - echo "Enter token below (Can be blank)." - echo -n "GSLT TOKEN: " - read token - sed -i -e "s/gslt=\"\"/gslt=\"${token}\"/g" "${rootdir}/${selfname}" + if [ "${gamename}" != "Tower Unite" ];then + echo "Enter token below (Can be blank)." + echo -n "GSLT TOKEN: " + read token + sed -i -e "s/gslt=\"\"/gslt=\"${token}\"/g" "${rootdir}/${selfname}" + fi fi sleep 1 -echo "The GSLT can be changed by editing ${selfname}." -fn_script_log_info "The GSLT can be changed by editing ${selfname}." +if [ "${gamename}" == "Tower Unite" ];then + echo "The GSLT can be changed by editing ${servercfg}." + fn_script_log_info "The GSLT can be changed by editing ${servercfg}." +else + echo "The GSLT can be changed by editing ${selfname}." + fn_script_log_info "The GSLT can be changed by editing ${selfname}." +fi echo "" \ No newline at end of file From abcdfe985be3c1f5c3f4e0faac195c2db714ed5f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 10 Feb 2017 23:25:22 +0000 Subject: [PATCH 621/729] Increased the glibc requirements of ARK --- lgsm/functions/info_glibc.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index d698c7ba2..d4977a757 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -6,7 +6,10 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -if [ "${gamename}" == "Black Mesa: Deathmatch" ]; then +if [ "${gamename}" == "ARK: Survival Evolved" ]; then + glibcrequired="2.15" + glibcfix="no" +elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then glibcrequired="2.15" glibcfix="yes" elif [ "${gamename}" == "Blade Symphony" ]; then @@ -74,9 +77,6 @@ elif [ "${gamename}" == "TeamSpeak 3" ]; then elif [ "${gamename}" == "Teeworlds" ]; then glibcrequired="2.3" glibcfix="no" -elif [ "${gamename}" == "Tower Unite" ]; then - glibcrequired="2.14" - glibcfix="no" elif [ "${engine}" == "avalanche" ]; then glibcrequired="2.13" glibcfix="yes" From 4f75192b6cc35ab3d3ae6869a39d070ff0f8955a Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 10 Feb 2017 23:34:02 +0000 Subject: [PATCH 622/729] Added graceful stop for all unreal engine servers --- lgsm/functions/command_stop.sh | 89 ++++++++++++++++------------------ 1 file changed, 43 insertions(+), 46 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 0e5dc899b..6ac9c188e 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -221,7 +221,7 @@ fn_stop_graceful_mta(){ fn_stop_graceful_select(){ if [ "${gamename}" == "7 Days To Die" ]; then fn_stop_graceful_sdtd - elif [ "${gamename}" == "Factorio" ]; then + elif [ "${gamename}" == "Factorio" ]||[ "${engine}" == "unreal4" ]||[ "${engine}" == "unreal3" ]||[ "${engine}" == "unreal2" ]||[ "${engine}" == "unreal" ]; then fn_stop_graceful_ctrlc elif [ "${engine}" == "source" ]; then fn_stop_graceful_source @@ -231,53 +231,51 @@ fn_stop_graceful_select(){ fn_stop_graceful_minecraft elif [ "${engine}" == "renderware" ]; then fn_stop_graceful_mta - elif [ "${engine}" == "unreal4" ]; then - fn_stop_graceful_ctrlc else fn_stop_tmux fi } fn_stop_ark(){ - maxpiditer=15 # The maximum number of times to check if the ark pid has closed gracefully. - info_config.sh - if [ -z "${queryport}" ]; then - fn_print_warn "No queryport found using info_config.sh" - fn_script_log_warn "No queryport found using info_config.sh" - userconfigfile="${filesdir}" - userconfigfile+="/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" - queryport=$(grep ^QueryPort= ${userconfigfile} | cut -d= -f2 | sed "s/[^[:digit:].*].*//g") - fi - if [ -z "${queryport}" ]; then - fn_print_warn "No queryport found in the GameUsersettings.ini file" - fn_script_log_warn "No queryport found in the GameUsersettings.ini file" - return - fi + maxpiditer=15 # The maximum number of times to check if the ark pid has closed gracefully. + info_config.sh + if [ -z "${queryport}" ]; then + fn_print_warn "No queryport found using info_config.sh" + fn_script_log_warn "No queryport found using info_config.sh" + userconfigfile="${filesdir}" + userconfigfile+="/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" + queryport=$(grep ^QueryPort= ${userconfigfile} | cut -d= -f2 | sed "s/[^[:digit:].*].*//g") + fi + if [ -z "${queryport}" ]; then + fn_print_warn "No queryport found in the GameUsersettings.ini file" + fn_script_log_warn "No queryport found in the GameUsersettings.ini file" + return + fi - if [[ ${#queryport} -gt 0 ]] ; then - for (( pidcheck=0 ; pidcheck < ${maxpiditer} ; pidcheck++ )) ; do - pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\ - grep :${queryport}[[:space:]] | rev | awk '{print $1}' |\ - rev | cut -d\/ -f1) - # - # check for a valid pid - pid=${pid//[!0-9]/} - let pid+=0 # turns an empty string into a valid number, '0', - # and a valid numeric pid remains unchanged. - if [[ ${pid} -gt 1 && $pid -le $(cat /proc/sys/kernel/pid_max) ]] ; then - fn_print_dots "Process still bound. Awaiting graceful exit: ${pidcheck}" - sleep 1 - else - break # Our job is done here - fi # end if for pid range check - done - if [[ ${pidcheck} -eq ${maxpiditer} ]] ; then - # The process doesn't want to close after 20 seconds. - # kill it hard. - fn_print_error "Terminating reluctant Ark process: ${pid}" - kill -9 $pid - fi - fi # end if for port check + if [ "${#queryport}" -gt 0 ] ; then + for (( pidcheck=0 ; pidcheck < ${maxpiditer} ; pidcheck++ )) ; do + pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\ + grep :${queryport}[[:space:]] | rev | awk '{print $1}' |\ + rev | cut -d\/ -f1) + # + # check for a valid pid + pid=${pid//[!0-9]/} + let pid+=0 # turns an empty string into a valid number, '0', + # and a valid numeric pid remains unchanged. + if [ "${pid}" -gt 1 && "${pid}" -le $(cat /proc/sys/kernel/pid_max) ]; then + fn_print_dots "Process still bound. Awaiting graceful exit: ${pidcheck}" + sleep 1 + else + break # Our job is done here + fi # end if for pid range check + done + if [[ ${pidcheck} -eq ${maxpiditer} ]] ; then + # The process doesn't want to close after 20 seconds. + # kill it hard. + fn_print_error "Terminating reluctant Ark process: ${pid}" + kill -9 ${pid} + fi + fi # end if for port check } # end of fn_stop_ark fn_stop_teamspeak3(){ @@ -327,11 +325,10 @@ fn_stop_tmux(){ # Remove lockfile rm -f "${rootdir}/${lockselfname}" # ARK doesn't clean up immediately after tmux is killed. - # Make certain the ports are cleared before continuing. - if [ "${gamename}" == "ARK: Survival Evolved" ]; then - fn_stop_ark - echo -en "\n" - fi + # Make certain the ports are cleared before continuing. + if [ "${gamename}" == "ARK: Survival Evolved" ]; then + fn_stop_ark + fi fn_print_ok_nl "${servername}" fn_script_log_pass "Stopped ${servername}" else From 6677c2a5fe1713f9d9372338ff0415dce3e33099 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 10 Feb 2017 23:43:39 +0000 Subject: [PATCH 623/729] nl --- lgsm/functions/command_mods_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 2d85c12f6..4af7f8913 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -52,7 +52,7 @@ done # If no mods are available for a specific game if [ -z "${compatiblemodslist}" ]; then - fn_print_fail "No mods are currently available for ${gamename}." + fn_print_fail_nl "No mods are currently available for ${gamename}." fn_script_log_info "No mods are currently available for ${gamename}." core_exit.sh fi From fcd31bc8cb924580bfef3f1e7e5d347739242dec Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 10 Feb 2017 23:44:41 +0000 Subject: [PATCH 624/729] changed to master branch --- TowerUnite/tuserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TowerUnite/tuserver b/TowerUnite/tuserver index f4f8330b2..4921e7988 100644 --- a/TowerUnite/tuserver +++ b/TowerUnite/tuserver @@ -73,7 +73,7 @@ branch="" # from a different repo and/or branch. githubuser="GameServerManagers" githubrepo="LinuxGSM" -githubbranch="feature/tuserver" +githubbranch="master" ## LinuxGSM Server Details # Do not edit From 8384cd6ebac535e7c5c262e61ba488d2a82365bb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 10 Feb 2017 23:57:59 +0000 Subject: [PATCH 625/729] Removed servers that are not ready for release branches have been created for these --- BallisticOverkill/boserver | 198 ---------------------- CounterStrikeClassicOffensive/cscoserver | 205 ----------------------- lgsm/functions/install_config.sh | 6 - lgsm/functions/install_server_files.sh | 4 +- 4 files changed, 1 insertion(+), 412 deletions(-) delete mode 100755 BallisticOverkill/boserver delete mode 100755 CounterStrikeClassicOffensive/cscoserver diff --git a/BallisticOverkill/boserver b/BallisticOverkill/boserver deleted file mode 100755 index c17e02b6e..000000000 --- a/BallisticOverkill/boserver +++ /dev/null @@ -1,198 +0,0 @@ -#!/bin/bash -# Project: Game Server Managers - LinuxGSM -# Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2017 Daniel Gibbs -# Purpose: Ballistic Overkill | Server Management Script -# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors -# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki -# Website: https://gameservermanagers.com - -# Debugging -if [ -f ".dev-debug" ]; then - exec 5>dev-debug.log - BASH_XTRACEFD="5" - set -x -fi - -version="170128" - -########################## -######## Settings ######## -########################## - -#### Server Settings #### - -## Optional: Game Server Login Token -# GSLT can be used for running a public server. -# More info: https://gameservermanagers.com/gslt -gslt="" - -## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -fn_parms(){ -parms=" -batchmode -nographics -logFile output.txt" -} - -#### LinuxGSM Settings #### - -## Notification Alerts -# (on|off) -# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email -emailalert="off" -email="email@example.com" -emailfrom="" - -# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet -pushbulletalert="off" -pushbullettoken="accesstoken" -channeltag="" - -## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update -updateonstart="off" - -## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" - -## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging -consolelogging="on" -logdays="7" - -#### LinuxGSM Advanced Settings #### - -## Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" - -## SteamCMD Settings -# Server appid -appid="416880" -# Steam App Branch Select -# Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta latest_experimental" -branch="" - -## LinuxGSM Server Details -# Do not edit -gamename="Ballistic Overkill" -engine="unity" - -## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers -servicename="bo-server" - -#### Directories #### -# Edit with care - -## Work 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" - -## Server Specific Directories -systemdir="${filesdir}" -executabledir="${filesdir}" -executable="./BODS.x86" -servercfg="config.txt" -servercfgdefault="${servercfg}" -servercfgdir="${systemdir}" -servercfgfullpath="${servercfgdir}/${servercfg}" - - -## Backup Directory -backupdir="${rootdir}/backups" - -## Logging Directorie -gamelogdir="${systemdir}/logs" -scriptlogdir="${rootdir}/log/script" -consolelogdir="${rootdir}/log/console" -scriptlog="${scriptlogdir}/${servicename}-script.log" -consolelog="${consolelogdir}/${servicename}-console.log" -emaillog="${scriptlogdir}/${servicename}-email.log" - -## Logs Naming -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 -} - -# Prevent from running this script as root. -if [ "$(whoami)" = "root" ]; then - if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then - echo "[ FAIL ] Do NOT run this script as root!" - exit 1 - else - core_functions.sh - check_root.sh - fi -fi - -core_dl.sh -core_functions.sh -getopt=$1 -core_getopt.sh \ No newline at end of file diff --git a/CounterStrikeClassicOffensive/cscoserver b/CounterStrikeClassicOffensive/cscoserver deleted file mode 100755 index 09a247588..000000000 --- a/CounterStrikeClassicOffensive/cscoserver +++ /dev/null @@ -1,205 +0,0 @@ -#!/bin/bash -# Project: Game Server Managers - LinuxGSM -# Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2017 Daniel Gibbs -# Purpose: Counter-Strike: Classic Offensive | Server Management Script -# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors -# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki -# Website: https://gameservermanagers.com - -# Debugging -if [ -f ".dev-debug" ]; then - exec 5>dev-debug.log - BASH_XTRACEFD="5" - set -x -fi - -version="170128" - -########################## -######## Settings ######## -########################## - -#### Server Settings #### - -## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters -defaultmap="de_dust2_csco" -maxplayers="16" -port="27015" -sourcetvport="27020" -clientport="27005" -ip="0.0.0.0" - -## Required: Game Server Login Token -# GSLT is required for running a public server. -# More info: https://gameservermanagers.com/gslt -gslt="" - -## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -fn_parms(){ -parms="-game csco -usercon -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers_override ${maxplayers}" -} - -#### LinuxGSM Settings #### - -## Notification Alerts -# (on|off) -# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email -emailalert="off" -email="email@example.com" -emailfrom="" - -# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet -pushbulletalert="off" -pushbullettoken="accesstoken" -channeltag="" - -## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update -updateonstart="off" - -## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" - -## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging -consolelogging="on" -logdays="7" - -#### LinuxGSM Advanced Settings #### - -## SteamCMD Settings -# Server appid -appid="740" -# Steam App Branch Select -# Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta latest_experimental" -branch="" - -## Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" - -## LinuxGSM Server Details -# Do not edit -gamename="Counter-Strike: Classic Offensive" -engine="source" - -## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers -servicename="csco-server" - -#### Directories #### -# Edit with care - -## Work 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" - -## Server Specific Directories -systemdir="${filesdir}/csco" -executabledir="${filesdir}" -executable="./srcds_run" -servercfg="${servicename}.cfg" -servercfgdefault="server.cfg" -servercfgdir="${systemdir}/cfg" -servercfgfullpath="${servercfgdir}/${servercfg}" - -## Backup Directory -backupdir="${rootdir}/backups" - -## Logging Directories -gamelogdir="${systemdir}/logs" -scriptlogdir="${rootdir}/log/script" -consolelogdir="${rootdir}/log/console" -scriptlog="${scriptlogdir}/${servicename}-script.log" -consolelog="${consolelogdir}/${servicename}-console.log" -emaillog="${scriptlogdir}/${servicename}-email.log" - -## Logs Naming -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 -} - -# Prevent from running this script as root. -if [ "$(whoami)" = "root" ]; then - if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then - echo "[ FAIL ] Do NOT run this script as root!" - exit 1 - else - core_functions.sh - check_root.sh - fi -fi - -core_dl.sh -core_functions.sh -getopt=$1 -core_getopt.sh \ No newline at end of file diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 8a71bcc22..67290b9ec 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -210,12 +210,6 @@ elif [ "${gamename}" == "Counter-Strike 1.6" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars -elif [ "${gamename}" == "Counter-Strike: Classic Offensive" ]; then - gamedirname="CounterStrikeClassicOffensive" - array_configs+=( server.cfg ) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars elif [ "${gamename}" == "Counter-Strike: Condition Zero" ]; then gamedirname="CounterStrikeConditionZero" array_configs+=( server.cfg ) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 9b099edd4..a988f2644 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -21,8 +21,6 @@ fn_install_server_files(){ fileurl="http://files.gameservermanagers.com/CallOfDuty4/cod4x18_dedrun.tar.bz2"; filedir="${tmpdir}"; filename="cod4x18_dedrun.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="bebdfc1755626462bdaad49f6f926c08" elif [ "${gamename}" == "Call of Duty: World at War" ]; then fileurl="http://files.gameservermanagers.com/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.bz2"; filedir="${tmpdir}"; filename="codwaw-lnxded-1.7-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="0489697ff3bf678c109bfb377d1b7895" - elif [ "${gamename}" == "Counter-Strike: Classic Offensive" ]; then - fileurl="https://s3.amazonaws.com/linuxgsm/ClassicOffensive_Beta1.1d.zip"; filedir="${tmpdir}"; filename="ClassicOffensive_Beta1.1d.zip"; executecmd="noexecute" run="norun"; force="noforce"; md5="922ff1abe08ba12309b19900f1cbd33a" 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 @@ -136,7 +134,7 @@ elif [ "${gamename}" == "Multi Theft Auto" ]; then elif [ "${gamename}" == "Factorio" ]; then update_factorio.sh install_factorio_save.sh -elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]||[ "${gamename}" == "Counter-Strike: Classic Offensive" ]; then +elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then if [ "${gamename}" == "Unreal Tournament" ]; then install_unreal_tournament_eula.sh fi From 459e7c0b171f2952c744d8955416110ee827db96 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 12 Feb 2017 18:58:42 +0000 Subject: [PATCH 626/729] Added Ark system requirements --- lgsm/functions/check_system_requirements.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_system_requirements.sh b/lgsm/functions/check_system_requirements.sh index 3040a8406..92766785f 100644 --- a/lgsm/functions/check_system_requirements.sh +++ b/lgsm/functions/check_system_requirements.sh @@ -11,12 +11,16 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" info_distro.sh # RAM requirements in megabytes for each game or engine. -if [ "${gamename}" == "Rust" ]; then + +if [ "${gamename}" == "ARK: Survival Evolved" ]; then ramrequirementmb="4000" - ramrequirementgb="4" + ramrequirementgb="1" elif [ "${gamename}" == "ARMA 3" ]; then ramrequirementmb="1000" ramrequirementgb="1" +elif [ "${gamename}" == "Rust" ]; then + ramrequirementmb="4000" + ramrequirementgb="4" elif [ "${gamename}" == "Minecraft" ]; then ramrequirementmb="1000" ramrequirementgb="1" From 37305e449e38d38f29e33af9a51030315e440e93 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 12 Feb 2017 19:59:40 +0000 Subject: [PATCH 627/729] New Release 170212 --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CallOfDuty4/cod4server | 2 +- CallOfDutyUnitedOffensive/coduoserver | 2 +- CallOfDutyWorldAtWar/codwawserver | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- EmpiresMod/emserver | 2 +- Factorio/fctrserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- MultiTheftAuto/mtaserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- QuakeWorld/qwserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- TowerUnite/tuserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_ts3server.sh | 2 +- 69 files changed, 69 insertions(+), 69 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 518628004..0ab687af9 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index cd8a603d3..d47590b77 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index f6c03be06..74b5532b6 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index ae7447aa9..7e21c0fbc 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 6baa4e739..05d93a735 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 1e5ad15cc..6a486a16e 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 8668fffce..72700d7e3 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index b13aa8ed2..c9fd27ae1 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index 2939c036e..61eac16a7 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server index 661077042..4c9e3c48a 100644 --- a/CallOfDuty4/cod4server +++ b/CallOfDuty4/cod4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index 172af806c..1006c9aaf 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index 43b5c7a42..1af43280e 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 30bb0a0b2..aa7233712 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index e6de0dc7e..72eb9bb2a 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index ba70f15f3..ff72163e8 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 347983ebb..c630e9888 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index be253b1d8..2a8a0b805 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index 83929712f..cae5ce0e1 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 60dfa9f66..4fcca9610 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index acf036430..0ea17b569 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index fbd3ee106..17e96aa9c 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index 972009a08..ec0e5a12b 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index 04ab7fdda..d803cacfa 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index e628f4c42..9f9771d57 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Factorio/fctrserver b/Factorio/fctrserver index f6b29d916..f92db7e47 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index 9039576f5..ee2ec15c0 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index 4a790b467..d48af2545 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 228d54523..20c639879 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index 53cc2f4ab..adb1e18e2 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index b008887a9..4c007e738 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 22ab2c5d1..68c4b1904 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 24b43ca40..273062307 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index d6f7a8841..5778bf628 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 0f4ef2dba..077595ecf 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index de04e2db9..5e32707a1 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index 915efab6f..d9a755c65 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index 8d9e428fa..ac3fa7edf 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 39db226d1..9ebf44f4a 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/MultiTheftAuto/mtaserver b/MultiTheftAuto/mtaserver index 1fc07fdbb..1132e0cc9 100644 --- a/MultiTheftAuto/mtaserver +++ b/MultiTheftAuto/mtaserver @@ -12,7 +12,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170103" +version="170212" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index e19c936cd..b27f06ba5 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index 41949f3c6..b7014072f 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 272f68fef..6f6b0cfd2 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 0c44dd2ff..92f39d795 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 32a668f53..17ce539fb 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index 7442c678a..e909137d3 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 31cc52efa..3339ac2d6 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index e86933c26..9ebc1163e 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index aca7dfcde..b959e7a20 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 7433273d9..ac5f4ab39 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 800ada9cd..081c5a81a 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index 19d4b65cf..f7b883560 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index e1486d67f..2cfc3b93f 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index 8d4ded872..9557f914d 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 029db5b59..8c1b31ebd 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index 38f48c97e..c0d59f47e 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index b401e72ea..b320e8812 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index e9982d1f8..313a63c3a 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index 501ef64a4..ed3d30662 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index 6df71f193..e28b52d2e 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index e038f175f..60d8dc5fc 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 1f803e45b..5c5b7839c 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/TowerUnite/tuserver b/TowerUnite/tuserver index 4921e7988..5483eed93 100644 --- a/TowerUnite/tuserver +++ b/TowerUnite/tuserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index 6e3afdf5b..037948bfe 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 1cbfd4c59..ae270fbb7 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index 5dfe1207d..f03d2c9a4 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 237c1531a..4891a9cba 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index bfc0cbd16..29d4f889c 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 8fbb910a1..e74fdb6c9 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 8e0e54c2e..8a573e048 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170128" +version="170212" ########################## ######## Settings ######## From a05358dd0688e27ab3be34766c1d4e1cc262a7c9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 15 Feb 2017 21:25:56 +0000 Subject: [PATCH 628/729] optimsed availablebuild var no longer has so many | --- lgsm/functions/update_steamcmd.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 167daf5fb..6d2b6780a 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -156,7 +156,7 @@ fn_update_steamcmd_check(){ fi # Gets availablebuild info - availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"${branchname}\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) + availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | sed -n '/branch/,$p' | grep -m 1 buildid | tr -cd '[:digit:]') if [ -z "${availablebuild}" ]; then fn_print_fail "Checking for update: SteamCMD" sleep 1 From 89c4352c1bd549c35680fee71c803efde61fd7ea Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 00:55:34 +0000 Subject: [PATCH 629/729] Added Ballistic Overkill --- lgsm/functions/info_glibc.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 12ba262a4..5b821054d 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -6,7 +6,13 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -if [ "${gamename}" == "Black Mesa: Deathmatch" ]; then +if [ "${gamename}" == "ARK: Survival Evolved" ]; then + glibcrequired="2.15" + glibcfix="no" +elif [ "${gamename}" == "Ballistic Overkill" ]; then + glibcrequired="2.15" + glibcfix="yes" +elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then glibcrequired="2.15" glibcfix="yes" elif [ "${gamename}" == "Blade Symphony" ]; then @@ -68,6 +74,9 @@ elif [ "${gamename}" == "Quake 3: Arena" ]; then elif [ "${gamename}" == "Quake Live" ]; then glibcrequired="2.15" glibcfix="no" +elif [ "${gamename}" == "Sven Co-op" ]; then + glibcrequired="2.18" + glibcfix="no" elif [ "${gamename}" == "TeamSpeak 3" ]; then glibcrequired="NOT REQUIRED" glibcfix="no" From ef056b3d35b525e6e04f47ad68324e02667d2053 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 02:02:12 +0000 Subject: [PATCH 630/729] ballistic overkill config --- lgsm/functions/info_config.sh | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 0164999a3..90c144d80 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -554,6 +554,36 @@ fn_info_config_unreal(){ fi } +fn_info_config_ballistic_overkill(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + serverpassword="${unavailable}" + port="${zero}" + queryport="${zero}" + maxplayers="${unavailable}" + gamemode="${unavailable}" + gameworld="${unavailable}" + else + servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + port=$(grep "ServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') + queryport=$((port + 1)) + + maxplayers=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') + gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + port=${port:-"0"} + queryport=${queryport:-"0"} + maxplayers=${maxplayers:-"NOT SET"} + gamemode=${gamemode:-"NOT SET"} + gameworld=${gameworld:-"NOT SET"} + fi +} + fn_info_config_sdtd(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" @@ -646,6 +676,9 @@ if [ "${engine}" == "avalanche" ]; then # ARK: Survival Evolved elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then fn_info_config_ark +# Ballistic Overkill +elif [ "${gamename}" == "Ballistic Overkill" ]; then + fn_info_config_ballistic_overkill # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then fn_info_config_bf1942 @@ -664,7 +697,7 @@ elif [ "${gamename}" == "Call of Duty: World at War" ]; then # Dont Starve Together elif [ "${engine}" == "dontstarve" ]; then fn_info_config_dontstarve -# Factorio +# Factorio elif [ "${gamename}" == "Factorio" ]; then fn_info_config_factorio # Quake 2 From 7450c599d7d245fdafbe7055a9c7ae5c54e55112 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 18:52:17 +0000 Subject: [PATCH 631/729] nl --- lgsm/functions/command_mods_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 2d85c12f6..4af7f8913 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -52,7 +52,7 @@ done # If no mods are available for a specific game if [ -z "${compatiblemodslist}" ]; then - fn_print_fail "No mods are currently available for ${gamename}." + fn_print_fail_nl "No mods are currently available for ${gamename}." fn_script_log_info "No mods are currently available for ${gamename}." core_exit.sh fi From 688809a92d47441c4ea0588d8b977a935da7992b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 20:04:22 +0000 Subject: [PATCH 632/729] Improvements to boserver --- lgsm/functions/info_config.sh | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 90c144d80..9bc0b7e80 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -562,17 +562,14 @@ fn_info_config_ballistic_overkill(){ queryport="${zero}" maxplayers="${unavailable}" gamemode="${unavailable}" - gameworld="${unavailable}" else - servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*ServerName="//' | cut -f1 -d"\"") + serverpassword=$(grep "Password" "${servercfgfullpath}" | sed 's/^.*Password="//' | cut -f1 -d"\"") port=$(grep "ServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') queryport=$((port + 1)) maxplayers=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') - gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - + gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*GameMode="//' | cut -f1 -d"\"") # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} @@ -580,7 +577,6 @@ fn_info_config_ballistic_overkill(){ queryport=${queryport:-"0"} maxplayers=${maxplayers:-"NOT SET"} gamemode=${gamemode:-"NOT SET"} - gameworld=${gameworld:-"NOT SET"} fi } From 0513f60794499ccc359b0d6981330db4e008805b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 20:09:06 +0000 Subject: [PATCH 633/729] filter # --- lgsm/functions/info_config.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 9bc0b7e80..1ba5752c1 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -563,13 +563,13 @@ fn_info_config_ballistic_overkill(){ maxplayers="${unavailable}" gamemode="${unavailable}" else - servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*ServerName="//' | cut -f1 -d"\"") - serverpassword=$(grep "Password" "${servercfgfullpath}" | sed 's/^.*Password="//' | cut -f1 -d"\"") + servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*ServerName="//' -e '/^#/d' | cut -f1 -d"\"") + serverpassword=$(grep "Password" "${servercfgfullpath}" | sed 's/^.*Password="//' -e '/^#/d' | cut -f1 -d"\"") port=$(grep "ServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') queryport=$((port + 1)) maxplayers=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') - gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*GameMode="//' | cut -f1 -d"\"") + gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*GameMode="//' -e '/^#/d' | cut -f1 -d"\"") # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} From 57b319d29eb61aeaf163b5c302978e12b949bcea Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 20:17:49 +0000 Subject: [PATCH 634/729] boserver fixes --- lgsm/functions/info_config.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 1ba5752c1..9384f5aa1 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -561,22 +561,19 @@ fn_info_config_ballistic_overkill(){ port="${zero}" queryport="${zero}" maxplayers="${unavailable}" - gamemode="${unavailable}" else - servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*ServerName="//' -e '/^#/d' | cut -f1 -d"\"") - serverpassword=$(grep "Password" "${servercfgfullpath}" | sed 's/^.*Password="//' -e '/^#/d' | cut -f1 -d"\"") - port=$(grep "ServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') + servername=$(grep "ServerName=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + serverpassword=$(grep "Password=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') + port=$(grep "ServerPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') queryport=$((port + 1)) + maxplayers=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') - maxplayers=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') - gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*GameMode="//' -e '/^#/d' | cut -f1 -d"\"") # Not Set servername=${servername:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} port=${port:-"0"} queryport=${queryport:-"0"} maxplayers=${maxplayers:-"NOT SET"} - gamemode=${gamemode:-"NOT SET"} fi } From a8ad9d5c74f0cba8eccf38ad7f244e661ae3285c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 20:24:48 +0000 Subject: [PATCH 635/729] amended config name --- BallisticOverkill/boserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BallisticOverkill/boserver b/BallisticOverkill/boserver index c17e02b6e..7061a4e74 100755 --- a/BallisticOverkill/boserver +++ b/BallisticOverkill/boserver @@ -100,7 +100,7 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}" executable="./BODS.x86" -servercfg="config.txt" +servercfg="${servicename}.txt" servercfgdefault="${servercfg}" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" From f1bb0dca1c98aac3064f67713cd4c0ec245a5346 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 20:24:58 +0000 Subject: [PATCH 636/729] Added Ballistic Overkill config --- lgsm/functions/install_config.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 44a251d3a..210897fb8 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -144,6 +144,12 @@ elif [ "${gamename}" == "ARMA 3" ]; then fn_fetch_default_config fn_default_config_remote fn_set_config_vars +elif [ "${gamename}" == "Ballistic Overkill" ]; then + gamedirname="BladeSymphony" + array_configs+=( config.txt ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${gamename}" == "Battlefield: 1942" ]; then gamedirname="Battlefield1942" array_configs+=( serversettings.con ) From 7a74ec1e7a469530e7da7c15f41276674f08e1a5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 20:29:37 +0000 Subject: [PATCH 637/729] corrected gamedirname for bo --- lgsm/functions/install_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 210897fb8..ca56c2127 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -145,7 +145,7 @@ elif [ "${gamename}" == "ARMA 3" ]; then fn_default_config_remote fn_set_config_vars elif [ "${gamename}" == "Ballistic Overkill" ]; then - gamedirname="BladeSymphony" + gamedirname="BallisticOverkill" array_configs+=( config.txt ) fn_fetch_default_config fn_default_config_remote From e80b46bd16ff57a0f22af7921872b80d3bb92147 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 20:48:28 +0000 Subject: [PATCH 638/729] removed . --- lgsm/functions/check_steamcmd.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 25b73a70b..0908cdcfa 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -18,17 +18,17 @@ fn_install_steamcmd(){ fn_check_steamcmd_user(){ # Checks if steamuser is setup. if [ "${steamuser}" == "username" ]; then - fn_print_fail_nl "Steam login not set. Update steamuser in ${selfname}." + fn_print_fail_nl "Steam login not set. Update steamuser in ${selfname}" echo " * Change steamuser=\"username\" to a valid steam login." if [ -d "${scriptlogdir}" ]; then - fn_script_log_fatal "Steam login not set. Update steamuser in ${selfname}." + fn_script_log_fatal "Steam login not set. Update steamuser in ${selfname}" fi core_exit.sh fi # Anonymous user is set if steamuser is missing if [ -z "${steamuser}" ]; then if [ -d "${scriptlogdir}" ]; then - fn_script_log_info "Using anonymous Steam login." + fn_script_log_info "Using anonymous Steam login" fi steamuser="anonymous" steampass='' From 798d5c196427469acc2ca2d6f18a3de3c4a2b388 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 21:07:58 +0000 Subject: [PATCH 639/729] corrected defaultservercfg --- BallisticOverkill/boserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BallisticOverkill/boserver b/BallisticOverkill/boserver index 7061a4e74..28c39c1d6 100755 --- a/BallisticOverkill/boserver +++ b/BallisticOverkill/boserver @@ -101,7 +101,7 @@ systemdir="${filesdir}" executabledir="${filesdir}" executable="./BODS.x86" servercfg="${servicename}.txt" -servercfgdefault="${servercfg}" +servercfgdefault="config.txt" servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" From 59d4310ea803ce2967bc3bc586a5a6935a1dd3eb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 21:20:22 +0000 Subject: [PATCH 640/729] added ballistic overkill --- lgsm/functions/command_details.sh | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index e34f65702..f37f96458 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -355,7 +355,7 @@ fn_details_ark(){ echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" # Don't do arithmetics if ever the port wasn't a numeric value - if [ "${port}" -eq "${port}" ]; then + if [ "${port}" -eq "${port}" ]; then echo -e "> RAW\tINBOUND\t$((port+1))\tudp" fi echo -e "> Query\tINBOUND\t${queryport}\tudp" @@ -363,6 +363,16 @@ fn_details_ark(){ } | column -s $'\t' -t } +fn_details_ballisticoverkill(){ + echo -e "netstat -atunp | grep BODS.x86" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/RCON\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" + } | column -s $'\t' -t +} + fn_details_avalanche(){ echo -e "netstat -atunp | grep Jcmp-Server" echo -e "" @@ -539,7 +549,7 @@ fn_details_realvirtuality(){ echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\tudp" # Don't do arithmetics if ever the port wasn't a numeric value - if [ "${port}" -eq "${port}" ]; then + if [ "${port}" -eq "${port}" ]; then echo -e "> Steam: Query\tINBOUND\t$((port+1))\tudp" echo -e "> Steam: Master traffic\tINBOUND\t$((port+2))\tudp" echo -e "> Undocumented Port\tINBOUND\t$((port+3))\tudp" @@ -800,6 +810,8 @@ fn_display_details() { fn_details_sdtd elif [ "${gamename}" == "ARK: Survival Evolved" ]; then fn_details_ark + elif [ "${gamename}" == "Ballistic Overkill" ]; then + fn_details_ballisticoverkill elif [ "${gamename}" == "Call of Duty" ]; then fn_details_cod elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then @@ -811,7 +823,7 @@ fn_display_details() { elif [ "${gamename}" == "Call of Duty: World at War" ]; then fn_details_codwaw elif [ "${gamename}" == "Factorio" ]; then - fn_details_factorio + fn_details_factorio elif [ "${gamename}" == "Hurtworld" ]; then fn_details_hurtworld elif [ "${gamename}" == "QuakeWorld" ]; then @@ -825,7 +837,7 @@ fn_display_details() { elif [ "${gamename}" == "TeamSpeak 3" ]; then fn_details_teamspeak3 elif [ "${gamename}" == "Multi Theft Auto" ]; then - fn_details_mta + fn_details_mta elif [ "${gamename}" == "Mumble" ]; then fn_details_mumble elif [ "${gamename}" == "Rust" ]; then From 8ada4c4bf4b61ea13a5f25a8336f4afe921753c1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 21:22:02 +0000 Subject: [PATCH 641/729] added ballistic overkill --- lgsm/functions/command_details.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index f37f96458..99ed92b10 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -315,7 +315,7 @@ fn_details_ports(){ parmslocation="${red}UNKNOWN${default}" # engines/games that require editing in the config file - local ports_edit_array=( "avalanche" "dontstarve" "idtech2" "idtech3" "idtech3_ql" "lwjgl2" "projectzomboid" "quake" "refractor" "realvirtuality" "renderware" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" ) + local ports_edit_array=( "avalanche" "Ballistic Overkill" "dontstarve" "idtech2" "idtech3" "idtech3_ql" "lwjgl2" "projectzomboid" "quake" "refractor" "realvirtuality" "renderware" "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 From 11696acf5af0275847ed51f03f599ce9063b03ea Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 22:13:22 +0000 Subject: [PATCH 642/729] Renamed LGSM to LinuxGSM For consistant branding. --- CONTRIBUTING.md | 8 ++++---- Hurtworld/hwserver | 2 +- images/logo/README.md | 2 +- lgsm/functions/alert.sh | 12 ++++++------ lgsm/functions/alert_email.sh | 2 +- lgsm/functions/alert_pushbullet.sh | 2 +- lgsm/functions/check.sh | 2 +- lgsm/functions/check_config.sh | 2 +- lgsm/functions/check_deps.sh | 8 ++++---- lgsm/functions/check_executable.sh | 2 +- lgsm/functions/check_glibc.sh | 2 +- lgsm/functions/check_ip.sh | 2 +- lgsm/functions/check_logs.sh | 2 +- lgsm/functions/check_permissions.sh | 2 +- lgsm/functions/check_root.sh | 2 +- lgsm/functions/check_status.sh | 4 ++-- lgsm/functions/check_steamcmd.sh | 2 +- lgsm/functions/check_system_dir.sh | 2 +- lgsm/functions/check_system_requirements.sh | 2 +- lgsm/functions/check_tmuxception.sh | 6 +++--- lgsm/functions/command_backup.sh | 2 +- lgsm/functions/command_console.sh | 2 +- lgsm/functions/command_debug.sh | 2 +- lgsm/functions/command_details.sh | 8 ++++---- lgsm/functions/command_dev_debug.sh | 2 +- lgsm/functions/command_dev_detect_deps.sh | 2 +- lgsm/functions/command_fastdl.sh | 2 +- lgsm/functions/command_install.sh | 2 +- lgsm/functions/command_install_resources_mta.sh | 2 +- lgsm/functions/command_mods_install.sh | 2 +- lgsm/functions/command_mods_remove.sh | 2 +- lgsm/functions/command_mods_update.sh | 2 +- lgsm/functions/command_monitor.sh | 2 +- lgsm/functions/command_postdetails.sh | 2 +- lgsm/functions/command_restart.sh | 2 +- lgsm/functions/command_start.sh | 2 +- lgsm/functions/command_stop.sh | 2 +- lgsm/functions/command_test_alert.sh | 2 +- lgsm/functions/command_ts3_server_pass.sh | 2 +- lgsm/functions/command_update.sh | 2 +- lgsm/functions/command_update_functions.sh | 6 +++--- lgsm/functions/command_validate.sh | 2 +- lgsm/functions/command_wipe.sh | 4 ++-- lgsm/functions/compress_unreal2_maps.sh | 2 +- lgsm/functions/compress_ut99_maps.sh | 2 +- lgsm/functions/core_dl.sh | 4 ++-- lgsm/functions/core_exit.sh | 4 ++-- lgsm/functions/core_functions.sh | 2 +- lgsm/functions/core_getopt.sh | 2 +- lgsm/functions/core_messages.sh | 2 +- lgsm/functions/core_trap.sh | 2 +- lgsm/functions/fix.sh | 2 +- lgsm/functions/fix_arma3.sh | 2 +- lgsm/functions/fix_coduo.sh | 2 +- lgsm/functions/fix_csgo.sh | 2 +- lgsm/functions/fix_dst.sh | 2 +- lgsm/functions/fix_ges.sh | 2 +- lgsm/functions/fix_glibc.sh | 2 +- lgsm/functions/fix_ins.sh | 2 +- lgsm/functions/fix_kf.sh | 2 +- lgsm/functions/fix_mta.sh | 2 +- lgsm/functions/fix_ro.sh | 2 +- lgsm/functions/fix_rust.sh | 2 +- lgsm/functions/fix_steamcmd.sh | 2 +- lgsm/functions/fix_ut.sh | 2 +- lgsm/functions/fix_ut2k4.sh | 2 +- lgsm/functions/fn_functions | 2 +- lgsm/functions/fn_getopt | 2 +- lgsm/functions/fn_update_functions | 2 +- lgsm/functions/info_config.sh | 4 ++-- lgsm/functions/info_distro.sh | 8 ++++---- lgsm/functions/info_glibc.sh | 2 +- lgsm/functions/info_parms.sh | 2 +- lgsm/functions/install_complete.sh | 2 +- lgsm/functions/install_config.sh | 2 +- lgsm/functions/install_dst_token.sh | 4 ++-- lgsm/functions/install_factorio_save.sh | 2 +- lgsm/functions/install_gslt.sh | 2 +- lgsm/functions/install_header.sh | 2 +- lgsm/functions/install_logs.sh | 2 +- lgsm/functions/install_minecraft_eula.sh | 2 +- lgsm/functions/install_mta_resources.sh | 2 +- lgsm/functions/install_retry.sh | 2 +- lgsm/functions/install_server_dir.sh | 2 +- lgsm/functions/install_server_files.sh | 2 +- lgsm/functions/install_steamcmd.sh | 2 +- lgsm/functions/install_ts3db.sh | 2 +- lgsm/functions/install_unreal_tournament_eula.sh | 2 +- lgsm/functions/install_ut2k4_key.sh | 2 +- lgsm/functions/logs.sh | 2 +- lgsm/functions/mods_core.sh | 2 +- lgsm/functions/mods_list.sh | 6 +++--- lgsm/functions/monitor_gsquery.sh | 2 +- lgsm/functions/update_factorio.sh | 2 +- lgsm/functions/update_minecraft.sh | 2 +- lgsm/functions/update_mta.sh | 2 +- lgsm/functions/update_mumble.sh | 2 +- lgsm/functions/update_steamcmd.sh | 2 +- lgsm/functions/update_ts3.sh | 2 +- 99 files changed, 128 insertions(+), 128 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a90acec99..fbbbb0430 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,11 +9,11 @@ Before working on a project we recommend that you create a issue in regards to t Here are some important resources: * [Issues Page](https://github.com/GameServerManagers/LinuxGSM/issues) provides a list of areas that could use some work, - * [Developing LGSM](https://github.com/GameServerManagers/LinuxGSM/wiki/Developing-LGSM) gives a detailed guide on developing LGSM, - * [LGSM Exit Codes](https://github.com/GameServerManagers/LinuxGSM/wiki/LGSM-Exit-Codes) describes and gives an explanation for exit codes, + * [Developing LinuxGSM](https://github.com/GameServerManagers/LinuxGSM/wiki/Developing-LGSM) gives a detailed guide on developing LGSM, + * [LinuxGSM Exit Codes](https://github.com/GameServerManagers/LinuxGSM/wiki/LGSM-Exit-Codes) describes and gives an explanation for exit codes, * [gsquery](https://github.com/GameServerManagers/LinuxGSM/wiki/gsquery.py) describes the uses of the gsquery.py file, and * [Branching](https://github.com/GameServerManagers/LinuxGSM/wiki/Branching) is our final guide to submitting changes. - + ## Testing Please make sure all the code you write is working properly **before** you create a pull request. Information on debugging can be found in the following document: @@ -27,7 +27,7 @@ Please send a [GitHub Pull Request to LinuxGSM](https://github.com/GameServerMan Always write a clear log message for your commits. One-line messages are fine for small changes, but bigger changes should look like this: $ git commit -m "A brief summary of the commit - > + > > A paragraph describing what changed and its impact." This will help us in understanding your code and determining where problems may arise. diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 273062307..2e1f7e45f 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -23,7 +23,7 @@ version="170212" #### Server Settings #### ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters -servername="Hurtworld LGSM Server" +servername="Hurtworld LinuxGSM Server" ip="0.0.0.0" port="12871" queryport="12881" diff --git a/images/logo/README.md b/images/logo/README.md index ef9c9c3f7..4c3b9e790 100644 --- a/images/logo/README.md +++ b/images/logo/README.md @@ -1,3 +1,3 @@ -# LGSM - Official Logos +# LinuxGSM - Official Logos For Reference the original design can be found here. http://twolofbees.com/artwork.php?iid=870 \ No newline at end of file diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 9cef86e95..fb914a42f 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM alert.sh function +# LinuxGSM alert.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Overall function for managing alerts. @@ -9,25 +9,25 @@ local commandaction="Alert" fn_alert_test(){ fn_script_log_info "Sending test alert" - alertsubject="LGSM - Test Alert - ${servername}" - alertbody="LGSM test alert, how you read?" + alertsubject="LinuxGSM - Test Alert - ${servername}" + alertbody="LinuxGSM test alert, how you read?" } fn_alert_restart(){ fn_script_log_info "Sending restart alert: ${executable} process not running" - alertsubject="LGSM - Restarted - ${servername}" + alertsubject="LinuxGSM - Restarted - ${servername}" alertbody="${servicename} ${executable} process not running" } fn_alert_restart_query(){ fn_script_log_info "Sending restart alert: ${gsquerycmd}" - alertsubject="LGSM - Restarted - ${servername}" + alertsubject="LinuxGSM - Restarted - ${servername}" alertbody="gsquery.py failed to query: ${gsquerycmd}" } fn_alert_update(){ fn_script_log_info "Sending update alert" - alertsubject="LGSM - Updated - ${servername}" + alertsubject="LinuxGSM - Updated - ${servername}" alertbody="${servicename} received update" } diff --git a/lgsm/functions/alert_email.sh b/lgsm/functions/alert_email.sh index 6b440070c..a49dda347 100644 --- a/lgsm/functions/alert_email.sh +++ b/lgsm/functions/alert_email.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM alert_email.sh function +# LinuxGSM alert_email.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Sends email alert including server details and logs. diff --git a/lgsm/functions/alert_pushbullet.sh b/lgsm/functions/alert_pushbullet.sh index aecf3d875..05276b010 100644 --- a/lgsm/functions/alert_pushbullet.sh +++ b/lgsm/functions/alert_pushbullet.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM alert_pushbullet.sh function +# LinuxGSM alert_pushbullet.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Sends Pushbullet alert including the server status. diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index b48edf27c..6d6c53101 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check.sh function +# LinuxGSM check.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Overall function for managing checks. diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh index 72ea95c5c..7b1ff92cf 100644 --- a/lgsm/functions/check_config.sh +++ b/lgsm/functions/check_config.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_config.sh function +# LinuxGSM check_config.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Checks if the server config is missing and warns the user if needed. diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index ea16e4b19..a159f858c 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -1,8 +1,8 @@ #!/bin/bash -# LGSM check_deps.sh function +# LinuxGSM check_deps.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -# Description: Checks if required dependencies are installed for LGSM. +# Description: Checks if required dependencies are installed for LinuxGSM. local commandname="CHECK" @@ -144,7 +144,7 @@ if [ -n "$(command -v dpkg-query)" ]; then # Generate array of missing deps array_deps_missing=() - # LGSM requirements + # LinuxGSM requirements array_deps_required=( curl wget ca-certificates file bsdmainutils util-linux python bzip2 gzip unzip ) # All servers except ts3 require tmux @@ -223,7 +223,7 @@ elif [ -n "$(command -v yum)" ]; then # Generate array of missing deps array_deps_missing=() - # LGSM requirements + # LinuxGSM requirements if [ "${distroversion}" == "6" ]; then array_deps_required=( curl wget util-linux-ng python file gzip bzip2 unzip ) else diff --git a/lgsm/functions/check_executable.sh b/lgsm/functions/check_executable.sh index 94e517cb5..14ccdb060 100644 --- a/lgsm/functions/check_executable.sh +++ b/lgsm/functions/check_executable.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_executable.sh function +# LinuxGSM check_executable.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Checks if executable exists. diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index a5e5c95a0..f470589ab 100644 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_glibc.sh function +# LinuxGSM check_glibc.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Checks if the server has the correct Glibc version or a fix available. diff --git a/lgsm/functions/check_ip.sh b/lgsm/functions/check_ip.sh index 8141c534e..5ae639237 100644 --- a/lgsm/functions/check_ip.sh +++ b/lgsm/functions/check_ip.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_ip.sh function +# LinuxGSM check_ip.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Automatically identifies the server interface IP. diff --git a/lgsm/functions/check_logs.sh b/lgsm/functions/check_logs.sh index 5bd69bb0f..5e9da586c 100644 --- a/lgsm/functions/check_logs.sh +++ b/lgsm/functions/check_logs.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_logs.sh function +# LinuxGSM check_logs.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Checks if log files exist. diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index defde5771..840cc9864 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_permissions.sh +# LinuxGSM check_permissions.sh # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/check_root.sh b/lgsm/functions/check_root.sh index 70067f5e5..a71c993d2 100644 --- a/lgsm/functions/check_root.sh +++ b/lgsm/functions/check_root.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_root.sh function +# LinuxGSM check_root.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Checks if the user tried to run the script as root. diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh index 4a8a381b4..036bf7269 100644 --- a/lgsm/functions/check_status.sh +++ b/lgsm/functions/check_status.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_status.sh function +# LinuxGSM check_status.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com @@ -19,7 +19,7 @@ if [ "${gamename}" == "TeamSpeak 3" ]; then ts3error="${status}" status=0 fi - + elif [ "${gamename}" == "Mumble" ]; then # Get config info info_config.sh diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 0908cdcfa..ddfcb82d4 100644 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_steamcmd.sh function +# LinuxGSM check_steamcmd.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Checks if SteamCMD is installed correctly. diff --git a/lgsm/functions/check_system_dir.sh b/lgsm/functions/check_system_dir.sh index d06cbba05..0e5c39718 100644 --- a/lgsm/functions/check_system_dir.sh +++ b/lgsm/functions/check_system_dir.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_system_dir.sh function +# LinuxGSM check_system_dir.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Checks if systemdir is accessible. diff --git a/lgsm/functions/check_system_requirements.sh b/lgsm/functions/check_system_requirements.sh index 92766785f..56d1ffa3d 100644 --- a/lgsm/functions/check_system_requirements.sh +++ b/lgsm/functions/check_system_requirements.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_system_requirements.sh +# LinuxGSM check_system_requirements.sh # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/check_tmuxception.sh b/lgsm/functions/check_tmuxception.sh index 5b906f53e..53f6febd5 100644 --- a/lgsm/functions/check_tmuxception.sh +++ b/lgsm/functions/check_tmuxception.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM check_config.sh function +# LinuxGSM check_config.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com @@ -11,7 +11,7 @@ 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." + fn_print_information_nl "LinuxGSM 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 @@ -21,7 +21,7 @@ fn_check_is_in_screen(){ if [ -n "${STY}" ];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." + fn_print_information_nl "LinuxGSM 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 diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index b4bff70b0..2ef072b0a 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_backup.sh function +# LinuxGSM command_backup.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index ee9f13b6e..bd712c51e 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_console.sh function +# LinuxGSM command_console.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Gives access to the server tmux console. diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 25e855c94..32cd88e9a 100644 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_debug.sh function +# LinuxGSM command_debug.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Runs the server without tmux and directly from the terminal. diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index bf843de2a..debf5442d 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_details.sh function +# LinuxGSM command_details.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com @@ -70,7 +70,7 @@ fn_details_disk(){ # Total: 15G # Used: 8.4G # Available: 5.7G - # LGSM Total: 1G + # LinuxGSM Total: 1G # Serverfiles: 961M # Backups: 2G @@ -82,7 +82,7 @@ fn_details_disk(){ echo -e "${blue}Total:\t${default}${totalspace}" echo -e "${blue}Used:\t${default}${usedspace}" echo -e "${blue}Available:\t${default}${availspace}" - echo -e "${blue}LGSM Total:\t${default}${rootdirdu}" + echo -e "${blue}LinuxGSM Total:\t${default}${rootdirdu}" echo -e "${blue}Serverfiles:\t${default}${filesdirdu}" if [ -d "${backupdir}" ]; then echo -e "${blue}Backups:\t${default}${backupdirdu}" @@ -692,7 +692,7 @@ fn_details_towerunite(){ echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" echo -e "> Game\tINBOUND\t${port}\ttcp" # Don't do arithmetics if ever the port wasn't a numeric value - if [ "${port}" -eq "${port}" ]; then + if [ "${port}" -eq "${port}" ]; then echo -e "> Steam\tINBOUND\t$((port+1))\tudp" fi echo -e "> Query\tINBOUND\t${queryport}\tudp" diff --git a/lgsm/functions/command_dev_debug.sh b/lgsm/functions/command_dev_debug.sh index e17a8a719..98d785994 100644 --- a/lgsm/functions/command_dev_debug.sh +++ b/lgsm/functions/command_dev_debug.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_dev_debug.sh function +# LinuxGSM command_dev_debug.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Dev only: Enables debugging log to be saved to dev-debug.log. diff --git a/lgsm/functions/command_dev_detect_deps.sh b/lgsm/functions/command_dev_detect_deps.sh index 01c96ff47..f709a4603 100644 --- a/lgsm/functions/command_dev_detect_deps.sh +++ b/lgsm/functions/command_dev_detect_deps.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_dev_detect_deps.sh function +# LinuxGSM command_dev_detect_deps.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Detects dependencies the server binary requires. diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index c66834b98..8aaab29a1 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_fastdl.sh function +# LinuxGSM command_fastdl.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index da3f516d9..7bbc40f42 100644 --- a/lgsm/functions/command_install.sh +++ b/lgsm/functions/command_install.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_install.sh function +# LinuxGSM command_install.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_install_resources_mta.sh b/lgsm/functions/command_install_resources_mta.sh index 678e412ad..9dbcdb453 100644 --- a/lgsm/functions/command_install_resources_mta.sh +++ b/lgsm/functions/command_install_resources_mta.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_install_resources_mta.sh function +# LinuxGSM command_install_resources_mta.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Installs the default resources for Multi Theft Auto. diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh index 4af7f8913..b47a3d752 100644 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_mods_install.sh function +# LinuxGSM command_mods_install.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index d63a00101..3b2c8a291 100644 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_mods_uninstall.sh function +# LinuxGSM command_mods_uninstall.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index e93303016..81ac90fed 100644 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_mods_update.sh function +# LinuxGSM command_mods_update.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 7f247795f..7bd259e30 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_monitor.sh function +# LinuxGSM command_monitor.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_postdetails.sh b/lgsm/functions/command_postdetails.sh index 566d5c323..b4169023a 100644 --- a/lgsm/functions/command_postdetails.sh +++ b/lgsm/functions/command_postdetails.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_postdetails.sh function +# LinuxGSM command_postdetails.sh function # Author: CedarLUG # Contributor: CedarLUG # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_restart.sh b/lgsm/functions/command_restart.sh index eacebaaea..e0abc88ed 100644 --- a/lgsm/functions/command_restart.sh +++ b/lgsm/functions/command_restart.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_restart.sh function +# LinuxGSM command_restart.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Restarts the server. diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 30bbfccc8..39dc363cf 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_start.sh function +# LinuxGSM command_start.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 6ac9c188e..8483e4669 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_stop.sh function +# LinuxGSM command_stop.sh function # Author: Daniel Gibbs # Contributors: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh index 2f9749200..a21deace5 100644 --- a/lgsm/functions/command_test_alert.sh +++ b/lgsm/functions/command_test_alert.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_test_alert.sh function +# LinuxGSM command_test_alert.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Sends a test alert. diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index 1a9896889..193314bda 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_ts3_server_pass.sh function +# LinuxGSM command_ts3_server_pass.sh function # Author: Daniel Gibbs # Contributor : UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index 3b0176ca4..bc76a29b2 100644 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_update.sh function +# LinuxGSM command_update.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Handles updating of servers. diff --git a/lgsm/functions/command_update_functions.sh b/lgsm/functions/command_update_functions.sh index e3d96d378..34dbb8115 100644 --- a/lgsm/functions/command_update_functions.sh +++ b/lgsm/functions/command_update_functions.sh @@ -1,11 +1,11 @@ #!/bin/bash -# LGSM command_update_functions.sh function +# LinuxGSM command_update_functions.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Deletes the functions dir to allow re-downloading of functions from GitHub. -local commandname="UPDATE LGSM" -local commandaction="Update LGSM" +local commandname="UPDATE LinuxGSM" +local commandaction="Update LinuxGSM" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_print_dots "Updating functions" diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 3627acdb6..eb6d13c15 100644 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_validate.sh function +# LinuxGSM command_validate.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Runs a server validation. diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 440c8080e..8b204614f 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_backup.sh function +# LinuxGSM command_backup.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com @@ -116,7 +116,7 @@ if [ "${gamename}" == "Rust" ]; then fn_script_log_info "User selects to erase any user, storage, log and map data from ${serveridentitydir}" sleep 1 fn_wipe_server_process - else + else fn_print_information_nl "No data to wipe was found" fn_script_log_info "No data to wipe was found." sleep 1 diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh index 67d3621e2..e0c6b4eb3 100644 --- a/lgsm/functions/compress_unreal2_maps.sh +++ b/lgsm/functions/compress_unreal2_maps.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM compress_unreal2_maps.sh function +# LinuxGSM compress_unreal2_maps.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Compresses unreal maps. diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh index 3ef6e140e..a834e3e5b 100644 --- a/lgsm/functions/compress_ut99_maps.sh +++ b/lgsm/functions/compress_ut99_maps.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM compress_ut99_maps.sh function +# LinuxGSM compress_ut99_maps.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Compresses unreal maps. diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index aad8f1963..d6c9b58ca 100644 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -1,9 +1,9 @@ #!/bin/bash -# LGSM core_dl.sh function +# LinuxGSM core_dl.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -# Description: Deals with all downloads for LGSM. +# Description: Deals with all downloads for LinuxGSM. # fileurl: The URL of the file: http://example.com/dl/File.tar.bz2 # filedir: location the file is to be saved: /home/server/lgsm/tmp diff --git a/lgsm/functions/core_exit.sh b/lgsm/functions/core_exit.sh index d5f17dfe5..02b471c78 100644 --- a/lgsm/functions/core_exit.sh +++ b/lgsm/functions/core_exit.sh @@ -1,8 +1,8 @@ #!/bin/bash -# LGSM core_exit.sh function +# LinuxGSM core_exit.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com -# Description: Handles exiting of LGSM by running and reporting an exit code. +# Description: Handles exiting of LinuxGSM by running and reporting an exit code. fn_exit_dev_debug(){ if [ -f "${rootdir}/.dev-debug" ]; then diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index c0be0b856..1738928ca 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM core_functions.sh function +# LinuxGSM core_functions.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index db531ccb6..bcecc6c2d 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM core_getopt.sh function +# LinuxGSM core_getopt.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: getopt arguments. diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 540729af7..6a8f2f357 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM core_messages.sh function +# LinuxGSM core_messages.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Defines on-screen messages such as [ OK ] and how script logs look. diff --git a/lgsm/functions/core_trap.sh b/lgsm/functions/core_trap.sh index 46615cfe5..253c8b4d2 100644 --- a/lgsm/functions/core_trap.sh +++ b/lgsm/functions/core_trap.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM core_trap.sh function +# LinuxGSM core_trap.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Handles CTRL-C trap to give an exit code. diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index 5bac281a3..250709cca 100644 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix.sh function +# LinuxGSM fix.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Overall function for managing fixes. diff --git a/lgsm/functions/fix_arma3.sh b/lgsm/functions/fix_arma3.sh index e1bb4abcc..6c65bf95f 100644 --- a/lgsm/functions/fix_arma3.sh +++ b/lgsm/functions/fix_arma3.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_arma3.sh function +# LinuxGSM fix_arma3.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves an issue with ARMA3. diff --git a/lgsm/functions/fix_coduo.sh b/lgsm/functions/fix_coduo.sh index 09835eadb..a092acaba 100644 --- a/lgsm/functions/fix_coduo.sh +++ b/lgsm/functions/fix_coduo.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_coduo.sh function +# LinuxGSM fix_coduo.sh function # Author: Alexander Hurd # Website: https://gameservermanagers.com # Description: Fixes for Call of Duty: United Offensive diff --git a/lgsm/functions/fix_csgo.sh b/lgsm/functions/fix_csgo.sh index 38d169532..305c0d06b 100644 --- a/lgsm/functions/fix_csgo.sh +++ b/lgsm/functions/fix_csgo.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_csgo.sh function +# LinuxGSM fix_csgo.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves various issues with CS:GO. diff --git a/lgsm/functions/fix_dst.sh b/lgsm/functions/fix_dst.sh index fea58b67e..5a631a52e 100644 --- a/lgsm/functions/fix_dst.sh +++ b/lgsm/functions/fix_dst.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_dst.sh function +# LinuxGSM fix_dst.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves various issues with Don't Starve Together. diff --git a/lgsm/functions/fix_ges.sh b/lgsm/functions/fix_ges.sh index c8ee7ad5d..f97ca767c 100644 --- a/lgsm/functions/fix_ges.sh +++ b/lgsm/functions/fix_ges.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_ges.sh function +# LinuxGSM fix_ges.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves various issues with GoldenEye: Source. diff --git a/lgsm/functions/fix_glibc.sh b/lgsm/functions/fix_glibc.sh index d03b2c41e..a36b568ac 100644 --- a/lgsm/functions/fix_glibc.sh +++ b/lgsm/functions/fix_glibc.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_glibc.sh function +# LinuxGSM fix_glibc.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Downloads required Glibc files and applies the Glibc fix if required. diff --git a/lgsm/functions/fix_ins.sh b/lgsm/functions/fix_ins.sh index 2fab8f8ae..c132173b0 100644 --- a/lgsm/functions/fix_ins.sh +++ b/lgsm/functions/fix_ins.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_ins.sh function +# LinuxGSM fix_ins.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves various issues with Insurgency. diff --git a/lgsm/functions/fix_kf.sh b/lgsm/functions/fix_kf.sh index c08a34341..a70f8ce86 100644 --- a/lgsm/functions/fix_kf.sh +++ b/lgsm/functions/fix_kf.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_kf.sh function +# LinuxGSM fix_kf.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves various issues with Killing Floor. diff --git a/lgsm/functions/fix_mta.sh b/lgsm/functions/fix_mta.sh index 7347201d9..ebefc79d2 100644 --- a/lgsm/functions/fix_mta.sh +++ b/lgsm/functions/fix_mta.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_mta.sh function +# LinuxGSM fix_mta.sh function # Author: Daniel Gibbs # Contributor: ChaosMTA # Website: https://gameservermanagers.com diff --git a/lgsm/functions/fix_ro.sh b/lgsm/functions/fix_ro.sh index ee28aaf4a..3498ee9c8 100644 --- a/lgsm/functions/fix_ro.sh +++ b/lgsm/functions/fix_ro.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_ro.sh function +# LinuxGSM fix_ro.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves various issues with Red Orchestra. diff --git a/lgsm/functions/fix_rust.sh b/lgsm/functions/fix_rust.sh index ec0b125d4..13f7fbdb0 100644 --- a/lgsm/functions/fix_rust.sh +++ b/lgsm/functions/fix_rust.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_rust.sh function +# LinuxGSM fix_rust.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves startup issue with Rust diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh index 444409cfe..79bf5acce 100644 --- a/lgsm/functions/fix_steamcmd.sh +++ b/lgsm/functions/fix_steamcmd.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_steamcmd.sh function +# LinuxGSM fix_steamcmd.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves various issues related to SteamCMD. diff --git a/lgsm/functions/fix_ut.sh b/lgsm/functions/fix_ut.sh index 74233406f..24dad6ee6 100644 --- a/lgsm/functions/fix_ut.sh +++ b/lgsm/functions/fix_ut.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_ut.sh function +# LinuxGSM fix_ut.sh function # Author: Alexander Hurd # Website: https://gameservermanagers.com # Description: Resolves various issues with Unreal Tournament. diff --git a/lgsm/functions/fix_ut2k4.sh b/lgsm/functions/fix_ut2k4.sh index 85b2334a7..913ef62e9 100644 --- a/lgsm/functions/fix_ut2k4.sh +++ b/lgsm/functions/fix_ut2k4.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fix_ut2k4.sh function +# LinuxGSM fix_ut2k4.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Resolves various issues with Unreal Tournament 2004. diff --git a/lgsm/functions/fn_functions b/lgsm/functions/fn_functions index 758af3dbc..ca45dd740 100644 --- a/lgsm/functions/fn_functions +++ b/lgsm/functions/fn_functions @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fn_functions function +# LinuxGSM fn_functions function # Author: Daniel Gibbs # Website: https://gameservermanagers.com lgsm_version="211016" diff --git a/lgsm/functions/fn_getopt b/lgsm/functions/fn_getopt index 0302cf1d5..e15a29201 100644 --- a/lgsm/functions/fn_getopt +++ b/lgsm/functions/fn_getopt @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fn_getopt function +# LinuxGSM fn_getopt function # Author: Daniel Gibbs # Website: https://gameservermanagers.com lgsm_version="211016" diff --git a/lgsm/functions/fn_update_functions b/lgsm/functions/fn_update_functions index a424d3352..7dbde6694 100644 --- a/lgsm/functions/fn_update_functions +++ b/lgsm/functions/fn_update_functions @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM fn_update_functions function +# LinuxGSM fn_update_functions function # Author: Daniel Gibbs # Website: https://gameservermanagers.com lgsm_version="211016" diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 5c5fdb98e..9ce3ba242 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM info_config.sh function +# LinuxGSM info_config.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com @@ -521,7 +521,7 @@ fn_info_config_towerunite(){ else servername=$(grep "ServerTitle" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/ServerTitle//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - + # Not Set servername=${servername:-"NOT SET"} maxplayers=${maxplayers:-"0"} diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index 16973cfc1..d8d733d64 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM info_distro.sh function +# LinuxGSM info_distro.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Variables providing useful info on the Operating System such as disk and performace info. @@ -88,19 +88,19 @@ totalspace=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $2}') usedspace=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $3}') availspace=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $4}') -## LGSM used space total. +## LinuxGSM used space total. rootdirdu=$(du -sh "${rootdir}" 2> /dev/null | awk '{print $1}') if [ -z "${rootdirdu}" ]; then rootdirdu="0M" fi -## LGSM used space in serverfiles dir. +## LinuxGSM used space in serverfiles dir. filesdirdu=$(du -sh "${filesdir}" 2> /dev/null | awk '{print $1}') if [ -z "${filesdirdu}" ]; then filesdirdu="0M" fi -## LGSM used space total minus backup dir. +## LinuxGSM used space total minus backup dir. rootdirduexbackup=$(du -sh --exclude="${backupdir}" "${filesdir}" 2> /dev/null | awk '{print $1}') if [ -z "${rootdirduexbackup}" ]; then rootdirduexbackup="0M" diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index 5b821054d..ce17c0c22 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM info_glibc.sh function +# LinuxGSM info_glibc.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Stores details on servers Glibc requirements. diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index 72ef857c9..17be983fd 100644 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM info_parms.sh function +# LinuxGSM info_parms.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Gets specific details from server parameters. diff --git a/lgsm/functions/install_complete.sh b/lgsm/functions/install_complete.sh index 4a38d79b4..d194e7a58 100644 --- a/lgsm/functions/install_complete.sh +++ b/lgsm/functions/install_complete.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_complete.sh function +# LinuxGSM install_complete.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Prints installation completion message and hints. diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 806550e9b..529f87038 100644 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_config.sh function +# LinuxGSM install_config.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Creates default server configs. diff --git a/lgsm/functions/install_dst_token.sh b/lgsm/functions/install_dst_token.sh index 2e9713e71..0996e7e4e 100644 --- a/lgsm/functions/install_dst_token.sh +++ b/lgsm/functions/install_dst_token.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_dst_token.sh function +# LinuxGSM install_dst_token.sh function # Author: Daniel Gibbs & Marvin Lehmann (marvinl97) # Website: https://gameservermanagers.com # Description: Configures Don't Starve Together cluster with given token. @@ -29,7 +29,7 @@ if [ -z "${autoinstall}" ]; then * ) echo "Please answer yes or no.";; esac done - fi + fi if [ "${overwritetoken}" == "true" ]; then echo "Once you have the cluster token, enter it below" echo -n "Cluster Token: " diff --git a/lgsm/functions/install_factorio_save.sh b/lgsm/functions/install_factorio_save.sh index 353d57c20..e76e97e9f 100644 --- a/lgsm/functions/install_factorio_save.sh +++ b/lgsm/functions/install_factorio_save.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_factorio_save.sh function +# LinuxGSM install_factorio_save.sh function # Author: Kristian Polso # Website: https://gameservermanagers.com # Description: Creates the initial save file for Factorio diff --git a/lgsm/functions/install_gslt.sh b/lgsm/functions/install_gslt.sh index 1c8f25194..5f62539d7 100644 --- a/lgsm/functions/install_gslt.sh +++ b/lgsm/functions/install_gslt.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_gslt.sh function +# LinuxGSM install_gslt.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Configures GSLT. diff --git a/lgsm/functions/install_header.sh b/lgsm/functions/install_header.sh index 499d1aec9..d830a9408 100644 --- a/lgsm/functions/install_header.sh +++ b/lgsm/functions/install_header.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_header.sh function +# LinuxGSM install_header.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Prints installation header. diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index abad81329..2019fdb13 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_logs.sh function +# LinuxGSM install_logs.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Creates log directories. diff --git a/lgsm/functions/install_minecraft_eula.sh b/lgsm/functions/install_minecraft_eula.sh index 410e283b4..391c869f2 100644 --- a/lgsm/functions/install_minecraft_eula.sh +++ b/lgsm/functions/install_minecraft_eula.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_minecraft_eula.sh function +# LinuxGSM install_minecraft_eula.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Gets user to accept the EULA. diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh index f4fff4010..8156da9da 100644 --- a/lgsm/functions/install_mta_resources.sh +++ b/lgsm/functions/install_mta_resources.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_mta_resources.sh function +# LinuxGSM install_mta_resources.sh function # Author: Daniel Gibbs # Contributor: ChaosMTA # Website: https://gameservermanagers.com diff --git a/lgsm/functions/install_retry.sh b/lgsm/functions/install_retry.sh index d0ca16fef..0212968e3 100644 --- a/lgsm/functions/install_retry.sh +++ b/lgsm/functions/install_retry.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_retry.sh function +# LinuxGSM install_retry.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Asks for installation retry after failure. diff --git a/lgsm/functions/install_server_dir.sh b/lgsm/functions/install_server_dir.sh index d527b6193..d39957025 100644 --- a/lgsm/functions/install_server_dir.sh +++ b/lgsm/functions/install_server_dir.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_server_dir.sh function +# LinuxGSM install_server_dir.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Creates the server directory. diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index a988f2644..335b0c6f5 100644 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_server_files.sh function +# LinuxGSM install_server_files.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Installs server files. diff --git a/lgsm/functions/install_steamcmd.sh b/lgsm/functions/install_steamcmd.sh index 82cce59a6..26335c187 100644 --- a/lgsm/functions/install_steamcmd.sh +++ b/lgsm/functions/install_steamcmd.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_steamcmd.sh function +# LinuxGSM install_steamcmd.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Downloads SteamCMD on install. diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh index bada12c0b..1dbf16985 100644 --- a/lgsm/functions/install_ts3db.sh +++ b/lgsm/functions/install_ts3db.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_ts3db.sh function +# LinuxGSM install_ts3db.sh function # Author: Daniel Gibbs # Contributor: PhilPhonic # Website: https://gameservermanagers.com diff --git a/lgsm/functions/install_unreal_tournament_eula.sh b/lgsm/functions/install_unreal_tournament_eula.sh index b39f9b2e2..442a108ca 100644 --- a/lgsm/functions/install_unreal_tournament_eula.sh +++ b/lgsm/functions/install_unreal_tournament_eula.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_unreal_tournament_eula.sh function +# LinuxGSM install_unreal_tournament_eula.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Gets user to accept the EULA. diff --git a/lgsm/functions/install_ut2k4_key.sh b/lgsm/functions/install_ut2k4_key.sh index b091faff3..b06cc12c3 100644 --- a/lgsm/functions/install_ut2k4_key.sh +++ b/lgsm/functions/install_ut2k4_key.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM install_ut2k4_key.sh function +# LinuxGSM install_ut2k4_key.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Activates ut2k4 server with given key. diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index 32ad0deae..ebcc8636a 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM logs.sh function +# LinuxGSM logs.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 1e36285e1..620bfa921 100644 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_mods_install.sh function +# LinuxGSM command_mods_install.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index 0be15b08b..f5768efed 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -1,9 +1,9 @@ #!/bin/bash -# LGSM mods_list.sh function +# LinuxGSM mods_list.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com -# Description: Lists and defines available mods for LGSM supported servers; works along with mods_core.sh. +# Description: Lists and defines available mods for LinuxGSM supported servers; works along with mods_core.sh. # Usage: To add a mod, you need to add an array variable following the guide to set proper values; # Usage: Then add this array to the mods_global_array. # Usage: If needed, you can scrape the download URL first. @@ -43,7 +43,7 @@ modseparator="MOD" # [4] | "filename": the output filename # [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) # [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) -# [7] | "modinstalldir": the directory in which to install the mode ( use LGSM dir variables such as ${systemdir}) +# [7] | "modinstalldir": the directory in which to install the mode (use LGSM dir variables such as ${systemdir}) # [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" value to ignore the value or "NOUPDATE" to disallow updating; for files to keep upon uninstall, see fn_mod_tidy_files_list from mods_core.sh # [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value # [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value diff --git a/lgsm/functions/monitor_gsquery.sh b/lgsm/functions/monitor_gsquery.sh index 2c8b2902b..dc24aaee3 100644 --- a/lgsm/functions/monitor_gsquery.sh +++ b/lgsm/functions/monitor_gsquery.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM monitor_gsquery.sh function +# LinuxGSM monitor_gsquery.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Uses gsquery.py to query the server port. diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index c3e16d802..cbb39ef18 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM update_factorio.sh function +# LinuxGSM update_factorio.sh function # Author: Daniel Gibbs # Contributor: Kristian Polso # Website: https://gameservermanagers.com diff --git a/lgsm/functions/update_minecraft.sh b/lgsm/functions/update_minecraft.sh index 746ddfb2e..cf45946b0 100644 --- a/lgsm/functions/update_minecraft.sh +++ b/lgsm/functions/update_minecraft.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM update_minecraft.sh function +# LinuxGSM update_minecraft.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Handles updating of Minecraft servers. diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index fff189ca7..0fcd7936c 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM update_mta.sh function +# LinuxGSM update_mta.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Handles updating of Multi Theft Auto servers. diff --git a/lgsm/functions/update_mumble.sh b/lgsm/functions/update_mumble.sh index 6f5c35a88..b77cb3ac4 100644 --- a/lgsm/functions/update_mumble.sh +++ b/lgsm/functions/update_mumble.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM update_mumble.sh function +# LinuxGSM update_mumble.sh function # Author: Daniel Gibbs # Contributor: UltimateByte # Website: https://gameservermanagers.com diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 6d2b6780a..028f843ee 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM update_steamcmd.sh function +# LinuxGSM update_steamcmd.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Handles updating using SteamCMD. diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh index b5f403597..f810eb0f4 100644 --- a/lgsm/functions/update_ts3.sh +++ b/lgsm/functions/update_ts3.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LGSM command_ts3.sh function +# LinuxGSM command_ts3.sh function # Author: Daniel Gibbs # Website: https://gameservermanagers.com # Description: Handles updating of teamspeak 3 servers. From 4376a540fcb4115b35070254337f9e3d03ed863c Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 23:11:28 +0000 Subject: [PATCH 643/729] Added permissions alert an alert will go out if there is a permissions issue --- lgsm/functions/alert.sh | 14 +++++++++++--- lgsm/functions/check_permissions.sh | 4 +++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index fb914a42f..9fec83369 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -31,14 +31,22 @@ fn_alert_update(){ alertbody="${servicename} received update" } -if [ "${alert}" == "restart" ]; then +fn_alert_permissions(){ + fn_script_log_info "Sending permissions error alert" + alertsubject="LinuxGSM - Permissions Error - ${servername}" + alertbody="${servicename} has permissions issues." +} + +if [ "${alert}" == "permissions" ]; then + fn_alert_permissions +elif [ "${alert}" == "restart" ]; then fn_alert_restart elif [ "${alert}" == "restartquery" ]; then fn_alert_restart_query -elif [ "${alert}" == "update" ]; then - fn_alert_update elif [ "${alert}" == "test" ]; then fn_alert_test +elif [ "${alert}" == "update" ]; then + fn_alert_update fi if [ "${emailalert}" == "on" ]&&[ -n "${email}" ]; then diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 840cc9864..2a198d3c5 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -43,8 +43,10 @@ fn_check_ownership(){ } | column -s $'\t' -t | tee -a "${scriptlog}" echo "" - fn_print_information_nl "For more information, please see https://github.com/GameServerManagers/LinuxGSM/wiki/FAQ#-fail--starting-game-server-ownership-issues-found" + fn_print_information_nl "please see https://github.com/GameServerManagers/LinuxGSM/wiki/FAQ#-fail--starting-game-server-ownership-issues-found" fn_script_log "For more information, please see https://github.com/GameServerManagers/LinuxGSM/wiki/FAQ#-fail--starting-game-server-ownership-issues-found" + alert="permissions" + alert.sh core_exit.sh fi } From aab6dc58bbd3cc3859a47b274caeab71c06b0677 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 23:21:55 +0000 Subject: [PATCH 644/729] fixed issue preventing monitor from running and alerting check_permissions is bypassed for monitor as the monitor woudl not work at all and not alert of a server failure. The server will however fail to start with permissions issues --- lgsm/functions/check.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 6d6c53101..c8f659d2a 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -12,7 +12,10 @@ local commandname="CHECK" check_root.sh check_tmuxception.sh -check_permissions.sh + +if [ "${function_selfname}" != "command_monitor.sh" ] + check_permissions.sh +fi if [ "${function_selfname}" != "command_install.sh" ]&&[ "${function_selfname}" != "command_update_functions.sh" ]; then check_system_dir.sh From 4dc19ab64f442110589c768c8d3b25d8179599e0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 23:38:21 +0000 Subject: [PATCH 645/729] missing then --- lgsm/functions/check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index c8f659d2a..7cc1e9584 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -13,7 +13,7 @@ local commandname="CHECK" check_root.sh check_tmuxception.sh -if [ "${function_selfname}" != "command_monitor.sh" ] +if [ "${function_selfname}" != "command_monitor.sh" ];then check_permissions.sh fi From 3cc0263c5426c68d17a7424dc02694cbdf2db7a6 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 18 Feb 2017 23:39:13 +0000 Subject: [PATCH 646/729] Permissions Error to error --- lgsm/functions/alert.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 9fec83369..afcec526c 100644 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -33,7 +33,7 @@ fn_alert_update(){ fn_alert_permissions(){ fn_script_log_info "Sending permissions error alert" - alertsubject="LinuxGSM - Permissions Error - ${servername}" + alertsubject="LinuxGSM - Error - ${servername}" alertbody="${servicename} has permissions issues." } From c1579de5e8a0d713249403c3ec449ce7d9677da2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 00:09:20 +0000 Subject: [PATCH 647/729] Permissions alert will only happen during monitor Monitor needs to alert about permissions issues as the admin may not be around while this issue os occuring. --- lgsm/functions/check_permissions.sh | 23 ++++++++++++++++++++--- lgsm/functions/command_monitor.sh | 1 + 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 2a198d3c5..d7bff4dee 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -6,7 +6,6 @@ # Description: Checks ownership & permissions of scripts, files and directories. local commandname="CHECK" -local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_check_ownership(){ if [ -f "${rootdir}/${selfname}" ]; then @@ -45,8 +44,10 @@ fn_check_ownership(){ echo "" fn_print_information_nl "please see https://github.com/GameServerManagers/LinuxGSM/wiki/FAQ#-fail--starting-game-server-ownership-issues-found" fn_script_log "For more information, please see https://github.com/GameServerManagers/LinuxGSM/wiki/FAQ#-fail--starting-game-server-ownership-issues-found" - alert="permissions" - alert.sh + if [ "${monitorflag}" == 1 ]; then + alert="permissions" + alert.sh + fi core_exit.sh fi } @@ -62,6 +63,10 @@ fn_check_permissions(){ echo -e "File\n" find "${functionsdir}" -type f -not -executable -printf "%p\n" } | column -s $'\t' -t | tee -a "${scriptlog}" + if [ "${monitorflag}" == 1 ]; then + alert="permissions" + alert.sh + fi core_exit.sh fi fi @@ -80,6 +85,10 @@ fn_check_permissions(){ fn_script_log_info "The following directory does not have the correct permissions:" fn_script_log_info "${rootdir}" ls -l "${rootdir}" + if [ "${monitorflag}" == 1 ]; then + alert="permissions" + alert.sh + fi core_exit.sh fi fi @@ -120,6 +129,10 @@ fn_check_permissions(){ ls -l "${executabledir}/${execname}" fn_script_log_warn "The following file could not be set executable:" fn_script_log_info "${executabledir}/${execname}" + if [ "${monitorflag}" == 1 ]; then + alert="permissions" + alert.sh + fi core_exit.sh fi fi @@ -159,6 +172,10 @@ fn_sys_perm_fix_manually_msg(){ echo " chmod a+rx /sys /sys/class /sys/class/net" fn_script_log "chmod a+rx /sys /sys/class /sys/class/net" sleep 1 + if [ "${monitorflag}" == 1 ]; then + alert="permissions" + alert.sh + fi core_exit.sh } diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 7bd259e30..0064ab439 100644 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -98,6 +98,7 @@ fn_monitor_tmux(){ fi } +monitorflag=1 fn_print_dots "${servername}" sleep 1 check.sh From 50efa1bd23310a5bd4c1b8572d8355a100381474 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 00:30:30 +0000 Subject: [PATCH 648/729] removed space --- lgsm/functions/core_messages.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 565a1853e..9fd87a8a9 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -277,9 +277,9 @@ fn_prompt_yn(){ if [ "${initial}" == "Y" ]; then prompt+=" [Y/n] " elif [ "${initial}" == "N" ]; then - prompt+=" [y/N] " + prompt+=" [y/N] " else - prompt+=" [y/n] " + prompt+=" [y/n] " fi while true; do From 06825f1e9c5b90ed3253388315c6e807c458ac18 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 00:36:30 +0000 Subject: [PATCH 649/729] missed a space --- lgsm/functions/core_messages.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 9fd87a8a9..91f5bd75f 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -275,7 +275,7 @@ fn_prompt_yn(){ local initial="$2" if [ "${initial}" == "Y" ]; then - prompt+=" [Y/n] " + prompt+=" [Y/n] " elif [ "${initial}" == "N" ]; then prompt+=" [y/N] " else From fd0f6f730dbc63d71e96a182011a327c0f717180 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 00:41:43 +0000 Subject: [PATCH 650/729] tabs --- lgsm/functions/core_messages.sh | 38 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 91f5bd75f..2e1286d7e 100644 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -271,25 +271,25 @@ fn_print_information_nl(){ # Y/N Prompt fn_prompt_yn(){ - local prompt="$1" - local initial="$2" - - if [ "${initial}" == "Y" ]; then - prompt+=" [Y/n] " - elif [ "${initial}" == "N" ]; then - prompt+=" [y/N] " - else - prompt+=" [y/n] " - fi - - while true; do - read -e -i "${initial}" -p "${prompt}" -r yn - case "${yn}" in - [Yy]|[Yy][Ee][Ss]) return 0 ;; - [Nn]|[Nn][Oo]) return 1 ;; - *) echo "Please answer yes or no." ;; - esac - done + local prompt="$1" + local initial="$2" + + if [ "${initial}" == "Y" ]; then + prompt+=" [Y/n] " + elif [ "${initial}" == "N" ]; then + prompt+=" [y/N] " + else + prompt+=" [y/n] " + fi + + while true; do + read -e -i "${initial}" -p "${prompt}" -r yn + case "${yn}" in + [Yy]|[Yy][Ee][Ss]) return 0 ;; + [Nn]|[Nn][Oo]) return 1 ;; + *) echo "Please answer yes or no." ;; + esac + done } # On-Screen End of Line From b30e49b8bf42df7cb280410696bc56505382aa2b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 01:06:50 +0000 Subject: [PATCH 651/729] Updated Teeworlds directorys --- Teeworlds/twserver | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 60d8dc5fc..2679bc45e 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -99,8 +99,8 @@ tmpdir="${lgsmdir}/tmp" filesdir="${rootdir}/serverfiles" ## Server Specific Directories -systemdir="${filesdir}" -executabledir="${filesdir}" +systemdir="${filesdir}/tw" +executabledir="${systemdir}" executable="./teeworlds_srv" servercfg="${servicename}.cfg" # Teeworlds can also auto load any config if an autoexec.cfg file is present in the server dir servercfgdefault="server.cfg" From ddb607d5988b7b1f7387031bfdc0f5322c631077 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 01:59:56 +0000 Subject: [PATCH 652/729] increased Teeworlds glibc requirements --- lgsm/functions/info_glibc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh index ce17c0c22..ad505eb0e 100644 --- a/lgsm/functions/info_glibc.sh +++ b/lgsm/functions/info_glibc.sh @@ -81,7 +81,7 @@ elif [ "${gamename}" == "TeamSpeak 3" ]; then glibcrequired="NOT REQUIRED" glibcfix="no" elif [ "${gamename}" == "Teeworlds" ]; then - glibcrequired="2.3" + glibcrequired="2.14" glibcfix="no" elif [ "${engine}" == "avalanche" ]; then glibcrequired="2.13" From 9f1c03da948652acf2ec1222e44860ad4dc90532 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 02:00:46 +0000 Subject: [PATCH 653/729] Imrprovements to graceful shutdown quake servers now also do graceful shutdown --- lgsm/functions/command_stop.sh | 106 ++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 48 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 8483e4669..341ad4d95 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -9,73 +9,83 @@ local commandname="STOP" local commandaction="Stopping" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -# Attempts graceful of source using rcon 'quit' command. -fn_stop_graceful_source(){ - fn_print_dots "Graceful: rcon quit" - fn_script_log_info "Graceful: rcon quit" +# Attempts graceful shutdown by sending the 'CTRL+c'. +fn_stop_graceful_ctrlc(){ + fn_print_dots "Graceful: CTRL+c" + fn_script_log_info "Graceful: CTRL+c" # sends quit - tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 + tmux send-keys C-c -t "${servicename}" > /dev/null 2>&1 # waits up to 30 seconds giving the server time to shutdown gracefuly for seconds in {1..30}; do check_status.sh if [ "${status}" == "0" ]; then - fn_print_ok "Graceful: rcon quit: ${seconds}: " + fn_print_ok "Graceful: CTRL+c: ${seconds}: " fn_print_ok_eol_nl - fn_script_log_pass "Graceful: rcon quit: OK: ${seconds} seconds" + fn_script_log_pass "Graceful: CTRL+c: OK: ${seconds} seconds" break fi sleep 1 - fn_print_dots "Graceful: rcon quit: ${seconds}" + fn_print_dots "Graceful: CTRL+c: ${seconds}" done check_status.sh if [ "${status}" != "0" ]; then - fn_print_error "Graceful: rcon quit: " + fn_print_error "Graceful: CTRL+c: " fn_print_fail_eol_nl - fn_script_log_error "Graceful: rcon quit: FAIL" + fn_script_log_error "Graceful: CTRL+c: FAIL" fi sleep 1 fn_stop_tmux } -# Attempts graceful of goldsource using rcon 'quit' command. -# Goldsource 'quit' command restarts rather than shutsdown -# this function will only wait 3 seconds then force a tmux shutdown. -# preventing the server from coming back online. -fn_stop_graceful_goldsource(){ - fn_print_dots "Graceful: rcon quit" - fn_script_log_info "Graceful: rcon quit" +# Attempts graceful shutdown by sending the 'quit' command. +fn_stop_graceful_quit(){ + fn_print_dots "Graceful: sending \"quit\"" + fn_script_log_info "Graceful: sending \"quit\"" # sends quit tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 - # waits 3 seconds as goldsource servers restart with the quit command - for seconds in {1..3}; do + # waits up to 30 seconds giving the server time to shutdown gracefuly + for seconds in {1..30}; do + check_status.sh + if [ "${status}" == "0" ]; then + fn_print_ok "Graceful: sending \"quit\": ${seconds}: " + fn_print_ok_eol_nl + fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds" + break + fi sleep 1 - fn_print_dots "Graceful: rcon quit: ${seconds}" + fn_print_dots "Graceful: sending \"quit\": ${seconds}" done - fn_print_ok "Graceful: rcon quit: ${seconds}: " - fn_print_ok_eol_nl - fn_script_log_pass "Graceful: rcon quit: OK: ${seconds} seconds" + check_status.sh + if [ "${status}" != "0" ]; then + fn_print_error "Graceful: sending \"quit\": " + fn_print_fail_eol_nl + fn_script_log_error "Graceful: sending \"quit\": FAIL" + fi sleep 1 fn_stop_tmux } -fn_stop_graceful_ctrlc(){ - fn_print_dots "Graceful: console CTRL+c" - fn_script_log_info "Graceful: console CTRL+c" +# Attempts graceful of goldsource using rcon 'quit' command. +# Goldsource 'quit' command restarts rather than shutdown +# this function will only wait 3 seconds then force a tmux shutdown. +# preventing the server from coming back online. +fn_stop_graceful_goldsource(){ + fn_print_dots "Graceful: sending \"quit\"" + fn_script_log_info "Graceful: sending \"quit\"" # sends quit - tmux send-keys C-c -t "${servicename}" > /dev/null 2>&1 + tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 # waits 3 seconds as goldsource servers restart with the quit command for seconds in {1..3}; do sleep 1 - fn_print_dots "Graceful: console CTRL+c: ${seconds}" + fn_print_dots "Graceful: sending \"quit\": ${seconds}" done - fn_print_ok "Graceful: console CTRL+c: ${seconds}: " + fn_print_ok "Graceful: sending \"quit\": ${seconds}: " fn_print_ok_eol_nl - fn_script_log_pass "Graceful: console CTRL+c: OK: ${seconds} seconds" + fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds" sleep 1 fn_stop_tmux } - # Attempts graceful of 7 Days To Die using telnet. fn_stop_telnet_sdtd(){ sdtd_telnet_shutdown=$( expect -c ' @@ -135,7 +145,7 @@ fn_stop_graceful_sdtd(){ break fi sleep 1 - fn_print_dots "Graceful: rcon quit: ${seconds}" + fn_print_dots "Graceful: telnet: ${seconds}" done # If telnet failed will go straight to tmux shutdown. # If cannot shutdown correctly world save may be lost @@ -164,27 +174,27 @@ fn_stop_graceful_sdtd(){ # Attempts graceful of source using rcon 'stop' command. fn_stop_graceful_minecraft(){ - fn_print_dots "Graceful: console stop" - fn_script_log_info "Graceful: console stop" + fn_print_dots "Graceful: sending \"stop\"" + fn_script_log_info "Graceful: sending \"stop\"" # sends quit tmux send -t "${servicename}" stop ENTER > /dev/null 2>&1 # waits up to 30 seconds giving the server time to shutdown gracefuly for seconds in {1..30}; do check_status.sh if [ "${status}" == "0" ]; then - fn_print_ok "Graceful: console stop: ${seconds}: " + fn_print_ok "Graceful: sending \"stop\": ${seconds}: " fn_print_ok_eol_nl - fn_script_log_pass "Graceful: console stop: OK: ${seconds} seconds" + fn_script_log_pass "Graceful: sending \"stop\": OK: ${seconds} seconds" break fi sleep 1 - fn_print_dots "Graceful: console stop: ${seconds}" + fn_print_dots "Graceful: sending \"stop\": ${seconds}" done check_status.sh if [ "${status}" != "0" ]; then - fn_print_error "Graceful: console stop: " + fn_print_error "Graceful: sending \"stop\": " fn_print_fail_eol_nl - fn_script_log_error "Graceful: console stop: FAIL" + fn_script_log_error "Graceful: sending \"stop\": FAIL" fi sleep 1 fn_stop_tmux @@ -192,27 +202,27 @@ fn_stop_graceful_minecraft(){ # Attempts graceful of mta using rcon 'quit' command. fn_stop_graceful_mta(){ - fn_print_dots "Graceful: console quit" - fn_script_log_info "Graceful: console quit" + fn_print_dots "Graceful: sending \"quit\"" + fn_script_log_info "Graceful: sending \"quit\"" # sends quit tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 # waits up to 120 seconds giving the server time to shutdown gracefuly, we need a long wait time here as resources are stopped individually and process their own shutdowns for seconds in {1..120}; do check_status.sh if [ "${status}" == "0" ]; then - fn_print_ok "Graceful: console quit: ${seconds}: " + fn_print_ok "Graceful: sending \"quit\": ${seconds}: " fn_print_ok_eol_nl - fn_script_log_pass "Graceful: console quit: OK: ${seconds} seconds" + fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds" break fi sleep 1 - fn_print_dots "Graceful: console quit: ${seconds}" + fn_print_dots "Graceful: sending \"quit\": ${seconds}" done check_status.sh if [ "${status}" != "0" ]; then - fn_print_error "Graceful: console quit: " + fn_print_error "Graceful: sending \"quit\": " fn_print_fail_eol_nl - fn_script_log_error "Graceful: console quit: FAIL" + fn_script_log_error "Graceful: sending \"quit\": FAIL" fi sleep 1 fn_stop_tmux @@ -223,8 +233,8 @@ fn_stop_graceful_select(){ fn_stop_graceful_sdtd elif [ "${gamename}" == "Factorio" ]||[ "${engine}" == "unreal4" ]||[ "${engine}" == "unreal3" ]||[ "${engine}" == "unreal2" ]||[ "${engine}" == "unreal" ]; then fn_stop_graceful_ctrlc - elif [ "${engine}" == "source" ]; then - fn_stop_graceful_source + elif [ "${engine}" == "source" ]||[ "${engine}" == "quake" ]||[ "${engine}" == "idtech2" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "idtech3_ql" ]; then + fn_stop_graceful_quit elif [ "${engine}" == "goldsource" ]; then fn_stop_graceful_goldsource elif [ "${engine}" == "lwjgl2" ]; then From 92f748c1ca47cad2b120572c5d44402bc0c02af5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 04:01:57 +0100 Subject: [PATCH 654/729] Rust now supports custom log dir --- Rust/rustserver | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Rust/rustserver b/Rust/rustserver index 9557f914d..513f6b967 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -39,7 +39,7 @@ tickrate="30" # default 30; range : 15 to 100 ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ -parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" +parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile \"${gamelogdate}\"" } # Specific to Rust @@ -132,7 +132,6 @@ backupdir="${rootdir}/backups" gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" -gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" @@ -140,7 +139,7 @@ emaillog="${scriptlogdir}/${servicename}-email.log" ## Logs Naming scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -gamelogfile="\"gamelog-$(date '+%Y-%m-%d-%H-%M-%S').log\"" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" ######################## ######## Script ######## From 9d603d10ceb6a264826dd2359aa0152e8c33ee44 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 04:35:46 +0100 Subject: [PATCH 655/729] only rotate logs if server is off Fixes #1318 --- lgsm/functions/logs.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index ebcc8636a..ac2c3d771 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -16,7 +16,8 @@ if [ -n "${consolelog}" ]; then fi # For games not displaying a console, and having logs into their game directory -if [ "${function_selfname}" == "command_start.sh" ] && [ -n "${gamelogfile}" ]; then +check_status.sh +if [ "${status}" != "0" ] && [ "${function_selfname}" == "command_start.sh" ] && [ -n "${gamelogfile}" ]; then if [ -n "$(find "${systemdir}" -name "gamelog*.log")" ]; then fn_print_info "Moving game logs to ${gamelogdir}" fn_script_log_info "Moving game logs to ${gamelogdir}" From 7a4438e8d0cc56cea90f7c0cccb3cf1a6b6dd6fa Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 04:40:22 +0100 Subject: [PATCH 656/729] sys permission fix only upon server start fixes #1303 --- lgsm/functions/check_permissions.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index d7bff4dee..24648f2ec 100644 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -232,4 +232,6 @@ fn_sys_perm_error_process(){ ## Run checks fn_check_ownership fn_check_permissions -fn_sys_perm_error_process +if [ "${function_selfname}" == "command_start.sh" ]; then + fn_sys_perm_error_process +fi From 2b4262e1d5e83f71f64f20a4caf0414b175b4b5d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 04:55:16 +0100 Subject: [PATCH 657/729] Allow to run details with non-installed server fixes #1302 --- lgsm/functions/check.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 7cc1e9584..ec067de66 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -17,7 +17,7 @@ if [ "${function_selfname}" != "command_monitor.sh" ];then check_permissions.sh fi -if [ "${function_selfname}" != "command_install.sh" ]&&[ "${function_selfname}" != "command_update_functions.sh" ]; then +if [ "${function_selfname}" != "command_install.sh" ]&&[ "${function_selfname}" != "command_update_functions.sh" ]&&[ "${function_selfname}" != "command_details.sh" ]&&[ "${function_selfname}" != "command_postdetails.sh" ]; then check_system_dir.sh fi @@ -53,7 +53,7 @@ do fi done -local allowed_commands_array=( command_console.sh command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh ) +local allowed_commands_array=( command_console.sh command_debug.sh command_monitor.sh command_start.sh command_stop.sh ) for allowed_command in "${allowed_commands_array[@]}" do if [ "${allowed_command}" == "${function_selfname}" ]; then From 15f80f1151699c38f884f9335acb7139b4e8af52 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 05:21:16 +0100 Subject: [PATCH 658/729] Run log manager upon update fixes #1075 --- lgsm/functions/command_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index bc76a29b2..ad7b76aaf 100644 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -11,7 +11,7 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_print_dots "" sleep 0.5 check.sh - +logs.sh if [ "${gamename}" == "TeamSpeak 3" ]; then update_ts3.sh From 14141d4c8a2421b13207abda74f8c44e701d192c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 05:27:01 +0100 Subject: [PATCH 659/729] Case where there is no console log --- lgsm/functions/update_steamcmd.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 028f843ee..e500a0fbf 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -98,7 +98,11 @@ fn_update_request_log(){ fn_print_dots "Checking for update: Server logs" fn_script_log_info "Checking for update: Server logs" sleep 1 - requestrestart=$(grep -Ec "MasterRequestRestart" "${consolelog}") + if [ -f ${consolelog} ]; then + requestrestart=$(grep -Ec "MasterRequestRestart" "${consolelog}") + else + requestrestart="0" + fi if [ "${requestrestart}" -ge "1" ]; then fn_print_ok_nl "Checking for update: Server logs: Update requested" fn_script_log_pass "Checking for update: Server logs: Update requested" From fadc79e84c1af3f0fec33a7a4b146c02cf5e3a71 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 06:18:25 +0100 Subject: [PATCH 660/729] Full path showed to the user fixes #1288 --- lgsm/functions/check_executable.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_executable.sh b/lgsm/functions/check_executable.sh index 14ccdb060..cc90b435d 100644 --- a/lgsm/functions/check_executable.sh +++ b/lgsm/functions/check_executable.sh @@ -9,9 +9,10 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" # Check if executable exists if [ ! -f "${executabledir}/${execname}" ]; then - fn_script_log_warn "Expected executable not found: ${executabledir}/${execname}" + fn_script_log_warn "Executable was not found: ${executabledir}/${execname}" if [ -d "${scriptlogdir}" ]; then - fn_print_fail_nl "Executable ${execname} was not found" + fn_print_fail_nl "Executable was not found:" + echo " * ${executabledir}/${execname}" fi exitcode="1" core_exit.sh From ab8ad9084c89c5871646b022d5fcf00a71aa8e7c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 06:41:44 +0100 Subject: [PATCH 661/729] Only create dirs if they don't already exist --- lgsm/functions/install_logs.sh | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 2019fdb13..0c3e69a4a 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -15,12 +15,22 @@ if [ "${checklogs}" != "1" ]; then fi sleep 1 # Create dir's for the script and console logs -mkdir -v "${rootdir}/log" -mkdir -v "${scriptlogdir}" -touch "${scriptlog}" +if [ ! -d "${rootdir}/log" ]; then + mkdir -v "${rootdir}/log" +fi +if [ ! -d "${scriptlogdir}" ]; then + mkdir -v "${scriptlogdir}" +fi +if [ ! -f "${scriptlog}" ]; then + touch "${scriptlog}" +fi if [ -n "${consolelogdir}" ]; then - mkdir -v "${consolelogdir}" - touch "${consolelog}" + if [ ! -d "${consolelogdir}" ]; then + mkdir -v "${consolelogdir}" + fi + if [ ! -f "${consolelog}" ]; then + touch "${consolelog}" + fi fi # If a server is source or goldsource, TeamSpeak 3, Starbound, Project Zomhoid create a symbolic link to the game server logs. @@ -32,7 +42,9 @@ fi # If a server is unreal2 or unity3d create a dir. if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Teeworlds" ]||[ "${gamename}" == "seriousengine35" ]; then - mkdir -pv "${gamelogdir}" + if [ ! -d ${gamelogdir}" ]; then + mkdir -pv "${gamelogdir}" + fi fi # If server uses SteamCMD create a symbolic link to the Steam logs. @@ -42,4 +54,4 @@ if [ -d "${rootdir}/Steam/logs" ]; then fi fi sleep 1 -fn_script_log_info "Logs installed" \ No newline at end of file +fn_script_log_info "Logs installed" From 6c6fd3a33c041fb35d24ae7f98f1feeeadf523b1 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 06:49:59 +0100 Subject: [PATCH 662/729] Create gamelogdir if variable exists & dir doesn't --- lgsm/functions/check_logs.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_logs.sh b/lgsm/functions/check_logs.sh index 5e9da586c..d4fec4b1a 100644 --- a/lgsm/functions/check_logs.sh +++ b/lgsm/functions/check_logs.sh @@ -7,11 +7,20 @@ local commandname="CHECK" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -# Create directories for the script and console logs -if [ ! -d "${scriptlogdir}" ]||[ ! -d "${consolelogdir}" ]&&[ "${gamename}" != "TeamSpeak 3" ]; then +fn_check_logs(){ fn_print_dots "Checking for log files" sleep 0.5 fn_print_info_nl "Checking for log files: Creating log files" checklogs=1 install_logs.sh +} + +# Create directories for the script and console logs +if [ ! -d "${scriptlogdir}" ]||[ ! -d "${consolelogdir}" ]&&[ "${gamename}" != "TeamSpeak 3" ]; then + fn_check_logs +fi + +# Create gamelogdir if variable exist but dir doesn't exist +if [ -n "${gamelogdir}" ]&&[ ! -d "${gamelogdir}" ]; then + fn_check_logs fi From 84016558b8df2f5225c7bd4292a78c0a6b4f2e54 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 06:51:09 +0100 Subject: [PATCH 663/729] double quote missing --- lgsm/functions/install_logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 0c3e69a4a..3f6020e45 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -42,7 +42,7 @@ fi # If a server is unreal2 or unity3d create a dir. if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Teeworlds" ]||[ "${gamename}" == "seriousengine35" ]; then - if [ ! -d ${gamelogdir}" ]; then + if [ ! -d "${gamelogdir}" ]; then mkdir -pv "${gamelogdir}" fi fi From 7edf379b81fc26406cb8766abc6174b16b5f0dbb Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 06:56:19 +0100 Subject: [PATCH 664/729] Do not remove legacy logs if empty --- lgsm/functions/logs.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lgsm/functions/logs.sh b/lgsm/functions/logs.sh index ac2c3d771..44467d82f 100644 --- a/lgsm/functions/logs.sh +++ b/lgsm/functions/logs.sh @@ -101,10 +101,6 @@ 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 directory if empty - if [ ! "$(ls -A "${legacyserverlogdir}")" ]; then - rm -rf "${legacyserverlogdir}" - fi fi # Count total amount of files removed From 4155af5d60939f69ee6cfebcbae0dbe55ff22d52 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 12:42:02 +0000 Subject: [PATCH 665/729] Reverting commit, no requirement to bypass this. Rather than get no output mkdir message states that the directory already exists. This looks better than having nothing at all. --- lgsm/functions/install_logs.sh | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 3f6020e45..2019fdb13 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -15,22 +15,12 @@ if [ "${checklogs}" != "1" ]; then fi sleep 1 # Create dir's for the script and console logs -if [ ! -d "${rootdir}/log" ]; then - mkdir -v "${rootdir}/log" -fi -if [ ! -d "${scriptlogdir}" ]; then - mkdir -v "${scriptlogdir}" -fi -if [ ! -f "${scriptlog}" ]; then - touch "${scriptlog}" -fi +mkdir -v "${rootdir}/log" +mkdir -v "${scriptlogdir}" +touch "${scriptlog}" if [ -n "${consolelogdir}" ]; then - if [ ! -d "${consolelogdir}" ]; then - mkdir -v "${consolelogdir}" - fi - if [ ! -f "${consolelog}" ]; then - touch "${consolelog}" - fi + mkdir -v "${consolelogdir}" + touch "${consolelog}" fi # If a server is source or goldsource, TeamSpeak 3, Starbound, Project Zomhoid create a symbolic link to the game server logs. @@ -42,9 +32,7 @@ fi # If a server is unreal2 or unity3d create a dir. if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Teeworlds" ]||[ "${gamename}" == "seriousengine35" ]; then - if [ ! -d "${gamelogdir}" ]; then - mkdir -pv "${gamelogdir}" - fi + mkdir -pv "${gamelogdir}" fi # If server uses SteamCMD create a symbolic link to the Steam logs. @@ -54,4 +42,4 @@ if [ -d "${rootdir}/Steam/logs" ]; then fi fi sleep 1 -fn_script_log_info "Logs installed" +fn_script_log_info "Logs installed" \ No newline at end of file From 70922d953a2d3cc36c3bb7c31f3275b884de4802 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 12:44:54 +0000 Subject: [PATCH 666/729] comment --- lgsm/functions/check_logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/check_logs.sh b/lgsm/functions/check_logs.sh index d4fec4b1a..bc4f13bdf 100644 --- a/lgsm/functions/check_logs.sh +++ b/lgsm/functions/check_logs.sh @@ -20,7 +20,7 @@ if [ ! -d "${scriptlogdir}" ]||[ ! -d "${consolelogdir}" ]&&[ "${gamename}" != " fn_check_logs fi -# Create gamelogdir if variable exist but dir doesn't exist +# Create gamelogdir if variable exist but dir does not exist if [ -n "${gamelogdir}" ]&&[ ! -d "${gamelogdir}" ]; then fn_check_logs fi From 1520fea4212beee36e36eca0dca4ba6e2aa51cf6 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 16:15:02 +0000 Subject: [PATCH 667/729] Parms have been removed as uses the config file for settings --- QuakeLive/qlserver | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index ac5f4ab39..4e88012f4 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -24,19 +24,12 @@ version="170212" ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters arch="x64" # x64 or x86 -port="27960" -rconport="28960" -rconpassword="CHANGE_ME" -statsport="${port}" -statspassword="CHANGE_ME" -mappool='mappool.txt' -ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters # Edit with care | Install/Config Guide : https://steamcommunity.com/sharedfiles/filedetails/?id=542966946 # Console Commands : http://www.regurge.at/ql/ fn_parms(){ -parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${port} +set fs_homepath ${filesdir}/${port} +set zmq_rcon_enable 1 +set zmq_rcon_port ${rconport} +set zmq_rcon_password ${rconpassword} +set zmq_stats_enable 1 +set zmq_stats_password ${statspassword} +set zmq_stats_port ${statsport} +set sv_mapPoolFile ${mappool} +exec ${servercfg}" +parms="+exec ${servercfg}" } #### LinuxGSM Settings #### From 90076ae2ba9b7b56ef0f5707ee43d11015e27921 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 17:18:12 +0000 Subject: [PATCH 668/729] New Release 170219 --- 7DaysToDie/sdtdserver | 2 +- ARKSurvivalEvolved/arkserver | 2 +- Arma3/arma3server | 2 +- Battlefield1942/bf1942server | 2 +- BlackMesa/bmdmserver | 2 +- BladeSymphony/bsserver | 2 +- BrainBread2/bb2server | 2 +- CallOfDuty/codserver | 2 +- CallOfDuty2/cod2server | 2 +- CallOfDuty4/cod4server | 2 +- CallOfDutyUnitedOffensive/coduoserver | 2 +- CallOfDutyWorldAtWar/codwawserver | 2 +- CodenameCURE/ccserver | 2 +- CounterStrike/csserver | 2 +- CounterStrikeConditionZero/csczserver | 2 +- CounterStrikeGlobalOffensive/csgoserver | 2 +- CounterStrikeSource/cssserver | 2 +- DayOfDefeat/dodserver | 2 +- DayOfDefeatSource/dodsserver | 2 +- DayOfInfamy/doiserver | 2 +- DeathmatchClassic/dmcserver | 2 +- DontStarveTogether/dstserver | 2 +- DoubleActionBoogaloo/dabserver | 2 +- EmpiresMod/emserver | 2 +- Factorio/fctrserver | 2 +- FistfulOfFrags/fofserver | 2 +- GarrysMod/gmodserver | 2 +- GoldenEyeSource/gesserver | 2 +- HalfLife2Deathmatch/hl2dmserver | 2 +- HalfLifeDeathmatch/hldmserver | 2 +- HalfLifeDeathmatchSource/hldmsserver | 2 +- Hurtworld/hwserver | 2 +- Insurgency/insserver | 2 +- JustCause2/jc2server | 2 +- KillingFloor/kfserver | 2 +- Left4Dead/l4dserver | 2 +- Left4Dead2/l4d2server | 2 +- Minecraft/mcserver | 2 +- MultiTheftAuto/mtaserver | 2 +- Mumble/mumbleserver | 2 +- NS2Combat/ns2cserver | 2 +- NaturalSelection2/ns2server | 2 +- NoMoreRoomInHell/nmrihserver | 2 +- OpposingForce/opforserver | 2 +- PiratesVikingandKnightsII/pvkiiserver | 2 +- ProjectZomboid/pzserver | 2 +- Quake2/q2server | 2 +- Quake3/q3server | 2 +- QuakeLive/qlserver | 2 +- QuakeWorld/qwserver | 2 +- RedOrchestra/roserver | 2 +- Ricochet/ricochetserver | 2 +- Rust/rustserver | 2 +- SeriousSam3BFE/ss3sserver | 2 +- Starbound/sbserver | 2 +- SvenCoop/svenserver | 2 +- TeamFortress2/tf2server | 2 +- TeamFortressClassic/tfcserver | 2 +- TeamSpeak3/ts3server | 2 +- Teeworlds/twserver | 2 +- Terraria/terrariaserver | 2 +- TowerUnite/tuserver | 2 +- UnrealTournament/utserver | 2 +- UnrealTournament2004/ut2k4server | 2 +- UnrealTournament3/ut3server | 2 +- UnrealTournament99/ut99server | 2 +- WolfensteinEnemyTerritory/wetserver | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_ts3server.sh | 2 +- 69 files changed, 69 insertions(+), 69 deletions(-) diff --git a/7DaysToDie/sdtdserver b/7DaysToDie/sdtdserver index 0ab687af9..ce73f795c 100644 --- a/7DaysToDie/sdtdserver +++ b/7DaysToDie/sdtdserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver index d47590b77..a633d728c 100644 --- a/ARKSurvivalEvolved/arkserver +++ b/ARKSurvivalEvolved/arkserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Arma3/arma3server b/Arma3/arma3server index 74b5532b6..928b2a144 100644 --- a/Arma3/arma3server +++ b/Arma3/arma3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Battlefield1942/bf1942server b/Battlefield1942/bf1942server index 7e21c0fbc..3111d79d6 100644 --- a/Battlefield1942/bf1942server +++ b/Battlefield1942/bf1942server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/BlackMesa/bmdmserver b/BlackMesa/bmdmserver index 05d93a735..a3e1e9454 100644 --- a/BlackMesa/bmdmserver +++ b/BlackMesa/bmdmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/BladeSymphony/bsserver b/BladeSymphony/bsserver index 6a486a16e..b0eb68e9b 100644 --- a/BladeSymphony/bsserver +++ b/BladeSymphony/bsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 72700d7e3..0f5cb40d2 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CallOfDuty/codserver b/CallOfDuty/codserver index c9fd27ae1..788db3838 100755 --- a/CallOfDuty/codserver +++ b/CallOfDuty/codserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CallOfDuty2/cod2server b/CallOfDuty2/cod2server index 61eac16a7..21481bef6 100755 --- a/CallOfDuty2/cod2server +++ b/CallOfDuty2/cod2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CallOfDuty4/cod4server b/CallOfDuty4/cod4server index 4c9e3c48a..4c0c79a65 100644 --- a/CallOfDuty4/cod4server +++ b/CallOfDuty4/cod4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CallOfDutyUnitedOffensive/coduoserver b/CallOfDutyUnitedOffensive/coduoserver index 1006c9aaf..bc6b8eaf7 100755 --- a/CallOfDutyUnitedOffensive/coduoserver +++ b/CallOfDutyUnitedOffensive/coduoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CallOfDutyWorldAtWar/codwawserver b/CallOfDutyWorldAtWar/codwawserver index 1af43280e..a8a9204cb 100755 --- a/CallOfDutyWorldAtWar/codwawserver +++ b/CallOfDutyWorldAtWar/codwawserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index aa7233712..7220ec4d8 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 72eb9bb2a..21a61c540 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CounterStrikeConditionZero/csczserver b/CounterStrikeConditionZero/csczserver index ff72163e8..4047c9128 100644 --- a/CounterStrikeConditionZero/csczserver +++ b/CounterStrikeConditionZero/csczserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index c630e9888..f3954640c 100755 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 2a8a0b805..af7191cc9 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/DayOfDefeat/dodserver b/DayOfDefeat/dodserver index cae5ce0e1..e58597264 100644 --- a/DayOfDefeat/dodserver +++ b/DayOfDefeat/dodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 4fcca9610..9a0009754 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/DayOfInfamy/doiserver b/DayOfInfamy/doiserver index 0ea17b569..27de57e53 100644 --- a/DayOfInfamy/doiserver +++ b/DayOfInfamy/doiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/DeathmatchClassic/dmcserver b/DeathmatchClassic/dmcserver index 17e96aa9c..bd7540d3c 100644 --- a/DeathmatchClassic/dmcserver +++ b/DeathmatchClassic/dmcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/DontStarveTogether/dstserver b/DontStarveTogether/dstserver index ec0e5a12b..84db9996f 100644 --- a/DontStarveTogether/dstserver +++ b/DontStarveTogether/dstserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/DoubleActionBoogaloo/dabserver b/DoubleActionBoogaloo/dabserver index d803cacfa..4bbb6795c 100644 --- a/DoubleActionBoogaloo/dabserver +++ b/DoubleActionBoogaloo/dabserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/EmpiresMod/emserver b/EmpiresMod/emserver index 9f9771d57..929405368 100644 --- a/EmpiresMod/emserver +++ b/EmpiresMod/emserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Factorio/fctrserver b/Factorio/fctrserver index f92db7e47..890562fa9 100644 --- a/Factorio/fctrserver +++ b/Factorio/fctrserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/FistfulOfFrags/fofserver b/FistfulOfFrags/fofserver index ee2ec15c0..064b1504a 100644 --- a/FistfulOfFrags/fofserver +++ b/FistfulOfFrags/fofserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/GarrysMod/gmodserver b/GarrysMod/gmodserver index d48af2545..70c535bfd 100644 --- a/GarrysMod/gmodserver +++ b/GarrysMod/gmodserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/GoldenEyeSource/gesserver b/GoldenEyeSource/gesserver index 20c639879..0e3f44e64 100644 --- a/GoldenEyeSource/gesserver +++ b/GoldenEyeSource/gesserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index adb1e18e2..a1830b9e7 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatch/hldmserver b/HalfLifeDeathmatch/hldmserver index 4c007e738..be1fa33ee 100644 --- a/HalfLifeDeathmatch/hldmserver +++ b/HalfLifeDeathmatch/hldmserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/HalfLifeDeathmatchSource/hldmsserver b/HalfLifeDeathmatchSource/hldmsserver index 68c4b1904..efec28f28 100644 --- a/HalfLifeDeathmatchSource/hldmsserver +++ b/HalfLifeDeathmatchSource/hldmsserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Hurtworld/hwserver b/Hurtworld/hwserver index 2e1f7e45f..d43cf4114 100644 --- a/Hurtworld/hwserver +++ b/Hurtworld/hwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Insurgency/insserver b/Insurgency/insserver index 5778bf628..568da1b1f 100644 --- a/Insurgency/insserver +++ b/Insurgency/insserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/JustCause2/jc2server b/JustCause2/jc2server index 077595ecf..db5974e42 100644 --- a/JustCause2/jc2server +++ b/JustCause2/jc2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 5e32707a1..da9de5d3c 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Left4Dead/l4dserver b/Left4Dead/l4dserver index d9a755c65..325ee5af9 100644 --- a/Left4Dead/l4dserver +++ b/Left4Dead/l4dserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index ac3fa7edf..9097ee97b 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Minecraft/mcserver b/Minecraft/mcserver index 9ebf44f4a..49bed4183 100644 --- a/Minecraft/mcserver +++ b/Minecraft/mcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/MultiTheftAuto/mtaserver b/MultiTheftAuto/mtaserver index 1132e0cc9..74111e97c 100644 --- a/MultiTheftAuto/mtaserver +++ b/MultiTheftAuto/mtaserver @@ -12,7 +12,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver index b27f06ba5..d66ec7d85 100644 --- a/Mumble/mumbleserver +++ b/Mumble/mumbleserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/NS2Combat/ns2cserver b/NS2Combat/ns2cserver index b7014072f..04c73b2ed 100644 --- a/NS2Combat/ns2cserver +++ b/NS2Combat/ns2cserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 6f6b0cfd2..b718a8180 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/NoMoreRoomInHell/nmrihserver b/NoMoreRoomInHell/nmrihserver index 92f39d795..5a3318e3e 100644 --- a/NoMoreRoomInHell/nmrihserver +++ b/NoMoreRoomInHell/nmrihserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/OpposingForce/opforserver b/OpposingForce/opforserver index 17ce539fb..0b113a03d 100644 --- a/OpposingForce/opforserver +++ b/OpposingForce/opforserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/PiratesVikingandKnightsII/pvkiiserver b/PiratesVikingandKnightsII/pvkiiserver index e909137d3..51c0fc434 100644 --- a/PiratesVikingandKnightsII/pvkiiserver +++ b/PiratesVikingandKnightsII/pvkiiserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/ProjectZomboid/pzserver b/ProjectZomboid/pzserver index 3339ac2d6..92c02a44c 100644 --- a/ProjectZomboid/pzserver +++ b/ProjectZomboid/pzserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Quake2/q2server b/Quake2/q2server index 9ebc1163e..ff20eaa74 100644 --- a/Quake2/q2server +++ b/Quake2/q2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Quake3/q3server b/Quake3/q3server index b959e7a20..b39697eef 100644 --- a/Quake3/q3server +++ b/Quake3/q3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/QuakeLive/qlserver b/QuakeLive/qlserver index 4e88012f4..b2ae067f4 100755 --- a/QuakeLive/qlserver +++ b/QuakeLive/qlserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/QuakeWorld/qwserver b/QuakeWorld/qwserver index 081c5a81a..147d65127 100644 --- a/QuakeWorld/qwserver +++ b/QuakeWorld/qwserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index f7b883560..1c7fac367 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Ricochet/ricochetserver b/Ricochet/ricochetserver index 2cfc3b93f..2a714cc5d 100644 --- a/Ricochet/ricochetserver +++ b/Ricochet/ricochetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Rust/rustserver b/Rust/rustserver index 513f6b967..05355eb8c 100644 --- a/Rust/rustserver +++ b/Rust/rustserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/SeriousSam3BFE/ss3sserver b/SeriousSam3BFE/ss3sserver index 8c1b31ebd..c3db06006 100644 --- a/SeriousSam3BFE/ss3sserver +++ b/SeriousSam3BFE/ss3sserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Starbound/sbserver b/Starbound/sbserver index c0d59f47e..6672a4f85 100644 --- a/Starbound/sbserver +++ b/Starbound/sbserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/SvenCoop/svenserver b/SvenCoop/svenserver index b320e8812..17348c8a9 100644 --- a/SvenCoop/svenserver +++ b/SvenCoop/svenserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index 313a63c3a..6a5461090 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/TeamFortressClassic/tfcserver b/TeamFortressClassic/tfcserver index ed3d30662..caabf8bf8 100644 --- a/TeamFortressClassic/tfcserver +++ b/TeamFortressClassic/tfcserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/TeamSpeak3/ts3server b/TeamSpeak3/ts3server index e28b52d2e..0cae571ca 100644 --- a/TeamSpeak3/ts3server +++ b/TeamSpeak3/ts3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Teeworlds/twserver b/Teeworlds/twserver index 2679bc45e..377c70088 100644 --- a/Teeworlds/twserver +++ b/Teeworlds/twserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/Terraria/terrariaserver b/Terraria/terrariaserver index 5c5b7839c..43abf5a97 100644 --- a/Terraria/terrariaserver +++ b/Terraria/terrariaserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/TowerUnite/tuserver b/TowerUnite/tuserver index 5483eed93..d25bd924e 100644 --- a/TowerUnite/tuserver +++ b/TowerUnite/tuserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/UnrealTournament/utserver b/UnrealTournament/utserver index 037948bfe..2982a1d7d 100644 --- a/UnrealTournament/utserver +++ b/UnrealTournament/utserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index ae270fbb7..b5aae27ff 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/UnrealTournament3/ut3server b/UnrealTournament3/ut3server index f03d2c9a4..4ad601283 100644 --- a/UnrealTournament3/ut3server +++ b/UnrealTournament3/ut3server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 4891a9cba..002b0efe9 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/WolfensteinEnemyTerritory/wetserver b/WolfensteinEnemyTerritory/wetserver index 29d4f889c..9720fcd98 100644 --- a/WolfensteinEnemyTerritory/wetserver +++ b/WolfensteinEnemyTerritory/wetserver @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index e74fdb6c9..aa6362168 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 8a573e048..0b62e3668 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="170212" +version="170219" ########################## ######## Settings ######## From 57a40b9c88e826eceef084cf13dc39b78d71a27f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 17:27:50 +0000 Subject: [PATCH 669/729] formating --- TowerUnite/tuserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TowerUnite/tuserver b/TowerUnite/tuserver index d25bd924e..500ec01ff 100644 --- a/TowerUnite/tuserver +++ b/TowerUnite/tuserver @@ -194,4 +194,4 @@ fi core_dl.sh core_functions.sh getopt=$1 -core_getopt.sh +core_getopt.sh \ No newline at end of file From 261064738b4f6c0fcb65df9863d0dc44baeb32d1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 17:28:28 +0000 Subject: [PATCH 670/729] Re added boserver error caused to to be renamed tuserver --- BallisticOverkill/boserver | 198 +++++++++++++++++++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 BallisticOverkill/boserver diff --git a/BallisticOverkill/boserver b/BallisticOverkill/boserver new file mode 100644 index 000000000..6ab965bc3 --- /dev/null +++ b/BallisticOverkill/boserver @@ -0,0 +1,198 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs +# Purpose: Ballistic Overkill | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="170219" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Optional: Game Server Login Token +# GSLT can be used for running a public server. +# More info: https://gameservermanagers.com/gslt +gslt="" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms=" -batchmode -nographics -logFile output.txt" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" + +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## SteamCMD Settings +# Server appid +appid="416880" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## LinuxGSM Server Details +# Do not edit +gamename="Ballistic Overkill" +engine="unity" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="bo-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./BODS.x86" +servercfg="${servicename}.txt" +servercfgdefault="config.txt" +servercfgdir="${systemdir}" +servercfgfullpath="${servercfgdir}/${servercfg}" + + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directorie +gamelogdir="${systemdir}/logs" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh \ No newline at end of file From f4759a337e4c6da86b9e6da9a976db2b2e9f4413 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 18:00:42 +0000 Subject: [PATCH 671/729] bb2server is an anonymous login --- BrainBread2/bb2server | 5 ----- 1 file changed, 5 deletions(-) diff --git a/BrainBread2/bb2server b/BrainBread2/bb2server index 0f5cb40d2..e01b9dbb8 100644 --- a/BrainBread2/bb2server +++ b/BrainBread2/bb2server @@ -20,11 +20,6 @@ version="170219" ######## Settings ######## ########################## -## SteamCMD Login | https://github.com/GameServerManagers/LinuxGSM/wiki/SteamCMD#steamcmd-login -# Steam login -steamuser="username" -steampass='password' - ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters defaultmap="bba_barracks" maxplayers="20" From 6106ff0c10d903fa61a9bda15211e7fa55df8432 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 19 Feb 2017 18:28:14 +0000 Subject: [PATCH 672/729] Release 170219 --- BallisticOverkill/boserver | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/BallisticOverkill/boserver b/BallisticOverkill/boserver index 6ab965bc3..781fc4af7 100644 --- a/BallisticOverkill/boserver +++ b/BallisticOverkill/boserver @@ -26,10 +26,10 @@ version="170219" # GSLT can be used for running a public server. # More info: https://gameservermanagers.com/gslt gslt="" - +ip="" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ -parms=" -batchmode -nographics -logFile output.txt" +parms=" -batchmode -nographics -dedicated -configfile=${servercfgfullpath}" } #### LinuxGSM Settings #### @@ -78,7 +78,7 @@ branch="" ## LinuxGSM Server Details # Do not edit gamename="Ballistic Overkill" -engine="unity" +engine="unity3d" ## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers servicename="bo-server" From 7d7b448a10584c20a242b1f359a477daca90c84d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 22:20:44 +0100 Subject: [PATCH 673/729] More general way of handling logs gamelogdir needs to be created if variable is set, otherwise check_logs.sh will attempt to create it if the server wasn't started yet and directory doesn't exist, as per https://github.com/GameServerManagers/LinuxGSM/blob/master/lgsm/functions/check_logs.sh#L24 symlink is done once gamelogdir is created, if variable is set Working with "if gamelogdir" variable exists is a more general and simple way of doing it and shouldn't cause any kind of issue. --- lgsm/functions/install_logs.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 2019fdb13..5082f30bc 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -14,7 +14,7 @@ if [ "${checklogs}" != "1" ]; then echo "=================================" fi sleep 1 -# Create dir's for the script and console logs +# Create dirs for script and console logs mkdir -v "${rootdir}/log" mkdir -v "${scriptlogdir}" touch "${scriptlog}" @@ -23,23 +23,23 @@ if [ -n "${consolelogdir}" ]; then touch "${consolelog}" fi -# If a server is source or goldsource, TeamSpeak 3, Starbound, Project Zomhoid create a symbolic link to the game server logs. -if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${engine}" == "starbound" ]||[ "${engine}" == "projectzomboid" ]||[ "${engine}" == "unreal" ]; then +# Create gamelogdir if variable exists but directory does not +if [ -n "${gamelogdir}" ]&&[ ! -d "${gamelogdir}" ]; then + mkdir -pv "${gamelogdir}" +fi + +# Symlink gamelogdir to lgsm logs if variable exists +if [ -n "${gamelogdir}" ]; then if [ ! -h "${rootdir}/log/server" ]; then ln -nfsv "${gamelogdir}" "${rootdir}/log/server" fi fi -# If a server is unreal2 or unity3d create a dir. -if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Teeworlds" ]||[ "${gamename}" == "seriousengine35" ]; then - mkdir -pv "${gamelogdir}" -fi - -# If server uses SteamCMD create a symbolic link to the Steam logs. +# If server uses SteamCMD create a symbolic link to the Steam logs if [ -d "${rootdir}/Steam/logs" ]; then if [ ! -h "${rootdir}/log/steamcmd" ]; then ln -nfsv "${rootdir}/Steam/logs" "${rootdir}/log/steamcmd" fi fi sleep 1 -fn_script_log_info "Logs installed" \ No newline at end of file +fn_script_log_info "Logs installed" From c9db31d17c4f4723330eedbed99404ce03336a93 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 22:34:57 +0100 Subject: [PATCH 674/729] comment --- lgsm/functions/install_logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 5082f30bc..3feb0feea 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -14,7 +14,7 @@ if [ "${checklogs}" != "1" ]; then echo "=================================" fi sleep 1 -# Create dirs for script and console logs +# Create script and console log directories mkdir -v "${rootdir}/log" mkdir -v "${scriptlogdir}" touch "${scriptlog}" From 90f03aea5e0d98470b76ce0ebecdda6a94adc620 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sun, 19 Feb 2017 23:50:42 +0100 Subject: [PATCH 675/729] repaired broken command by removing old "done" --- lgsm/functions/command_console.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index 98ddcae11..0a93a94fb 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -16,7 +16,6 @@ echo "" if ! fn_prompt_yn "Continue?" Y; then echo Exiting; return fi -done fn_print_dots "Accessing console" sleep 1 check_status.sh From 6f085b28c376d1edb028aede2603ec8d8419f116 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 02:58:15 +0100 Subject: [PATCH 676/729] Global source engine FastDL & remove non bz2 files Fixes #1322 and #721 --- lgsm/functions/command_fastdl.sh | 159 +++++++++++++++++++++++++------ 1 file changed, 129 insertions(+), 30 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 9fe7ca68b..28e4b53f5 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -6,11 +6,18 @@ # Description: Creates a FastDL directory. local commandname="FASTDL" -local commandaction="FastDL" +local commandaction="FastDL Generator" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh +# Only Source supports FastDL +if [ "${engine}" != "source" ]; then + fn_print_error "${gamename} does not support FastDL" + fn_script_log_error "${gamename} does not support FastDL" + core_exit.sh +fi + # Directories webdir="${rootdir}/public_html" fastdldir="${webdir}/fastdl" @@ -24,25 +31,27 @@ fn_check_bzip2(){ # Returns true if not installed if [ -z "$(command -v bzip2)" ]; then bzip2installed="0" - fn_print_info "bzip2 is not installed !" - fn_script_log_info "bzip2 is not installed" + fn_print_info "bzip2 is not installed! Install it to enable file compression" + fn_script_log_info "bzip2 is not installed. Install it to enable file compression." + fn_script_log_info "https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression" echo -en "\n" sleep 1 - echo "We advise using it" - echo "For more information, see https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression" + echo " * https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression" sleep 2 + echo "" else bzip2installed="1" fi } fn_fastdl_init(){ - # User confirmation - fn_print_ok "Welcome to LGSM's FastDL generator" + fn_print_header + fn_script_log "Started FastDL Generator" sleep 1 echo -en "\n" - fn_script_log "Started FastDL creation" - if ! fn_prompt_yn "Continue?" Y; then + fn_check_bzip2 + # User confirmation + if ! fn_prompt_yn "Build FastDL directory?" Y; then exit fi fn_script_log "Initiating FastDL creation" @@ -105,7 +114,7 @@ fn_fastdl_config(){ fi } -fn_fastdl_gmod_config(){ +fn_fastdl_gmod_luaenforcer(){ # Prompt for download enforcer, that is using a .lua addfile resource generator fn_print_dots if fn_prompt_yn "Use client download enforcer?" Y; then @@ -130,7 +139,7 @@ fn_clear_old_fastdl(){ fi } -fn_gmod_fastdl(){ +fn_fastdl_gmod(){ # Copy all needed files for FastDL echo "" fn_print_dots "Starting gathering all needed files" @@ -213,7 +222,7 @@ fn_gmod_fastdl(){ fn_script_log "Adjusting addon's file structure" sleep 1 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" - #Don't remove yet rm -R "${fastdldir:?}/addons" + # Don't remove yet rm -R "${fastdldir:?}/addons" fn_print_ok "Adjusted addon's file structure" sleep 1 echo -en "\n" @@ -221,7 +230,7 @@ fn_gmod_fastdl(){ # 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" + fn_print_dots "Typical DarkRP files detected, fixing" sleep 2 cp -Rf "${fastdldir}/lua/"* "${fastdldir}" fn_print_ok "Stupid DarkRP file structure fixed" @@ -230,8 +239,80 @@ fn_gmod_fastdl(){ fi } +fn_fastdl_source(){ + # Copy all needed files for FastDL + echo "" + fn_print_dots "Starting gathering all needed files" + fn_script_log "Starting gathering all needed files" + sleep 1 + echo -en "\n" + + # Map Files + fn_print_dots "Copying map files..." + fn_script_log "Copying map files" + sleep 0.5 + mkdir "${fastdldir}/maps" + find "${systemdir}/maps" -name '*.bsp' -exec cp {} "${fastdldir}/maps" \; + find "${systemdir}/maps" -name '*.ain' -exec cp {} "${fastdldir}/maps" \; + find "${systemdir}/maps" -name '*.nav' -exec cp {} "${fastdldir}/maps" \; + find "${systemdir}/maps" -name '*.jpg' -exec cp {} "${fastdldir}/maps" \; + find "${systemdir}/maps" -name '*.txt' -exec cp {} "${fastdldir}/maps" \; + fn_print_ok "Map files copied" + sleep 0.5 + echo -en "\n" + + # Materials + fn_print_dots "Copying materials..." + fn_script_log "Copying materials" + sleep 0.5 + mkdir "${fastdldir}/materials" + find "${systemdir}/materials" -name '*.vtf' -exec cp {} "${fastdldir}/materials" \; + find "${systemdir}/materials" -name '*.vmt' -exec cp {} "${fastdldir}/materials" \; + find "${systemdir}/materials" -name '*.vbf' -exec cp {} "${fastdldir}/materials" \; + fn_print_ok "Materials copied" + sleep 0.5 + echo -en "\n" + + # Models + fn_print_dots "Copying models..." + fn_script_log "Copying models" + sleep 1 + mkdir "${fastdldir}/models" + find "${systemdir}/models" -name '*.vtx' -exec cp {} "${fastdldir}/models" \; + find "${systemdir}/models" -name '*.vvd' -exec cp {} "${fastdldir}/models" \; + find "${systemdir}/models" -name '*.mdl' -exec cp {} "${fastdldir}/models" \; + find "${systemdir}/models" -name '*.phy' -exec cp {} "${fastdldir}/models" \; + find "${systemdir}/models" -name '*.jpg' -exec cp {} "${fastdldir}/models" \; + find "${systemdir}/models" -name '*.png' -exec cp {} "${fastdldir}/models" \; + fn_print_ok "Models copied" + sleep 0.5 + echo -en "\n" + + # Particles + fn_print_dots "Copying particles..." + fn_script_log "Copying particles" + sleep 0.5 + mkdir "${fastdldir}/particles" + find "${systemdir}" -name '*.pcf' -exec cp {} "${fastdldir}/particles" \; + fn_print_ok "Particles copied" + sleep 0.5 + echo -en "\n" + + # Sounds + fn_print_dots "Copying sounds..." + fn_script_log "Copying sounds" + sleep 0.5 + mkdir "${fastdldir}/sound" + find "${systemdir}" -name '*.wav' -exec cp {} "${fastdldir}/sound" \; + find "${systemdir}" -name '*.mp3' -exec cp {} "${fastdldir}/sound" \; + find "${systemdir}" -name '*.ogg' -exec cp {} "${fastdldir}/sound" \; + fn_print_ok "Sounds copied" + sleep 0.5 + echo -en "\n" +} + # Generate lua file that will force download any file into the FastDL directory -fn_lua_fastdl(){ +fn_fastdl_gmod_lua(){ # Remove lua file if luaressource is turned off and file exists echo "" if [ "${luaressource}" == "off" ]; then @@ -286,36 +367,54 @@ fn_fastdl_bzip2(){ fn_script_log "bzip2 compression done" sleep 1 echo -en "\n" + # Prompt for clearing uncompressed files, can save some space but might cause issues for gmod + fn_print_dots + if [ "${gamename}" == "Garry's Mod" ]; then + if fn_prompt_yn "Keep original/uncompressed FastDL files?" N; then + fn_print_info "Keeping uncompressed FastDL files"; fn_script_log fn_print_info "Keeping uncompressed FastDL files" + else + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \; fn_print_dots "Clearing uncompressed FastDL files..."; sleep 1; fn_print_ok "Cleared uncompressed FastDL files"; fn_script_log "Cleared uncompressed FastDL files." + fi + echo -en "\n" + else + fn_print_dots "Clearing uncompressed FastDL files..." + sleep 1 + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \ + fn_print_ok "Cleared uncompressed FastDL files." + fn_script_log "Cleared uncompressed FastDL files." + fi fi } fn_fastdl_completed(){ # Finished message echo "" - fn_print_ok "Congratulations, it's done!" + fn_print_ok "FastDL created!" fn_script_log "FastDL job done" sleep 2 echo -en "\n" echo "" - fn_print_info "Need more documentation? See https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL" + fn_print_info_nl "Need more documentation? + echo " * https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL" echo -en "\n" if [ "$bzip2installed" == "0" ]; then - echo "By the way, you'd better install bzip2 and re-run this command!" + echo "By the way, you'd better install bzip2 and re-run this command!" fi - echo "Credits : UltimateByte" + echo "Credits: UltimateByte" } -# Game checking and functions running -# Garry's Mod +# Run functions +fn_check_bzip2 +fn_fastdl_init +fn_fastdl_config +fn_clear_old_fastdl if [ "${gamename}" == "Garry's Mod" ]; then - fn_check_bzip2 - fn_fastdl_init - fn_fastdl_config - fn_fastdl_gmod_config - fn_clear_old_fastdl - fn_gmod_fastdl - fn_lua_fastdl - fn_fastdl_bzip2 - fn_fastdl_completed - exit + fn_fastdl_gmod_luaenforcer + fn_fastdl_gmod + fn_fastdl_gmod_lua +else + fn_fastdl_source fi +fn_fastdl_bzip2 +fn_fastdl_completed +core_exit.sh From 2ac7d096a3176a7a4d52fdc790513c37e01ad5bd Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 03:02:12 +0100 Subject: [PATCH 677/729] added fastdl #721 Added to fn_getopt_generic for now, will need to remove from non-source games when core_getopt.sh rework comes out. --- lgsm/functions/core_getopt.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index bcecc6c2d..1d91f9bc8 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -43,6 +43,8 @@ case "${getopt}" in command_install.sh;; ai|auto-install) fn_autoinstall;; + fd|fastdl) + command_fastdl.sh;; mi|mods-install) command_mods_install.sh;; mu|mods-update) @@ -82,6 +84,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 directory for your server." echo -e "${blue}mods-install\t${default}mi |View and install available mods/addons." echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." From cdba3114a24e63e599dac9487bc30b83f0c4938a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 03:05:52 +0100 Subject: [PATCH 678/729] woops double quote --- lgsm/functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 28e4b53f5..4b7584079 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -394,7 +394,7 @@ fn_fastdl_completed(){ sleep 2 echo -en "\n" echo "" - fn_print_info_nl "Need more documentation? + fn_print_info_nl "Need more documentation?" echo " * https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL" echo -en "\n" if [ "$bzip2installed" == "0" ]; then From 3a4266b9f149daa27465e3ee5feb248bd37f0c09 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 03:16:16 +0100 Subject: [PATCH 679/729] missing ";", attempt for fix --- lgsm/functions/command_fastdl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 4b7584079..0f7c034cd 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -373,13 +373,13 @@ fn_fastdl_bzip2(){ if fn_prompt_yn "Keep original/uncompressed FastDL files?" N; then fn_print_info "Keeping uncompressed FastDL files"; fn_script_log fn_print_info "Keeping uncompressed FastDL files" else - find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \; fn_print_dots "Clearing uncompressed FastDL files..."; sleep 1; fn_print_ok "Cleared uncompressed FastDL files"; fn_script_log "Cleared uncompressed FastDL files." + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \;;fn_print_dots "Clearing uncompressed FastDL files..."; sleep 1; fn_print_ok "Cleared uncompressed FastDL files"; fn_script_log "Cleared uncompressed FastDL files." fi echo -en "\n" else fn_print_dots "Clearing uncompressed FastDL files..." sleep 1 - find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \ + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \; fn_print_ok "Cleared uncompressed FastDL files." fn_script_log "Cleared uncompressed FastDL files." fi From c9329a02fab2f0b3e38d1b85b1892eb366384697 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 03:20:38 +0100 Subject: [PATCH 680/729] no dots in user messages --- lgsm/functions/command_fastdl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 0f7c034cd..edac9e494 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -380,7 +380,7 @@ fn_fastdl_bzip2(){ fn_print_dots "Clearing uncompressed FastDL files..." sleep 1 find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \; - fn_print_ok "Cleared uncompressed FastDL files." + fn_print_ok "Cleared uncompressed FastDL files" fn_script_log "Cleared uncompressed FastDL files." fi fi From 7693392c5823774014ebbd3f63ada749ef652cd5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 03:25:35 +0100 Subject: [PATCH 681/729] addons' --- lgsm/functions/command_fastdl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index edac9e494..ac16d5e64 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -219,11 +219,11 @@ fn_fastdl_gmod(){ # 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" + fn_script_log "Adjusting addons' file structure" sleep 1 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" # Don't remove yet rm -R "${fastdldir:?}/addons" - fn_print_ok "Adjusted addon's file structure" + fn_print_ok "Adjusted addons' file structure" sleep 1 echo -en "\n" fi From b4da7c532bbc234db9d236a280910f03f3fda11e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 04:20:12 +0100 Subject: [PATCH 682/729] various improvements to code logic --- lgsm/functions/command_fastdl.sh | 82 ++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index ac16d5e64..1659a0a21 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -44,11 +44,11 @@ fn_check_bzip2(){ fi } +# Initiates FastDL fn_fastdl_init(){ fn_print_header fn_script_log "Started FastDL Generator" sleep 1 - echo -en "\n" fn_check_bzip2 # User confirmation if ! fn_prompt_yn "Build FastDL directory?" Y; then @@ -72,28 +72,30 @@ fn_fastdl_init(){ fi if [ ! -d "${fastdldir}" ]; then # No directory, won't ask for removing old ones - newfastdl=1 + newfastdl="true" fn_print_dots "Creating fastdl directory" sleep 0.5 mkdir "${fastdldir}" fn_print_ok "Created fastdl directory" - fn_script_log "FastDL created fastdl directory" + fn_script_log "Created fastdl directory" sleep 1 echo -en "\n" clearoldfastdl="off" # Nothing to clear elif [ "$(ls -A "${fastdldir}")" ]; then - newfastdl=0 + newfastdl="false" + else + newfastdl="true" fi } +# Prompts user for FastDL creation settings fn_fastdl_config(){ - # Global settings for FastDL creation fn_print_info "Entering configuration" fn_script_log "Configuration" sleep 2 echo -en "\n" # Prompt for clearing old files if directory was already here - if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then + if [ "${newfastdl}" == "false" ]; then fn_print_dots if fn_prompt_yn "Clear old FastDL files?" Y; then clearoldfastdl="on"; fn_script_log "clearoldfastdl enabled"; fn_print_ok "Clearing Enabled" @@ -102,27 +104,42 @@ fn_fastdl_config(){ fi echo -en "\n" fi - # Prompt for using bzip2 if it's installed + # Settings for bzip2 users if [ ${bzip2installed} == 1 ]; then + # Prompt for using bzip2 if it's installed fn_print_dots - if fn_prompt_yn "Enable file compression using bzip2?" Y; then + if fn_prompt_yn "Enable bzip2 file compression?" Y; then bzip2enable="on"; fn_script_log "bzip2 enabled"; fn_print_ok "bzip2 Enabled" else bzip2enable="off"; fn_script_log "bzip2 disabled"; fn_print_ok "bzip2 Disabled" fi echo -en "\n" + if [ "${gamename}" == "Garry's Mod" ]&&[ "${bzip2enable}" == "on" ]; then + # Prompt for removing uncompressed FastDL files + fn_print_dots + if fn_prompt_yn "Keep original uncompressed FastDL files?" N; then + clearnonbzip2="on"; fn_script_log "Original uncompressed fastDL files won't be kept."; fn_print_ok "Original uncompressed fastDL files won't be kept" + else + clearnonbzip2="off"; fn_script_log "Original uncompressed fastDL files will be kept."; fn_print_ok "Original uncompressed fastDL files will be kept" + fi + echo -en "\n" + else + # Other games default remove non bzip2 files + clearnonbzip2="on" + fn_script_log "Original uncompressed fastDL files won't be kept." + fi fi -} - -fn_fastdl_gmod_luaenforcer(){ - # Prompt for download enforcer, that is using a .lua addfile resource generator - fn_print_dots - if fn_prompt_yn "Use client download enforcer?" Y; then - luaressource="on"; fn_script_log "DL enforcer Enabled"; fn_print_ok "Enforcer Enabled" - else - luaressource="off"; fn_script_log "DL enforcer Disabled"; fn_print_ok "Enforcer Disabled" + # Garry's Mod Specific + if [ "${gamename}" == "Garry's Mod" ]; then + # Prompt for download enforcer, which is using a .lua addfile resource generator + fn_print_dots + if fn_prompt_yn "Use client download enforcer?" Y; then + luaressource="on"; fn_script_log "DL enforcer Enabled"; fn_print_ok "Enforcer Enabled" + else + luaressource="off"; fn_script_log "DL enforcer Disabled"; fn_print_ok "Enforcer Disabled" + fi + echo -en "\n" fi - echo -en "\n" } fn_clear_old_fastdl(){ @@ -148,8 +165,8 @@ fn_fastdl_gmod(){ echo -en "\n" # No choice to cd to the directory, as find can't then display relative directory - cd "${systemdir}" - + cd "${systemdir}" || exit + # Map Files fn_print_dots "Copying map files..." fn_script_log "Copying map files" @@ -312,7 +329,7 @@ fn_fastdl_source(){ } # Generate lua file that will force download any file into the FastDL directory -fn_fastdl_gmod_lua(){ +fn_fastdl_gmod_lua_enforcer(){ # Remove lua file if luaressource is turned off and file exists echo "" if [ "${luaressource}" == "off" ]; then @@ -341,8 +358,8 @@ fn_fastdl_gmod_lua(){ fn_script_log "Generating new download enforcer" sleep 1 # Read all filenames and put them into a lua file at the right path - find "${fastdldir}" \( -type f ! -name "*.bz2" \) -printf '%P\n' | while read line; do - echo "resource.AddFile( "\""${line}"\"" )" >> ${luafastdlfullpath} + find "${fastdldir:?}" \( -type f ! -name "*.bz2" \) -printf '%P\n' | while read line; do + echo "resource.AddFile( "\""${line}"\"" )" >> "${luafastdlfullpath}" done fn_print_ok "Download enforcer generated" fn_script_log "Download enforcer generated" @@ -362,24 +379,18 @@ fn_fastdl_bzip2(){ fn_print_dots "Compressing files using bzip2..." fn_script_log "Compressing files using bzip2..." # bzip2 all files that are not already compressed (keeping original files) - find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; + find "${fastdldir:?}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; fn_print_ok "bzip2 compression done" fn_script_log "bzip2 compression done" sleep 1 echo -en "\n" # Prompt for clearing uncompressed files, can save some space but might cause issues for gmod fn_print_dots - if [ "${gamename}" == "Garry's Mod" ]; then - if fn_prompt_yn "Keep original/uncompressed FastDL files?" N; then - fn_print_info "Keeping uncompressed FastDL files"; fn_script_log fn_print_info "Keeping uncompressed FastDL files" - else - find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \;;fn_print_dots "Clearing uncompressed FastDL files..."; sleep 1; fn_print_ok "Cleared uncompressed FastDL files"; fn_script_log "Cleared uncompressed FastDL files." - fi - echo -en "\n" - else - fn_print_dots "Clearing uncompressed FastDL files..." + # Clear non compressed FastDL files + if [ "${clearnonbzip2}" == "on" ]; then + fn_print_dots "Clearing original uncompressed FastDL files..." sleep 1 - find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec rm {} \; + find "${fastdldir:?}" \( -type f ! -name "*.bz2" \) -exec rm {} \; fn_print_ok "Cleared uncompressed FastDL files" fn_script_log "Cleared uncompressed FastDL files." fi @@ -409,9 +420,8 @@ fn_fastdl_init fn_fastdl_config fn_clear_old_fastdl if [ "${gamename}" == "Garry's Mod" ]; then - fn_fastdl_gmod_luaenforcer fn_fastdl_gmod - fn_fastdl_gmod_lua + fn_fastdl_gmod_lua_enforcer else fn_fastdl_source fi From b94bb9a29352412e3bc2357f9628e7ee2ee23705 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 04:30:07 +0100 Subject: [PATCH 683/729] useless print_dots --- lgsm/functions/command_fastdl.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 1659a0a21..a79aeb5e9 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -115,7 +115,7 @@ fn_fastdl_config(){ fi echo -en "\n" if [ "${gamename}" == "Garry's Mod" ]&&[ "${bzip2enable}" == "on" ]; then - # Prompt for removing uncompressed FastDL files + # Prompt for clearing uncompressed files, can save some space but might cause issues for gmod fn_print_dots if fn_prompt_yn "Keep original uncompressed FastDL files?" N; then clearnonbzip2="on"; fn_script_log "Original uncompressed fastDL files won't be kept."; fn_print_ok "Original uncompressed fastDL files won't be kept" @@ -384,8 +384,6 @@ fn_fastdl_bzip2(){ fn_script_log "bzip2 compression done" sleep 1 echo -en "\n" - # Prompt for clearing uncompressed files, can save some space but might cause issues for gmod - fn_print_dots # Clear non compressed FastDL files if [ "${clearnonbzip2}" == "on" ]; then fn_print_dots "Clearing original uncompressed FastDL files..." From c517b4624bc7a1190609d4423b03c74f6f63acf9 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 04:40:15 +0100 Subject: [PATCH 684/729] Inverted gmod clearnonbzip2 --- lgsm/functions/command_fastdl.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index a79aeb5e9..2c12ded38 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -118,9 +118,9 @@ fn_fastdl_config(){ # Prompt for clearing uncompressed files, can save some space but might cause issues for gmod fn_print_dots if fn_prompt_yn "Keep original uncompressed FastDL files?" N; then - clearnonbzip2="on"; fn_script_log "Original uncompressed fastDL files won't be kept."; fn_print_ok "Original uncompressed fastDL files won't be kept" - else clearnonbzip2="off"; fn_script_log "Original uncompressed fastDL files will be kept."; fn_print_ok "Original uncompressed fastDL files will be kept" + else + clearnonbzip2="on"; fn_script_log "Original uncompressed fastDL files won't be kept."; fn_print_ok "Original uncompressed fastDL files won't be kept" fi echo -en "\n" else From 828a9831b5a765c107c6a3ab1e7c3238bc485df7 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 05:55:29 +0100 Subject: [PATCH 685/729] chivalry init --- ChivalryMedievalWarfare/chivalrymwserver | 199 +++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 ChivalryMedievalWarfare/chivalrymwserver diff --git a/ChivalryMedievalWarfare/chivalrymwserver b/ChivalryMedievalWarfare/chivalrymwserver new file mode 100644 index 000000000..2f4179304 --- /dev/null +++ b/ChivalryMedievalWarfare/chivalrymwserver @@ -0,0 +1,199 @@ +#!/bin/bash +# Project: Game Server Managers - LinuxGSM +# Author: Daniel Gibbs +# License: MIT License, Copyright (c) 2017 Daniel Gibbs +# Purpose: Chivalry: Medieval Warfare | Server Management Script +# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors +# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki +# Website: https://gameservermanagers.com + +# Debugging +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="170219" + +########################## +######## Settings ######## +########################## + +#### Server Settings #### + +## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters +ip="0.0.0.0" +port=7000" +queryport="7010" +adminpassword="CHANGE_ME" + +## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters +fn_parms(){ +parms="aocffa-moor_p\?steamsockets\?adminpassword=${adminpassword}\?port=${port}\?queryport=${queryport} -seekfreeloadingserver" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) +# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email +emailalert="off" +email="email@example.com" +emailfrom="" + +# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update +updateonstart="off" + +## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging +consolelogging="on" +logdays="7" + +#### LinuxGSM Advanced Settings #### + +## SteamCMD Settings +# Server appid +appid="220070" +# Steam App Branch Select +# Allows to opt into the various Steam app branches. Default branch is "". +# Example: "-beta latest_experimental" +branch="" + +## Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="GameServerManagers" +githubrepo="LinuxGSM" +githubbranch="master" + +## LinuxGSM Server Details +# Do not edit +gamename="Chivalry: Medieval Warfare" +engine="unreal3" + +## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers +servicename="chivalrymw-server" + +#### Directories #### +# Edit with care + +## Work 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" + +## Server Specific Directories +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./UDKGameServer-Linux" +servercfg="unknown" +servercfgdefault="unknown" +servercfgdir="${systemdir}" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +gamelogdir="${rootdir}/log/server" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" +gamelog="${gamelogdir}/${servicename}-game.log" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" + +## Logs Naming +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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 +} + +# Prevent from running this script as root. +if [ "$(whoami)" = "root" ]; then + if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then + echo "[ FAIL ] Do NOT run this script as root!" + exit 1 + else + core_functions.sh + check_root.sh + fi +fi + +core_dl.sh +core_functions.sh +getopt=$1 +core_getopt.sh From 51542d311f7d6378dbb8ae7713fb0bf3ffd3c5fa Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 05:56:39 +0100 Subject: [PATCH 686/729] double quote --- ChivalryMedievalWarfare/chivalrymwserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChivalryMedievalWarfare/chivalrymwserver b/ChivalryMedievalWarfare/chivalrymwserver index 2f4179304..0192710fd 100644 --- a/ChivalryMedievalWarfare/chivalrymwserver +++ b/ChivalryMedievalWarfare/chivalrymwserver @@ -24,7 +24,7 @@ version="170219" ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -port=7000" +port="7000" queryport="7010" adminpassword="CHANGE_ME" From 8f0e4c07a0e04318c5af26733db57b83e0fc1f10 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 06:05:11 +0100 Subject: [PATCH 687/729] execdir --- ChivalryMedievalWarfare/chivalrymwserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChivalryMedievalWarfare/chivalrymwserver b/ChivalryMedievalWarfare/chivalrymwserver index 0192710fd..ad1a83d94 100644 --- a/ChivalryMedievalWarfare/chivalrymwserver +++ b/ChivalryMedievalWarfare/chivalrymwserver @@ -99,7 +99,7 @@ filesdir="${rootdir}/serverfiles" ## Server Specific Directories systemdir="${filesdir}" -executabledir="${filesdir}" +executabledir="${filesdir}/Binaries/Linux/" executable="./UDKGameServer-Linux" servercfg="unknown" servercfgdefault="unknown" From 5f53f4c22b12e37bc42774ada7088c0adec75670 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 06:19:43 +0100 Subject: [PATCH 688/729] cfg files --- ChivalryMedievalWarfare/chivalrymwserver | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ChivalryMedievalWarfare/chivalrymwserver b/ChivalryMedievalWarfare/chivalrymwserver index ad1a83d94..6315fc2e3 100644 --- a/ChivalryMedievalWarfare/chivalrymwserver +++ b/ChivalryMedievalWarfare/chivalrymwserver @@ -101,9 +101,9 @@ filesdir="${rootdir}/serverfiles" systemdir="${filesdir}" executabledir="${filesdir}/Binaries/Linux/" executable="./UDKGameServer-Linux" -servercfg="unknown" -servercfgdefault="unknown" -servercfgdir="${systemdir}" +servercfg="PCServer-UDKGame.ini" +servercfgdefault="PCServer-UDKGame.ini" +servercfgdir="${systemdir}/UDKGame/Config" servercfgfullpath="${servercfgdir}/${servercfg}" ## Backup Directory From a2a21a1e73e2b6125e08cf84ef2ae752ef8aa516 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 06:27:22 +0100 Subject: [PATCH 689/729] gamelog & multihome --- ChivalryMedievalWarfare/chivalrymwserver | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChivalryMedievalWarfare/chivalrymwserver b/ChivalryMedievalWarfare/chivalrymwserver index 6315fc2e3..fab972b91 100644 --- a/ChivalryMedievalWarfare/chivalrymwserver +++ b/ChivalryMedievalWarfare/chivalrymwserver @@ -30,7 +30,7 @@ adminpassword="CHANGE_ME" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ -parms="aocffa-moor_p\?steamsockets\?adminpassword=${adminpassword}\?port=${port}\?queryport=${queryport} -seekfreeloadingserver" +parms="aocffa-moor_p\?steamsockets\?adminpassword=${adminpassword}\?port=${port}\?queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog} -seekfreeloadingserver" } #### LinuxGSM Settings #### @@ -121,6 +121,7 @@ emaillog="${scriptlogdir}/${servicename}-email.log" ## Logs Naming scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" ######################## ######## Script ######## From ec30a155cef3f6e1d695c94654dc2f0095e74823 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 06:41:47 +0100 Subject: [PATCH 690/729] New default ports & password through cfg file --- ChivalryMedievalWarfare/chivalrymwserver | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ChivalryMedievalWarfare/chivalrymwserver b/ChivalryMedievalWarfare/chivalrymwserver index fab972b91..6fd0d8ff0 100644 --- a/ChivalryMedievalWarfare/chivalrymwserver +++ b/ChivalryMedievalWarfare/chivalrymwserver @@ -24,13 +24,12 @@ version="170219" ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters ip="0.0.0.0" -port="7000" -queryport="7010" -adminpassword="CHANGE_ME" +port="7777" +queryport="27960" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ -parms="aocffa-moor_p\?steamsockets\?adminpassword=${adminpassword}\?port=${port}\?queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog} -seekfreeloadingserver" +parms="aocffa-moor_p\?steamsockets\?port=${port}\?queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog} -seekfreeloadingserver" } #### LinuxGSM Settings #### From ac0390719f940ba989fb9a5af7ae1986cd611fdf Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 19:17:57 +0100 Subject: [PATCH 691/729] fit changes to master --- lgsm/functions/install_logs.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 2019fdb13..3feb0feea 100644 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -14,7 +14,7 @@ if [ "${checklogs}" != "1" ]; then echo "=================================" fi sleep 1 -# Create dir's for the script and console logs +# Create script and console log directories mkdir -v "${rootdir}/log" mkdir -v "${scriptlogdir}" touch "${scriptlog}" @@ -23,23 +23,23 @@ if [ -n "${consolelogdir}" ]; then touch "${consolelog}" fi -# If a server is source or goldsource, TeamSpeak 3, Starbound, Project Zomhoid create a symbolic link to the game server logs. -if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${engine}" == "starbound" ]||[ "${engine}" == "projectzomboid" ]||[ "${engine}" == "unreal" ]; then +# Create gamelogdir if variable exists but directory does not +if [ -n "${gamelogdir}" ]&&[ ! -d "${gamelogdir}" ]; then + mkdir -pv "${gamelogdir}" +fi + +# Symlink gamelogdir to lgsm logs if variable exists +if [ -n "${gamelogdir}" ]; then if [ ! -h "${rootdir}/log/server" ]; then ln -nfsv "${gamelogdir}" "${rootdir}/log/server" fi fi -# If a server is unreal2 or unity3d create a dir. -if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]||[ "${gamename}" == "Teeworlds" ]||[ "${gamename}" == "seriousengine35" ]; then - mkdir -pv "${gamelogdir}" -fi - -# If server uses SteamCMD create a symbolic link to the Steam logs. +# If server uses SteamCMD create a symbolic link to the Steam logs if [ -d "${rootdir}/Steam/logs" ]; then if [ ! -h "${rootdir}/log/steamcmd" ]; then ln -nfsv "${rootdir}/Steam/logs" "${rootdir}/log/steamcmd" fi fi sleep 1 -fn_script_log_info "Logs installed" \ No newline at end of file +fn_script_log_info "Logs installed" From 0c94a78f908228984f3448ee68feb776fea7850c Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 19:18:23 +0100 Subject: [PATCH 692/729] Fit changes to master --- lgsm/functions/command_console.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index 98ddcae11..0a93a94fb 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -16,7 +16,6 @@ echo "" if ! fn_prompt_yn "Continue?" Y; then echo Exiting; return fi -done fn_print_dots "Accessing console" sleep 1 check_status.sh From 418fb6b9ea19870e03737b901a32b6228c2e0e19 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 19:55:21 +0100 Subject: [PATCH 693/729] allow addons clear + more logic output --- lgsm/functions/command_fastdl.sh | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 2c12ded38..8a02f90a4 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -117,10 +117,10 @@ fn_fastdl_config(){ if [ "${gamename}" == "Garry's Mod" ]&&[ "${bzip2enable}" == "on" ]; then # Prompt for clearing uncompressed files, can save some space but might cause issues for gmod fn_print_dots - if fn_prompt_yn "Keep original uncompressed FastDL files?" N; then - clearnonbzip2="off"; fn_script_log "Original uncompressed fastDL files will be kept."; fn_print_ok "Original uncompressed fastDL files will be kept" + if fn_prompt_yn "Clear non-bzip2 FastDL files?" Y; then + clearnonbzip2="on"; fn_script_log "Clearing non-bzip2 files Enabled."; fn_print_ok "Clearing non-bzip2 files Enabled" else - clearnonbzip2="on"; fn_script_log "Original uncompressed fastDL files won't be kept."; fn_print_ok "Original uncompressed fastDL files won't be kept" + clearnonbzip2="off"; fn_script_log "Clearing non-bzip2 files Disabled."; fn_print_ok "Clearing non-bzip2 files Disabled" fi echo -en "\n" else @@ -131,12 +131,18 @@ fn_fastdl_config(){ fi # Garry's Mod Specific if [ "${gamename}" == "Garry's Mod" ]; then + if fn_prompt_yn "Clear addons dir from fastdl dir?" Y; then + cleargmodaddons="on"; fn_script_log "Addons clearing Enabled."; fn_print_ok "Addons clearing Enabled" + else + cleargmodaddons="off"; fn_script_log "Addons clearing Disabled."; fn_print_ok "Addons clearing Disabled" + fi + echo -en "\n" # Prompt for download enforcer, which is using a .lua addfile resource generator fn_print_dots if fn_prompt_yn "Use client download enforcer?" Y; then - luaressource="on"; fn_script_log "DL enforcer Enabled"; fn_print_ok "Enforcer Enabled" + luaressource="on"; fn_script_log "DL enforcer Enabled."; fn_print_ok "Enforcer Enabled" else - luaressource="off"; fn_script_log "DL enforcer Disabled"; fn_print_ok "Enforcer Disabled" + luaressource="off"; fn_script_log "DL enforcer Disabled."; fn_print_ok "Enforcer Disabled" fi echo -en "\n" fi @@ -239,10 +245,19 @@ fn_fastdl_gmod(){ fn_script_log "Adjusting addons' file structure" sleep 1 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" - # Don't remove yet rm -R "${fastdldir:?}/addons" fn_print_ok "Adjusted addons' file structure" sleep 1 echo -en "\n" + # Clear addons directory in fastdl + if [ "${cleargmodaddons}" == "on" ]; then + fn_print_info "Clearing addons dir from fastdl dir" + fn_script_log "Clearing addons dir from fastdl dir" + sleep 1 + rm -R "${fastdldir:?}/addons" + fn_print_ok "Cleared addons dir from fastdl dir" + sleep 1 + echo -en "\n" + fi fi # Correct content that may be into a lua directory by mistake like some darkrpmodification addons From 184396a5ebc333218c0580f00cfdf0d66e14a9d2 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 19:58:59 +0100 Subject: [PATCH 694/729] print dots --- lgsm/functions/command_fastdl.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 8a02f90a4..5d20df759 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -131,6 +131,8 @@ fn_fastdl_config(){ fi # Garry's Mod Specific if [ "${gamename}" == "Garry's Mod" ]; then + # Prompt to clear addons dir from fastdl, can use unnecessary space or be required depending on addon's file structures + fn_print_dots if fn_prompt_yn "Clear addons dir from fastdl dir?" Y; then cleargmodaddons="on"; fn_script_log "Addons clearing Enabled."; fn_print_ok "Addons clearing Enabled" else From b00548f6bb259539a93def9140a41764b9bd86fe Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 20 Feb 2017 19:54:44 +0000 Subject: [PATCH 695/729] Added auto instal to mumble server --- lgsm/functions/core_getopt.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index bcecc6c2d..e738cab25 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -453,6 +453,8 @@ case "${getopt}" in command_console.sh;; i|install) command_install.sh;; + ai|auto-install) + fn_autoinstall;; dd|detect-deps) command_dev_detect_deps.sh;; dg|detect-glibc) @@ -482,6 +484,7 @@ case "${getopt}" in 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." } | column -s $'\t' -t esac } From 9d5097f9cd7ec243fcc9d8f2188e85a753a418c6 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 20 Feb 2017 19:56:34 +0000 Subject: [PATCH 696/729] debug option was missing from mumbleserver --- lgsm/functions/core_getopt.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index e738cab25..a63efc6cc 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -447,6 +447,8 @@ case "${getopt}" in command_postdetails.sh;; b|backup) command_backup.sh;; + d|debug) + command_debug.sh;; dev|dev-debug) command_dev_debug.sh;; c|console) From b3c615f333d4cc27029a0e41eab8481d8344a622 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 20 Feb 2017 21:01:04 +0000 Subject: [PATCH 697/729] Fixed IP for MTA server --- lgsm/functions/info_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 9ce3ba242..cb17e09d5 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -663,7 +663,7 @@ fn_info_config_mta(){ ase="Disabled" fi - ip=$(grep -m 1 "serverip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') + ip=$(grep -m 1 "serverip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<") ipsetinconfig=1 ipinconfigvar="serverip" From 73a44719ae7ce2c1709cca5f7e953dcfe2de9ae3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 20 Feb 2017 21:31:14 +0000 Subject: [PATCH 698/729] Added several more games to graceful shutdown --- lgsm/functions/command_stop.sh | 38 ++++++---------------------------- 1 file changed, 6 insertions(+), 32 deletions(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 341ad4d95..bef3ddf26 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -231,9 +231,9 @@ fn_stop_graceful_mta(){ fn_stop_graceful_select(){ if [ "${gamename}" == "7 Days To Die" ]; then fn_stop_graceful_sdtd - elif [ "${gamename}" == "Factorio" ]||[ "${engine}" == "unreal4" ]||[ "${engine}" == "unreal3" ]||[ "${engine}" == "unreal2" ]||[ "${engine}" == "unreal" ]; then + elif [ "${gamename}" == "Factorio" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Multi Theft Auto" ]||[ "${engine}" == "unity3d" ]||[ "${engine}" == "unreal4" ]||[ "${engine}" == "unreal3" ]||[ "${engine}" == "unreal2" ]||[ "${engine}" == "unreal" ]||[ "${gamename}" == "Mumble" ]; then fn_stop_graceful_ctrlc - elif [ "${engine}" == "source" ]||[ "${engine}" == "quake" ]||[ "${engine}" == "idtech2" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "idtech3_ql" ]; then + elif [ "${engine}" == "source" ]||[ "${engine}" == "quake" ]||[ "${engine}" == "idtech2" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "idtech3_ql" ]||[ "${engine}" == "Just Cause 2" ]; then fn_stop_graceful_quit elif [ "${engine}" == "goldsource" ]; then fn_stop_graceful_goldsource @@ -290,8 +290,8 @@ fn_stop_ark(){ fn_stop_teamspeak3(){ fn_print_dots "${servername}" - sleep 1 - ${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 + sleep 0.5 + "${filesdir}"/ts3server_startscript.sh stop > /dev/null 2>&1 check_status.sh if [ "${status}" == "0" ]; then # Remove lockfile @@ -304,29 +304,10 @@ fn_stop_teamspeak3(){ fi } -fn_stop_mumble(){ - # Get needed port info - info_config.sh - fn_print_dots "Stopping ${servername}" - 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 - if [ "${status}" == "0" ]; then - # Remove lockfile - rm -f "${rootdir}/${lockselfname}" - fn_stop_tmux - fn_script_log_pass "Stopped ${servername}" - else - fn_print_fail_nl "Unable to stop ${servername}" - fn_script_log_error "Unable to stop ${servername}" - fi -} - fn_stop_tmux(){ fn_print_dots "${servername}" fn_script_log_info "tmux kill-session: ${servername}" - sleep 1 + sleep 0.5 # Kill tmux session tmux kill-session -t "${servicename}" > /dev/null 2>&1 sleep 0.5 @@ -357,13 +338,6 @@ fn_stop_pre_check(){ else fn_stop_teamspeak3 fi - elif [ "${gamename}" == "Mumble" ]; then - if [ "${status}" == "0" ]; then - fn_print_info_nl "${servername} is already stopped" - fn_script_log_error "${servername} is already stopped" - else - fn_stop_mumble - fi else if [ "${status}" == "0" ]; then fn_print_info_nl "${servername} is already stopped" @@ -375,7 +349,7 @@ fn_stop_pre_check(){ } fn_print_dots "${servername}" -sleep 1 +sleep 0.5 check.sh info_config.sh fn_stop_pre_check From b6a708fcd97c54c5a6bb6c54e27002f0ae3b900a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 23:34:52 +0100 Subject: [PATCH 699/729] Attempt for new op --- lgsm/functions/core_getopt.sh | 1090 ++++----------------------------- 1 file changed, 128 insertions(+), 962 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 1d91f9bc8..f87b55a0e 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -6,980 +6,146 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -fn_getopt_generic(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - fu|force-update|update-restart) - forceupdate=1; - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - v|validate) - command_validate.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - fd|fastdl) - command_fastdl.sh;; - mi|mods-install) - command_mods_install.sh;; - mu|mods-update) - command_mods_update.sh;; - mr|mods-remove) - command_mods_remove.sh;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." - echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - 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}console\t${default}c |Console allows you to access the live view of a 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." - 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 directory for your server." - echo -e "${blue}mods-install\t${default}mi |View and install available mods/addons." - echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." - echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." - } | column -s $'\t' -t - esac -} - -fn_getopt_generic_update_no_steam(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}u |Checks and applies updates." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - 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}console\t${default}c |Console allows you to access the live view of a 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." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - } | column -s $'\t' -t - esac -} - -fn_getopt_generic_no_update(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - echo -e "${blue}details\t${default}dt |Displays useful infomation 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}console\t${default}c |Console allows you to access the live view of a 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." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - } | column -s $'\t' -t - esac -} - -fn_getopt_teamspeak3(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - pw|change-password) - command_ts3_server_pass.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}u |Checks and applies updates from teamspeak.com." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - 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}change-password\t${default}pw |Changes TS3 serveradmin password." - echo -e "${blue}backup\t${default}b |Create archive of the server." - echo -e "${blue}install\t${default}i |Install the server." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - } | column -s $'\t' -t - esac -} - -fn_getopt_minecraft(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}u |Checks and applies updates from mojang.com." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - echo -e "${blue}details\t${default}dt |Displays useful infomation 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}console\t${default}c |Console allows you to access the live view of a 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." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - } | column -s $'\t' -t - esac -} - -fn_getopt_mta(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - fu|force-update|update-restart) - forceupdate=1; - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ir|install-default-resources) - command_install_resources_mta.sh;; - ai|auto-install) - fn_autoinstall;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}u |Checks and applies updates from linux.mtasa.com." - echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from linux.mtasa.com." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - echo -e "${blue}details\t${default}dt |Displays useful infomation 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}console\t${default}c |Console allows you to access the live view of a 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." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - echo -e "${blue}install-default-resources\t${default}ir |Install the MTA default resources." - } | column -s $'\t' -t - esac -} - -fn_getopt_mumble(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - dev|dev-debug) - command_dev_debug.sh;; - c|console) - command_console.sh;; - i|install) - command_install.sh;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}u |Checks and applies updates from GitHub." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - 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 -} - -fn_getopt_dstserver(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - fu|force-update|update-restart) - forceupdate=1; - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - v|validate) - command_validate.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - ct|cluster-token) - install_dst_token.sh;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." - echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - 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}console\t${default}c |Console allows you to access the live view of a 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." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - echo -e "${blue}cluster-token\t${default}ct |Configure cluster token." - } | column -s $'\t' -t - esac -} - -fn_getopt_gmodserver(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - fu|force-update|update-restart) - forceupdate=1; - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - v|validate) - command_validate.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - fd|fastdl) - command_fastdl.sh;; - mi|mods-install) - command_mods_install.sh;; - mu|mods-update) - command_mods_update.sh;; - mr|mods-remove) - command_mods_remove.sh;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." - echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - echo -e "${blue}details\t${default}dt |Displays useful information about the server." - echo -e "${blue}backup\t${default}b |Create archive of the server." - echo -e "${blue}console\t${default}c |Console allows you to access the live view of a 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." - 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 directory for your server." - echo -e "${blue}mods-install\t${default}mi |View and install available mods/addons." - echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." - echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." - } | column -s $'\t' -t - esac -} - -fn_getopt_rustserver(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - fu|force-update|update-restart) - forceupdate=1; - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - v|validate) - command_validate.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - pd|postdetails) - command_postdetails.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - mi|mods-install) - command_mods_install.sh;; - mu|mods-update) - command_mods_update.sh;; - mr|mods-remove) - command_mods_remove.sh;; - wi|wipe) - command_wipe.sh;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." - echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - 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}console\t${default}c |Console allows you to access the live view of a 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." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - echo -e "${blue}mods-install\t${default}mi |View and install available mods/addons." - echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." - echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." - echo -e "${blue}wipe\t${default}wi |Wipe your Rust server." - } | column -s $'\t' -t - esac -} - -fn_getopt_unreal(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - mc|map-compressor) - compress_ut99_maps.sh;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - echo -e "${blue}details\t${default}dt |Displays useful information about the server." - echo -e "${blue}backup\t${default}b |Create archive of the server." - echo -e "${blue}console\t${default}c |Console allows you to access the live view of a 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." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - echo -e "${blue}map-compressor\t${default}mc |Compresses all ${gamename} server maps." - } | column -s $'\t' -t - esac -} +### Define all commands here ### +## User commands | Trigger commands | Description +# Standard commands +cmd_install=( "i;install" "command_install.sh" "Install the server." ) +cmd_auto_install=( "ai;auto-install" "command_autoinstall.sh" "Install the server without prompts." ) +cmd_start=( "st;start" "command_start.sh" "Start the server." ) +cmd_stop=( "sp;stop" "command_stop.sh" "Stop the server." ) +cmd_restart=( "r;restart" "command_restart.sh" "Restart the server." ) +cmd_details=( "dt;details" "command_details.sh" "Display relevant server information." ) +cmd_postdetails=( "pd;postdetails" "command_postdetails.sh" "Post stripped details to pastebin for support." ) +cmd_backup=( "b;backup;" "command_backup.sh" "Create archives of the server." ) +cmd_update_functions=( "uf;update-functions" "command_update_functions.sh" "Update LinuxGSM functions." ) +cmd_test_alert=( "ta;test-alert" "command_test_alert.sh" "Send a test alert." ) +cmd_monitor=( "m;monitor" "command_monitor.sh" "Check server status and restart it if crashed." ) +# Console servers only +cmd_console=( "c;console" "command_console.sh" "Access server console." ) +cmd_debug=( "d;debug" "command_debug.sh" "Start server directly in your terminal." ) +# Update servers only +cmd_update=( "u;update" "command_update.sh" "Check for updates and apply if available." ) +cmd_force_update=( "fu;force-update;update-restart;ur" "forceupdate=1; command_update.sh" "Unconditionally update the server." ) +# SteamCMD servers only +cmd_validate=( "v;validate" "command_validate.sh" "Validate server files with SteamCMD." ) +# Server with mods-install +cmd_mods_install=( "mi;mods-install" "command_mods_install.sh" "View and install available mods/addons." ) +cmd_mods_remove=( "mr;mods-remove" "command_mods_remove.sh" "View and remove an installed mod/addon." ) +cmd_mods_update=( "mu;mods-update" "command_mods_update.sh" "Update installed mods/addons." ) +# Server specific +cmd_change_password=( "pw;change-password" "command_ts3_server_pass.sh" "Change TS3 serveradmin password." ) +cmd_install_default_ressources=( "ir;install-default-ressources" "command_install_resources_mta.sh" "Install the MTA default resources." ) +cmd_wipe=( "wi;wipe" "command_wipe.sh" "Wipe your server data." ) +cmd_map_compressor_u99=( "mc;map-compressor" "compress_ut99_maps.sh" "Compresses all ${gamename} server maps." ) +cmd_map_compressor_u2=( "mc;map-compressor" "compress_unreal2_maps.sh" "Compresses all ${gamename} server maps." ) +cmd_install_cdkey=( "cd;server-cd-key" "install_ut2k4_key.sh" "Add your server cd key." ) +cmd_install_dst_token=( "ct;cluster-token" "install_dst_token.sh" "Configure cluster token." ) +# Dev commands +cmd_dev_detect_deps=( "dd;detect-depts" "command_dev_detect_deps.sh" "Detect server dependencies." ) +cmd_dev_detect_glibc=( "dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect server glibc requirements." ) +cmd_dev_detect_ldd=( "dl;detect-ldd" "command_dev_detect_ldd.sh" "Detect server ldd requirements." ) + +### Set specific opt here ### + +## Common opt to all servers + +currentopt=( "${cmd_install[@]}" "${cmd_auto_install[@]}" "${cmd_start[@]}" "${cmd_stop[@]}" "${cmd_restart[@]}" "${cmd_details[@]}" ) +currentopt+=( "${cmd_backup[@]}" "${cmd_update_functions[@]}" "${cmd_test_alert[@]}" "${cmd_monitor[@]}" ) + +## Servers that do not have a feature + +# Exclude games without a console +if [ "${gamename}" != "TeamSpeak 3" ]; then + currentopt+=( "${cmd_console[@]}" ) +fi +# Exclude noupdated games here +if [ "${gamename}" != "Battlefield: 1942" ]&&[ "${gamename}" != "Call of Duty" ]&&[ "${gamename}" != "Call of Duty: United Offensive" ]&&[ "${gamename}" != "Call of Duty 2" ]&&[ "${gamename}" != "Call of Duty 4" ]&&[ "${gamename}" != "Call of Duty: World at War" ]&&[ "${gamename}" != "QuakeWorld" ]&&[ "${gamename}" != "Quake 2" ]&&[ "${gamename}" != "Quake 3: Arena" ]&&[ "${gamename}" != "Wolfenstein: Enemy Territory" ]; then + currentopt+=( "${cmd_update[@]}" ) +fi +## Include games that have access to specific commands +# Validate command +if [ -n "${appid}" ]; then + currentopt+=( "${cmd_validate[@]}" ) +fi +# FastDL command +if [ "${engine}" == "source" ]; then + currentopt+=( "${cmd_fastdl[@]}" ) +fi +# Wipe command +if [ "${gamename}" == "Rust" ]; then + currentopt+=( "${cmd_wipe[@]}" ) +fi +# Mods commands +if [ "${engine}" == "source" ]||[ "${gamename}" == "Rust" ]|[ "${gamename}" == "Hurtworld" ]|[ "${gamename}" == "7 Days To Die" ]; then + currentopt+=( "${cmd_mods_install[@]}" "${cmd_mods_remove[@]}" "${cmd_mods_update[@]}" ) +fi -fn_getopt_unreal2(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - u|update) - command_update.sh;; - fu|force-update|update-restart) - forceupdate=1; - command_update.sh;; - uf|update-functions) - command_update_functions.sh;; - v|validate) - command_validate.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - mc|map-compressor) - compress_unreal2_maps.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 +## Game server exclusive commands +# TeamSpeak exclusive +if [ "${gamename}" == "TeamSpeak 3" ]; then + currentopt+=( "${cmd_change_password[@]}" ) +fi +# Unreal exclusive +if [ "${engine}" == "unreal2" ]; then + if [ "${gamename}" == "Unreal Tournament 2004" ]; then + currentopt+=( "${cmd_install_cdkey[@]}" "${cmd_map_compressor_u2[@]}" ) + else + currentopt+=( "${cmd_map_compressor_u2[@]}" ) fi - echo "Usage: $0 [option]" - echo "${gamename} - Linux Game Server Manager - Version ${version}" - echo "https://gameservermanagers.com/${selfname}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update\t${default}Checks and applies updates from SteamCMD." - echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - echo -e "${blue}details\t${default}dt |Displays useful information about the server." - echo -e "${blue}backup\t${default}b |Create archive of the server." - echo -e "${blue}console\t${default}c |Console allows you to access the live view of a 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." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - echo -e "${blue}map-compressor\t${default}mc |Compresses all ${gamename} server maps." - } | column -s $'\t' -t - esac -} +fi +if [ "${engine}" == "unreal" ]; then + currentopt+=( "${cmd_map_compressor_u99[@]}" ) +fi +# DST exclusive +if [ "${gamename}" == "Don't Starve Together" ]; then + currentopt+=( "${cmd_install_dst_token[@]}" ) +fi +# MTA exclusive +if [ "${gamename}" == "Multi Theft Auto" ]; then + currentopt+=( "${cmd_install_default_ressources[@]}" ) +fi -fn_getopt_ut2k4(){ -case "${getopt}" in - st|start) - command_start.sh;; - sp|stop) - command_stop.sh;; - r|restart) - command_restart.sh;; - uf|update-functions) - command_update_functions.sh;; - m|monitor) - command_monitor.sh;; - ta|test-alert) - command_test_alert.sh;; - dt|details) - command_details.sh;; - b|backup) - command_backup.sh;; - c|console) - command_console.sh;; - d|debug) - command_debug.sh;; - dev|dev-debug) - command_dev_debug.sh;; - i|install) - command_install.sh;; - ai|auto-install) - fn_autoinstall;; - cd|server-cd-key) - install_ut2k4_key.sh;; - mc|map-compressor) - compress_unreal2_maps.sh;; - dd|detect-deps) - command_dev_detect_deps.sh;; - dg|detect-glibc) - command_dev_detect_glibc.sh;; - dl|detect-ldd) - command_dev_detect_ldd.sh;; - *) - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi +### Build list of available commands +optcommands=() +index="0" +for ((index="0"; index <= ${#currentopt[@]}; index+3)); do + cmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" + for ((cmdindex=1; cmdindex <= ${cmdamount}; cmdindex++)); do + optcommands+=( "$(echo "${currentopt[index]}"| awk -F ';' '{ print $cmdindex }')" ) + done +done + +### Check if user command exists or run the command +if [ ! " ${optcommands[@]} " =~ "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" echo "https://gameservermanagers.com/${selfname}" echo -e "" echo -e "${lightyellow}Commands${default}" + # Display available commands + index="0" { - echo -e "${blue}start\t${default}st |Start the server." - echo -e "${blue}stop\t${default}sp |Stop the server." - echo -e "${blue}restart\t${default}r |Restart the server." - echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." - echo -e "${blue}monitor\t${default}m |Checks that the server is running." - echo -e "${blue}test-alert\t${default}ta |Sends test alert." - echo -e "${blue}details\t${default}dt |Displays useful information about the server." - echo -e "${blue}backup\t${default}b |Create archive of the server." - echo -e "${blue}console\t${default}c |Console allows you to access the live view of a 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." - echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." - echo -e "${blue}server-cd-key\t${default}cd |Add your server cd key" - echo -e "${blue}map-compressor\t${default}mc |Compresses all ${gamename} server maps." + for ((index="0"; index <= ${#currentopt[@]}; index++)); do + echo -e "${blue}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }') |"${currentopt[index+2]}" + done } | column -s $'\t' -t - esac -} - -# Don't Starve Together -if [ "${gamename}" == "Don't Starve Together" ]; then - fn_getopt_dstserver -# Garry's Mod -elif [ "${gamename}" == "Garry's Mod" ]; then - fn_getopt_gmodserver -# Minecraft -elif [ "${engine}" == "lwjgl2" ]; then - fn_getopt_minecraft -# Multi Theft Auto -elif [ "${gamename}" == "Multi Theft Auto" ]; then - fn_getopt_mta -# Mumble -elif [ "${gamename}" == "Mumble" ]; then - fn_getopt_mumble -# Teamspeak 3 -elif [ "${gamename}" == "TeamSpeak 3" ]; then - fn_getopt_teamspeak3 -elif [ "${gamename}" == "Rust" ]; then - fn_getopt_rustserver -# Unreal 2 Engine -elif [ "${engine}" == "unreal2" ]; then - if [ "${gamename}" == "Unreal Tournament 2004" ]; then - fn_getopt_ut2k4 - else - fn_getopt_unreal2 - fi -# Unreal Engine -elif [ "${engine}" == "unreal" ]; then - fn_getopt_unreal -# Generic -elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then - fn_getopt_generic_no_update -elif [ "${gamename}" == "Factorio" ]; then - fn_getopt_generic_update_no_steam else - fn_getopt_generic + # Seek and run command + index="0" + for ((index="0"; index <= ${#currentopt[@]}; index+3)); do + currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" + for ((currcmdindex=1; cmdindex <= ${currcmdamount}; currcmdindex++)); do + if [ "$(echo "${currentopt[index]}"| awk -F ';' '{ print $cmdindex }')" == "${getopt}" ]; then + # Run command + ${currentopt[index+1]} + break + fi + done + done fi + core_exit.sh From 2dc25226ed7592b0fd6ad7ab29ef0ca3caee2f20 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Mon, 20 Feb 2017 23:40:58 +0100 Subject: [PATCH 700/729] new opt test --- lgsm/functions/core_getopt.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index f87b55a0e..94024ff79 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -118,7 +118,7 @@ for ((index="0"; index <= ${#currentopt[@]}; index+3)); do done ### Check if user command exists or run the command -if [ ! " ${optcommands[@]} " =~ "${getopt}" ]; then +if [[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then echo -e "${red}Unknown command${default}: $0 ${getopt}" exitcode=2 echo "Usage: $0 [option]" @@ -130,7 +130,7 @@ if [ ! " ${optcommands[@]} " =~ "${getopt}" ]; then index="0" { for ((index="0"; index <= ${#currentopt[@]}; index++)); do - echo -e "${blue}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }') |"${currentopt[index+2]}" + echo -e "${blue}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }') |${currentopt[index+2]}" done } | column -s $'\t' -t else From 75547557a8a4e8085a3556de5df16abeaf43ba99 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 00:29:17 +0100 Subject: [PATCH 701/729] fixing awk, probably not infinite loop --- lgsm/functions/core_getopt.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 94024ff79..ad5ee730d 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -113,7 +113,7 @@ index="0" for ((index="0"; index <= ${#currentopt[@]}; index+3)); do cmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" for ((cmdindex=1; cmdindex <= ${cmdamount}; cmdindex++)); do - optcommands+=( "$(echo "${currentopt[index]}"| awk -F ';' '{ print $cmdindex }')" ) + optcommands+=( "$(echo "${currentopt[index]}"| awk -F ';' -v x=${cmdindex} '{ print $x }')" ) done done @@ -139,7 +139,7 @@ else for ((index="0"; index <= ${#currentopt[@]}; index+3)); do currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" for ((currcmdindex=1; cmdindex <= ${currcmdamount}; currcmdindex++)); do - if [ "$(echo "${currentopt[index]}"| awk -F ';' '{ print $cmdindex }')" == "${getopt}" ]; then + if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${cmdindex} '{ print $x }')" == "${getopt}" ]; then # Run command ${currentopt[index+1]} break From 1be3076dba3fcd9f7ffd5ea77127db277022190e Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 00:41:14 +0100 Subject: [PATCH 702/729] first loop fixes --- lgsm/functions/core_getopt.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index ad5ee730d..9a2695c86 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -110,9 +110,9 @@ fi ### Build list of available commands optcommands=() index="0" -for ((index="0"; index <= ${#currentopt[@]}; index+3)); do +for ((index="0"; index < ${#currentopt[@]}; index+=3)); do cmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" - for ((cmdindex=1; cmdindex <= ${cmdamount}; cmdindex++)); do + for ((cmdindex=1; cmdindex < ${cmdamount}; cmdindex++)); do optcommands+=( "$(echo "${currentopt[index]}"| awk -F ';' -v x=${cmdindex} '{ print $x }')" ) done done @@ -136,9 +136,9 @@ if [[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then else # Seek and run command index="0" - for ((index="0"; index <= ${#currentopt[@]}; index+3)); do + for ((index="0"; index < ${#currentopt[@]}; index+=3)); do currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" - for ((currcmdindex=1; cmdindex <= ${currcmdamount}; currcmdindex++)); do + for ((currcmdindex=1; cmdindex < ${currcmdamount}; currcmdindex++)); do if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${cmdindex} '{ print $x }')" == "${getopt}" ]; then # Run command ${currentopt[index+1]} From d125a72b0732ed3b457f2edcfcf249ea06151986 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 00:58:14 +0100 Subject: [PATCH 703/729] fix --- lgsm/functions/core_getopt.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 9a2695c86..c651f105d 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -16,7 +16,7 @@ cmd_stop=( "sp;stop" "command_stop.sh" "Stop the server." ) cmd_restart=( "r;restart" "command_restart.sh" "Restart the server." ) cmd_details=( "dt;details" "command_details.sh" "Display relevant server information." ) cmd_postdetails=( "pd;postdetails" "command_postdetails.sh" "Post stripped details to pastebin for support." ) -cmd_backup=( "b;backup;" "command_backup.sh" "Create archives of the server." ) +cmd_backup=( "b;backup" "command_backup.sh" "Create archives of the server." ) cmd_update_functions=( "uf;update-functions" "command_update_functions.sh" "Update LinuxGSM functions." ) cmd_test_alert=( "ta;test-alert" "command_test_alert.sh" "Send a test alert." ) cmd_monitor=( "m;monitor" "command_monitor.sh" "Check server status and restart it if crashed." ) @@ -112,16 +112,18 @@ optcommands=() index="0" for ((index="0"; index < ${#currentopt[@]}; index+=3)); do cmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" - for ((cmdindex=1; cmdindex < ${cmdamount}; cmdindex++)); do + for ((cmdindex=1; cmdindex <= ${cmdamount}; cmdindex++)); do optcommands+=( "$(echo "${currentopt[index]}"| awk -F ';' -v x=${cmdindex} '{ print $x }')" ) done done ### Check if user command exists or run the command -if [[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - echo "Usage: $0 [option]" +if [[ ! "${optcommands[@]}" =~ "${getopt}" ]]||[ -z "${getopt}" ]; then + if [ -z "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + echo "Usage: $0 [option]" + fi echo "${gamename} - Linux Game Server Manager - Version ${version}" echo "https://gameservermanagers.com/${selfname}" echo -e "" @@ -129,7 +131,7 @@ if [[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then # Display available commands index="0" { - for ((index="0"; index <= ${#currentopt[@]}; index++)); do + for ((index="0"; index <= ${#currentopt[@]}; index+=3)); do echo -e "${blue}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }') |${currentopt[index+2]}" done } | column -s $'\t' -t From 3cafcc0e684a2a3f58cd6b825f697243fa3dbe21 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 01:11:07 +0100 Subject: [PATCH 704/729] fixes --- lgsm/functions/core_getopt.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index c651f105d..22adbb52d 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -131,8 +131,8 @@ if [[ ! "${optcommands[@]}" =~ "${getopt}" ]]||[ -z "${getopt}" ]; then # Display available commands index="0" { - for ((index="0"; index <= ${#currentopt[@]}; index+=3)); do - echo -e "${blue}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }') |${currentopt[index+2]}" + for ((index="0"; index < ${#currentopt[@]}; index+=3)); do + echo -e "${blue}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }')\t|${currentopt[index+2]}" done } | column -s $'\t' -t else @@ -141,7 +141,7 @@ else for ((index="0"; index < ${#currentopt[@]}; index+=3)); do currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" for ((currcmdindex=1; cmdindex < ${currcmdamount}; currcmdindex++)); do - if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${cmdindex} '{ print $x }')" == "${getopt}" ]; then + if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then # Run command ${currentopt[index+1]} break From cfc5bf75fc19eff39c6c3afabffb1cc3462deb17 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 01:16:42 +0100 Subject: [PATCH 705/729] fixes --- lgsm/functions/core_getopt.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 22adbb52d..6b230b5f8 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -118,8 +118,8 @@ for ((index="0"; index < ${#currentopt[@]}; index+=3)); do done ### Check if user command exists or run the command -if [[ ! "${optcommands[@]}" =~ "${getopt}" ]]||[ -z "${getopt}" ]; then - if [ -z "${getopt}" ]; then +if [ -z "${getopt}" ]||[[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then + if [ -n "${getopt}" ]; then echo -e "${red}Unknown command${default}: $0 ${getopt}" exitcode=2 echo "Usage: $0 [option]" @@ -140,7 +140,7 @@ else index="0" for ((index="0"; index < ${#currentopt[@]}; index+=3)); do currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" - for ((currcmdindex=1; cmdindex < ${currcmdamount}; currcmdindex++)); do + for ((currcmdindex=1; currcmdindex < ${currcmdamount}; currcmdindex++)); do if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then # Run command ${currentopt[index+1]} From 007a373d5d7205a30fcdfe29e90b87101b22849b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 01:19:11 +0100 Subject: [PATCH 706/729] appearance --- lgsm/functions/core_getopt.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 6b230b5f8..7e02b584a 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -122,17 +122,17 @@ if [ -z "${getopt}" ]||[[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then if [ -n "${getopt}" ]; then echo -e "${red}Unknown command${default}: $0 ${getopt}" exitcode=2 - echo "Usage: $0 [option]" fi echo "${gamename} - Linux Game Server Manager - Version ${version}" echo "https://gameservermanagers.com/${selfname}" + echo "Usage: $0 [option]" echo -e "" echo -e "${lightyellow}Commands${default}" # Display available commands index="0" { for ((index="0"; index < ${#currentopt[@]}; index+=3)); do - echo -e "${blue}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }')\t|${currentopt[index+2]}" + echo -e "${cyan}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }')\t|${currentopt[index+2]}" done } | column -s $'\t' -t else From 021a86c737b925f8e412214d8e1ecf7ad882235b Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 01:35:21 +0100 Subject: [PATCH 707/729] missing commands --- lgsm/functions/core_getopt.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 7e02b584a..884a0f9c9 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -40,6 +40,7 @@ cmd_map_compressor_u99=( "mc;map-compressor" "compress_ut99_maps.sh" "Compresses cmd_map_compressor_u2=( "mc;map-compressor" "compress_unreal2_maps.sh" "Compresses all ${gamename} server maps." ) cmd_install_cdkey=( "cd;server-cd-key" "install_ut2k4_key.sh" "Add your server cd key." ) cmd_install_dst_token=( "ct;cluster-token" "install_dst_token.sh" "Configure cluster token." ) +cmd_fastdl=( "fd;fastdl" "command_fastdl.sh" "Build a FastDL directory." # Dev commands cmd_dev_detect_deps=( "dd;detect-depts" "command_dev_detect_deps.sh" "Detect server dependencies." ) cmd_dev_detect_glibc=( "dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect server glibc requirements." ) @@ -56,11 +57,11 @@ currentopt+=( "${cmd_backup[@]}" "${cmd_update_functions[@]}" "${cmd_test_alert[ # Exclude games without a console if [ "${gamename}" != "TeamSpeak 3" ]; then - currentopt+=( "${cmd_console[@]}" ) + currentopt+=( "${cmd_console[@]}" "${cmd_debug[@]}" ) fi # Exclude noupdated games here if [ "${gamename}" != "Battlefield: 1942" ]&&[ "${gamename}" != "Call of Duty" ]&&[ "${gamename}" != "Call of Duty: United Offensive" ]&&[ "${gamename}" != "Call of Duty 2" ]&&[ "${gamename}" != "Call of Duty 4" ]&&[ "${gamename}" != "Call of Duty: World at War" ]&&[ "${gamename}" != "QuakeWorld" ]&&[ "${gamename}" != "Quake 2" ]&&[ "${gamename}" != "Quake 3: Arena" ]&&[ "${gamename}" != "Wolfenstein: Enemy Territory" ]; then - currentopt+=( "${cmd_update[@]}" ) + currentopt+=( "${cmd_update[@]}" "${cmd_force_update[@]}") fi ## Include games that have access to specific commands @@ -123,9 +124,9 @@ if [ -z "${getopt}" ]||[[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then echo -e "${red}Unknown command${default}: $0 ${getopt}" exitcode=2 fi + echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" echo "https://gameservermanagers.com/${selfname}" - echo "Usage: $0 [option]" echo -e "" echo -e "${lightyellow}Commands${default}" # Display available commands From b9162f1c69079d4508f710a3c4f9f5529351940d Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 01:36:30 +0100 Subject: [PATCH 708/729] hm ) --- lgsm/functions/core_getopt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 884a0f9c9..914ab0790 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -40,7 +40,7 @@ cmd_map_compressor_u99=( "mc;map-compressor" "compress_ut99_maps.sh" "Compresses cmd_map_compressor_u2=( "mc;map-compressor" "compress_unreal2_maps.sh" "Compresses all ${gamename} server maps." ) cmd_install_cdkey=( "cd;server-cd-key" "install_ut2k4_key.sh" "Add your server cd key." ) cmd_install_dst_token=( "ct;cluster-token" "install_dst_token.sh" "Configure cluster token." ) -cmd_fastdl=( "fd;fastdl" "command_fastdl.sh" "Build a FastDL directory." +cmd_fastdl=( "fd;fastdl" "command_fastdl.sh" "Build a FastDL directory." ) # Dev commands cmd_dev_detect_deps=( "dd;detect-depts" "command_dev_detect_deps.sh" "Detect server dependencies." ) cmd_dev_detect_glibc=( "dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect server glibc requirements." ) From edf5b787a941699620d40e79a291cfb8446ab4bf Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 02:36:08 +0100 Subject: [PATCH 709/729] fix for full commands to work --- lgsm/functions/core_getopt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 914ab0790..52f72dfaa 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -141,7 +141,7 @@ else index="0" for ((index="0"; index < ${#currentopt[@]}; index+=3)); do currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" - for ((currcmdindex=1; currcmdindex < ${currcmdamount}; currcmdindex++)); do + for ((currcmdindex=1; currcmdindex <= ${currcmdamount}; currcmdindex++)); do if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then # Run command ${currentopt[index+1]} From 6e8afb5e2a01b0545eb19b1330def039a6dd3ef0 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 02:53:09 +0100 Subject: [PATCH 710/729] dev commands --- lgsm/functions/core_getopt.sh | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 52f72dfaa..a8374493f 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -42,9 +42,10 @@ cmd_install_cdkey=( "cd;server-cd-key" "install_ut2k4_key.sh" "Add your server c cmd_install_dst_token=( "ct;cluster-token" "install_dst_token.sh" "Configure cluster token." ) cmd_fastdl=( "fd;fastdl" "command_fastdl.sh" "Build a FastDL directory." ) # Dev commands -cmd_dev_detect_deps=( "dd;detect-depts" "command_dev_detect_deps.sh" "Detect server dependencies." ) -cmd_dev_detect_glibc=( "dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect server glibc requirements." ) -cmd_dev_detect_ldd=( "dl;detect-ldd" "command_dev_detect_ldd.sh" "Detect server ldd requirements." ) +cmd_dev_debug=( "dev;dev-debug" "command_dev_debug.sh" "DEVCOMMAND" +cmd_dev_detect_deps=( "dd;detect-depts" "command_dev_detect_deps.sh" "DEVCOMMAND" ) +cmd_dev_detect_glibc=( "dg;detect-glibc" "command_dev_detect_glibc.sh" "DEVCOMMAND" ) +cmd_dev_detect_ldd=( "dl;detect-ldd" "command_dev_detect_ldd.sh" "DEVCOMMAND" ) ### Set specific opt here ### @@ -107,6 +108,9 @@ if [ "${gamename}" == "Multi Theft Auto" ]; then currentopt+=( "${cmd_install_default_ressources[@]}" ) fi +## Developer commands +currentopt+=( "${cmd_dev_debug[@]}" "${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" ) + ### Build list of available commands optcommands=() @@ -133,7 +137,10 @@ if [ -z "${getopt}" ]||[[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then index="0" { for ((index="0"; index < ${#currentopt[@]}; index+=3)); do - echo -e "${cyan}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }')\t|${currentopt[index+2]}" + # Hide developer commands + if [ "${currentopt[index+3]}" != "DEVCOMMAND" ]; then + echo -e "${cyan}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }')\t| ${currentopt[index+2]}" + fi done } | column -s $'\t' -t else From 73be10ffa08ab3ba04519724e4740f263ecac257 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 02:54:22 +0100 Subject: [PATCH 711/729] typo + missing ) --- lgsm/functions/core_getopt.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index a8374493f..a8ddc89b0 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -42,8 +42,8 @@ cmd_install_cdkey=( "cd;server-cd-key" "install_ut2k4_key.sh" "Add your server c cmd_install_dst_token=( "ct;cluster-token" "install_dst_token.sh" "Configure cluster token." ) cmd_fastdl=( "fd;fastdl" "command_fastdl.sh" "Build a FastDL directory." ) # Dev commands -cmd_dev_debug=( "dev;dev-debug" "command_dev_debug.sh" "DEVCOMMAND" -cmd_dev_detect_deps=( "dd;detect-depts" "command_dev_detect_deps.sh" "DEVCOMMAND" ) +cmd_dev_debug=( "dev;dev-debug" "command_dev_debug.sh" "DEVCOMMAND" ) +cmd_dev_detect_deps=( "dd;detect-deps" "command_dev_detect_deps.sh" "DEVCOMMAND" ) cmd_dev_detect_glibc=( "dg;detect-glibc" "command_dev_detect_glibc.sh" "DEVCOMMAND" ) cmd_dev_detect_ldd=( "dl;detect-ldd" "command_dev_detect_ldd.sh" "DEVCOMMAND" ) From a49de6bcbd878e3233b5026cfa4efe54da1527e5 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 03:21:05 +0100 Subject: [PATCH 712/729] new algorithm to find commands --- lgsm/functions/core_getopt.sh | 51 ++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index a8ddc89b0..55f4c3beb 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -122,13 +122,10 @@ for ((index="0"; index < ${#currentopt[@]}; index+=3)); do done done -### Check if user command exists or run the command -if [ -z "${getopt}" ]||[[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then - if [ -n "${getopt}" ]; then - echo -e "${red}Unknown command${default}: $0 ${getopt}" - exitcode=2 - fi +# Shows LinuxGSM usage +fn_opt_usage(){ echo "Usage: $0 [option]" + echo -e "" echo "${gamename} - Linux Game Server Manager - Version ${version}" echo "https://gameservermanagers.com/${selfname}" echo -e "" @@ -143,19 +140,35 @@ if [ -z "${getopt}" ]||[[ ! "${optcommands[@]}" =~ "${getopt}" ]]; then fi done } | column -s $'\t' -t -else - # Seek and run command - index="0" - for ((index="0"; index < ${#currentopt[@]}; index+=3)); do - currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" - for ((currcmdindex=1; currcmdindex <= ${currcmdamount}; currcmdindex++)); do - if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then - # Run command - ${currentopt[index+1]} - break - fi - done - done + core_exit.sh +} + +### Check if user commands exist and run corresponding scripts, or display script usage +if [ -z "${getopt}" ]; then + fn_opt_usage fi +# Command exists +for i in "${optcommands[@]}"; do + if [ "${i}" == "${getopt}" ] ; then + # Seek and run command + index="0" + for ((index="0"; index < ${#currentopt[@]}; index+=3)); do + currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" + for ((currcmdindex=1; currcmdindex <= ${currcmdamount}; currcmdindex++)); do + if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then + # Run command + ${currentopt[index+1]} + break + fi + done + done + break + core_exit.sh + fi +done +# If we're executing this, it means command was not found +echo -e "${red}Unknown command${default}: $0 ${getopt}" +exitcode=2 +fn_opt_usage core_exit.sh From f126f52de9e83918b8066351b7d91e08586d2ed2 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Tue, 21 Feb 2017 03:23:50 +0100 Subject: [PATCH 713/729] hide "DEVCOMMAND" description commands --- lgsm/functions/core_getopt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 55f4c3beb..78b097398 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -135,7 +135,7 @@ fn_opt_usage(){ { for ((index="0"; index < ${#currentopt[@]}; index+=3)); do # Hide developer commands - if [ "${currentopt[index+3]}" != "DEVCOMMAND" ]; then + if [ "${currentopt[index+2]}" != "DEVCOMMAND" ]; then echo -e "${cyan}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }')\t| ${currentopt[index+2]}" fi done From 9b62ec9fd454e9b62ced634bd0650657eec6f91f Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Wed, 22 Feb 2017 18:06:38 +0100 Subject: [PATCH 714/729] Removed chivalry for now --- ChivalryMedievalWarfare/chivalrymwserver | 199 ----------------------- 1 file changed, 199 deletions(-) delete mode 100644 ChivalryMedievalWarfare/chivalrymwserver diff --git a/ChivalryMedievalWarfare/chivalrymwserver b/ChivalryMedievalWarfare/chivalrymwserver deleted file mode 100644 index 6fd0d8ff0..000000000 --- a/ChivalryMedievalWarfare/chivalrymwserver +++ /dev/null @@ -1,199 +0,0 @@ -#!/bin/bash -# Project: Game Server Managers - LinuxGSM -# Author: Daniel Gibbs -# License: MIT License, Copyright (c) 2017 Daniel Gibbs -# Purpose: Chivalry: Medieval Warfare | Server Management Script -# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors -# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki -# Website: https://gameservermanagers.com - -# Debugging -if [ -f ".dev-debug" ]; then - exec 5>dev-debug.log - BASH_XTRACEFD="5" - set -x -fi - -version="170219" - -########################## -######## Settings ######## -########################## - -#### Server Settings #### - -## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters -ip="0.0.0.0" -port="7777" -queryport="27960" - -## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters -fn_parms(){ -parms="aocffa-moor_p\?steamsockets\?port=${port}\?queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog} -seekfreeloadingserver" -} - -#### LinuxGSM Settings #### - -## Notification Alerts -# (on|off) -# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email -emailalert="off" -email="email@example.com" -emailfrom="" - -# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet -pushbulletalert="off" -pushbullettoken="accesstoken" -channeltag="" - -## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update -updateonstart="off" - -## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup -maxbackups="4" -maxbackupdays="30" -stoponbackup="on" - -## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging -consolelogging="on" -logdays="7" - -#### LinuxGSM Advanced Settings #### - -## SteamCMD Settings -# Server appid -appid="220070" -# Steam App Branch Select -# Allows to opt into the various Steam app branches. Default branch is "". -# Example: "-beta latest_experimental" -branch="" - -## Github Branch Select -# Allows for the use of different function files -# from a different repo and/or branch. -githubuser="GameServerManagers" -githubrepo="LinuxGSM" -githubbranch="master" - -## LinuxGSM Server Details -# Do not edit -gamename="Chivalry: Medieval Warfare" -engine="unreal3" - -## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers -servicename="chivalrymw-server" - -#### Directories #### -# Edit with care - -## Work 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" - -## Server Specific Directories -systemdir="${filesdir}" -executabledir="${filesdir}/Binaries/Linux/" -executable="./UDKGameServer-Linux" -servercfg="PCServer-UDKGame.ini" -servercfgdefault="PCServer-UDKGame.ini" -servercfgdir="${systemdir}/UDKGame/Config" -servercfgfullpath="${servercfgdir}/${servercfg}" - -## Backup Directory -backupdir="${rootdir}/backups" - -## Logging Directories -gamelogdir="${rootdir}/log/server" -scriptlogdir="${rootdir}/log/script" -consolelogdir="${rootdir}/log/console" -gamelog="${gamelogdir}/${servicename}-game.log" -scriptlog="${scriptlogdir}/${servicename}-script.log" -consolelog="${consolelogdir}/${servicename}-console.log" -emaillog="${scriptlogdir}/${servicename}-email.log" - -## Logs Naming -scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" -consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" -gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%Y-%m-%d-%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 -} - -# Prevent from running this script as root. -if [ "$(whoami)" = "root" ]; then - if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then - echo "[ FAIL ] Do NOT run this script as root!" - exit 1 - else - core_functions.sh - check_root.sh - fi -fi - -core_dl.sh -core_functions.sh -getopt=$1 -core_getopt.sh From 3f9eeb42192993f221b8a16fd4add7fd43b09d54 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 23 Feb 2017 02:55:40 +0100 Subject: [PATCH 715/729] Slight improvement to Rust Wipe feature More safety with rm -r "${var:?}" instead of rm -r "${var}" even though there is an if [ -d "${var}" ] check before And now also removes map file, not only map save. --- lgsm/functions/command_wipe.sh | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 67ea65164..27ccfbf2f 100644 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -45,11 +45,24 @@ fn_wipe_server_remove_files(){ # Rust Wipe if [ "${gamename}" == "Rust" ]; then if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.sav")" ]; then - currentaction="Removing map file(s): ${serveridentitydir}/proceduralmap.*.sav" - echo -en "Removing map proceduralmap.*.sav file(s)..." + currentaction="Removing map save(s): ${serveridentitydir}/proceduralmap.*.sav" + echo -en "Removing map saves proceduralmap.*.sav file(s)..." sleep 1 fn_script_log "${currentaction}" - find "${serveridentitydir}" -type f -name "proceduralmap.*.sav" -delete + find "${serveridentitydir:?}" -type f -name "proceduralmap.*.sav" -delete + fn_wipe_exit_code + sleep 0.5 + else + fn_print_information_nl "No map save to remove" + fn_script_log_info "No map save to remove." + sleep 0.5 + fi + if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.map")" ]; then + currentaction="Removing map file(s): ${serveridentitydir}/proceduralmap.*.map" + echo -en "Removing map proceduralmap.*.map file(s)..." + sleep 1 + fn_script_log "${currentaction}" + find "${serveridentitydir:?}" -type f -name "proceduralmap.*.map" -delete fn_wipe_exit_code sleep 0.5 else @@ -62,7 +75,7 @@ fn_wipe_server_remove_files(){ echo -en "Removing user directory..." sleep 1 fn_script_log "${currentaction}" - rm -rf "${serveridentitydir}/user" + rm -rf "${serveridentitydir:?}/user" fn_wipe_exit_code sleep 0.5 else @@ -75,7 +88,7 @@ fn_wipe_server_remove_files(){ echo -en "Removing storage directory..." sleep 1 fn_script_log "${currentaction}" - rm -rf "${serveridentitydir}/storage" + rm -rf "${serveridentitydir:?}/storage" fn_wipe_exit_code sleep 0.5 else @@ -88,7 +101,7 @@ fn_wipe_server_remove_files(){ echo -en "Removing Log files..." sleep 1 fn_script_log "${currentaction}" - find "${serveridentitydir}" -type f -name "Log.*.txt" -delete + find "${serveridentitydir:?}" -type f -name "Log.*.txt" -delete fn_wipe_exit_code sleep 0.5 else From 99aeb89b8594b065bc5d7bc3784e3ff23ed26aec Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 23 Feb 2017 03:39:13 +0100 Subject: [PATCH 716/729] fn_print_header As per #1035 --- lgsm/functions/compress_ut99_maps.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh index 2a3b6a71f..e74ec727c 100644 --- a/lgsm/functions/compress_ut99_maps.sh +++ b/lgsm/functions/compress_ut99_maps.sh @@ -8,9 +8,7 @@ local commandaction="Unreal Map Compressor" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh -clear -echo "${gamename} Map Compressor" -echo "=================================" +fn_print_header echo "Will compress all maps in:" echo "" pwd From a45412c175100721b0470d69a5fb72d69f87dd77 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 23 Feb 2017 03:39:15 +0100 Subject: [PATCH 717/729] fn_print_header As per #1035 --- lgsm/functions/compress_unreal2_maps.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh index 9e0488095..7ef8bfeea 100644 --- a/lgsm/functions/compress_unreal2_maps.sh +++ b/lgsm/functions/compress_unreal2_maps.sh @@ -8,9 +8,7 @@ local commandaction="Unreal Map Compressor" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh -clear -echo "${gamename} Map Compressor" -echo "=================================" +fn_print_header echo "Will compress all maps in:" echo "" pwd From dd55ccf979689812fa6e5d8f17ed7bb94a340597 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 23 Feb 2017 03:41:53 +0100 Subject: [PATCH 718/729] fn_print_header As per #1035 --- lgsm/functions/command_ts3_server_pass.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh index 5cdb59e6c..964b93211 100644 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -6,15 +6,12 @@ # Description: Changes TS3 serveradmin password. local commandname="TS3-CHANGE-PASS" -local commandaction="TS3 Change Password" +local commandaction="ServerAdmin Password Change" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" fn_serveradmin_password_prompt(){ - echo "" - echo "${gamename} ServerAdmin Password Change" - echo "=================================" - echo "" + fn_print_header echo "Press \"CTRL+b d\" to exit console." fn_print_information_nl "You are about to change the ${gamename} ServerAdmin password." fn_print_warning_nl "${gamename} will restart during this process." From 10396a233478bd6c3b50aaddbf3d224c37253ae3 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 23 Feb 2017 03:54:03 +0100 Subject: [PATCH 719/729] Minor log issue fix Fixes #1307 --- lgsm/functions/command_start.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 39dc363cf..c544dd9cf 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -85,15 +85,15 @@ fn_start_tmux(){ # tmux pipe-pane not supported in tmux versions < 1.6 if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then - echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}" - echo "https://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" - echo "Currently installed: $(tmux -V)" >> "${consolelog}" + echo "Console logging disabled: Tmux => 1.6 required + https://gameservermanagers.com/tmux-upgrade + Currently installed: $(tmux -V)" > "${consolelog}" # Console logging disabled: Bug in tmux 1.8 breaks logging elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; then - echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}" - echo "https://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" - echo "Currently installed: $(tmux -V)" >> "${consolelog}" + echo "Console logging disabled: Bug in tmux 1.8 breaks logging + https://gameservermanagers.com/tmux-upgrade + Currently installed: $(tmux -V)" > "${consolelog}" # Console logging enable or not set elif [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then From 9dae232b4af4e27003f0f99986435a89881cd38a Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 23 Feb 2017 09:02:19 +0100 Subject: [PATCH 720/729] Try reverting changes to check why travis fails --- lgsm/functions/command_start.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index c544dd9cf..39dc363cf 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -85,15 +85,15 @@ fn_start_tmux(){ # tmux pipe-pane not supported in tmux versions < 1.6 if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then - echo "Console logging disabled: Tmux => 1.6 required - https://gameservermanagers.com/tmux-upgrade - Currently installed: $(tmux -V)" > "${consolelog}" + echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}" + echo "https://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" + echo "Currently installed: $(tmux -V)" >> "${consolelog}" # Console logging disabled: Bug in tmux 1.8 breaks logging elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; then - echo "Console logging disabled: Bug in tmux 1.8 breaks logging - https://gameservermanagers.com/tmux-upgrade - Currently installed: $(tmux -V)" > "${consolelog}" + echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}" + echo "https://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" + echo "Currently installed: $(tmux -V)" >> "${consolelog}" # Console logging enable or not set elif [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then From ed51b44818a070f2c8289af4050572538cbe60d4 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 23 Feb 2017 09:21:18 +0100 Subject: [PATCH 721/729] Minor log issue fix (again) Trying to re-add the commit to see if it was just a temporary Travis bug or not. Fixes #1307 (again) --- lgsm/functions/command_start.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 39dc363cf..c544dd9cf 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -85,15 +85,15 @@ fn_start_tmux(){ # tmux pipe-pane not supported in tmux versions < 1.6 if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then - echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}" - echo "https://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" - echo "Currently installed: $(tmux -V)" >> "${consolelog}" + echo "Console logging disabled: Tmux => 1.6 required + https://gameservermanagers.com/tmux-upgrade + Currently installed: $(tmux -V)" > "${consolelog}" # Console logging disabled: Bug in tmux 1.8 breaks logging elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; then - echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}" - echo "https://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" - echo "Currently installed: $(tmux -V)" >> "${consolelog}" + echo "Console logging disabled: Bug in tmux 1.8 breaks logging + https://gameservermanagers.com/tmux-upgrade + Currently installed: $(tmux -V)" > "${consolelog}" # Console logging enable or not set elif [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then From 98854eacffbff62e01891d57cde7d5e32f7e6d67 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Sat, 25 Feb 2017 01:03:23 +0100 Subject: [PATCH 722/729] Fixed function syntax breaking Ark stop Fixes #1335 --- lgsm/functions/command_stop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 341ad4d95..ccb7dbbf0 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -272,7 +272,7 @@ fn_stop_ark(){ pid=${pid//[!0-9]/} let pid+=0 # turns an empty string into a valid number, '0', # and a valid numeric pid remains unchanged. - if [ "${pid}" -gt 1 && "${pid}" -le $(cat /proc/sys/kernel/pid_max) ]; then + if [ "${pid}" -gt 1 ]&&[ "${pid}" -le $(cat /proc/sys/kernel/pid_max) ]; then fn_print_dots "Process still bound. Awaiting graceful exit: ${pidcheck}" sleep 1 else From e59865c6aaf8e9ecc4aa879836d4462c7fa645b5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 25 Feb 2017 00:32:53 +0000 Subject: [PATCH 723/729] Removed insecure from Codename CURE servers are now VAC protected --- CodenameCURE/ccserver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CodenameCURE/ccserver b/CodenameCURE/ccserver index 7220ec4d8..63ca1091c 100644 --- a/CodenameCURE/ccserver +++ b/CodenameCURE/ccserver @@ -32,7 +32,7 @@ ip="0.0.0.0" ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters fn_parms(){ -parms="-game cure -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" +parms="-game cure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" } #### LinuxGSM Settings #### From f8b95ab9b8698cfd86b3e529ed22dfcc937be7f4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 25 Feb 2017 11:15:43 +0000 Subject: [PATCH 724/729] TF2 now required libcurl --- lgsm/functions/check_deps.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index a159f858c..a256c6abc 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -180,8 +180,8 @@ if [ -n "$(command -v dpkg-query)" ]; then else array_deps_required+=( libtinfo5 ) fi - # Brainbread 2 and Don't Starve Together - elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then + # Brainbread 2 ,Don't Starve Together & Team Fortress 2 + elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]||[ "${gamename}" == "Team Fortress 2" ]; then array_deps_required+=( libcurl4-gnutls-dev:i386 ) # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then @@ -255,8 +255,8 @@ elif [ -n "$(command -v yum)" ]; then # No More Room in Hell, Counter-Strike: Source and Garry's Mod elif [ "${gamename}" == "No More Room in Hell" ]||[ "${gamename}" == "Counter-Strike: Source" ]||[ "${gamename}" == "Garry's Mod" ]; then array_deps_required+=( ncurses-libs.i686 ) - # Brainbread 2 and Don't Starve Together - elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then + # Brainbread 2, Don't Starve Together & Team Fortress 2 + elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]||[ "${gamename}" == "Team Fortress 2" ]; then array_deps_required+=( libcurl.i686 ) # Battlefield: 1942 elif [ "${gamename}" == "Battlefield: 1942" ]; then From 5ac52b631d38f9fc3bd3768676091206aa880554 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 25 Feb 2017 11:39:02 +0000 Subject: [PATCH 725/729] removed white spaces --- lgsm/functions/command_fastdl.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 5d20df759..3d39f49ea 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -122,7 +122,7 @@ fn_fastdl_config(){ else clearnonbzip2="off"; fn_script_log "Clearing non-bzip2 files Disabled."; fn_print_ok "Clearing non-bzip2 files Disabled" fi - echo -en "\n" + echo -en "\n" else # Other games default remove non bzip2 files clearnonbzip2="on" @@ -174,7 +174,7 @@ fn_fastdl_gmod(){ # No choice to cd to the directory, as find can't then display relative directory cd "${systemdir}" || exit - + # Map Files fn_print_dots "Copying map files..." fn_script_log "Copying map files" @@ -408,7 +408,7 @@ fn_fastdl_bzip2(){ find "${fastdldir:?}" \( -type f ! -name "*.bz2" \) -exec rm {} \; fn_print_ok "Cleared uncompressed FastDL files" fn_script_log "Cleared uncompressed FastDL files." - fi + fi fi } From 09cafb0e6a08897d20d889f4d1521a12fdeb16d2 Mon Sep 17 00:00:00 2001 From: UltimateByte Date: Thu, 2 Mar 2017 10:53:03 +0100 Subject: [PATCH 726/729] Fixing ts3db prompt's opposite behavior --- lgsm/functions/install_ts3db.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh index ceb91afa7..ebceecfa7 100644 --- a/lgsm/functions/install_ts3db.sh +++ b/lgsm/functions/install_ts3db.sh @@ -48,7 +48,7 @@ fn_install_ts3db_mariadb(){ if [ -z "${autoinstall}" ]; then echo "" - if ! fn_prompt_yn "Do you want to use MariaDB/MySQL instead of sqlite (Database Server including user and database already has to be set up!)?" N; then + if fn_prompt_yn "Do you want to use MariaDB/MySQL instead of sqlite (Database Server including user and database already has to be set up!)?" N; then fn_install_ts3db_mariadb fi else From 7a9af83b0ceaea023939d3ffc2eccec28e0c249c Mon Sep 17 00:00:00 2001 From: Luke Spragg Date: Thu, 2 Mar 2017 16:12:09 -0500 Subject: [PATCH 727/729] Update Oxide mod download URLs Per http://oxidemod.org/threads/new-snapshot-build-server-and-download-locations.23770/ --- lgsm/functions/mods_list.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index f5768efed..1709f9cdf 100644 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -65,9 +65,9 @@ mod_info_advdupe2=( MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/w mod_info_darkrp=( MOD "darkrp" "DarkRP" "https://github.com/FPtje/DarkRP/archive/master.zip" "darkrp-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Most popular gamemode" ) mod_info_darkrpmodification=( MOD "darkrpmodification" "DarkRP Modification" "https://github.com/FPtje/darkrpmodification/archive/master.zip" "darkrpmodification-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "NOUPDATE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Customize DarkRP settings" ) # Oxidemod -mod_info_rustoxide=( MOD "rustoxide" "Oxide for Rust" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-Rust.zip" "Oxide-Rust_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Rust;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-rust.1659" "Allows for the use of plugins" ) -mod_info_hwoxide=( MOD "hwoxide" "Oxide for Hurtworld" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-Hurtworld.zip" "Oxide-Hurtworld_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Hurtworld;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-hurtworld.1332" "Allows for the use of plugins" ) -mod_info_sdtdoxide=( MOD "sdtdoxide" "Oxide for 7 Days To Die" "https://raw.githubusercontent.com/OxideMod/Snapshots/master/Oxide-7DaysToDie.zip" "Oxide-7DaysToDie_Linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-7-days-to-die.813" "Allows for the use of plugins" ) +mod_info_rustoxide=( MOD "rustoxide" "Oxide for Rust" "https://dl.bintray.com/oxidemod/builds/Oxide-Rust.zip" "Oxide-Rust.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Rust;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-rust.1659/" "Allows for the use of plugins" ) +mod_info_hwoxide=( MOD "hwoxide" "Oxide for Hurtworld" "https://dl.bintray.com/oxidemod/builds/Oxide-Hurtworld.zip" "Oxide-Hurtworld.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Hurtworld;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-hurtworld.1332/" "Allows for the use of plugins" ) +mod_info_sdtdoxide=( MOD "sdtdoxide" "Oxide for 7 Days To Die" "https://dl.bintray.com/oxidemod/builds/Oxide-7DaysToDie.zip" "Oxide-7DaysToDie.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "http://oxidemod.org/downloads/oxide-for-7-days-to-die.813/" "Allows for the use of plugins" ) # REQUIRED: Set all mods info into the global array mods_global_array=( "${mod_info_metamod[@]}" "${mod_info_sourcemod[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" ) From 1e81f72b66b2040dd9cb60ccb64f48305a625df2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 4 Mar 2017 14:38:01 +0000 Subject: [PATCH 728/729] Reverted to master version of fastdl to allow merging to develop fast dl is being worked on in ultimatebyte-0220 --- lgsm/functions/command_fastdl.sh | 230 +++++++------------------------ 1 file changed, 53 insertions(+), 177 deletions(-) diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 3d39f49ea..9fe7ca68b 100644 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -6,18 +6,11 @@ # Description: Creates a FastDL directory. local commandname="FASTDL" -local commandaction="FastDL Generator" +local commandaction="FastDL" local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" check.sh -# Only Source supports FastDL -if [ "${engine}" != "source" ]; then - fn_print_error "${gamename} does not support FastDL" - fn_script_log_error "${gamename} does not support FastDL" - core_exit.sh -fi - # Directories webdir="${rootdir}/public_html" fastdldir="${webdir}/fastdl" @@ -31,27 +24,25 @@ fn_check_bzip2(){ # Returns true if not installed if [ -z "$(command -v bzip2)" ]; then bzip2installed="0" - fn_print_info "bzip2 is not installed! Install it to enable file compression" - fn_script_log_info "bzip2 is not installed. Install it to enable file compression." - fn_script_log_info "https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression" + fn_print_info "bzip2 is not installed !" + fn_script_log_info "bzip2 is not installed" echo -en "\n" sleep 1 - echo " * https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression" + echo "We advise using it" + echo "For more information, see https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression" sleep 2 - echo "" else bzip2installed="1" fi } -# Initiates FastDL fn_fastdl_init(){ - fn_print_header - fn_script_log "Started FastDL Generator" - sleep 1 - fn_check_bzip2 # User confirmation - if ! fn_prompt_yn "Build FastDL directory?" Y; then + fn_print_ok "Welcome to LGSM's FastDL generator" + sleep 1 + echo -en "\n" + fn_script_log "Started FastDL creation" + if ! fn_prompt_yn "Continue?" Y; then exit fi fn_script_log "Initiating FastDL creation" @@ -72,30 +63,28 @@ fn_fastdl_init(){ fi if [ ! -d "${fastdldir}" ]; then # No directory, won't ask for removing old ones - newfastdl="true" + newfastdl=1 fn_print_dots "Creating fastdl directory" sleep 0.5 mkdir "${fastdldir}" fn_print_ok "Created fastdl directory" - fn_script_log "Created fastdl directory" + fn_script_log "FastDL created fastdl directory" sleep 1 echo -en "\n" clearoldfastdl="off" # Nothing to clear elif [ "$(ls -A "${fastdldir}")" ]; then - newfastdl="false" - else - newfastdl="true" + newfastdl=0 fi } -# Prompts user for FastDL creation settings fn_fastdl_config(){ + # Global settings for FastDL creation fn_print_info "Entering configuration" fn_script_log "Configuration" sleep 2 echo -en "\n" # Prompt for clearing old files if directory was already here - if [ "${newfastdl}" == "false" ]; then + if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then fn_print_dots if fn_prompt_yn "Clear old FastDL files?" Y; then clearoldfastdl="on"; fn_script_log "clearoldfastdl enabled"; fn_print_ok "Clearing Enabled" @@ -104,50 +93,27 @@ fn_fastdl_config(){ fi echo -en "\n" fi - # Settings for bzip2 users + # Prompt for using bzip2 if it's installed if [ ${bzip2installed} == 1 ]; then - # Prompt for using bzip2 if it's installed fn_print_dots - if fn_prompt_yn "Enable bzip2 file compression?" Y; then + if fn_prompt_yn "Enable file compression using bzip2?" Y; then bzip2enable="on"; fn_script_log "bzip2 enabled"; fn_print_ok "bzip2 Enabled" else bzip2enable="off"; fn_script_log "bzip2 disabled"; fn_print_ok "bzip2 Disabled" fi echo -en "\n" - if [ "${gamename}" == "Garry's Mod" ]&&[ "${bzip2enable}" == "on" ]; then - # Prompt for clearing uncompressed files, can save some space but might cause issues for gmod - fn_print_dots - if fn_prompt_yn "Clear non-bzip2 FastDL files?" Y; then - clearnonbzip2="on"; fn_script_log "Clearing non-bzip2 files Enabled."; fn_print_ok "Clearing non-bzip2 files Enabled" - else - clearnonbzip2="off"; fn_script_log "Clearing non-bzip2 files Disabled."; fn_print_ok "Clearing non-bzip2 files Disabled" - fi - echo -en "\n" - else - # Other games default remove non bzip2 files - clearnonbzip2="on" - fn_script_log "Original uncompressed fastDL files won't be kept." - fi fi - # Garry's Mod Specific - if [ "${gamename}" == "Garry's Mod" ]; then - # Prompt to clear addons dir from fastdl, can use unnecessary space or be required depending on addon's file structures - fn_print_dots - if fn_prompt_yn "Clear addons dir from fastdl dir?" Y; then - cleargmodaddons="on"; fn_script_log "Addons clearing Enabled."; fn_print_ok "Addons clearing Enabled" - else - cleargmodaddons="off"; fn_script_log "Addons clearing Disabled."; fn_print_ok "Addons clearing Disabled" - fi - echo -en "\n" - # Prompt for download enforcer, which is using a .lua addfile resource generator - fn_print_dots - if fn_prompt_yn "Use client download enforcer?" Y; then - luaressource="on"; fn_script_log "DL enforcer Enabled."; fn_print_ok "Enforcer Enabled" - else - luaressource="off"; fn_script_log "DL enforcer Disabled."; fn_print_ok "Enforcer Disabled" - fi - echo -en "\n" +} + +fn_fastdl_gmod_config(){ + # Prompt for download enforcer, that is using a .lua addfile resource generator + fn_print_dots + if fn_prompt_yn "Use client download enforcer?" Y; then + luaressource="on"; fn_script_log "DL enforcer Enabled"; fn_print_ok "Enforcer Enabled" + else + luaressource="off"; fn_script_log "DL enforcer Disabled"; fn_print_ok "Enforcer Disabled" fi + echo -en "\n" } fn_clear_old_fastdl(){ @@ -164,7 +130,7 @@ fn_clear_old_fastdl(){ fi } -fn_fastdl_gmod(){ +fn_gmod_fastdl(){ # Copy all needed files for FastDL echo "" fn_print_dots "Starting gathering all needed files" @@ -173,7 +139,7 @@ fn_fastdl_gmod(){ echo -en "\n" # No choice to cd to the directory, as find can't then display relative directory - cd "${systemdir}" || exit + cd "${systemdir}" # Map Files fn_print_dots "Copying map files..." @@ -244,27 +210,18 @@ fn_fastdl_gmod(){ # Correct addons directory structure for FastDL if [ -d "${fastdldir}/addons" ]; then fn_print_info "Adjusting addons' file structure" - fn_script_log "Adjusting addons' file structure" + fn_script_log "Adjusting addon's file structure" sleep 1 cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" - fn_print_ok "Adjusted addons' file structure" + #Don't remove yet rm -R "${fastdldir:?}/addons" + fn_print_ok "Adjusted addon's file structure" sleep 1 echo -en "\n" - # Clear addons directory in fastdl - if [ "${cleargmodaddons}" == "on" ]; then - fn_print_info "Clearing addons dir from fastdl dir" - fn_script_log "Clearing addons dir from fastdl dir" - sleep 1 - rm -R "${fastdldir:?}/addons" - fn_print_ok "Cleared addons dir from fastdl dir" - sleep 1 - echo -en "\n" - fi fi # 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 files detected, fixing" + fn_print_dots "Typical DarkRP shit detected, fixing" sleep 2 cp -Rf "${fastdldir}/lua/"* "${fastdldir}" fn_print_ok "Stupid DarkRP file structure fixed" @@ -273,80 +230,8 @@ fn_fastdl_gmod(){ fi } -fn_fastdl_source(){ - # Copy all needed files for FastDL - echo "" - fn_print_dots "Starting gathering all needed files" - fn_script_log "Starting gathering all needed files" - sleep 1 - echo -en "\n" - - # Map Files - fn_print_dots "Copying map files..." - fn_script_log "Copying map files" - sleep 0.5 - mkdir "${fastdldir}/maps" - find "${systemdir}/maps" -name '*.bsp' -exec cp {} "${fastdldir}/maps" \; - find "${systemdir}/maps" -name '*.ain' -exec cp {} "${fastdldir}/maps" \; - find "${systemdir}/maps" -name '*.nav' -exec cp {} "${fastdldir}/maps" \; - find "${systemdir}/maps" -name '*.jpg' -exec cp {} "${fastdldir}/maps" \; - find "${systemdir}/maps" -name '*.txt' -exec cp {} "${fastdldir}/maps" \; - fn_print_ok "Map files copied" - sleep 0.5 - echo -en "\n" - - # Materials - fn_print_dots "Copying materials..." - fn_script_log "Copying materials" - sleep 0.5 - mkdir "${fastdldir}/materials" - find "${systemdir}/materials" -name '*.vtf' -exec cp {} "${fastdldir}/materials" \; - find "${systemdir}/materials" -name '*.vmt' -exec cp {} "${fastdldir}/materials" \; - find "${systemdir}/materials" -name '*.vbf' -exec cp {} "${fastdldir}/materials" \; - fn_print_ok "Materials copied" - sleep 0.5 - echo -en "\n" - - # Models - fn_print_dots "Copying models..." - fn_script_log "Copying models" - sleep 1 - mkdir "${fastdldir}/models" - find "${systemdir}/models" -name '*.vtx' -exec cp {} "${fastdldir}/models" \; - find "${systemdir}/models" -name '*.vvd' -exec cp {} "${fastdldir}/models" \; - find "${systemdir}/models" -name '*.mdl' -exec cp {} "${fastdldir}/models" \; - find "${systemdir}/models" -name '*.phy' -exec cp {} "${fastdldir}/models" \; - find "${systemdir}/models" -name '*.jpg' -exec cp {} "${fastdldir}/models" \; - find "${systemdir}/models" -name '*.png' -exec cp {} "${fastdldir}/models" \; - fn_print_ok "Models copied" - sleep 0.5 - echo -en "\n" - - # Particles - fn_print_dots "Copying particles..." - fn_script_log "Copying particles" - sleep 0.5 - mkdir "${fastdldir}/particles" - find "${systemdir}" -name '*.pcf' -exec cp {} "${fastdldir}/particles" \; - fn_print_ok "Particles copied" - sleep 0.5 - echo -en "\n" - - # Sounds - fn_print_dots "Copying sounds..." - fn_script_log "Copying sounds" - sleep 0.5 - mkdir "${fastdldir}/sound" - find "${systemdir}" -name '*.wav' -exec cp {} "${fastdldir}/sound" \; - find "${systemdir}" -name '*.mp3' -exec cp {} "${fastdldir}/sound" \; - find "${systemdir}" -name '*.ogg' -exec cp {} "${fastdldir}/sound" \; - fn_print_ok "Sounds copied" - sleep 0.5 - echo -en "\n" -} - # Generate lua file that will force download any file into the FastDL directory -fn_fastdl_gmod_lua_enforcer(){ +fn_lua_fastdl(){ # Remove lua file if luaressource is turned off and file exists echo "" if [ "${luaressource}" == "off" ]; then @@ -375,8 +260,8 @@ fn_fastdl_gmod_lua_enforcer(){ fn_script_log "Generating new download enforcer" sleep 1 # Read all filenames and put them into a lua file at the right path - find "${fastdldir:?}" \( -type f ! -name "*.bz2" \) -printf '%P\n' | while read line; do - echo "resource.AddFile( "\""${line}"\"" )" >> "${luafastdlfullpath}" + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -printf '%P\n' | while read line; do + echo "resource.AddFile( "\""${line}"\"" )" >> ${luafastdlfullpath} done fn_print_ok "Download enforcer generated" fn_script_log "Download enforcer generated" @@ -396,50 +281,41 @@ fn_fastdl_bzip2(){ fn_print_dots "Compressing files using bzip2..." fn_script_log "Compressing files using bzip2..." # bzip2 all files that are not already compressed (keeping original files) - find "${fastdldir:?}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; + find "${fastdldir}" \( -type f ! -name "*.bz2" \) -exec bzip2 -qk \{\} \; fn_print_ok "bzip2 compression done" fn_script_log "bzip2 compression done" sleep 1 echo -en "\n" - # Clear non compressed FastDL files - if [ "${clearnonbzip2}" == "on" ]; then - fn_print_dots "Clearing original uncompressed FastDL files..." - sleep 1 - find "${fastdldir:?}" \( -type f ! -name "*.bz2" \) -exec rm {} \; - fn_print_ok "Cleared uncompressed FastDL files" - fn_script_log "Cleared uncompressed FastDL files." - fi fi } fn_fastdl_completed(){ # Finished message echo "" - fn_print_ok "FastDL created!" + fn_print_ok "Congratulations, it's done!" fn_script_log "FastDL job done" sleep 2 echo -en "\n" echo "" - fn_print_info_nl "Need more documentation?" - echo " * https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL" + fn_print_info "Need more documentation? See https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL" echo -en "\n" if [ "$bzip2installed" == "0" ]; then - echo "By the way, you'd better install bzip2 and re-run this command!" + echo "By the way, you'd better install bzip2 and re-run this command!" fi - echo "Credits: UltimateByte" + echo "Credits : UltimateByte" } -# Run functions -fn_check_bzip2 -fn_fastdl_init -fn_fastdl_config -fn_clear_old_fastdl +# Game checking and functions running +# Garry's Mod if [ "${gamename}" == "Garry's Mod" ]; then - fn_fastdl_gmod - fn_fastdl_gmod_lua_enforcer -else - fn_fastdl_source + fn_check_bzip2 + fn_fastdl_init + fn_fastdl_config + fn_fastdl_gmod_config + fn_clear_old_fastdl + fn_gmod_fastdl + fn_lua_fastdl + fn_fastdl_bzip2 + fn_fastdl_completed + exit fi -fn_fastdl_bzip2 -fn_fastdl_completed -core_exit.sh From f013f96c4ebe97f0a07f807906dab5b188e1e77d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 4 Mar 2017 14:39:57 +0000 Subject: [PATCH 729/729] Also reverted getopt as well being worked on in ultimatebyte-0220 branch --- lgsm/functions/core_getopt.sh | 1100 ++++++++++++++++++++++++++++----- 1 file changed, 954 insertions(+), 146 deletions(-) diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 78b097398..bcecc6c2d 100644 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -6,169 +6,977 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" -### Define all commands here ### -## User commands | Trigger commands | Description -# Standard commands -cmd_install=( "i;install" "command_install.sh" "Install the server." ) -cmd_auto_install=( "ai;auto-install" "command_autoinstall.sh" "Install the server without prompts." ) -cmd_start=( "st;start" "command_start.sh" "Start the server." ) -cmd_stop=( "sp;stop" "command_stop.sh" "Stop the server." ) -cmd_restart=( "r;restart" "command_restart.sh" "Restart the server." ) -cmd_details=( "dt;details" "command_details.sh" "Display relevant server information." ) -cmd_postdetails=( "pd;postdetails" "command_postdetails.sh" "Post stripped details to pastebin for support." ) -cmd_backup=( "b;backup" "command_backup.sh" "Create archives of the server." ) -cmd_update_functions=( "uf;update-functions" "command_update_functions.sh" "Update LinuxGSM functions." ) -cmd_test_alert=( "ta;test-alert" "command_test_alert.sh" "Send a test alert." ) -cmd_monitor=( "m;monitor" "command_monitor.sh" "Check server status and restart it if crashed." ) -# Console servers only -cmd_console=( "c;console" "command_console.sh" "Access server console." ) -cmd_debug=( "d;debug" "command_debug.sh" "Start server directly in your terminal." ) -# Update servers only -cmd_update=( "u;update" "command_update.sh" "Check for updates and apply if available." ) -cmd_force_update=( "fu;force-update;update-restart;ur" "forceupdate=1; command_update.sh" "Unconditionally update the server." ) -# SteamCMD servers only -cmd_validate=( "v;validate" "command_validate.sh" "Validate server files with SteamCMD." ) -# Server with mods-install -cmd_mods_install=( "mi;mods-install" "command_mods_install.sh" "View and install available mods/addons." ) -cmd_mods_remove=( "mr;mods-remove" "command_mods_remove.sh" "View and remove an installed mod/addon." ) -cmd_mods_update=( "mu;mods-update" "command_mods_update.sh" "Update installed mods/addons." ) -# Server specific -cmd_change_password=( "pw;change-password" "command_ts3_server_pass.sh" "Change TS3 serveradmin password." ) -cmd_install_default_ressources=( "ir;install-default-ressources" "command_install_resources_mta.sh" "Install the MTA default resources." ) -cmd_wipe=( "wi;wipe" "command_wipe.sh" "Wipe your server data." ) -cmd_map_compressor_u99=( "mc;map-compressor" "compress_ut99_maps.sh" "Compresses all ${gamename} server maps." ) -cmd_map_compressor_u2=( "mc;map-compressor" "compress_unreal2_maps.sh" "Compresses all ${gamename} server maps." ) -cmd_install_cdkey=( "cd;server-cd-key" "install_ut2k4_key.sh" "Add your server cd key." ) -cmd_install_dst_token=( "ct;cluster-token" "install_dst_token.sh" "Configure cluster token." ) -cmd_fastdl=( "fd;fastdl" "command_fastdl.sh" "Build a FastDL directory." ) -# Dev commands -cmd_dev_debug=( "dev;dev-debug" "command_dev_debug.sh" "DEVCOMMAND" ) -cmd_dev_detect_deps=( "dd;detect-deps" "command_dev_detect_deps.sh" "DEVCOMMAND" ) -cmd_dev_detect_glibc=( "dg;detect-glibc" "command_dev_detect_glibc.sh" "DEVCOMMAND" ) -cmd_dev_detect_ldd=( "dl;detect-ldd" "command_dev_detect_ldd.sh" "DEVCOMMAND" ) - -### Set specific opt here ### - -## Common opt to all servers - -currentopt=( "${cmd_install[@]}" "${cmd_auto_install[@]}" "${cmd_start[@]}" "${cmd_stop[@]}" "${cmd_restart[@]}" "${cmd_details[@]}" ) -currentopt+=( "${cmd_backup[@]}" "${cmd_update_functions[@]}" "${cmd_test_alert[@]}" "${cmd_monitor[@]}" ) - -## Servers that do not have a feature - -# Exclude games without a console -if [ "${gamename}" != "TeamSpeak 3" ]; then - currentopt+=( "${cmd_console[@]}" "${cmd_debug[@]}" ) -fi -# Exclude noupdated games here -if [ "${gamename}" != "Battlefield: 1942" ]&&[ "${gamename}" != "Call of Duty" ]&&[ "${gamename}" != "Call of Duty: United Offensive" ]&&[ "${gamename}" != "Call of Duty 2" ]&&[ "${gamename}" != "Call of Duty 4" ]&&[ "${gamename}" != "Call of Duty: World at War" ]&&[ "${gamename}" != "QuakeWorld" ]&&[ "${gamename}" != "Quake 2" ]&&[ "${gamename}" != "Quake 3: Arena" ]&&[ "${gamename}" != "Wolfenstein: Enemy Territory" ]; then - currentopt+=( "${cmd_update[@]}" "${cmd_force_update[@]}") -fi +fn_getopt_generic(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + fu|force-update|update-restart) + forceupdate=1; + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + mi|mods-install) + command_mods_install.sh;; + mu|mods-update) + command_mods_update.sh;; + mr|mods-remove) + command_mods_remove.sh;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." + echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}mods-install\t${default}mi |View and install available mods/addons." + echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." + echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." + } | column -s $'\t' -t + esac +} -## Include games that have access to specific commands -# Validate command -if [ -n "${appid}" ]; then - currentopt+=( "${cmd_validate[@]}" ) -fi -# FastDL command -if [ "${engine}" == "source" ]; then - currentopt+=( "${cmd_fastdl[@]}" ) -fi -# Wipe command -if [ "${gamename}" == "Rust" ]; then - currentopt+=( "${cmd_wipe[@]}" ) -fi -# Mods commands -if [ "${engine}" == "source" ]||[ "${gamename}" == "Rust" ]|[ "${gamename}" == "Hurtworld" ]|[ "${gamename}" == "7 Days To Die" ]; then - currentopt+=( "${cmd_mods_install[@]}" "${cmd_mods_remove[@]}" "${cmd_mods_update[@]}" ) -fi +fn_getopt_generic_update_no_steam(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + } | column -s $'\t' -t + esac +} -## Game server exclusive commands -# TeamSpeak exclusive -if [ "${gamename}" == "TeamSpeak 3" ]; then - currentopt+=( "${cmd_change_password[@]}" ) -fi -# Unreal exclusive -if [ "${engine}" == "unreal2" ]; then - if [ "${gamename}" == "Unreal Tournament 2004" ]; then - currentopt+=( "${cmd_install_cdkey[@]}" "${cmd_map_compressor_u2[@]}" ) - else - currentopt+=( "${cmd_map_compressor_u2[@]}" ) +fn_getopt_generic_no_update(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 fi -fi -if [ "${engine}" == "unreal" ]; then - currentopt+=( "${cmd_map_compressor_u99[@]}" ) -fi -# DST exclusive -if [ "${gamename}" == "Don't Starve Together" ]; then - currentopt+=( "${cmd_install_dst_token[@]}" ) -fi -# MTA exclusive -if [ "${gamename}" == "Multi Theft Auto" ]; then - currentopt+=( "${cmd_install_default_ressources[@]}" ) -fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + echo -e "${blue}details\t${default}dt |Displays useful infomation 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + } | column -s $'\t' -t + esac +} -## Developer commands -currentopt+=( "${cmd_dev_debug[@]}" "${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" ) +fn_getopt_teamspeak3(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + pw|change-password) + command_ts3_server_pass.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from teamspeak.com." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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}change-password\t${default}pw |Changes TS3 serveradmin password." + echo -e "${blue}backup\t${default}b |Create archive of the server." + echo -e "${blue}install\t${default}i |Install the server." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + } | column -s $'\t' -t + esac +} +fn_getopt_minecraft(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from mojang.com." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + echo -e "${blue}details\t${default}dt |Displays useful infomation 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + } | column -s $'\t' -t + esac +} -### Build list of available commands -optcommands=() -index="0" -for ((index="0"; index < ${#currentopt[@]}; index+=3)); do - cmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" - for ((cmdindex=1; cmdindex <= ${cmdamount}; cmdindex++)); do - optcommands+=( "$(echo "${currentopt[index]}"| awk -F ';' -v x=${cmdindex} '{ print $x }')" ) - done -done +fn_getopt_mta(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + fu|force-update|update-restart) + forceupdate=1; + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ir|install-default-resources) + command_install_resources_mta.sh;; + ai|auto-install) + fn_autoinstall;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from linux.mtasa.com." + echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from linux.mtasa.com." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + echo -e "${blue}details\t${default}dt |Displays useful infomation 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}install-default-resources\t${default}ir |Install the MTA default resources." + } | column -s $'\t' -t + esac +} -# Shows LinuxGSM usage -fn_opt_usage(){ +fn_getopt_mumble(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + dev|dev-debug) + command_dev_debug.sh;; + c|console) + command_console.sh;; + i|install) + command_install.sh;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from GitHub." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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 +} + +fn_getopt_dstserver(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + fu|force-update|update-restart) + forceupdate=1; + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + ct|cluster-token) + install_dst_token.sh;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" echo "${gamename} - Linux Game Server Manager - Version ${version}" echo "https://gameservermanagers.com/${selfname}" echo -e "" echo -e "${lightyellow}Commands${default}" - # Display available commands - index="0" { - for ((index="0"; index < ${#currentopt[@]}; index+=3)); do - # Hide developer commands - if [ "${currentopt[index+2]}" != "DEVCOMMAND" ]; then - echo -e "${cyan}$(echo "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo "${currentopt[index]}" | awk -F ';' '{ print $1 }')\t| ${currentopt[index+2]}" - fi - done + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." + echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}cluster-token\t${default}ct |Configure cluster token." } | column -s $'\t' -t - core_exit.sh + esac } -### Check if user commands exist and run corresponding scripts, or display script usage -if [ -z "${getopt}" ]; then - fn_opt_usage -fi -# Command exists -for i in "${optcommands[@]}"; do - if [ "${i}" == "${getopt}" ] ; then - # Seek and run command - index="0" - for ((index="0"; index < ${#currentopt[@]}; index+=3)); do - currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')" - for ((currcmdindex=1; currcmdindex <= ${currcmdamount}; currcmdindex++)); do - if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then - # Run command - ${currentopt[index+1]} - break - fi - done - done - break - core_exit.sh +fn_getopt_gmodserver(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + fu|force-update|update-restart) + forceupdate=1; + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + fd|fastdl) + command_fastdl.sh;; + mi|mods-install) + command_mods_install.sh;; + mu|mods-update) + command_mods_update.sh;; + mr|mods-remove) + command_mods_remove.sh;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." + echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + echo -e "${blue}details\t${default}dt |Displays useful information about the server." + echo -e "${blue}backup\t${default}b |Create archive of the server." + echo -e "${blue}console\t${default}c |Console allows you to access the live view of a 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." + 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 directory for your server." + echo -e "${blue}mods-install\t${default}mi |View and install available mods/addons." + echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." + echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." + } | column -s $'\t' -t + esac +} + +fn_getopt_rustserver(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + fu|force-update|update-restart) + forceupdate=1; + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + pd|postdetails) + command_postdetails.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + mi|mods-install) + command_mods_install.sh;; + mu|mods-update) + command_mods_update.sh;; + mr|mods-remove) + command_mods_remove.sh;; + wi|wipe) + command_wipe.sh;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD." + echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + 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}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}mods-install\t${default}mi |View and install available mods/addons." + echo -e "${blue}mods-update\t${default}mu |Update installed mods/addons." + echo -e "${blue}mods-remove\t${default}mr |Remove installed mods/addons." + echo -e "${blue}wipe\t${default}wi |Wipe your Rust server." + } | column -s $'\t' -t + esac +} + +fn_getopt_unreal(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + mc|map-compressor) + compress_ut99_maps.sh;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + echo -e "${blue}details\t${default}dt |Displays useful information about the server." + echo -e "${blue}backup\t${default}b |Create archive of the server." + echo -e "${blue}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}map-compressor\t${default}mc |Compresses all ${gamename} server maps." + } | column -s $'\t' -t + esac +} + + +fn_getopt_unreal2(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + u|update) + command_update.sh;; + fu|force-update|update-restart) + forceupdate=1; + command_update.sh;; + uf|update-functions) + command_update_functions.sh;; + v|validate) + command_validate.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + mc|map-compressor) + compress_unreal2_maps.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 fi -done + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update\t${default}Checks and applies updates from SteamCMD." + echo -e "${blue}force-update\t${default}fu |Bypasses the check and applies updates from SteamCMD." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}validate\t${default}v |Validate server files with SteamCMD." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + echo -e "${blue}details\t${default}dt |Displays useful information about the server." + echo -e "${blue}backup\t${default}b |Create archive of the server." + echo -e "${blue}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}map-compressor\t${default}mc |Compresses all ${gamename} server maps." + } | column -s $'\t' -t + esac +} -# If we're executing this, it means command was not found -echo -e "${red}Unknown command${default}: $0 ${getopt}" -exitcode=2 -fn_opt_usage + +fn_getopt_ut2k4(){ +case "${getopt}" in + st|start) + command_start.sh;; + sp|stop) + command_stop.sh;; + r|restart) + command_restart.sh;; + uf|update-functions) + command_update_functions.sh;; + m|monitor) + command_monitor.sh;; + ta|test-alert) + command_test_alert.sh;; + dt|details) + command_details.sh;; + b|backup) + command_backup.sh;; + c|console) + command_console.sh;; + d|debug) + command_debug.sh;; + dev|dev-debug) + command_dev_debug.sh;; + i|install) + command_install.sh;; + ai|auto-install) + fn_autoinstall;; + cd|server-cd-key) + install_ut2k4_key.sh;; + mc|map-compressor) + compress_unreal2_maps.sh;; + dd|detect-deps) + command_dev_detect_deps.sh;; + dg|detect-glibc) + command_dev_detect_glibc.sh;; + dl|detect-ldd) + command_dev_detect_ldd.sh;; + *) + if [ -n "${getopt}" ]; then + echo -e "${red}Unknown command${default}: $0 ${getopt}" + exitcode=2 + fi + echo "Usage: $0 [option]" + echo "${gamename} - Linux Game Server Manager - Version ${version}" + echo "https://gameservermanagers.com/${selfname}" + echo -e "" + echo -e "${lightyellow}Commands${default}" + { + echo -e "${blue}start\t${default}st |Start the server." + echo -e "${blue}stop\t${default}sp |Stop the server." + echo -e "${blue}restart\t${default}r |Restart the server." + echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded." + echo -e "${blue}monitor\t${default}m |Checks that the server is running." + echo -e "${blue}test-alert\t${default}ta |Sends test alert." + echo -e "${blue}details\t${default}dt |Displays useful information about the server." + echo -e "${blue}backup\t${default}b |Create archive of the server." + echo -e "${blue}console\t${default}c |Console allows you to access the live view of a 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." + echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts." + echo -e "${blue}server-cd-key\t${default}cd |Add your server cd key" + echo -e "${blue}map-compressor\t${default}mc |Compresses all ${gamename} server maps." + } | column -s $'\t' -t + esac +} + +# Don't Starve Together +if [ "${gamename}" == "Don't Starve Together" ]; then + fn_getopt_dstserver +# Garry's Mod +elif [ "${gamename}" == "Garry's Mod" ]; then + fn_getopt_gmodserver +# Minecraft +elif [ "${engine}" == "lwjgl2" ]; then + fn_getopt_minecraft +# Multi Theft Auto +elif [ "${gamename}" == "Multi Theft Auto" ]; then + fn_getopt_mta +# Mumble +elif [ "${gamename}" == "Mumble" ]; then + fn_getopt_mumble +# Teamspeak 3 +elif [ "${gamename}" == "TeamSpeak 3" ]; then + fn_getopt_teamspeak3 +elif [ "${gamename}" == "Rust" ]; then + fn_getopt_rustserver +# Unreal 2 Engine +elif [ "${engine}" == "unreal2" ]; then + if [ "${gamename}" == "Unreal Tournament 2004" ]; then + fn_getopt_ut2k4 + else + fn_getopt_unreal2 + fi +# Unreal Engine +elif [ "${engine}" == "unreal" ]; then + fn_getopt_unreal +# Generic +elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then + fn_getopt_generic_no_update +elif [ "${gamename}" == "Factorio" ]; then + fn_getopt_generic_update_no_steam +else + fn_getopt_generic +fi core_exit.sh

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≤OfQl^s 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