From 67e08ba84ffa300dfa9974bd6f62f66d6d0e4d75 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Dec 2020 22:10:18 +0000 Subject: [PATCH 001/117] fix(update): fix broken branch selection. (#3130) This change fixes the update command for those on public branches. add fix to core_dl.sh --- lgsm/functions/core_dl.sh | 6 +++--- lgsm/functions/update_steamcmd.sh | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 03ff54383..35b5e008b 100755 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -61,7 +61,7 @@ fn_dl_steamcmd(){ # If using a specific branch. if [ -n "${branch}" ]&&[ -n "${betapassword}" ]; then ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - elif [ -n "${branch}" ]; then + elif [ -n "${branch}" ]&&[ "${branch}" != "public" ]; then ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" else ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" @@ -70,7 +70,7 @@ fn_dl_steamcmd(){ elif [ "${shortname}" == "ac" ]||[ "${shortname}" == "jk2" ]; then if [ -n "${branch}" ]&&[ -n "${betapassword}" ]; then ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - elif [ -n "${branch}" ]; then + elif [ -n "${branch}" ]&&[ "${branch}" != "public" ]; then ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" else ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" @@ -79,7 +79,7 @@ fn_dl_steamcmd(){ else if [ -n "${branch}" ]&&[ -n "${betapassword}" ]; then ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - elif [ -n "${branch}" ]; then + elif [ -n "${branch}" ]&&[ "${branch}" != "public" ]; then ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" else ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 28496f7d7..8df7b0563 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -42,7 +42,7 @@ fn_update_steamcmd_remotebuild(){ if [ -n "${branch}" ]&&[ -n "${betapassword}" ]; then remotebuild=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" -beta "${branch}" -betapassword "${betapassword}" +quit | sed '1,/branches/d' | sed "1,/${branch}/d" | grep -m 1 buildid | tr -cd '[:digit:]') - elif [ -n "${branch}" ]; then + elif [ -n "${branch}" ]&&[ "${branch}" != "public" ]; then remotebuild=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" -beta "${branch}" +quit | sed '1,/branches/d' | sed "1,/${branch}/d" | grep -m 1 buildid | tr -cd '[:digit:]') else remotebuild=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +quit | sed '1,/branches/d' | sed "1,/${branch}/d" | grep -m 1 buildid | tr -cd '[:digit:]') From 871af8adc99b98acfbf6f437868fe662517f4de8 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Dec 2020 22:14:04 +0000 Subject: [PATCH 002/117] release v20.6.2 --- lgsm/functions/core_functions.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index b02084256..e4da9830f 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -7,7 +7,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v20.6.1" +modulesversion="v20.6.2" # Core diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index 1730f7ba1..1afa2f60a 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.1" +version="v20.6.2" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 18e5f964b..aab73228d 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.1" +version="v20.6.2" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index 8aa7f73c3..edfc620b3 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.1" +version="v20.6.2" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 7c5212f40..620eb43ee 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.1" +version="v20.6.2" shortname="ts3" gameservername="ts3server" commandname="CORE" From 7bc55f18200dda23652f8ef3ca5ab86b30e10418 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 18 Dec 2020 22:15:52 +0000 Subject: [PATCH 003/117] release v20.6.2 --- linuxgsm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linuxgsm.sh b/linuxgsm.sh index 18cd88326..4815e86e3 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.1" +version="v20.6.2" shortname="core" gameservername="core" commandname="CORE" From 18dd4f79d84847dcd62fcee078f14bc8cf1b7667 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 28 Dec 2020 16:21:04 +0000 Subject: [PATCH 004/117] Update issue templates and bots Create Lock Threads Action Update lock.yml Update lock.yml Update lock.yml Create top-issues.yml Update top-issues.yml remove old bot configs Create release-drafter.yml Update release-drafter template Update release-drafter.yml Update release-drafter.yml Update release-drafter.yml Create create-release.yml delete release drafter Update create-release.yml Update create-release.yml Update create-release.yml Create release-drafter.ym Update create-release.yml Update create-release.yml Update create-release.yml Update create-release.yml Rename release-drafter.ym to release-drafter.yml Update create-release.yml removed top issues bot --- .../{bug_report.md => bug-report.md} | 6 ++- ...{feature_request.md => feature-request.md} | 5 ++- .github/ISSUE_TEMPLATE/new-server-request.md | 5 ++- .github/lock.yml | 38 ------------------- .github/no-response.yml | 10 ----- .github/release-drafter.yml | 4 +- .github/workflows/create-release.yml | 17 +++++++++ .github/workflows/lock.yml | 21 ++++++++++ 8 files changed, 53 insertions(+), 53 deletions(-) rename .github/ISSUE_TEMPLATE/{bug_report.md => bug-report.md} (93%) rename .github/ISSUE_TEMPLATE/{feature_request.md => feature-request.md} (91%) delete mode 100644 .github/lock.yml delete mode 100644 .github/no-response.yml create mode 100644 .github/workflows/create-release.yml create mode 100644 .github/workflows/lock.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug-report.md similarity index 93% rename from .github/ISSUE_TEMPLATE/bug_report.md rename to .github/ISSUE_TEMPLATE/bug-report.md index d3c1adfbb..31d08d206 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -1,8 +1,12 @@ --- -name: Bug report +name: Bug Report about: Found a bug? Raise a report. +title: "[BUG]" +labels: 'type: bug' +assignees: '' --- + Issues raised here are **ONLY** for: * LinuxGSM bugs. * Feature suggestions. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature-request.md similarity index 91% rename from .github/ISSUE_TEMPLATE/feature_request.md rename to .github/ISSUE_TEMPLATE/feature-request.md index dc51fe40e..8ba27fa9f 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -1,6 +1,9 @@ --- -name: Feature request +name: Feature Request about: Suggest an idea for LinuxGSM. +title: "[FEATURE]" +labels: 'type: feature request' +assignees: '' --- diff --git a/.github/ISSUE_TEMPLATE/new-server-request.md b/.github/ISSUE_TEMPLATE/new-server-request.md index ada8638cc..84176741f 100644 --- a/.github/ISSUE_TEMPLATE/new-server-request.md +++ b/.github/ISSUE_TEMPLATE/new-server-request.md @@ -1,6 +1,9 @@ --- -name: New server request +name: New Server Request about: Suggest a new game server to be added. +title: "[Server Request]" +labels: 'type: game server request' +assignees: '' --- diff --git a/.github/lock.yml b/.github/lock.yml deleted file mode 100644 index dd136ecdc..000000000 --- a/.github/lock.yml +++ /dev/null @@ -1,38 +0,0 @@ -# Configuration for Lock Threads - https://github.com/dessant/lock-threads - -# Number of days of inactivity before a closed issue or pull request is locked -daysUntilLock: 365 - -# Skip issues and pull requests created before a given timestamp. Timestamp must -# follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable -skipCreatedBefore: false - -# Issues and pull requests with these labels will be ignored. Set to `[]` to disable -exemptLabels: [] - -# Label to add before locking, such as `outdated`. Set to `false` to disable -lockLabel: false - -# Comment to post before locking. Set to `false` to disable -lockComment: > - This thread has been automatically locked since there has not been - any recent activity after it was closed. Please open a new issue for - related bugs. - -# Assign `resolved` as the reason for locking. Set to `false` to disable -setLockReason: false - -# Limit to only `issues` or `pulls` -# only: issues - -# Optionally, specify configuration settings just for `issues` or `pulls` -# issues: -# exemptLabels: -# - help-wanted -# lockLabel: outdated - -# pulls: -# daysUntilLock: 30 - -# Repository to extend settings from -# _extends: repo \ No newline at end of file diff --git a/.github/no-response.yml b/.github/no-response.yml deleted file mode 100644 index a883b161e..000000000 --- a/.github/no-response.yml +++ /dev/null @@ -1,10 +0,0 @@ -# Configuration for probot-no-response - https://github.com/probot/no-response - -# Number of days of inactivity before an Issue is closed for lack of response -daysUntilClose: 60 -# Label requiring a response -responseRequiredLabel: "waiting response" -# Comment to post when closing an Issue for lack of response. Set to `false` to disable -closeComment: > - This issue has been automatically closed because there has been no response - to this issue and is now stale. diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 1387c5e19..27bcee3fb 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -1,4 +1,4 @@ template: | - ## Changelog + ## What’s Changed - $CHANGES \ No newline at end of file + $CHANGES diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml new file mode 100644 index 000000000..f82cb60d9 --- /dev/null +++ b/.github/workflows/create-release.yml @@ -0,0 +1,17 @@ +name: Release Drafter + +on: + push: + # branches to consider in the event; optional, defaults to all + branches: + - master +jobs: + update_release_draft: + runs-on: ubuntu-latest + steps: + # Drafts your next Release notes as Pull Requests are merged into "master" + - uses: release-drafter/release-drafter@v5 + with: + config-name: release-drafter.yml + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml new file mode 100644 index 000000000..63f0cf2db --- /dev/null +++ b/.github/workflows/lock.yml @@ -0,0 +1,21 @@ +name: 'Lock Threads' + +on: + schedule: + - cron: '0 0 * * *' + +jobs: + lock: + runs-on: ubuntu-latest + steps: + - uses: dessant/lock-threads@v2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + issue-lock-comment: > + This issue has been automatically locked since there + has not been any recent activity after it was closed. + Please open a new issue for related bugs. + pr-lock-comment: > + This pull request has been automatically locked since there + has not been any recent activity after it was closed. + Please open a new issue for related bugs. From 3fa9376dc5c0d6ba9112b706b9c4fa7801b41ae7 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 15 Jan 2021 23:49:16 +0000 Subject: [PATCH 005/117] Update git-sync.yml --- .github/workflows/git-sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/git-sync.yml b/.github/workflows/git-sync.yml index c058b6d24..a5a827096 100644 --- a/.github/workflows/git-sync.yml +++ b/.github/workflows/git-sync.yml @@ -1,4 +1,4 @@ -name: Backup Repo +name: Github to Bitbucket sync # This action will sync the github repo with a backup bitbucket repo. # This will allow LinuxGSM to use Bitbucket as and alternative download if github fails. on: From 2f5ee83ca18797b6f2f666a963f9a24a2dfd5bf7 Mon Sep 17 00:00:00 2001 From: unknowntrojan <14975032+unknowntrojan@users.noreply.github.com> Date: Fri, 25 Dec 2020 15:13:51 +0100 Subject: [PATCH 006/117] fix(stop) stop will clear tmux text before entering stop command (#3142) Tmux will ENTER before using stop command to clear any text entered in teh console --- 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 439967fd0..6fe06e4ef 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -43,7 +43,7 @@ fn_stop_graceful_cmd(){ fn_print_dots "Graceful: sending \"${1}\"" fn_script_log_info "Graceful: sending \"${1}\"" # Sends specific stop command. - tmux send -t "${sessionname}" "${1}" ENTER > /dev/null 2>&1 + tmux send -t "${sessionname}" ENTER "${1}" ENTER > /dev/null 2>&1 # Waits up to ${seconds} seconds giving the server time to shutdown gracefully. for ((seconds=1; seconds<=${2}; seconds++)); do check_status.sh From 452323a72c08c7fcf8b7e3f25b1935e04e8b020d Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 27 Dec 2020 00:32:00 +0100 Subject: [PATCH 007/117] fix(update): redo steamcmd update part for new behavoir (#3139) Co-authored-by: Daniel Gibbs --- lgsm/functions/update_steamcmd.sh | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 8df7b0563..b7238daf3 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -40,13 +40,8 @@ fn_update_steamcmd_remotebuild(){ find "${HOME}" -type f -name "appinfo.vdf" -exec rm -f {} \; fi - if [ -n "${branch}" ]&&[ -n "${betapassword}" ]; then - remotebuild=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" -beta "${branch}" -betapassword "${betapassword}" +quit | sed '1,/branches/d' | sed "1,/${branch}/d" | grep -m 1 buildid | tr -cd '[:digit:]') - elif [ -n "${branch}" ]&&[ "${branch}" != "public" ]; then - remotebuild=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" -beta "${branch}" +quit | sed '1,/branches/d' | sed "1,/${branch}/d" | grep -m 1 buildid | tr -cd '[:digit:]') - else - remotebuild=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +quit | sed '1,/branches/d' | sed "1,/${branch}/d" | grep -m 1 buildid | tr -cd '[:digit:]') - fi + # password for branch not needed to check the buildid + remotebuild=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +quit | sed -e '/"branches"/,/^}/!d' | sed -n "/\"${branch}\"/,/}/p" | grep -m 1 buildid | tr -cd '[:digit:]') if [ "${firstcommandname}" != "INSTALL" ]; then fn_print_dots "Checking remote build: ${remotelocation}" From 97d0b2a23e3dbb4e6eaf6ccebf5474dcd3cbddc8 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 27 Dec 2020 00:33:37 +0100 Subject: [PATCH 008/117] fix(bmdm): add missing dependency ncurses libs (#3138) Co-authored-by: Daniel Gibbs --- lgsm/functions/check_deps.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 7a43e2f3a..80d33cad9 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -385,6 +385,9 @@ fn_deps_build_debian(){ # Battlefield 1942 elif [ "${shortname}" == "bf1942" ]; then array_deps_required+=( libncurses5:i386 libtinfo5:i386 ) + # Black Mesa: Death Match + elif [ "${shortname}" == "bmdm" ]; then + array_deps_required+=( libncurses5:i386 ) # Counter-Strike: Source, Garry's Mod, No More Room in Hell, Source Forts Classic, Zombie Master Reborn and Zombie Panic: Source elif [ "${shortname}" == "css" ]||[ "${shortname}" == "gmod" ]||[ "${shortname}" == "nmrih" ]||[ "${shortname}" == "sfc" ]||[ "${shortname}" == "zmr" ]||[ "${shortname}" == "zps" ]; then if [ "${arch}" == "x86_64" ]; then @@ -501,8 +504,8 @@ fn_deps_build_redhat(){ # Battlefield: Vietnam elif [ "${shortname}" == "bfv" ]; then array_deps_required+=( compat-libstdc++-33.i686 glibc.i686 ) - # Battlefield 1942, Counter-Strike: Source, Garry's Mod, No More Room in Hell, Source Forts Classic, Zombie Master Reborn and Zombie Panic: Source - elif [ "${shortname}" == "bf1942" ]||[ "${shortname}" == "css" ]||[ "${shortname}" == "gmod" ]||[ "${shortname}" == "nmrih" ]||[ "${shortname}" == "sfc" ]||[ "${shortname}" == "zmr" ]||[ "${shortname}" == "zps" ]; then + # Battlefield 1942, Black Mesa: Deathmatch, Counter-Strike: Source, Garry's Mod, No More Room in Hell, Source Forts Classic, Zombie Master Reborn and Zombie Panic: Source + elif [ "${shortname}" == "bf1942" ]||[ "${shortname}" == "bmdm" ]||[ "${shortname}" == "css" ]||[ "${shortname}" == "gmod" ]||[ "${shortname}" == "nmrih" ]||[ "${shortname}" == "sfc" ]||[ "${shortname}" == "zmr" ]||[ "${shortname}" == "zps" ]; then array_deps_required+=( ncurses-libs.i686 ) # Brainbread 2, Don't Starve Together & Team Fortress 2 elif [ "${shortname}" == "bb2" ]||[ "${shortname}" == "dst" ]||[ "${shortname}" == "tf2" ]; then From 1e78dbd9268c6f2b610528378e0d94b62134bfb8 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 29 Dec 2020 11:46:08 +0100 Subject: [PATCH 009/117] fix(minecraft): fix java ram assignment (#3147) --- lgsm/config-default/config-lgsm/mcserver/_default.cfg | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/mcserver/_default.cfg b/lgsm/config-default/config-lgsm/mcserver/_default.cfg index b78195e3e..81e833d6e 100644 --- a/lgsm/config-default/config-lgsm/mcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mcserver/_default.cfg @@ -14,6 +14,7 @@ javaram="1024" # -Xmx$1024M ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters fn_parms(){ parms="nogui" +executable="java -Xmx${javaram}M -jar ${jarfile}" } ## Release Settings | https://docs.linuxgsm.com/game-servers/minecraft#release-settings @@ -151,7 +152,8 @@ glibc="null" ## Game Server Directories systemdir="${serverfiles}" executabledir="${serverfiles}" -executable="java -Xmx${javaram}M -jar ${serverfiles}/minecraft_server.jar" +jarfile="${serverfiles}/minecraft_server.jar" +executable="${jarfile}" servercfgdir="${systemdir}" servercfg="server.properties" servercfgdefault="server.properties" From ccbe56926ca23452125cc883c59d20a8a2f5258b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 29 Dec 2020 14:48:22 +0000 Subject: [PATCH 010/117] feat(config): add secrets config to store sensitive settings (#3080) * feat(config): add secrets.cfg * changed name of config * updated wording --- .../config-lgsm/secrets-common-template.cfg | 5 +++++ .../config-lgsm/secrets-instance-template.cfg | 5 +++++ linuxgsm.sh | 18 ++++++++++++++++++ tests/tests_fctrserver.sh | 18 ++++++++++++++++++ tests/tests_jc2server.sh | 18 ++++++++++++++++++ tests/tests_mcserver.sh | 18 ++++++++++++++++++ tests/tests_ts3server.sh | 18 ++++++++++++++++++ 7 files changed, 100 insertions(+) create mode 100644 lgsm/config-default/config-lgsm/secrets-common-template.cfg create mode 100644 lgsm/config-default/config-lgsm/secrets-instance-template.cfg diff --git a/lgsm/config-default/config-lgsm/secrets-common-template.cfg b/lgsm/config-default/config-lgsm/secrets-common-template.cfg new file mode 100644 index 000000000..d8ded6aa9 --- /dev/null +++ b/lgsm/config-default/config-lgsm/secrets-common-template.cfg @@ -0,0 +1,5 @@ +################################## +######## Common Secrets ########## +################################## +# PLACE GLOBAL SECRET SETTINGS HERE +## These settings will apply to all instances. diff --git a/lgsm/config-default/config-lgsm/secrets-instance-template.cfg b/lgsm/config-default/config-lgsm/secrets-instance-template.cfg new file mode 100644 index 000000000..5446d3718 --- /dev/null +++ b/lgsm/config-default/config-lgsm/secrets-instance-template.cfg @@ -0,0 +1,5 @@ +################################## +####### Instance Secrets ######### +################################## +# PLACE INSTANCE SECRET SETTINGS HERE +## These settings will apply to a specific instance. diff --git a/linuxgsm.sh b/linuxgsm.sh index 4815e86e3..cb767a770 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -412,6 +412,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/common.cfg" fi + # Load the secrets-common.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" @@ -421,6 +430,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" fi + # Load the secrets-instance.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + fi # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index 1afa2f60a..55a05f99f 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -421,6 +421,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/common.cfg" fi + # Load the secrets-common.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" @@ -430,6 +439,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" fi + # Load the secrets-instance.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + fi # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index aab73228d..2eb1815f3 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -422,6 +422,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/common.cfg" fi + # Load the secrets-common.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" @@ -431,6 +440,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" fi + # Load the secrets-instance.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + fi # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index edfc620b3..8797e78e8 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -422,6 +422,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/common.cfg" fi + # Load the secrets-common.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" @@ -431,6 +440,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" fi + # Load the secrets-instance.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + fi # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 620eb43ee..3883d8dc2 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -422,6 +422,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/common.cfg" fi + # Load the secrets-common.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" @@ -431,6 +440,15 @@ else # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" fi + # Load the secrets-instance.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + fi # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then From 6de6d900edb79690c57fdf970e4bd9c1aab853cf Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 30 Dec 2020 11:14:05 +0100 Subject: [PATCH 011/117] feat(newserver): Colony Survival (#3075) --- .../config-lgsm/colserver/_default.cfg | 178 ++++++++++++++++++ lgsm/data/serverlist.csv | 1 + lgsm/functions/check_deps.sh | 6 + lgsm/functions/fix_steamcmd.sh | 2 + lgsm/functions/info_config.sh | 25 +++ lgsm/functions/info_messages.sh | 14 +- lgsm/functions/install_config.sh | 7 + 7 files changed, 232 insertions(+), 1 deletion(-) create mode 100644 lgsm/config-default/config-lgsm/colserver/_default.cfg diff --git a/lgsm/config-default/config-lgsm/colserver/_default.cfg b/lgsm/config-default/config-lgsm/colserver/_default.cfg new file mode 100644 index 000000000..5be0776cf --- /dev/null +++ b/lgsm/config-default/config-lgsm/colserver/_default.cfg @@ -0,0 +1,178 @@ +################################## +######## Default Settings ######## +################################## +# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! +# Copy settings from here and use them in either: +# common.cfg - applies settings to every instance. +# [instance].cfg - applies settings to a specific instance. + +#### Game Server Settings #### + +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +# Edit with care | https://colonysurvival.gamepedia.com/Dedicated_Server#Installation_.28Linux.29 +fn_parms(){ +parms="-batchmode -nographics +server.config ${servercfgfullpath}" +} + +#### LinuxGSM Settings #### + +## LinuxGSM Stats +# Send useful stats to LinuxGSM developers. +# https://docs.linuxgsm.com/configuration/linuxgsm-stats +# (on|off) +stats="off" + +## Notification Alerts +# (on|off) + +# Display IP | https://docs.linuxgsm.com/alerts#display-ip +displayip="" + +# More info | https://docs.linuxgsm.com/alerts#more-info +postalert="off" + +# Discord Alerts | https://docs.linuxgsm.com/alerts/discord +discordalert="off" +discordwebhook="webhook" + +# Email Alerts | https://docs.linuxgsm.com/alerts/email +emailalert="off" +email="email@example.com" +emailfrom="" + +# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt +iftttalert="off" +ifttttoken="accesstoken" +iftttevent="linuxgsm_alert" + +# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun +mailgunalert="off" +mailgunapiregion="us" +mailguntoken="accesstoken" +mailgundomain="example.com" +mailgunemailfrom="alert@example.com" +mailgunemail="email@myemail.com" + +# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover +pushoveralert="off" +pushovertoken="accesstoken" +pushoveruserkey="userkey" + +# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat +rocketchatalert="off" +rocketchatwebhook="webhook" +rocketchattoken="" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" + +# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram +# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". +# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramalert="off" +telegramtoken="accesstoken" +telegramchatid="" +curlcustomstring="" + +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + +## Backup | https://docs.linuxgsm.com/commands/backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://docs.linuxgsm.com/features/logging +consolelogging="on" +logdays="7" + +## Monitor | https://docs.linuxgsm.com/commands/monitor +# Query delay time +querydelay="1" + +## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors +ansi="on" + +#### Advanced Settings #### + +## Message Display Time | https://docs.linuxgsm.com/features/message-display-time +sleeptime="0.5" + +## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd +# Server appid +appid="748090" +# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch +branch="" +betapassword="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="false" + +## Stop Mode | https://docs.linuxgsm.com/features/stop-mode +# 1: tmux kill +# 2: CTRL+c +# 3: quit +# 4: quit 120s +# 5: stop +# 6: q +# 7: exit +# 8: 7 Days to Die +# 9: GoldSrc +# 10: Avorion +# 11: end +stopmode="2" + +## Query mode +# 1: session only +# 2: gamedig (gsquery fallback) +# 3: gamedig +# 4: gsquery +# 5: tcp +querymode="2" +querytype="protocol-valve" + +## Console type +consoleverbose="no" +consoleinteract="no" + +## Game Server Details +# Do not edit +gamename="Colony Survival" +engine="unity3d" +glibc="2.15" + +#### Directories #### +# Edit with care + +## Game Server Directories +systemdir="${serverfiles}" +executabledir="${serverfiles}" +executable="./colonyserver.x86_64" +servercfgdir="${systemdir}/gamedata/settings" +servercfg="${selfname}.json" +servercfgdefault="colserver.json" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${lgsmdir}/backup" + +## Logging Directories +logdir="${rootdir}/log" +gamelogdir="${serverfiles}/gamedata/logs/server/" +lgsmlogdir="${logdir}/script" +consolelogdir="${logdir}/console" +gamelog="${gamelogdir}/${selfname}-game.log" +lgsmlog="${lgsmlogdir}/${selfname}-script.log" +consolelog="${consolelogdir}/${selfname}-console.log" +alertlog="${lgsmlogdir}/${selfname}-alert.log" +postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log" + +## Logs Naming +gamelogdate="${gamelogdir}/${selfname}-game-$(date '+%Y-%m-%d-%H:%M:%S').log" +lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" diff --git a/lgsm/data/serverlist.csv b/lgsm/data/serverlist.csv index ad3bc9a19..7786158f1 100644 --- a/lgsm/data/serverlist.csv +++ b/lgsm/data/serverlist.csv @@ -21,6 +21,7 @@ cod2,cod2server,Call of Duty 2 cod4,cod4server,Call of Duty 4 coduo,coduoserver,Call of Duty: United Offensive codwaw,codwawserver,Call of Duty: World at War +col,colserver,Colony Survival cs,csserver,Counter-Strike 1.6 cscz,csczserver,Counter-Strike: Condition Zero csgo,csgoserver,Counter-Strike: Global Offensive diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 80d33cad9..29c1c4548 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -404,6 +404,9 @@ fn_deps_build_debian(){ # Barotrauma elif [ "${shortname}" == "bt" ]; then array_deps_required+=( libicu-dev ) + # Colony Survival + elif [ "${shortname}" == "col" ]; then + array_deps_required+=( coreutils ) # Ecoserver elif [ "${shortname}" == "eco" ]; then array_deps_required+=( libgdiplus ) @@ -513,6 +516,9 @@ fn_deps_build_redhat(){ # Call of Duty & Medal of Honor: Allied Assault elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]||[ "${shortname}" == "mohaa" ]; then array_deps_required+=( compat-libstdc++-33.i686 ) + # Colony Survival + elif [ "${shortname}" == "col" ]; then + array_deps_required+=( coreutils ) # Ecoserver elif [ "${shortname}" == "eco" ]; then array_deps_required+=( libgdiplus ) diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh index 41d31e263..01465b45e 100755 --- a/lgsm/functions/fix_steamcmd.sh +++ b/lgsm/functions/fix_steamcmd.sh @@ -79,6 +79,8 @@ elif [ "${shortname}" == "cmw" ]; then fn_fix_steamclient_so "32" "${executabledir}/lib" elif [ "${shortname}" == "cs" ]; then fn_fix_steamclient_so "32" "${serverfiles}" +elif [ "${shortname}" == "col" ]; then + fn_fix_steamclient_so "64" "${serverfiles}" elif [ "${shortname}" == "ins" ]; then fn_fix_steamclient_so "32" "${serverfiles}/bin" elif [ "${shortname}" == "pz" ]; then diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index d13e000d9..99eed24c4 100755 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -1525,6 +1525,29 @@ fn_info_config_pavlovvr(){ fi } +fn_info_config_col(){ + if [ -f "${servercfgfullpath}" ]; then + servername=$(jq -r '.ServerSettings.ServerName' "${servercfgfullpath}") + serverpassword=$(jq -r '.ServerSettings.ServerPassword' "${servercfgfullpath}") + maxplayers=$(jq -r '.ServerSettings.MaxPlayerCount' "${servercfgfullpath}") + port=$(jq -r '.ServerSettings.ServerGamePort' "${servercfgfullpath}") + steamport=$(jq -r '.ServerSettings.ServerSteamPort' "${servercfgfullpath}") + rconpassword=$(jq -r '.ServerSettings.RCONPassword' "${servercfgfullpath}") + configip=$(jq -r '.ServerSettings.ServerIP' "${servercfgfullpath}") + + # password not set + serverpassword=${serverpassword:-"NOT SET"} + queryport=${port:-"0"} + else + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + maxplayers=${maxplayers:-"0"} + port=${port:-"27004"} + steamport=${steamport:-"27005"} + rconpassword=${rconpassword:-"NOT SET"} + fi +} + if [ "${shortname}" == "ac" ]; then fn_info_config_assettocorsa elif [ "${shortname}" == "ark" ]; then @@ -1551,6 +1574,8 @@ elif [ "${shortname}" == "cod4" ]; then fn_info_config_cod4 elif [ "${shortname}" == "codwaw" ]; then fn_info_config_codwaw +elif [ "${shortname}" == "col" ]; then + fn_info_config_col elif [ "${shortname}" == "dst" ]; then fn_info_config_dontstarve elif [ "${shortname}" == "eco" ]; then diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index dde3a2585..c6a1b996f 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -583,7 +583,7 @@ fn_info_message_ports(){ fi done # engines/games that require editing the parms. - local ports_edit_array=( "Avorion" "goldsrc" "Factorio" "Hurtworld" "iw3.0" "ioquake3" "qfusion" "Rust" "Soldat" "spark" "source" "starbound" "unreal4" "realvirtuality" "Unturned" ) + local ports_edit_array=( "Avorion" "col" "goldsrc" "Factorio" "Hurtworld" "iw3.0" "ioquake3" "qfusion" "Rust" "Soldat" "spark" "source" "starbound" "unreal4" "realvirtuality" "Unturned" ) for port_edit in "${ports_edit_array[@]}"; do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]||[ "${shortname}" == "${port_edit}" ]; then parmslocation="${configdirserver}" @@ -1445,6 +1445,16 @@ fn_info_message_pavlovvr(){ } | column -s $'\t' -t } +fn_info_message_colony(){ + echo -e "netstat -atunp | grep colonyserver" + echo -e "" + { + echo -e "${lightblue}DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL${default}" + echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Steam\tINBOUND\t${steamport}\tudp" + } | column -s $'\t' -t +} + fn_info_message_select_engine(){ # Display details depending on game or engine. if [ "${shortname}" == "ac" ]; then @@ -1473,6 +1483,8 @@ fn_info_message_select_engine(){ fn_info_message_cod4 elif [ "${shortname}" == "codwaw" ]; then fn_info_message_codwaw + elif [ "${shortname}" == "col" ]; then + fn_info_message_colony elif [ "${shortname}" == "dst" ]; then fn_info_message_dst elif [ "${shortname}" == "eco" ]; then diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index fbff9dbbb..052e535d2 100755 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -316,6 +316,13 @@ elif [ "${shortname}" == "cc" ]; then fn_default_config_remote fn_set_config_vars fn_list_config_locations +elif [ "${shortname}" == "col" ]; then + gamedirname="ColonySurvival" + array_configs+=( colserver.json ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars + fn_list_config_locations elif [ "${shortname}" == "cs" ]; then gamedirname="CounterStrike" array_configs+=( server.cfg ) From 8ab3dccb7124e9f0d9f0c3431d055f19b2c7a801 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 30 Dec 2020 22:33:47 +0000 Subject: [PATCH 012/117] feat(skeleton): New command skeleton (#3152) * initial commit of skel * getopt * getopt * getopt * cpio * adding messages * exit * message * shellcheck * truncate netstat for colserver * added cpio dependency * tabs --- lgsm/functions/check_deps.sh | 12 ++++++------ lgsm/functions/command_skeleton.sh | 21 +++++++++++++++++++++ lgsm/functions/core_functions.sh | 5 +++++ lgsm/functions/core_getopt.sh | 5 +++-- lgsm/functions/info_messages.sh | 2 +- 5 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 lgsm/functions/command_skeleton.sh diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 29c1c4548..621b12eae 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -343,7 +343,7 @@ fn_deps_build_debian(){ array_deps_missing=() # LinuxGSM requirements. - array_deps_required=( curl wget ca-certificates file bsdmainutils util-linux python3 tar bzip2 gzip unzip binutils bc jq tmux netcat ) + array_deps_required=( curl wget ca-certificates file bsdmainutils util-linux python3 tar bzip2 gzip unzip binutils bc jq tmux netcat cpio ) # All servers except ts3, mumble, GTA and minecraft servers require lib32stdc++6 and lib32gcc1. if [ "${shortname}" != "ts3" ]&&[ "${shortname}" != "mumble" ]&&[ "${shortname}" != "mc" ]&&[ "${engine}" != "renderware" ]; then @@ -470,15 +470,15 @@ fn_deps_build_redhat(){ # LinuxGSM requirements. # CentOS if [ "${distroversion}" == "7" ]; then - array_deps_required=( epel-release curl wget util-linux python3 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat ) + array_deps_required=( epel-release curl wget util-linux python3 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat cpio ) elif [ "${distroversion}" == "8" ]; then - array_deps_required=( epel-release curl wget util-linux python36 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat ) + array_deps_required=( epel-release curl wget util-linux python36 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat cpio ) elif [ "${distroid}" == "fedora" ]; then - array_deps_required=( curl wget util-linux python3 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat ) + array_deps_required=( curl wget util-linux python3 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat cpio ) elif [[ "${distroname}" == *"Amazon Linux AMI"* ]]; then - array_deps_required=( curl wget util-linux python3 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat ) + array_deps_required=( curl wget util-linux python3 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat cpio ) else - array_deps_required=( curl wget util-linux python3 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat ) + array_deps_required=( curl wget util-linux python3 file tar gzip bzip2 unzip binutils bc jq tmux nmap-ncat cpio ) fi # All servers except ts3, mumble, multi theft auto and minecraft servers require glibc.i686 and libstdc++.i686. diff --git a/lgsm/functions/command_skeleton.sh b/lgsm/functions/command_skeleton.sh new file mode 100644 index 000000000..cb1136915 --- /dev/null +++ b/lgsm/functions/command_skeleton.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# LinuxGSM command_skeleton.sh function +# Author: Daniel Gibbs +# Website: https://linuxgsm.com +# Description: Creates an copy of a game servers directorys. + + +fn_print_dots "Creating skeleton directory" +check.sh + +# Find all directorys and create them in the skel directory +find "${rootdir}" -type d -not \( -path ./skel -prune \) | cpio -pdvm skel 2>/dev/null +exitcode=$? +if [ "${exitcode}" != 0 ]; then + fn_print_fail_nl "Creating skeleton directory" + fn_script_log_fatal "Creating skeleton directory" +else + fn_print_ok_nl "Creating skeleton directory: ./skel" + fn_script_log_pass "Creating skeleton directory: ./skel" +fi +core_exit.sh diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index e4da9830f..942eb6bda 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -155,6 +155,11 @@ functionfile="${FUNCNAME[0]}" fn_fetch_function } +command_skeleton.sh(){ +functionfile="${FUNCNAME[0]}" +fn_fetch_function +} + command_wipe.sh(){ functionfile="${FUNCNAME[0]}" fn_fetch_function diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index e20b32b57..ecfba09b3 100755 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -20,6 +20,7 @@ cmd_backup=( "b;backup" "command_backup.sh" "Create backup archives of the serve cmd_update_linuxgsm=( "ul;update-lgsm;uf;update-functions" "command_update_linuxgsm.sh" "Check and apply any LinuxGSM updates." ) 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 if crashed." ) +cmd_skeleton=( "sk;skeleton" "command_skeleton.sh" "Create a skeleton directory." ) cmd_donate=( "do;donate" "command_donate.sh" "Donation options." ) # Console servers only. cmd_console=( "c;console" "command_console.sh" "Access server console." ) @@ -55,9 +56,9 @@ cmd_dev_clear_functions=( "cf;clear-functions" "command_dev_clear_functions.sh" ### Set specific opt here. -currentopt=( "${cmd_start[@]}" "${cmd_stop[@]}" "${cmd_restart[@]}" "${cmd_monitor[@]}" "${cmd_test_alert[@]}" "${cmd_details[@]}" "${cmd_postdetails[@]}" ) +currentopt=( "${cmd_start[@]}" "${cmd_stop[@]}" "${cmd_restart[@]}" "${cmd_monitor[@]}" "${cmd_test_alert[@]}" "${cmd_details[@]}" "${cmd_postdetails[@]}" "${cmd_skeleton[@]}" ) -# Update LGSM. +# Update LinuxGSM. currentopt+=( "${cmd_update_linuxgsm[@]}" ) # Exclude noupdate games here. diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index c6a1b996f..177129bfd 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -1446,7 +1446,7 @@ fn_info_message_pavlovvr(){ } fn_info_message_colony(){ - echo -e "netstat -atunp | grep colonyserver" + echo -e "netstat -atunp | grep colonyserv" echo -e "" { echo -e "${lightblue}DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL${default}" From 09ce7899d1e889a0c7792408b97abac28af96e45 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 31 Dec 2020 11:33:33 +0100 Subject: [PATCH 013/117] feat(check-update): add new command check-update for steamcmd game servers (#3146) --- lgsm/functions/alert.sh | 11 + lgsm/functions/check_steamcmd.sh | 141 +---------- lgsm/functions/command_check_update.sh | 24 ++ lgsm/functions/core_functions.sh | 10 + lgsm/functions/core_getopt.sh | 5 +- lgsm/functions/core_steamcmd.sh | 332 +++++++++++++++++++++++++ lgsm/functions/update_steamcmd.sh | 182 +------------- 7 files changed, 384 insertions(+), 321 deletions(-) create mode 100755 lgsm/functions/command_check_update.sh create mode 100755 lgsm/functions/core_steamcmd.sh diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 3b54230eb..484c0c1e2 100755 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -60,6 +60,15 @@ fn_alert_update(){ alertbody="${gamename} received update" } +fn_alert_check_update(){ + fn_script_log_info "Sending alert: Update available" + alertsubject="Alert - ${selfname} - Update available" + alertemoji="🎮" + alertsound="1" + alerturl="not enabled" + alertbody="${gamename} update available" +} + fn_alert_permissions(){ fn_script_log_info "Sending alert: Permissions error" alertsubject="Alert - ${selfname}: Permissions error" @@ -88,6 +97,8 @@ elif [ "${alert}" == "test" ]; then fn_alert_test elif [ "${alert}" == "update" ]; then fn_alert_update +elif [ "${alert}" == "check-update" ]; then + fn_alert_check_update elif [ "${alert}" == "config" ]; then fn_alert_config fi diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 647ee7525..9141acd0d 100755 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -6,145 +6,8 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_install_steamcmd(){ - if [ "${shortname}" == "ark" ]&&[ "${installsteamcmd}" == "1" ]; then - steamcmddir="${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" - fi - if [ ! -d "${steamcmddir}" ]; then - mkdir -p "${steamcmddir}" - fi - remote_fileurl="${1}" - remote_fileurl_backup="${2}" - remote_fileurl_name="${3}" - remote_fileurl_backup_name="${4}" - local_filedir="${5}" - local_filename="${6}" - chmodx="${7:-0}" - run="${8:-0}" - forcedl="${9:-0}" - md5="${10:-0}" - fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "" "norun" "noforce" "nomd5" - fn_dl_extract "${tmpdir}" "steamcmd_linux.tar.gz" "${steamcmddir}" - chmod +x "${steamcmddir}/steamcmd.sh" -} - -fn_check_steamcmd_user(){ - # Checks if steamuser is setup. - if [ "${steamuser}" == "username" ]; then - fn_print_fail_nl "Steam login not set. Update steamuser in ${configdirserver}" - echo -e " * Change steamuser=\"username\" to a valid steam login." - if [ -d "${lgsmlogdir}" ]; then - fn_script_log_fatal "Steam login not set. Update steamuser in ${configdirserver}" - fi - core_exit.sh - fi - # Anonymous user is set if steamuser is missing. - if [ -z "${steamuser}" ]; then - if [ -d "${lgsmlogdir}" ]; then - fn_script_log_info "Using anonymous Steam login" - fi - steamuser="anonymous" - steampass='' - fi -} - -fn_check_steamcmd(){ - # Checks if SteamCMD exists when starting or updating a server. - # Only install if steamcmd package is missing or steamcmd dir is missing. - if [ ! -f "${steamcmddir}/steamcmd.sh" ]&&[ -z "$(command -v steamcmd 2>/dev/null)" ]; then - if [ "${commandname}" == "INSTALL" ]; then - fn_install_steamcmd - else - fn_print_warn_nl "SteamCMD is missing" - fn_script_log_warn "SteamCMD is missing" - fn_install_steamcmd - fi - elif [ "${commandname}" == "INSTALL" ]; then - fn_print_information "SteamCMD is already installed..." - fn_print_ok_eol_nl - fi -} - -fn_check_steamcmd_dir(){ - # Worksround that pre-installs the correct steam directories to ensure all packages use the correct Standard. - # https://github.com/ValveSoftware/steam-for-linux/issues/6976#issuecomment-610446347 - - # Create Steam installation directory. - if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" ]; then - mkdir -p "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" - fi - - # Create common Steam directory. - if [ ! -d "${HOME}/.steam" ]; then - mkdir -p "${HOME}/.steam" - fi - - # Symbolic links to Steam installation directory. - if [ ! -L "${HOME}/.steam/root" ]; then - if [ -d "${HOME}/.steam/root" ]; then - rm "${HOME}/.steam/root" - fi - ln -s "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" "${HOME}/.steam/root" - fi - - if [ ! -L "${HOME}/.steam/steam" ]; then - if [ -d "${HOME}/.steam/steam" ]; then - rm -rf "${HOME}/.steam/steam" - fi - ln -s "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" "${HOME}/.steam/steam" - fi -} - -fn_check_steamcmd_dir_legacy(){ - # Remove old Steam installation directories ~/Steam and ${rootdir}/steamcmd - if [ -d "${rootdir}/steamcmd" ]&&[ "${steamcmddir}" == "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" ]; then - rm -rf "${rootdir:?}/steamcmd" - fi - - if [ -d "${HOME}/Steam" ]&&[ "${steamcmddir}" == "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" ]; then - rm -rf "${HOME}/Steam" - fi -} - -fn_check_steamcmd_ark(){ - # Checks if SteamCMD exists in - # Engine/Binaries/ThirdParty/SteamCMD/Linux - # to allow ark mods to work - if [ ! -f "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamcmd.sh" ]; then - installsteamcmd=1 - if [ "${commandname}" == "INSTALL" ]; then - fn_install_steamcmd - else - fn_print_warn_nl "ARK mods SteamCMD is missing" - fn_script_log_warn "ARK mods SteamCMD is missing" - fn_install_steamcmd - fi - elif [ "${commandname}" == "INSTALL" ]; then - fn_print_information "ARK mods SteamCMD is already installed..." - fn_print_ok_eol_nl - fi -} - -fn_check_steamcmd_clear(){ -# Will remove steamcmd dir if steamcmd package is installed. -if [ "$(command -v steamcmd 2>/dev/null)" ]&&[ -d "${rootdir}/steamcmd" ]; then - rm -rf "${steamcmddir:?}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "Removing ${rootdir}/steamcmd" - else - fn_script_log_pass "Removing ${rootdir}/steamcmd" - fi -fi -} - -fn_check_steamcmd_exec(){ - if [ "$(command -v steamcmd 2>/dev/null)" ]; then - steamcmdcommand="steamcmd" - else - steamcmdcommand="./steamcmd.sh" - fi -} +# init steamcmd functions +core_steamcmd.sh fn_check_steamcmd_clear fn_check_steamcmd diff --git a/lgsm/functions/command_check_update.sh b/lgsm/functions/command_check_update.sh new file mode 100755 index 000000000..5bda55469 --- /dev/null +++ b/lgsm/functions/command_check_update.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# LinuxGSM command_check_update.sh function +# Author: Daniel Gibbs +# Website: https://linuxgsm.com +# Description: Handles updating of servers. + +commandname="CHECK-UPDATE" +commandaction="check for Update" +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" +fn_firstcommand_set + +fn_print_dots "" +check.sh +core_logs.sh + +core_steamcmd.sh + +check_steamcmd.sh + +fn_update_steamcmd_localbuild +fn_update_steamcmd_remotebuild +fn_update_steamcmd_compare + +core_exit.sh diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 942eb6bda..ce8458b5d 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -53,6 +53,11 @@ functionfile="${FUNCNAME[0]}" fn_fetch_function } +core_steamcmd.sh(){ +functionfile="${FUNCNAME[0]}" +fn_fetch_function +} + # Commands command_backup.sh(){ @@ -599,6 +604,11 @@ functionfile="${FUNCNAME[0]}" fn_fetch_function } +command_check_update.sh(){ +functionfile="${FUNCNAME[0]}" +fn_fetch_function +} + update_ts3.sh(){ functionfile="${FUNCNAME[0]}" fn_fetch_function diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index ecfba09b3..5fae3fb9f 100755 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -27,6 +27,7 @@ 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 and apply any server updates." ) +cmd_check_update=( "cu;check-update" "command_check_update.sh" "Check if a gameserver update is available" ) cmd_force_update=( "fu;force-update;update-restart;ur" "forceupdate=1; command_update.sh" "Apply server updates bypassing check." ) # SteamCMD servers only. cmd_validate=( "v;validate" "command_validate.sh" "Validate server files with SteamCMD." ) @@ -72,9 +73,9 @@ if [ "${shortname}" == "jk2" ]||[ "${engine}" != "idtech3" ];then fi fi -# Validate command. +# Validate and check-update command. if [ "${appid}" ]; then - currentopt+=( "${cmd_validate[@]}" ) + currentopt+=( "${cmd_validate[@]}" "${cmd_check_update[@]}" ) fi # Backup. diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh new file mode 100755 index 000000000..582eb93b6 --- /dev/null +++ b/lgsm/functions/core_steamcmd.sh @@ -0,0 +1,332 @@ +#!/bin/bash +# LinuxGSM core_steamcmd.sh function +# Author: Daniel Gibbs +# Website: https://linuxgsm.com +# Description: Core functions for SteamCMD + +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" + +fn_install_steamcmd(){ + if [ "${shortname}" == "ark" ]&&[ "${installsteamcmd}" == "1" ]; then + steamcmddir="${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" + fi + if [ ! -d "${steamcmddir}" ]; then + mkdir -p "${steamcmddir}" + fi + remote_fileurl="${1}" + remote_fileurl_backup="${2}" + remote_fileurl_name="${3}" + remote_fileurl_backup_name="${4}" + local_filedir="${5}" + local_filename="${6}" + chmodx="${7:-0}" + run="${8:-0}" + forcedl="${9:-0}" + md5="${10:-0}" + fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "" "norun" "noforce" "nomd5" + fn_dl_extract "${tmpdir}" "steamcmd_linux.tar.gz" "${steamcmddir}" + chmod +x "${steamcmddir}/steamcmd.sh" +} + +fn_check_steamcmd_user(){ + # Checks if steamuser is setup. + if [ "${steamuser}" == "username" ]; then + fn_print_fail_nl "Steam login not set. Update steamuser in ${configdirserver}" + echo -e " * Change steamuser=\"username\" to a valid steam login." + if [ -d "${lgsmlogdir}" ]; then + fn_script_log_fatal "Steam login not set. Update steamuser in ${configdirserver}" + fi + core_exit.sh + fi + # Anonymous user is set if steamuser is missing. + if [ -z "${steamuser}" ]; then + if [ -d "${lgsmlogdir}" ]; then + fn_script_log_info "Using anonymous Steam login" + fi + steamuser="anonymous" + steampass='' + fi +} + +fn_check_steamcmd(){ + # Checks if SteamCMD exists when starting or updating a server. + # Only install if steamcmd package is missing or steamcmd dir is missing. + if [ ! -f "${steamcmddir}/steamcmd.sh" ]&&[ -z "$(command -v steamcmd 2>/dev/null)" ]; then + if [ "${commandname}" == "INSTALL" ]; then + fn_install_steamcmd + else + fn_print_warn_nl "SteamCMD is missing" + fn_script_log_warn "SteamCMD is missing" + fn_install_steamcmd + fi + elif [ "${commandname}" == "INSTALL" ]; then + fn_print_information "SteamCMD is already installed..." + fn_print_ok_eol_nl + fi +} + +fn_check_steamcmd_dir(){ + # Worksround that pre-installs the correct steam directories to ensure all packages use the correct Standard. + # https://github.com/ValveSoftware/steam-for-linux/issues/6976#issuecomment-610446347 + + # Create Steam installation directory. + if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" ]; then + mkdir -p "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" + fi + + # Create common Steam directory. + if [ ! -d "${HOME}/.steam" ]; then + mkdir -p "${HOME}/.steam" + fi + + # Symbolic links to Steam installation directory. + if [ ! -L "${HOME}/.steam/root" ]; then + if [ -d "${HOME}/.steam/root" ]; then + rm "${HOME}/.steam/root" + fi + ln -s "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" "${HOME}/.steam/root" + fi + + if [ ! -L "${HOME}/.steam/steam" ]; then + if [ -d "${HOME}/.steam/steam" ]; then + rm -rf "${HOME}/.steam/steam" + fi + ln -s "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" "${HOME}/.steam/steam" + fi +} + +fn_check_steamcmd_dir_legacy(){ + # Remove old Steam installation directories ~/Steam and ${rootdir}/steamcmd + if [ -d "${rootdir}/steamcmd" ]&&[ "${steamcmddir}" == "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" ]; then + rm -rf "${rootdir:?}/steamcmd" + fi + + if [ -d "${HOME}/Steam" ]&&[ "${steamcmddir}" == "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" ]; then + rm -rf "${HOME}/Steam" + fi +} + +fn_check_steamcmd_ark(){ + # Checks if SteamCMD exists in + # Engine/Binaries/ThirdParty/SteamCMD/Linux + # to allow ark mods to work + if [ ! -f "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamcmd.sh" ]; then + installsteamcmd=1 + if [ "${commandname}" == "INSTALL" ]; then + fn_install_steamcmd + else + fn_print_warn_nl "ARK mods SteamCMD is missing" + fn_script_log_warn "ARK mods SteamCMD is missing" + fn_install_steamcmd + fi + elif [ "${commandname}" == "INSTALL" ]; then + fn_print_information "ARK mods SteamCMD is already installed..." + fn_print_ok_eol_nl + fi +} + +fn_check_steamcmd_clear(){ + # Will remove steamcmd dir if steamcmd package is installed. + if [ "$(command -v steamcmd 2>/dev/null)" ]&&[ -d "${rootdir}/steamcmd" ]; then + rm -rf "${steamcmddir:?}" + exitcode=$? + if [ "${exitcode}" != 0 ]; then + fn_script_log_fatal "Removing ${rootdir}/steamcmd" + else + fn_script_log_pass "Removing ${rootdir}/steamcmd" + fi + fi +} + +fn_check_steamcmd_exec(){ + if [ "$(command -v steamcmd 2>/dev/null)" ]; then + steamcmdcommand="steamcmd" + else + steamcmdcommand="./steamcmd.sh" + fi +} + +fn_update_steamcmd_localbuild(){ + # Gets local build info. + fn_print_dots "Checking local build: ${remotelocation}" + fn_appmanifest_check + # Uses appmanifest to find local build. + localbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) + + # Set branch to public if no custom branch. + if [ -z "${branch}" ]; then + branch="public" + fi + + # Checks if localbuild variable has been set. + if [ -z "${localbuild}" ]||[ "${localbuild}" == "null" ]; then + fn_print_fail "Checking local build: ${remotelocation}" + fn_script_log_fatal "Checking local build" + core_exit.sh + else + fn_print_ok "Checking local build: ${remotelocation}" + fn_script_log_pass "Checking local build" + fi +} + +fn_update_steamcmd_remotebuild(){ + # Gets remote build info. + if [ -d "${steamcmddir}" ]; then + cd "${steamcmddir}" || exit + fi + + # Removes appinfo.vdf as a fix for not always getting up to date version info from SteamCMD. + if [ "$(find "${HOME}" -type f -name "appinfo.vdf" | wc -l)" -ne "0" ]; then + find "${HOME}" -type f -name "appinfo.vdf" -exec rm -f {} \; + fi + + # password for branch not needed to check the buildid + remotebuild=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +quit | sed -e '/"branches"/,/^}/!d' | sed -n "/\"${branch}\"/,/}/p" | grep -m 1 buildid | tr -cd '[:digit:]') + + if [ "${firstcommandname}" != "INSTALL" ]; then + fn_print_dots "Checking remote build: ${remotelocation}" + # Checks if remotebuild variable has been set. + if [ -z "${remotebuild}" ]||[ "${remotebuild}" == "null" ]; then + fn_print_fail "Checking remote build: ${remotelocation}" + fn_script_log_fatal "Checking remote build" + core_exit.sh + else + fn_print_ok "Checking remote build: ${remotelocation}" + fn_script_log_pass "Checking remote build" + fi + else + # Checks if remotebuild variable has been set. + if [ -z "${remotebuild}" ]||[ "${remotebuild}" == "null" ]; then + fn_print_failure "Unable to get remote build" + fn_script_log_fatal "Unable to get remote build" + core_exit.sh + fi + fi +} + +fn_update_steamcmd_compare(){ + fn_print_dots "Checking for update: ${remotelocation}" + if [ "${localbuild}" != "${remotebuild}" ]; then + fn_print_ok_nl "Checking for update: ${remotelocation}" + echo -en "\n" + echo -e "Update available" + echo -e "* Local build: ${red}${localbuild}${default}" + echo -e "* Remote build: ${green}${remotebuild}${default}" + if [ -n "${branch}" ]; then + echo -e "* Branch: ${branch}" + fi + if [ -n "${betapassword}" ]; then + echo -e "* Branch password: ${betapassword}" + fi + echo -e "https://steamdb.info/app/${appid}/" + echo -en "\n" + fn_script_log_info "Update available" + fn_script_log_info "Local build: ${localbuild}" + fn_script_log_info "Remote build: ${remotebuild}" + if [ -n "${branch}" ]; then + fn_script_log_info "Branch: ${branch}" + fi + if [ -n "${betapassword}" ]; then + fn_script_log_info "Branch password: ${betapassword}" + fi + fn_script_log_info "${localbuild} > ${remotebuild}" + + if [ "${commandname}" == "UPDATE" ]; then + unset updateonstart + check_status.sh + # If server stopped. + if [ "${status}" == "0" ]; then + fn_dl_steamcmd + # If server started. + else + fn_print_restart_warning + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + exitbypass=1 + fn_dl_steamcmd + exitbypass=1 + command_start.sh + fn_firstcommand_reset + fi + unset exitbypass + date +%s > "${lockdir}/lastupdate.lock" + alert="update" + elif [ "${commandname}" == "CHECK-UPDATE" ]; then + alert="check-update" + fi + alert.sh + else + fn_print_ok_nl "Checking for update: ${remotelocation}" + echo -en "\n" + echo -e "No update available" + echo -e "* Local build: ${green}${localbuild}${default}" + echo -e "* Remote build: ${green}${remotebuild}${default}" + if [ -n "${branch}" ]; then + echo -e "* Branch: ${branch}" + fi + if [ -n "${betapassword}" ]; then + echo -e "* Branch password: ${betapassword}" + fi + echo -e "https://steamdb.info/app/${appid}/" + echo -en "\n" + fn_script_log_info "No update available" + fn_script_log_info "Local build: ${localbuild}" + fn_script_log_info "Remote build: ${remotebuild}" + if [ -n "${branch}" ]; then + fn_script_log_info "Branch: ${branch}" + fi + if [ -n "${betapassword}" ]; then + fn_script_log_info "Branch password: ${betapassword}" + fi + fi +} + +fn_appmanifest_info(){ + appmanifestfile=$(find "${serverfiles}" -type f -name "appmanifest_${appid}.acf") + appmanifestfilewc=$(find "${serverfiles}" -type f -name "appmanifest_${appid}.acf" | wc -l) +} + +fn_appmanifest_check(){ + fn_appmanifest_info + # Multiple or no matching appmanifest files may sometimes be present. + # This error is corrected if required. + if [ "${appmanifestfilewc}" -ge "2" ]; then + fn_print_error "Multiple appmanifest_${appid}.acf files found" + fn_script_log_error "Multiple appmanifest_${appid}.acf files found" + fn_print_dots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files" + for appfile in ${appmanifestfile}; do + rm -f "${appfile:?}" + done + appmanifestfilewc1="${appmanifestfilewc}" + fn_appmanifest_info + # if error can not be resolved. + if [ "${appmanifestfilewc}" -ge "2" ]; then + fn_print_fail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" + fn_script_log_fatal "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" + echo -e "* Check user permissions" + for appfile in ${appmanifestfile}; do + echo -e " ${appfile}" + done + core_exit.sh + else + fn_print_ok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" + fn_script_log_pass "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" + fn_print_info_nl "Forcing update to correct issue" + fn_script_log_info "Forcing update to correct issue" + fn_dl_steamcmd + fi + elif [ "${appmanifestfilewc}" -eq "0" ]; then + fn_print_error_nl "No appmanifest_${appid}.acf found" + fn_script_log_error "No appmanifest_${appid}.acf found" + fn_print_info_nl "Forcing update to correct issue" + fn_script_log_info "Forcing update to correct issue" + fn_dl_steamcmd + fn_appmanifest_info + if [ "${appmanifestfilewc}" -eq "0" ]; then + fn_print_fail_nl "Still no appmanifest_${appid}.acf found" + fn_script_log_fatal "Still no appmanifest_${appid}.acf found" + core_exit.sh + fi + fi +} diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index b7238daf3..0733a57d2 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -6,186 +6,8 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_update_steamcmd_localbuild(){ - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - fn_appmanifest_check - # Uses appmanifest to find local build. - localbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) - - # Set branch to public if no custom branch. - if [ -z "${branch}" ]; then - branch="public" - fi - - # Checks if localbuild variable has been set. - if [ -z "${localbuild}" ]||[ "${localbuild}" == "null" ]; then - fn_print_fail "Checking local build: ${remotelocation}" - fn_script_log_fatal "Checking local build" - core_exit.sh - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_steamcmd_remotebuild(){ - # Gets remote build info. - if [ -d "${steamcmddir}" ]; then - cd "${steamcmddir}" || exit - fi - - # Removes appinfo.vdf as a fix for not always getting up to date version info from SteamCMD. - if [ "$(find "${HOME}" -type f -name "appinfo.vdf" | wc -l)" -ne "0" ]; then - find "${HOME}" -type f -name "appinfo.vdf" -exec rm -f {} \; - fi - - # password for branch not needed to check the buildid - remotebuild=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +quit | sed -e '/"branches"/,/^}/!d' | sed -n "/\"${branch}\"/,/}/p" | grep -m 1 buildid | tr -cd '[:digit:]') - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuild variable has been set. - if [ -z "${remotebuild}" ]||[ "${remotebuild}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuild}" ]||[ "${remotebuild}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_steamcmd_compare(){ - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuild}" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuild}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -n "${betapassword}" ]; then - echo -e "* Branch password: ${betapassword}" - fi - echo -e "https://steamdb.info/app/${appid}/" - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuild}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -n "${betapassword}" ]; then - fn_script_log_info "Branch password: ${betapassword}" - fi - fn_script_log_info "${localbuild} > ${remotebuild}" - - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_dl_steamcmd - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_dl_steamcmd - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuild}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -n "${betapassword}" ]; then - echo -e "* Branch password: ${betapassword}" - fi - echo -e "https://steamdb.info/app/${appid}/" - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuild}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -n "${betapassword}" ]; then - fn_script_log_info "Branch password: ${betapassword}" - fi - fi -} - -fn_appmanifest_info(){ - appmanifestfile=$(find "${serverfiles}" -type f -name "appmanifest_${appid}.acf") - appmanifestfilewc=$(find "${serverfiles}" -type f -name "appmanifest_${appid}.acf" | wc -l) -} - -fn_appmanifest_check(){ - fn_appmanifest_info - # Multiple or no matching appmanifest files may sometimes be present. - # This error is corrected if required. - if [ "${appmanifestfilewc}" -ge "2" ]; then - fn_print_error "Multiple appmanifest_${appid}.acf files found" - fn_script_log_error "Multiple appmanifest_${appid}.acf files found" - fn_print_dots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files" - for appfile in ${appmanifestfile}; do - rm -f "${appfile:?}" - done - appmanifestfilewc1="${appmanifestfilewc}" - fn_appmanifest_info - # if error can not be resolved. - if [ "${appmanifestfilewc}" -ge "2" ]; then - fn_print_fail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" - fn_script_log_fatal "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" - echo -e "* Check user permissions" - for appfile in ${appmanifestfile}; do - echo -e " ${appfile}" - done - core_exit.sh - else - fn_print_ok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" - fn_script_log_pass "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" - fn_print_info_nl "Forcing update to correct issue" - fn_script_log_info "Forcing update to correct issue" - fn_dl_steamcmd - fi - elif [ "${appmanifestfilewc}" -eq "0" ]; then - fn_print_error_nl "No appmanifest_${appid}.acf found" - fn_script_log_error "No appmanifest_${appid}.acf found" - fn_print_info_nl "Forcing update to correct issue" - fn_script_log_info "Forcing update to correct issue" - fn_dl_steamcmd - fn_appmanifest_info - if [ "${appmanifestfilewc}" -eq "0" ]; then - fn_print_fail_nl "Still no appmanifest_${appid}.acf found" - fn_script_log_fatal "Still no appmanifest_${appid}.acf found" - core_exit.sh - fi - fi -} +# init steamcmd functions +core_steamcmd.sh # The location where the builds are checked and downloaded. remotelocation="SteamCMD" From 97da99c3706422c062712565b6de1d722968b32c Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 3 Jan 2021 00:12:19 +0100 Subject: [PATCH 014/117] fix(steamcmd): retries are not honored if install succeeds (#3155) --- lgsm/functions/core_dl.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 35b5e008b..01ffcfbc3 100755 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -87,8 +87,9 @@ fn_dl_steamcmd(){ fi # Error checking for SteamCMD. Some errors will loop to try again and some will just exit. + # Check also if we have more errors than retries to be sure that we do not loop to many times and error out. exitcode=$? - if [ -n "$(grep "Error!" "${steamcmdlog}" | tail -1)" ]||[ -n "$(grep "ERROR!" "${steamcmdlog}" | tail -1)" ]; then + if [ -n "$(grep -i "Error!" "${steamcmdlog}" | tail -1)" ]&&[ "$(grep -ic "Error!" "${steamcmdlog}")" -ge "${counter}" ] ; then # Not enough space. if [ -n "$(grep "0x202" "${steamcmdlog}" | tail -1)" ]; then fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Not enough space to download server files" From 07e7344f2f837e0eec4693a38939a8adcee7ab27 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 7 Jan 2021 16:11:30 +0000 Subject: [PATCH 015/117] feat: refactor check_config removing some game specific code (#3160) --- lgsm/functions/check_config.sh | 35 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh index 2b4443cb3..ce9035744 100755 --- a/lgsm/functions/check_config.sh +++ b/lgsm/functions/check_config.sh @@ -6,26 +6,21 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -if [ ! -f "${servercfgfullpath}" ]; then - if [ "${shortname}" != "hw" ]&&[ "${shortname}" != "ut3" ]&&[ "${shortname}" != "kf2" ]; then - fn_print_dots "" - fn_print_warn_nl "Configuration file missing!" - echo -e "${servercfgfullpath}" - fn_script_log_warn "Configuration file missing!" - fn_script_log_warn "${servercfgfullpath}" - install_config.sh - fi +if [ -n "${servercfgfullpath}" ]&&[ ! -f "${servercfgfullpath}" ]; then + fn_print_dots "" + fn_print_warn_nl "Configuration file missing!" + echo -e "${servercfgfullpath}" + fn_script_log_warn "Configuration file missing!" + fn_script_log_warn "${servercfgfullpath}" + install_config.sh fi -if [ "${shortname}" == "rust" ]; then - if [ -z "${rconpassword}" ]; then - fn_print_dots "" - fn_print_fail_nl "RCON password is not set" - fn_script_log_fatal "RCON password is not set" - core_exit.sh - elif [ "${rconpassword}" == "CHANGE_ME" ]; then - fn_print_dots "" - fn_print_warn_nl "Default RCON Password detected" - fn_script_log_warn "Default RCON Password detected" - fi +if [ "${shortname}" == "rust" ]&&[ -v rconpassword ]&&[ -z "${rconpassword}" ]; then + fn_print_dots "" + fn_print_fail_nl "RCON password is not set" + fn_script_log_warn "RCON password is not set" +elif [ -v rconpassword ]&&[ "${rconpassword}" == "CHANGE_ME" ]; then + fn_print_dots "" + fn_print_warn_nl "Default RCON Password detected" + fn_script_log_warn "Default RCON Password detected" fi From 49d81c4c98e99308d4b41f1faefd57a6e1d26bf9 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 9 Jan 2021 00:10:57 +0100 Subject: [PATCH 016/117] fix(gmod): update link for wiki page (#3165) --- lgsm/config-default/config-lgsm/gmodserver/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg index 1e8fb92aa..4bac3995c 100644 --- a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg @@ -18,7 +18,7 @@ maxplayers="16" tickrate="66" gamemode="sandbox" -## Workshop Parameters | https://wiki.garrysmod.com/page/Workshop_for_Dedicated_Servers +## Workshop Parameters | https://wiki.facepunch.com/gmod/Workshop_for_Dedicated_Servers # To get an API key visit - https://steamcommunity.com/dev/apikey wsapikey="" wscollectionid="" From d269905246b043d85bcf52d268fe0dcbe2e71862 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 9 Jan 2021 22:01:15 +0100 Subject: [PATCH 017/117] fix(steamcmd): fix branch switch (#3168) --- lgsm/functions/core_dl.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 01ffcfbc3..7bb346a85 100755 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -61,7 +61,7 @@ fn_dl_steamcmd(){ # If using a specific branch. if [ -n "${branch}" ]&&[ -n "${betapassword}" ]; then ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - elif [ -n "${branch}" ]&&[ "${branch}" != "public" ]; then + elif [ -n "${branch}" ]; then ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" else ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" @@ -70,7 +70,7 @@ fn_dl_steamcmd(){ elif [ "${shortname}" == "ac" ]||[ "${shortname}" == "jk2" ]; then if [ -n "${branch}" ]&&[ -n "${betapassword}" ]; then ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - elif [ -n "${branch}" ]&&[ "${branch}" != "public" ]; then + elif [ -n "${branch}" ]; then ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" else ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" @@ -79,7 +79,7 @@ fn_dl_steamcmd(){ else if [ -n "${branch}" ]&&[ -n "${betapassword}" ]; then ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - elif [ -n "${branch}" ]&&[ "${branch}" != "public" ]; then + elif [ -n "${branch}" ]; then ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" else ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" From a0cbfc49579f389a48f3c89e4040431abaacf8d4 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 10 Jan 2021 01:22:04 +0100 Subject: [PATCH 018/117] feat(newserver): Vintage Story (#3156) Co-authored-by: Daniel Gibbs --- .../config-lgsm/vintsserver/_default.cfg | 171 ++++++++++++++++++ lgsm/data/serverlist.csv | 1 + lgsm/functions/check_deps.sh | 6 + lgsm/functions/command_update.sh | 2 + lgsm/functions/core_functions.sh | 5 + lgsm/functions/info_config.sh | 23 +++ lgsm/functions/info_messages.sh | 13 +- lgsm/functions/install_config.sh | 7 + lgsm/functions/install_server_files.sh | 2 + lgsm/functions/update_minecraft.sh | 2 +- lgsm/functions/update_vintagestory.sh | 145 +++++++++++++++ 11 files changed, 375 insertions(+), 2 deletions(-) create mode 100644 lgsm/config-default/config-lgsm/vintsserver/_default.cfg create mode 100755 lgsm/functions/update_vintagestory.sh diff --git a/lgsm/config-default/config-lgsm/vintsserver/_default.cfg b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg new file mode 100644 index 000000000..e23baf8af --- /dev/null +++ b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg @@ -0,0 +1,171 @@ +################################## +######## Default Settings ######## +################################## +# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! +# Copy settings from here and use them in either: +# common.cfg - applies settings to every instance. +# [instance].cfg - applies settings to a specific instance. + +#### Game Server Settings #### + +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +fn_parms(){ +parms="--datapath ${servercfgdir}" +} + +## Release Settings | https://docs.linuxgsm.com/game-servers/vintagestory#release-settings +# Branch (stable|unstable) +branch="stable" + +#### LinuxGSM Settings #### + +## LinuxGSM Stats +# Send useful stats to LinuxGSM developers. +# https://docs.linuxgsm.com/configuration/linuxgsm-stats +# (on|off) +stats="off" + +## Notification Alerts +# (on|off) + +# Display IP | https://docs.linuxgsm.com/alerts#display-ip +displayip="" + +# More info | https://docs.linuxgsm.com/alerts#more-info +postalert="off" + +# Discord Alerts | https://docs.linuxgsm.com/alerts/discord +discordalert="off" +discordwebhook="webhook" + +# Email Alerts | https://docs.linuxgsm.com/alerts/email +emailalert="off" +email="email@example.com" +emailfrom="" + +# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt +iftttalert="off" +ifttttoken="accesstoken" +iftttevent="linuxgsm_alert" + +# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun +mailgunalert="off" +mailgunapiregion="us" +mailguntoken="accesstoken" +mailgundomain="example.com" +mailgunemailfrom="alert@example.com" +mailgunemail="email@myemail.com" + +# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover +pushoveralert="off" +pushovertoken="accesstoken" +pushoveruserkey="userkey" + +# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat +rocketchatalert="off" +rocketchatwebhook="webhook" +rocketchattoken="" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" + +# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram +# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". +# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramalert="off" +telegramtoken="accesstoken" +telegramchatid="" +curlcustomstring="" + +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + +## Backup | https://docs.linuxgsm.com/commands/backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://docs.linuxgsm.com/features/logging +consolelogging="on" +logdays="7" + +## Monitor | https://docs.linuxgsm.com/commands/monitor +# Query delay time +querydelay="1" + +## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors +ansi="on" + +#### Advanced Settings #### + +## Message Display Time | https://docs.linuxgsm.com/features/message-display-time +sleeptime="0.5" + +## Stop Mode | https://docs.linuxgsm.com/features/stop-mode +# 1: tmux kill +# 2: CTRL+c +# 3: quit +# 4: quit 120s +# 5: stop +# 6: q +# 7: exit +# 8: 7 Days to Die +# 9: GoldSrc +# 10: Avorion +# 11: end +stopmode="2" + +## Query mode +# 1: session only +# 2: gamedig (gsquery fallback) +# 3: gamedig +# 4: gsquery +# 5: tcp +querymode="5" +querytype="" + +## Console type +consoleverbose="yes" +consoleinteract="yes" + +## Game Server Details +# Do not edit +gamename="Vintage Story" +engine="vintagestory" +glibc="2.17" + +#### Directories #### +# Edit with care + +## Game Server Directories +systemdir="${serverfiles}" +executabledir="${systemdir}" +preexecutable="mono" +executable="./VintagestoryServer.exe" +servercfgdir="${serverfiles}/data/${selfname}" +servercfg="serverconfig.json" +servercfgdefault="serverconfig.json" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${lgsmdir}/backup" + +## Logging Directories +logdir="${rootdir}/log" +gamelogdir="${vsdataworld}/Logs" +lgsmlogdir="${logdir}/script" +consolelogdir="${logdir}/console" +lgsmlog="${lgsmlogdir}/${selfname}-script.log" +consolelog="${consolelogdir}/${selfname}-console.log" +alertlog="${lgsmlogdir}/${selfname}-alert.log" +postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log" + +## Logs Naming +lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" diff --git a/lgsm/data/serverlist.csv b/lgsm/data/serverlist.csv index 7786158f1..92f194046 100644 --- a/lgsm/data/serverlist.csv +++ b/lgsm/data/serverlist.csv @@ -104,6 +104,7 @@ ut2k4,ut2k4server,Unreal Tournament 2004 ut3,ut3server,Unreal Tournament 3 ut99,ut99server,Unreal Tournament 99 vs,vsserver,Vampire Slayer +vints,vintsserver,Vintage Story wet,wetserver,Wolfenstein: Enemy Territory wf,wfserver,Warfork wurm,wurmserver,Wurm Unlimited diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 621b12eae..5a9b34be8 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -452,6 +452,9 @@ fn_deps_build_debian(){ # Unreal Tournament elif [ "${shortname}" == "ut" ]; then array_deps_required+=( unzip ) + # Vintage Story + elif [ "${shortname}" == "vints" ]; then + array_deps_required+=( mono-complete ) # Wurm: Unlimited elif [ "${shortname}" == "wurm" ]; then array_deps_required+=( xvfb ) @@ -564,6 +567,9 @@ fn_deps_build_redhat(){ # Unreal Tournament elif [ "${shortname}" == "ut" ]; then array_deps_required+=( unzip ) + # Vintage Story + elif [ "${shortname}" == "vints" ]; then + array_deps_required+=( mono-complete ) # Wurm: Unlimited elif [ "${shortname}" == "wurm" ]; then array_deps_required+=( xorg-x11-server-Xvfb ) diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index b117cbec5..718f5d490 100755 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -28,6 +28,8 @@ elif [ "${shortname}" == "mta" ]; then update_mta.sh elif [ "${shortname}" == "jk2" ]; then update_jediknight2.sh +elif [ "${shortname}" == "vints" ]; then + update_vintagestory.sh else update_steamcmd.sh fi diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index ce8458b5d..3a8c77def 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -649,6 +649,11 @@ functionfile="${FUNCNAME[0]}" fn_fetch_function } +update_vintagestory.sh(){ +functionfile="${FUNCNAME[0]}" +fn_fetch_function +} + fn_update_functions.sh(){ functionfile="${FUNCNAME[0]}" fn_fetch_function diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 99eed24c4..3720c421e 100755 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -1548,6 +1548,27 @@ fn_info_config_col(){ fi } +fn_info_config_vintagestory(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + maxplayers="${unavailable}" + serverpassword="${unavailable}" + port="${unavailable}" + queryport="${unavailable}" + configip="${unavailable}" + else + servername=$(jq -r '.ServerName' "${servercfgfullpath}") + maxplayers=$(jq -r '.MaxClients' "${servercfgfullpath}") + serverpassword=$(jq -r 'select(.Password != null) | .Password' "${servercfgfullpath}") + port=$(jq -r '.Port' "${servercfgfullpath}") + queryport=${port:-"0"} + configip=$(jq -r 'select(.Ip != null) | .Ip' "${servercfgfullpath}") + + serverpassword=${serverpassword:-"NOT SET"} + configip=${configip:-"0.0.0.0"} + fi +} + if [ "${shortname}" == "ac" ]; then fn_info_config_assettocorsa elif [ "${shortname}" == "ark" ]; then @@ -1672,4 +1693,6 @@ elif [ "${shortname}" == "mh" ]; then fn_info_config_mordhau elif [ "${shortname}" == "pvr" ];then fn_info_config_pavlovvr +elif [ "${shortname}" == "vints" ]; then + fn_info_config_vintagestory fi diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index 177129bfd..93dbea45b 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -572,7 +572,7 @@ fn_info_message_ports(){ parmslocation="${red}UNKNOWN${default}" # engines/games that require editing in the config file. - local ports_edit_array=( "avalanche2.0" "avalanche3.0" "Ballistic Overkill" "Barotrauma" "dontstarve" "Eco" "idtech2" "idtech3" "idtech3_ql" "lwjgl2" "Minecraft Bedrock" "Project Cars" "projectzomboid" "quake" "refractor" "realvirtuality" "renderware" "Stationeers" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" "wurm") + local ports_edit_array=( "avalanche2.0" "avalanche3.0" "Ballistic Overkill" "Barotrauma" "dontstarve" "Eco" "idtech2" "idtech3" "idtech3_ql" "lwjgl2" "Minecraft Bedrock" "Project Cars" "projectzomboid" "quake" "refractor" "realvirtuality" "renderware" "Stationeers" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" "Vintage Story" "wurm") for port_edit in "${ports_edit_array[@]}"; do if [ "${shortname}" == "ut3" ]; then parmslocation="${servercfgdir}/UTWeb.ini" @@ -1455,6 +1455,15 @@ fn_info_message_colony(){ } | column -s $'\t' -t } +fn_info_message_vintagestory(){ + echo "netstat -atunp | grep cli" + echo -e "" + { + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game\tINBOUND\t${port}\tTCP" + } | column -s $'\t' -t +} + fn_info_message_select_engine(){ # Display details depending on game or engine. if [ "${shortname}" == "ac" ]; then @@ -1573,6 +1582,8 @@ fn_info_message_select_engine(){ fn_info_message_pavlovvr elif [ "${shortname}" == "rust" ]; then fn_info_message_rust + elif [ "${shortname}" == "vints" ]; then + fn_info_message_vintagestory elif [ "${shortname}" == "wf" ]; then fn_info_message_warfork elif [ "${shortname}" == "wurm" ]; then diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 052e535d2..3efb46a65 100755 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -793,6 +793,13 @@ elif [ "${shortname}" == "unt" ]; then fn_default_config_remote fn_set_config_vars fn_list_config_locations +elif [ "${shortname}" == "vints" ]; then + gamedirname="VintageStory" + array_configs+=( serverconfig.json ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars + fn_list_config_locations elif [ "${shortname}" == "vs" ]; then gamedirname="VampireSlayer" array_configs+=( server.cfg ) diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index f8b6be4f0..a3c40da37 100755 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -91,6 +91,8 @@ elif [ "${shortname}" == "fctr" ]; then install_factorio_save.sh elif [ "${shortname}" == "jk2" ]; then update_jediknight2.sh +elif [ "${shortname}" == "vints" ]; then + update_vintagestory.sh elif [ -z "${appid}" ]||[ "${shortname}" == "ahl" ]||[ "${shortname}" == "bd" ]||[ "${shortname}" == "bb" ]||[ "${shortname}" == "ns" ]||[ "${shortname}" == "sfc" ]||[ "${shortname}" == "ts" ]||[ "${shortname}" == "vs" ]||[ "${shortname}" == "zmr" ]; then if [ "${shortname}" == "ut" ]; then install_eula.sh diff --git a/lgsm/functions/update_minecraft.sh b/lgsm/functions/update_minecraft.sh index e33840f3e..34adf43fc 100755 --- a/lgsm/functions/update_minecraft.sh +++ b/lgsm/functions/update_minecraft.sh @@ -88,10 +88,10 @@ fn_update_minecraft_compare(){ echo -e "Update available" echo -e "* Local build: ${red}${localbuild}${default}" echo -e "* Remote build: ${green}${remotebuild}${default}" - echo -en "\n" if [ -n "${branch}" ]; then echo -e "* Branch: ${branch}" fi + echo -en "\n" fn_script_log_info "Update available" fn_script_log_info "Local build: ${localbuild}" fn_script_log_info "Remote build: ${remotebuild}" diff --git a/lgsm/functions/update_vintagestory.sh b/lgsm/functions/update_vintagestory.sh new file mode 100755 index 000000000..98568f3ca --- /dev/null +++ b/lgsm/functions/update_vintagestory.sh @@ -0,0 +1,145 @@ +#!/bin/bash +# LinuxGSM update_vintagestory.sh function +# Author: Christian Birk +# Website: https://linuxgsm.com +# Description: Handles updating of Vintage Story servers. + +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" + +fn_update_vs_dl(){ + # get version info for download + remotebuildresponse=$(curl -s "${apiurl}" | jq --arg version "${remotebuild}" '.[$version].server') + remotebuildfile=$(echo -e "${remotebuildresponse}" | jq -r '.filename') + remotebuildlink=$(echo -e "${remotebuildresponse}" | jq -r '.urls.cdn') + remotebuildmd5=$(echo -e "${remotebuildresponse}" | jq -r '.md5') + + # Download and extract files to serverfiles + fn_fetch_file "${remotebuildlink}" "" "" "" "${tmpdir}" "${remotebuildfile}" "nochmodx" "norun" "force" "${remotebuildmd5}" + fn_dl_extract "${tmpdir}" "${remotebuildfile}" "${serverfiles}" + fn_clear_tmp +} + +fn_update_vs_localbuild(){ + # Gets local build info. + fn_print_dots "Checking local build: ${remotelocation}" + # Uses executable to find local build. + cd "${executabledir}" || exit + if [ -f "${executable}" ]; then + localbuild="$(${preexecutable} ${executable} --version | sed '/^[[:space:]]*$/d')" + fn_print_ok "Checking local build: ${remotelocation}" + fn_script_log_pass "Checking local build" + else + localbuild="0" + fn_print_error "Checking local build: ${remotelocation}" + fn_script_log_error "Checking local build" + fi +} + +fn_update_vs_remotebuild(){ + if [ "${branch}" == "stable" ]; then + remotebuild=$(curl -s "${apiurl}" | jq -r '[ to_entries[] ] | .[].key' | grep -Ev "\-rc|\-pre" | sort -r -V | head -1) + else + remotebuild=$(curl -s "${apiurl}" | jq -r '[ to_entries[] ] | .[].key' | grep -E "\-rc|\-pre" | sort -r -V | head -1) + fi + + if [ "${firstcommandname}" != "INSTALL" ]; then + fn_print_dots "Checking remote build: ${remotelocation}" + # Checks if remotebuild variable has been set. + if [ -z "${remotebuild}" ]||[ "${remotebuild}" == "null" ]; then + fn_print_fail "Checking remote build: ${remotelocation}" + fn_script_log_fatal "Checking remote build" + core_exit.sh + else + fn_print_ok "Checking remote build: ${remotelocation}" + fn_script_log_pass "Checking remote build" + fi + else + # Checks if remotebuild variable has been set. + if [ -z "${remotebuild}" ]||[ "${remotebuild}" == "null" ]; then + fn_print_failure "Unable to get remote build" + fn_script_log_fatal "Unable to get remote build" + core_exit.sh + fi + fi +} + +fn_update_vs_compare(){ + # Removes dots so if statement can compare version numbers. + fn_print_dots "Checking for update: ${remotelocation}" + if [ "${localbuild}" != "${remotebuild}" ]||[ "${forceupdate}" == "1" ]; then + fn_print_ok_nl "Checking for update: ${remotelocation}" + echo -en "\n" + echo -e "Update available" + echo -e "* Local build: ${red}${localbuild}${default}" + echo -e "* Remote build: ${green}${remotebuild}${default}" + if [ -n "${branch}" ]; then + echo -e "* Branch: ${branch}" + fi + echo -en "\n" + fn_script_log_info "Update available" + fn_script_log_info "Local build: ${localbuild}" + fn_script_log_info "Remote build: ${remotebuild}" + fn_script_log_info "${localbuild} > ${remotebuild}" + + unset updateonstart + check_status.sh + # If server stopped. + if [ "${status}" == "0" ]; then + exitbypass=1 + fn_update_vs_dl + exitbypass=1 + command_start.sh + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + # If server started. + else + fn_print_restart_warning + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + exitbypass=1 + fn_update_vs_dl + exitbypass=1 + command_start.sh + fn_firstcommand_reset + fi + unset exitbypass + date +%s > "${lockdir}/lastupdate.lock" + alert="update" + alert.sh + else + fn_print_ok_nl "Checking for update: ${remotelocation}" + echo -en "\n" + echo -e "No update available" + echo -e "* Local build: ${green}${localbuild}${default}" + echo -e "* Remote build: ${green}${remotebuild}${default}" + if [ -n "${branch}" ]; then + echo -e "* Branch: ${branch}" + fi + echo -en "\n" + fn_script_log_info "No update available" + fn_script_log_info "Local build: ${localbuild}" + fn_script_log_info "Remote build: ${remotebuild}" + if [ -n "${branch}" ]; then + fn_script_log_info "Branch: ${branch}" + fi + fi +} + +# The location where the builds are checked and downloaded. +remotelocation="vintagestory.at" +apiurl="http://api.${remotelocation}/stable-unstable.json" +localversionfile="${datadir}/vintagestoryversion" + +if [ "${firstcommandname}" == "INSTALL" ]; then + fn_update_vs_remotebuild + fn_update_vs_dl +else + fn_print_dots "Checking for update" + fn_print_dots "Checking for update: ${remotelocation}" + fn_script_log_info "Checking for update: ${remotelocation}" + fn_update_vs_localbuild + fn_update_vs_remotebuild + fn_update_vs_compare +fi From b83d699907d9784e768751b325e2b44a7553a7db Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 10 Jan 2021 23:26:22 +0100 Subject: [PATCH 019/117] feat(newserver): SCP: Secret Laboratory (#3163) --- .../config-lgsm/scpslserver/_default.cfg | 168 ++++++++++++++++++ .../config-lgsm/scpslsmserver/_default.cfg | 168 ++++++++++++++++++ lgsm/data/serverlist.csv | 2 + lgsm/functions/check_deps.sh | 3 + lgsm/functions/info_config.sh | 22 +++ lgsm/functions/info_messages.sh | 13 +- lgsm/functions/info_parms.sh | 7 + lgsm/functions/install_config.sh | 7 + 8 files changed, 389 insertions(+), 1 deletion(-) create mode 100644 lgsm/config-default/config-lgsm/scpslserver/_default.cfg create mode 100644 lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg diff --git a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg new file mode 100644 index 000000000..4a706ae40 --- /dev/null +++ b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg @@ -0,0 +1,168 @@ +################################## +######## Default Settings ######## +################################## +# DO NOT EDIT WILL BE OVERWRITTEN! +# Copy settings from here and use them in either +# common.cfg - applies settings to every instance +# [instance].cfg - applies settings to a specific instance + +#### Server Settings #### + +## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters +## All server settings except the server port are done in the config file: +## Docs: https://en.scpslgame.com/index.php?title=Docs:Server_Config +port="7777" + +## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +fn_parms(){ +parms="${port}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) + +# Display IP | https://docs.linuxgsm.com/alerts#display-ip +displayip="" + +# More info | https://docs.linuxgsm.com/alerts#more-info +postalert="off" +postdays="7" +posttarget="https://hastebin.com" + +# Discord Alerts | https://docs.linuxgsm.com/alerts/discord +discordalert="off" +discordwebhook="webhook" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" + +# Email Alerts | https://docs.linuxgsm.com/alerts/email +emailalert="off" +email="email@example.com" +emailfrom="" + +# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt +iftttalert="off" +ifttttoken="accesstoken" +iftttevent="linuxgsm_alert" + +# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun +mailgunalert="off" +mailguntoken="accesstoken" +mailgundomain="example.com" +mailgunemailfrom="alert@example.com" +mailgunemail="email@myemail.com" + +# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover +pushoveralert="off" +pushovertoken="accesstoken" + +# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram +# You can add a custom cURL string eg proxy (useful in Russia) or else in "curlcustomstring". +# like a "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help", if you not need +# any custom string in curl - simple ignore this parameter. +telegramalert="off" +telegramtoken="accesstoken" +telegramchatid="" +curlcustomstring="" + +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + +## Backup | https://docs.linuxgsm.com/commands/backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://docs.linuxgsm.com/features/logging +consolelogging="on" +logdays="7" + +## Monitor | https://docs.linuxgsm.com/commands/monitor +# Query delay time +querydelay="1" + +#### LinuxGSM Advanced Settings #### + +# ANSI Colors +ansi="on" + +# Message Display Time +sleeptime="0.5" + +# Stop Mode | https://docs.linuxgsm.com/steamcmd/stopmode +# 1: tmux kill +# 2: CTRL+c +# 3: quit +# 4: quit 120s +# 5: stop +# 6: q +# 7: exit +# 8: 7 Days to Die +# 9: Gold Source +# 10: Teamspeak 3 +stopmode="7" + +## Query mode +# 1: session only +# 2: gamedig + gsquery +# 3: gamedig +# 4: gsquery +# 5: tcp +querymode="1" +querytype="" + +## Console type +consoleverbose="yes" +consoleinteract="yes" + +## SteamCMD Settings +# Server appid +appid="996560" +# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch +branch="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="" + +## LinuxGSM Server Details +# Do not edit +gamename="SCP: Secret Laboratory" +engine="unity3d" +glibc="2.27" + +#### Directories #### +# Edit with care + +## Server Specific Directories +systemdir="${serverfiles}" +executabledir="${systemdir}" +executable="./LocalAdmin" +servercfg="config_gameplay.txt" +servercfgdefault="config_gameplay.txt" +servercfgdir="${HOME}/.config/SCP Secret Laboratory/config/${port}" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +logdir="${rootdir}/log" +gamelogdir="${HOME}/.config/SCP Secret Laboratory/LocalAdminLogs/${port}" +lgsmlogdir="${logdir}/script" +consolelogdir="${logdir}/console" +lgsmlog="${lgsmlogdir}/${selfname}-script.log" +consolelog="${consolelogdir}/${selfname}-console.log" +alertlog="${lgsmlogdir}/${selfname}-alert.log" +postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log" + +## Logs Naming +lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" diff --git a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg new file mode 100644 index 000000000..4ac830f21 --- /dev/null +++ b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg @@ -0,0 +1,168 @@ +################################## +######## Default Settings ######## +################################## +# DO NOT EDIT WILL BE OVERWRITTEN! +# Copy settings from here and use them in either +# common.cfg - applies settings to every instance +# [instance].cfg - applies settings to a specific instance + +#### Server Settings #### + +## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters +## All server settings except the server port are done in the config file: +## Docs: https://en.scpslgame.com/index.php?title=Docs:Server_Config +port="7777" + +## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +fn_parms(){ +parms="${port}" +} + +#### LinuxGSM Settings #### + +## Notification Alerts +# (on|off) + +# Display IP | https://docs.linuxgsm.com/alerts#display-ip +displayip="" + +# More info | https://docs.linuxgsm.com/alerts#more-info +postalert="off" +postdays="7" +posttarget="https://hastebin.com" + +# Discord Alerts | https://docs.linuxgsm.com/alerts/discord +discordalert="off" +discordwebhook="webhook" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" + +# Email Alerts | https://docs.linuxgsm.com/alerts/email +emailalert="off" +email="email@example.com" +emailfrom="" + +# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt +iftttalert="off" +ifttttoken="accesstoken" +iftttevent="linuxgsm_alert" + +# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun +mailgunalert="off" +mailguntoken="accesstoken" +mailgundomain="example.com" +mailgunemailfrom="alert@example.com" +mailgunemail="email@myemail.com" + +# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover +pushoveralert="off" +pushovertoken="accesstoken" + +# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram +# You can add a custom cURL string eg proxy (useful in Russia) or else in "curlcustomstring". +# like a "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help", if you not need +# any custom string in curl - simple ignore this parameter. +telegramalert="off" +telegramtoken="accesstoken" +telegramchatid="" +curlcustomstring="" + +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + +## Backup | https://docs.linuxgsm.com/commands/backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://docs.linuxgsm.com/features/logging +consolelogging="on" +logdays="7" + +## Monitor | https://docs.linuxgsm.com/commands/monitor +# Query delay time +querydelay="1" + +#### LinuxGSM Advanced Settings #### + +# ANSI Colors +ansi="on" + +# Message Display Time +sleeptime="0.5" + +# Stop Mode | https://docs.linuxgsm.com/steamcmd/stopmode +# 1: tmux kill +# 2: CTRL+c +# 3: quit +# 4: quit 120s +# 5: stop +# 6: q +# 7: exit +# 8: 7 Days to Die +# 9: Gold Source +# 10: Teamspeak 3 +stopmode="7" + +## Query mode +# 1: session only +# 2: gamedig + gsquery +# 3: gamedig +# 4: gsquery +# 5: tcp +querymode="1" +querytype="" + +## Console type +consoleverbose="yes" +consoleinteract="yes" + +## SteamCMD Settings +# Server appid +appid="786920" +# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch +branch="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="" + +## LinuxGSM Server Details +# Do not edit +gamename="SCP: Secret Laboratory ServerMod" +engine="unity3d" +glibc="2.27" + +#### Directories #### +# Edit with care + +## Server Specific Directories +systemdir="${serverfiles}" +executabledir="${systemdir}" +executable="./LocalAdmin" +servercfg="config_gameplay.txt" +servercfgdefault="config_gameplay.txt" +servercfgdir="${HOME}/.config/SCP Secret Laboratory/config/${port}" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${rootdir}/backups" + +## Logging Directories +logdir="${rootdir}/log" +gamelogdir="${HOME}/.config/SCP Secret Laboratory/LocalAdminLogs/${port}" +lgsmlogdir="${logdir}/script" +consolelogdir="${logdir}/console" +lgsmlog="${lgsmlogdir}/${selfname}-script.log" +consolelog="${consolelogdir}/${selfname}-console.log" +alertlog="${lgsmlogdir}/${selfname}-alert.log" +postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log" + +## Logs Naming +lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" diff --git a/lgsm/data/serverlist.csv b/lgsm/data/serverlist.csv index 92f194046..79139f680 100644 --- a/lgsm/data/serverlist.csv +++ b/lgsm/data/serverlist.csv @@ -84,6 +84,8 @@ rw,rwserver,Rising World samp,sampserver,San Andreas Multiplayer sb,sbserver,Starbound sbots,sbotsserver,StickyBots +scpsl,scpslserver,SCP: Secret Laboratory +scpslsm,scpslsmserver,SCP: Secret Laboratory ServerMod sdtd,sdtdserver,7 Days to Die sfc,sfcserver,SourceForts Classic sof2,sof2server,Soldier Of Fortune 2: Gold Edition diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 5a9b34be8..70e5f5a09 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -437,6 +437,9 @@ fn_deps_build_debian(){ else array_deps_required+=( default-jre rng-tools ) fi + # SCP: Secret Laboratory, SCP: Secret Laboratory ServerMod + elif [ "${shortname}" == "scpsl" ]||[ "${shortname}" == "scpslsm" ]; then + array_deps_required+=( mono-complete ) # Sven Co-op elif [ "${shortname}" == "sven" ]; then array_deps_required+=( libssl1.1:i386 zlib1g:i386 ) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 3720c421e..ecf840961 100755 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -1569,6 +1569,26 @@ fn_info_config_vintagestory(){ fi } +fn_info_config_scpsl(){ + if [ -f "${servercfgfullpath}" ]; then + servername=$(sed -nr 's/^server_name: (.*)$/\1/p' "${servercfgfullpath}") + maxplayers=$(sed -nr 's/^max_players: (.*)$/\1/p' "${servercfgfullpath}") + configip=$(sed -nr 's/^ipv4_bind_ip: (.*)$/\1/p' "${servercfgfullpath}") + tickrate=$(sed -nr 's/^server_tickrate: (.*)$/\1/p' "${servercfgfullpath}") + adminpassword=$(sed -nr 's/^administrator_query_password: (.*)$/\1/p' "${servercfgfullpath}") + + if [ "${adminpassword}" == "none" ]; then + adminpassword="NOT SET" + fi + else + servername=${servername:-"NOT SET"} + maxplayers=${maxplayers:-"0"} + configip=${configip:-"0.0.0.0"} + tickrate=${tickrate:-"NOT SET"} + adminpassword=${adminpassword:-"NOT SET"} + fi +} + if [ "${shortname}" == "ac" ]; then fn_info_config_assettocorsa elif [ "${shortname}" == "ark" ]; then @@ -1673,6 +1693,8 @@ elif [ "${engine}" == "unreal3" ]; then fn_info_config_unreal3 elif [ "${shortname}" == "ut" ]; then fn_info_config_ut +elif [ "${shortname}" == "scpsl" ]||[ "${shortname}" == "scpslsm" ]; then + fn_info_config_scpsl elif [ "${shortname}" == "sdtd" ]; then fn_info_config_sdtd elif [ "${shortname}" == "wet" ]; then diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index 93dbea45b..4a834d797 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -583,7 +583,7 @@ fn_info_message_ports(){ fi done # engines/games that require editing the parms. - local ports_edit_array=( "Avorion" "col" "goldsrc" "Factorio" "Hurtworld" "iw3.0" "ioquake3" "qfusion" "Rust" "Soldat" "spark" "source" "starbound" "unreal4" "realvirtuality" "Unturned" ) + local ports_edit_array=( "Avorion" "col" "goldsrc" "Factorio" "Hurtworld" "iw3.0" "ioquake3" "qfusion" "Rust" "scpsl" "scpslsm" "Soldat" "spark" "source" "starbound" "unreal4" "realvirtuality" "Unturned" ) for port_edit in "${ports_edit_array[@]}"; do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]||[ "${shortname}" == "${port_edit}" ]; then parmslocation="${configdirserver}" @@ -1464,6 +1464,15 @@ fn_info_message_vintagestory(){ } | column -s $'\t' -t } +fn_info_message_scpsl(){ + echo -e "netstat -atunp | grep SCPSL" + echo -e "" + { + echo -e "${lightblue}DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL${default}" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + fn_info_message_select_engine(){ # Display details depending on game or engine. if [ "${shortname}" == "ac" ]; then @@ -1536,6 +1545,8 @@ fn_info_message_select_engine(){ fn_info_message_quakelive elif [ "${shortname}" == "samp" ]; then fn_info_message_samp + elif [ "${shortname}" == "scpsl" ]||[ "${shortname}" == "scpslsm" ]; then + fn_info_message_scpsl elif [ "${shortname}" == "sdtd" ]; then fn_info_message_sdtd elif [ "${shortname}" == "squad" ]; then diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index 74c29b9df..782f774d4 100755 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -233,6 +233,10 @@ fn_info_parms_wf(){ webadminport=${webadminport:-"0"} } +fn_info_parms_queryport(){ + queryport="${port:-"0"}" +} + if [ "${shortname}" == "ark" ]; then fn_info_parms_ark elif [ "${shortname}" == "arma3" ]; then @@ -295,4 +299,7 @@ elif [ "${shortname}" == "ut" ]; then fn_info_parms_ut elif [ "${shortname}" == "wf" ]; then fn_info_parms_wf +# for servers that have a missing queryport from the config +elif [ "${shortname}" == "scpsl" ]||[ "${shortname}" == "scpslsm" ]; then + fn_info_parms_queryport fi diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 3efb46a65..dbcb27e14 100755 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -667,6 +667,13 @@ elif [ "${shortname}" == "rust" ]; then fn_fetch_default_config fn_default_config_remote fn_list_config_locations +elif [ "${shortname}" == "scpsl" ]||[ "${shortname}" == "scpslsm" ]; then + gamedirname="SCPSecretLaboratory" + array_configs+=( config_gameplay.txt config_localadmin.txt ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars + fn_list_config_locations elif [ "${shortname}" == "sol" ]; then gamedirname="Soldat" array_configs+=( soldat.ini ) From b6f9ac83bc56afc2b4117841f181bd474757bb32 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 10 Jan 2021 23:27:57 +0100 Subject: [PATCH 020/117] fix(rust): server config text change for rcon (#3175) Co-authored-by: Daniel Gibbs --- lgsm/config-default/config-lgsm/rustserver/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/rustserver/_default.cfg b/lgsm/config-default/config-lgsm/rustserver/_default.cfg index b518b00ba..7ec79ab97 100644 --- a/lgsm/config-default/config-lgsm/rustserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rustserver/_default.cfg @@ -14,7 +14,7 @@ port="28015" rconport="28016" appport=28082 rconpassword="CHANGE_ME" -rconweb="1" # Value is: 1 for the Facepunch web panel; 0 for RCON tools like Rusty or Rustadmin. +rconweb="1" # Value is: 1 for the Facepunch web panel, Rustadmin desktop and Rustadmin Online; 0 for RCON tools like Rusty. servername="Rust" maxplayers="50" seed="" # range: 1-2147483647, used to reproduce a procedural map. From f14678e8200692629b0b1c77bb87eaab53ef59ca Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 11 Jan 2021 22:20:16 +0100 Subject: [PATCH 021/117] fix(steamcmd): remove unused parameter (#3170) --- lgsm/functions/core_steamcmd.sh | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh index 582eb93b6..bfdbce38c 100755 --- a/lgsm/functions/core_steamcmd.sh +++ b/lgsm/functions/core_steamcmd.sh @@ -13,16 +13,6 @@ fn_install_steamcmd(){ if [ ! -d "${steamcmddir}" ]; then mkdir -p "${steamcmddir}" fi - remote_fileurl="${1}" - remote_fileurl_backup="${2}" - remote_fileurl_name="${3}" - remote_fileurl_backup_name="${4}" - local_filedir="${5}" - local_filename="${6}" - chmodx="${7:-0}" - run="${8:-0}" - forcedl="${9:-0}" - md5="${10:-0}" fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "" "norun" "noforce" "nomd5" fn_dl_extract "${tmpdir}" "steamcmd_linux.tar.gz" "${steamcmddir}" chmod +x "${steamcmddir}/steamcmd.sh" From 6d3dc8e57968c45b9e13a76155dac1ca5bb49e9f Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 12 Jan 2021 22:50:09 +0100 Subject: [PATCH 022/117] fix(rust): wipe command does not wipe all sav files (#3183) --- lgsm/functions/command_wipe.sh | 36 +++++----------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 3e0c53b2e..f48f9e5f8 100755 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -38,19 +38,6 @@ fn_wipe_server_files(){ fn_sleep_time fn_script_log_pass "No procedural map file to remove" fi - # Wipe procedural map save. - if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.sav")" ]; then - echo -en "removing map saves proceduralmap.*.sav file(s)..." - fn_sleep_time - fn_script_log_info "Removing procedural map save(s): ${serveridentitydir}/proceduralmap.*.sav" - find "${serveridentitydir:?}" -type f -name "proceduralmap.*.sav" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - fn_sleep_time - else - echo -e "no procedural map save to remove" - fn_sleep_time - fn_script_log_pass "No procedural map save to remove" - fi # Wipe Barren map. if [ -n "$(find "${serveridentitydir}" -type f -name "barren*.map")" ]; then echo -en "removing barren map barren*.map file(s)..." @@ -64,19 +51,6 @@ fn_wipe_server_files(){ fn_sleep_time fn_script_log_pass "No barren map file to remove" fi - # Wipe barren map save. - if [ -n "$(find "${serveridentitydir}" -type f -name "barren*.sav")" ]; then - echo -en "removing barren map saves barren*.sav file(s)..." - fn_sleep_time - fn_script_log_info "Removing barren map save(s): ${serveridentitydir}/barren*.sav" - find "${serveridentitydir:?}" -type f -name "barren*.sav" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - fn_sleep_time - else - echo -e "no barren map save to remove" - fn_sleep_time - fn_script_log_pass "No barren map save to remove." - fi # Wipe custom map. if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ]; then echo -en "removing custom map file(s)..." @@ -91,11 +65,11 @@ fn_wipe_server_files(){ fn_script_log_pass "No map file to remove" fi # Wipe custom map save. - if [ -n "$(find "${serveridentitydir}" -type f -name "*.sav")" ]; then - echo -en "removing map save *.sav file(s)..." + if [ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]; then + echo -en "removing map save *.sav* file(s)..." fn_sleep_time - fn_script_log_info "Removing map save(s): ${serveridentitydir}/*.sav" - find "${serveridentitydir:?}" -type f -name "*.sav" -delete | tee -a "${lgsmlog}" + fn_script_log_info "Removing map save(s): ${serveridentitydir}/*.sav*" + find "${serveridentitydir:?}" -type f -name "*.sav*" -delete | tee -a "${lgsmlog}" fn_wipe_exit_code fn_sleep_time else @@ -228,7 +202,7 @@ fn_print_dots "" check.sh # Check if there is something to wipe. -if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "barren*.sav")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then +if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then fn_wipe_warning check_status.sh if [ "${status}" != "0" ]; then From cacfd38f7820021bfe00ef0d7094895799a629ef Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 12 Jan 2021 22:51:30 +0100 Subject: [PATCH 023/117] feat(dev): add libc++.so.1 for dependency detection (#3181) Co-authored-by: Daniel Gibbs --- lgsm/functions/command_dev_detect_deps.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lgsm/functions/command_dev_detect_deps.sh b/lgsm/functions/command_dev_detect_deps.sh index 2a620fd66..c8271172e 100755 --- a/lgsm/functions/command_dev_detect_deps.sh +++ b/lgsm/functions/command_dev_detect_deps.sh @@ -155,6 +155,11 @@ while read -r lib; do echo -e "libfreetype6" >> "${tmpdir}/.depdetect_ubuntu_list" echo -e "libfreetype6" >> "${tmpdir}/.depdetect_debian_list" libdetected=1 + elif [ "${lib}" == "libc++.so.1" ]; then + echo -e "libcxx" >> "${tmpdir}/.depdetect_centos_list" + echo -e "libc++1" >> "${tmpdir}/.depdetect_ubuntu_list" + echo -e "libc++1" >> "${tmpdir}/.depdetect_debian_list" + libdetected=1 fi if [ "${libdetected}" != "1" ]; then From 5ab5d9c5cf6cddea73cd8eb90202cbf328bcbe62 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 12 Jan 2021 22:52:03 +0100 Subject: [PATCH 024/117] fix(pvr): add new dependency (#3180) Co-authored-by: Daniel Gibbs --- lgsm/functions/check_deps.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 70e5f5a09..2ad38e481 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -464,6 +464,9 @@ fn_deps_build_debian(){ # Post Scriptum elif [ "${shortname}" == "pstbs" ]; then array_deps_required+=( libgconf-2-4 ) + # Pavlov VR + elif [ "${shortname}" == "pvr" ]; then + array_deps_required+=( libc++1 ) fi fn_deps_email fn_check_loop @@ -579,6 +582,9 @@ fn_deps_build_redhat(){ # Post Scriptum elif [ "${shortname}" == "pstbs" ]; then array_deps_required+=( GConf2 ) + # Pavlov VR + elif [ "${shortname}" == "pvr" ]; then + array_deps_required+=( libcxx ) fi fn_deps_email fn_check_loop From 6f2c7ede4d24fe1aa5c3f7ff7a08b9cc7ef5552e Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 12 Jan 2021 23:09:53 +0100 Subject: [PATCH 025/117] fix(inss): fix config to only use parameter (#3179) --- .../config-lgsm/inssserver/_default.cfg | 8 +++--- lgsm/functions/info_config.sh | 26 ------------------- 2 files changed, 4 insertions(+), 30 deletions(-) diff --git a/lgsm/config-default/config-lgsm/inssserver/_default.cfg b/lgsm/config-default/config-lgsm/inssserver/_default.cfg index 07bc89a60..2e8b29e16 100644 --- a/lgsm/config-default/config-lgsm/inssserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/inssserver/_default.cfg @@ -19,12 +19,13 @@ defaultscenario="Scenario_Crossing_Push_Security" maxplayers="28" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +## Parameter Docs: https://sandstorm-support.newworldinteractive.com/hc/en-us/articles/360049211072-Server-Admin-Guide fn_parms(){ # Allows serverpassword to work with parameters - if [ "${serverpassword}" != "NOT SET" ]; then - parms="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers}?Port=${port}?QueryPort=${queryport}?password="${serverpassword}" -hostname="${servername}" -log" + if [ "${serverpassword}" != "" ]; then + parms="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers}?password='${serverpassword}' -Port=${port} -QueryPort=${queryport} -hostname="${servername}" -log" else - parms="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers}?Port=${port}?QueryPort=${queryport} -hostname="${servername}" -log" + parms="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -log" fi } @@ -170,7 +171,6 @@ executable="./InsurgencyServer-Linux-Shipping" servercfgdir="${systemdir}/Saved/Config/LinuxServer" servercfg="Game.ini" servercfgdefault="Game.ini" -servercfgfullpath="${servercfgdir}/${servercfg}" ## Backup Directory backupdir="${lgsmdir}/backup" diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index ecf840961..ef782fa70 100755 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -405,30 +405,6 @@ fn_info_config_factorio(){ fi } -fn_info_config_inss(){ - if [ ! -f "${servercfgfullpath}" ]; then - rconenabled="${unavailable}" - rconpassword="${unavailable}" - rconport="${zero}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - queryenabled="${unavailable}" - rconport="${zero}" - gamemode="${unavailable}" - gameworld="${unavailable}" - else - rconenabled=$(grep "bEnabled" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bEnabled//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconpassword=$(grep "Password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconport=$(grep "ListenPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - - # Not Set - rconenabled=${rconenabled:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - rconport=${rconport:-"0"} - fi -} - fn_info_config_minecraft(){ if [ ! -f "${servercfgfullpath}" ]; then servername="${unavailable}" @@ -1623,8 +1599,6 @@ elif [ "${shortname}" == "eco" ]; then fn_info_config_eco elif [ "${shortname}" == "fctr" ]; then fn_info_config_factorio -elif [ "${shortname}" == "inss" ]; then - fn_info_config_inss elif [ "${shortname}" == "jc2" ]; then fn_info_config_justcause2 elif [ "${shortname}" == "jc3" ]; then From 4eb2c52fd48d7c7125a4050813e914560dcf5b3d Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 14 Jan 2021 22:44:44 +0100 Subject: [PATCH 026/117] fix(steamcmd): fix update on start not starting the server (#3169) Co-authored-by: Daniel Gibbs --- lgsm/functions/core_steamcmd.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh index bfdbce38c..389880241 100755 --- a/lgsm/functions/core_steamcmd.sh +++ b/lgsm/functions/core_steamcmd.sh @@ -238,8 +238,8 @@ fn_update_steamcmd_compare(){ exitbypass=1 command_start.sh fn_firstcommand_reset + unset exitbypass fi - unset exitbypass date +%s > "${lockdir}/lastupdate.lock" alert="update" elif [ "${commandname}" == "CHECK-UPDATE" ]; then From 3f018455fa45e16816269feee7f0100472cef170 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 14 Jan 2021 23:22:06 +0100 Subject: [PATCH 027/117] feat(steamcmd): set platformtype for steamcmd in the default config for the game server (#3167) --- lgsm/config-default/config-lgsm/acserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ahl2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/ahlserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/arkserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/arma3server/_default.cfg | 1 + lgsm/config-default/config-lgsm/avserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bb2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/bbserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bdserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bmdmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/boserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bt1944server/_default.cfg | 1 + lgsm/config-default/config-lgsm/btserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ccserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/cmwserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/colserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/csczserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/csgoserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/csserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/cssserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dabserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dmcserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dodserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dodsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/doiserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dstserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dysserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ecoserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/emserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/fofserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/gmodserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/hldmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/hldmsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/hwserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/insserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/inssserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/iosserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/jc2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/jc3server/_default.cfg | 1 + lgsm/config-default/config-lgsm/jk2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/kf2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/kfserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/l4d2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/l4dserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/mhserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/momserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ndserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/nmrihserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ns2cserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ns2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/nsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/onsetserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/opforserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pcserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pstbsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pvrserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pzserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/qlserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ricochetserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/roserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/rustserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/rwserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sbotsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sbserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/scpslserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sdtdserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sfcserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/solserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/squadserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/stserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/svenserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/terrariaserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/tf2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/tfcserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/tsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/tuserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/twserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/untserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/vsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/wfserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/wurmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/zmrserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/zpsserver/_default.cfg | 1 + lgsm/functions/core_dl.sh | 2 +- 88 files changed, 88 insertions(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/acserver/_default.cfg b/lgsm/config-default/config-lgsm/acserver/_default.cfg index f64c34ac3..c0d82a5ab 100644 --- a/lgsm/config-default/config-lgsm/acserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/acserver/_default.cfg @@ -112,6 +112,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="302550" +steamcmdforcewindows="yes" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg index 505076703..8e1c62fbf 100644 --- a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg @@ -141,6 +141,7 @@ querytype="protocol-valve" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="985050" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/ahlserver/_default.cfg b/lgsm/config-default/config-lgsm/ahlserver/_default.cfg index 9e52094a0..da64ff4a0 100644 --- a/lgsm/config-default/config-lgsm/ahlserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ahlserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="cstrike" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/arkserver/_default.cfg b/lgsm/config-default/config-lgsm/arkserver/_default.cfg index f289cd1fb..f5ac04477 100644 --- a/lgsm/config-default/config-lgsm/arkserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/arkserver/_default.cfg @@ -116,6 +116,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="376030" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/arma3server/_default.cfg b/lgsm/config-default/config-lgsm/arma3server/_default.cfg index acdbedb59..bacd851f3 100644 --- a/lgsm/config-default/config-lgsm/arma3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/arma3server/_default.cfg @@ -129,6 +129,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="233780" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/avserver/_default.cfg b/lgsm/config-default/config-lgsm/avserver/_default.cfg index a8e6fb049..36703b30c 100644 --- a/lgsm/config-default/config-lgsm/avserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/avserver/_default.cfg @@ -112,6 +112,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="565060" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/bb2server/_default.cfg b/lgsm/config-default/config-lgsm/bb2server/_default.cfg index 2f35f1c9d..2ba9bd914 100644 --- a/lgsm/config-default/config-lgsm/bb2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/bb2server/_default.cfg @@ -119,6 +119,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="475370" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/bbserver/_default.cfg b/lgsm/config-default/config-lgsm/bbserver/_default.cfg index 573c9964b..ace128b19 100644 --- a/lgsm/config-default/config-lgsm/bbserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bbserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="cstrike" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/bdserver/_default.cfg b/lgsm/config-default/config-lgsm/bdserver/_default.cfg index 746169c5b..6dea0c4c0 100644 --- a/lgsm/config-default/config-lgsm/bdserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bdserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="817300" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg b/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg index b9ebbce02..c844d94a1 100644 --- a/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg @@ -119,6 +119,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="346680" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/boserver/_default.cfg b/lgsm/config-default/config-lgsm/boserver/_default.cfg index 907f72a4c..0095661c9 100644 --- a/lgsm/config-default/config-lgsm/boserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/boserver/_default.cfg @@ -112,6 +112,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="416880" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/bsserver/_default.cfg b/lgsm/config-default/config-lgsm/bsserver/_default.cfg index f23980d49..a43270618 100644 --- a/lgsm/config-default/config-lgsm/bsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bsserver/_default.cfg @@ -123,6 +123,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="228780" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/bt1944server/_default.cfg b/lgsm/config-default/config-lgsm/bt1944server/_default.cfg index 84b059dbe..7ec7dc257 100644 --- a/lgsm/config-default/config-lgsm/bt1944server/_default.cfg +++ b/lgsm/config-default/config-lgsm/bt1944server/_default.cfg @@ -111,6 +111,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="805140" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/btserver/_default.cfg b/lgsm/config-default/config-lgsm/btserver/_default.cfg index c22a70533..b1014cbdc 100644 --- a/lgsm/config-default/config-lgsm/btserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/btserver/_default.cfg @@ -106,6 +106,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="1026340" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/ccserver/_default.cfg b/lgsm/config-default/config-lgsm/ccserver/_default.cfg index 202535ce1..866d9b1eb 100644 --- a/lgsm/config-default/config-lgsm/ccserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ccserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="383410" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg index 3f3e29c8b..c8e09c8da 100644 --- a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg @@ -115,6 +115,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="220070" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/colserver/_default.cfg b/lgsm/config-default/config-lgsm/colserver/_default.cfg index 5be0776cf..63a60b6c8 100644 --- a/lgsm/config-default/config-lgsm/colserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/colserver/_default.cfg @@ -107,6 +107,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="748090" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/csczserver/_default.cfg b/lgsm/config-default/config-lgsm/csczserver/_default.cfg index a0fb7fea8..fbe8fb9f1 100644 --- a/lgsm/config-default/config-lgsm/csczserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csczserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="czero" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg index 2ed74049e..31afc3b43 100644 --- a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg @@ -139,6 +139,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="740" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/csserver/_default.cfg b/lgsm/config-default/config-lgsm/csserver/_default.cfg index a5661c890..e4eb45909 100644 --- a/lgsm/config-default/config-lgsm/csserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="cstrike" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/cssserver/_default.cfg b/lgsm/config-default/config-lgsm/cssserver/_default.cfg index 56f430bb6..5dd2d09a3 100644 --- a/lgsm/config-default/config-lgsm/cssserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/cssserver/_default.cfg @@ -119,6 +119,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="232330" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/dabserver/_default.cfg b/lgsm/config-default/config-lgsm/dabserver/_default.cfg index ea6bcf390..2ba9c66c3 100644 --- a/lgsm/config-default/config-lgsm/dabserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dabserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="317800" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/dmcserver/_default.cfg b/lgsm/config-default/config-lgsm/dmcserver/_default.cfg index 8babab1dd..e13d16998 100644 --- a/lgsm/config-default/config-lgsm/dmcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dmcserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="dmc" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/dodserver/_default.cfg b/lgsm/config-default/config-lgsm/dodserver/_default.cfg index 83b051930..768cd5916 100644 --- a/lgsm/config-default/config-lgsm/dodserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dodserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="dod" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/dodsserver/_default.cfg b/lgsm/config-default/config-lgsm/dodsserver/_default.cfg index 3af945122..edfe49b05 100644 --- a/lgsm/config-default/config-lgsm/dodsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dodsserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="232290" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/doiserver/_default.cfg b/lgsm/config-default/config-lgsm/doiserver/_default.cfg index deb15b2dc..040b51a77 100644 --- a/lgsm/config-default/config-lgsm/doiserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/doiserver/_default.cfg @@ -115,6 +115,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="462310" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/dstserver/_default.cfg b/lgsm/config-default/config-lgsm/dstserver/_default.cfg index 6e746fb83..4c2373c83 100644 --- a/lgsm/config-default/config-lgsm/dstserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dstserver/_default.cfg @@ -117,6 +117,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="343050" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/dysserver/_default.cfg b/lgsm/config-default/config-lgsm/dysserver/_default.cfg index c45a12bee..9492acfda 100644 --- a/lgsm/config-default/config-lgsm/dysserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dysserver/_default.cfg @@ -119,6 +119,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="17585" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg index c515595e2..b9cc4eb9b 100644 --- a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg @@ -106,6 +106,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="739590" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/emserver/_default.cfg b/lgsm/config-default/config-lgsm/emserver/_default.cfg index be13dac6b..293df0749 100644 --- a/lgsm/config-default/config-lgsm/emserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/emserver/_default.cfg @@ -119,6 +119,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="460040" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/fofserver/_default.cfg b/lgsm/config-default/config-lgsm/fofserver/_default.cfg index 1452805b8..5cfab32fd 100644 --- a/lgsm/config-default/config-lgsm/fofserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/fofserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="295230" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg index 4bac3995c..bdd9296e0 100644 --- a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg @@ -130,6 +130,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="4020" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg b/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg index f356b1238..aa4515806 100644 --- a/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="232370" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/hldmserver/_default.cfg b/lgsm/config-default/config-lgsm/hldmserver/_default.cfg index 41b702789..79daf5607 100644 --- a/lgsm/config-default/config-lgsm/hldmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hldmserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg b/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg index 7c04267ad..e174f48ef 100644 --- a/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="255470" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/hwserver/_default.cfg b/lgsm/config-default/config-lgsm/hwserver/_default.cfg index eda9972d3..37b1e171c 100644 --- a/lgsm/config-default/config-lgsm/hwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hwserver/_default.cfg @@ -125,6 +125,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="405100" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/insserver/_default.cfg b/lgsm/config-default/config-lgsm/insserver/_default.cfg index 50e3e8721..3302251e2 100644 --- a/lgsm/config-default/config-lgsm/insserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/insserver/_default.cfg @@ -120,6 +120,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="237410" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/inssserver/_default.cfg b/lgsm/config-default/config-lgsm/inssserver/_default.cfg index 2e8b29e16..c7d600980 100644 --- a/lgsm/config-default/config-lgsm/inssserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/inssserver/_default.cfg @@ -122,6 +122,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="581330" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/iosserver/_default.cfg b/lgsm/config-default/config-lgsm/iosserver/_default.cfg index c322ed383..9420ed294 100644 --- a/lgsm/config-default/config-lgsm/iosserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/iosserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="673990" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/jc2server/_default.cfg b/lgsm/config-default/config-lgsm/jc2server/_default.cfg index c57af02ea..a7b45a24a 100644 --- a/lgsm/config-default/config-lgsm/jc2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jc2server/_default.cfg @@ -106,6 +106,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="261140" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/jc3server/_default.cfg b/lgsm/config-default/config-lgsm/jc3server/_default.cfg index e208a42f4..368b815aa 100644 --- a/lgsm/config-default/config-lgsm/jc3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jc3server/_default.cfg @@ -106,6 +106,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="619960" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/jk2server/_default.cfg b/lgsm/config-default/config-lgsm/jk2server/_default.cfg index cb42989a7..0aa6710a6 100644 --- a/lgsm/config-default/config-lgsm/jk2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jk2server/_default.cfg @@ -135,6 +135,7 @@ consoleinteract="yes" ## SteamCMD Settings # Server appid appid="6030" +steamcmdforcewindows="yes" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" # Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server diff --git a/lgsm/config-default/config-lgsm/kf2server/_default.cfg b/lgsm/config-default/config-lgsm/kf2server/_default.cfg index 175e082ab..8fb108406 100644 --- a/lgsm/config-default/config-lgsm/kf2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/kf2server/_default.cfg @@ -112,6 +112,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="232130" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/kfserver/_default.cfg b/lgsm/config-default/config-lgsm/kfserver/_default.cfg index 0169f48d0..972351bd2 100644 --- a/lgsm/config-default/config-lgsm/kfserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/kfserver/_default.cfg @@ -118,6 +118,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="215360" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/l4d2server/_default.cfg b/lgsm/config-default/config-lgsm/l4d2server/_default.cfg index 718432852..66112ed91 100644 --- a/lgsm/config-default/config-lgsm/l4d2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/l4d2server/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="222860" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/l4dserver/_default.cfg b/lgsm/config-default/config-lgsm/l4dserver/_default.cfg index beacac9bb..22833b5b8 100644 --- a/lgsm/config-default/config-lgsm/l4dserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/l4dserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="222840" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/mhserver/_default.cfg b/lgsm/config-default/config-lgsm/mhserver/_default.cfg index c71081b89..1af879ac1 100644 --- a/lgsm/config-default/config-lgsm/mhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mhserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="629800" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/momserver/_default.cfg b/lgsm/config-default/config-lgsm/momserver/_default.cfg index 7909b67e2..1a4569052 100644 --- a/lgsm/config-default/config-lgsm/momserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/momserver/_default.cfg @@ -112,6 +112,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="897590" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/ndserver/_default.cfg b/lgsm/config-default/config-lgsm/ndserver/_default.cfg index 7ef270919..446b9a151 100644 --- a/lgsm/config-default/config-lgsm/ndserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ndserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="111710" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg b/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg index 41c057356..799a919c7 100644 --- a/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg @@ -119,6 +119,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="317670" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg b/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg index 1ccb9706e..c65047fff 100644 --- a/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg @@ -121,6 +121,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="313900" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/ns2server/_default.cfg b/lgsm/config-default/config-lgsm/ns2server/_default.cfg index c132d539d..58e1da031 100644 --- a/lgsm/config-default/config-lgsm/ns2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ns2server/_default.cfg @@ -125,6 +125,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="4940" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/nsserver/_default.cfg b/lgsm/config-default/config-lgsm/nsserver/_default.cfg index 2a2425f73..d1e223469 100644 --- a/lgsm/config-default/config-lgsm/nsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/nsserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="cstrike" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/onsetserver/_default.cfg b/lgsm/config-default/config-lgsm/onsetserver/_default.cfg index d564020ed..4301a2e72 100644 --- a/lgsm/config-default/config-lgsm/onsetserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/onsetserver/_default.cfg @@ -106,6 +106,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="1204170" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/opforserver/_default.cfg b/lgsm/config-default/config-lgsm/opforserver/_default.cfg index f0e54f511..1af66199d 100644 --- a/lgsm/config-default/config-lgsm/opforserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/opforserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="gearbox" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/pcserver/_default.cfg b/lgsm/config-default/config-lgsm/pcserver/_default.cfg index c02992f92..3f1f88292 100644 --- a/lgsm/config-default/config-lgsm/pcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pcserver/_default.cfg @@ -106,6 +106,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="332670" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg b/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg index 62a8af0ba..c3ec4ec3f 100644 --- a/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg @@ -116,6 +116,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="746200" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg b/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg index 96442da3d..b8b96d735 100644 --- a/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="17575" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/pvrserver/_default.cfg b/lgsm/config-default/config-lgsm/pvrserver/_default.cfg index 0177b2a95..e2373f9fd 100644 --- a/lgsm/config-default/config-lgsm/pvrserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pvrserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="622970" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/pzserver/_default.cfg b/lgsm/config-default/config-lgsm/pzserver/_default.cfg index ab22be682..9995baeea 100644 --- a/lgsm/config-default/config-lgsm/pzserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pzserver/_default.cfg @@ -110,6 +110,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="380870" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/qlserver/_default.cfg b/lgsm/config-default/config-lgsm/qlserver/_default.cfg index 25d1f43bc..ad44f6c29 100644 --- a/lgsm/config-default/config-lgsm/qlserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/qlserver/_default.cfg @@ -106,6 +106,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="349090" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg b/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg index c443cbb47..187ca2ede 100644 --- a/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="ricochet" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/roserver/_default.cfg b/lgsm/config-default/config-lgsm/roserver/_default.cfg index f5659b550..96f26998a 100644 --- a/lgsm/config-default/config-lgsm/roserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/roserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="223250" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/rustserver/_default.cfg b/lgsm/config-default/config-lgsm/rustserver/_default.cfg index 7ec79ab97..db48ddd55 100644 --- a/lgsm/config-default/config-lgsm/rustserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rustserver/_default.cfg @@ -121,6 +121,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="258550" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/rwserver/_default.cfg b/lgsm/config-default/config-lgsm/rwserver/_default.cfg index cddf99818..0a83c50d9 100644 --- a/lgsm/config-default/config-lgsm/rwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rwserver/_default.cfg @@ -109,6 +109,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="339010" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg b/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg index c0867e1c8..628b921e2 100644 --- a/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="974130" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/sbserver/_default.cfg b/lgsm/config-default/config-lgsm/sbserver/_default.cfg index b3bffbcad..d6cbf5f8d 100644 --- a/lgsm/config-default/config-lgsm/sbserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sbserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="211820" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg index 4a706ae40..e1753d071 100644 --- a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg @@ -127,6 +127,7 @@ consoleinteract="yes" ## SteamCMD Settings # Server appid appid="996560" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" # Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server diff --git a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg index 4ac830f21..905918e9a 100644 --- a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg @@ -127,6 +127,7 @@ consoleinteract="yes" ## SteamCMD Settings # Server appid appid="786920" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" # Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server diff --git a/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg b/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg index 3dad1f106..d2b754e6b 100644 --- a/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg @@ -109,6 +109,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="294420" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/sfcserver/_default.cfg b/lgsm/config-default/config-lgsm/sfcserver/_default.cfg index 746b9e84c..5edbb791a 100644 --- a/lgsm/config-default/config-lgsm/sfcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sfcserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="244310" # Source 2013 SDK +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/solserver/_default.cfg b/lgsm/config-default/config-lgsm/solserver/_default.cfg index b0fda3b81..e23a90421 100644 --- a/lgsm/config-default/config-lgsm/solserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/solserver/_default.cfg @@ -107,6 +107,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="638500" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/squadserver/_default.cfg b/lgsm/config-default/config-lgsm/squadserver/_default.cfg index c329b06b4..62be29db5 100644 --- a/lgsm/config-default/config-lgsm/squadserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/squadserver/_default.cfg @@ -111,6 +111,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="403240" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/stserver/_default.cfg b/lgsm/config-default/config-lgsm/stserver/_default.cfg index d7caf33e6..b0aa30fd6 100644 --- a/lgsm/config-default/config-lgsm/stserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/stserver/_default.cfg @@ -116,6 +116,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="600760" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/svenserver/_default.cfg b/lgsm/config-default/config-lgsm/svenserver/_default.cfg index 908dd046d..7647d7566 100644 --- a/lgsm/config-default/config-lgsm/svenserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/svenserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="276060" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg b/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg index 79e683f65..6b9f66d3e 100644 --- a/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="105600" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/tf2server/_default.cfg b/lgsm/config-default/config-lgsm/tf2server/_default.cfg index 3aa580d39..cc3ed416f 100644 --- a/lgsm/config-default/config-lgsm/tf2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/tf2server/_default.cfg @@ -119,6 +119,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="232250" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/tfcserver/_default.cfg b/lgsm/config-default/config-lgsm/tfcserver/_default.cfg index c29b43642..ec8dcdcb3 100644 --- a/lgsm/config-default/config-lgsm/tfcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/tfcserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="tfc" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/tsserver/_default.cfg b/lgsm/config-default/config-lgsm/tsserver/_default.cfg index fb4fb9f01..a0c62e430 100644 --- a/lgsm/config-default/config-lgsm/tsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/tsserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="cstrike" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/tuserver/_default.cfg b/lgsm/config-default/config-lgsm/tuserver/_default.cfg index eed1cbdcb..799be9a80 100644 --- a/lgsm/config-default/config-lgsm/tuserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/tuserver/_default.cfg @@ -116,6 +116,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="439660" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/twserver/_default.cfg b/lgsm/config-default/config-lgsm/twserver/_default.cfg index 9140ed859..40f81d959 100644 --- a/lgsm/config-default/config-lgsm/twserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/twserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="380840" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/untserver/_default.cfg b/lgsm/config-default/config-lgsm/untserver/_default.cfg index 1a8230e0a..36445e51d 100644 --- a/lgsm/config-default/config-lgsm/untserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/untserver/_default.cfg @@ -112,6 +112,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="1110390" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/vsserver/_default.cfg b/lgsm/config-default/config-lgsm/vsserver/_default.cfg index f6bb4394c..83ae3b82c 100644 --- a/lgsm/config-default/config-lgsm/vsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vsserver/_default.cfg @@ -113,6 +113,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="90" +steamcmdforcewindows="no" appidmod="cstrike" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/wfserver/_default.cfg b/lgsm/config-default/config-lgsm/wfserver/_default.cfg index 73f0bb8df..957124aae 100644 --- a/lgsm/config-default/config-lgsm/wfserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wfserver/_default.cfg @@ -131,6 +131,7 @@ querytype="protocol-quake3" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="1136510" +steamcmdforcewindows="no" appidmod="warfork" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" diff --git a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg index 0ad05ae4b..0a2131adf 100644 --- a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg @@ -105,6 +105,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="402370" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/zmrserver/_default.cfg b/lgsm/config-default/config-lgsm/zmrserver/_default.cfg index ce5cb3329..3eccd1daa 100644 --- a/lgsm/config-default/config-lgsm/zmrserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/zmrserver/_default.cfg @@ -114,6 +114,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="244310" # Source 2013 SDK +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/config-default/config-lgsm/zpsserver/_default.cfg b/lgsm/config-default/config-lgsm/zpsserver/_default.cfg index cf26a9e84..c30c533b5 100644 --- a/lgsm/config-default/config-lgsm/zpsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/zpsserver/_default.cfg @@ -119,6 +119,7 @@ sleeptime="0.5" ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="17505" +steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 7bb346a85..eaaddf5c7 100755 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -67,7 +67,7 @@ fn_dl_steamcmd(){ ${unbuffer} ${steamcmdcommand} +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" fi # Force Windows Platform type. - elif [ "${shortname}" == "ac" ]||[ "${shortname}" == "jk2" ]; then + elif [ "${steamcmdforcewindows}" == "yes" ]; then if [ -n "${branch}" ]&&[ -n "${betapassword}" ]; then ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" elif [ -n "${branch}" ]; then From 67ace6c80ab96e64cb400056a507cdd43e911093 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 16 Jan 2021 00:53:49 +0100 Subject: [PATCH 028/117] fix(steamcmd): add dependency SDL 32bit for debian and ubuntu (#3186) --- 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 2ad38e481..4b83bf2f1 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -364,7 +364,7 @@ fn_deps_build_debian(){ if [ "${distroversion}" == "14.04" ]||[ "${distroid}" == "debian" ]&& ! grep -qE "^deb .*non-free" /etc/apt/sources.list; then : else - array_deps_required+=( steamcmd ) + array_deps_required+=( steamcmd libsdl2-2.0-0:i386 ) fi fi From 785b117e0947432fd93383374ac8e99e5502a020 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 16 Jan 2021 16:46:29 +0100 Subject: [PATCH 029/117] fix(stop): change csgoserver stop mode (#3171) Co-authored-by: Daniel Gibbs --- lgsm/config-default/config-lgsm/csgoserver/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg index 31afc3b43..c5a44b820 100644 --- a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg @@ -158,7 +158,7 @@ steammaster="true" # 9: GoldSrc # 10: Avorion # 11: end -stopmode="3" +stopmode="9" ## Query mode # 1: session only From 27e56ee7ba0ce2fdb43f08c939f11737ca7bb639 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 17 Jan 2021 23:04:10 +0100 Subject: [PATCH 030/117] fix(ut2k4server): better parsing of the serverconfig (#3192) --- lgsm/functions/info_config.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index ef782fa70..4d4b9bd2b 100755 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -1064,15 +1064,15 @@ fn_info_config_unreal2(){ webadminuser="${unavailable}" webadminpass="${unavailable}" else - servername=$(grep "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//'| sed 's/\r$//') - serverpassword=$(grep "GamePassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/GamePassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//'| sed 's/\r$//') - adminpassword=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//'| sed 's/\r$//') - port=$(grep "Port" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^Port" | grep -v "#" | tr -cd '[:digit:]') + servername=$(sed -nr 's/^ServerName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') + serverpassword=$(sed -nr 's/^GamePassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') + adminpassword=$(sed -nr 's/^AdminPassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') + port=$(sed -nr 's/^Port=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') queryport=$((port + 1)) - queryportgs=$(grep "OldQueryPortNumber" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - webadminenabled=$(grep "bEnabled" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bEnabled//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//'| sed 's/\r$//') - webadminport=$(grep "ListenPort" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - webadminuser=$(grep "AdminName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//'| sed 's/\r$//') + queryportgs=$(sed -nr 's/^OldQueryPortNumber=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') + webadminenabled=$(sed -nr 's/^bEnabled=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') + webadminport=$(sed -nr 's/^ListenPort=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') + webadminuser=$(sed -nr 's/^AdminName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') webadminpass="${adminpassword}" # Not Set From 4e4062114bb97f9421ecefe6c3cf87c622e12d31 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 17 Jan 2021 22:08:24 +0000 Subject: [PATCH 031/117] fix(wipe): resolve random seed not working (#3190) * random seed * correct name * add seed to info_parms * fix(wipe): resolve random seed not working --- lgsm/functions/command_wipe.sh | 6 ++++++ lgsm/functions/info_parms.sh | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index f48f9e5f8..9fc099fbe 100755 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -198,6 +198,11 @@ fn_wipe_warning(){ fn_print_warn "wipe is about to start" } +# Will change the seed everytime the wipe command is run if the seed in config is not set. +fn_wipe_random_seed(){ + shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt" +} + fn_print_dots "" check.sh @@ -219,6 +224,7 @@ if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ fi fn_print_complete_nl "Wiping ${selfname}" fn_script_log_pass "Wiping ${selfname}" + fn_wipe_random_seed else fn_print_ok_nl "Wipe not required" fn_script_log_pass "Wipe not required" diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index 782f774d4..4a81d73ce 100755 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -140,6 +140,13 @@ fn_info_parms_rust(){ maxplayers=${maxplayers:-"0"} saveinterval=${saveinterval:-"0"} tickrate=${tickrate:-"0"} + # Part of random seed feature. + if [ -z "${seed}" ]; then + if [ ! -f "${datadir}/${selfname}-seed.txt" ]; then + shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt" + fi + seed=$(cat "${datadir}/${selfname}-seed.txt") + fi } fn_info_parms_samp(){ From cd6257445f6d948bfd749a9debb9b76d1b908ecb Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 17 Jan 2021 23:33:01 +0100 Subject: [PATCH 032/117] feat(core): add new functions for github releases (#3164) * feat(core): add new functions for github releases * minor stuff Co-authored-by: Daniel Gibbs --- lgsm/functions/core_dl.sh | 40 +++++++++++ lgsm/functions/core_functions.sh | 5 ++ lgsm/functions/core_github.sh | 113 +++++++++++++++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 lgsm/functions/core_github.sh diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index eaaddf5c7..01d001b2a 100755 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -447,6 +447,46 @@ fn_update_function(){ } +# Function to download latest github release. +# $1 GitHub user / organisation. +# $2 Repo name. +# $3 Destination for download. +# $4 Search string in releases (needed if there are more files that can be downloaded from the release pages). +fn_dl_latest_release_github(){ + local githubreleaseuser="${1}" + local githubreleaserepo="${2}" + local githubreleasedownloadpath="${3}" + local githubreleasesearch="${4}" + local githublatestreleaseurl="https://api.github.com/repos/${githubreleaseuser}/${githubreleaserepo}/releases/latest" + + # Get last github release. + # If no search for the release filename is set, just get the first file from the latest release. + if [ -z "${githubreleasesearch}" ]; then + githubreleaseassets=$(curl -s "${githublatestreleaseurl}" | jq '[ .assets[] ]') + else + githubreleaseassets=$(curl -s "${githublatestreleaseurl}" | jq "[ .assets[]|select(.browser_download_url | contains(\"${githubreleasesearch}\")) ]") + fi + + # Check how many releases we got from the api and exit if we have more then one. + if [ "$(echo -e "${githubreleaseassets}" | jq '. | length')" -gt 1 ]; then + fn_print_fatal_nl "Found more than one release to download - Please report this to the LinuxGSM issue tracker" + fn_script_log_fatal "Found more than one release to download - Please report this to the LinuxGSM issue tracker" + else + # Set variables for download via fn_fetch_file. + githubreleasefilename=$(echo -e "${githubreleaseassets}" | jq -r '.[]name') + githubreleasedownloadlink=$(echo -e "${githubreleaseassets}" | jq -r '.[]browser_download_url') + + # Error if no version is there. + if [ -z "${githubreleasefilename}" ]; then + fn_print_fail_nl "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" + fn_script_log_fatal "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" + else + # Fetch file from the remote location from the existing function to the ${tmpdir} for now. + fn_fetch_file "${githubreleasedownloadlink}" "" "${githubreleasefilename}" "" "${githubreleasedownloadpath}" "${githubreleasefilename}" + fi + fi +} + # Check that curl is installed if [ ! "$(command -v curl 2>/dev/null)" ]; then echo -e "[ FAIL ] Curl is not installed" diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 3a8c77def..e0aa42ea5 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -58,6 +58,11 @@ functionfile="${FUNCNAME[0]}" fn_fetch_function } +core_github.sh(){ +functionfile="${FUNCNAME[0]}" +fn_fetch_function +} + # Commands command_backup.sh(){ diff --git a/lgsm/functions/core_github.sh b/lgsm/functions/core_github.sh new file mode 100644 index 000000000..a83512b6a --- /dev/null +++ b/lgsm/functions/core_github.sh @@ -0,0 +1,113 @@ +#!/bin/bash +# LinuxGSM core_github.sh function +# Author: Christian Birk +# Website: https://linuxgsm.com +# Description: core function file for updates via github + +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" + +github_api="https://api.github.com" + +fn_githublocalversionfile(){ + local githubreleaseuser="${1}" + local githubreleaserepo="${2}" + + githublocalversionfile="${datadir}/github-${githubreleaseuser}-${githubreleaserepo}-version" +} + +# $1 githubuser/group +# $2 github repo name +fn_github_get_latest_release_version(){ + local githubreleaseuser="${1}" + local githubreleaserepo="${2}" + local githublatestreleaseurl="${github_api}/repos/${githubreleaseuser}/${githubreleaserepo}/releases/latest" + + githubreleaseversion=$(curl -s --connect-timeout 10 "${githublatestreleaseurl}" | jq '.tag_name' ) + + # error if no version is there + if [ -z "${githubreleaseversion}" ]; then + fn_print_fail_nl "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" + fn_script_log_fatal "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" + fi +} + +# $1 githubuser/group +# $2 github repo name +fn_github_set_latest_release_version(){ + local githubreleaseuser="${1}" + local githubreleaserepo="${2}" + + fn_githublocalversionfile "${githubreleaseuser}" "${githubreleaserepo}" + + local githublatestreleaseurl="${github_api}/repos/${githubreleaseuser}/${githubreleaserepo}/releases/latest" + githubreleaseversion=$(curl -s "${githublatestreleaseurl}" | jq -r '.tag_name' ) + + # error if no version is there + if [ -z "${githubreleaseversion}" ]; then + fn_print_fail_nl "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" + fn_script_log_fatal "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" + else + echo "${githubreleaseversion}" > "${githublocalversionfile}" + fi +} + +# $1 githubuser/group +# $2 github repo name +fn_github_get_installed_version(){ + local githubreleaseuser="${1}" + local githubreleaserepo="${2}" + + fn_githublocalversionfile "${githubreleaseuser}" "${githubreleaserepo}" + + githublocalversion=$(cat "${githublocalversionfile}") +} + +# $1 githubuser/group +# $2 github repo name +# if a update needs to be downloaded - updateneeded is set to 1 +fn_github_compare_version(){ + local githubreleaseuser="${1}" + local githubreleaserepo="${2}" + exitcode=0 + updateneeded=0 + + fn_githublocalversionfile "${githubreleaseuser}" "${githubreleaserepo}" + local githublatestreleaseurl="${github_api}/repos/${githubreleaseuser}/${githubreleaserepo}/releases/latest" + + githublocalversion=$(cat "${githublocalversionfile}") + githubreleaseversion=$(curl -s "${githublatestreleaseurl}" | jq '.tag_name' ) + + # error if no version is there + if [ -z "${githubreleaseversion}" ]; then + fn_print_fail_nl "Can not get version from Github Api for ${githubreleaseuser}/${githubreleaserepo}" + fn_script_log_fatal "Can not get version from Github Api for ${githubreleaseuser}/${githubreleaserepo}" + else + if [ "${githublocalversion}" == "${githubreleaseversion}" ]; then + echo -en "\n" + echo -e "No update from github.com/${githubreleaseuser}/${githubreleaserepo}/ available:" + echo -e "* Local build: ${red}${githublocalversion}${default}" + echo -e "* Remote build: ${green}${githubreleaseversion}${default}" + echo -en "\n" + else + # check if version that is installed is higher than the remote version to not override it + last_version=$(echo -e "${githublocalversion}\n${githubreleaseversion}" | sort -V | head -n1 ) + if [ "${githubreleaseversion}" == "${last_version}" ]; then + echo -en "\n" + echo -e "Update from github.com/${githubreleaseuser}/${githubreleaserepo}/ available:" + echo -e "* Local build: ${red}${githublocalversion}${default}" + echo -e "* Remote build: ${green}${githubreleaseversion}${default}" + echo -en "\n" + updateneeded=1 + else + # local version is higher than the remote version output this to the user + # strange case but could be possible, as a release could be removed from github + echo -en "\n" + echo -e "Local version is newer than the remote version" + echo -e "* Local version: ${green}${githublocalversion}${default}" + echo -e "* Remote version: ${green}${githubreleaseversion}${default}" + echo -en "\n" + exitcode=1 + fi + fi + fi +} From db2a769f2d525cb649566254a7df636236b463bb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 24 Jan 2021 14:34:02 +0000 Subject: [PATCH 033/117] feat: improved start parameters system (#3151) Significant refactor of start parameters that removed the need for a function in LinuxGSM configs. Co-authored-by: H3o66 --- .../config-lgsm/acserver/_default.cfg | 4 +- .../config-lgsm/ahl2server/_default.cfg | 4 +- .../config-lgsm/ahlserver/_default.cfg | 4 +- .../config-lgsm/arkserver/_default.cfg | 4 +- .../config-lgsm/arma3server/_default.cfg | 4 +- .../config-lgsm/avserver/_default.cfg | 11 +-- .../config-lgsm/bb2server/_default.cfg | 4 +- .../config-lgsm/bbserver/_default.cfg | 4 +- .../config-lgsm/bdserver/_default.cfg | 4 +- .../config-lgsm/bf1942server/_default.cfg | 4 +- .../config-lgsm/bfvserver/_default.cfg | 4 +- .../config-lgsm/bmdmserver/_default.cfg | 4 +- .../config-lgsm/boserver/_default.cfg | 4 +- .../config-lgsm/bsserver/_default.cfg | 4 +- .../config-lgsm/bt1944server/_default.cfg | 4 +- .../config-lgsm/btserver/_default.cfg | 4 +- .../config-lgsm/ccserver/_default.cfg | 4 +- .../config-lgsm/cmwserver/_default.cfg | 6 +- .../config-lgsm/cod2server/_default.cfg | 4 +- .../config-lgsm/cod4server/_default.cfg | 4 +- .../config-lgsm/codserver/_default.cfg | 4 +- .../config-lgsm/coduoserver/_default.cfg | 4 +- .../config-lgsm/codwawserver/_default.cfg | 4 +- .../config-lgsm/colserver/_default.cfg | 4 +- .../config-lgsm/csczserver/_default.cfg | 4 +- .../config-lgsm/csgoserver/_default.cfg | 4 +- .../config-lgsm/csserver/_default.cfg | 4 +- .../config-lgsm/cssserver/_default.cfg | 4 +- .../config-lgsm/dabserver/_default.cfg | 4 +- .../config-lgsm/dmcserver/_default.cfg | 4 +- .../config-lgsm/dodserver/_default.cfg | 4 +- .../config-lgsm/dodsserver/_default.cfg | 4 +- .../config-lgsm/doiserver/_default.cfg | 4 +- .../config-lgsm/dstserver/_default.cfg | 4 +- .../config-lgsm/dysserver/_default.cfg | 4 +- .../config-lgsm/ecoserver/_default.cfg | 4 +- .../config-lgsm/emserver/_default.cfg | 4 +- .../config-lgsm/etlserver/_default.cfg | 4 +- .../config-lgsm/fctrserver/_default.cfg | 4 +- .../config-lgsm/fofserver/_default.cfg | 4 +- .../config-lgsm/gmodserver/_default.cfg | 8 +- .../config-lgsm/hl2dmserver/_default.cfg | 4 +- .../config-lgsm/hldmserver/_default.cfg | 4 +- .../config-lgsm/hldmsserver/_default.cfg | 4 +- .../config-lgsm/hwserver/_default.cfg | 4 +- .../config-lgsm/insserver/_default.cfg | 4 +- .../config-lgsm/inssserver/_default.cfg | 13 +-- .../config-lgsm/iosserver/_default.cfg | 4 +- .../config-lgsm/jc2server/_default.cfg | 4 +- .../config-lgsm/jc3server/_default.cfg | 4 +- .../config-lgsm/jk2server/_default.cfg | 4 +- .../config-lgsm/kf2server/_default.cfg | 4 +- .../config-lgsm/kfserver/_default.cfg | 6 +- .../config-lgsm/l4d2server/_default.cfg | 4 +- .../config-lgsm/l4dserver/_default.cfg | 4 +- .../config-lgsm/mcbserver/_default.cfg | 4 +- .../config-lgsm/mcserver/_default.cfg | 9 +- .../config-lgsm/mhserver/_default.cfg | 4 +- .../config-lgsm/mohaaserver/_default.cfg | 4 +- .../config-lgsm/momserver/_default.cfg | 4 +- .../config-lgsm/mtaserver/_default.cfg | 4 +- .../config-lgsm/mumbleserver/_default.cfg | 4 +- .../config-lgsm/ndserver/_default.cfg | 4 +- .../config-lgsm/nmrihserver/_default.cfg | 4 +- .../config-lgsm/ns2cserver/_default.cfg | 4 +- .../config-lgsm/ns2server/_default.cfg | 4 +- .../config-lgsm/nsserver/_default.cfg | 4 +- .../config-lgsm/onsetserver/_default.cfg | 4 +- .../config-lgsm/opforserver/_default.cfg | 4 +- .../config-lgsm/pcserver/_default.cfg | 4 +- .../config-lgsm/pstbsserver/_default.cfg | 4 +- .../config-lgsm/pvkiiserver/_default.cfg | 4 +- .../config-lgsm/pvrserver/_default.cfg | 4 +- .../config-lgsm/pzserver/_default.cfg | 4 +- .../config-lgsm/q2server/_default.cfg | 4 +- .../config-lgsm/q3server/_default.cfg | 4 +- .../config-lgsm/qlserver/_default.cfg | 4 +- .../config-lgsm/qwserver/_default.cfg | 4 +- .../config-lgsm/ricochetserver/_default.cfg | 4 +- .../config-lgsm/roserver/_default.cfg | 4 +- .../config-lgsm/rtcwserver/_default.cfg | 4 +- .../config-lgsm/rustserver/_default.cfg | 4 +- .../config-lgsm/rwserver/_default.cfg | 7 +- .../config-lgsm/sampserver/_default.cfg | 4 +- .../config-lgsm/sbotsserver/_default.cfg | 4 +- .../config-lgsm/sbserver/_default.cfg | 4 +- .../config-lgsm/sdtdserver/_default.cfg | 4 +- .../config-lgsm/sfcserver/_default.cfg | 4 +- .../config-lgsm/sof2server/_default.cfg | 4 +- .../config-lgsm/solserver/_default.cfg | 4 +- .../config-lgsm/squadserver/_default.cfg | 4 +- .../config-lgsm/stserver/_default.cfg | 4 +- .../config-lgsm/svenserver/_default.cfg | 4 +- .../config-lgsm/terrariaserver/_default.cfg | 4 +- .../config-lgsm/tf2server/_default.cfg | 4 +- .../config-lgsm/tfcserver/_default.cfg | 4 +- .../config-lgsm/ts3server/_default.cfg | 4 +- .../config-lgsm/tsserver/_default.cfg | 4 +- .../config-lgsm/tuserver/_default.cfg | 4 +- .../config-lgsm/twserver/_default.cfg | 4 +- .../config-lgsm/untserver/_default.cfg | 4 +- .../config-lgsm/ut2k4server/_default.cfg | 4 +- .../config-lgsm/ut3server/_default.cfg | 4 +- .../config-lgsm/ut99server/_default.cfg | 4 +- .../config-lgsm/utserver/_default.cfg | 4 +- .../config-lgsm/vsserver/_default.cfg | 4 +- .../config-lgsm/wetserver/_default.cfg | 4 +- .../config-lgsm/wfserver/_default.cfg | 4 +- .../config-lgsm/wurmserver/_default.cfg | 11 +-- .../config-lgsm/zmrserver/_default.cfg | 4 +- .../config-lgsm/zpsserver/_default.cfg | 4 +- lgsm/functions/check_deps.sh | 6 -- lgsm/functions/command_debug.sh | 9 +- lgsm/functions/command_start.sh | 4 +- lgsm/functions/core_functions.sh | 4 + lgsm/functions/core_steamcmd.sh | 0 lgsm/functions/info_messages.sh | 6 +- linuxgsm.sh | 91 +++++++++++-------- 118 files changed, 195 insertions(+), 408 deletions(-) mode change 100755 => 100644 lgsm/functions/core_steamcmd.sh mode change 100755 => 100644 linuxgsm.sh diff --git a/lgsm/config-default/config-lgsm/acserver/_default.cfg b/lgsm/config-default/config-lgsm/acserver/_default.cfg index c0d82a5ab..56034419a 100644 --- a/lgsm/config-default/config-lgsm/acserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/acserver/_default.cfg @@ -15,9 +15,7 @@ steampass='password' ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-c ${servercfgfullpath}" -} +startparameters="-c ${servercfgfullpath}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg index 8e1c62fbf..a3810daed 100644 --- a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg @@ -21,9 +21,7 @@ defaultmap="act_airport" maxplayers="20" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game ahl2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game ahl2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ahlserver/_default.cfg b/lgsm/config-default/config-lgsm/ahlserver/_default.cfg index da64ff4a0..dfaea449c 100644 --- a/lgsm/config-default/config-lgsm/ahlserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ahlserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="ahl_hydro" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game action -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} " -} +startparameters="-game action -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} " #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/arkserver/_default.cfg b/lgsm/config-default/config-lgsm/arkserver/_default.cfg index f5ac04477..e9498565d 100644 --- a/lgsm/config-default/config-lgsm/arkserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/arkserver/_default.cfg @@ -19,9 +19,7 @@ altsavedirectoryname="${defaultmap}" maxplayers="70" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="${defaultmap}?AltSaveDirectoryName=${altsavedirectoryname}?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port} -automanagedmods -crossplay -PublicIPForEpic=${ip}" -} +startparameters="${defaultmap}?AltSaveDirectoryName=${altsavedirectoryname}?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port} -automanagedmods -crossplay -PublicIPForEpic=${ip}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/arma3server/_default.cfg b/lgsm/config-default/config-lgsm/arma3server/_default.cfg index bacd851f3..0ed5d0c25 100644 --- a/lgsm/config-default/config-lgsm/arma3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/arma3server/_default.cfg @@ -32,9 +32,7 @@ servermods="" bepath="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory" -} +startparameters="-ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/avserver/_default.cfg b/lgsm/config-default/config-lgsm/avserver/_default.cfg index 36703b30c..2cfa69d1c 100644 --- a/lgsm/config-default/config-lgsm/avserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/avserver/_default.cfg @@ -12,14 +12,13 @@ port="27000" # https://steamidfinder.com adminsteamid="" - -## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -if [ ! -z "${adminsteamid}" ]; then +if [ -n "${adminsteamid}" ]; then admincmd="--admin ${adminsteamid}" fi -parms="--galaxy-name ${selfname} --ip ${ip} --datapath ${avdatapath} ${admincmd}" -} + +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters + +startparameters="--galaxy-name ${selfname} --ip ${ip} --datapath ${avdatapath} ${admincmd}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/bb2server/_default.cfg b/lgsm/config-default/config-lgsm/bb2server/_default.cfg index 2ba9bd914..fd77d0af8 100644 --- a/lgsm/config-default/config-lgsm/bb2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/bb2server/_default.cfg @@ -22,9 +22,7 @@ maxplayers="20" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game brainbread2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game brainbread2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/bbserver/_default.cfg b/lgsm/config-default/config-lgsm/bbserver/_default.cfg index ace128b19..7179efc2e 100644 --- a/lgsm/config-default/config-lgsm/bbserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bbserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="bb_chp4_slaywatch" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game brainbread -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game brainbread -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/bdserver/_default.cfg b/lgsm/config-default/config-lgsm/bdserver/_default.cfg index 6dea0c4c0..4abccbb9e 100644 --- a/lgsm/config-default/config-lgsm/bdserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bdserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="pve_tomb" maxplayers="3" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game bdef -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game bdef -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/bf1942server/_default.cfg b/lgsm/config-default/config-lgsm/bf1942server/_default.cfg index 6a498aaaf..841fd6ff8 100644 --- a/lgsm/config-default/config-lgsm/bf1942server/_default.cfg +++ b/lgsm/config-default/config-lgsm/bf1942server/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+hostServer 1 +dedicated 1" -} +startparameters="+hostServer 1 +dedicated 1" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/bfvserver/_default.cfg b/lgsm/config-default/config-lgsm/bfvserver/_default.cfg index a62b9cdcd..b900bc4f8 100644 --- a/lgsm/config-default/config-lgsm/bfvserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bfvserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+statusMonitor 1" -} +startparameters="+statusMonitor 1" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg b/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg index c844d94a1..0530b3377 100644 --- a/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg @@ -22,9 +22,7 @@ maxplayers="16" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game bms -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game bms -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/boserver/_default.cfg b/lgsm/config-default/config-lgsm/boserver/_default.cfg index 0095661c9..d37d3894e 100644 --- a/lgsm/config-default/config-lgsm/boserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/boserver/_default.cfg @@ -15,9 +15,7 @@ gslt="" ip="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-batchmode -nographics -dedicated -configfile=${servercfgfullpath}" -} +startparameters="-batchmode -nographics -dedicated -configfile=${servercfgfullpath}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/bsserver/_default.cfg b/lgsm/config-default/config-lgsm/bsserver/_default.cfg index a43270618..00a0b2e18 100644 --- a/lgsm/config-default/config-lgsm/bsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bsserver/_default.cfg @@ -26,9 +26,7 @@ maxplayers="16" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game "${serverfiles}/berimbau" -autoupdate -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game "${serverfiles}/berimbau" -autoupdate -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/bt1944server/_default.cfg b/lgsm/config-default/config-lgsm/bt1944server/_default.cfg index 7ec7dc257..7f066accf 100644 --- a/lgsm/config-default/config-lgsm/bt1944server/_default.cfg +++ b/lgsm/config-default/config-lgsm/bt1944server/_default.cfg @@ -14,9 +14,7 @@ port="7777" queryport="7780" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="/Game/Maps/Final_Maps/Derailed?Game=/Script/ShooterGame.WartideGameMode?listen -log -broadcastip=\"${extip}\" -PORT=${port} -QueryPort=${queryport} -defgameini=\"${servercfgfullpath}\"" -} +startparameters="/Game/Maps/Final_Maps/Derailed?Game=/Script/ShooterGame.WartideGameMode?listen -log -broadcastip=\"${extip}\" -PORT=${port} -QueryPort=${queryport} -defgameini=\"${servercfgfullpath}\"" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/btserver/_default.cfg b/lgsm/config-default/config-lgsm/btserver/_default.cfg index b1014cbdc..92c65e1ce 100644 --- a/lgsm/config-default/config-lgsm/btserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/btserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="" -} +startparameters="" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ccserver/_default.cfg b/lgsm/config-default/config-lgsm/ccserver/_default.cfg index 866d9b1eb..ef9433aff 100644 --- a/lgsm/config-default/config-lgsm/ccserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ccserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="cbe_bunker" maxplayers="6" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game cure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game cure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg index c8e09c8da..cb259c2a9 100644 --- a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg @@ -16,11 +16,7 @@ defaultmap="AOCTD-Frigid_p" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ - -parms="${defaultmap}?steamsockets -multihome=${ip} -Port=${port} -QueryPort=${queryport} -seekfreeloadingserver -configsubdir=${gamelogdir} -log=${gamelog}" - -} +startparameters="${defaultmap}?steamsockets -multihome=${ip} -Port=${port} -QueryPort=${queryport} -seekfreeloadingserver -configsubdir=${gamelogdir} -log=${gamelog}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/cod2server/_default.cfg b/lgsm/config-default/config-lgsm/cod2server/_default.cfg index 9dfb852e5..53a4521dc 100644 --- a/lgsm/config-default/config-lgsm/cod2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/cod2server/_default.cfg @@ -15,9 +15,7 @@ defaultmap="mp_leningrad" maxplayers="20" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/cod4server/_default.cfg b/lgsm/config-default/config-lgsm/cod4server/_default.cfg index b5ee4bc63..8cde67086 100644 --- a/lgsm/config-default/config-lgsm/cod4server/_default.cfg +++ b/lgsm/config-default/config-lgsm/cod4server/_default.cfg @@ -15,9 +15,7 @@ defaultmap="mp_crossfire" maxplayers="32" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set fs_homepath ${serverfiles} +set sv_authorizemode "-1" +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set fs_homepath ${serverfiles} +set sv_authorizemode "-1" +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/codserver/_default.cfg b/lgsm/config-default/config-lgsm/codserver/_default.cfg index 377c2e6e4..487edbeaf 100644 --- a/lgsm/config-default/config-lgsm/codserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/codserver/_default.cfg @@ -15,9 +15,7 @@ defaultmap="mp_neuville" maxplayers="20" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/coduoserver/_default.cfg b/lgsm/config-default/config-lgsm/coduoserver/_default.cfg index 0f179903a..d6a9d2a5d 100644 --- a/lgsm/config-default/config-lgsm/coduoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/coduoserver/_default.cfg @@ -15,9 +15,7 @@ defaultmap="mp_cassino" maxplayers="20" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/codwawserver/_default.cfg b/lgsm/config-default/config-lgsm/codwawserver/_default.cfg index 1430387bc..2efd85826 100644 --- a/lgsm/config-default/config-lgsm/codwawserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/codwawserver/_default.cfg @@ -15,9 +15,7 @@ defaultmap="mp_castle" maxplayers="20" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/colserver/_default.cfg b/lgsm/config-default/config-lgsm/colserver/_default.cfg index 63a60b6c8..c0cdf7892 100644 --- a/lgsm/config-default/config-lgsm/colserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/colserver/_default.cfg @@ -10,9 +10,7 @@ ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters # Edit with care | https://colonysurvival.gamepedia.com/Dedicated_Server#Installation_.28Linux.29 -fn_parms(){ -parms="-batchmode -nographics +server.config ${servercfgfullpath}" -} +startparameters="-batchmode -nographics +server.config ${servercfgfullpath}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/csczserver/_default.cfg b/lgsm/config-default/config-lgsm/csczserver/_default.cfg index fbe8fb9f1..559fc1fb5 100644 --- a/lgsm/config-default/config-lgsm/csczserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csczserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="de_dust2" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game czero -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game czero -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg index c5a44b820..41eb3e251 100644 --- a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg @@ -42,9 +42,7 @@ wscollectionid="" wsstartmap="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -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_type ${gametype} +game_mode ${gamemode} +host_workshop_collection ${wscollectionid} +workshop_start_map ${wsstartmap} -authkey ${wsapikey} -nobreakpad" -} +startparameters="-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_type ${gametype} +game_mode ${gamemode} +host_workshop_collection ${wscollectionid} +workshop_start_map ${wsstartmap} -authkey ${wsapikey} -nobreakpad" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/csserver/_default.cfg b/lgsm/config-default/config-lgsm/csserver/_default.cfg index e4eb45909..4e79e4e52 100644 --- a/lgsm/config-default/config-lgsm/csserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="de_dust2" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game cstrike -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game cstrike -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/cssserver/_default.cfg b/lgsm/config-default/config-lgsm/cssserver/_default.cfg index 5dd2d09a3..dcdb9ab8a 100644 --- a/lgsm/config-default/config-lgsm/cssserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/cssserver/_default.cfg @@ -22,9 +22,7 @@ maxplayers="16" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game cstrike -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game cstrike -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/dabserver/_default.cfg b/lgsm/config-default/config-lgsm/dabserver/_default.cfg index 2ba9c66c3..ee2bacca2 100644 --- a/lgsm/config-default/config-lgsm/dabserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dabserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="da_rooftops" maxplayers="10" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/dmcserver/_default.cfg b/lgsm/config-default/config-lgsm/dmcserver/_default.cfg index e13d16998..71e670d77 100644 --- a/lgsm/config-default/config-lgsm/dmcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dmcserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="dcdm5" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game dmc -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game dmc -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/dodserver/_default.cfg b/lgsm/config-default/config-lgsm/dodserver/_default.cfg index 768cd5916..2685d0077 100644 --- a/lgsm/config-default/config-lgsm/dodserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dodserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="dod_Anzio" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game dod -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game dod -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/dodsserver/_default.cfg b/lgsm/config-default/config-lgsm/dodsserver/_default.cfg index edfe49b05..a92c46091 100644 --- a/lgsm/config-default/config-lgsm/dodsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dodsserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="dod_Anzio" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game dod -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game dod -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/doiserver/_default.cfg b/lgsm/config-default/config-lgsm/doiserver/_default.cfg index 040b51a77..4caa856f3 100644 --- a/lgsm/config-default/config-lgsm/doiserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/doiserver/_default.cfg @@ -18,9 +18,7 @@ maxplayers="32" tickrate="64" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game doi -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -workshop -norestart" -} +startparameters="-game doi -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -workshop -norestart" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/dstserver/_default.cfg b/lgsm/config-default/config-lgsm/dstserver/_default.cfg index 4c2373c83..2ab6fdde1 100644 --- a/lgsm/config-default/config-lgsm/dstserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dstserver/_default.cfg @@ -20,9 +20,7 @@ persistentstorageroot="${HOME}/.klei" confdir="DoNotStarveTogether" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-persistent_storage_root ${persistentstorageroot} -conf_dir ${confdir} -cluster ${cluster} -shard ${shard}" -} +startparameters="-persistent_storage_root ${persistentstorageroot} -conf_dir ${confdir} -cluster ${cluster} -shard ${shard}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/dysserver/_default.cfg b/lgsm/config-default/config-lgsm/dysserver/_default.cfg index 9492acfda..1cef60f0d 100644 --- a/lgsm/config-default/config-lgsm/dysserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dysserver/_default.cfg @@ -22,9 +22,7 @@ maxplayers="16" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game "${serverfiles}/dystopia" -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game "${serverfiles}/dystopia" -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg index b9cc4eb9b..f929b64d9 100644 --- a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-nogui" -} +startparameters="-nogui" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/emserver/_default.cfg b/lgsm/config-default/config-lgsm/emserver/_default.cfg index 293df0749..99e1cd44a 100644 --- a/lgsm/config-default/config-lgsm/emserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/emserver/_default.cfg @@ -22,9 +22,7 @@ maxplayers="62" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game empires -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game empires -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/etlserver/_default.cfg b/lgsm/config-default/config-lgsm/etlserver/_default.cfg index 0d2bf1a8c..b1db388c0 100644 --- a/lgsm/config-default/config-lgsm/etlserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/etlserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set net_strict 1 +set fs_homepath ${serverfiles} +exec ${servercfg}" -} +startparameters="+set net_strict 1 +set fs_homepath ${serverfiles} +exec ${servercfg}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/fctrserver/_default.cfg b/lgsm/config-default/config-lgsm/fctrserver/_default.cfg index 8a808f7f3..de0b5f3d7 100644 --- a/lgsm/config-default/config-lgsm/fctrserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/fctrserver/_default.cfg @@ -17,9 +17,7 @@ rconpassword="CHANGE_ME" branch="stable" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="--bind ${ip} --start-server ${serverfiles}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" -} +startparameters="--bind ${ip} --start-server ${serverfiles}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/fofserver/_default.cfg b/lgsm/config-default/config-lgsm/fofserver/_default.cfg index 5cfab32fd..b89c58e3c 100644 --- a/lgsm/config-default/config-lgsm/fofserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/fofserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="fof_depot" maxplayers="20" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game fof -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game fof -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg index bdd9296e0..3aa8d948b 100644 --- a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg @@ -23,19 +23,13 @@ gamemode="sandbox" wsapikey="" wscollectionid="" -## Custom Start Parameters -# Default -disableluarefresh, disables lua autorefresh reducing server lag. Auto refresh only useful for developers. -customparms="-disableluarefresh" - ## Game Server Login Token (GSLT): Optional # GSLT can be used for running a public server. # More info: https://docs.linuxgsm.com/steamcmd/gslt gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickrate} +host_workshop_collection ${wscollectionid} -authkey ${wsapikey} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} ${customparms}" -} +startparameters="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickrate} +host_workshop_collection ${wscollectionid} -authkey ${wsapikey} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -disableluarefresh" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg b/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg index aa4515806..a2c36586d 100644 --- a/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="dm_lockdown" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game hl2mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game hl2mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/hldmserver/_default.cfg b/lgsm/config-default/config-lgsm/hldmserver/_default.cfg index 79daf5607..4543b9e2b 100644 --- a/lgsm/config-default/config-lgsm/hldmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hldmserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="crossfire" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game valve -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game valve -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg b/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg index e174f48ef..f4d8ee17b 100644 --- a/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="crossfire" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game hl1mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game hl1mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/hwserver/_default.cfg b/lgsm/config-default/config-lgsm/hwserver/_default.cfg index 37b1e171c..97de06bcb 100644 --- a/lgsm/config-default/config-lgsm/hwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hwserver/_default.cfg @@ -28,9 +28,7 @@ loadsave="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters # Edit with care | http://hurtworld.wikia.com/wiki/Hosting_A_Server -fn_parms(){ -parms="-batchmode -nographics -exec \"host ${port} ${defaultmap} ${loadsave};queryport ${queryport};maxplayers ${maxplayers};servername ${servername};creativemode ${creativemode};${admins}\"" -} +startparameters="-batchmode -nographics -exec \"host ${port} ${defaultmap} ${loadsave};queryport ${queryport};maxplayers ${maxplayers};servername ${servername};creativemode ${creativemode};${admins}\"" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/insserver/_default.cfg b/lgsm/config-default/config-lgsm/insserver/_default.cfg index 3302251e2..6231501df 100644 --- a/lgsm/config-default/config-lgsm/insserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/insserver/_default.cfg @@ -23,9 +23,7 @@ tickrate="64" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game insurgency -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -workshop -norestart" -} +startparameters="-game insurgency -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -workshop -norestart" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/inssserver/_default.cfg b/lgsm/config-default/config-lgsm/inssserver/_default.cfg index c7d600980..b89d446ba 100644 --- a/lgsm/config-default/config-lgsm/inssserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/inssserver/_default.cfg @@ -13,21 +13,14 @@ ip="0.0.0.0" port="27102" queryport="27131" servername="LinuxGSM Server" -serverpassword="" defaultmap="Canyon" defaultscenario="Scenario_Crossing_Push_Security" maxplayers="28" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -## Parameter Docs: https://sandstorm-support.newworldinteractive.com/hc/en-us/articles/360049211072-Server-Admin-Guide -fn_parms(){ - # Allows serverpassword to work with parameters - if [ "${serverpassword}" != "" ]; then - parms="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers}?password='${serverpassword}' -Port=${port} -QueryPort=${queryport} -hostname="${servername}" -log" - else - parms="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -log" - fi -} +## Parameter Docs | https://sandstorm-support.newworldinteractive.com/hc/en-us/articles/360049211072-Server-Admin-Guide +# To allows serverpassword to work with parameters edit as follows +startparameters="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -log" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/iosserver/_default.cfg b/lgsm/config-default/config-lgsm/iosserver/_default.cfg index 9420ed294..f02f9d903 100644 --- a/lgsm/config-default/config-lgsm/iosserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/iosserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="8v8_vienna" maxplayers="32" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game iosoccer -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game iosoccer -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/jc2server/_default.cfg b/lgsm/config-default/config-lgsm/jc2server/_default.cfg index a7b45a24a..17b13172b 100644 --- a/lgsm/config-default/config-lgsm/jc2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jc2server/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="" -} +startparameters="" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/jc3server/_default.cfg b/lgsm/config-default/config-lgsm/jc3server/_default.cfg index 368b815aa..b671533de 100644 --- a/lgsm/config-default/config-lgsm/jc3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jc3server/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="" -} +startparameters="" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/jk2server/_default.cfg b/lgsm/config-default/config-lgsm/jk2server/_default.cfg index 0aa6710a6..fdb3317e8 100644 --- a/lgsm/config-default/config-lgsm/jk2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jk2server/_default.cfg @@ -18,9 +18,7 @@ port="27960" defaultmap="ffa_bespin" ## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/kf2server/_default.cfg b/lgsm/config-default/config-lgsm/kf2server/_default.cfg index 8fb108406..2c2770394 100644 --- a/lgsm/config-default/config-lgsm/kf2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/kf2server/_default.cfg @@ -15,9 +15,7 @@ defaultmap="KF-BioticsLab" gamemode="KFGameContent.KFGameInfo_VersusSurvival" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="\"${defaultmap}?Game=${gamemode}?ConfigSubDir=${selfname} -QueryPort=${queryport}\"" -} +startparameters="\"${defaultmap}?Game=${gamemode}?ConfigSubDir=${selfname} -QueryPort=${queryport}\"" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/kfserver/_default.cfg b/lgsm/config-default/config-lgsm/kfserver/_default.cfg index 972351bd2..f582cf1f0 100644 --- a/lgsm/config-default/config-lgsm/kfserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/kfserver/_default.cfg @@ -17,13 +17,11 @@ ip="0.0.0.0" defaultmap="KF-BioticsLab.rom" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" +startparameters="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" ## Server Parameters for Objective mode #defaultmap="KFO-Steamland" -#parms="server ${defaultmap}?Game=KFStoryGame.KFStoryGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" -} +#startparameters="server ${defaultmap}?Game=KFStoryGame.KFStoryGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/l4d2server/_default.cfg b/lgsm/config-default/config-lgsm/l4d2server/_default.cfg index 66112ed91..adfb6c42c 100644 --- a/lgsm/config-default/config-lgsm/l4d2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/l4d2server/_default.cfg @@ -16,9 +16,7 @@ defaultmap="c5m1_waterfront" maxplayers="8" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game left4dead2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game left4dead2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/l4dserver/_default.cfg b/lgsm/config-default/config-lgsm/l4dserver/_default.cfg index 22833b5b8..24521fb2a 100644 --- a/lgsm/config-default/config-lgsm/l4dserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/l4dserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="l4d_hospital01_apartment" maxplayers="8" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game left4dead -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" -} +startparameters="-game left4dead -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/mcbserver/_default.cfg b/lgsm/config-default/config-lgsm/mcbserver/_default.cfg index b894ade1d..4c8e3c2ae 100644 --- a/lgsm/config-default/config-lgsm/mcbserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mcbserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="" -} +startparameters="" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/mcserver/_default.cfg b/lgsm/config-default/config-lgsm/mcserver/_default.cfg index 81e833d6e..b2b053490 100644 --- a/lgsm/config-default/config-lgsm/mcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mcserver/_default.cfg @@ -12,10 +12,7 @@ javaram="1024" # -Xmx$1024M ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="nogui" -executable="java -Xmx${javaram}M -jar ${jarfile}" -} +startparameters="nogui" ## Release Settings | https://docs.linuxgsm.com/game-servers/minecraft#release-settings # Branch (release|snapshot) @@ -152,8 +149,8 @@ glibc="null" ## Game Server Directories systemdir="${serverfiles}" executabledir="${serverfiles}" -jarfile="${serverfiles}/minecraft_server.jar" -executable="${jarfile}" +preexecutable="java -Xmx${javaram}M -jar" +executable="./minecraft_server.jar" servercfgdir="${systemdir}" servercfg="server.properties" servercfgdefault="server.properties" diff --git a/lgsm/config-default/config-lgsm/mhserver/_default.cfg b/lgsm/config-default/config-lgsm/mhserver/_default.cfg index 1af879ac1..85a487a81 100644 --- a/lgsm/config-default/config-lgsm/mhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mhserver/_default.cfg @@ -17,9 +17,7 @@ queryport="27015" defaultmap="FFA_ThePit" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="Mordhau ${defaultmap} -log -MultiHome=${ip} -Port=${port} -BeaconPort=${beaconport} -QueryPort=${queryport}" -} +startparameters="Mordhau ${defaultmap} -log -MultiHome=${ip} -Port=${port} -BeaconPort=${beaconport} -QueryPort=${queryport}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg b/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg index 54bdb5a06..6742f18ed 100644 --- a/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg @@ -14,9 +14,7 @@ port="12203" defaultmap="dm/mohdm1" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set fs_outputpath ${gamelogdir} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set fs_outputpath ${gamelogdir} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/momserver/_default.cfg b/lgsm/config-default/config-lgsm/momserver/_default.cfg index 1a4569052..d5df8fd59 100644 --- a/lgsm/config-default/config-lgsm/momserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/momserver/_default.cfg @@ -15,9 +15,7 @@ beaconport="15000" maxplayers="32" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-port="${port}" -beaconport="${beaconport}" -MULTIHOME="${ip}" -maxplayers=${maxplayers}" -} +startparameters="-port="${port}" -beaconport="${beaconport}" -MULTIHOME="${ip}" -maxplayers=${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/mtaserver/_default.cfg b/lgsm/config-default/config-lgsm/mtaserver/_default.cfg index 3a97169f8..75aa660dd 100644 --- a/lgsm/config-default/config-lgsm/mtaserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mtaserver/_default.cfg @@ -13,9 +13,7 @@ ip="0.0.0.0" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters # Edit with care -fn_parms(){ -parms="" -} +startparameters="" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg b/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg index 3e798e2ee..bfe847135 100644 --- a/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-fg -ini ${servercfgfullpath}" -} +startparameters="-fg -ini ${servercfgfullpath}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ndserver/_default.cfg b/lgsm/config-default/config-lgsm/ndserver/_default.cfg index 446b9a151..45bb4da1a 100644 --- a/lgsm/config-default/config-lgsm/ndserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ndserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="hydro" maxplayers="32" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game nucleardawn -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game nucleardawn -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg b/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg index 799a919c7..67b7d6a15 100644 --- a/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg @@ -22,9 +22,7 @@ maxplayers="8" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game nmrih -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game nmrih -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg b/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg index c65047fff..42ba79464 100644 --- a/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg @@ -24,9 +24,7 @@ serverpassword="" # -password \"${serverpassword}\" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -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}\"" -} +startparameters="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\"" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ns2server/_default.cfg b/lgsm/config-default/config-lgsm/ns2server/_default.cfg index 58e1da031..d407c8a80 100644 --- a/lgsm/config-default/config-lgsm/ns2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ns2server/_default.cfg @@ -28,9 +28,7 @@ serverpassword="" # -password \"${serverpassword}\" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -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}\"" -} +startparameters="-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}\"" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/nsserver/_default.cfg b/lgsm/config-default/config-lgsm/nsserver/_default.cfg index d1e223469..282052139 100644 --- a/lgsm/config-default/config-lgsm/nsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/nsserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="ns_hera" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game ns -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game ns -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/onsetserver/_default.cfg b/lgsm/config-default/config-lgsm/onsetserver/_default.cfg index 4301a2e72..eaabae6cd 100644 --- a/lgsm/config-default/config-lgsm/onsetserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/onsetserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="--config ${servercfgfullpath}" -} +startparameters="--config ${servercfgfullpath}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/opforserver/_default.cfg b/lgsm/config-default/config-lgsm/opforserver/_default.cfg index 1af66199d..a72dab526 100644 --- a/lgsm/config-default/config-lgsm/opforserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/opforserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="op4_bootcamp" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game gearbox -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game gearbox -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/pcserver/_default.cfg b/lgsm/config-default/config-lgsm/pcserver/_default.cfg index 3f1f88292..9255cd0d7 100644 --- a/lgsm/config-default/config-lgsm/pcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pcserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="--config ${servercfg}" -} +startparameters="--config ${servercfg}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg b/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg index c3ec4ec3f..7c672d2b2 100644 --- a/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg @@ -19,9 +19,7 @@ maxplayers="40" reservedslots="0" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="MULTIHOME=${ip} RANDOM=${randommap} Port=${port} QueryPort=${queryport} RCONPORT=${rconport} FIXEDMAXPLAYERS=${maxplayers} NumReservedSlots=${reservedslots}" -} +startparameters="MULTIHOME=${ip} RANDOM=${randommap} Port=${port} QueryPort=${queryport} RCONPORT=${rconport} FIXEDMAXPLAYERS=${maxplayers} NumReservedSlots=${reservedslots}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg b/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg index b8b96d735..7cd158fb9 100644 --- a/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="bt_island" maxplayers="24" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game pvkii -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game pvkii -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/pvrserver/_default.cfg b/lgsm/config-default/config-lgsm/pvrserver/_default.cfg index e2373f9fd..2c19f47cf 100644 --- a/lgsm/config-default/config-lgsm/pvrserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pvrserver/_default.cfg @@ -16,9 +16,7 @@ port="7777" defaultmap="datacenter" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="${defaultmap} -log -MultiHome=${ip} -Port=${port}" -} +startparameters="${defaultmap} -log -MultiHome=${ip} -Port=${port}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/pzserver/_default.cfg b/lgsm/config-default/config-lgsm/pzserver/_default.cfg index 9995baeea..0dd761a86 100644 --- a/lgsm/config-default/config-lgsm/pzserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pzserver/_default.cfg @@ -13,9 +13,7 @@ ip="0.0.0.0" adminpassword="CHANGE_ME" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-ip ${ip} -adminpassword \"${adminpassword}\" -servername ${selfname}" -} +startparameters="-ip ${ip} -adminpassword \"${adminpassword}\" -servername ${selfname}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/q2server/_default.cfg b/lgsm/config-default/config-lgsm/q2server/_default.cfg index 63306512d..3e6615789 100644 --- a/lgsm/config-default/config-lgsm/q2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/q2server/_default.cfg @@ -14,9 +14,7 @@ port="27910" defaultmap="q2dm1" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set dedicated 1 +set ip ${ip} +set port ${port} +exec ${servercfg} +set deathmatch 1 +map ${defaultmap}" -} +startparameters="+set dedicated 1 +set ip ${ip} +set port ${port} +exec ${servercfg} +set deathmatch 1 +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/q3server/_default.cfg b/lgsm/config-default/config-lgsm/q3server/_default.cfg index 8ff151fc0..af107b398 100644 --- a/lgsm/config-default/config-lgsm/q3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/q3server/_default.cfg @@ -14,9 +14,7 @@ port="27960" defaultmap="q3dm17" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set com_hunkMegs 32 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set com_hunkMegs 32 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/qlserver/_default.cfg b/lgsm/config-default/config-lgsm/qlserver/_default.cfg index ad44f6c29..8d06fac7f 100644 --- a/lgsm/config-default/config-lgsm/qlserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/qlserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+exec ${servercfg}" -} +startparameters="+exec ${servercfg}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/qwserver/_default.cfg b/lgsm/config-default/config-lgsm/qwserver/_default.cfg index e4541086c..0aade5c5e 100644 --- a/lgsm/config-default/config-lgsm/qwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/qwserver/_default.cfg @@ -13,9 +13,7 @@ ip="0.0.0.0" port="27500" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-port ${port} -game ktx +exec ${servercfg}" -} +startparameters="-port ${port} -game ktx +exec ${servercfg}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg b/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg index 187ca2ede..f1c3db9af 100644 --- a/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="rc_arena" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game ricochet -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game ricochet -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/roserver/_default.cfg b/lgsm/config-default/config-lgsm/roserver/_default.cfg index 96f26998a..61824aa42 100644 --- a/lgsm/config-default/config-lgsm/roserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/roserver/_default.cfg @@ -17,9 +17,7 @@ ip="0.0.0.0" defaultmap="RO-Arad.rom" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" -} +startparameters="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir ini=${servercfg} log=${gamelog}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg b/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg index f2647542b..781ecf5a0 100644 --- a/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg @@ -14,9 +14,7 @@ port="27960" defaultmap="mp_beach" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/rustserver/_default.cfg b/lgsm/config-default/config-lgsm/rustserver/_default.cfg index db48ddd55..4d695f7d1 100644 --- a/lgsm/config-default/config-lgsm/rustserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rustserver/_default.cfg @@ -24,9 +24,7 @@ saveinterval="300" # Auto-save in seconds. tickrate="30" # default: 30, range: 15-100. ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile" -} +startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/rwserver/_default.cfg b/lgsm/config-default/config-lgsm/rwserver/_default.cfg index 0a83c50d9..98b79596f 100644 --- a/lgsm/config-default/config-lgsm/rwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rwserver/_default.cfg @@ -12,9 +12,7 @@ javaram="2048" # -Xmx$2048M ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="" -} +startparameters="" #### LinuxGSM Settings #### @@ -155,7 +153,8 @@ glibc="null" ## Game Server Directories systemdir="${serverfiles}" executabledir="${serverfiles}" -executable="java -Xmx${javaram}m -jar ${serverfiles}/server.jar" +preexecutable="java -Xmx${javaram}M -jar" +executable="./server.jar" servercfgdir="${systemdir}" servercfg="server.properties" servercfgdefault="server.properties" diff --git a/lgsm/config-default/config-lgsm/sampserver/_default.cfg b/lgsm/config-default/config-lgsm/sampserver/_default.cfg index 4f88ee743..aab4adf45 100644 --- a/lgsm/config-default/config-lgsm/sampserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sampserver/_default.cfg @@ -13,9 +13,7 @@ ip="0.0.0.0" port="7777" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="" -} +startparameters="" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg b/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg index 628b921e2..a944cd1a7 100644 --- a/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg @@ -17,9 +17,7 @@ serverpassword="NOT SET" # Can't be adjusted currently maxplayers="8" # Can't be adjusted currently ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="Port=${port}?QueryPort=${queryport} -startup_map ${defaultmap} -server_name \"${servername}\"" -} +startparameters="Port=${port}?QueryPort=${queryport} -startup_map ${defaultmap} -server_name \"${servername}\"" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/sbserver/_default.cfg b/lgsm/config-default/config-lgsm/sbserver/_default.cfg index d6cbf5f8d..8570eea1c 100644 --- a/lgsm/config-default/config-lgsm/sbserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sbserver/_default.cfg @@ -16,9 +16,7 @@ steampass='password' ip="0.0.0.0" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="" -} +startparameters="" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg b/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg index d2b754e6b..29e89e984 100644 --- a/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg @@ -12,9 +12,7 @@ ip="0.0.0.0" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-quit -batchmode -nographics -dedicated -configfile=${servercfgfullpath}" -} +startparameters="-quit -batchmode -nographics -dedicated -configfile=${servercfgfullpath}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/sfcserver/_default.cfg b/lgsm/config-default/config-lgsm/sfcserver/_default.cfg index 5edbb791a..e5ea17bac 100644 --- a/lgsm/config-default/config-lgsm/sfcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sfcserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="sf_astrodome" maxplayers="32" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game sfclassic -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game sfclassic -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/sof2server/_default.cfg b/lgsm/config-default/config-lgsm/sof2server/_default.cfg index 79b6ff01b..1c84e0d90 100644 --- a/lgsm/config-default/config-lgsm/sof2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/sof2server/_default.cfg @@ -14,9 +14,7 @@ port="20100" defaultmap="mp_shop" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set sv_punkbuster 0 +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" -} +startparameters="+set sv_punkbuster 0 +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/solserver/_default.cfg b/lgsm/config-default/config-lgsm/solserver/_default.cfg index e23a90421..b1da65c26 100644 --- a/lgsm/config-default/config-lgsm/solserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/solserver/_default.cfg @@ -13,9 +13,7 @@ ip="0.0.0.0" maplist="mapslist.txt" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-b ${ip} -m ${maplist} -c ${servercfg}" -} +startparameters="-b ${ip} -m ${maplist} -c ${servercfg}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/squadserver/_default.cfg b/lgsm/config-default/config-lgsm/squadserver/_default.cfg index 62be29db5..09ac039e4 100644 --- a/lgsm/config-default/config-lgsm/squadserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/squadserver/_default.cfg @@ -14,9 +14,7 @@ queryport="27165" randommap="ALWAYS" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="MULTIHOME=${ip} RANDOM=${randommap} Port=${port} QueryPort=${queryport}" -} +startparameters="MULTIHOME=${ip} RANDOM=${randommap} Port=${port} QueryPort=${queryport}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/stserver/_default.cfg b/lgsm/config-default/config-lgsm/stserver/_default.cfg index b0aa30fd6..60f42f63b 100644 --- a/lgsm/config-default/config-lgsm/stserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/stserver/_default.cfg @@ -19,9 +19,7 @@ worldname="moon_save" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters # Edit with care -fn_parms(){ -parms="-batchmode -nographics -autostart -gameport=${port} -updateport=${queryport} -worldtype=${worldtype} -loadworld=${worldname} -worldname=${worldname} -autosaveinterval=${autosaveinterval} -clearallinterval=${clearinterval}" -} +startparameters="-batchmode -nographics -autostart -gameport=${port} -updateport=${queryport} -worldtype=${worldtype} -loadworld=${worldname} -worldname=${worldname} -autosaveinterval=${autosaveinterval} -clearallinterval=${clearinterval}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/svenserver/_default.cfg b/lgsm/config-default/config-lgsm/svenserver/_default.cfg index 7647d7566..aaf2c2de2 100644 --- a/lgsm/config-default/config-lgsm/svenserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/svenserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="svencoop1" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game svencoop -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} +maxplayers ${maxplayers}" -} +startparameters="-game svencoop -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} +maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg b/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg index 6b9f66d3e..68bed7cdb 100644 --- a/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg @@ -16,9 +16,7 @@ steampass='password' ip="0.0.0.0" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-config ${servercfgfullpath}" -} +startparameters="-config ${servercfgfullpath}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/tf2server/_default.cfg b/lgsm/config-default/config-lgsm/tf2server/_default.cfg index cc3ed416f..25dd6b32a 100644 --- a/lgsm/config-default/config-lgsm/tf2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/tf2server/_default.cfg @@ -22,9 +22,7 @@ maxplayers="16" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game tf -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game tf -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/tfcserver/_default.cfg b/lgsm/config-default/config-lgsm/tfcserver/_default.cfg index ec8dcdcb3..b4d88ece1 100644 --- a/lgsm/config-default/config-lgsm/tfcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/tfcserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="dustbowl" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game tfc -strictportbind _ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game tfc -strictportbind _ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ts3server/_default.cfg b/lgsm/config-default/config-lgsm/ts3server/_default.cfg index 34cb54fb8..f3344e87c 100644 --- a/lgsm/config-default/config-lgsm/ts3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ts3server/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="inifile=${servercfgfullpath} pid_file=ts3server.pid" -} +startparameters="inifile=${servercfgfullpath} pid_file=ts3server.pid" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/tsserver/_default.cfg b/lgsm/config-default/config-lgsm/tsserver/_default.cfg index a0c62e430..f39d23eb5 100644 --- a/lgsm/config-default/config-lgsm/tsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/tsserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="ts_neobaroque" maxplayers="32" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game ts -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} " -} +startparameters="-game ts -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} " #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/tuserver/_default.cfg b/lgsm/config-default/config-lgsm/tuserver/_default.cfg index 799be9a80..42f750fd9 100644 --- a/lgsm/config-default/config-lgsm/tuserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/tuserver/_default.cfg @@ -19,9 +19,7 @@ queryport="27015" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-log -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -TowerServerINI=${selfname}.ini" -} +startparameters="-log -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -TowerServerINI=${selfname}.ini" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/twserver/_default.cfg b/lgsm/config-default/config-lgsm/twserver/_default.cfg index 40f81d959..19d4467eb 100644 --- a/lgsm/config-default/config-lgsm/twserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/twserver/_default.cfg @@ -16,9 +16,7 @@ steampass='password' ip="0.0.0.0" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-f ${servercfg}" -} +startparameters="-f ${servercfg}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/untserver/_default.cfg b/lgsm/config-default/config-lgsm/untserver/_default.cfg index 36445e51d..f923a1446 100644 --- a/lgsm/config-default/config-lgsm/untserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/untserver/_default.cfg @@ -15,9 +15,7 @@ maxplayers="20" defaultmap="pei" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-port:${port} -players:${maxplayers} --nographics -${defaultmap} -batchmode +secureserver/${selfname}" -} +startparameters="-port:${port} -players:${maxplayers} --nographics -${defaultmap} -batchmode +secureserver/${selfname}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg b/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg index 1bf464c29..450cc53e7 100644 --- a/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg @@ -13,9 +13,7 @@ defaultmap="DM-Rankin" ip="0.0.0.0" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="server ${defaultmap}?game=XGame.xDeathMatch -nohomedir ini=${servercfg} log=${gamelog}" -} +startparameters="server ${defaultmap}?game=XGame.xDeathMatch -nohomedir ini=${servercfg} log=${gamelog}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ut3server/_default.cfg b/lgsm/config-default/config-lgsm/ut3server/_default.cfg index e8f93eb02..90469ffa5 100644 --- a/lgsm/config-default/config-lgsm/ut3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ut3server/_default.cfg @@ -29,9 +29,7 @@ gspassword="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters # Edit with care | List of game types and mutators: https://docs.linuxgsm.com/game-servers/unreal-tournament-3 -fn_parms(){ -parms="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?Mutator=${mutators}?ConfigSubDir=${selfname} -login=${gsusername} -password=${gspassword} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}" -} +startparameters="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?Mutator=${mutators}?ConfigSubDir=${selfname} -login=${gsusername} -password=${gspassword} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/ut99server/_default.cfg b/lgsm/config-default/config-lgsm/ut99server/_default.cfg index 70699e1c4..16e0c205d 100644 --- a/lgsm/config-default/config-lgsm/ut99server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ut99server/_default.cfg @@ -13,9 +13,7 @@ defaultmap="DM-Deck16][" ip="0.0.0.0" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="server ${defaultmap}.unr ini=${servercfgfullpath}" -} +startparameters="server ${defaultmap}.unr ini=${servercfgfullpath}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/utserver/_default.cfg b/lgsm/config-default/config-lgsm/utserver/_default.cfg index a21c4a1bc..1e974c2f1 100644 --- a/lgsm/config-default/config-lgsm/utserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/utserver/_default.cfg @@ -17,9 +17,7 @@ gametype="DM" timelimit="10" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="UnrealTournament ${defaultmap}?Game=${gametype}?TimeLimit=${timelimit} -port=${port}" -} +startparameters="UnrealTournament ${defaultmap}?Game=${gametype}?TimeLimit=${timelimit} -port=${port}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/vsserver/_default.cfg b/lgsm/config-default/config-lgsm/vsserver/_default.cfg index 83ae3b82c..3ddab5cbb 100644 --- a/lgsm/config-default/config-lgsm/vsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vsserver/_default.cfg @@ -16,9 +16,7 @@ defaultmap="vs_frost" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game vs -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game vs -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/wetserver/_default.cfg b/lgsm/config-default/config-lgsm/wetserver/_default.cfg index b9ed41c69..b5f243046 100644 --- a/lgsm/config-default/config-lgsm/wetserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wetserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+set net_strict 1 +set fs_homepath ${serverfiles} +exec ${servercfg}" -} +startparameters="+set net_strict 1 +set fs_homepath ${serverfiles} +exec ${servercfg}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/wfserver/_default.cfg b/lgsm/config-default/config-lgsm/wfserver/_default.cfg index 957124aae..ef9964c28 100644 --- a/lgsm/config-default/config-lgsm/wfserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wfserver/_default.cfg @@ -14,9 +14,7 @@ port="44400" httpport="44444" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="+exec ${servercfg} +sv_http_ip ${ip} +set sv_http_port ${httpport} +sv_ip ${ip} +sv_port ${port}" -} +startparameters="+exec ${servercfg} +sv_http_ip ${ip} +set sv_http_port ${httpport} +sv_ip ${ip} +sv_port ${port}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg index 0a2131adf..5d5ba9790 100644 --- a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg @@ -9,11 +9,8 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -# Parameters are editing in the game server config file. -source "${servercfgfullpath}" -parms="ADMINPWD=\"$ADMINPWD\" EPICSETTINGS=\"$EPICSETTINGS\" EXTERNALPORT=\"$EXTERNALPORT\" HOMESERVER=\"$HOMESERVER\" HOMEKINGDOM=\"$HOMEKINGDOM\" LOGINSERVER=\"$LOGINSERVER\" MAXPLAYERS=\"$MAXPLAYERS\" QUERYPORT=\"$QUERYPORT\" SERVERNAME=\"$SERVERNAME\" SERVERPASSWORD=\"$SERVERPASSWORD\" START=\"$START\" IP=\"$IP\"" -} +# Parameters are edited in the game server config file. +startparameters="ADMINPWD=\"$ADMINPWD\" EPICSETTINGS=\"$EPICSETTINGS\" EXTERNALPORT=\"$EXTERNALPORT\" HOMESERVER=\"$HOMESERVER\" HOMEKINGDOM=\"$HOMEKINGDOM\" LOGINSERVER=\"$LOGINSERVER\" MAXPLAYERS=\"$MAXPLAYERS\" QUERYPORT=\"$QUERYPORT\" SERVERNAME=\"$SERVERNAME\" SERVERPASSWORD=\"$SERVERPASSWORD\" START=\"$START\" IP=\"$IP\"" #### LinuxGSM Settings #### @@ -151,11 +148,13 @@ glibc="2.14" ## Game Server Directories systemdir="${serverfiles}" executabledir="${systemdir}" -executable="xvfb-run ./WurmServerLauncher" +preexecutable="xvfb-run" +executable="./WurmServerLauncher" servercfgdir="${systemdir}" servercfg="${selfname}.cfg" servercfgdefault="server.cfg" servercfgfullpath="${servercfgdir}/${servercfg}" +source "${servercfgfullpath}" ## Backup Directory backupdir="${lgsmdir}/backup" diff --git a/lgsm/config-default/config-lgsm/zmrserver/_default.cfg b/lgsm/config-default/config-lgsm/zmrserver/_default.cfg index 3eccd1daa..f9b4bbb38 100644 --- a/lgsm/config-default/config-lgsm/zmrserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/zmrserver/_default.cfg @@ -17,9 +17,7 @@ defaultmap="zm_docksofthedead" maxplayers="16" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game zombie_master_reborn -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game zombie_master_reborn -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/zpsserver/_default.cfg b/lgsm/config-default/config-lgsm/zpsserver/_default.cfg index c30c533b5..178548eb0 100644 --- a/lgsm/config-default/config-lgsm/zpsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/zpsserver/_default.cfg @@ -22,9 +22,7 @@ maxplayers="20" gslt="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="-game zps -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" -} +startparameters="-game zps -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}" #### LinuxGSM Settings #### diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 4b83bf2f1..9caef4806 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -404,9 +404,6 @@ fn_deps_build_debian(){ # Barotrauma elif [ "${shortname}" == "bt" ]; then array_deps_required+=( libicu-dev ) - # Colony Survival - elif [ "${shortname}" == "col" ]; then - array_deps_required+=( coreutils ) # Ecoserver elif [ "${shortname}" == "eco" ]; then array_deps_required+=( libgdiplus ) @@ -525,9 +522,6 @@ fn_deps_build_redhat(){ # Call of Duty & Medal of Honor: Allied Assault elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]||[ "${shortname}" == "mohaa" ]; then array_deps_required+=( compat-libstdc++-33.i686 ) - # Colony Survival - elif [ "${shortname}" == "col" ]; then - array_deps_required+=( coreutils ) # Ecoserver elif [ "${shortname}" == "eco" ]; then array_deps_required+=( libgdiplus ) diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index fe2e8a38e..0630b887f 100755 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -70,8 +70,10 @@ fi echo -e "${lightblue}Start parameters:${default}" if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then echo -e "${executable} ${parms} -debug" +elif [ "${engine}" == "quake" ]; then + echo -e "${executable} ${parms} -condebug" else - echo -e "${executable} ${parms}" + echo -e "${preexecutable} ${executable} ${parms}" fi echo -e "" echo -e "Use for identifying server issues only!" @@ -110,9 +112,10 @@ elif [ "${shortname}" == "arma3" ]; then # stripped when loading straight from the console. ${executable} ${parms//\\;/;} elif [ "${engine}" == "quake" ]; then - ${executable} ${parms} -condebug + ${executable} ${parms} -condebug else - ${executable} ${parms} + # shellcheck disable=SC2086 + ${preexecutable} ${executable} ${parms} fi fn_lockfile_trap diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 897cc90aa..f349ec6a1 100755 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -74,7 +74,7 @@ fn_start_tmux(){ echo "${version}" >> "${lockdir}/${selfname}.lock" echo "${port}" >> "${lockdir}/${selfname}.lock" cd "${executabledir}" || exit - tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${executable} ${parms}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" + tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${parms}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" # Create logfile. touch "${consolelog}" @@ -132,7 +132,7 @@ fn_start_tmux(){ echo -e "" echo -e "Command" echo -e "=================================" - echo -e "tmux new-session -d -s \"${sessionname}\" \"${executable} ${parms}\"" | tee -a "${lgsmlog}" + echo -e "tmux new-session -d -s \"${sessionname}\" \"${preexecutable} ${executable} ${parms}\"" | tee -a "${lgsmlog}" echo -e "" echo -e "Error" echo -e "=================================" diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index e0aa42ea5..41bcc7e60 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -38,6 +38,10 @@ else fi } +fn_parms(){ +parms="${startparameters}" +} + core_exit.sh(){ functionfile="${FUNCNAME[0]}" fn_fetch_function diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh old mode 100755 new mode 100644 diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index 4a834d797..3f5601a68 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -556,7 +556,7 @@ fn_info_message_commandlineparms(){ unset serverpassword fi fn_parms - echo -e "${executable} ${parms}" + echo -e "${preexecutable} ${executable} ${parms}" } fn_info_message_ports(){ @@ -837,7 +837,9 @@ fn_info_message_inss(){ echo -e "${lightblue}DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL${default}" echo -e "> Game\tINBOUND\t${port}\tudp" echo -e "> Query\tINBOUND\t${queryport}\tudp" - echo -e "> RCON\tINBOUND\t${rconport}\ttcp" + if [ -n "${rconport}" ]; then + echo -e "> RCON\tINBOUND\t${rconport}\ttcp" + fi } | column -s $'\t' -t } diff --git a/linuxgsm.sh b/linuxgsm.sh old mode 100755 new mode 100644 index cb767a770..05287ccc0 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -401,50 +401,65 @@ else fi fi fi + fi + # Configs have to be loaded twice to allow start startparameters to pick up all vars + # shellcheck source=/dev/null + source "${configdirserver}/_default.cfg" + # Load the common.cfg config. If missing download it. + if [ ! -f "${configdirserver}/common.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" # shellcheck source=/dev/null - source "${configdirserver}/_default.cfg" - # Load the common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/common.cfg" - fi - # Load the secrets-common.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/secrets-common.cfg" - fi - # Load the instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - else - # shellcheck source=/dev/null - source "${configdirserver}/${selfname}.cfg" - fi - # Load the secrets-instance.cfg config. If missing download it. - if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" - # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" - else + source "${configdirserver}/common.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/common.cfg" + fi + # Load the secrets-common.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-common.cfg" + fi + # Load the instance.cfg config. If missing download it. + if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/${selfname}.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/${selfname}.cfg" + fi + # Load the secrets-instance.cfg config. If missing download it. + if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + else + # shellcheck source=/dev/null + source "${configdirserver}/secrets-${selfname}.cfg" + fi + # Use eval if startparameters are only in _default.cfg to ensure all vars in startparameters are set. + if ! grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/common.cfg" "${configdirserver}/${selfname}.cfg" "${configdirserver}/secrets-common.cfg" "${configdirserver}/secrets-${selfname}.cfg"; then + if [ "${shortname}" == "wurm" ]; then # shellcheck source=/dev/null - source "${configdirserver}/secrets-${selfname}.cfg" + source "${servercfgfullpath}" fi - # Load the linuxgsm.sh in to tmpdir. If missing download it. - if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" + if [ -n "${preexecutable}" ]; then + eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/_default.cfg")" fi + eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/_default.cfg")" + eval executable="$(sed -nr 's/^ *executable=(.*)$/\1/p' "${configdirserver}/_default.cfg")" + fi + + # Load the linuxgsm.sh in to tmpdir. If missing download it. + if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then + fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" fi + # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. fn_ansi_loader # Prevents running of core_exit.sh for Travis-CI. From 080137b05d39f3d2a85a5c7777b813ec48aa49ca Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 24 Jan 2021 15:35:11 +0100 Subject: [PATCH 034/117] fix(alert): cleanup and remove unused variables (#3195) --- lgsm/config-default/config-lgsm/scpslserver/_default.cfg | 2 -- lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg | 2 -- lgsm/functions/alert.sh | 6 ------ 3 files changed, 10 deletions(-) diff --git a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg index e1753d071..aa4ac41bc 100644 --- a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg @@ -28,8 +28,6 @@ displayip="" # More info | https://docs.linuxgsm.com/alerts#more-info postalert="off" -postdays="7" -posttarget="https://hastebin.com" # Discord Alerts | https://docs.linuxgsm.com/alerts/discord discordalert="off" diff --git a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg index 905918e9a..0180753a8 100644 --- a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg @@ -28,8 +28,6 @@ displayip="" # More info | https://docs.linuxgsm.com/alerts#more-info postalert="off" -postdays="7" -posttarget="https://hastebin.com" # Discord Alerts | https://docs.linuxgsm.com/alerts/discord discordalert="off" diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 484c0c1e2..20f6e24ac 100755 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -115,12 +115,6 @@ if [ "${postalert}" == "on" ]&&[ -n "${postalert}" ]; then elif [ "${postalert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then fn_print_warn_nl "More Info not enabled" fn_script_log_warn "More Info alerts not enabled" -elif [ -z "${posttarget}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "posttarget not set" - fn_script_error "posttarget not set" -elif [ -z "${postdays}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "postdays not set" - fn_script_error "postdays not set" fi if [ "${discordalert}" == "on" ]&&[ -n "${discordalert}" ]; then From a194f3c8de2023161c5d37e69033adfb1a3b33cd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 24 Jan 2021 15:02:10 +0000 Subject: [PATCH 035/117] fix(backup): fix backup not correctly exiting on cancelling backup (#3197) * backup lock file only gets created when compression starts * fix backup not correctly exiting on canceling backup --- lgsm/functions/command_backup.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) mode change 100755 => 100644 lgsm/functions/command_backup.sh diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh old mode 100755 new mode 100644 index e778cb8a6..728a19e35 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -24,6 +24,8 @@ fn_backup_trap(){ fn_script_log_info "Backup ${backupname}.tar.gz: REMOVED" # Remove lock file. rm -f "${lockdir:?}/backup.lock" + fn_backup_start_server + unset exitbypass core_exit.sh } @@ -252,12 +254,12 @@ fn_backup_start_server(){ } # Run functions. -fn_backup_check_lockfile fn_backup_create_lockfile fn_backup_init fn_backup_stop_server fn_backup_dir fn_backup_migrate_olddir +fn_backup_check_lockfile fn_backup_compression fn_backup_prune fn_backup_start_server From 852feec5204d9ed5bbd90c78f928edcbeb17e4e0 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 24 Jan 2021 15:10:15 +0000 Subject: [PATCH 036/117] fix: standardise and refactor comment headers (#3198) --- lgsm/functions/README.md | 18 +++++++++--------- lgsm/functions/alert.sh | 3 ++- lgsm/functions/alert_discord.sh | 4 ++-- lgsm/functions/alert_email.sh | 3 ++- lgsm/functions/alert_ifttt.sh | 3 ++- lgsm/functions/alert_mailgun.sh | 3 ++- lgsm/functions/alert_pushbullet.sh | 3 ++- lgsm/functions/alert_pushover.sh | 3 ++- lgsm/functions/alert_rocketchat.sh | 5 +++-- lgsm/functions/alert_slack.sh | 5 +++-- lgsm/functions/alert_telegram.sh | 7 ++++--- lgsm/functions/check.sh | 3 ++- lgsm/functions/check_config.sh | 3 ++- lgsm/functions/check_deps.sh | 3 ++- lgsm/functions/check_executable.sh | 3 ++- lgsm/functions/check_glibc.sh | 3 ++- lgsm/functions/check_ip.sh | 3 ++- lgsm/functions/check_last_update.sh | 3 ++- lgsm/functions/check_logs.sh | 3 ++- lgsm/functions/check_permissions.sh | 2 +- lgsm/functions/check_root.sh | 3 ++- lgsm/functions/check_status.sh | 4 ++-- lgsm/functions/check_steamcmd.sh | 3 ++- lgsm/functions/check_system_dir.sh | 3 ++- lgsm/functions/check_system_requirements.sh | 4 ++-- lgsm/functions/check_tmuxception.sh | 6 +++--- lgsm/functions/check_version.sh | 5 ++++- lgsm/functions/command_backup.sh | 4 ++-- lgsm/functions/command_check_update.sh | 3 ++- lgsm/functions/command_console.sh | 3 ++- lgsm/functions/command_debug.sh | 3 ++- lgsm/functions/command_details.sh | 4 ++-- lgsm/functions/command_dev_clear_functions.sh | 3 ++- lgsm/functions/command_dev_debug.sh | 3 ++- lgsm/functions/command_dev_detect_deps.sh | 3 ++- lgsm/functions/command_dev_detect_glibc.sh | 3 ++- lgsm/functions/command_dev_detect_ldd.sh | 3 ++- lgsm/functions/command_dev_query_raw.sh | 3 ++- lgsm/functions/command_donate.sh | 3 ++- lgsm/functions/command_fastdl.sh | 4 ++-- lgsm/functions/command_install.sh | 4 ++-- .../functions/command_install_resources_mta.sh | 3 ++- lgsm/functions/command_mods_install.sh | 4 ++-- lgsm/functions/command_mods_remove.sh | 4 ++-- lgsm/functions/command_mods_update.sh | 4 ++-- lgsm/functions/command_monitor.sh | 4 ++-- lgsm/functions/command_postdetails.sh | 8 ++++---- lgsm/functions/command_restart.sh | 3 ++- lgsm/functions/command_skeleton.sh | 4 +++- lgsm/functions/command_start.sh | 4 ++-- lgsm/functions/command_stop.sh | 4 ++-- lgsm/functions/command_test_alert.sh | 3 ++- lgsm/functions/command_ts3_server_pass.sh | 4 ++-- lgsm/functions/command_update.sh | 3 ++- lgsm/functions/command_update_linuxgsm.sh | 3 ++- lgsm/functions/command_validate.sh | 3 ++- lgsm/functions/command_wipe.sh | 6 +++--- lgsm/functions/compress_unreal2_maps.sh | 3 ++- lgsm/functions/compress_ut99_maps.sh | 3 ++- lgsm/functions/core_dl.sh | 4 ++-- lgsm/functions/core_exit.sh | 3 ++- lgsm/functions/core_functions.sh | 3 ++- lgsm/functions/core_getopt.sh | 3 ++- lgsm/functions/core_github.sh | 3 ++- lgsm/functions/core_legacy.sh | 3 ++- lgsm/functions/core_logs.sh | 4 ++-- lgsm/functions/core_messages.sh | 4 ++-- lgsm/functions/core_steamcmd.sh | 3 ++- lgsm/functions/core_trap.sh | 3 ++- lgsm/functions/fix.sh | 3 ++- lgsm/functions/fix_ark.sh | 3 ++- lgsm/functions/fix_arma3.sh | 3 ++- lgsm/functions/fix_av.sh | 5 +++-- lgsm/functions/fix_bo.sh | 3 ++- lgsm/functions/fix_cmw.sh | 7 +++++-- lgsm/functions/fix_csgo.sh | 3 ++- lgsm/functions/fix_dst.sh | 3 ++- lgsm/functions/fix_hw.sh | 3 ++- lgsm/functions/fix_ins.sh | 3 ++- lgsm/functions/fix_kf.sh | 3 ++- lgsm/functions/fix_kf2.sh | 3 ++- lgsm/functions/fix_mcb.sh | 3 ++- lgsm/functions/fix_mta.sh | 4 ++-- lgsm/functions/fix_nmrih.sh | 6 ++++-- lgsm/functions/fix_onset.sh | 5 +++-- lgsm/functions/fix_ro.sh | 3 ++- lgsm/functions/fix_rust.sh | 3 ++- lgsm/functions/fix_rw.sh | 3 ++- lgsm/functions/fix_samp.sh | 5 +++-- lgsm/functions/fix_sdtd.sh | 3 ++- lgsm/functions/fix_sfc.sh | 3 ++- lgsm/functions/fix_sof2.sh | 4 +++- lgsm/functions/fix_squad.sh | 7 +++++-- lgsm/functions/fix_st.sh | 3 ++- lgsm/functions/fix_steamcmd.sh | 3 ++- lgsm/functions/fix_terraria.sh | 3 ++- lgsm/functions/fix_tf2.sh | 7 ++++--- lgsm/functions/fix_ts3.sh | 3 ++- lgsm/functions/fix_unt.sh | 3 ++- lgsm/functions/fix_ut.sh | 5 +++-- lgsm/functions/fix_ut2k4.sh | 3 ++- lgsm/functions/fix_ut3.sh | 3 ++- lgsm/functions/fix_wurm.sh | 3 ++- lgsm/functions/fix_zmr.sh | 3 ++- lgsm/functions/info_config.sh | 4 ++-- lgsm/functions/info_distro.sh | 3 ++- lgsm/functions/info_messages.sh | 3 ++- lgsm/functions/info_parms.sh | 3 ++- lgsm/functions/info_stats.sh | 6 +++--- lgsm/functions/install_complete.sh | 3 ++- lgsm/functions/install_config.sh | 3 ++- lgsm/functions/install_dst_token.sh | 5 +++-- lgsm/functions/install_eula.sh | 3 ++- lgsm/functions/install_factorio_save.sh | 7 ++++--- lgsm/functions/install_gslt.sh | 3 ++- lgsm/functions/install_header.sh | 3 ++- lgsm/functions/install_logs.sh | 3 ++- lgsm/functions/install_modules.sh | 7 +++++-- lgsm/functions/install_mta_resources.sh | 6 +++--- lgsm/functions/install_retry.sh | 3 ++- lgsm/functions/install_server_dir.sh | 3 ++- lgsm/functions/install_server_files.sh | 3 ++- lgsm/functions/install_squad_license.sh | 3 ++- lgsm/functions/install_stats.sh | 3 ++- lgsm/functions/install_steamcmd.sh | 3 ++- lgsm/functions/install_ts3db.sh | 4 ++-- lgsm/functions/install_ut2k4_key.sh | 3 ++- lgsm/functions/mods_core.sh | 4 ++-- lgsm/functions/mods_list.sh | 4 ++-- lgsm/functions/query_gamedig.sh | 3 ++- lgsm/functions/query_gsquery.py | 5 +++-- lgsm/functions/update_factorio.sh | 3 ++- lgsm/functions/update_jediknight2.sh | 3 ++- lgsm/functions/update_minecraft.sh | 3 ++- lgsm/functions/update_minecraft_bedrock.sh | 3 ++- lgsm/functions/update_mta.sh | 3 ++- lgsm/functions/update_mumble.sh | 3 ++- lgsm/functions/update_steamcmd.sh | 3 ++- lgsm/functions/update_ts3.sh | 3 ++- lgsm/functions/update_vintagestory.sh | 5 +++-- linuxgsm.sh | 2 +- 141 files changed, 323 insertions(+), 201 deletions(-) diff --git a/lgsm/functions/README.md b/lgsm/functions/README.md index 01de5f0c7..c1c823fac 100755 --- a/lgsm/functions/README.md +++ b/lgsm/functions/README.md @@ -1,16 +1,16 @@ -# Linux Game Server Manager - Functions +# LinuxGSM - Modules -These functions are universal functions that work in all scripts. +These modules are scripts that are called upon by the primary script linuxgsm.sh -## Function Names -Functions have been named to give an idea of what the function does. +## Module Names +Modules have been named to give an idea of what the function does. -* core: Essential functions that will always run first. +* core: Essential modules that will always run first. * command: Primary command function. * check: Runs checks that will either halt on or fix an issue. -* dev: development functions. +* dev: development modules. * fix: Applies a game server specific fix. * info: retrieves information from a source such as config file or the OS. -* install: Functions related to the installer. -* monitor: Functions related to monitor. -* update: Functions that update the game server. +* install: modules related to the installer. +* monitor: modules related to monitor. +* update: modules that update the game server. diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 20f6e24ac..916f80e67 100755 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM alert.sh function +# LinuxGSM alert.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Overall function for managing alerts. diff --git a/lgsm/functions/alert_discord.sh b/lgsm/functions/alert_discord.sh index a8ce373f0..b8467eecc 100755 --- a/lgsm/functions/alert_discord.sh +++ b/lgsm/functions/alert_discord.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM alert_discord.sh function +# LinuxGSM alert_discord.sh module # Author: Daniel Gibbs -# Contributor: faflfama, diamondburned +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Sends Discord alert. diff --git a/lgsm/functions/alert_email.sh b/lgsm/functions/alert_email.sh index 85c3ee9bc..ad90e880f 100755 --- a/lgsm/functions/alert_email.sh +++ b/lgsm/functions/alert_email.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM alert_email.sh function +# LinuxGSM alert_email.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Sends email alert. diff --git a/lgsm/functions/alert_ifttt.sh b/lgsm/functions/alert_ifttt.sh index faef505a5..7f76cfeca 100755 --- a/lgsm/functions/alert_ifttt.sh +++ b/lgsm/functions/alert_ifttt.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM alert_ifttt.sh function +# LinuxGSM alert_ifttt.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Sends IFTTT alert. diff --git a/lgsm/functions/alert_mailgun.sh b/lgsm/functions/alert_mailgun.sh index 5694bd595..4a2955104 100755 --- a/lgsm/functions/alert_mailgun.sh +++ b/lgsm/functions/alert_mailgun.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM alert_mailgun.sh function +# LinuxGSM alert_mailgun.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Sends Mailgun Email alert. diff --git a/lgsm/functions/alert_pushbullet.sh b/lgsm/functions/alert_pushbullet.sh index 42a9b7d5d..4c20e67c3 100755 --- a/lgsm/functions/alert_pushbullet.sh +++ b/lgsm/functions/alert_pushbullet.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM alert_pushbullet.sh function +# LinuxGSM alert_pushbullet.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Sends Pushbullet Messenger alert. diff --git a/lgsm/functions/alert_pushover.sh b/lgsm/functions/alert_pushover.sh index 848a2eea5..b8b866cb8 100755 --- a/lgsm/functions/alert_pushover.sh +++ b/lgsm/functions/alert_pushover.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM alert_pushover.sh function +# LinuxGSM alert_pushover.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Sends Pushover alert. diff --git a/lgsm/functions/alert_rocketchat.sh b/lgsm/functions/alert_rocketchat.sh index e6d4cf5ce..6c492854c 100755 --- a/lgsm/functions/alert_rocketchat.sh +++ b/lgsm/functions/alert_rocketchat.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM alert_rocketchat.sh function -# Author: Alasdair Haig +# LinuxGSM alert_rocketchat.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Sends Rocketchat alert. diff --git a/lgsm/functions/alert_slack.sh b/lgsm/functions/alert_slack.sh index c3a82d529..625b1967e 100755 --- a/lgsm/functions/alert_slack.sh +++ b/lgsm/functions/alert_slack.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM alert_slack.sh function -# Author: Kenneth Lindeof +# LinuxGSM alert_slack.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Sends Slack alert. diff --git a/lgsm/functions/alert_telegram.sh b/lgsm/functions/alert_telegram.sh index 7b812246c..938f6802a 100755 --- a/lgsm/functions/alert_telegram.sh +++ b/lgsm/functions/alert_telegram.sh @@ -1,7 +1,8 @@ #!/bin/bash -# LinuxGSM alert_telegram.sh function -# Author: Bennet Becker -# Website: https://bytegaming.de +# LinuxGSM alert_telegram.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib +# Website: https://linuxgsm.com # Description: Sends Telegram Messenger alert. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 7ce2e9824..523445c5d 100755 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check.sh function +# LinuxGSM check.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Overall function for managing checks. # Runs checks that will either halt on or fix an issue. diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh index ce9035744..5b8d51691 100755 --- a/lgsm/functions/check_config.sh +++ b/lgsm/functions/check_config.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_config.sh function +# LinuxGSM check_config.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.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 9caef4806..3dd58cdd8 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_deps.sh function +# LinuxGSM check_deps.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Checks if required dependencies are installed for LinuxGSM. diff --git a/lgsm/functions/check_executable.sh b/lgsm/functions/check_executable.sh index 8623dc303..252c6c8d2 100755 --- a/lgsm/functions/check_executable.sh +++ b/lgsm/functions/check_executable.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_executable.sh function +# LinuxGSM check_executable.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Checks if server executable exists. diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh index 02f7ad459..b1a959f5b 100755 --- a/lgsm/functions/check_glibc.sh +++ b/lgsm/functions/check_glibc.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_glibc.sh function +# LinuxGSM check_glibc.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Checks if the server has the correct Glibc version. diff --git a/lgsm/functions/check_ip.sh b/lgsm/functions/check_ip.sh index a4ddf7ae0..ae1b99b77 100755 --- a/lgsm/functions/check_ip.sh +++ b/lgsm/functions/check_ip.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_ip.sh function +# LinuxGSM check_ip.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Automatically identifies the server interface IP. # If multiple interfaces are detected the user will need to manually set using ip="0.0.0.0". diff --git a/lgsm/functions/check_last_update.sh b/lgsm/functions/check_last_update.sh index 99253d749..07e9d3883 100755 --- a/lgsm/functions/check_last_update.sh +++ b/lgsm/functions/check_last_update.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_last_update.sh function +# LinuxGSM check_last_update.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Checks lock file to see when last update happened. # Will reboot server if instance not rebooted since update. diff --git a/lgsm/functions/check_logs.sh b/lgsm/functions/check_logs.sh index 694b1678a..b8dad203c 100755 --- a/lgsm/functions/check_logs.sh +++ b/lgsm/functions/check_logs.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_logs.sh function +# LinuxGSM check_logs.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Checks if log files exist. diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh index 7f95f5da7..d4421dba1 100755 --- a/lgsm/functions/check_permissions.sh +++ b/lgsm/functions/check_permissions.sh @@ -1,7 +1,7 @@ #!/bin/bash # LinuxGSM check_permissions.sh # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Checks ownership & permissions of scripts, files and directories. diff --git a/lgsm/functions/check_root.sh b/lgsm/functions/check_root.sh index b6886938f..1eb6309cb 100755 --- a/lgsm/functions/check_root.sh +++ b/lgsm/functions/check_root.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_root.sh function +# LinuxGSM check_root.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.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 178adcf6b..670669e50 100755 --- a/lgsm/functions/check_status.sh +++ b/lgsm/functions/check_status.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM check_status.sh function +# LinuxGSM check_status.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Checks the process status of the server. Either online or offline. diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 9141acd0d..9b84686dc 100755 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_steamcmd.sh function +# LinuxGSM check_steamcmd.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.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 ce7ff5ba5..0a732d6d1 100755 --- a/lgsm/functions/check_system_dir.sh +++ b/lgsm/functions/check_system_dir.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM check_system_dir.sh function +# LinuxGSM check_system_dir.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Checks if systemdir/serverfiles is accessible. diff --git a/lgsm/functions/check_system_requirements.sh b/lgsm/functions/check_system_requirements.sh index 7a8b73de5..758d558a6 100755 --- a/lgsm/functions/check_system_requirements.sh +++ b/lgsm/functions/check_system_requirements.sh @@ -1,9 +1,9 @@ #!/bin/bash # LinuxGSM check_system_requirements.sh # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com -# Description: Checks RAM requirements +# Description: Checks RAM requirements. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" diff --git a/lgsm/functions/check_tmuxception.sh b/lgsm/functions/check_tmuxception.sh index 4f5fd2e29..e11b55861 100755 --- a/lgsm/functions/check_tmuxception.sh +++ b/lgsm/functions/check_tmuxception.sh @@ -1,9 +1,9 @@ #!/bin/bash -# LinuxGSM check_config.sh function +# LinuxGSM check_config.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com -# Description: Checks if run from tmux or screen +# Description: Checks if run from tmux or screen. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" diff --git a/lgsm/functions/check_version.sh b/lgsm/functions/check_version.sh index 15f0284bb..a0f3d4435 100755 --- a/lgsm/functions/check_version.sh +++ b/lgsm/functions/check_version.sh @@ -1,10 +1,13 @@ #!/bin/bash -# LinuxGSM command_version.sh function +# LinuxGSM command_version.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Will run update-lgsm if gameserver.sh and modules version does not match # this will allow gameserver.sh to update - useful for multi instance servers. +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" + if [ -n "${modulesversion}" ]&&[ -n "${version}" ]&&[ "${version}" != "${modulesversion}" ]; then exitbypass=1 echo -e "" diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh index 728a19e35..e04318c85 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_backup.sh function +# LinuxGSM command_backup.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Creates a .tar.gz file in the backup directory. diff --git a/lgsm/functions/command_check_update.sh b/lgsm/functions/command_check_update.sh index 5bda55469..9648dd49e 100755 --- a/lgsm/functions/command_check_update.sh +++ b/lgsm/functions/command_check_update.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_check_update.sh function +# LinuxGSM command_check_update.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of servers. diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index 0de924ea6..5b84789e6 100755 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_console.sh function +# LinuxGSM command_console.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Gives access to the server tmux console. diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 0630b887f..07871ce00 100755 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_debug.sh function +# LinuxGSM command_debug.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.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 2db605656..8f2a03a98 100755 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_details.sh function +# LinuxGSM command_details.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Displays server information. diff --git a/lgsm/functions/command_dev_clear_functions.sh b/lgsm/functions/command_dev_clear_functions.sh index 96a637c52..87c77515d 100755 --- a/lgsm/functions/command_dev_clear_functions.sh +++ b/lgsm/functions/command_dev_clear_functions.sh @@ -1,6 +1,7 @@ #!/bin/bash -# command_dev_clear_functions.sh function +# LinuxGSM command_dev_clear_functions.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Deletes the contents of the functions dir. diff --git a/lgsm/functions/command_dev_debug.sh b/lgsm/functions/command_dev_debug.sh index e959509cd..957709898 100755 --- a/lgsm/functions/command_dev_debug.sh +++ b/lgsm/functions/command_dev_debug.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_dev_debug.sh function +# LinuxGSM command_dev_debug.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.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 c8271172e..976bf94dc 100755 --- a/lgsm/functions/command_dev_detect_deps.sh +++ b/lgsm/functions/command_dev_detect_deps.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_dev_detect_deps.sh function +# LinuxGSM command_dev_detect_deps.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Detects dependencies the server binary requires. diff --git a/lgsm/functions/command_dev_detect_glibc.sh b/lgsm/functions/command_dev_detect_glibc.sh index e538c456e..304d255fd 100755 --- a/lgsm/functions/command_dev_detect_glibc.sh +++ b/lgsm/functions/command_dev_detect_glibc.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_dev_detect_glibc.sh function +# LinuxGSM command_dev_detect_glibc.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Automatically detects the version of GLIBC that is required. # Can check a file or directory recursively. diff --git a/lgsm/functions/command_dev_detect_ldd.sh b/lgsm/functions/command_dev_detect_ldd.sh index e6ddfb09f..7d6e942a1 100755 --- a/lgsm/functions/command_dev_detect_ldd.sh +++ b/lgsm/functions/command_dev_detect_ldd.sh @@ -1,6 +1,7 @@ #!/bin/bash -# command_dev_detect_ldd.sh function +# LinuxGSM command_dev_detect_ldd.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Automatically detects required deps using ldd. # Can check a file or directory recursively. diff --git a/lgsm/functions/command_dev_query_raw.sh b/lgsm/functions/command_dev_query_raw.sh index ac1e9f688..306dc681d 100755 --- a/lgsm/functions/command_dev_query_raw.sh +++ b/lgsm/functions/command_dev_query_raw.sh @@ -1,6 +1,7 @@ #!/bin/bash -# command_dev_query_raw.sh function +# LinuxGSM command_dev_query_raw.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Raw gamedig output of the server. diff --git a/lgsm/functions/command_donate.sh b/lgsm/functions/command_donate.sh index 18e6dce5a..f00a4d702 100755 --- a/lgsm/functions/command_donate.sh +++ b/lgsm/functions/command_donate.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_donate.sh function +# LinuxGSM command_donate.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Shows ways to donate. diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh index 4f8ebd863..2474ffd47 100755 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_fastdl.sh function +# LinuxGSM command_fastdl.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Creates a FastDL directory. diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh index 3e5d27872..e56890b4d 100755 --- a/lgsm/functions/command_install.sh +++ b/lgsm/functions/command_install.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_install.sh function +# LinuxGSM command_install.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Overall function for the installer. diff --git a/lgsm/functions/command_install_resources_mta.sh b/lgsm/functions/command_install_resources_mta.sh index 503948a3c..6800932e1 100755 --- a/lgsm/functions/command_install_resources_mta.sh +++ b/lgsm/functions/command_install_resources_mta.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_install_resources_mta.sh function +# LinuxGSM command_install_resources_mta.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.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 d644e0cf0..a5eaaf83c 100755 --- a/lgsm/functions/command_mods_install.sh +++ b/lgsm/functions/command_mods_install.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_mods_install.sh function +# LinuxGSM command_mods_install.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: List and installs available mods along with mods_list.sh and mods_core.sh. diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh index 507251e87..8647a21ed 100755 --- a/lgsm/functions/command_mods_remove.sh +++ b/lgsm/functions/command_mods_remove.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_mods_uninstall.sh function +# LinuxGSM command_mods_uninstall.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Uninstall mods along with mods_list.sh and mods_core.sh. diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh index 9328a493d..50bbf9d67 100755 --- a/lgsm/functions/command_mods_update.sh +++ b/lgsm/functions/command_mods_update.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_mods_update.sh function +# LinuxGSM command_mods_update.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Updates installed mods along with mods_list.sh and mods_core.sh. diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index edc101012..2cd07ed58 100755 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_monitor.sh function +# LinuxGSM command_monitor.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Monitors server by checking for running processes # then passes to gamedig and gsquery. diff --git a/lgsm/functions/command_postdetails.sh b/lgsm/functions/command_postdetails.sh index 0f18b12a9..811938380 100755 --- a/lgsm/functions/command_postdetails.sh +++ b/lgsm/functions/command_postdetails.sh @@ -1,9 +1,9 @@ #!/bin/bash -# LinuxGSM command_postdetails.sh function -# Author: CedarLUG -# Contributor: CedarLUG +# LinuxGSM command_postdetails.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com -# Description: Strips sensitive information out of Details output +# Description: Strips sensitive information out of Details output. commandname="POST-DETAILS" commandaction="Posting details" diff --git a/lgsm/functions/command_restart.sh b/lgsm/functions/command_restart.sh index 9498c618c..47a6b904c 100755 --- a/lgsm/functions/command_restart.sh +++ b/lgsm/functions/command_restart.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_restart.sh function +# LinuxGSM command_restart.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Restarts the server. diff --git a/lgsm/functions/command_skeleton.sh b/lgsm/functions/command_skeleton.sh index cb1136915..7b7d67d5f 100644 --- a/lgsm/functions/command_skeleton.sh +++ b/lgsm/functions/command_skeleton.sh @@ -1,9 +1,11 @@ #!/bin/bash -# LinuxGSM command_skeleton.sh function +# LinuxGSM command_skeleton.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Creates an copy of a game servers directorys. +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" fn_print_dots "Creating skeleton directory" check.sh diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index f349ec6a1..cc79613fb 100755 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_start.sh function +# LinuxGSM command_start.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Starts the server. diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index 6fe06e4ef..f0a0bf92c 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_stop.sh function +# LinuxGSM command_stop.sh module # Author: Daniel Gibbs -# Contributors: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Stops the server. diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh index 625d5c6c2..9397a445c 100755 --- a/lgsm/functions/command_test_alert.sh +++ b/lgsm/functions/command_test_alert.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_test_alert.sh function +# LinuxGSM command_test_alert.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.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 ff75b71d2..1e227f3de 100755 --- a/lgsm/functions/command_ts3_server_pass.sh +++ b/lgsm/functions/command_ts3_server_pass.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_ts3_server_pass.sh function +# LinuxGSM command_ts3_server_pass.sh module # Author: Daniel Gibbs -# Contributor : UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Changes TS3 serveradmin password. diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index 718f5d490..fdaf9f5a0 100755 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_update.sh function +# LinuxGSM command_update.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of servers. diff --git a/lgsm/functions/command_update_linuxgsm.sh b/lgsm/functions/command_update_linuxgsm.sh index 7e0ec57b6..341b46e0b 100755 --- a/lgsm/functions/command_update_linuxgsm.sh +++ b/lgsm/functions/command_update_linuxgsm.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_update_linuxgsm.sh function +# LinuxGSM command_update_linuxgsm.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Deletes the functions dir to allow re-downloading of functions from GitHub. diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh index 690a86b43..4c51bacb3 100755 --- a/lgsm/functions/command_validate.sh +++ b/lgsm/functions/command_validate.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_validate.sh function +# LinuxGSM command_validate.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Runs a server validation. diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 9fc099fbe..63cb830fb 100755 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -1,9 +1,9 @@ #!/bin/bash -# LinuxGSM command_backup.sh function +# LinuxGSM command_backup.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com -# Description: Wipes server data, useful after updates for some games like Rust +# Description: Wipes server data, useful after updates for some games like Rust. commandname="WIPE" commandaction="Wiping" diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh index 7169c9612..0c32d3c77 100755 --- a/lgsm/functions/compress_unreal2_maps.sh +++ b/lgsm/functions/compress_unreal2_maps.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM compress_unreal2_maps.sh function +# LinuxGSM compress_unreal2_maps.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Compresses unreal maps. diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh index 3239837a0..9aa074ba9 100755 --- a/lgsm/functions/compress_ut99_maps.sh +++ b/lgsm/functions/compress_ut99_maps.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM compress_ut99_maps.sh function +# LinuxGSM compress_ut99_maps.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Compresses unreal maps. diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index 01d001b2a..b947cbc6d 100755 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM core_dl.sh function +# LinuxGSM core_dl.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Deals with all downloads for LinuxGSM. diff --git a/lgsm/functions/core_exit.sh b/lgsm/functions/core_exit.sh index e2b439abd..34379a486 100755 --- a/lgsm/functions/core_exit.sh +++ b/lgsm/functions/core_exit.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM core_exit.sh function +# LinuxGSM core_exit.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles exiting of LinuxGSM by running and reporting an exit code. diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 41bcc7e60..7ae5824d3 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM core_functions.sh function +# LinuxGSM core_functions.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # This function is called first before any other function. Without this file other functions will not load. diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 5fae3fb9f..b0986024a 100755 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM core_getopt.sh function +# LinuxGSM core_getopt.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: getopt arguments. diff --git a/lgsm/functions/core_github.sh b/lgsm/functions/core_github.sh index a83512b6a..5bd4bd730 100644 --- a/lgsm/functions/core_github.sh +++ b/lgsm/functions/core_github.sh @@ -1,6 +1,7 @@ #!/bin/bash # LinuxGSM core_github.sh function -# Author: Christian Birk +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: core function file for updates via github diff --git a/lgsm/functions/core_legacy.sh b/lgsm/functions/core_legacy.sh index 9c95adcaf..2ea30f5a6 100755 --- a/lgsm/functions/core_legacy.sh +++ b/lgsm/functions/core_legacy.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM core_legacy.sh function +# LinuxGSM core_legacy.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Code for backwards compatability with older versions of LinuxGSM. diff --git a/lgsm/functions/core_logs.sh b/lgsm/functions/core_logs.sh index 00c4d0662..b999cb347 100755 --- a/lgsm/functions/core_logs.sh +++ b/lgsm/functions/core_logs.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM core_logs.sh function +# LinuxGSM core_logs.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Acts as a log rotator, removing old logs. diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index c467c2a4d..388a64a9d 100755 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM core_messages.sh function +# LinuxGSM core_messages.sh module # Author: Daniel Gibbs -# Contributor: s-eam +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Defines on-screen messages such as [ OK ] and how script logs look. diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh index 389880241..86c71b708 100644 --- a/lgsm/functions/core_steamcmd.sh +++ b/lgsm/functions/core_steamcmd.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM core_steamcmd.sh function +# LinuxGSM core_steamcmd.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Core functions for SteamCMD diff --git a/lgsm/functions/core_trap.sh b/lgsm/functions/core_trap.sh index 769c27c96..a3eaf5675 100755 --- a/lgsm/functions/core_trap.sh +++ b/lgsm/functions/core_trap.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM core_trap.sh function +# LinuxGSM core_trap.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles CTRL-C trap to give an exit code. diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index 2e2931e41..4418c184f 100755 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix.sh function +# LinuxGSM fix.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Overall function for managing fixes. # Runs functions that will fix an issue. diff --git a/lgsm/functions/fix_ark.sh b/lgsm/functions/fix_ark.sh index 4c4cf3f32..da0097cab 100755 --- a/lgsm/functions/fix_ark.sh +++ b/lgsm/functions/fix_ark.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_ark.sh function +# LinuxGSM fix_ark.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with ARK: Survival Evolved. diff --git a/lgsm/functions/fix_arma3.sh b/lgsm/functions/fix_arma3.sh index f71fcde7b..bdd85af71 100755 --- a/lgsm/functions/fix_arma3.sh +++ b/lgsm/functions/fix_arma3.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_arma3.sh function +# LinuxGSM fix_arma3.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves an issue with ARMA3. diff --git a/lgsm/functions/fix_av.sh b/lgsm/functions/fix_av.sh index 3edf7862b..6aed64f5e 100755 --- a/lgsm/functions/fix_av.sh +++ b/lgsm/functions/fix_av.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_av.sh function -# Author: Christian Birk +# LinuxGSM fix_av.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves startup issue with Avorion diff --git a/lgsm/functions/fix_bo.sh b/lgsm/functions/fix_bo.sh index 545504f63..453691874 100644 --- a/lgsm/functions/fix_bo.sh +++ b/lgsm/functions/fix_bo.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_hw.sh function +# LinuxGSM fix_hw.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Ballistic Overkill. diff --git a/lgsm/functions/fix_cmw.sh b/lgsm/functions/fix_cmw.sh index 2f517b1b7..192f483e8 100755 --- a/lgsm/functions/fix_cmw.sh +++ b/lgsm/functions/fix_cmw.sh @@ -1,9 +1,12 @@ #!/bin/bash -# LinuxGSM fix_cmw.sh function -# Author: Christian Birk +# LinuxGSM fix_cmw.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves the issue of the not starting server on linux +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" + if [ ! -f "${executabledir}/steam_appid.txt" ]; then fixname="steam_appid.txt" fn_fix_msg_start diff --git a/lgsm/functions/fix_csgo.sh b/lgsm/functions/fix_csgo.sh index 6b213d388..be59c42ec 100755 --- a/lgsm/functions/fix_csgo.sh +++ b/lgsm/functions/fix_csgo.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_csgo.sh function +# LinuxGSM fix_csgo.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with CS:GO. diff --git a/lgsm/functions/fix_dst.sh b/lgsm/functions/fix_dst.sh index b203e1cd8..49fce22e3 100755 --- a/lgsm/functions/fix_dst.sh +++ b/lgsm/functions/fix_dst.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_dst.sh function +# LinuxGSM fix_dst.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Don't Starve Together. diff --git a/lgsm/functions/fix_hw.sh b/lgsm/functions/fix_hw.sh index 4fc3dcd0d..af06924db 100755 --- a/lgsm/functions/fix_hw.sh +++ b/lgsm/functions/fix_hw.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_hw.sh function +# LinuxGSM fix_hw.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Hurtworld. diff --git a/lgsm/functions/fix_ins.sh b/lgsm/functions/fix_ins.sh index f41dffbd4..21a979c4c 100755 --- a/lgsm/functions/fix_ins.sh +++ b/lgsm/functions/fix_ins.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_ins.sh function +# LinuxGSM fix_ins.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Insurgency. diff --git a/lgsm/functions/fix_kf.sh b/lgsm/functions/fix_kf.sh index c4a294515..e749a2d27 100755 --- a/lgsm/functions/fix_kf.sh +++ b/lgsm/functions/fix_kf.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_kf.sh function +# LinuxGSM fix_kf.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Killing Floor. diff --git a/lgsm/functions/fix_kf2.sh b/lgsm/functions/fix_kf2.sh index e826dea2a..d9f8c82b4 100755 --- a/lgsm/functions/fix_kf2.sh +++ b/lgsm/functions/fix_kf2.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_kf2.sh function +# LinuxGSM fix_kf2.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Killing Floor 2. diff --git a/lgsm/functions/fix_mcb.sh b/lgsm/functions/fix_mcb.sh index 691647fb7..4768a40cf 100755 --- a/lgsm/functions/fix_mcb.sh +++ b/lgsm/functions/fix_mcb.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_mcb.sh function +# LinuxGSM fix_mcb.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves possible startup issue with Minecraft Bedrock. diff --git a/lgsm/functions/fix_mta.sh b/lgsm/functions/fix_mta.sh index 549101a68..2c92e8d12 100755 --- a/lgsm/functions/fix_mta.sh +++ b/lgsm/functions/fix_mta.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM fix_mta.sh function +# LinuxGSM fix_mta.sh module # Author: Daniel Gibbs -# Contributor: ChaosMTA +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Installs the libmysqlclient for database functions on the server. diff --git a/lgsm/functions/fix_nmrih.sh b/lgsm/functions/fix_nmrih.sh index 2c9d8c743..4bb70c6f9 100755 --- a/lgsm/functions/fix_nmrih.sh +++ b/lgsm/functions/fix_nmrih.sh @@ -1,6 +1,8 @@ #!/bin/bash -# LinuxGSM fix_nmrih.sh function -# Author: Denperidge +# LinuxGSM fix_nmrih.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib +# Website: https://linuxgsm.com # Description: Create symlinks for renamed No More Room In Hell serverfiles. # Solution from Steam Community post: https://steamcommunity.com/app/224260/discussions/2/1732089092441769414/ diff --git a/lgsm/functions/fix_onset.sh b/lgsm/functions/fix_onset.sh index 630245844..c444c1ae9 100755 --- a/lgsm/functions/fix_onset.sh +++ b/lgsm/functions/fix_onset.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_onset.sh function -# Author: Frédéric C. +# LinuxGSM fix_onset.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Onset. diff --git a/lgsm/functions/fix_ro.sh b/lgsm/functions/fix_ro.sh index c9254aa64..895c7c2da 100755 --- a/lgsm/functions/fix_ro.sh +++ b/lgsm/functions/fix_ro.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_ro.sh function +# LinuxGSM fix_ro.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Red Orchestra. diff --git a/lgsm/functions/fix_rust.sh b/lgsm/functions/fix_rust.sh index 607af491b..1e62898df 100755 --- a/lgsm/functions/fix_rust.sh +++ b/lgsm/functions/fix_rust.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_rust.sh function +# LinuxGSM fix_rust.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves startup issue with Rust. diff --git a/lgsm/functions/fix_rw.sh b/lgsm/functions/fix_rw.sh index b02ec343e..aef41a703 100755 --- a/lgsm/functions/fix_rw.sh +++ b/lgsm/functions/fix_rw.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_rw.sh function +# LinuxGSM fix_rw.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Rising World. diff --git a/lgsm/functions/fix_samp.sh b/lgsm/functions/fix_samp.sh index b69779019..7a62bd4d1 100644 --- a/lgsm/functions/fix_samp.sh +++ b/lgsm/functions/fix_samp.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_sfc.sh function -# Author: Christian Birk +# LinuxGSM fix_sfc.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves issue that the default rcon password is not changed diff --git a/lgsm/functions/fix_sdtd.sh b/lgsm/functions/fix_sdtd.sh index 2709102c4..e93db7970 100755 --- a/lgsm/functions/fix_sdtd.sh +++ b/lgsm/functions/fix_sdtd.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_sdtd.sh function +# LinuxGSM fix_sdtd.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with 7 Days to Die. diff --git a/lgsm/functions/fix_sfc.sh b/lgsm/functions/fix_sfc.sh index 874d6eca7..51b95b9d5 100755 --- a/lgsm/functions/fix_sfc.sh +++ b/lgsm/functions/fix_sfc.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_sfc.sh function +# LinuxGSM fix_sfc.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Source Forts Classic. diff --git a/lgsm/functions/fix_sof2.sh b/lgsm/functions/fix_sof2.sh index 51224c8e0..002f42952 100755 --- a/lgsm/functions/fix_sof2.sh +++ b/lgsm/functions/fix_sof2.sh @@ -1,9 +1,11 @@ #!/bin/bash -# LinuxGSM fix_rust.sh function +# LinuxGSM fix_rust.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Soldier of Fortune 2. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" + # Fixes: error while loading shared libraries: libcxa.so.1 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}" diff --git a/lgsm/functions/fix_squad.sh b/lgsm/functions/fix_squad.sh index 8ec84a86f..b1ba1fde2 100644 --- a/lgsm/functions/fix_squad.sh +++ b/lgsm/functions/fix_squad.sh @@ -1,9 +1,12 @@ #!/bin/bash -# LinuxGSM fix_squad.sh function -# Author: Christian Birk +# LinuxGSM fix_squad.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Squad. +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" + # As the server base dir changed for the game, we need to migrate the default config from the old to the new location oldservercfg="${serverfiles}/Squad/ServerConfig/${servercfg}" if [ -f "${oldservercfg}" ]&&[ -f "${servercfgfullpath}" ]; then diff --git a/lgsm/functions/fix_st.sh b/lgsm/functions/fix_st.sh index 2495264da..b9fb5b084 100644 --- a/lgsm/functions/fix_st.sh +++ b/lgsm/functions/fix_st.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_rust.sh function +# LinuxGSM fix_rust.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves startup issue with Stationeers. diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh index 01465b45e..5fb151bad 100755 --- a/lgsm/functions/fix_steamcmd.sh +++ b/lgsm/functions/fix_steamcmd.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_steamcmd.sh function +# LinuxGSM fix_steamcmd.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues related to SteamCMD. diff --git a/lgsm/functions/fix_terraria.sh b/lgsm/functions/fix_terraria.sh index 712416bd8..7758fdad9 100755 --- a/lgsm/functions/fix_terraria.sh +++ b/lgsm/functions/fix_terraria.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_terraria.sh function +# LinuxGSM fix_terraria.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves an issue with Terraria. diff --git a/lgsm/functions/fix_tf2.sh b/lgsm/functions/fix_tf2.sh index 59b841226..27b35a0d2 100755 --- a/lgsm/functions/fix_tf2.sh +++ b/lgsm/functions/fix_tf2.sh @@ -1,7 +1,8 @@ #!/bin/bash -# LinuxGSM fix_tf2.sh function -# Author: Vector Sigma -# Website: https://github.com/vectorsigma +# LinuxGSM fix_tf2.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib +# Website: https://linuxgsm.com # Description: Resolves various issues with Team Fortress 2. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" diff --git a/lgsm/functions/fix_ts3.sh b/lgsm/functions/fix_ts3.sh index b019012f7..223c90aea 100755 --- a/lgsm/functions/fix_ts3.sh +++ b/lgsm/functions/fix_ts3.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_ts3.sh function +# LinuxGSM fix_ts3.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Teamspeak 3. diff --git a/lgsm/functions/fix_unt.sh b/lgsm/functions/fix_unt.sh index d030ef318..eae2e6313 100755 --- a/lgsm/functions/fix_unt.sh +++ b/lgsm/functions/fix_unt.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_rust.sh function +# LinuxGSM fix_rust.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves startup issue with Unturned. diff --git a/lgsm/functions/fix_ut.sh b/lgsm/functions/fix_ut.sh index f9c81348a..2e6686a8d 100755 --- a/lgsm/functions/fix_ut.sh +++ b/lgsm/functions/fix_ut.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_ut.sh function -# Author: Alexander Hurd +# LinuxGSM fix_ut.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Unreal Tournament. diff --git a/lgsm/functions/fix_ut2k4.sh b/lgsm/functions/fix_ut2k4.sh index cc1621815..49610e4b6 100755 --- a/lgsm/functions/fix_ut2k4.sh +++ b/lgsm/functions/fix_ut2k4.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_ut2k4.sh function +# LinuxGSM fix_ut2k4.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Unreal Tournament 2004. diff --git a/lgsm/functions/fix_ut3.sh b/lgsm/functions/fix_ut3.sh index 402683bf1..d3b6f824b 100755 --- a/lgsm/functions/fix_ut3.sh +++ b/lgsm/functions/fix_ut3.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_ut2.sh function +# LinuxGSM fix_ut2.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Unreal Tournament 3. diff --git a/lgsm/functions/fix_wurm.sh b/lgsm/functions/fix_wurm.sh index bf53e35b0..aba24d382 100755 --- a/lgsm/functions/fix_wurm.sh +++ b/lgsm/functions/fix_wurm.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_wurm.sh function +# LinuxGSM fix_wurm.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Wurm Unlimited. diff --git a/lgsm/functions/fix_zmr.sh b/lgsm/functions/fix_zmr.sh index 1825fa327..491c36638 100755 --- a/lgsm/functions/fix_zmr.sh +++ b/lgsm/functions/fix_zmr.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM fix_sfc.sh function +# LinuxGSM fix_sfc.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Resolves various issues with Zombie Master: Reborn. diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 4d4b9bd2b..d411a1205 100755 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM info_config.sh function +# LinuxGSM info_config.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Gets specific details from config files. diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index 11da3cc63..3b199b4f0 100755 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM info_distro.sh function +# LinuxGSM info_distro.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Variables providing useful info on the Operating System such as disk and performace info. # Used for command_details.sh, command_debug.sh and alert.sh. diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index 3f5601a68..ab8e77be4 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM info_messages.sh function +# LinuxGSM info_messages.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Defines server info messages for details and alerts. diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index 4a81d73ce..7644b03a7 100755 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM info_parms.sh function +# LinuxGSM info_parms.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: If specific parms are not set then this will be displayed in details. diff --git a/lgsm/functions/info_stats.sh b/lgsm/functions/info_stats.sh index 9bdee07fd..3332f2c5b 100755 --- a/lgsm/functions/info_stats.sh +++ b/lgsm/functions/info_stats.sh @@ -1,12 +1,12 @@ #!/bin/bash -# LinuxGSM info_stats.sh function +# LinuxGSM info_stats.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Collect optional Stats sent to LinuxGSM project. # Uses Google analytics. -local modulegroup="INFO" -local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" info_distro.sh diff --git a/lgsm/functions/install_complete.sh b/lgsm/functions/install_complete.sh index 62eec08a2..ad258b224 100755 --- a/lgsm/functions/install_complete.sh +++ b/lgsm/functions/install_complete.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_complete.sh function +# LinuxGSM install_complete.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Prints installation completion message and hints. diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index dbcb27e14..e1f0ba245 100755 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_config.sh function +# LinuxGSM install_config.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Creates default server configs. diff --git a/lgsm/functions/install_dst_token.sh b/lgsm/functions/install_dst_token.sh index 7eab2a153..50bc7ed97 100755 --- a/lgsm/functions/install_dst_token.sh +++ b/lgsm/functions/install_dst_token.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_dst_token.sh function -# Author: Daniel Gibbs & Marvin Lehmann (marvinl97) +# LinuxGSM install_dst_token.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Configures Don't Starve Together cluster with given token. diff --git a/lgsm/functions/install_eula.sh b/lgsm/functions/install_eula.sh index 1f50007f2..0e6b8bd9b 100755 --- a/lgsm/functions/install_eula.sh +++ b/lgsm/functions/install_eula.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_eula.sh function +# LinuxGSM install_eula.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Gets user to accept the EULA. diff --git a/lgsm/functions/install_factorio_save.sh b/lgsm/functions/install_factorio_save.sh index 71690a7a7..f5fdb8a04 100755 --- a/lgsm/functions/install_factorio_save.sh +++ b/lgsm/functions/install_factorio_save.sh @@ -1,8 +1,9 @@ #!/bin/bash -# LinuxGSM install_factorio_save.sh function -# Author: Kristian Polso +# LinuxGSM install_factorio_save.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com -# Description: Creates the initial save file for Factorio +# Description: Creates the initial save file for Factorio. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" diff --git a/lgsm/functions/install_gslt.sh b/lgsm/functions/install_gslt.sh index 27d384936..a8f8065c2 100755 --- a/lgsm/functions/install_gslt.sh +++ b/lgsm/functions/install_gslt.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_gslt.sh function +# LinuxGSM install_gslt.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Configures GSLT. diff --git a/lgsm/functions/install_header.sh b/lgsm/functions/install_header.sh index 420b827f8..4cf067f8f 100755 --- a/lgsm/functions/install_header.sh +++ b/lgsm/functions/install_header.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_header.sh function +# LinuxGSM install_header.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Prints installation header. diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh index 6a272f2ef..57a41500c 100755 --- a/lgsm/functions/install_logs.sh +++ b/lgsm/functions/install_logs.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_logs.sh function +# LinuxGSM install_logs.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Creates log directories. diff --git a/lgsm/functions/install_modules.sh b/lgsm/functions/install_modules.sh index cc516bea0..2ee8e4fc4 100755 --- a/lgsm/functions/install_modules.sh +++ b/lgsm/functions/install_modules.sh @@ -1,8 +1,11 @@ #!/bin/bash -# LinuxGSM install_modules.sh function +# LinuxGSM install_modules.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com -# Description: Downloads all modules on install +# Description: Downloads all modules on install. + +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" echo -e "" echo -e "${lightyellow}Downloading LinuxGSM Modules${default}" diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh index 194d9f546..011ad9b71 100755 --- a/lgsm/functions/install_mta_resources.sh +++ b/lgsm/functions/install_mta_resources.sh @@ -1,9 +1,9 @@ #!/bin/bash -# LinuxGSM install_mta_resources.sh function +# LinuxGSM install_mta_resources.sh module # Author: Daniel Gibbs -# Contributor: ChaosMTA +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com -# Description: Installs the libmysqlclient for database functions on the server and optionally installs default resources required to run the server +# Description: Installs the libmysqlclient for database functions on the server and optionally installs default resources required to run the server. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" diff --git a/lgsm/functions/install_retry.sh b/lgsm/functions/install_retry.sh index 070a4a816..080f864a2 100755 --- a/lgsm/functions/install_retry.sh +++ b/lgsm/functions/install_retry.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_retry.sh function +# LinuxGSM install_retry.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.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 77c5ab138..9e75fb488 100755 --- a/lgsm/functions/install_server_dir.sh +++ b/lgsm/functions/install_server_dir.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_server_dir.sh function +# LinuxGSM install_server_dir.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Creates the server directory. diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index a3c40da37..c7a6a3097 100755 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_server_files.sh function +# LinuxGSM install_server_files.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Installs server files. diff --git a/lgsm/functions/install_squad_license.sh b/lgsm/functions/install_squad_license.sh index b17b1ab7e..181646e85 100755 --- a/lgsm/functions/install_squad_license.sh +++ b/lgsm/functions/install_squad_license.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_squad_license.sh function +# LinuxGSM install_squad_license.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Configures the Squad server's license. diff --git a/lgsm/functions/install_stats.sh b/lgsm/functions/install_stats.sh index 355b7fa67..d3b45b40b 100755 --- a/lgsm/functions/install_stats.sh +++ b/lgsm/functions/install_stats.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_stats.sh function +# LinuxGSM install_stats.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Enabled LinuxGSM Stats. diff --git a/lgsm/functions/install_steamcmd.sh b/lgsm/functions/install_steamcmd.sh index 40acf435b..b1e64a42c 100755 --- a/lgsm/functions/install_steamcmd.sh +++ b/lgsm/functions/install_steamcmd.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_steamcmd.sh function +# LinuxGSM install_steamcmd.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Downloads SteamCMD on install. diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh index a77a0ea38..07ab7a111 100755 --- a/lgsm/functions/install_ts3db.sh +++ b/lgsm/functions/install_ts3db.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM install_ts3db.sh function +# LinuxGSM install_ts3db.sh module # Author: Daniel Gibbs -# Contributor: PhilPhonic +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Installs the database server MariaDB for TeamSpeak 3. diff --git a/lgsm/functions/install_ut2k4_key.sh b/lgsm/functions/install_ut2k4_key.sh index 144ac278e..124052d05 100755 --- a/lgsm/functions/install_ut2k4_key.sh +++ b/lgsm/functions/install_ut2k4_key.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM install_ut2k4_key.sh function +# LinuxGSM install_ut2k4_key.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Activates ut2k4 server with given key. diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh index 010ff109e..7e46f7977 100755 --- a/lgsm/functions/mods_core.sh +++ b/lgsm/functions/mods_core.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM command_mods_install.sh function +# LinuxGSM command_mods_install.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Core functions for mods list/install/update/remove diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh index f60d9b30f..8272d8c16 100755 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -1,7 +1,7 @@ #!/bin/bash -# LinuxGSM mods_list.sh function +# LinuxGSM mods_list.sh module # Author: Daniel Gibbs -# Contributor: UltimateByte +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # 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; diff --git a/lgsm/functions/query_gamedig.sh b/lgsm/functions/query_gamedig.sh index 2443c6e99..4d479a4c0 100755 --- a/lgsm/functions/query_gamedig.sh +++ b/lgsm/functions/query_gamedig.sh @@ -1,6 +1,7 @@ #!/bin/bash -# query_gamedig.sh function +# LinuxGSM query_gamedig.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Querys a gameserver using node-gamedig. # https://github.com/sonicsnes/node-gamedig diff --git a/lgsm/functions/query_gsquery.py b/lgsm/functions/query_gsquery.py index 376f704b7..6c21b1a89 100755 --- a/lgsm/functions/query_gsquery.py +++ b/lgsm/functions/query_gsquery.py @@ -1,7 +1,8 @@ #! /usr/bin/env python3 # -*- coding: utf-8 -*- -# query_gsquery.py -# Author: Anonymous & Daniel Gibbs +# LinuxGSM query_gsquery.py function +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Allows querying of various game servers. diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index f13a48c43..0c93aa93f 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM update_factorio.sh function +# LinuxGSM update_factorio.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of Factorio servers. diff --git a/lgsm/functions/update_jediknight2.sh b/lgsm/functions/update_jediknight2.sh index c2bdca1b6..469a3ee18 100644 --- a/lgsm/functions/update_jediknight2.sh +++ b/lgsm/functions/update_jediknight2.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM update_jk2.sh function +# LinuxGSM update_jk2.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of jk2 servers. diff --git a/lgsm/functions/update_minecraft.sh b/lgsm/functions/update_minecraft.sh index 34adf43fc..887882492 100755 --- a/lgsm/functions/update_minecraft.sh +++ b/lgsm/functions/update_minecraft.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM update_minecraft.sh function +# LinuxGSM update_minecraft.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of Minecraft servers. diff --git a/lgsm/functions/update_minecraft_bedrock.sh b/lgsm/functions/update_minecraft_bedrock.sh index 34ada66b3..ae85610da 100644 --- a/lgsm/functions/update_minecraft_bedrock.sh +++ b/lgsm/functions/update_minecraft_bedrock.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM update_minecraft_bedrock.sh function +# LinuxGSM update_minecraft_bedrock.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of Minecraft Bedrock servers. diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index 00ffc5a18..dc2ba9257 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM update_mta.sh function +# LinuxGSM update_mta.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of Multi Theft Auto servers. diff --git a/lgsm/functions/update_mumble.sh b/lgsm/functions/update_mumble.sh index 76ae837f3..2fc54686d 100644 --- a/lgsm/functions/update_mumble.sh +++ b/lgsm/functions/update_mumble.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM update_mumble.sh function +# LinuxGSM update_mumble.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of Mumble servers. diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh index 0733a57d2..85bacb899 100644 --- a/lgsm/functions/update_steamcmd.sh +++ b/lgsm/functions/update_steamcmd.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM update_steamcmd.sh function +# LinuxGSM update_steamcmd.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating using SteamCMD. diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh index b72979ff4..5390379e2 100644 --- a/lgsm/functions/update_ts3.sh +++ b/lgsm/functions/update_ts3.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM command_ts3.sh function +# LinuxGSM command_ts3.sh module # Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of Teamspeak 3 servers. diff --git a/lgsm/functions/update_vintagestory.sh b/lgsm/functions/update_vintagestory.sh index 98568f3ca..2edcf2db5 100755 --- a/lgsm/functions/update_vintagestory.sh +++ b/lgsm/functions/update_vintagestory.sh @@ -1,6 +1,7 @@ #!/bin/bash -# LinuxGSM update_vintagestory.sh function -# Author: Christian Birk +# LinuxGSM update_vintagestory.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib # Website: https://linuxgsm.com # Description: Handles updating of Vintage Story servers. diff --git a/linuxgsm.sh b/linuxgsm.sh index 05287ccc0..c9d85b4f5 100644 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Project: Game Server Managers - LinuxGSM +# Project: Linux Game Server Managers - LinuxGSM # Author: Daniel Gibbs # License: MIT License, Copyright (c) 2020 Daniel Gibbs # Purpose: Linux Game Server Management Script From eed12cac368322172d1750e27f099a1dd47d8121 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 24 Jan 2021 15:18:59 +0000 Subject: [PATCH 037/117] fix(install): fix menu missing first server off list (#3196) --- lgsm/functions/update_minecraft.sh | 0 linuxgsm.sh | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) mode change 100755 => 100644 lgsm/functions/update_minecraft.sh diff --git a/lgsm/functions/update_minecraft.sh b/lgsm/functions/update_minecraft.sh old mode 100755 new mode 100644 diff --git a/linuxgsm.sh b/linuxgsm.sh index c9d85b4f5..f8d1449a0 100644 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -338,11 +338,11 @@ if [ "${shortname}" == "core" ]; then if [ "${userinput}" == "list" ]||[ "${userinput}" == "l" ]; then { - tail -n +2 "${serverlist}" | awk -F "," '{print $2 "\t" $3}' + tail -n +1 "${serverlist}" | awk -F "," '{print $2 "\t" $3}' } | column -s $'\t' -t | more exit elif [ "${userinput}" == "install" ]||[ "${userinput}" == "i" ]; then - tail -n +2 "${serverlist}" | awk -F "," '{print $1 "," $2 "," $3}' > "${serverlistmenu}" + tail -n +1 "${serverlist}" | awk -F "," '{print $1 "," $2 "," $3}' > "${serverlistmenu}" fn_install_menu result "LinuxGSM" "Select game server to install." "${serverlistmenu}" userinput="${result}" fn_server_info From 87491161d4252fac0b66a431d0b3ad0f34f93e42 Mon Sep 17 00:00:00 2001 From: H3o66 Date: Wed, 13 Jan 2021 22:56:11 +0100 Subject: [PATCH 038/117] feat(arma3): change binary to 64bit --- lgsm/config-default/config-lgsm/arma3server/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/arma3server/_default.cfg b/lgsm/config-default/config-lgsm/arma3server/_default.cfg index 0ed5d0c25..26cbd8d93 100644 --- a/lgsm/config-default/config-lgsm/arma3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/arma3server/_default.cfg @@ -173,7 +173,7 @@ glibc="2.13" ## Game Server Directories systemdir="${serverfiles}" executabledir="${serverfiles}" -executable="./arma3server" +executable="./arma3server_64" servercfgdir="${systemdir}/cfg" servercfg="${selfname}.server.cfg" servercfgdefault="server.cfg" From e1293964ee1eb0d444dbc09c61c4b6e07c602aad Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 24 Jan 2021 20:07:12 +0000 Subject: [PATCH 039/117] review and tidy up of various _default.cfg files --- .../config-lgsm/ahl2server/_default.cfg | 19 ++-- .../config-lgsm/avserver/_default.cfg | 7 +- .../config-lgsm/bt1944server/_default.cfg | 1 + .../config-lgsm/cmwserver/_default.cfg | 2 +- .../config-lgsm/ecoserver/_default.cfg | 4 +- .../config-lgsm/inssserver/_default.cfg | 1 - .../config-lgsm/jc3server/_default.cfg | 1 - .../config-lgsm/jk2server/_default.cfg | 68 ++++++++------- .../config-lgsm/kf2server/_default.cfg | 1 + .../config-lgsm/momserver/_default.cfg | 4 + .../config-lgsm/mumbleserver/_default.cfg | 1 - .../config-lgsm/scpslserver/_default.cfg | 86 +++++++++++-------- .../config-lgsm/scpslsmserver/_default.cfg | 86 +++++++++++-------- .../config-lgsm/solserver/_default.cfg | 5 ++ .../config-lgsm/ut3server/_default.cfg | 2 +- .../config-lgsm/vintsserver/_default.cfg | 4 +- .../config-lgsm/wfserver/_default.cfg | 25 +++--- .../config-lgsm/wurmserver/_default.cfg | 3 + 18 files changed, 185 insertions(+), 135 deletions(-) diff --git a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg index a3810daed..12d745236 100644 --- a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg @@ -113,6 +113,16 @@ ansi="on" ## Message Display Time | https://docs.linuxgsm.com/features/message-display-time sleeptime="0.5" +## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd +# Server appid +appid="985050" +steamcmdforcewindows="no" +# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch +branch="" +betapassword="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="true" + ## Stop Mode | https://docs.linuxgsm.com/features/stop-mode # 1: tmux kill # 2: CTRL+c @@ -136,15 +146,6 @@ stopmode="3" querymode="2" querytype="protocol-valve" -## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd -# Server appid -appid="985050" -steamcmdforcewindows="no" -# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch -branch="" -betapassword="" -# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server -steammaster="true" ## Console type consoleverbose="yes" diff --git a/lgsm/config-default/config-lgsm/avserver/_default.cfg b/lgsm/config-default/config-lgsm/avserver/_default.cfg index 2cfa69d1c..7ac71d77d 100644 --- a/lgsm/config-default/config-lgsm/avserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/avserver/_default.cfg @@ -17,7 +17,6 @@ if [ -n "${adminsteamid}" ]; then fi ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters - startparameters="--galaxy-name ${selfname} --ip ${ip} --datapath ${avdatapath} ${admincmd}" #### LinuxGSM Settings #### @@ -27,6 +26,7 @@ startparameters="--galaxy-name ${selfname} --ip ${ip} --datapath ${avdatapath} $ # https://docs.linuxgsm.com/configuration/linuxgsm-stats # (on|off) stats="off" + ## Notification Alerts # (on|off) @@ -108,6 +108,7 @@ ansi="on" ## Message Display Time | https://docs.linuxgsm.com/features/message-display-time sleeptime="0.5" + ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd # Server appid appid="565060" @@ -141,6 +142,10 @@ stopmode="10" querymode="5" querytype="" +## Console type +consoleverbose="yes" +consoleinteract="yes" + ## Game Server Details # Do not edit gamename="Avorion" diff --git a/lgsm/config-default/config-lgsm/bt1944server/_default.cfg b/lgsm/config-default/config-lgsm/bt1944server/_default.cfg index 7f066accf..4514c1189 100644 --- a/lgsm/config-default/config-lgsm/bt1944server/_default.cfg +++ b/lgsm/config-default/config-lgsm/bt1944server/_default.cfg @@ -160,6 +160,7 @@ servercfgdir="${systemdir}/Saved/Config/LinuxServer" servercfg="${selfname}.ini" servercfgdefault="DefaultGame.ini" servercfgfullpath="${servercfgdir}/${servercfg}" + ## Backup Directory backupdir="${lgsmdir}/backup" diff --git a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg index cb259c2a9..931b2e6f2 100644 --- a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg @@ -14,7 +14,6 @@ port="7777" queryport="7779" defaultmap="AOCTD-Frigid_p" - ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters startparameters="${defaultmap}?steamsockets -multihome=${ip} -Port=${port} -QueryPort=${queryport} -seekfreeloadingserver -configsubdir=${gamelogdir} -log=${gamelog}" @@ -153,6 +152,7 @@ glibc="2.15" #### Directories #### # Edit with care + ## Game Server Directories systemdir="${serverfiles}" executabledir="${systemdir}/Binaries/Linux" diff --git a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg index f929b64d9..88cecaa41 100644 --- a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg @@ -135,8 +135,8 @@ querymode="1" querytype="" ## Console type -consoleverbose="" -consoleinteract="" +consoleverbose="yes" +consoleinteract="no" ## Game Server Details # Do not edit diff --git a/lgsm/config-default/config-lgsm/inssserver/_default.cfg b/lgsm/config-default/config-lgsm/inssserver/_default.cfg index b89d446ba..dd7a908c4 100644 --- a/lgsm/config-default/config-lgsm/inssserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/inssserver/_default.cfg @@ -19,7 +19,6 @@ maxplayers="28" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters ## Parameter Docs | https://sandstorm-support.newworldinteractive.com/hc/en-us/articles/360049211072-Server-Admin-Guide -# To allows serverpassword to work with parameters edit as follows startparameters="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -log" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/jc3server/_default.cfg b/lgsm/config-default/config-lgsm/jc3server/_default.cfg index b671533de..9560dd01f 100644 --- a/lgsm/config-default/config-lgsm/jc3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jc3server/_default.cfg @@ -161,7 +161,6 @@ backupdir="${lgsmdir}/backup" ## Logging Directories logdir="${rootdir}/log" -#gamelogdir="" # No server logs available lgsmlogdir="${logdir}/script" consolelogdir="${logdir}/console" lgsmlog="${lgsmlogdir}/${selfname}-script.log" diff --git a/lgsm/config-default/config-lgsm/jk2server/_default.cfg b/lgsm/config-default/config-lgsm/jk2server/_default.cfg index fdb3317e8..30636ab12 100644 --- a/lgsm/config-default/config-lgsm/jk2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jk2server/_default.cfg @@ -1,27 +1,33 @@ ################################## ######## Default Settings ######## ################################## -# DO NOT EDIT WILL BE OVERWRITTEN! -# Copy settings from here and use them in either -# common.cfg - applies settings to every instance -# [instance].cfg - applies settings to a specific instance +# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! +# Copy settings from here and use them in either: +# common.cfg - applies settings to every instance. +# [instance].cfg - applies settings to a specific instance. -#### Server Settings #### +#### Game Server Settings #### ## SteamCMD Login | https://docs.linuxgsm.com/steamcmd#steamcmd-login steamuser="username" steampass='password' -## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters +## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters ip="0.0.0.0" port="27960" defaultmap="ffa_bespin" -## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}" #### LinuxGSM Settings #### +## LinuxGSM Stats +# Send useful stats to LinuxGSM developers. +# https://docs.linuxgsm.com/configuration/linuxgsm-stats +# (on|off) +stats="off" + ## Notification Alerts # (on|off) @@ -35,10 +41,6 @@ postalert="off" discordalert="off" discordwebhook="webhook" -# Slack Alerts | https://docs.linuxgsm.com/alerts/slack -slackalert="off" -slackwebhook="webhook" - # Email Alerts | https://docs.linuxgsm.com/alerts/email emailalert="off" email="email@example.com" @@ -72,6 +74,10 @@ rocketchatalert="off" rocketchatwebhook="webhook" rocketchattoken="" +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" + # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". @@ -96,15 +102,25 @@ logdays="7" # Query delay time querydelay="1" -#### LinuxGSM Advanced Settings #### - -# ANSI Colors +## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors ansi="on" -# Message Display Time +#### Advanced Settings #### + +## Message Display Time | https://docs.linuxgsm.com/features/message-display-time sleeptime="0.5" -# Stop Mode | https://docs.linuxgsm.com/steamcmd/stopmode +## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd +# Server appid +appid="6030" +steamcmdforcewindows="yes" +# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch +branch="" +betapassword="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="true" + +## Stop Mode | https://docs.linuxgsm.com/features/stop-mode # 1: tmux kill # 2: CTRL+c # 3: quit @@ -113,8 +129,9 @@ sleeptime="0.5" # 6: q # 7: exit # 8: 7 Days to Die -# 9: Gold Source -# 10: Teamspeak 3 +# 9: GoldSrc +# 10: Avorion +# 11: end stopmode="3" ## Query mode @@ -130,16 +147,7 @@ querytype="protocol-quake3" consoleverbose="yes" consoleinteract="yes" -## SteamCMD Settings -# Server appid -appid="6030" -steamcmdforcewindows="yes" -# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch -branch="" -# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server -steammaster="true" - -## LinuxGSM Server Details +## Game Server Details # Do not edit gamename="Jedi Knight II: Jedi Outcast" engine="idtech3" @@ -148,7 +156,7 @@ glibc="2.15" #### Directories #### # Edit with care -## Server Specific Directories +## Game Server Directories systemdir="${serverfiles}/GameData" executabledir="${systemdir}" executable="./jk2mvded" @@ -158,7 +166,7 @@ servercfgdir="${systemdir}" servercfgfullpath="${servercfgdir}/${servercfg}" ## Backup Directory -backupdir="${rootdir}/backups" +backupdir="${lgsmdir}/backups" ## Logging Directories logdir="${rootdir}/log" diff --git a/lgsm/config-default/config-lgsm/kf2server/_default.cfg b/lgsm/config-default/config-lgsm/kf2server/_default.cfg index 2c2770394..326656d63 100644 --- a/lgsm/config-default/config-lgsm/kf2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/kf2server/_default.cfg @@ -152,6 +152,7 @@ glibc="2.3.2" #### Directories #### # Edit with care + ## Game Server Directories systemdir="${serverfiles}" executabledir="${systemdir}/Binaries/Win64" diff --git a/lgsm/config-default/config-lgsm/momserver/_default.cfg b/lgsm/config-default/config-lgsm/momserver/_default.cfg index d5df8fd59..e4df7a616 100644 --- a/lgsm/config-default/config-lgsm/momserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/momserver/_default.cfg @@ -140,6 +140,10 @@ stopmode="2" querymode="1" querytype="" +## Console type +consoleverbose="yes" +consoleinteract="no" + ## Game Server Details # Do not edit gamename="Memories of Mars" diff --git a/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg b/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg index bfe847135..e76076608 100644 --- a/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg @@ -151,7 +151,6 @@ backupdir="${lgsmdir}/backup" ## Logging Directories logdir="${rootdir}/log" -#gamelogdir="" # No server logs available lgsmlogdir="${logdir}/script" consolelogdir="${logdir}/console" lgsmlog="${lgsmlogdir}/${selfname}-script.log" diff --git a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg index aa4ac41bc..218b1cda9 100644 --- a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg @@ -1,25 +1,29 @@ ################################## ######## Default Settings ######## ################################## -# DO NOT EDIT WILL BE OVERWRITTEN! -# Copy settings from here and use them in either -# common.cfg - applies settings to every instance -# [instance].cfg - applies settings to a specific instance +# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! +# Copy settings from here and use them in either: +# common.cfg - applies settings to every instance. +# [instance].cfg - applies settings to a specific instance. -#### Server Settings #### +#### Game Server Settings #### -## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters +## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters ## All server settings except the server port are done in the config file: ## Docs: https://en.scpslgame.com/index.php?title=Docs:Server_Config port="7777" -## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="${port}" -} +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +startparameters="${port}" #### LinuxGSM Settings #### +## LinuxGSM Stats +# Send useful stats to LinuxGSM developers. +# https://docs.linuxgsm.com/configuration/linuxgsm-stats +# (on|off) +stats="off" + ## Notification Alerts # (on|off) @@ -33,10 +37,6 @@ postalert="off" discordalert="off" discordwebhook="webhook" -# Slack Alerts | https://docs.linuxgsm.com/alerts/slack -slackalert="off" -slackwebhook="webhook" - # Email Alerts | https://docs.linuxgsm.com/alerts/email emailalert="off" email="email@example.com" @@ -49,6 +49,7 @@ iftttevent="linuxgsm_alert" # Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun mailgunalert="off" +mailgunapiregion="us" mailguntoken="accesstoken" mailgundomain="example.com" mailgunemailfrom="alert@example.com" @@ -62,11 +63,20 @@ channeltag="" # Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover pushoveralert="off" pushovertoken="accesstoken" +pushoveruserkey="userkey" + +# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat +rocketchatalert="off" +rocketchatwebhook="webhook" +rocketchattoken="" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram -# You can add a custom cURL string eg proxy (useful in Russia) or else in "curlcustomstring". -# like a "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help", if you not need -# any custom string in curl - simple ignore this parameter. +# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". +# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". telegramalert="off" telegramtoken="accesstoken" telegramchatid="" @@ -88,15 +98,25 @@ logdays="7" # Query delay time querydelay="1" -#### LinuxGSM Advanced Settings #### - -# ANSI Colors +## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors ansi="on" -# Message Display Time +#### Advanced Settings #### + +## Message Display Time | https://docs.linuxgsm.com/features/message-display-time sleeptime="0.5" -# Stop Mode | https://docs.linuxgsm.com/steamcmd/stopmode +## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd +# Server appid +appid="996560" +steamcmdforcewindows="no" +# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch +branch="" +betapassword="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="false" + +## Stop Mode | https://docs.linuxgsm.com/features/stop-mode # 1: tmux kill # 2: CTRL+c # 3: quit @@ -105,13 +125,14 @@ sleeptime="0.5" # 6: q # 7: exit # 8: 7 Days to Die -# 9: Gold Source -# 10: Teamspeak 3 +# 9: GoldSrc +# 10: Avorion +# 11: end stopmode="7" ## Query mode # 1: session only -# 2: gamedig + gsquery +# 2: gamedig (gsquery fallback) # 3: gamedig # 4: gsquery # 5: tcp @@ -122,16 +143,7 @@ querytype="" consoleverbose="yes" consoleinteract="yes" -## SteamCMD Settings -# Server appid -appid="996560" -steamcmdforcewindows="no" -# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch -branch="" -# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server -steammaster="" - -## LinuxGSM Server Details +## Game Server Details # Do not edit gamename="SCP: Secret Laboratory" engine="unity3d" @@ -140,7 +152,7 @@ glibc="2.27" #### Directories #### # Edit with care -## Server Specific Directories +## Game Server Directories systemdir="${serverfiles}" executabledir="${systemdir}" executable="./LocalAdmin" @@ -150,7 +162,7 @@ servercfgdir="${HOME}/.config/SCP Secret Laboratory/config/${port}" servercfgfullpath="${servercfgdir}/${servercfg}" ## Backup Directory -backupdir="${rootdir}/backups" +backupdir="${lgsmdir}/backup" ## Logging Directories logdir="${rootdir}/log" diff --git a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg index 0180753a8..65afedf71 100644 --- a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg @@ -1,25 +1,29 @@ ################################## ######## Default Settings ######## ################################## -# DO NOT EDIT WILL BE OVERWRITTEN! -# Copy settings from here and use them in either -# common.cfg - applies settings to every instance -# [instance].cfg - applies settings to a specific instance +# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! +# Copy settings from here and use them in either: +# common.cfg - applies settings to every instance. +# [instance].cfg - applies settings to a specific instance. -#### Server Settings #### +#### Game Server Settings #### -## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters +## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters ## All server settings except the server port are done in the config file: ## Docs: https://en.scpslgame.com/index.php?title=Docs:Server_Config port="7777" -## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="${port}" -} +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +startparameters="${port}" #### LinuxGSM Settings #### +## LinuxGSM Stats +# Send useful stats to LinuxGSM developers. +# https://docs.linuxgsm.com/configuration/linuxgsm-stats +# (on|off) +stats="off" + ## Notification Alerts # (on|off) @@ -33,10 +37,6 @@ postalert="off" discordalert="off" discordwebhook="webhook" -# Slack Alerts | https://docs.linuxgsm.com/alerts/slack -slackalert="off" -slackwebhook="webhook" - # Email Alerts | https://docs.linuxgsm.com/alerts/email emailalert="off" email="email@example.com" @@ -49,6 +49,7 @@ iftttevent="linuxgsm_alert" # Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun mailgunalert="off" +mailgunapiregion="us" mailguntoken="accesstoken" mailgundomain="example.com" mailgunemailfrom="alert@example.com" @@ -62,11 +63,20 @@ channeltag="" # Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover pushoveralert="off" pushovertoken="accesstoken" +pushoveruserkey="userkey" + +# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat +rocketchatalert="off" +rocketchatwebhook="webhook" +rocketchattoken="" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram -# You can add a custom cURL string eg proxy (useful in Russia) or else in "curlcustomstring". -# like a "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help", if you not need -# any custom string in curl - simple ignore this parameter. +# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". +# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". telegramalert="off" telegramtoken="accesstoken" telegramchatid="" @@ -88,15 +98,25 @@ logdays="7" # Query delay time querydelay="1" -#### LinuxGSM Advanced Settings #### - -# ANSI Colors +## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors ansi="on" -# Message Display Time +#### Advanced Settings #### + +## Message Display Time | https://docs.linuxgsm.com/features/message-display-time sleeptime="0.5" -# Stop Mode | https://docs.linuxgsm.com/steamcmd/stopmode +## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd +# Server appid +appid="786920" +steamcmdforcewindows="no" +# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch +branch="" +betapassword="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="false" + +## Stop Mode | https://docs.linuxgsm.com/features/stop-mode # 1: tmux kill # 2: CTRL+c # 3: quit @@ -105,13 +125,14 @@ sleeptime="0.5" # 6: q # 7: exit # 8: 7 Days to Die -# 9: Gold Source -# 10: Teamspeak 3 +# 9: GoldSrc +# 10: Avorion +# 11: end stopmode="7" ## Query mode # 1: session only -# 2: gamedig + gsquery +# 2: gamedig (gsquery fallback) # 3: gamedig # 4: gsquery # 5: tcp @@ -122,16 +143,7 @@ querytype="" consoleverbose="yes" consoleinteract="yes" -## SteamCMD Settings -# Server appid -appid="786920" -steamcmdforcewindows="no" -# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch -branch="" -# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server -steammaster="" - -## LinuxGSM Server Details +## Game Server Details # Do not edit gamename="SCP: Secret Laboratory ServerMod" engine="unity3d" @@ -140,7 +152,7 @@ glibc="2.27" #### Directories #### # Edit with care -## Server Specific Directories +## Game Server Directories systemdir="${serverfiles}" executabledir="${systemdir}" executable="./LocalAdmin" @@ -150,7 +162,7 @@ servercfgdir="${HOME}/.config/SCP Secret Laboratory/config/${port}" servercfgfullpath="${servercfgdir}/${servercfg}" ## Backup Directory -backupdir="${rootdir}/backups" +backupdir="${lgsmdir}/backup" ## Logging Directories logdir="${rootdir}/log" diff --git a/lgsm/config-default/config-lgsm/solserver/_default.cfg b/lgsm/config-default/config-lgsm/solserver/_default.cfg index b1da65c26..65a5275e1 100644 --- a/lgsm/config-default/config-lgsm/solserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/solserver/_default.cfg @@ -81,6 +81,9 @@ telegramtoken="accesstoken" telegramchatid="" curlcustomstring="" +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + ## Backup | https://docs.linuxgsm.com/commands/backup maxbackups="4" maxbackupdays="30" @@ -109,6 +112,8 @@ steamcmdforcewindows="no" # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch branch="" betapassword="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="false" ## Stop Mode | https://docs.linuxgsm.com/features/stop-mode # 1: tmux kill diff --git a/lgsm/config-default/config-lgsm/ut3server/_default.cfg b/lgsm/config-default/config-lgsm/ut3server/_default.cfg index 90469ffa5..35a367316 100644 --- a/lgsm/config-default/config-lgsm/ut3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ut3server/_default.cfg @@ -28,7 +28,7 @@ gsusername="" gspassword="" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -# Edit with care | List of game types and mutators: https://docs.linuxgsm.com/game-servers/unreal-tournament-3 +# List of game types and mutators: https://docs.linuxgsm.com/game-servers/unreal-tournament-3 startparameters="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?Mutator=${mutators}?ConfigSubDir=${selfname} -login=${gsusername} -password=${gspassword} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}" #### LinuxGSM Settings #### diff --git a/lgsm/config-default/config-lgsm/vintsserver/_default.cfg b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg index e23baf8af..a9cf38e5a 100644 --- a/lgsm/config-default/config-lgsm/vintsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg @@ -9,9 +9,7 @@ #### Game Server Settings #### ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -fn_parms(){ -parms="--datapath ${servercfgdir}" -} +startparameters="--datapath ${servercfgdir}" ## Release Settings | https://docs.linuxgsm.com/game-servers/vintagestory#release-settings # Branch (stable|unstable) diff --git a/lgsm/config-default/config-lgsm/wfserver/_default.cfg b/lgsm/config-default/config-lgsm/wfserver/_default.cfg index ef9964c28..07f18ef10 100644 --- a/lgsm/config-default/config-lgsm/wfserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wfserver/_default.cfg @@ -82,6 +82,9 @@ telegramtoken="accesstoken" telegramchatid="" curlcustomstring="" +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + ## Backup | https://docs.linuxgsm.com/commands/backup maxbackups="4" maxbackupdays="30" @@ -103,6 +106,17 @@ ansi="on" ## Message Display Time | https://docs.linuxgsm.com/features/message-display-time sleeptime="0.5" +## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd +# Server appid +appid="1136510" +steamcmdforcewindows="no" +appidmod="warfork" +# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch +branch="" +betapassword="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="true" + ## Stop Mode | https://docs.linuxgsm.com/features/stop-mode # 1: tmux kill # 2: CTRL+c @@ -126,17 +140,6 @@ stopmode="3" querymode="2" querytype="protocol-quake3" -## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd -# Server appid -appid="1136510" -steamcmdforcewindows="no" -appidmod="warfork" -# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch -branch="" -betapassword="" -# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server -steammaster="true" - ## Console type consoleverbose="yes" consoleinteract="yes" diff --git a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg index 5d5ba9790..1943f3611 100644 --- a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg @@ -78,6 +78,9 @@ telegramtoken="accesstoken" telegramchatid="" curlcustomstring="" +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + ## Backup | https://docs.linuxgsm.com/commands/backup maxbackups="4" maxbackupdays="30" From 043caa8ea5c4d14ce14170e4e4cd0cd266ea9283 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 16 Jan 2021 15:51:34 +0000 Subject: [PATCH 040/117] fix(update): non-steam updates to not always require restarting if stopped (#3173) --- lgsm/functions/update_factorio.sh | 14 ++++++++------ lgsm/functions/update_jediknight2.sh | 18 ++++++++++-------- lgsm/functions/update_minecraft.sh | 13 ++++++++----- lgsm/functions/update_minecraft_bedrock.sh | 14 +++++++++----- lgsm/functions/update_mta.sh | 14 +++++++++----- lgsm/functions/update_mumble.sh | 13 ++++++++----- lgsm/functions/update_ts3.sh | 14 +++++++++----- lgsm/functions/update_vintagestory.sh | 14 ++++++++------ 8 files changed, 69 insertions(+), 45 deletions(-) diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index 0c93aa93f..0886a0a0e 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -95,12 +95,14 @@ fn_update_factorio_compare(){ if [ "${status}" == "0" ]; then exitbypass=1 fn_update_factorio_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - command_stop.sh - fn_firstcommand_reset + if [ "${requirerestart}" == "1" ]; then + exitbypass=1 + command_start.sh + fn_firstcommand_reset + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + fi # If server started. else fn_print_restart_warning diff --git a/lgsm/functions/update_jediknight2.sh b/lgsm/functions/update_jediknight2.sh index 469a3ee18..770002254 100644 --- a/lgsm/functions/update_jediknight2.sh +++ b/lgsm/functions/update_jediknight2.sh @@ -5,9 +5,7 @@ # Website: https://linuxgsm.com # Description: Handles updating of jk2 servers. -local commandname="UPDATE" -local commandaction="Update" -local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" fn_update_jk2_dl(){ fn_fetch_file "https://github.com/mvdevs/jk2mv/releases/download/${remotebuild}/jk2mv-v${remotebuild}-dedicated.zip" "" "" "" "${tmpdir}" "jk2mv-${remotebuild}-dedicated.zip" "" "norun" "noforce" "nomd5" @@ -31,6 +29,7 @@ fn_update_jk2_localbuild(){ fn_print_dots "Checking local build: ${remotelocation}" # Uses log file to gather info. # Log is generated and cleared on startup but filled on shutdown. + requirerestart=1 localbuild=$(grep "\"version\"" "${consolelogdir}"/* 2>/dev/null | sed 's/.*://' | awk '{print $1}' | head -n 1) if [ -z "${localbuild}" ]; then fn_print_error "Checking local build: ${remotelocation}" @@ -119,11 +118,14 @@ fn_update_jk2_compare(){ if [ "${status}" == "0" ]; then exitbypass=1 fn_update_jk2_dl - exitbypass=1 - command_start.sh - exitbypass=1 - command_stop.sh - fn_firstcommand_reset + if [ "${requirerestart}" == "1" ]; then + exitbypass=1 + command_start.sh + fn_firstcommand_reset + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + fi # If server started. else fn_print_restart_warning diff --git a/lgsm/functions/update_minecraft.sh b/lgsm/functions/update_minecraft.sh index 887882492..ef4a29a97 100644 --- a/lgsm/functions/update_minecraft.sh +++ b/lgsm/functions/update_minecraft.sh @@ -104,11 +104,14 @@ fn_update_minecraft_compare(){ if [ "${status}" == "0" ]; then exitbypass=1 fn_update_minecraft_dl - exitbypass=1 - command_start.sh - exitbypass=1 - command_stop.sh - fn_firstcommand_reset + if [ "${requirerestart}" == "1" ]; then + exitbypass=1 + command_start.sh + fn_firstcommand_reset + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + fi # If server started. else fn_print_restart_warning diff --git a/lgsm/functions/update_minecraft_bedrock.sh b/lgsm/functions/update_minecraft_bedrock.sh index ae85610da..f109a52e3 100644 --- a/lgsm/functions/update_minecraft_bedrock.sh +++ b/lgsm/functions/update_minecraft_bedrock.sh @@ -35,6 +35,7 @@ fn_update_minecraft_localbuild(){ fn_print_dots "Checking local build: ${remotelocation}" # Uses log file to gather info. # Log is generated and cleared on startup but filled on shutdown. + requirerestart=1 localbuild=$(grep Version "${consolelogdir}"/* 2>/dev/null | tail -1 | sed 's/.*Version //') if [ -z "${localbuild}" ]; then fn_print_error "Checking local build: ${remotelocation}" @@ -123,11 +124,14 @@ fn_update_minecraft_compare(){ if [ "${status}" == "0" ]; then exitbypass=1 fn_update_minecraft_dl - exitbypass=1 - command_start.sh - exitbypass=1 - command_stop.sh - fn_firstcommand_reset + if [ "${requirerestart}" == "1" ]; then + exitbypass=1 + command_start.sh + fn_firstcommand_reset + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + fi # If server started. else fn_print_restart_warning diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index dc2ba9257..96afd298f 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -31,6 +31,7 @@ fn_update_mta_localbuild(){ fn_print_dots "Checking local build: ${remotelocation}" # Uses log file to gather info. # Gives time for log file to generate. + requirerestart=1 if [ ! -f "${serverfiles}/mods/deathmatch/logs/server.log" ]; then fn_print_error "Checking local build: ${remotelocation}" fn_print_error_nl "Checking local build: ${remotelocation}: no log files containing version info" @@ -152,11 +153,14 @@ fn_update_mta_compare(){ if [ "${status}" == "0" ]; then exitbypass=1 fn_update_mta_dl - exitbypass=1 - command_start.sh - exitbypass=1 - command_stop.sh - fn_firstcommand_reset + if [ "${requirerestart}" == "1" ]; then + exitbypass=1 + command_start.sh + fn_firstcommand_reset + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + fi # If server started. else fn_print_restart_warning diff --git a/lgsm/functions/update_mumble.sh b/lgsm/functions/update_mumble.sh index 2fc54686d..d23f8ed36 100644 --- a/lgsm/functions/update_mumble.sh +++ b/lgsm/functions/update_mumble.sh @@ -88,11 +88,14 @@ fn_update_mumble_compare(){ if [ "${status}" == "0" ]; then exitbypass=1 fn_update_mumble_dl - exitbypass=1 - command_start.sh - exitbypass=1 - command_stop.sh - fn_firstcommand_reset + if [ "${requirerestart}" == "1" ]; then + exitbypass=1 + command_start.sh + fn_firstcommand_reset + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + fi # If server started. else fn_print_restart_warning diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh index 5390379e2..94a56a707 100644 --- a/lgsm/functions/update_ts3.sh +++ b/lgsm/functions/update_ts3.sh @@ -35,6 +35,7 @@ fn_update_ts3_localbuild(){ fn_print_dots "Checking local build: ${remotelocation}" # Uses log file to gather info. # Gives time for log file to generate. + requirerestart=1 if [ ! -d "${serverfiles}/logs" ]||[ -z "$(find "${serverfiles}/logs/"* -name 'ts3server*_0.log' 2> /dev/null)" ]; then fn_print_error "Checking local build: ${remotelocation}" fn_print_error_nl "Checking local build: ${remotelocation}: no log files containing version info" @@ -150,11 +151,14 @@ fn_update_ts3_compare(){ if [ "${status}" == "0" ]; then exitbypass=1 fn_update_ts3_dl - exitbypass=1 - command_start.sh - exitbypass=1 - command_stop.sh - fn_firstcommand_reset + if [ "${requirerestart}" == "1" ]; then + exitbypass=1 + command_start.sh + fn_firstcommand_reset + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + fi # If server started. else fn_print_restart_warning diff --git a/lgsm/functions/update_vintagestory.sh b/lgsm/functions/update_vintagestory.sh index 2edcf2db5..b2231c66e 100755 --- a/lgsm/functions/update_vintagestory.sh +++ b/lgsm/functions/update_vintagestory.sh @@ -88,11 +88,14 @@ fn_update_vs_compare(){ if [ "${status}" == "0" ]; then exitbypass=1 fn_update_vs_dl - exitbypass=1 - command_start.sh - exitbypass=1 - command_stop.sh - fn_firstcommand_reset + if [ "${requirerestart}" == "1" ]; then + exitbypass=1 + command_start.sh + fn_firstcommand_reset + exitbypass=1 + command_stop.sh + fn_firstcommand_reset + fi # If server started. else fn_print_restart_warning @@ -131,7 +134,6 @@ fn_update_vs_compare(){ # The location where the builds are checked and downloaded. remotelocation="vintagestory.at" apiurl="http://api.${remotelocation}/stable-unstable.json" -localversionfile="${datadir}/vintagestoryversion" if [ "${firstcommandname}" == "INSTALL" ]; then fn_update_vs_remotebuild From 25d344f5fc6247ee1000c131d37ad95fa0314051 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 27 Jan 2021 20:43:11 +0000 Subject: [PATCH 041/117] Release 21.1.0 --- lgsm/functions/core_functions.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 7ae5824d3..8cb3d518d 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v20.6.2" +modulesversion="v21.1.0" # Core diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index 55a05f99f..0aa3f5a24 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.2" +version="v21.1.0" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 2eb1815f3..20d022a50 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.2" +version="v21.1.0" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index 8797e78e8..181a38f4d 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.2" +version="v21.1.0" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 3883d8dc2..b7a56d785 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.2" +version="v21.1.0" shortname="ts3" gameservername="ts3server" commandname="CORE" From d82cc915a6d5a531c29da93d39965c8c64084127 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 27 Jan 2021 22:16:03 +0000 Subject: [PATCH 042/117] Release v21.1.0 --- linuxgsm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linuxgsm.sh b/linuxgsm.sh index f8d1449a0..54a765dd4 100644 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v20.6.2" +version="v21.1.0" shortname="core" gameservername="core" commandname="CORE" From 0242ecaa4d11f9bc81ce80cfd90ad45f9f463c2e Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 28 Jan 2021 22:30:38 +0100 Subject: [PATCH 043/117] fix(arma3): fix binary name (#3205) --- lgsm/config-default/config-lgsm/arma3server/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/arma3server/_default.cfg b/lgsm/config-default/config-lgsm/arma3server/_default.cfg index 26cbd8d93..8a5ed9107 100644 --- a/lgsm/config-default/config-lgsm/arma3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/arma3server/_default.cfg @@ -173,7 +173,7 @@ glibc="2.13" ## Game Server Directories systemdir="${serverfiles}" executabledir="${serverfiles}" -executable="./arma3server_64" +executable="./arma3server_x64" servercfgdir="${systemdir}/cfg" servercfg="${selfname}.server.cfg" servercfgdefault="server.cfg" From ab300a89c078020eb00f4695f40873b8a8bc3d30 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 28 Jan 2021 22:31:33 +0100 Subject: [PATCH 044/117] fix(vints): correct log dir (#3207) --- lgsm/config-default/config-lgsm/vintsserver/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/vintsserver/_default.cfg b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg index a9cf38e5a..f1845102b 100644 --- a/lgsm/config-default/config-lgsm/vintsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg @@ -156,7 +156,7 @@ backupdir="${lgsmdir}/backup" ## Logging Directories logdir="${rootdir}/log" -gamelogdir="${vsdataworld}/Logs" +gamelogdir="${servercfgdir}/Logs" lgsmlogdir="${logdir}/script" consolelogdir="${logdir}/console" lgsmlog="${lgsmlogdir}/${selfname}-script.log" From b57cf8b9b8f3558707bd31e0c4accc6c3e817bfa Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 28 Jan 2021 21:44:44 +0000 Subject: [PATCH 045/117] Release v21.1.1 --- lgsm/functions/core_functions.sh | 2 +- linuxgsm.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 8cb3d518d..88ee01a5f 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v21.1.0" +modulesversion="v21.1.1" # Core diff --git a/linuxgsm.sh b/linuxgsm.sh index 54a765dd4..2717977b7 100644 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.0" +version="v21.1.1" shortname="core" gameservername="core" commandname="CORE" diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index 0aa3f5a24..e60e9b212 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.0" +version="v21.1.1" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 20d022a50..ef4642a2b 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.0" +version="v21.1.1" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index 181a38f4d..72b9dfca2 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.0" +version="v21.1.1" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index b7a56d785..d63738602 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.0" +version="v21.1.1" shortname="ts3" gameservername="ts3server" commandname="CORE" From 419d74b831ed893a3f2488c9259d749d2fa4ec58 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 5 Feb 2021 16:02:28 +0000 Subject: [PATCH 046/117] feat(newserver): Valheim (#3212) Co-authored-by: Alasdair Haig Co-authored-by: Alasdair Haig Co-authored-by: AlasdairHaig --- .../config-lgsm/vhserver/_default.cfg | 178 ++++++++++++++++++ lgsm/data/serverlist.csv | 1 + lgsm/functions/core_functions.sh | 5 + lgsm/functions/core_steamcmd.sh | 0 lgsm/functions/fix.sh | 2 + lgsm/functions/fix_vh.sh | 9 + lgsm/functions/info_messages.sh | 43 +++-- linuxgsm.sh | 0 8 files changed, 222 insertions(+), 16 deletions(-) create mode 100644 lgsm/config-default/config-lgsm/vhserver/_default.cfg mode change 100644 => 100755 lgsm/functions/core_steamcmd.sh create mode 100755 lgsm/functions/fix_vh.sh mode change 100644 => 100755 linuxgsm.sh diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg new file mode 100644 index 000000000..d6e839c37 --- /dev/null +++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg @@ -0,0 +1,178 @@ +################################## +######## Default Settings ######## +################################## +# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! +# Copy settings from here and use them in either: +# common.cfg - applies settings to every instance. +# [instance].cfg - applies settings to a specific instance. + +#### Game Server Settings #### + +## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters +servername="Valheim Server" +serverpassword="" +port="2456" +gameworld="${selfname}" +public="1" + +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +startparameters="-name ${servername} -password ${serverpassword} -port ${port} -world ${gameworld} -public ${public}" + +#### LinuxGSM Settings #### + +## LinuxGSM Stats +# Send useful stats to LinuxGSM developers. +# https://docs.linuxgsm.com/configuration/linuxgsm-stats +# (on|off) +stats="off" + +## Notification Alerts +# (on|off) + +# Display IP | https://docs.linuxgsm.com/alerts#display-ip +displayip="" + +# More info | https://docs.linuxgsm.com/alerts#more-info +postalert="off" + +# Discord Alerts | https://docs.linuxgsm.com/alerts/discord +discordalert="off" +discordwebhook="webhook" + +# Email Alerts | https://docs.linuxgsm.com/alerts/email +emailalert="off" +email="email@example.com" +emailfrom="" + +# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt +iftttalert="off" +ifttttoken="accesstoken" +iftttevent="linuxgsm_alert" + +# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun +mailgunalert="off" +mailgunapiregion="us" +mailguntoken="accesstoken" +mailgundomain="example.com" +mailgunemailfrom="alert@example.com" +mailgunemail="email@myemail.com" + +# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover +pushoveralert="off" +pushovertoken="accesstoken" +pushoveruserkey="userkey" + +# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat +rocketchatalert="off" +rocketchatwebhook="webhook" +rocketchattoken="" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" + +# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram +# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". +# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramalert="off" +telegramtoken="accesstoken" +telegramchatid="" +curlcustomstring="" + +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + +## Backup | https://docs.linuxgsm.com/commands/backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://docs.linuxgsm.com/features/logging +consolelogging="on" +logdays="7" + +## Monitor | https://docs.linuxgsm.com/commands/monitor +# Query delay time +querydelay="5" + +## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors +ansi="on" + +#### Advanced Settings #### + +## Message Display Time | https://docs.linuxgsm.com/features/message-display-time +sleeptime="0.5" + +## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd +# Server appid +appid="896660" +steamcmdforcewindows="no" +# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch +branch="" +betapassword="" +# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server +steammaster="false" + +## Stop Mode | https://docs.linuxgsm.com/features/stop-mode +# 1: tmux kill +# 2: CTRL+c +# 3: quit +# 4: quit 120s +# 5: stop +# 6: q +# 7: exit +# 8: 7 Days to Die +# 9: GoldSrc +# 10: Avorion +# 11: end +stopmode="2" + +## Query mode +# 1: session only +# 2: gamedig (gsquery fallback) +# 3: gamedig +# 4: gsquery +# 5: tcp +querymode="1" +querytype="" + +## Console type +consoleverbose="yes" +consoleinteract="no" + +## Game Server Details +# Do not edit +gamename="Valheim" +engine="unity3d" +glibc="2.15" + +#### Directories #### +# Edit with care + +## Game Server Directories +systemdir="${serverfiles}" +executabledir="${serverfiles}" +executable="./valheim_server.x86_64" +serverfiles="${rootdir}/serverfiles" + +## Backup Directory +backupdir="${lgsmdir}/backup" + +## Logging Directories +logdir="${rootdir}/log" +gamelogdir="${systemdir}/Saved/Logs" +lgsmlogdir="${logdir}/script" +consolelogdir="${logdir}/console" +lgsmlog="${lgsmlogdir}/${selfname}-script.log" +consolelog="${consolelogdir}/${selfname}-console.log" +alertlog="${lgsmlogdir}/${selfname}-alert.log" +postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log" + +## Logs Naming +lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" diff --git a/lgsm/data/serverlist.csv b/lgsm/data/serverlist.csv index 79139f680..ec5ae600d 100644 --- a/lgsm/data/serverlist.csv +++ b/lgsm/data/serverlist.csv @@ -105,6 +105,7 @@ ut,utserver,Unreal Tournament ut2k4,ut2k4server,Unreal Tournament 2004 ut3,ut3server,Unreal Tournament 3 ut99,ut99server,Unreal Tournament 99 +vh,vhserver,Valheim vs,vsserver,Vampire Slayer vints,vintsserver,Vintage Story wet,wetserver,Wolfenstein: Enemy Territory diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 88ee01a5f..40844a2c5 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -490,6 +490,11 @@ functionfile="${FUNCNAME[0]}" fn_fetch_function } +fix_vh.sh(){ +functionfile="${FUNCNAME[0]}" +fn_fetch_function +} + fix_wurm.sh(){ functionfile="${FUNCNAME[0]}" fn_fetch_function diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh old mode 100644 new mode 100755 diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index 4418c184f..654ddd391 100755 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -83,6 +83,8 @@ if [ "${commandname}" != "INSTALL" ]&&[ -z "${fixbypass}" ]; then fix_mta.sh elif [ "${shortname}" == "unt" ]; then fix_unt.sh + elif [ "${shortname}" == "vh" ]; then + fix_vh.sh elif [ "${shortname}" == "wurm" ]; then fix_wurm.sh elif [ "${shortname}" == "zmr" ]; then diff --git a/lgsm/functions/fix_vh.sh b/lgsm/functions/fix_vh.sh new file mode 100755 index 000000000..551bd878f --- /dev/null +++ b/lgsm/functions/fix_vh.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# LinuxGSM fix_rust.sh function +# Author: Alasdair Haig +# Website: https://linuxgsm.com +# Description: Resolves startup issue with Valheim + +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" + +export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index ab8e77be4..90aba09dc 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -583,8 +583,8 @@ fn_info_message_ports(){ parmslocation="${servercfgfullpath}" fi done - # engines/games that require editing the parms. - local ports_edit_array=( "Avorion" "col" "goldsrc" "Factorio" "Hurtworld" "iw3.0" "ioquake3" "qfusion" "Rust" "scpsl" "scpslsm" "Soldat" "spark" "source" "starbound" "unreal4" "realvirtuality" "Unturned" ) + # engines/games that require editing the start parameters. + local ports_edit_array=( "Avorion" "col" "goldsrc" "Factorio" "Hurtworld" "iw3.0" "ioquake3" "qfusion" "Rust" "scpsl" "scpslsm" "Soldat" "spark" "source" "starbound" "unreal4" "realvirtuality" "Unturned" "vh" ) for port_edit in "${ports_edit_array[@]}"; do if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]||[ "${shortname}" == "${port_edit}" ]; then parmslocation="${configdirserver}" @@ -1341,6 +1341,15 @@ fn_info_message_ut(){ } | column -s $'\t' -t } +fn_info_message_vh(){ + echo -e "netstat -atunp | grep valheim" + echo -e "" + { + echo -e "${lightblue}DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL${default}" + echo -e "> Game\tINBOUND\t${port}\tudp" + } | column -s $'\t' -t +} + fn_info_message_kf2(){ fn_info_message_password_strip echo -e "netstat -atunp | grep KFGame" @@ -1486,6 +1495,10 @@ fn_info_message_select_engine(){ fn_info_message_avorion elif [ "${shortname}" == "arma3" ]; then fn_info_message_arma3 + elif [ "${shortname}" == "bf1942" ]; then + fn_info_message_bf1942 + elif [ "${shortname}" == "bfv" ]; then + fn_info_message_bfv elif [ "${shortname}" == "bo" ]; then fn_info_message_ballisticoverkill elif [ "${shortname}" == "bt" ]; then @@ -1526,8 +1539,18 @@ fn_info_message_select_engine(){ fn_info_message_justcause3 elif [ "${shortname}" == "kf2" ]; then fn_info_message_kf2 + elif [ "${shortname}" == "mc" ]; then + fn_info_message_minecraft elif [ "${shortname}" == "mcb" ]; then fn_info_message_minecraft_bedrock + elif [ "${shortname}" == "mh" ]; then + fn_info_message_mordhau + elif [ "${shortname}" == "mohaa" ]; then + fn_info_message_mohaa + elif [ "${shortname}" == "mta" ]; then + fn_info_message_mta + elif [ "${shortname}" == "mumble" ]; then + fn_info_message_mumble elif [ "${shortname}" == "onset" ]; then fn_info_message_onset elif [ "${shortname}" == "mom" ]; then @@ -1576,20 +1599,8 @@ fn_info_message_select_engine(){ fn_info_message_unturned elif [ "${shortname}" == "ut" ]; then fn_info_message_ut - elif [ "${shortname}" == "mc" ]; then - fn_info_message_minecraft - elif [ "${shortname}" == "mh" ]; then - fn_info_message_mordhau - elif [ "${shortname}" == "mohaa" ]; then - fn_info_message_mohaa - elif [ "${shortname}" == "mta" ]; then - fn_info_message_mta - elif [ "${shortname}" == "mumble" ]; then - fn_info_message_mumble - elif [ "${shortname}" == "bf1942" ]; then - fn_info_message_bf1942 - elif [ "${shortname}" == "bfv" ]; then - fn_info_message_bfv + elif [ "${shortname}" == "vh" ]; then + fn_info_message_vh elif [ "${shortname}" == "rtcw" ]; then fn_info_message_rtcw elif [ "${shortname}" == "pvr" ]; then diff --git a/linuxgsm.sh b/linuxgsm.sh old mode 100644 new mode 100755 From 3347c70c3a1da11bea62fb96a897098808225c58 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 5 Feb 2021 16:10:26 +0000 Subject: [PATCH 047/117] fix(backup): resolve issues with lockfile check and creation (#3214) * check lockfile has been fixed * lockfile is only created once compression starts --- 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 e04318c85..adce957c9 100644 --- a/lgsm/functions/command_backup.sh +++ b/lgsm/functions/command_backup.sh @@ -254,12 +254,12 @@ fn_backup_start_server(){ } # Run functions. -fn_backup_create_lockfile +fn_backup_check_lockfile fn_backup_init fn_backup_stop_server fn_backup_dir fn_backup_migrate_olddir -fn_backup_check_lockfile +fn_backup_create_lockfile fn_backup_compression fn_backup_prune fn_backup_start_server From 90a75aedd54bb34bbff5d27b74f91afa6e046028 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 5 Feb 2021 16:11:58 +0000 Subject: [PATCH 048/117] Release v21.1.2 --- lgsm/functions/core_functions.sh | 2 +- linuxgsm.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 40844a2c5..a8e9dc03c 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v21.1.1" +modulesversion="v21.1.2" # Core diff --git a/linuxgsm.sh b/linuxgsm.sh index 2717977b7..2089e3866 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.1" +version="v21.1.2" shortname="core" gameservername="core" commandname="CORE" diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index e60e9b212..f522e2c84 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.1" +version="v21.1.2" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index ef4642a2b..24d3190cd 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.1" +version="v21.1.2" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index 72b9dfca2..054693173 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.1" +version="v21.1.2" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index d63738602..abbf6d737 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.1" +version="v21.1.2" shortname="ts3" gameservername="ts3server" commandname="CORE" From 8bcfc7ee7faeff9a6f478bd2c0daf162a5318372 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 6 Feb 2021 22:50:35 +0000 Subject: [PATCH 049/117] fix(vhserver): update start parameters for multi word server names aaa --- lgsm/config-default/config-lgsm/vhserver/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg index d6e839c37..e0d16319a 100644 --- a/lgsm/config-default/config-lgsm/vhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg @@ -16,7 +16,7 @@ gameworld="${selfname}" public="1" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -startparameters="-name ${servername} -password ${serverpassword} -port ${port} -world ${gameworld} -public ${public}" +startparameters="-name '${servername}' -password ${serverpassword} -port ${port} -world ${gameworld} -public ${public}" #### LinuxGSM Settings #### From ab4fc0521875a8b2e46542643d646c0f090eca7b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 6 Feb 2021 21:58:18 +0000 Subject: [PATCH 050/117] feat(vhserver): add server query add query port to details correct inbound direction --- lgsm/config-default/config-lgsm/vhserver/_default.cfg | 4 ++-- lgsm/functions/info_messages.sh | 5 +++-- lgsm/functions/info_parms.sh | 10 ++++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg index e0d16319a..a8baa0dd6 100644 --- a/lgsm/config-default/config-lgsm/vhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg @@ -138,8 +138,8 @@ stopmode="2" # 3: gamedig # 4: gsquery # 5: tcp -querymode="1" -querytype="" +querymode="2" +querytype="protocol-valve" ## Console type consoleverbose="yes" diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index 90aba09dc..610952a03 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -1259,9 +1259,9 @@ fn_info_message_unreal(){ fi if [ "${appid}" ]; then if [ "${appid}" == "223250" ]; then - echo -e "< Steam\tINBOUND\t20610\tudp" + echo -e "> Steam\tINBOUND\t20610\tudp" else - echo -e "< Steam\tINBOUND\t20660\tudp" + echo -e "> Steam\tINBOUND\t20660\tudp" fi fi echo -e "> Web Admin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}" @@ -1347,6 +1347,7 @@ fn_info_message_vh(){ { echo -e "${lightblue}DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL${default}" echo -e "> Game\tINBOUND\t${port}\tudp" + echo -e "> Query\tINBOUND\t${queryport}\tudp" } | column -s $'\t' -t } diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index 7644b03a7..f5533717f 100755 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -235,6 +235,14 @@ fn_info_parms_ut(){ port=${port:-"0"} } +fn_info_parms_vh(){ + port=${port:-"0"} + queryport=$((port + 1)) + gameworld=${gameworld:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + servername=${servername:-"NOT SET"} +} + fn_info_parms_wf(){ port=${port:-"0"} queryport="${port:-"0"}" @@ -293,6 +301,8 @@ elif [ "${shortname}" == "tu" ]; then fn_info_parms_towerunite elif [ "${shortname}" == "tw" ]; then fn_info_parms_teeworlds +elif [ "${shortname}" == "vh" ]; then + fn_info_parms_vh elif [ "${shortname}" == "mh" ]; then fn_info_parms_mordhau elif [ "${shortname}" == "mta" ]; then From c743e2017d87fe2bdf133b88e6ec1594cc07b670 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 7 Feb 2021 23:03:03 +0100 Subject: [PATCH 051/117] feat(vhserver): add hint to valheim password length (#3216) * Add hint to valheim password length Add hint to default config file. If password is shorten than 5 characters the server did not start. --- lgsm/config-default/config-lgsm/vhserver/_default.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg index a8baa0dd6..c6f8b8726 100644 --- a/lgsm/config-default/config-lgsm/vhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg @@ -10,6 +10,7 @@ ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters servername="Valheim Server" +# Minimum password length is 5. serverpassword="" port="2456" gameworld="${selfname}" From 5752fc359bf90ea3fb6fe217c979c49af5dceedc Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 8 Feb 2021 00:34:21 +0100 Subject: [PATCH 052/117] fix(core): allow the override of the executeable via common or instance config (#3218) --- linuxgsm.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/linuxgsm.sh b/linuxgsm.sh index 2089e3866..c18744871 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -452,7 +452,6 @@ else eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/_default.cfg")" fi eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/_default.cfg")" - eval executable="$(sed -nr 's/^ *executable=(.*)$/\1/p' "${configdirserver}/_default.cfg")" fi # Load the linuxgsm.sh in to tmpdir. If missing download it. From 32320a6a03346a01f0482995c1c8dcc8d91c4186 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 7 Feb 2021 23:36:57 +0000 Subject: [PATCH 053/117] Release v21.1.3 --- lgsm/functions/core_functions.sh | 2 +- linuxgsm.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index a8e9dc03c..c2e17116c 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v21.1.2" +modulesversion="v21.1.3" # Core diff --git a/linuxgsm.sh b/linuxgsm.sh index c18744871..e22fa3ea4 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.2" +version="v21.1.3" shortname="core" gameservername="core" commandname="CORE" diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index f522e2c84..46d285e8c 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.2" +version="v21.1.3" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 24d3190cd..1e500759f 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.2" +version="v21.1.3" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index 054693173..7bd70baf8 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.2" +version="v21.1.3" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index abbf6d737..394186c65 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.2" +version="v21.1.3" shortname="ts3" gameservername="ts3server" commandname="CORE" From 7df36e4d02133f3be7662d8fbcc70fdcccebc82b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 16 Feb 2021 15:27:04 +0000 Subject: [PATCH 054/117] Delete issue_label_bot.yaml --- .github/issue_label_bot.yaml | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 .github/issue_label_bot.yaml diff --git a/.github/issue_label_bot.yaml b/.github/issue_label_bot.yaml deleted file mode 100644 index ee6d724f1..000000000 --- a/.github/issue_label_bot.yaml +++ /dev/null @@ -1,4 +0,0 @@ -label-alias: - bug: 'type: bug' - feature_request: 'type: feature request' - question: 'question' From ec1c66dd1673f8b490d667cca13d28ac003410cd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 17 Feb 2021 22:11:39 +0000 Subject: [PATCH 055/117] Create labeler.yml --- .github/workflows/labeler.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/labeler.yml diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 000000000..19a4b5187 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,16 @@ +name: "Set Issue Label and Assignee" +on: + issues: + types: [opened] + pull_request: + typed: [opened] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: Naturalclar/issue-action@v2.0.2 + with: + title-or-body: "both" + parameters: '[ {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["mod"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]} ]' + github-token: "${{ secrets.GITHUB_TOKEN }}" From 7826f36b24069d06df5e20f52278ade823182a66 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 17 Feb 2021 22:15:00 +0000 Subject: [PATCH 056/117] Update labeler.yml --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 19a4b5187..248598e23 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,5 +12,5 @@ jobs: - uses: Naturalclar/issue-action@v2.0.2 with: title-or-body: "both" - parameters: '[ {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["mod"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]} ]' + parameters: '[ {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]} ]' github-token: "${{ secrets.GITHUB_TOKEN }}" From 7413f304d1bec549a1ad7ddf362c7612a836cd03 Mon Sep 17 00:00:00 2001 From: plieblang Date: Fri, 19 Feb 2021 12:39:33 -0800 Subject: [PATCH 057/117] fix:(mods): update Metamod:Source stable version (#3227) --- 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 8272d8c16..3863dfe47 100755 --- a/lgsm/functions/mods_list.sh +++ b/lgsm/functions/mods_list.sh @@ -55,7 +55,7 @@ amxxtslatestfile="amxmodx-${amxxtsversion}-${amxxtsmod}-linux.tar.gz" amxxtsdownloadurl="https://www.amxmodx.org/release/${amxxtslatestfile}" amxxtsurl="${amxxtsdownloadurl}" # Metamod:Source -metamodsourceversion="1.10" +metamodsourceversion="1.11" metamodsourcescrapeurl="https://mms.alliedmods.net/mmsdrop/${metamodsourceversion}/mmsource-latest-linux" metamodsourcelatestfile=$(wget "${metamodsourcescrapeurl}" -q -O -) metamodsourcedownloadurl="https://www.metamodsource.net/latest.php?os=linux&version=${metamodsourceversion}" From 9e30f4f19fbc09cd457a2ccc8067fd58b84bfa8a Mon Sep 17 00:00:00 2001 From: Lee Robert Date: Fri, 19 Feb 2021 15:46:05 -0500 Subject: [PATCH 058/117] fix:(vhserver) Add support for changing savedir in valheim (#3266) --- lgsm/config-default/config-lgsm/vhserver/_default.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg index c6f8b8726..405aa5747 100644 --- a/lgsm/config-default/config-lgsm/vhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg @@ -15,9 +15,10 @@ serverpassword="" port="2456" gameworld="${selfname}" public="1" +savedir="$HOME/.config/unity3d/IronGate/Valheim" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -startparameters="-name '${servername}' -password ${serverpassword} -port ${port} -world ${gameworld} -public ${public}" +startparameters="-name '${servername}' -password ${serverpassword} -port ${port} -world ${gameworld} -public ${public} -savedir '${savedir}'" #### LinuxGSM Settings #### From 93d3b1e45ca5f39dce8da4956d5f6c0849374e24 Mon Sep 17 00:00:00 2001 From: SimoFiuz Date: Fri, 19 Feb 2021 22:18:29 +0100 Subject: [PATCH 059/117] feat(install): add support for Pop!OS! dependency checks (#3274) Fix for #3264 --- 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 3dd58cdd8..ed8432a18 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -186,7 +186,7 @@ if [ "${javacheck}" == "1" ]; then # Define required dependencies for SteamCMD. if [ "${appid}" ]; then # lib32gcc1 is now called lib32gcc-s1 in debian 11 - if { [ "${distroid}" == "debian" ]&&[ "${distroversion}" == "11" ]; }||{ [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; }; then + if { [ "${distroid}" == "debian" ]&&[ "${distroversion}" == "11" ]; }||{ [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; } || { [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.10" ]; }; then if [ "${deptocheck}" == "glibc.i686" ]||[ "${deptocheck}" == "libstdc++64.i686" ]||[ "${deptocheck}" == "lib32gcc-s1" ]||[ "${deptocheck}" == "lib32stdc++6" ]; then steamcmdfail=1 fi @@ -350,7 +350,7 @@ fn_deps_build_debian(){ if [ "${shortname}" != "ts3" ]&&[ "${shortname}" != "mumble" ]&&[ "${shortname}" != "mc" ]&&[ "${engine}" != "renderware" ]; then if [ "${arch}" == "x86_64" ]; then # lib32gcc1 is now called lib32gcc-s1 in debian 11 - if { [ "${distroid}" == "debian" ]&&[ "${distroversion}" == "11" ]; }|| { [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; }; then + if { [ "${distroid}" == "debian" ]&&[ "${distroversion}" == "11" ]; }|| { [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; } ||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.10" ]; }; then array_deps_required+=( lib32gcc-s1 lib32stdc++6 ) else array_deps_required+=( lib32gcc1 lib32stdc++6 ) From 1aa07bbf602c7a06c546d3267630484fbfa7c75b Mon Sep 17 00:00:00 2001 From: Cryotize <49732602+Cryotize@users.noreply.github.com> Date: Fri, 19 Feb 2021 21:23:30 +0000 Subject: [PATCH 060/117] feat(arkserver): updated default map comment (#3285) Added TheCenter, Extinction, Valguero_P and Genesis as default maps. --- lgsm/config-default/config-lgsm/arkserver/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/arkserver/_default.cfg b/lgsm/config-default/config-lgsm/arkserver/_default.cfg index e9498565d..5ad5785a9 100644 --- a/lgsm/config-default/config-lgsm/arkserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/arkserver/_default.cfg @@ -13,7 +13,7 @@ ip="0.0.0.0" port="7777" queryport="27015" rconport="27020" -# Default Map: TheIsland, Ragnarok, CrystalIsles, Aberration_P, ScorchedEarth_P +# Default Map: TheIsland, Ragnarok, CrystalIsles, Aberration_P, ScorchedEarth_P, TheCenter, Extinction, Valguero_P, Genesis defaultmap="TheIsland" altsavedirectoryname="${defaultmap}" maxplayers="70" From ce1fe2955a561938b77f9cdd5b64e8afd7f89720 Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 19 Feb 2021 23:05:56 +0100 Subject: [PATCH 061/117] feat(core_dl): add more hashing methods (#3280) --- lgsm/functions/command_dev_query_raw.sh | 2 +- .../command_install_resources_mta.sh | 2 +- lgsm/functions/command_monitor.sh | 2 +- lgsm/functions/command_update_linuxgsm.sh | 4 +- lgsm/functions/core_dl.sh | 75 ++++++++++++------- lgsm/functions/core_functions.sh | 12 +-- lgsm/functions/core_steamcmd.sh | 2 +- lgsm/functions/info_stats.sh | 4 +- lgsm/functions/install_config.sh | 2 +- lgsm/functions/install_modules.sh | 2 +- lgsm/functions/update_factorio.sh | 2 +- lgsm/functions/update_jediknight2.sh | 2 +- lgsm/functions/update_minecraft.sh | 2 +- lgsm/functions/update_mta.sh | 2 +- lgsm/functions/update_mumble.sh | 2 +- lgsm/functions/update_ts3.sh | 2 +- linuxgsm.sh | 16 ++-- tests/tests_fctrserver.sh | 16 ++-- tests/tests_jc2server.sh | 16 ++-- tests/tests_mcserver.sh | 16 ++-- tests/tests_ts3server.sh | 16 ++-- 21 files changed, 110 insertions(+), 89 deletions(-) diff --git a/lgsm/functions/command_dev_query_raw.sh b/lgsm/functions/command_dev_query_raw.sh index 306dc681d..7c2dd95f9 100755 --- a/lgsm/functions/command_dev_query_raw.sh +++ b/lgsm/functions/command_dev_query_raw.sh @@ -52,7 +52,7 @@ for queryip in "${queryips[@]}"; do echo -e "./query_gsquery.py -a \"${queryip}\" -p \"${queryport}\" -e \"${querytype}\"" echo -e "" if [ ! -f "${functionsdir}/query_gsquery.py" ]; then - fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nomd5" + fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nohash" fi "${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}" done diff --git a/lgsm/functions/command_install_resources_mta.sh b/lgsm/functions/command_install_resources_mta.sh index 6800932e1..3a94444a3 100755 --- a/lgsm/functions/command_install_resources_mta.sh +++ b/lgsm/functions/command_install_resources_mta.sh @@ -14,7 +14,7 @@ fn_install_resources(){ echo -e "" echo -e "Installing Default Resources" echo -e "=================================" - fn_fetch_file "http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip" "" "" "" "${tmpdir}" "mtasa-resources-latest.zip" "nochmodx" "norun" "noforce" "nomd5" + fn_fetch_file "http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip" "" "" "" "${tmpdir}" "mtasa-resources-latest.zip" "nochmodx" "norun" "noforce" "nohash" fn_dl_extract "${tmpdir}" "mtasa-resources-latest.zip" "${resourcesdir}" echo -e "Default Resources Installed." } diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh index 2cd07ed58..3602bef93 100755 --- a/lgsm/functions/command_monitor.sh +++ b/lgsm/functions/command_monitor.sh @@ -87,7 +87,7 @@ fn_monitor_check_queryport(){ fn_query_gsquery(){ if [ ! -f "${functionsdir}/query_gsquery.py" ]; then - fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nomd5" + fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nohash" fi "${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}" > /dev/null 2>&1 querystatus="$?" diff --git a/lgsm/functions/command_update_linuxgsm.sh b/lgsm/functions/command_update_linuxgsm.sh index 341b46e0b..4027c1e6d 100755 --- a/lgsm/functions/command_update_linuxgsm.sh +++ b/lgsm/functions/command_update_linuxgsm.sh @@ -58,7 +58,7 @@ if [ "${tmp_script_diff}" != "" ]; then fn_print_update_eol_nl fn_script_log_update "Checking ${remotereponame} linuxgsm.sh" rm -f "${tmpdir:?}/linuxgsm.sh" - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "nochmodx" "norun" "noforcedl" "nohash" else fn_print_ok_eol_nl fn_script_log_pass "Checking ${remotereponame} linuxgsm.sh" @@ -138,7 +138,7 @@ if [ "${config_file_diff}" != "" ]; then fn_print_update_eol_nl fn_script_log_update "Checking ${remotereponame} config _default.cfg" rm -f "${configdirdefault:?}/config-lgsm/${gameservername:?}/_default.cfg" - fn_fetch_file_github "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "nochmodx" "norun" "noforce" "nomd5" + fn_fetch_file_github "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "nochmodx" "norun" "noforce" "nohash" alert="config" alert.sh else diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh index b947cbc6d..2c8c269bf 100755 --- a/lgsm/functions/core_dl.sh +++ b/lgsm/functions/core_dl.sh @@ -11,10 +11,10 @@ # chmodx: Optional, set to "chmodx" to make file executable using chmod +x # run: Optional, set run to execute the file after download # forcedl: Optional, force re-download of file even if exists -# md5: Optional, set an md5 sum and will compare it against the file. +# hash: Optional, set an hash sum and will compare it against the file. # # Downloads can be defined in code like so: -# fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" +# fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" # fn_fetch_file "http://example.com/file.tar.bz2" "/some/dir" "file.tar.bz2" "chmodx" "run" "forcedl" "10cd7353aa9d758a075c600a6dd193fd" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" @@ -150,25 +150,46 @@ fn_clear_tmp(){ fi } -fn_dl_md5(){ - # Runs MD5 Check if available. - if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then - echo -en "verifying ${local_filename} with MD5..." +fn_dl_hash(){ + # Runs Hash Check if available. + if [ "${hash}" != "0" ]&&[ "${hash}" != "nohash" ]&&[ "${hash}" != "nomd5" ]; then + # MD5 + if [ "${#hash}" == "32" ]; then + hashbin="md5sum" + hashtype="MD5" + # SHA1 + elif [ "${#hash}" == "40" ]; then + hashbin="sha1sum" + hashtype="SHA1" + # SHA256 + elif [ "${#hash}" == "64" ]; then + hashbin="sha256sum" + hashtype="SHA256" + # SHA512 + elif [ "${#hash}" == "128" ]; then + hashbin="sha512sum" + hashtype="SHA512" + else + fn_script_log_error "hash lengh not known for hash type" + fn_print_error_nl "hash lengh not known for hash type" + core_exit.sh + fi + echo -en "verifying ${local_filename} with ${hashtype}..." fn_sleep_time - md5sumcmd=$(md5sum "${local_filedir}/${local_filename}"|awk '{print $1;}') - if [ "${md5sumcmd}" != "${md5}" ]; then + hashsumcmd=$(${hashbin} "${local_filedir}/${local_filename}" | awk '{print $1}') + if [ "${hashsumcmd}" != "${hash}" ]; then fn_print_fail_eol_nl - echo -e "${local_filename} returned MD5 checksum: ${md5sumcmd}" - echo -e "expected MD5 checksum: ${md5}" - fn_script_log_fatal "Verifying ${local_filename} with MD5" - fn_script_log_info "${local_filename} returned MD5 checksum: ${md5sumcmd}" - fn_script_log_info "Expected MD5 checksum: ${md5}" + echo -e "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}" + echo -e "expected ${hashtype} checksum: ${hash}" + fn_script_log_fatal "Verifying ${local_filename} with ${hashtype}" + fn_script_log_info "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}" + fn_script_log_info "Expected ${hashtype} checksum: ${hash}" core_exit.sh else fn_print_ok_eol_nl - fn_script_log_pass "Verifying ${local_filename} with MD5" - fn_script_log_info "${local_filename} returned MD5 checksum: ${md5sumcmd}" - fn_script_log_info "Expected MD5 checksum: ${md5}" + fn_script_log_pass "Verifying ${local_filename} with ${hashtype}" + fn_script_log_info "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}" + fn_script_log_info "Expected ${hashtype} checksum: ${hash}" fi fi } @@ -235,7 +256,7 @@ fn_fetch_file(){ chmodx="${7:-0}" run="${8:-0}" forcedl="${9:-0}" - md5="${10:-0}" + hash="${10:-0}" # Download file if missing or download forced. if [ ! -f "${local_filedir}/${local_filename}" ]||[ "${forcedl}" == "forcedl" ]; then @@ -322,7 +343,7 @@ fn_fetch_file(){ fi if [ -f "${local_filedir}/${local_filename}" ]; then - fn_dl_md5 + fn_dl_hash # Execute file if run is set. if [ "${run}" == "run" ]; then # shellcheck source=/dev/null @@ -344,7 +365,7 @@ fn_fetch_file(){ # chmodx: Optional, set to "chmodx" to make file executable using chmod +x # run: Optional, set run to execute the file after download # forcedl: Optional, force re-download of file even if exists -# md5: Optional, set an md5 sum and will compare it against the file. +# hash: Optional, set an hash sum and will compare it against the file. # Fetches files from the Git repo. fn_fetch_file_github(){ @@ -369,9 +390,9 @@ fn_fetch_file_github(){ chmodx="${4:-0}" run="${5:-0}" forcedl="${6:-0}" - md5="${7:-0}" + hash="${7:-0}" # Passes vars to the file download function. - fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" + fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" } # Fetches config files from the Git repo. @@ -393,9 +414,9 @@ fn_fetch_config(){ chmodx="nochmodx" run="norun" forcedl="noforce" - md5="nomd5" + hash="nohash" # Passes vars to the file download function. - fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" + fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" } # Fetches modules from the Git repo during first download. @@ -417,9 +438,9 @@ fn_fetch_function(){ chmodx="chmodx" run="run" forcedl="noforce" - md5="nomd5" + hash="nohash" # Passes vars to the file download function. - fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" + fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" } # Fetches modules from the Git repo during update-lgsm. @@ -441,9 +462,9 @@ fn_update_function(){ chmodx="chmodx" run="norun" forcedl="noforce" - md5="nomd5" + hash="nohash" # Passes vars to the file download function. - fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" + fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" } diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index c2e17116c..3f598f2f7 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -15,27 +15,27 @@ modulesversion="v21.1.3" core_dl.sh(){ functionfile="${FUNCNAME[0]}" if [ "$(type fn_fetch_core_dl 2>/dev/null)" ]; then - fn_fetch_core_dl "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_fetch_core_dl "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" else - fn_bootstrap_fetch_file_github "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" fi } core_messages.sh(){ functionfile="${FUNCNAME[0]}" if [ "$(type fn_fetch_core_dl 2>/dev/null)" ]; then - fn_fetch_core_dl "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_fetch_core_dl "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" else - fn_bootstrap_fetch_file_github "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" fi } core_legacy.sh(){ functionfile="${FUNCNAME[0]}" if [ "$(type fn_fetch_core_dl 2>/dev/null)" ]; then - fn_fetch_core_dl "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_fetch_core_dl "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" else - fn_bootstrap_fetch_file_github "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" fi } diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh index 86c71b708..ece274f0f 100755 --- a/lgsm/functions/core_steamcmd.sh +++ b/lgsm/functions/core_steamcmd.sh @@ -14,7 +14,7 @@ fn_install_steamcmd(){ if [ ! -d "${steamcmddir}" ]; then mkdir -p "${steamcmddir}" fi - fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "" "norun" "noforce" "nomd5" + fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "" "norun" "noforce" "nohash" fn_dl_extract "${tmpdir}" "steamcmd_linux.tar.gz" "${steamcmddir}" chmod +x "${steamcmddir}/steamcmd.sh" } diff --git a/lgsm/functions/info_stats.sh b/lgsm/functions/info_stats.sh index 3332f2c5b..211208717 100755 --- a/lgsm/functions/info_stats.sh +++ b/lgsm/functions/info_stats.sh @@ -23,10 +23,10 @@ fi if [ ! -f "${datadir}/uuid-${selfname}.txt" ]||[ ! -f "${datadir}/uuid-install.txt" ]; then # download dictionary words if [ ! -f "${datadir}/name-left.csv" ]; then - fn_fetch_file_github "lgsm/data" "name-left.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5" + fn_fetch_file_github "lgsm/data" "name-left.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" fi if [ ! -f "${datadir}/name-right.csv" ]; then - fn_fetch_file_github "lgsm/data" "name-right.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5" + fn_fetch_file_github "lgsm/data" "name-right.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" fi # generate instance uuid diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index e1f0ba245..47c0922b8 100755 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -26,7 +26,7 @@ fn_fetch_default_config(){ mkdir -p "${lgsmdir}/config-default/config-game" githuburl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master" for config in "${array_configs[@]}"; do - fn_fetch_file "${githuburl}/${gamedirname}/${config}" "${remote_fileurl_backup}" "GitHub" "Bitbucket" "${lgsmdir}/config-default/config-game" "${config}" "nochmodx" "norun" "forcedl" "nomd5" + fn_fetch_file "${githuburl}/${gamedirname}/${config}" "${remote_fileurl_backup}" "GitHub" "Bitbucket" "${lgsmdir}/config-default/config-game" "${config}" "nochmodx" "norun" "forcedl" "nohash" done } diff --git a/lgsm/functions/install_modules.sh b/lgsm/functions/install_modules.sh index 2ee8e4fc4..af1050a94 100755 --- a/lgsm/functions/install_modules.sh +++ b/lgsm/functions/install_modules.sh @@ -11,7 +11,7 @@ echo -e "" echo -e "${lightyellow}Downloading LinuxGSM Modules${default}" echo -e "=================================" -fn_fetch_file "https://github.com/GameServerManagers/LinuxGSM/archive/master.tar.gz" "${tmpdir}" "master.tar.gz" "nochmodx" "norun" "noforce" "nomd5" +fn_fetch_file "https://github.com/GameServerManagers/LinuxGSM/archive/master.tar.gz" "${tmpdir}" "master.tar.gz" "nochmodx" "norun" "noforce" "nohash" fn_dl_extract "${tmpdir}" "master.tar.gz" "${tmpdir}" cp "${tmpdir}/LinuxGSM-master/lgsm/functions"/*.sh "${functionsdir}" cp "${tmpdir}/LinuxGSM-master/lgsm/functions"/*.py "${functionsdir}" diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh index 0886a0a0e..47ccefe1b 100644 --- a/lgsm/functions/update_factorio.sh +++ b/lgsm/functions/update_factorio.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" fn_update_factorio_dl(){ - fn_fetch_file "https://factorio.com/get-download/${downloadbranch}/headless/${factorioarch}" "" "" "" "${tmpdir}" "factorio_headless_${factorioarch}-${remotebuild}.tar.xz" "" "norun" "noforce" "nomd5" + fn_fetch_file "https://factorio.com/get-download/${downloadbranch}/headless/${factorioarch}" "" "" "" "${tmpdir}" "factorio_headless_${factorioarch}-${remotebuild}.tar.xz" "" "norun" "noforce" "nohash" fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${remotebuild}.tar.xz" "${tmpdir}" echo -e "copying to ${serverfiles}...\c" cp -R "${tmpdir}/factorio/"* "${serverfiles}" diff --git a/lgsm/functions/update_jediknight2.sh b/lgsm/functions/update_jediknight2.sh index 770002254..3a3c40f14 100644 --- a/lgsm/functions/update_jediknight2.sh +++ b/lgsm/functions/update_jediknight2.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" fn_update_jk2_dl(){ - fn_fetch_file "https://github.com/mvdevs/jk2mv/releases/download/${remotebuild}/jk2mv-v${remotebuild}-dedicated.zip" "" "" "" "${tmpdir}" "jk2mv-${remotebuild}-dedicated.zip" "" "norun" "noforce" "nomd5" + fn_fetch_file "https://github.com/mvdevs/jk2mv/releases/download/${remotebuild}/jk2mv-v${remotebuild}-dedicated.zip" "" "" "" "${tmpdir}" "jk2mv-${remotebuild}-dedicated.zip" "" "norun" "noforce" "nohash" fn_dl_extract "${tmpdir}" "jk2mv-${remotebuild}-dedicated.zip" "${tmpdir}/jk2mv-v${remotebuild}-dedicated" echo -e "copying to ${serverfiles}...\c" cp -R "${tmpdir}/jk2mv-v${remotebuild}-dedicated/linux-amd64/jk2mvded"* "${serverfiles}/GameData" diff --git a/lgsm/functions/update_minecraft.sh b/lgsm/functions/update_minecraft.sh index ef4a29a97..63a2fd51c 100644 --- a/lgsm/functions/update_minecraft.sh +++ b/lgsm/functions/update_minecraft.sh @@ -13,7 +13,7 @@ fn_update_minecraft_dl(){ # Generate link to server.jar remotebuildurl=$(curl -s "${remotebuildlink}" | jq -r '.downloads.server.url') - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "minecraft_server.${remotebuild}.jar" "" "norun" "noforce" "nomd5" + fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "minecraft_server.${remotebuild}.jar" "" "norun" "noforce" "nohash" echo -e "copying to ${serverfiles}...\c" cp "${tmpdir}/minecraft_server.${remotebuild}.jar" "${serverfiles}/minecraft_server.jar" local exitcode=$? diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh index 96afd298f..f49e54910 100644 --- a/lgsm/functions/update_mta.sh +++ b/lgsm/functions/update_mta.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" fn_update_mta_dl(){ - fn_fetch_file "http://linux.mtasa.com/dl/multitheftauto_linux_x64.tar.gz" "" "" "" "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "" "norun" "noforce" "nomd5" + fn_fetch_file "http://linux.mtasa.com/dl/multitheftauto_linux_x64.tar.gz" "" "" "" "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "" "norun" "noforce" "nohash" mkdir "${tmpdir}/multitheftauto_linux_x64" fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "${tmpdir}/multitheftauto_linux_x64" echo -e "copying to ${serverfiles}...\c" diff --git a/lgsm/functions/update_mumble.sh b/lgsm/functions/update_mumble.sh index d23f8ed36..8a54e7df2 100644 --- a/lgsm/functions/update_mumble.sh +++ b/lgsm/functions/update_mumble.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" fn_update_mumble_dl(){ - fn_fetch_file "https://github.com/mumble-voip/mumble/releases/download/${remotebuild}/murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "" "" "" "${tmpdir}" "murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "" "norun" "noforce" "nomd5" + fn_fetch_file "https://github.com/mumble-voip/mumble/releases/download/${remotebuild}/murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "" "" "" "${tmpdir}" "murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "" "norun" "noforce" "nohash" fn_dl_extract "${tmpdir}" "murmur-static_${mumblearch}-${remotebuild}.tar.bz2" "${tmpdir}" echo -e "copying to ${serverfiles}...\c" cp -R "${tmpdir}/murmur-static_${mumblearch}-${remotebuild}/"* "${serverfiles}" diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh index 94a56a707..6e2d4f56b 100644 --- a/lgsm/functions/update_ts3.sh +++ b/lgsm/functions/update_ts3.sh @@ -13,7 +13,7 @@ fn_update_ts3_dl(){ elif [ "${ts3arch}" == "x86" ]; then remotebuildurl=$(curl -s 'https://www.teamspeak.com/versions/server.json' | jq -r '.linux.x86.mirrors."teamspeak.com"') fi - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "teamspeak3-server_linux_${ts3arch}-${remotebuild}.tar.bz2" "" "norun" "noforce" "nomd5" + fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "teamspeak3-server_linux_${ts3arch}-${remotebuild}.tar.bz2" "" "norun" "noforce" "nohash" fn_dl_extract "${tmpdir}" "teamspeak3-server_linux_${ts3arch}-${remotebuild}.tar.bz2" "${tmpdir}" echo -e "copying to ${serverfiles}...\c" cp -R "${tmpdir}/teamspeak3-server_linux_${ts3arch}/"* "${serverfiles}" diff --git a/linuxgsm.sh b/linuxgsm.sh index e22fa3ea4..5dbe611df 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -53,7 +53,7 @@ githubbranch="master" # Core function that is required first. core_functions.sh(){ functionfile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" } # Bootstrap @@ -330,7 +330,7 @@ fi # LinuxGSM installer mode. if [ "${shortname}" == "core" ]; then # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" if [ ! -f "${serverlist}" ]; then echo -e "[ FAIL ] serverlist.csv could not be loaded." exit 1 @@ -375,7 +375,7 @@ else # Load the default config. If missing download it. If changed reload it. if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" fi if [ ! -f "${configdirserver}/_default.cfg" ]; then mkdir -p "${configdirserver}" @@ -407,7 +407,7 @@ else source "${configdirserver}/_default.cfg" # Load the common.cfg config. If missing download it. if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/common.cfg" else @@ -416,7 +416,7 @@ else fi # Load the secrets-common.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-common.cfg" else @@ -425,7 +425,7 @@ else fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" else @@ -434,7 +434,7 @@ else fi # Load the secrets-instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-${selfname}.cfg" else @@ -456,7 +456,7 @@ else # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" + fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" fi # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index 46d285e8c..a2099236b 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -60,7 +60,7 @@ githubbranch="${TRAVIS_BRANCH}" # Core function that is required first. core_functions.sh(){ functionfile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" } # Bootstrap @@ -337,7 +337,7 @@ fi # LinuxGSM installer mode. if [ "${shortname}" == "core" ]; then # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" if [ ! -f "${serverlist}" ]; then echo -e "[ FAIL ] serverlist.csv could not be loaded." exit 1 @@ -382,7 +382,7 @@ else # Load the default config. If missing download it. If changed reload it. if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" fi if [ ! -f "${configdirserver}/_default.cfg" ]; then mkdir -p "${configdirserver}" @@ -414,7 +414,7 @@ else source "${configdirserver}/_default.cfg" # Load the common.cfg config. If missing download it. if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/common.cfg" else @@ -423,7 +423,7 @@ else fi # Load the secrets-common.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-common.cfg" else @@ -432,7 +432,7 @@ else fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" else @@ -441,7 +441,7 @@ else fi # Load the secrets-instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-${selfname}.cfg" else @@ -451,7 +451,7 @@ else # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" + fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" fi fi # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 1e500759f..f151dda65 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -61,7 +61,7 @@ githubbranch="${TRAVIS_BRANCH}" # Core function that is required first. core_functions.sh(){ functionfile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" } # Bootstrap @@ -338,7 +338,7 @@ fi # LinuxGSM installer mode. if [ "${shortname}" == "core" ]; then # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" if [ ! -f "${serverlist}" ]; then echo -e "[ FAIL ] serverlist.csv could not be loaded." exit 1 @@ -383,7 +383,7 @@ else # Load the default config. If missing download it. If changed reload it. if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" fi if [ ! -f "${configdirserver}/_default.cfg" ]; then mkdir -p "${configdirserver}" @@ -415,7 +415,7 @@ else source "${configdirserver}/_default.cfg" # Load the common.cfg config. If missing download it. if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/common.cfg" else @@ -424,7 +424,7 @@ else fi # Load the secrets-common.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-common.cfg" else @@ -433,7 +433,7 @@ else fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" else @@ -442,7 +442,7 @@ else fi # Load the secrets-instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-${selfname}.cfg" else @@ -452,7 +452,7 @@ else # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" + fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" fi fi # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index 7bd70baf8..43b72c844 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -61,7 +61,7 @@ githubbranch="${TRAVIS_BRANCH}" # Core function that is required first. core_functions.sh(){ functionfile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" } # Bootstrap @@ -338,7 +338,7 @@ fi # LinuxGSM installer mode. if [ "${shortname}" == "core" ]; then # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" if [ ! -f "${serverlist}" ]; then echo -e "[ FAIL ] serverlist.csv could not be loaded." exit 1 @@ -383,7 +383,7 @@ else # Load the default config. If missing download it. If changed reload it. if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" fi if [ ! -f "${configdirserver}/_default.cfg" ]; then mkdir -p "${configdirserver}" @@ -415,7 +415,7 @@ else source "${configdirserver}/_default.cfg" # Load the common.cfg config. If missing download it. if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/common.cfg" else @@ -424,7 +424,7 @@ else fi # Load the secrets-common.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-common.cfg" else @@ -433,7 +433,7 @@ else fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" else @@ -442,7 +442,7 @@ else fi # Load the secrets-instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-${selfname}.cfg" else @@ -452,7 +452,7 @@ else # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" + fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" fi fi # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 394186c65..e6f29d23d 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -61,7 +61,7 @@ githubbranch="${TRAVIS_BRANCH}" # Core function that is required first. core_functions.sh(){ functionfile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" } # Bootstrap @@ -338,7 +338,7 @@ fi # LinuxGSM installer mode. if [ "${shortname}" == "core" ]; then # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5" + fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" if [ ! -f "${serverlist}" ]; then echo -e "[ FAIL ] serverlist.csv could not be loaded." exit 1 @@ -383,7 +383,7 @@ else # Load the default config. If missing download it. If changed reload it. if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" fi if [ ! -f "${configdirserver}/_default.cfg" ]; then mkdir -p "${configdirserver}" @@ -415,7 +415,7 @@ else source "${configdirserver}/_default.cfg" # Load the common.cfg config. If missing download it. if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/common.cfg" else @@ -424,7 +424,7 @@ else fi # Load the secrets-common.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-common.cfg" else @@ -433,7 +433,7 @@ else fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" else @@ -442,7 +442,7 @@ else fi # Load the secrets-instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" # shellcheck source=/dev/null source "${configdirserver}/secrets-${selfname}.cfg" else @@ -452,7 +452,7 @@ else # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" + fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" fi fi # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. From 4b86df305fd5b2e517bf2da84e7ea062cdd165f0 Mon Sep 17 00:00:00 2001 From: Kirill Shamilin Date: Sat, 20 Feb 2021 02:04:27 +0300 Subject: [PATCH 062/117] fix(ts3server): correct arch var in if statement (#3283) fix update TS3. without these changes i can't use the update function on my i686 system. Did not test it on other systems then Debian 10 i686 --- lgsm/functions/update_ts3.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh index 6e2d4f56b..51192a331 100644 --- a/lgsm/functions/update_ts3.sh +++ b/lgsm/functions/update_ts3.sh @@ -103,9 +103,9 @@ fn_update_ts3_localbuild(){ fn_update_ts3_remotebuild(){ # Gets remote build info. - if [ "${arch}" == "x86_64" ]; then + if [ "${ts3arch}" == "x86_64" ]; then remotebuild=$(curl -s "https://www.teamspeak.com/versions/server.json" | jq -r '.linux.x86_64.version') - elif [ "${arch}" == "x86" ]; then + elif [ "${ts3arch}" == "x86" ]; then remotebuild=$(curl -s "https://www.teamspeak.com/versions/server.json" | jq -r '.linux.x86.version') fi if [ "${firstcommandname}" != "INSTALL" ]; then From 2310d9e510ea3275aa93b8e2a37c10515b2a960a Mon Sep 17 00:00:00 2001 From: RuioWolf Date: Sat, 20 Feb 2021 07:07:00 +0800 Subject: [PATCH 063/117] feat(alert): add an option to use a reverse proxied Telegram API server. (#3228) --- lgsm/config-default/config-lgsm/acserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ahl2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/ahlserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/arkserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/arma3server/_default.cfg | 1 + lgsm/config-default/config-lgsm/avserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bb2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/bbserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bdserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bf1942server/_default.cfg | 1 + lgsm/config-default/config-lgsm/bfvserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bmdmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/boserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/bt1944server/_default.cfg | 1 + lgsm/config-default/config-lgsm/btserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ccserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/cmwserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/cod2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/cod4server/_default.cfg | 1 + lgsm/config-default/config-lgsm/codserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/coduoserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/codwawserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/colserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/csczserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/csgoserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/csserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/cssserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dabserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dmcserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dodserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dodsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/doiserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dstserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/dysserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ecoserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/emserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/etlserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/fctrserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/fofserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/gmodserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/hldmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/hldmsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/hwserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/insserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/inssserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/iosserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/jc2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/jc3server/_default.cfg | 1 + lgsm/config-default/config-lgsm/jk2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/kf2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/kfserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/l4d2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/l4dserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/mcbserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/mcserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/mhserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/mohaaserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/momserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/mtaserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/mumbleserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ndserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/nmrihserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ns2cserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ns2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/nsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/onsetserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/opforserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pcserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pstbsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pvrserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/pzserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/q2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/q3server/_default.cfg | 1 + lgsm/config-default/config-lgsm/qlserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/qwserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ricochetserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/roserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/rtcwserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/rustserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/rwserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sampserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sbotsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sbserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/scpslserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sdtdserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sfcserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/sof2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/solserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/squadserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/stserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/svenserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/terrariaserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/tf2server/_default.cfg | 1 + lgsm/config-default/config-lgsm/tfcserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ts3server/_default.cfg | 1 + lgsm/config-default/config-lgsm/tsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/tuserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/twserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/untserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/ut2k4server/_default.cfg | 1 + lgsm/config-default/config-lgsm/ut3server/_default.cfg | 1 + lgsm/config-default/config-lgsm/ut99server/_default.cfg | 1 + lgsm/config-default/config-lgsm/utserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/vhserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/vintsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/vsserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/wetserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/wfserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/wurmserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/zmrserver/_default.cfg | 1 + lgsm/config-default/config-lgsm/zpsserver/_default.cfg | 1 + lgsm/functions/alert_telegram.sh | 2 +- 116 files changed, 116 insertions(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/acserver/_default.cfg b/lgsm/config-default/config-lgsm/acserver/_default.cfg index 56034419a..728671a7a 100644 --- a/lgsm/config-default/config-lgsm/acserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/acserver/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg index 12d745236..533d827f1 100644 --- a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg @@ -84,6 +84,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ahlserver/_default.cfg b/lgsm/config-default/config-lgsm/ahlserver/_default.cfg index dfaea449c..931d3bd4b 100644 --- a/lgsm/config-default/config-lgsm/ahlserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ahlserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/arkserver/_default.cfg b/lgsm/config-default/config-lgsm/arkserver/_default.cfg index 5ad5785a9..57635b6d3 100644 --- a/lgsm/config-default/config-lgsm/arkserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/arkserver/_default.cfg @@ -82,6 +82,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/arma3server/_default.cfg b/lgsm/config-default/config-lgsm/arma3server/_default.cfg index 8a5ed9107..d7da37cf1 100644 --- a/lgsm/config-default/config-lgsm/arma3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/arma3server/_default.cfg @@ -95,6 +95,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/avserver/_default.cfg b/lgsm/config-default/config-lgsm/avserver/_default.cfg index 7ac71d77d..17d670d0f 100644 --- a/lgsm/config-default/config-lgsm/avserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/avserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/bb2server/_default.cfg b/lgsm/config-default/config-lgsm/bb2server/_default.cfg index fd77d0af8..800379706 100644 --- a/lgsm/config-default/config-lgsm/bb2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/bb2server/_default.cfg @@ -85,6 +85,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/bbserver/_default.cfg b/lgsm/config-default/config-lgsm/bbserver/_default.cfg index 7179efc2e..9576c708f 100644 --- a/lgsm/config-default/config-lgsm/bbserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bbserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/bdserver/_default.cfg b/lgsm/config-default/config-lgsm/bdserver/_default.cfg index 4abccbb9e..f1ae81a1f 100644 --- a/lgsm/config-default/config-lgsm/bdserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bdserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/bf1942server/_default.cfg b/lgsm/config-default/config-lgsm/bf1942server/_default.cfg index 841fd6ff8..12f9ea76c 100644 --- a/lgsm/config-default/config-lgsm/bf1942server/_default.cfg +++ b/lgsm/config-default/config-lgsm/bf1942server/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/bfvserver/_default.cfg b/lgsm/config-default/config-lgsm/bfvserver/_default.cfg index b900bc4f8..f8d7994e2 100644 --- a/lgsm/config-default/config-lgsm/bfvserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bfvserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg b/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg index 0530b3377..2921250d7 100644 --- a/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg @@ -85,6 +85,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/boserver/_default.cfg b/lgsm/config-default/config-lgsm/boserver/_default.cfg index d37d3894e..dd779cd6a 100644 --- a/lgsm/config-default/config-lgsm/boserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/boserver/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/bsserver/_default.cfg b/lgsm/config-default/config-lgsm/bsserver/_default.cfg index 00a0b2e18..8a9af8b1a 100644 --- a/lgsm/config-default/config-lgsm/bsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/bsserver/_default.cfg @@ -89,6 +89,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/bt1944server/_default.cfg b/lgsm/config-default/config-lgsm/bt1944server/_default.cfg index 4514c1189..aa4785985 100644 --- a/lgsm/config-default/config-lgsm/bt1944server/_default.cfg +++ b/lgsm/config-default/config-lgsm/bt1944server/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/btserver/_default.cfg b/lgsm/config-default/config-lgsm/btserver/_default.cfg index 92c65e1ce..dd695ec70 100644 --- a/lgsm/config-default/config-lgsm/btserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/btserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ccserver/_default.cfg b/lgsm/config-default/config-lgsm/ccserver/_default.cfg index ef9433aff..c9ceb5f5f 100644 --- a/lgsm/config-default/config-lgsm/ccserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ccserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg index 931b2e6f2..da790a356 100644 --- a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/cod2server/_default.cfg b/lgsm/config-default/config-lgsm/cod2server/_default.cfg index 53a4521dc..611a8a086 100644 --- a/lgsm/config-default/config-lgsm/cod2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/cod2server/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/cod4server/_default.cfg b/lgsm/config-default/config-lgsm/cod4server/_default.cfg index 8cde67086..30dfbd177 100644 --- a/lgsm/config-default/config-lgsm/cod4server/_default.cfg +++ b/lgsm/config-default/config-lgsm/cod4server/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/codserver/_default.cfg b/lgsm/config-default/config-lgsm/codserver/_default.cfg index 487edbeaf..7e22c1707 100644 --- a/lgsm/config-default/config-lgsm/codserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/codserver/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/coduoserver/_default.cfg b/lgsm/config-default/config-lgsm/coduoserver/_default.cfg index d6a9d2a5d..19ba2098b 100644 --- a/lgsm/config-default/config-lgsm/coduoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/coduoserver/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/codwawserver/_default.cfg b/lgsm/config-default/config-lgsm/codwawserver/_default.cfg index 2efd85826..427237992 100644 --- a/lgsm/config-default/config-lgsm/codwawserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/codwawserver/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/colserver/_default.cfg b/lgsm/config-default/config-lgsm/colserver/_default.cfg index c0cdf7892..85a1aab06 100644 --- a/lgsm/config-default/config-lgsm/colserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/colserver/_default.cfg @@ -73,6 +73,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/csczserver/_default.cfg b/lgsm/config-default/config-lgsm/csczserver/_default.cfg index 559fc1fb5..5edbaee9c 100644 --- a/lgsm/config-default/config-lgsm/csczserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csczserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg index 41eb3e251..28f3082b3 100644 --- a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg @@ -105,6 +105,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/csserver/_default.cfg b/lgsm/config-default/config-lgsm/csserver/_default.cfg index 4e79e4e52..a72d3b3cd 100644 --- a/lgsm/config-default/config-lgsm/csserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/csserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/cssserver/_default.cfg b/lgsm/config-default/config-lgsm/cssserver/_default.cfg index dcdb9ab8a..a8b6b122b 100644 --- a/lgsm/config-default/config-lgsm/cssserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/cssserver/_default.cfg @@ -85,6 +85,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/dabserver/_default.cfg b/lgsm/config-default/config-lgsm/dabserver/_default.cfg index ee2bacca2..61050282e 100644 --- a/lgsm/config-default/config-lgsm/dabserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dabserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/dmcserver/_default.cfg b/lgsm/config-default/config-lgsm/dmcserver/_default.cfg index 71e670d77..335ba7b56 100644 --- a/lgsm/config-default/config-lgsm/dmcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dmcserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/dodserver/_default.cfg b/lgsm/config-default/config-lgsm/dodserver/_default.cfg index 2685d0077..1e87b20b6 100644 --- a/lgsm/config-default/config-lgsm/dodserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dodserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/dodsserver/_default.cfg b/lgsm/config-default/config-lgsm/dodsserver/_default.cfg index a92c46091..87caa5a69 100644 --- a/lgsm/config-default/config-lgsm/dodsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dodsserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/doiserver/_default.cfg b/lgsm/config-default/config-lgsm/doiserver/_default.cfg index 4caa856f3..2099d2296 100644 --- a/lgsm/config-default/config-lgsm/doiserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/doiserver/_default.cfg @@ -81,6 +81,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/dstserver/_default.cfg b/lgsm/config-default/config-lgsm/dstserver/_default.cfg index 2ab6fdde1..766b3a706 100644 --- a/lgsm/config-default/config-lgsm/dstserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dstserver/_default.cfg @@ -83,6 +83,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/dysserver/_default.cfg b/lgsm/config-default/config-lgsm/dysserver/_default.cfg index 1cef60f0d..59d36fa9f 100644 --- a/lgsm/config-default/config-lgsm/dysserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/dysserver/_default.cfg @@ -85,6 +85,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg index 88cecaa41..d99a754d2 100644 --- a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/emserver/_default.cfg b/lgsm/config-default/config-lgsm/emserver/_default.cfg index 99e1cd44a..6e782cc24 100644 --- a/lgsm/config-default/config-lgsm/emserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/emserver/_default.cfg @@ -85,6 +85,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/etlserver/_default.cfg b/lgsm/config-default/config-lgsm/etlserver/_default.cfg index b1db388c0..dec02d4b3 100644 --- a/lgsm/config-default/config-lgsm/etlserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/etlserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/fctrserver/_default.cfg b/lgsm/config-default/config-lgsm/fctrserver/_default.cfg index de0b5f3d7..b6d1fcd34 100644 --- a/lgsm/config-default/config-lgsm/fctrserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/fctrserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/fofserver/_default.cfg b/lgsm/config-default/config-lgsm/fofserver/_default.cfg index b89c58e3c..736d78ca8 100644 --- a/lgsm/config-default/config-lgsm/fofserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/fofserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg index 3aa8d948b..ed8b2f8e8 100644 --- a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg @@ -92,6 +92,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg b/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg index a2c36586d..6c268b108 100644 --- a/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/hldmserver/_default.cfg b/lgsm/config-default/config-lgsm/hldmserver/_default.cfg index 4543b9e2b..361c1f7b7 100644 --- a/lgsm/config-default/config-lgsm/hldmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hldmserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg b/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg index f4d8ee17b..127519b40 100644 --- a/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/hwserver/_default.cfg b/lgsm/config-default/config-lgsm/hwserver/_default.cfg index 97de06bcb..793e3d77c 100644 --- a/lgsm/config-default/config-lgsm/hwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/hwserver/_default.cfg @@ -91,6 +91,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/insserver/_default.cfg b/lgsm/config-default/config-lgsm/insserver/_default.cfg index 6231501df..6dbf464ce 100644 --- a/lgsm/config-default/config-lgsm/insserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/insserver/_default.cfg @@ -86,6 +86,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/inssserver/_default.cfg b/lgsm/config-default/config-lgsm/inssserver/_default.cfg index dd7a908c4..e9895b132 100644 --- a/lgsm/config-default/config-lgsm/inssserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/inssserver/_default.cfg @@ -82,6 +82,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/iosserver/_default.cfg b/lgsm/config-default/config-lgsm/iosserver/_default.cfg index f02f9d903..6ba806960 100644 --- a/lgsm/config-default/config-lgsm/iosserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/iosserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/jc2server/_default.cfg b/lgsm/config-default/config-lgsm/jc2server/_default.cfg index 17b13172b..d57520398 100644 --- a/lgsm/config-default/config-lgsm/jc2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jc2server/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/jc3server/_default.cfg b/lgsm/config-default/config-lgsm/jc3server/_default.cfg index 9560dd01f..46ab112a4 100644 --- a/lgsm/config-default/config-lgsm/jc3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jc3server/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/jk2server/_default.cfg b/lgsm/config-default/config-lgsm/jk2server/_default.cfg index 30636ab12..a6bf4f7b1 100644 --- a/lgsm/config-default/config-lgsm/jk2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/jk2server/_default.cfg @@ -81,6 +81,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/kf2server/_default.cfg b/lgsm/config-default/config-lgsm/kf2server/_default.cfg index 326656d63..5617a4cf5 100644 --- a/lgsm/config-default/config-lgsm/kf2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/kf2server/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/kfserver/_default.cfg b/lgsm/config-default/config-lgsm/kfserver/_default.cfg index f582cf1f0..d1a672dcc 100644 --- a/lgsm/config-default/config-lgsm/kfserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/kfserver/_default.cfg @@ -84,6 +84,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/l4d2server/_default.cfg b/lgsm/config-default/config-lgsm/l4d2server/_default.cfg index adfb6c42c..5d947eca0 100644 --- a/lgsm/config-default/config-lgsm/l4d2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/l4d2server/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/l4dserver/_default.cfg b/lgsm/config-default/config-lgsm/l4dserver/_default.cfg index 24521fb2a..0f1b2f4a4 100644 --- a/lgsm/config-default/config-lgsm/l4dserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/l4dserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/mcbserver/_default.cfg b/lgsm/config-default/config-lgsm/mcbserver/_default.cfg index 4c8e3c2ae..abad7f61c 100644 --- a/lgsm/config-default/config-lgsm/mcbserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mcbserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/mcserver/_default.cfg b/lgsm/config-default/config-lgsm/mcserver/_default.cfg index b2b053490..6cbdd8e15 100644 --- a/lgsm/config-default/config-lgsm/mcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mcserver/_default.cfg @@ -81,6 +81,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/mhserver/_default.cfg b/lgsm/config-default/config-lgsm/mhserver/_default.cfg index 85a487a81..bb4847c00 100644 --- a/lgsm/config-default/config-lgsm/mhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mhserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg b/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg index 6742f18ed..9ab26b75a 100644 --- a/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/momserver/_default.cfg b/lgsm/config-default/config-lgsm/momserver/_default.cfg index e4df7a616..c4f469c61 100644 --- a/lgsm/config-default/config-lgsm/momserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/momserver/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/mtaserver/_default.cfg b/lgsm/config-default/config-lgsm/mtaserver/_default.cfg index 75aa660dd..027aa8cef 100644 --- a/lgsm/config-default/config-lgsm/mtaserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mtaserver/_default.cfg @@ -76,6 +76,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg b/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg index e76076608..0fe4ffabc 100644 --- a/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mumbleserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ndserver/_default.cfg b/lgsm/config-default/config-lgsm/ndserver/_default.cfg index 45bb4da1a..ee43d1f5d 100644 --- a/lgsm/config-default/config-lgsm/ndserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ndserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg b/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg index 67b7d6a15..c3594cec8 100644 --- a/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg @@ -85,6 +85,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg b/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg index 42ba79464..f6e717698 100644 --- a/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg @@ -87,6 +87,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ns2server/_default.cfg b/lgsm/config-default/config-lgsm/ns2server/_default.cfg index d407c8a80..a4b93ad93 100644 --- a/lgsm/config-default/config-lgsm/ns2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ns2server/_default.cfg @@ -91,6 +91,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/nsserver/_default.cfg b/lgsm/config-default/config-lgsm/nsserver/_default.cfg index 282052139..6ef66dc68 100644 --- a/lgsm/config-default/config-lgsm/nsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/nsserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/onsetserver/_default.cfg b/lgsm/config-default/config-lgsm/onsetserver/_default.cfg index eaabae6cd..fc795cc6a 100644 --- a/lgsm/config-default/config-lgsm/onsetserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/onsetserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/opforserver/_default.cfg b/lgsm/config-default/config-lgsm/opforserver/_default.cfg index a72dab526..ccd430e6f 100644 --- a/lgsm/config-default/config-lgsm/opforserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/opforserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/pcserver/_default.cfg b/lgsm/config-default/config-lgsm/pcserver/_default.cfg index 9255cd0d7..231948872 100644 --- a/lgsm/config-default/config-lgsm/pcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pcserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg b/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg index 7c672d2b2..2a8a9cbc6 100644 --- a/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pstbsserver/_default.cfg @@ -82,6 +82,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg b/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg index 7cd158fb9..7003c4a8e 100644 --- a/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/pvrserver/_default.cfg b/lgsm/config-default/config-lgsm/pvrserver/_default.cfg index 2c19f47cf..3fa9a8864 100644 --- a/lgsm/config-default/config-lgsm/pvrserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pvrserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/pzserver/_default.cfg b/lgsm/config-default/config-lgsm/pzserver/_default.cfg index 0dd761a86..720db40d5 100644 --- a/lgsm/config-default/config-lgsm/pzserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/pzserver/_default.cfg @@ -76,6 +76,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/q2server/_default.cfg b/lgsm/config-default/config-lgsm/q2server/_default.cfg index 3e6615789..cc11f34a8 100644 --- a/lgsm/config-default/config-lgsm/q2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/q2server/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/q3server/_default.cfg b/lgsm/config-default/config-lgsm/q3server/_default.cfg index af107b398..e7c003815 100644 --- a/lgsm/config-default/config-lgsm/q3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/q3server/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/qlserver/_default.cfg b/lgsm/config-default/config-lgsm/qlserver/_default.cfg index 8d06fac7f..69ed4d662 100644 --- a/lgsm/config-default/config-lgsm/qlserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/qlserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/qwserver/_default.cfg b/lgsm/config-default/config-lgsm/qwserver/_default.cfg index 0aade5c5e..7f5484895 100644 --- a/lgsm/config-default/config-lgsm/qwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/qwserver/_default.cfg @@ -76,6 +76,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg b/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg index f1c3db9af..93a9a8432 100644 --- a/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/roserver/_default.cfg b/lgsm/config-default/config-lgsm/roserver/_default.cfg index 61824aa42..36ad5d5e8 100644 --- a/lgsm/config-default/config-lgsm/roserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/roserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg b/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg index 781ecf5a0..54571e2af 100644 --- a/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/rustserver/_default.cfg b/lgsm/config-default/config-lgsm/rustserver/_default.cfg index 4d695f7d1..e29a2c504 100644 --- a/lgsm/config-default/config-lgsm/rustserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rustserver/_default.cfg @@ -87,6 +87,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/rwserver/_default.cfg b/lgsm/config-default/config-lgsm/rwserver/_default.cfg index 98b79596f..3ff7bc137 100644 --- a/lgsm/config-default/config-lgsm/rwserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rwserver/_default.cfg @@ -75,6 +75,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/sampserver/_default.cfg b/lgsm/config-default/config-lgsm/sampserver/_default.cfg index aab4adf45..d1add1c0e 100644 --- a/lgsm/config-default/config-lgsm/sampserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sampserver/_default.cfg @@ -76,6 +76,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg b/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg index a944cd1a7..438a37e0a 100644 --- a/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/sbserver/_default.cfg b/lgsm/config-default/config-lgsm/sbserver/_default.cfg index 8570eea1c..03093c44c 100644 --- a/lgsm/config-default/config-lgsm/sbserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sbserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg index 218b1cda9..871d8d18c 100644 --- a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg index 65afedf71..7a4c80253 100644 --- a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg b/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg index 29e89e984..d8ca86974 100644 --- a/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg @@ -75,6 +75,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/sfcserver/_default.cfg b/lgsm/config-default/config-lgsm/sfcserver/_default.cfg index e5ea17bac..8dc17afb9 100644 --- a/lgsm/config-default/config-lgsm/sfcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/sfcserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/sof2server/_default.cfg b/lgsm/config-default/config-lgsm/sof2server/_default.cfg index 1c84e0d90..36922b437 100644 --- a/lgsm/config-default/config-lgsm/sof2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/sof2server/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/solserver/_default.cfg b/lgsm/config-default/config-lgsm/solserver/_default.cfg index 65a5275e1..6ce6ce1cf 100644 --- a/lgsm/config-default/config-lgsm/solserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/solserver/_default.cfg @@ -76,6 +76,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/squadserver/_default.cfg b/lgsm/config-default/config-lgsm/squadserver/_default.cfg index 09ac039e4..a4d8496d8 100644 --- a/lgsm/config-default/config-lgsm/squadserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/squadserver/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/stserver/_default.cfg b/lgsm/config-default/config-lgsm/stserver/_default.cfg index 60f42f63b..c58182cdd 100644 --- a/lgsm/config-default/config-lgsm/stserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/stserver/_default.cfg @@ -82,6 +82,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/svenserver/_default.cfg b/lgsm/config-default/config-lgsm/svenserver/_default.cfg index aaf2c2de2..1d7b97c7f 100644 --- a/lgsm/config-default/config-lgsm/svenserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/svenserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg b/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg index 68bed7cdb..27306d89e 100644 --- a/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/tf2server/_default.cfg b/lgsm/config-default/config-lgsm/tf2server/_default.cfg index 25dd6b32a..72f79304d 100644 --- a/lgsm/config-default/config-lgsm/tf2server/_default.cfg +++ b/lgsm/config-default/config-lgsm/tf2server/_default.cfg @@ -85,6 +85,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/tfcserver/_default.cfg b/lgsm/config-default/config-lgsm/tfcserver/_default.cfg index b4d88ece1..a9339fda9 100644 --- a/lgsm/config-default/config-lgsm/tfcserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/tfcserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ts3server/_default.cfg b/lgsm/config-default/config-lgsm/ts3server/_default.cfg index f3344e87c..3bfaf5d10 100644 --- a/lgsm/config-default/config-lgsm/ts3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ts3server/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/tsserver/_default.cfg b/lgsm/config-default/config-lgsm/tsserver/_default.cfg index f39d23eb5..b9ad02e2b 100644 --- a/lgsm/config-default/config-lgsm/tsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/tsserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/tuserver/_default.cfg b/lgsm/config-default/config-lgsm/tuserver/_default.cfg index 42f750fd9..c0a119abe 100644 --- a/lgsm/config-default/config-lgsm/tuserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/tuserver/_default.cfg @@ -82,6 +82,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/twserver/_default.cfg b/lgsm/config-default/config-lgsm/twserver/_default.cfg index 19d4467eb..c8a53240e 100644 --- a/lgsm/config-default/config-lgsm/twserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/twserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/untserver/_default.cfg b/lgsm/config-default/config-lgsm/untserver/_default.cfg index f923a1446..507005e58 100644 --- a/lgsm/config-default/config-lgsm/untserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/untserver/_default.cfg @@ -78,6 +78,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg b/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg index 450cc53e7..cba690fd7 100644 --- a/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg @@ -76,6 +76,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ut3server/_default.cfg b/lgsm/config-default/config-lgsm/ut3server/_default.cfg index 35a367316..727e79df7 100644 --- a/lgsm/config-default/config-lgsm/ut3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ut3server/_default.cfg @@ -92,6 +92,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/ut99server/_default.cfg b/lgsm/config-default/config-lgsm/ut99server/_default.cfg index 16e0c205d..c0bb5619a 100644 --- a/lgsm/config-default/config-lgsm/ut99server/_default.cfg +++ b/lgsm/config-default/config-lgsm/ut99server/_default.cfg @@ -76,6 +76,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/utserver/_default.cfg b/lgsm/config-default/config-lgsm/utserver/_default.cfg index 1e974c2f1..ed19edd39 100644 --- a/lgsm/config-default/config-lgsm/utserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/utserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg index 405aa5747..096faf2a4 100644 --- a/lgsm/config-default/config-lgsm/vhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg @@ -81,6 +81,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/vintsserver/_default.cfg b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg index f1845102b..42b6c42fa 100644 --- a/lgsm/config-default/config-lgsm/vintsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg @@ -76,6 +76,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/vsserver/_default.cfg b/lgsm/config-default/config-lgsm/vsserver/_default.cfg index 3ddab5cbb..dace8b1ab 100644 --- a/lgsm/config-default/config-lgsm/vsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vsserver/_default.cfg @@ -79,6 +79,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/wetserver/_default.cfg b/lgsm/config-default/config-lgsm/wetserver/_default.cfg index b5f243046..296b7bd16 100644 --- a/lgsm/config-default/config-lgsm/wetserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wetserver/_default.cfg @@ -72,6 +72,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/wfserver/_default.cfg b/lgsm/config-default/config-lgsm/wfserver/_default.cfg index 07f18ef10..5bb63c67f 100644 --- a/lgsm/config-default/config-lgsm/wfserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wfserver/_default.cfg @@ -77,6 +77,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg index 1943f3611..49b342436 100644 --- a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg @@ -73,6 +73,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/zmrserver/_default.cfg b/lgsm/config-default/config-lgsm/zmrserver/_default.cfg index f9b4bbb38..b5bfa3359 100644 --- a/lgsm/config-default/config-lgsm/zmrserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/zmrserver/_default.cfg @@ -80,6 +80,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/config-default/config-lgsm/zpsserver/_default.cfg b/lgsm/config-default/config-lgsm/zpsserver/_default.cfg index 178548eb0..bf3c26e22 100644 --- a/lgsm/config-default/config-lgsm/zpsserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/zpsserver/_default.cfg @@ -85,6 +85,7 @@ slackwebhook="webhook" # Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram # You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". # For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" telegramalert="off" telegramtoken="accesstoken" telegramchatid="" diff --git a/lgsm/functions/alert_telegram.sh b/lgsm/functions/alert_telegram.sh index 938f6802a..056f11ae0 100755 --- a/lgsm/functions/alert_telegram.sh +++ b/lgsm/functions/alert_telegram.sh @@ -17,7 +17,7 @@ EOF ) fn_print_dots "Sending Telegram alert" -telegramsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d """${json}""" ${curlcustomstring} "https://api.telegram.org/bot${telegramtoken}/sendMessage" | grep "error_code") +telegramsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d """${json}""" ${curlcustomstring} "https://${telegramapi}/bot${telegramtoken}/sendMessage" | grep "error_code") if [ -n "${telegramsend}" ]; then fn_print_fail_nl "Sending Telegram alert: ${telegramsend}" From 8db3b6d48740817eec2c337f6e579c9064ec9e74 Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 19 Feb 2021 17:07:27 -0600 Subject: [PATCH 064/117] fix(vhserver): add escaped quotes to Valheim startparams to account for spaces (#3272) --- lgsm/config-default/config-lgsm/vhserver/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg index 096faf2a4..818040bd3 100644 --- a/lgsm/config-default/config-lgsm/vhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg @@ -18,7 +18,7 @@ public="1" savedir="$HOME/.config/unity3d/IronGate/Valheim" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -startparameters="-name '${servername}' -password ${serverpassword} -port ${port} -world ${gameworld} -public ${public} -savedir '${savedir}'" +startparameters="-name \"${servername}\" -password \"${serverpassword}\" -port ${port} -world \"${gameworld}\" -public ${public} -savedir \"${savedir}\"" #### LinuxGSM Settings #### From 0ca6c8a0fb7b6038d1f40a016e01722f5aee7cbb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 20 Feb 2021 22:33:15 +0000 Subject: [PATCH 065/117] feat(send): new command send (#3288) The send command will appear for any game servers that support sending commands within the console i.e interactive console. Note: This is not rcon support Co-authored-by: Daniel Gibbs Co-authored-by: DUDU54 <14166148+DUDU54@users.noreply.github.com> --- lgsm/functions/check_system_requirements.sh | 2 +- lgsm/functions/command_send.sh | 41 +++++++++++++++++++++ lgsm/functions/core_functions.sh | 5 +++ lgsm/functions/core_getopt.sh | 8 +++- lgsm/functions/core_messages.sh | 13 +++++++ linuxgsm.sh | 1 + 6 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 lgsm/functions/command_send.sh diff --git a/lgsm/functions/check_system_requirements.sh b/lgsm/functions/check_system_requirements.sh index 758d558a6..2922361f0 100755 --- a/lgsm/functions/check_system_requirements.sh +++ b/lgsm/functions/check_system_requirements.sh @@ -49,7 +49,7 @@ if [ "${ramrequirementmb}" ]; then fn_print_dots "Check RAM" # Warn the user. fn_print_warn_nl "Check RAM: ${ramrequirementgb}G required, ${physmemtotal} available" - echo " * ${gamename} server may fail to run or experience poor performance." + echo "* ${gamename} server may fail to run or experience poor performance." fn_sleep_time fi fi diff --git a/lgsm/functions/command_send.sh b/lgsm/functions/command_send.sh new file mode 100644 index 000000000..4b653c0be --- /dev/null +++ b/lgsm/functions/command_send.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# LinuxGSM command_send.sh module +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib +# Website: https://linuxgsm.com +# Description: Send command to the server tmux console. + +commandname="SEND" +commandaction="Send" +functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" +fn_firstcommand_set + +check.sh +if [ -z "${userinput2}" ]; then + fn_print_header + fn_print_information_nl "Send a command to the console." +fi + +check_status.sh +if [ "${status}" != "0" ]; then + if [ -n "${userinput2}" ]; then + commandtosend="${userinput2}" + else + echo "" + commandtosend=$( fn_prompt_message "send: " ) + fi + echo "" + fn_print_dots "Sending command to console: \"${commandtosend}\"" + tmux send-keys -t "${servicename}" "${commandtosend}" ENTER + fn_print_ok_nl "Sending command to console: \"${commandtosend}\"" + fn_script_log_pass "Command \"${commandtosend}\" sent to console" +else + fn_print_error_nl "Server not running" + fn_script_log_error "Failed to access: Server not running" + 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/core_functions.sh b/lgsm/functions/core_functions.sh index 3f598f2f7..be613a45a 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -180,6 +180,11 @@ functionfile="${FUNCNAME[0]}" fn_fetch_function } +command_send.sh(){ +functionfile="${FUNCNAME[0]}" +fn_fetch_function +} + # Checks check.sh(){ diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index b0986024a..904bad37d 100755 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -23,6 +23,7 @@ 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 if crashed." ) cmd_skeleton=( "sk;skeleton" "command_skeleton.sh" "Create a skeleton directory." ) cmd_donate=( "do;donate" "command_donate.sh" "Donation options." ) +cmd_send=( "sd;send" "command_send.sh" "Send command to game server console." ) # 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." ) @@ -82,9 +83,14 @@ fi # Backup. currentopt+=( "${cmd_backup[@]}" ) -# Console & Debug +# Console & Debug. currentopt+=( "${cmd_console[@]}" "${cmd_debug[@]}" ) +# Console send. +if [ "${consoleinteract}" == "yes" ]; then + currentopt+=( "${cmd_send[@]}" ) +fi + ## Game server exclusive commands. # FastDL command. diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 388a64a9d..a56ade188 100755 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -359,6 +359,19 @@ fn_prompt_yn(){ done } +# Prompt for message +fn_prompt_message(){ + while true; do + unset prompt + local prompt="$1" + read -e -p "${prompt}" -r answer + if fn_prompt_yn "Continue" Y; then + break; + fi + done + echo "${answer}" +} + # On-Screen End of Line ################################## diff --git a/linuxgsm.sh b/linuxgsm.sh index 5dbe611df..059ac9da2 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -42,6 +42,7 @@ configdir="${lgsmdir}/config-lgsm" configdirserver="${configdir}/${gameservername}" configdirdefault="${lgsmdir}/config-default" userinput="${1}" +userinput2="${2}" ## GitHub Branch Select # Allows for the use of different function files From 0ab57342b2965e224c5303f30ae7c0db2aa15ed1 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 21 Feb 2021 22:13:40 +0100 Subject: [PATCH 066/117] fix(core): add execution of check_ip before the config init (#3289) --- linuxgsm.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linuxgsm.sh b/linuxgsm.sh index 059ac9da2..36ef5764c 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -403,6 +403,8 @@ else fi fi fi + # Load the IP details before the first config is loaded. + check_ip.sh # Configs have to be loaded twice to allow start startparameters to pick up all vars # shellcheck source=/dev/null source "${configdirserver}/_default.cfg" From 7640496726d0be8123b9d083be39729815a3936a Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 26 Feb 2021 21:13:24 +0100 Subject: [PATCH 067/117] feat(newserver): add PaperMC Server and Waterfall (#3292) * feature(newserver): add PaperMC Server and Waterfall PaperMC is a Minecraft server fork of spigot (which is a fork of Bukkit) with some improvement and also an API to check when update is needed It support version selection via the API Co-authored-by: Daniel Gibbs --- .../config-lgsm/pmcserver/_default.cfg | 173 ++++++++++++++++++ .../config-lgsm/wmcserver/_default.cfg | 173 ++++++++++++++++++ lgsm/data/serverlist.csv | 2 + lgsm/functions/check_deps.sh | 6 +- lgsm/functions/check_system_requirements.sh | 2 +- lgsm/functions/command_update.sh | 2 + lgsm/functions/core_functions.sh | 5 + lgsm/functions/info_config.sh | 26 ++- lgsm/functions/info_messages.sh | 2 +- lgsm/functions/install_config.sh | 8 +- lgsm/functions/install_eula.sh | 4 +- lgsm/functions/install_server_files.sh | 6 + lgsm/functions/update_papermc.sh | 160 ++++++++++++++++ 13 files changed, 560 insertions(+), 9 deletions(-) create mode 100644 lgsm/config-default/config-lgsm/pmcserver/_default.cfg create mode 100644 lgsm/config-default/config-lgsm/wmcserver/_default.cfg create mode 100644 lgsm/functions/update_papermc.sh diff --git a/lgsm/config-default/config-lgsm/pmcserver/_default.cfg b/lgsm/config-default/config-lgsm/pmcserver/_default.cfg new file mode 100644 index 000000000..8369b782c --- /dev/null +++ b/lgsm/config-default/config-lgsm/pmcserver/_default.cfg @@ -0,0 +1,173 @@ +################################## +######## Default Settings ######## +################################## +# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! +# Copy settings from here and use them in either: +# common.cfg - applies settings to every instance. +# [instance].cfg - applies settings to a specific instance. + +#### Game Server Settings #### + +## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters +javaram="1024" # -Xmx$1024M + +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +startparameters="nogui" + +## Release Settings | https://docs.linuxgsm.com/game-servers/minecraft#release-settings +# Version (latest|1.16.5) +mcversion="latest" + +#### LinuxGSM Settings #### + +## LinuxGSM Stats +# Send useful stats to LinuxGSM developers. +# https://docs.linuxgsm.com/configuration/linuxgsm-stats +# (on|off) +stats="off" + +## Notification Alerts +# (on|off) + +# Display IP | https://docs.linuxgsm.com/alerts#display-ip +displayip="" + +# More info | https://docs.linuxgsm.com/alerts#more-info +postalert="off" + +# Discord Alerts | https://docs.linuxgsm.com/alerts/discord +discordalert="off" +discordwebhook="webhook" + +# Email Alerts | https://docs.linuxgsm.com/alerts/email +emailalert="off" +email="email@example.com" +emailfrom="" + +# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt +iftttalert="off" +ifttttoken="accesstoken" +iftttevent="linuxgsm_alert" + +# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun +mailgunalert="off" +mailgunapiregion="us" +mailguntoken="accesstoken" +mailgundomain="example.com" +mailgunemailfrom="alert@example.com" +mailgunemail="email@myemail.com" + +# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover +pushoveralert="off" +pushovertoken="accesstoken" +pushoveruserkey="userkey" + +# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat +rocketchatalert="off" +rocketchatwebhook="webhook" +rocketchattoken="" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" + +# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram +# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". +# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" +telegramalert="off" +telegramtoken="accesstoken" +telegramchatid="" +curlcustomstring="" + +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + +## Backup | https://docs.linuxgsm.com/commands/backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://docs.linuxgsm.com/features/logging +consolelogging="on" +logdays="7" + +## Monitor | https://docs.linuxgsm.com/commands/monitor +# Query delay time +querydelay="1" + +## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors +ansi="on" + +#### Advanced Settings #### + +## Message Display Time | https://docs.linuxgsm.com/features/message-display-time +sleeptime="0.5" + +## Stop Mode | https://docs.linuxgsm.com/features/stop-mode +# 1: tmux kill +# 2: CTRL+c +# 3: quit +# 4: quit 120s +# 5: stop +# 6: q +# 7: exit +# 8: 7 Days to Die +# 9: GoldSrc +# 10: Avorion +# 11: end +stopmode="5" + +## Query mode +# 1: session only +# 2: gamedig (gsquery fallback) +# 3: gamedig +# 4: gsquery +# 5: tcp +querymode="2" +querytype="minecraft" + +## Console type +consoleverbose="yes" +consoleinteract="yes" + +## Game Server Details +# Do not edit +gamename="PaperMC" +engine="lwjgl2" +glibc="null" + +#### Directories #### +# Edit with care + +## Game Server Directories +systemdir="${serverfiles}" +executabledir="${serverfiles}" +preexecutable="java -Xmx${javaram}M -jar" +executable="./paper.jar" +servercfgdir="${systemdir}" +servercfg="server.properties" +servercfgdefault="server.properties" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${lgsmdir}/backup" + +## Logging Directories +logdir="${rootdir}/log" +gamelogdir="${systemdir}/logs" +lgsmlogdir="${logdir}/script" +consolelogdir="${logdir}/console" +lgsmlog="${lgsmlogdir}/${selfname}-script.log" +consolelog="${consolelogdir}/${selfname}-console.log" +alertlog="${lgsmlogdir}/${selfname}-alert.log" +postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log" + +## Logs Naming +lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" diff --git a/lgsm/config-default/config-lgsm/wmcserver/_default.cfg b/lgsm/config-default/config-lgsm/wmcserver/_default.cfg new file mode 100644 index 000000000..b0df8cbfd --- /dev/null +++ b/lgsm/config-default/config-lgsm/wmcserver/_default.cfg @@ -0,0 +1,173 @@ +################################## +######## Default Settings ######## +################################## +# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! +# Copy settings from here and use them in either: +# common.cfg - applies settings to every instance. +# [instance].cfg - applies settings to a specific instance. + +#### Game Server Settings #### + +## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters +javaram="1024" # -Xmx$1024M + +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +startparameters="nogui" + +## Release Settings | https://docs.linuxgsm.com/game-servers/minecraft#release-settings +# Version (latest|1.16.5) +mcversion="latest" + +#### LinuxGSM Settings #### + +## LinuxGSM Stats +# Send useful stats to LinuxGSM developers. +# https://docs.linuxgsm.com/configuration/linuxgsm-stats +# (on|off) +stats="off" + +## Notification Alerts +# (on|off) + +# Display IP | https://docs.linuxgsm.com/alerts#display-ip +displayip="" + +# More info | https://docs.linuxgsm.com/alerts#more-info +postalert="off" + +# Discord Alerts | https://docs.linuxgsm.com/alerts/discord +discordalert="off" +discordwebhook="webhook" + +# Email Alerts | https://docs.linuxgsm.com/alerts/email +emailalert="off" +email="email@example.com" +emailfrom="" + +# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt +iftttalert="off" +ifttttoken="accesstoken" +iftttevent="linuxgsm_alert" + +# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun +mailgunalert="off" +mailgunapiregion="us" +mailguntoken="accesstoken" +mailgundomain="example.com" +mailgunemailfrom="alert@example.com" +mailgunemail="email@myemail.com" + +# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover +pushoveralert="off" +pushovertoken="accesstoken" +pushoveruserkey="userkey" + +# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat +rocketchatalert="off" +rocketchatwebhook="webhook" +rocketchattoken="" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" + +# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram +# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". +# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" +telegramalert="off" +telegramtoken="accesstoken" +telegramchatid="" +curlcustomstring="" + +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + +## Backup | https://docs.linuxgsm.com/commands/backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://docs.linuxgsm.com/features/logging +consolelogging="on" +logdays="7" + +## Monitor | https://docs.linuxgsm.com/commands/monitor +# Query delay time +querydelay="1" + +## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors +ansi="on" + +#### Advanced Settings #### + +## Message Display Time | https://docs.linuxgsm.com/features/message-display-time +sleeptime="0.5" + +## Stop Mode | https://docs.linuxgsm.com/features/stop-mode +# 1: tmux kill +# 2: CTRL+c +# 3: quit +# 4: quit 120s +# 5: stop +# 6: q +# 7: exit +# 8: 7 Days to Die +# 9: GoldSrc +# 10: Avorion +# 11: end +stopmode="2" + +## Query mode +# 1: session only +# 2: gamedig (gsquery fallback) +# 3: gamedig +# 4: gsquery +# 5: tcp +querymode="2" +querytype="minecraft" + +## Console type +consoleverbose="yes" +consoleinteract="yes" + +## Game Server Details +# Do not edit +gamename="WaterfallMC" +engine="lwjgl2" +glibc="null" + +#### Directories #### +# Edit with care + +## Game Server Directories +systemdir="${serverfiles}" +executabledir="${serverfiles}" +preexecutable="java -Xmx${javaram}M -jar" +executable="./waterfall.jar" +servercfgdir="${systemdir}" +servercfg="config.yml" +servercfgdefault="config.yml" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${lgsmdir}/backup" + +## Logging Directories +logdir="${rootdir}/log" +gamelogdir="${systemdir}/logs" +lgsmlogdir="${logdir}/script" +consolelogdir="${logdir}/console" +lgsmlog="${lgsmlogdir}/${selfname}-script.log" +consolelog="${consolelogdir}/${selfname}-console.log" +alertlog="${lgsmlogdir}/${selfname}-alert.log" +postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log" + +## Logs Naming +lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" diff --git a/lgsm/data/serverlist.csv b/lgsm/data/serverlist.csv index ec5ae600d..687a3f63d 100644 --- a/lgsm/data/serverlist.csv +++ b/lgsm/data/serverlist.csv @@ -68,6 +68,7 @@ ns2c,ns2cserver,NS2: Combat onset,onsetserver,Onset opfor,opforserver,Opposing Force pc,pcserver,Project Cars +pmc,pmcserver,PaperMC pstbs,pstbsserver,Post Scriptum: The Bloody Seventh pvkii,pvkiiserver,Pirates Vikings & Knights II pvr,pvrserver,Pavlov VR @@ -110,6 +111,7 @@ vs,vsserver,Vampire Slayer vints,vintsserver,Vintage Story wet,wetserver,Wolfenstein: Enemy Territory wf,wfserver,Warfork +wmc,wmcserver,WaterfallMC wurm,wurmserver,Wurm Unlimited zmr,zmrserver,Zombie Master: Reborn zps,zpsserver,Zombie Panic! Source diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index ed8432a18..dc9154051 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -347,7 +347,7 @@ fn_deps_build_debian(){ array_deps_required=( curl wget ca-certificates file bsdmainutils util-linux python3 tar bzip2 gzip unzip binutils bc jq tmux netcat cpio ) # All servers except ts3, mumble, GTA and minecraft servers require lib32stdc++6 and lib32gcc1. - if [ "${shortname}" != "ts3" ]&&[ "${shortname}" != "mumble" ]&&[ "${shortname}" != "mc" ]&&[ "${engine}" != "renderware" ]; then + if [ "${shortname}" != "ts3" ]&&[ "${shortname}" != "mumble" ]&&[ "${shortname}" != "mc" ]&&[ "${shortname}" != "pmc" ]&&[ "${shortname}" != "wmc" ]&&[ "${engine}" != "renderware" ]; then if [ "${arch}" == "x86_64" ]; then # lib32gcc1 is now called lib32gcc-s1 in debian 11 if { [ "${distroid}" == "debian" ]&&[ "${distroversion}" == "11" ]; }|| { [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; } ||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.10" ]; }; then @@ -415,7 +415,7 @@ fn_deps_build_debian(){ elif [ "${shortname}" == "hw" ]||[ "${shortname}" == "rust" ]; then array_deps_required+=( lib32z1 ) # Minecraft, Rising World, Wurm - elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "rw" ]; then + elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]||[ "${shortname}" == "rw" ]; then javaversion=$(java -version 2>&1 | grep "version") if [ "${javaversion}" ]; then # Added for users using Oracle JRE to bypass the check. @@ -533,7 +533,7 @@ fn_deps_build_redhat(){ elif [ "${shortname}" == "hw" ]||[ "${shortname}" == "rust" ]; then array_deps_required+=( zlib-devel ) # Minecraft, Rising World, Wurm - elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "rw" ]; then + elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]||[ "${shortname}" == "rw" ]; then javaversion=$(java -version 2>&1 | grep "version") if [ "${javaversion}" ]; then # Added for users using Oracle JRE to bypass the check. diff --git a/lgsm/functions/check_system_requirements.sh b/lgsm/functions/check_system_requirements.sh index 2922361f0..cc72288fb 100755 --- a/lgsm/functions/check_system_requirements.sh +++ b/lgsm/functions/check_system_requirements.sh @@ -26,7 +26,7 @@ elif [ "${shortname}" == "arma3" ]; then elif [ "${shortname}" == "rust" ]; then ramrequirementmb="4000" ramrequirementgb="4" -elif [ "${shortname}" == "mc" ]; then +elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]; then ramrequirementmb="1000" ramrequirementgb="1" elif [ "${shortname}" == "pstbs" ]; then diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh index fdaf9f5a0..828c8c38d 100755 --- a/lgsm/functions/command_update.sh +++ b/lgsm/functions/command_update.sh @@ -21,6 +21,8 @@ elif [ "${shortname}" == "mc" ]; then update_minecraft.sh elif [ "${shortname}" == "mcb" ]; then update_minecraft_bedrock.sh +elif [ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]; then + update_papermc.sh elif [ "${shortname}" == "mumble" ]; then update_mumble.sh elif [ "${shortname}" == "fctr" ]; then diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index be613a45a..b747cde03 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -644,6 +644,11 @@ functionfile="${FUNCNAME[0]}" fn_fetch_function } +update_papermc.sh(){ +functionfile="${FUNCNAME[0]}" +fn_fetch_function +} + update_mumble.sh(){ functionfile="${FUNCNAME[0]}" fn_fetch_function diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index d411a1205..07960e290 100755 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -1565,6 +1565,28 @@ fn_info_config_scpsl(){ fi } +fn_info_config_waterfall(){ + if [ -f "${servercfgfullpath}" ]; then + servername=$(sed -e '/^listeners:/,/^[a-z]/!d' "${servercfgfullpath}" | sed -nr 's/^[ ]+motd: (.*)$/\1/p' | tr -d "'" | sed 's/&1//') + queryport=$(sed -nr 's/^[ -]+query_port: ([0-9]+)/\1/p' "${servercfgfullpath}") + queryenabled=$(sed -nr 's/^[ ]+query_enabled: (.*)$/\1/p' "${servercfgfullpath}") + port=$(sed -nr 's/^[ ]+host: [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:([0-9]+)/\1/p' "${servercfgfullpath}") + # the normal max_players does only show in on the client side and has no effect how many players can connect + maxplayers=$(sed -nr 's/^player_limit: ([-]*[0-9])/\1/p' "${servercfgfullpath}") + configip=$(sed -nr 's/^[ ]+host: ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):[0-9]+/\1/p' "${servercfgfullpath}") + + if [ "${maxplayers}" == "-1" ]||[ "${maxplayers}" == "0" ]; then + maxplayers="UNLIMITED" + fi + else + servername="${unavailable}" + maxplayers="${zero}" + port="${zero}" + queryport="${zero}" + queryenabled="${unavailable}" + fi +} + if [ "${shortname}" == "ac" ]; then fn_info_config_assettocorsa elif [ "${shortname}" == "ark" ]; then @@ -1619,7 +1641,7 @@ elif [ "${shortname}" == "ql" ]; then fn_info_config_quakelive elif [ "${shortname}" == "jk2" ]; then fn_info_config_jk2 -elif [ "${shortname}" == "mc" ]; then +elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]; then fn_info_config_minecraft elif [ "${shortname}" == "mcb" ]; then fn_info_config_minecraft_bedrock @@ -1691,4 +1713,6 @@ elif [ "${shortname}" == "pvr" ];then fn_info_config_pavlovvr elif [ "${shortname}" == "vints" ]; then fn_info_config_vintagestory +elif [ "${shortname}" == "wmc" ]; then + fn_info_config_waterfall fi diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index 610952a03..2f333dc7e 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -1540,7 +1540,7 @@ fn_info_message_select_engine(){ fn_info_message_justcause3 elif [ "${shortname}" == "kf2" ]; then fn_info_message_kf2 - elif [ "${shortname}" == "mc" ]; then + elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]; then fn_info_message_minecraft elif [ "${shortname}" == "mcb" ]; then fn_info_message_minecraft_bedrock diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh index 47c0922b8..9b5ef01cd 100755 --- a/lgsm/functions/install_config.sh +++ b/lgsm/functions/install_config.sh @@ -514,7 +514,7 @@ elif [ "${shortname}" == "l4d2" ]; then fn_default_config_remote fn_set_config_vars fn_list_config_locations -elif [ "${shortname}" == "mc" ]; then +elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]; then gamedirname="Minecraft" array_configs+=( server.properties ) fn_fetch_default_config @@ -829,6 +829,12 @@ elif [ "${shortname}" == "wf" ]; then fn_default_config_remote fn_set_config_vars fn_list_config_locations +elif [ "${shortname}" == "wmc" ]; then + gamedirname="Waterfall" + array_configs+=( config.yml ) + fn_fetch_default_config + fn_default_config_remote + fn_set_config_vars elif [ "${shortname}" == "wurm" ]; then gamedirname="WurmUnlimited" array_configs+=( server.cfg ) diff --git a/lgsm/functions/install_eula.sh b/lgsm/functions/install_eula.sh index 0e6b8bd9b..043d9d1bc 100755 --- a/lgsm/functions/install_eula.sh +++ b/lgsm/functions/install_eula.sh @@ -9,7 +9,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" if [ "${shortname}" == "ts3" ]; then eulaurl="https://www.teamspeak.com/en/privacy-and-terms" -elif [ "${shortname}" == "mc" ]; then +elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]; then eulaurl="https://account.mojang.com/documents/minecraft_eula" elif [ "${shortname}" == "ut" ]; then eulaurl="https://www.epicgames.com/unrealtournament/unreal-tournament-pre-alpha-test-development-build-eula" @@ -41,7 +41,7 @@ fi if [ "${shortname}" == "ts3" ]; then touch "${executabledir}/.ts3server_license_accepted" -elif [ "${shortname}" == "mc" ]; then +elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]; then touch "${serverfiles}/eula.txt" echo -e "eula=true" > "${serverfiles}/eula.txt" elif [ "${shortname}" == "ut" ]; then diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index c7a6a3097..a6c0cea58 100755 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -83,6 +83,12 @@ elif [ "${shortname}" == "mc" ]; then update_minecraft.sh elif [ "${shortname}" == "mcb" ]; then update_minecraft_bedrock.sh +elif [ "${shortname}" == "pmc" ]; then + install_eula.sh + update_papermc.sh +elif [ "${shortname}" == "wmc" ]; then + install_eula.sh + update_papermc.sh elif [ "${shortname}" == "mumble" ]; then update_mumble.sh elif [ "${shortname}" == "mta" ]; then diff --git a/lgsm/functions/update_papermc.sh b/lgsm/functions/update_papermc.sh new file mode 100644 index 000000000..ae512c0ba --- /dev/null +++ b/lgsm/functions/update_papermc.sh @@ -0,0 +1,160 @@ +#!/bin/bash +# LinuxGSM update_papermc.sh function +# Author: Daniel Gibbs +# Contributors: http://linuxgsm.com/contrib +# Website: https://linuxgsm.com +# Description: Handles updating of PaperMC and Waterfall servers. + +local commandname="UPDATE" +local commandaction="Update" +local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" + +fn_update_papermc_dl(){ + # get build info + builddata=$(curl -s "https://${remotelocation}/api/v2/projects/${paperproject}/versions/${paperversion}/builds/${remotebuild}" | jq '.downloads' ) + buildname=$(echo -e "${builddata}" | jq -r '.application.name') + buildsha256=$(echo -e "${builddata}" | jq -r '.application.sha256') + + fn_fetch_file "https://${remotelocation}/api/v2/projects/${paperproject}/versions/${paperversion}/builds/${remotebuild}/downloads/${buildname}" "" "" "" "${tmpdir}" "${buildname}" "nochmodx" "norun" "force" "${buildsha256}" + + echo -e "copying to ${serverfiles}...\c" + cp -f "${tmpdir}/${buildname}" "${serverfiles}/${executable#./}" + local exitcode=$? + if [ "${exitcode}" == "0" ]; then + fn_print_ok_eol_nl + fn_script_log_pass "Copying to ${serverfiles}" + chmod u+x "${serverfiles}/${executable#./}" + echo "${remotebuild}" > "${localversionfile}" + fn_clear_tmp + else + fn_print_fail_eol_nl + fn_script_log_fatal "Copying to ${serverfiles}" + core_exit.sh + fi +} + +fn_update_papermc_localbuild(){ + # Gets local build info. + fn_print_dots "Checking for update: ${remotelocation}: checking local build" + sleep 0.5 + + if [ ! -f "${localversionfile}" ]; then + fn_print_error_nl "Checking for update: ${remotelocation}: checking local build: no local build files" + fn_script_log_error "No local build file found" + else + localbuild=$(head -n 1 "${localversionfile}") + fi + + if [ -z "${localbuild}" ]; then + localbuild="0" + fn_print_error "Checking for update: ${remotelocation}: waiting for local build: missing local build info" + fn_script_log_error "Missing local build info, Set localbuild to 0" + else + fn_print_ok "Checking for update: ${remotelocation}: checking local build" + fn_script_log_pass "Checking local build" + fi + sleep 0.5 +} + +fn_update_papermc_remotebuild(){ + # Gets remote build info. + remotebuild=$(curl -s "https://${remotelocation}/api/v2/projects/${paperproject}/versions/${paperversion}" | jq -r '.builds[-1]') + + # Checks if remotebuild variable has been set. + if [ -z "${remotebuild}" ]||[ "${remotebuild}" == "null" ]; then + fn_print_failure "Unable to get remote build" + fn_script_log_fatal "Unable to get remote build" + core_exit.sh + else + fn_print_ok "Got build for version ${paperversion}" + fn_script_log "Got build for version ${paperversion}" + fi +} + +fn_update_papermc_compare(){ + fn_print_dots "Checking for update: ${remotelocation}" + sleep 0.5 + if [ "${localbuild}" != "${remotebuild}" ]||[ "${forceupdate}" == "1" ]; then + fn_print_ok_nl "Checking for update: ${remotelocation}" + echo -en "\n" + echo -e "Update available for version ${paperversion}" + echo -e "* Local build: ${red}${localbuild}${default}" + echo -e "* Remote build: ${green}${remotebuild}${default}" + fn_script_log_info "Update available for version ${paperversion}" + fn_script_log_info "Local build: ${localbuild}" + fn_script_log_info "Remote build: ${remotebuild}" + fn_script_log_info "${localbuild} > ${remotebuild}" + echo -en "\n" + echo -en "applying update.\r" + echo -en "\n" + + unset updateonstart + + check_status.sh + # If server stopped. + if [ "${status}" == "0" ]; then + fn_update_papermc_dl + # If server started. + else + exitbypass=1 + command_stop.sh + exitbypass=1 + fn_update_papermc_dl + exitbypass=1 + command_start.sh + fi + alert="update" + alert.sh + else + fn_print_ok_nl "Checking for update: ${remotelocation}" + echo -en "\n" + echo -e "No update available for version ${paperversion}" + echo -e "* Local build: ${green}${localbuild}${default}" + echo -e "* Remote build: ${green}${remotebuild}${default}" + fn_script_log_info "No update available" + fn_script_log_info "Local build: ${localbuild}" + fn_script_log_info "Remote build: ${remotebuild}" + fi +} + +# The location where the builds are checked and downloaded. +remotelocation="papermc.io" + +if [ "${shortname}" == "pmc" ]; then + paperproject="paper" +elif [ "${shortname}" == "wmc" ]; then + paperproject="waterfall" +fi + +localversionfile="${datadir}/${paperproject}-version" + +# check if datadir was created, if not create it +if [ ! -d "${datadir}" ]; then + mkdir -p "${datadir}" +fi + +# check version if the user did set one and check it +if [ "${mcversion}" == "latest" ]; then + paperversion=$(curl -s "https://${remotelocation}/api/v2/projects/${paperproject}" | jq -r '.versions[-1]') +else + # check if version there for the download from the api + paperversion=$(curl -s "https://${remotelocation}/api/v2/projects/${paperproject}" | jq -r -e --arg mcversion "${mcversion}" '.versions[]|select(. == $mcversion)') + if [ -z "${paperversion}" ]; then + # user passed version does not exist + fn_print_error_nl "Version ${mcversion} not available from ${remotelocation}" + fn_script_log_error "Version ${mcversion} not available from ${remotelocation}" + core_exit.sh + fi +fi + +if [ "${firstcommandname}" == "INSTALL" ]; then + fn_update_papermc_remotebuild + fn_update_papermc_dl +else + fn_print_dots "Checking for update: ${remotelocation}" + fn_script_log_info "Checking for update: ${remotelocation}" + sleep 0.5 + fn_update_papermc_localbuild + fn_update_papermc_remotebuild + fn_update_papermc_compare +fi From 4e5984ddc0817f2471d8dddb6e176b86b7bb886b Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 26 Feb 2021 21:15:58 +0100 Subject: [PATCH 068/117] fix(ts3): add fix to detect accounting file and delete if possible (#3204) --- lgsm/functions/fix_ts3.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lgsm/functions/fix_ts3.sh b/lgsm/functions/fix_ts3.sh index 223c90aea..b1ed7d84b 100755 --- a/lgsm/functions/fix_ts3.sh +++ b/lgsm/functions/fix_ts3.sh @@ -14,3 +14,20 @@ if [ ! -f "${serverfiles}/libmariadb.so.2" ]; then cp "${serverfiles}/redist/libmariadb.so.2" "${serverfiles}/libmariadb.so.2" fn_fix_msg_end fi + +# Fixes: failed to register local accounting service: No such file or directory. +accountingfile="/dev/shm/7gbhujb54g8z9hu43jre8" +if [ -f "${accountingfile}" ]; then + # Check permissions for the file if the current user owns it, if not exit. + if [ "$( stat -c %U ${accountingfile})" == "$(whoami)" ]; then + fixname="Delete file ${accountingfile}" + fn_fix_msg_start + rm -f "${accountingfile}" + fn_fix_msg_end + # file is not owned by the current user and needs to be deleted manually. + else + fn_print_error_nl "File ${accountingfile} is not owned by $(whoami) and needs to be deleted manually" + fn_script_log_fatal "File ${accountingfile} is not owned by $(whoami) and needs to be deleted manually" + core_exit.sh + fi +fi From 8582b0a629076040448071be4d349f06f40fe477 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 28 Feb 2021 21:26:21 +0000 Subject: [PATCH 069/117] fix(ut2k4): depricate dependencys for ut2k4 and ut99 (#3309) * removed ut2k4 and ut99 dependencys and tmux detection refactor --- lgsm/functions/check_deps.sh | 24 ------------------------ lgsm/functions/command_start.sh | 24 ++++++++++-------------- lgsm/functions/info_distro.sh | 19 ++++++------------- lgsm/functions/info_messages.sh | 12 ++++++++++-- 4 files changed, 26 insertions(+), 53 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index dc9154051..195d68ae0 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -441,18 +441,6 @@ fn_deps_build_debian(){ # Sven Co-op elif [ "${shortname}" == "sven" ]; then array_deps_required+=( libssl1.1:i386 zlib1g:i386 ) - # Unreal Engine - elif [ "${executable}" == "./ucc-bin" ]; then - # UT2K4 - if [ -f "${executabledir}/ut2004-bin" ]; then - array_deps_required+=( libsdl1.2debian libstdc++5:i386 ) - # UT99 - else - array_deps_required+=( libsdl1.2debian ) - fi - # Unreal Tournament - elif [ "${shortname}" == "ut" ]; then - array_deps_required+=( unzip ) # Vintage Story elif [ "${shortname}" == "vints" ]; then array_deps_required+=( mono-complete ) @@ -556,18 +544,6 @@ fn_deps_build_redhat(){ # Sven Co-op elif [ "${shortname}" == "sven" ]; then : # not compatible - # Unreal Engine - elif [ "${executable}" == "./ucc-bin" ]; then - # UT2K4 - if [ -f "${executabledir}/ut2004-bin" ]; then - array_deps_required+=( compat-libstdc++-33.i686 SDL.i686 bzip2 ) - # UT99 - else - array_deps_required+=( SDL.i686 bzip2 ) - fi - # Unreal Tournament - elif [ "${shortname}" == "ut" ]; then - array_deps_required+=( unzip ) # Vintage Story elif [ "${shortname}" == "vints" ]; then array_deps_required+=( mono-complete ) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index cc79613fb..998749a59 100755 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -82,26 +82,22 @@ fn_start_tmux(){ # Create last start lock file date +%s > "${lockdir}/${selfname}-laststart.lock" - # Get tmux version. - tmuxversion=$(tmux -V | sed "s/tmux //" | sed -n '1 p') - # Tmux compiled from source will return "master", therefore ignore it. - if [ "$(tmux -V | sed "s/tmux //" | sed -n '1 p')" == "master" ]; then - fn_script_log "Tmux version: master (user compiled)" - echo -e "Tmux version: master (user compiled)" >> "${consolelog}" + # tmux compiled from source will return "master", therefore ignore it. + if [ "${tmuxv}" == "master" ]; then + fn_script_log "tmux version: master (user compiled)" + echo -e "tmux version: master (user compiled)" >> "${consolelog}" if [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then tmux pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'" fi - elif [ "${tmuxversion}" ]; then - # Get the digit version of tmux. - tmuxversion=$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]') + elif [ -n "${tmuxv}" ]; then # tmux pipe-pane not supported in tmux versions < 1.6. - if [ "${tmuxversion}" -lt "16" ]; then - echo -e "Console logging disabled: Tmux => 1.6 required + if [ "${tmuxvdigit}" -lt "16" ]; then + echo -e "Console logging disabled: tmux => 1.6 required https://linuxgsm.com/tmux-upgrade Currently installed: $(tmux -V)" > "${consolelog}" # Console logging disabled: Bug in tmux 1.8 breaks logging. - elif [ "${tmuxversion}" -eq "18" ]; then + elif [ "${tmuxvdigit}" -eq "18" ]; then echo -e "Console logging disabled: Bug in tmux 1.8 breaks logging https://linuxgsm.com/tmux-upgrade Currently installed: $(tmux -V)" > "${consolelog}" @@ -127,8 +123,8 @@ fn_start_tmux(){ fn_print_fail_nl "Unable to start ${servername}" fn_script_log_fatal "Unable to start ${servername}" if [ -s "${lgsmlogdir}/.${selfname}-tmux-error.tmp" ]; then - fn_print_fail_nl "Unable to start ${servername}: Tmux error:" - fn_script_log_fatal "Unable to start ${servername}: Tmux error:" + fn_print_fail_nl "Unable to start ${servername}: tmux error:" + fn_script_log_fatal "Unable to start ${servername}: tmux error:" echo -e "" echo -e "Command" echo -e "=================================" diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index 3b199b4f0..555cca69b 100755 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -8,10 +8,6 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -### Game Server pid -if [ "${status}" == "1" ]; then - gameserverpid=$(tmux list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}') -fi ### Distro information ## Distro @@ -70,15 +66,12 @@ done glibcversion=$(ldd --version | sed -n '1s/.* //p') ## tmux version -# e.g: tmux 1.6 -if [ ! "$(command -V tmux 2>/dev/null)" ]; then - tmuxv="${red}NOT INSTALLED!${default}" -else - if [ "$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')" -lt "16" ]; then - tmuxv="$(tmux -V) (>= 1.6 required for console log)" - else - tmuxv=$(tmux -V) - fi +tmuxv=$(tmux -V | sed "s/tmux //") +tmuxvdigit=$(echo "${tmuxv}" | tr -cd '[:digit:]') + +## Game Server pid +if [ "${status}" == "1" ]&&[ "${tmuxv}" != "1.8" ]; then + gameserverpid=$(tmux list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}') fi ## Uptime diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index 2f333dc7e..23ca5e53e 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -137,8 +137,16 @@ fn_info_message_gameserver_resource(){ fn_messages_separator { if [ "${status}" != "0" ]; then - echo -e "${lightblue}CPU Used:\t${default}${cpuused}%${default}" - echo -e "${lightblue}Mem Used:\t${default}${pmemused}%\t${memused}MB${default}" + if [ -n "${cpuused}" ]; then + echo -e "${lightblue}CPU Used:\t${default}${cpuused}%${default}" + else + echo -e "${lightblue}CPU Used:\t${red}unknown${default}" + fi + if [ -n "${memused}" ]; then + echo -e "${lightblue}Mem Used:\t${default}${pmemused}%\t${memused}MB${default}" + else + echo -e "${lightblue}Mem Used:\t${default}${pmemused}\t${red}unknown${default}" + fi else echo -e "${lightblue}CPU Used:\t${default}0%${default}" echo -e "${lightblue}Mem Used:\t${default}0%\t0MB${default}" From 794cde89801c7088375c8d9d10d564cbc90f0abc Mon Sep 17 00:00:00 2001 From: Alex Handlovits Date: Mon, 1 Mar 2021 15:29:23 -0500 Subject: [PATCH 070/117] fix(info): get most recent backup instead of oldest (#3319) --- 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 555cca69b..7e0e6534d 100755 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -205,7 +205,7 @@ if [ -d "${backupdir}" ]; then # number of backups. backupcount=$(find "${backupdir}"/*.tar.gz | wc -l) # most recent backup. - lastbackup=$(find "${backupdir}"/*.tar.gz | head -1) + lastbackup=$(find "${backupdir}"/*.tar.gz | tail -1) # date of most recent backup. lastbackupdate=$(date -r "${lastbackup}") # no of days since last backup. From 6c377f5e9da0fccc797d8a4eb3ecc0902c8e5202 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 1 Mar 2021 21:30:41 +0000 Subject: [PATCH 071/117] fix(post-details): prevent password showing in start parameters (#3315) * remove remaining fn_parms * remove ${parms} * updated UI and comments * add server date and other details improvements * fix(post-details): prevent serverpassword showing in start parameters --- lgsm/functions/alert.sh | 2 + lgsm/functions/command_debug.sh | 15 +- lgsm/functions/command_details.sh | 1 - lgsm/functions/command_postdetails.sh | 1 - lgsm/functions/command_start.sh | 8 +- lgsm/functions/fix_av.sh | 8 +- lgsm/functions/fix_kf2.sh | 4 +- lgsm/functions/fix_ut3.sh | 4 +- lgsm/functions/info_distro.sh | 3 + lgsm/functions/info_messages.sh | 229 +++++++++++++------------- tests/tests_fctrserver.sh | 50 +++--- tests/tests_jc2server.sh | 64 +++---- tests/tests_mcserver.sh | 54 +++--- tests/tests_ts3server.sh | 50 +++--- 14 files changed, 247 insertions(+), 246 deletions(-) diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh index 916f80e67..5fd999728 100755 --- a/lgsm/functions/alert.sh +++ b/lgsm/functions/alert.sh @@ -7,6 +7,8 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" +# Generates alert log of the details at the time of the alert. +# Used with email alerts. fn_alert_log(){ info_distro.sh info_config.sh diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 07871ce00..7925e3ff9 100755 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -29,7 +29,6 @@ fix.sh info_distro.sh info_config.sh # NOTE: Check if works with server without parms. Could be intergrated in to info_parms.sh. -fn_parms fn_print_header { echo -e "${lightblue}Distro:\t\t${default}${distroname}" @@ -70,11 +69,11 @@ if [ "${serverpassword}" ]; then fi echo -e "${lightblue}Start parameters:${default}" if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then - echo -e "${executable} ${parms} -debug" + echo -e "${executable} ${startparameters} -debug" elif [ "${engine}" == "quake" ]; then - echo -e "${executable} ${parms} -condebug" + echo -e "${executable} ${startparameters} -condebug" else - echo -e "${preexecutable} ${executable} ${parms}" + echo -e "${preexecutable} ${executable} ${startparameters}" fi echo -e "" echo -e "Use for identifying server issues only!" @@ -104,19 +103,19 @@ fn_script_log_info "Lockfile generated" fn_script_log_info "${lockdir}/${selfname}.lock" cd "${executabledir}" || exit -# Note: do not add double quotes to ${executable} ${parms}. +# Note: do not add double quotes to ${executable} ${startparameters}. if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then - ${executable} ${parms} -debug + ${executable} ${startparameters} -debug elif [ "${shortname}" == "arma3" ]; then # Arma3 requires semicolons in the module list, which need to # be escaped for regular (tmux) loading, but need to be # stripped when loading straight from the console. ${executable} ${parms//\\;/;} elif [ "${engine}" == "quake" ]; then - ${executable} ${parms} -condebug + ${executable} ${startparameters} -condebug else # shellcheck disable=SC2086 - ${preexecutable} ${executable} ${parms} + ${preexecutable} ${executable} ${startparameters} fi fn_lockfile_trap diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 8f2a03a98..14765ca99 100755 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -32,7 +32,6 @@ fn_info_message_script fn_info_message_backup # Some game servers do not have parms. if [ "${shortname}" != "ts3" ]&&[ "${shortname}" != "jc2" ]&&[ "${shortname}" != "dst" ]&&[ "${shortname}" != "pz" ]&&[ "${engine}" != "renderware" ]; then - fn_parms fn_info_message_commandlineparms fi fn_info_message_ports diff --git a/lgsm/functions/command_postdetails.sh b/lgsm/functions/command_postdetails.sh index 811938380..fa2907b1e 100755 --- a/lgsm/functions/command_postdetails.sh +++ b/lgsm/functions/command_postdetails.sh @@ -52,7 +52,6 @@ else fn_info_message_backup # Some game servers do not have parms. if [ "${shortname}" != "jc2" ]&&[ "${shortname}" != "jc3" ]&&[ "${shortname}" != "dst" ]&&[ "${shortname}" != "pz" ]&&[ "${engine}" != "renderware" ]; then - fn_parms fn_info_message_commandlineparms fi fn_info_message_ports diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 998749a59..7dc4c962e 100755 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -41,9 +41,7 @@ fn_start_jk2(){ fn_start_tmux(){ if [ "${parmsbypass}" ]; then - parms="" - else - fn_parms + startparameters="" fi # check for tmux size variables. if [[ "${servercfgtmuxwidth}" =~ ^[0-9]+$ ]]; then @@ -74,7 +72,7 @@ fn_start_tmux(){ echo "${version}" >> "${lockdir}/${selfname}.lock" echo "${port}" >> "${lockdir}/${selfname}.lock" cd "${executabledir}" || exit - tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${parms}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" + tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${startparameters}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" # Create logfile. touch "${consolelog}" @@ -128,7 +126,7 @@ fn_start_tmux(){ echo -e "" echo -e "Command" echo -e "=================================" - echo -e "tmux new-session -d -s \"${sessionname}\" \"${preexecutable} ${executable} ${parms}\"" | tee -a "${lgsmlog}" + echo -e "tmux new-session -d -s \"${sessionname}\" \"${preexecutable} ${executable} ${startparameters}\"" | tee -a "${lgsmlog}" echo -e "" echo -e "Error" echo -e "=================================" diff --git a/lgsm/functions/fix_av.sh b/lgsm/functions/fix_av.sh index 6aed64f5e..f34a01c37 100755 --- a/lgsm/functions/fix_av.sh +++ b/lgsm/functions/fix_av.sh @@ -10,14 +10,10 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64" if [ "${postinstall}" == "1" ]; then - fn_parms(){ - parms="--datapath ${avdatapath} --galaxy-name ${selfname} --init-folders-only" - } - + startparameters="--datapath ${avdatapath} --galaxy-name ${selfname} --init-folders-only" fn_print_information "starting ${gamename} server to generate configs." fn_sleep_time # go to the executeable dir and start the init of the server cd "${systemdir}" || return 2 - fn_parms - "${executabledir}/${executable}" ${parms} + "${executabledir}/${executable}" ${startparameters} fi diff --git a/lgsm/functions/fix_kf2.sh b/lgsm/functions/fix_kf2.sh index d9f8c82b4..b680a9937 100755 --- a/lgsm/functions/fix_kf2.sh +++ b/lgsm/functions/fix_kf2.sh @@ -7,9 +7,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_parms(){ -parms="\"${defaultmap}?Game=KFGameContent.KFGameInfo_VersusSurvival\"" -} +startparameters="\"${defaultmap}?Game=KFGameContent.KFGameInfo_VersusSurvival\"" fn_print_information "starting ${gamename} server to generate configs." fn_sleep_time diff --git a/lgsm/functions/fix_ut3.sh b/lgsm/functions/fix_ut3.sh index d3b6f824b..6bd26a53a 100755 --- a/lgsm/functions/fix_ut3.sh +++ b/lgsm/functions/fix_ut3.sh @@ -7,9 +7,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_parms(){ -parms="server VCTF-Suspense?Game=UTGameContent.UTVehicleCTFGame_Content?bIsDedicated=true?bIsLanMatch=false?bUsesStats=false?bShouldAdvertise=false?PureServer=1?bAllowJoinInProgress=true?ConfigSubDir=${selfname} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}" -} +startparameters="server VCTF-Suspense?Game=UTGameContent.UTVehicleCTFGame_Content?bIsDedicated=true?bIsLanMatch=false?bUsesStats=false?bShouldAdvertise=false?PureServer=1?bAllowJoinInProgress=true?ConfigSubDir=${selfname} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}" fn_print_information "starting ${gamename} server to generate configs." fn_sleep_time diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index 7e0e6534d..697ee007d 100755 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -74,6 +74,9 @@ if [ "${status}" == "1" ]&&[ "${tmuxv}" != "1.8" ]; then gameserverpid=$(tmux list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}') fi +## Date +date="$(date)" + ## Uptime uptime=$( Game/Query\tOUTBOUND\t${port}\tudp" + echo -e "> Game/Query\tINBOUND\t${port}\tudp" echo -e "> HTTP Server\tINBOUND\t${httpport}\ttcp" if [ "${ase}" == "Enabled" ]; then echo -e "> Query Port\tOUTBOUND\t${queryport}\tudp" @@ -1642,50 +1698,3 @@ fn_info_message_select_engine(){ fn_print_error_nl "Unable to detect server engine." fi } - -# Separator is different for details -fn_messages_separator(){ - if [ "${commandname}" == "details" ]; then - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - else - echo -e "=================================" - fi -} - -# Removes the passwords form all but details -fn_info_message_password_strip(){ - if [ "${commandname}" != "DETAILS" ]; then - if [ "${serverpassword}" ]; then - serverpassword="********" - fi - - if [ "${rconpassword}" ]; then - rconpassword="********" - fi - - if [ "${adminpassword}" ]; then - adminpassword="********" - fi - - if [ "${statspassword}" ]; then - statspassword="********" - fi - - if [ "${webadminpass}" ]; then - webadminpass="********" - fi - - if [ "${telnetpass}" ]; then - telnetpass="********" - fi - - if [ "${wsapikey}" ]; then - wsapikey="********" - fi - - if [ "${gslt}" ]; then - gslt="********" - fi - - fi -} diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index a2099236b..b72e2b025 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -466,9 +466,9 @@ fi fn_currentstatus_tmux(){ check_status.sh if [ "${status}" != "0" ]; then - currentstatus="ONLINE" + currentstatus="STARTED" else - currentstatus="OFFLINE" + currentstatus="STOPPED" fi } @@ -483,7 +483,7 @@ fn_setstatus(){ fn_currentstatus_tmux echo -en "New status: ${currentstatus}\\r" - if [ "${requiredstatus}" == "ONLINE" ]; then + if [ "${requiredstatus}" == "STARTED" ]; then (command_start.sh > /dev/null 2>&1) else (command_stop.sh > /dev/null 2>&1) @@ -749,7 +749,7 @@ echo -e "=================================" echo -e "Description:" echo -e "start ${gamename} server." echo -e "Command: ./${gameservername} start" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -768,7 +768,7 @@ echo -e "=================================" echo -e "Description:" echo -e "start ${gamename} server while already running." echo -e "Command: ./${gameservername} start" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -787,7 +787,7 @@ echo -e "=================================" echo -e "Description:" echo -e "will update server on start." echo -e "Command: ./${gameservername} start" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -806,7 +806,7 @@ echo -e "=================================" echo -e "Description:" echo -e "stop ${gamename} server." echo -e "Command: ./${gameservername} stop" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -825,7 +825,7 @@ echo -e "=================================" echo -e "Description:" echo -e "stop ${gamename} server while already stopped." echo -e "Command: ./${gameservername} stop" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -844,7 +844,7 @@ echo -e "=================================" echo -e "Description:" echo -e "restart ${gamename}." echo -e "Command: ./${gameservername} restart" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -863,7 +863,7 @@ echo -e "=================================" echo -e "Description:" echo -e "restart ${gamename} while already stopped." echo -e "Command: ./${gameservername} restart" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -886,7 +886,7 @@ echo -e "=================================" echo -e "Description:" echo -e "check for updates." echo -e "Command: ./${gameservername} update" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -906,7 +906,7 @@ echo -e "Description:" echo -e "update LinuxGSM." echo -e "" echo -e "Command: ./jc2server update-lgam" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -933,7 +933,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor server while already running." echo -e "Command: ./${gameservername} monitor" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -952,7 +952,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with lockfile." echo -e "Command: ./${gameservername} monitor" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus fn_print_info_nl "creating lockfile." date '+%s' > "${lockdir}/${selfname}.lock" @@ -975,7 +975,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with no lockfile." echo -e "Command: ./${gameservername} monitor" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -994,7 +994,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with no lockfile." echo -e "Command: ./${gameservername} test-alert" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1017,7 +1017,7 @@ echo -e "=================================" echo -e "Description:" echo -e "display details." echo -e "Command: ./${gameservername} details" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1036,7 +1036,7 @@ echo -e "=================================" echo -e "Description:" echo -e "post details." echo -e "Command: ./${gameservername} postdetails" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1059,7 +1059,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run a backup." echo -e "Command: ./${gameservername} backup" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus echo -e "test de-activated until issue #1839 fixed" #(command_backup.sh) @@ -1078,7 +1078,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect glibc." echo -e "Command: ./${gameservername} detect-glibc" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1097,7 +1097,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect ldd." echo -e "Command: ./${gameservername} detect-ldd" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1116,7 +1116,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect dependencies." echo -e "Command: ./${gameservername} detect-deps" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1135,7 +1135,7 @@ echo -e "=================================" echo -e "Description:" echo -e "raw query output." echo -e "Command: ./${gameservername} query-raw" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1159,7 +1159,7 @@ echo -e "=================================" echo -e "Description:" echo -e "donate." echo -e "Command: ./${gameservername} donate" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1177,7 +1177,7 @@ echo -e "=================================" echo -e "Server Tests - Complete!" echo -e "Using: ${gamename}" echo -e "=================================" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus core_exit.sh diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index f151dda65..3b1b081a7 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -467,9 +467,9 @@ fi fn_currentstatus_tmux(){ check_status.sh if [ "${status}" != "0" ]; then - currentstatus="ONLINE" + currentstatus="STARTED" else - currentstatus="OFFLINE" + currentstatus="STOPPED" fi } @@ -484,7 +484,7 @@ fn_setstatus(){ fn_currentstatus_tmux echo -en "New status: ${currentstatus}\\r" - if [ "${requiredstatus}" == "ONLINE" ]; then + if [ "${requiredstatus}" == "STARTED" ]; then (command_start.sh > /dev/null 2>&1) else (command_stop.sh > /dev/null 2>&1) @@ -754,7 +754,7 @@ echo -e "=================================" echo -e "Description:" echo -e "start ${gamename} server." echo -e "Command: ./${gameservername} start" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -773,7 +773,7 @@ echo -e "=================================" echo -e "Description:" echo -e "start ${gamename} server while already running." echo -e "Command: ./${gameservername} start" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -792,7 +792,7 @@ echo -e "=================================" echo -e "Description:" echo -e "will update server on start." echo -e "Command: ./${gameservername} start" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -811,7 +811,7 @@ echo -e "=================================" echo -e "Description:" echo -e "stop ${gamename} server." echo -e "Command: ./${gameservername} stop" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -830,7 +830,7 @@ echo -e "=================================" echo -e "Description:" echo -e "stop ${gamename} server while already stopped." echo -e "Command: ./${gameservername} stop" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -849,7 +849,7 @@ echo -e "=================================" echo -e "Description:" echo -e "restart ${gamename}." echo -e "Command: ./${gameservername} restart" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -868,7 +868,7 @@ echo -e "=================================" echo -e "Description:" echo -e "restart ${gamename} while already stopped." echo -e "Command: ./${gameservername} restart" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -891,7 +891,7 @@ echo -e "=================================" echo -e "Description:" echo -e "check for updates." echo -e "Command: ./${gameservername} update" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -910,7 +910,7 @@ echo -e "=================================" echo -e "Description:" echo -e "change the buildid tricking SteamCMD to update." echo -e "Command: ./jc2server update" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus fn_print_info_nl "changed buildid to 0." sed -i 's/[0-9]\+/0/' "${serverfiles}/steamapps/appmanifest_${appid}.acf" @@ -931,7 +931,7 @@ echo -e "=================================" echo -e "Description:" echo -e "change the buildid tricking SteamCMD to update server while already running." echo -e "Command: ./jc2server update" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus fn_print_info_nl "changed buildid to 0." sed -i 's/[0-9]\+/0/' "${serverfiles}/steamapps/appmanifest_${appid}.acf" @@ -952,7 +952,7 @@ echo -e "=================================" echo -e "Description:" echo -e "removing appmanifest file will cause script to repair." echo -e "Command: ./jc2server update" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus fn_print_info_nl "removed appmanifest_${appid}.acf." rm --verbose "${serverfiles:?}/steamapps/appmanifest_${appid}.acf" @@ -973,7 +973,7 @@ echo -e "=================================" echo -e "Description:" echo -e "force-update bypassing update check." echo -e "Command: ./jc2server force-update" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -992,7 +992,7 @@ echo -e "=================================" echo -e "Description:" echo -e "force-update bypassing update check server while already running." echo -e "Command: ./jc2server force-update" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1011,7 +1011,7 @@ echo -e "=================================" echo -e "Description:" echo -e "validate server files." echo -e "Command: ./jc2server validate" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1031,7 +1031,7 @@ echo -e "Description:" echo -e "validate server files while server already running." echo -e "" echo -e "Command: ./jc2server validate" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1051,7 +1051,7 @@ echo -e "Description:" echo -e "update LinuxGSM." echo -e "" echo -e "Command: ./jc2server update-lgam" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1092,7 +1092,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor server while already running." echo -e "Command: ./${gameservername} monitor" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1111,7 +1111,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with lockfile." echo -e "Command: ./${gameservername} monitor" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus fn_print_info_nl "creating lockfile." date '+%s' > "${lockdir}/${selfname}.lock" @@ -1134,7 +1134,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with no lockfile." echo -e "Command: ./${gameservername} monitor" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1153,7 +1153,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with no lockfile." echo -e "Command: ./${gameservername} test-alert" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus cp "${servercfgfullpath}" "config.lua" sed -i 's/[0-9]\+/0/' "${servercfgfullpath}" @@ -1183,7 +1183,7 @@ echo -e "=================================" echo -e "Description:" echo -e "display details." echo -e "Command: ./${gameservername} details" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1202,7 +1202,7 @@ echo -e "=================================" echo -e "Description:" echo -e "post details." echo -e "Command: ./${gameservername} postdetails" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1225,7 +1225,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run a backup." echo -e "Command: ./${gameservername} backup" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus echo -e "test de-activated until issue #1839 fixed" #(command_backup.sh) @@ -1244,7 +1244,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect glibc." echo -e "Command: ./${gameservername} detect-glibc" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1263,7 +1263,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect ldd." echo -e "Command: ./${gameservername} detect-ldd" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1282,7 +1282,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect dependencies." echo -e "Command: ./${gameservername} detect-deps" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1301,7 +1301,7 @@ echo -e "=================================" echo -e "Description:" echo -e "raw query output." echo -e "Command: ./${gameservername} query-raw" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1324,7 +1324,7 @@ echo -e "=================================" echo -e "Description:" echo -e "donate." echo -e "Command: ./${gameservername} donate" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1342,6 +1342,6 @@ echo -e "=================================" echo -e "Server Tests - Complete!" echo -e "Using: ${gamename}" echo -e "=================================" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus core_exit.sh diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index 43b72c844..00fd32d17 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -467,9 +467,9 @@ fi fn_currentstatus_tmux(){ check_status.sh if [ "${status}" != "0" ]; then - currentstatus="ONLINE" + currentstatus="STARTED" else - currentstatus="OFFLINE" + currentstatus="STOPPED" fi } @@ -484,7 +484,7 @@ fn_setstatus(){ fn_currentstatus_tmux echo -en "New status: ${currentstatus}\\r" - if [ "${requiredstatus}" == "ONLINE" ]; then + if [ "${requiredstatus}" == "STARTED" ]; then (command_start.sh > /dev/null 2>&1) else (command_stop.sh > /dev/null 2>&1) @@ -748,7 +748,7 @@ echo -e "=================================" echo -e "Description:" echo -e "start ${gamename} server." echo -e "Command: ./${gameservername} start" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -767,7 +767,7 @@ echo -e "=================================" echo -e "Description:" echo -e "start ${gamename} server while already running." echo -e "Command: ./${gameservername} start" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -786,7 +786,7 @@ echo -e "=================================" echo -e "Description:" echo -e "will update server on start." echo -e "Command: ./${gameservername} start" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -804,7 +804,7 @@ echo -e "=================================" echo -e "Description:" echo -e "give time for server to fully start." echo -e "Command: sleep 30" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus sleep 30 @@ -814,7 +814,7 @@ echo -e "=================================" echo -e "Description:" echo -e "stop ${gamename} server." echo -e "Command: ./${gameservername} stop" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -833,7 +833,7 @@ echo -e "=================================" echo -e "Description:" echo -e "stop ${gamename} server while already stopped." echo -e "Command: ./${gameservername} stop" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -852,7 +852,7 @@ echo -e "=================================" echo -e "Description:" echo -e "restart ${gamename}." echo -e "Command: ./${gameservername} restart" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -871,7 +871,7 @@ echo -e "=================================" echo -e "Description:" echo -e "restart ${gamename} while already stopped." echo -e "Command: ./${gameservername} restart" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -894,7 +894,7 @@ echo -e "=================================" echo -e "Description:" echo -e "check for updates." echo -e "Command: ./${gameservername} update" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -914,7 +914,7 @@ echo -e "Description:" echo -e "update LinuxGSM." echo -e "" echo -e "Command: ./jc2server update-lgam" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -955,7 +955,7 @@ echo -e "=================================" echo -e "Description:" echo -e "give time for server to fully start." echo -e "Command: sleep 30" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus sleep 30 @@ -965,7 +965,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor server while already running." echo -e "Command: ./${gameservername} monitor" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -984,7 +984,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with lockfile." echo -e "Command: ./${gameservername} monitor" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus fn_print_info_nl "creating lockfile." date '+%s' > "${lockdir}/${selfname}.lock" @@ -1007,7 +1007,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with no lockfile." echo -e "Command: ./${gameservername} monitor" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1026,7 +1026,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with no lockfile." echo -e "Command: ./${gameservername} test-alert" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1049,7 +1049,7 @@ echo -e "=================================" echo -e "Description:" echo -e "display details." echo -e "Command: ./${gameservername} details" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1068,7 +1068,7 @@ echo -e "=================================" echo -e "Description:" echo -e "post details." echo -e "Command: ./${gameservername} postdetails" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1091,7 +1091,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run a backup." echo -e "Command: ./${gameservername} backup" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus echo -e "test de-activated until issue #1839 fixed" #(command_backup.sh) @@ -1110,7 +1110,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect glibc." echo -e "Command: ./${gameservername} detect-glibc" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1129,7 +1129,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect ldd." echo -e "Command: ./${gameservername} detect-ldd" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1148,7 +1148,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect dependencies." echo -e "Command: ./${gameservername} detect-deps" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1181,7 +1181,7 @@ echo -e "=================================" echo -e "Description:" echo -e "raw query output." echo -e "Command: ./${gameservername} query-raw" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1204,7 +1204,7 @@ echo -e "=================================" echo -e "Description:" echo -e "donate." echo -e "Command: ./${gameservername} donate" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1222,7 +1222,7 @@ echo -e "=================================" echo -e "Server Tests - Complete!" echo -e "Using: ${gamename}" echo -e "=================================" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus core_exit.sh diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index e6f29d23d..0fcee304a 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -467,9 +467,9 @@ fi fn_currentstatus_tmux(){ check_status.sh if [ "${status}" != "0" ]; then - currentstatus="ONLINE" + currentstatus="STARTED" else - currentstatus="OFFLINE" + currentstatus="STOPPED" fi } @@ -484,7 +484,7 @@ fn_setstatus(){ fn_currentstatus_tmux echo -en "New status: ${currentstatus}\\r" - if [ "${requiredstatus}" == "ONLINE" ]; then + if [ "${requiredstatus}" == "STARTED" ]; then (command_start.sh > /dev/null 2>&1) else (command_stop.sh > /dev/null 2>&1) @@ -748,7 +748,7 @@ echo -e "=================================" echo -e "Description:" echo -e "start ${gamename} server." echo -e "Command: ./${gameservername} start" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -767,7 +767,7 @@ echo -e "=================================" echo -e "Description:" echo -e "start ${gamename} server while already running." echo -e "Command: ./${gameservername} start" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -786,7 +786,7 @@ echo -e "=================================" echo -e "Description:" echo -e "will update server on start." echo -e "Command: ./${gameservername} start" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -805,7 +805,7 @@ echo -e "=================================" echo -e "Description:" echo -e "stop ${gamename} server." echo -e "Command: ./${gameservername} stop" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -824,7 +824,7 @@ echo -e "=================================" echo -e "Description:" echo -e "stop ${gamename} server while already stopped." echo -e "Command: ./${gameservername} stop" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -843,7 +843,7 @@ echo -e "=================================" echo -e "Description:" echo -e "restart ${gamename}." echo -e "Command: ./${gameservername} restart" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -862,7 +862,7 @@ echo -e "=================================" echo -e "Description:" echo -e "restart ${gamename} while already stopped." echo -e "Command: ./${gameservername} restart" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -885,7 +885,7 @@ echo -e "=================================" echo -e "Description:" echo -e "check for updates." echo -e "Command: ./${gameservername} update" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -905,7 +905,7 @@ echo -e "Description:" echo -e "update LinuxGSM." echo -e "" echo -e "Command: ./jc2server update-lgam" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -932,7 +932,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor server while already running." echo -e "Command: ./${gameservername} monitor" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -951,7 +951,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with lockfile." echo -e "Command: ./${gameservername} monitor" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus fn_print_info_nl "creating lockfile." date '+%s' > "${lockdir}/${selfname}.lock" @@ -974,7 +974,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with no lockfile." echo -e "Command: ./${gameservername} monitor" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -993,7 +993,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run monitor while server is offline with no lockfile." echo -e "Command: ./${gameservername} test-alert" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1016,7 +1016,7 @@ echo -e "=================================" echo -e "Description:" echo -e "display details." echo -e "Command: ./${gameservername} details" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1035,7 +1035,7 @@ echo -e "=================================" echo -e "Description:" echo -e "post details." echo -e "Command: ./${gameservername} postdetails" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1058,7 +1058,7 @@ echo -e "=================================" echo -e "Description:" echo -e "run a backup." echo -e "Command: ./${gameservername} backup" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus echo -e "test de-activated until issue #1839 fixed" #(command_backup.sh) @@ -1077,7 +1077,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect glibc." echo -e "Command: ./${gameservername} detect-glibc" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1096,7 +1096,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect ldd." echo -e "Command: ./${gameservername} detect-ldd" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1115,7 +1115,7 @@ echo -e "=================================" echo -e "Description:" echo -e "detect dependencies." echo -e "Command: ./${gameservername} detect-deps" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1134,7 +1134,7 @@ echo -e "=================================" echo -e "Description:" echo -e "raw query output." echo -e "Command: ./${gameservername} query-raw" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1157,7 +1157,7 @@ echo -e "=================================" echo -e "Description:" echo -e "donate." echo -e "Command: ./${gameservername} donate" -requiredstatus="ONLINE" +requiredstatus="STARTED" fn_setstatus ( exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log" @@ -1175,7 +1175,7 @@ echo -e "=================================" echo -e "Server Tests - Complete!" echo -e "Using: ${gamename}" echo -e "=================================" -requiredstatus="OFFLINE" +requiredstatus="STOPPED" fn_setstatus core_exit.sh From 389964f739d70504767fb81c0769a51a16362806 Mon Sep 17 00:00:00 2001 From: Bryan Jeter Date: Tue, 2 Mar 2021 20:57:48 -0600 Subject: [PATCH 072/117] Force $lastbackup to use latest date. Use ls -1tr in place of find * produce a simple list, * one item per line, * sorted by date reverse. --- lgsm/functions/info_distro.sh | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index 697ee007d..f14447bce 100755 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -8,6 +8,10 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" +### Game Server pid +if [ "${status}" == "1" ]; then + gameserverpid=$(tmux list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}') +fi ### Distro information ## Distro @@ -66,17 +70,17 @@ done glibcversion=$(ldd --version | sed -n '1s/.* //p') ## tmux version -tmuxv=$(tmux -V | sed "s/tmux //") -tmuxvdigit=$(echo "${tmuxv}" | tr -cd '[:digit:]') - -## Game Server pid -if [ "${status}" == "1" ]&&[ "${tmuxv}" != "1.8" ]; then - gameserverpid=$(tmux list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}') +# e.g: tmux 1.6 +if [ ! "$(command -V tmux 2>/dev/null)" ]; then + tmuxv="${red}NOT INSTALLED!${default}" +else + if [ "$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')" -lt "16" ]; then + tmuxv="$(tmux -V) (>= 1.6 required for console log)" + else + tmuxv=$(tmux -V) + fi fi -## Date -date="$(date)" - ## Uptime uptime=$( Date: Sat, 6 Mar 2021 02:43:43 -0700 Subject: [PATCH 073/117] fix(start): remove double quote from tmux (#3333) #3239 Quoting the command and arguments causes tmux to treat it as a single command with spaces in it. Remove the quotes so tmux properly runs the command and passes arguments. --- 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 cc79613fb..bea886a83 100755 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -74,7 +74,7 @@ fn_start_tmux(){ echo "${version}" >> "${lockdir}/${selfname}.lock" echo "${port}" >> "${lockdir}/${selfname}.lock" cd "${executabledir}" || exit - tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${parms}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" + tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" ${preexecutable} ${executable} ${parms} 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" # Create logfile. touch "${consolelog}" From bb994660f744a2fc9b19ad803aa12b8c34ad8757 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 6 Mar 2021 09:57:59 +0000 Subject: [PATCH 074/117] fix(config): resolves issue with settings not always picked up in start parameter (#3320) --- lgsm/functions/command_start.sh | 2 +- lgsm/functions/core_functions.sh | 4 ---- lgsm/functions/core_legacy.sh | 4 ++++ lgsm/functions/core_messages.sh | 2 +- lgsm/functions/fix.sh | 2 +- lgsm/functions/info_messages.sh | 12 +----------- lgsm/functions/install_server_files.sh | 1 - linuxgsm.sh | 22 ++++++++++++++++------ 8 files changed, 24 insertions(+), 25 deletions(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 21b554a74..ab93a9e0b 100755 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -165,7 +165,7 @@ fn_start_tmux(){ fn_print_ok "${servername}" fn_script_log_pass "Started ${servername}" fi - rm "${lgsmlogdir:?}/.${selfname}-tmux-error.tmp" + rm "${lgsmlogdir:?}/.${selfname}-tmux-error.tmp" 2>/dev/null echo -en "\n" } diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index b747cde03..59857e1a3 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -39,10 +39,6 @@ else fi } -fn_parms(){ -parms="${startparameters}" -} - core_exit.sh(){ functionfile="${FUNCNAME[0]}" fn_fetch_function diff --git a/lgsm/functions/core_legacy.sh b/lgsm/functions/core_legacy.sh index 2ea30f5a6..e28cb7457 100755 --- a/lgsm/functions/core_legacy.sh +++ b/lgsm/functions/core_legacy.sh @@ -77,3 +77,7 @@ if [ -z "${wsstartmap}" ]; then wscollectionid="${ws_start_map}" fi fi + +fn_parms(){ +parms="${startparameters}" +} diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index a56ade188..8dfca6661 100755 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -116,7 +116,7 @@ fn_script_log_info(){ fi } -## Feb 28 14:56:58 ut99-server: Monitor: INFO: +## Feb 28 14:56:58 ut99-server: Monitor: UPDATE: fn_script_log_update(){ if [ -d "${lgsmlogdir}" ]; then if [ -n "${commandname}" ]; then diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh index 654ddd391..1b5e63db6 100755 --- a/lgsm/functions/fix.sh +++ b/lgsm/functions/fix.sh @@ -96,7 +96,7 @@ fi if [ "${commandname}" == "INSTALL" ]; then if [ "${shortname}" == "av" ]||[ "${shortname}" == "cmw" ]||[ "${shortname}" == "kf" ]||[ "${shortname}" == "kf2" ]||[ "${shortname}" == "onset" ]||[ "${shortname}" == "ro" ]||[ "${shortname}" == "samp" ]||[ "${shortname}" == "ut2k4" ]||[ "${shortname}" == "ut" ]||[ "${shortname}" == "ut3" ]; then echo -e "" - echo -e "Applying Post-Install Fixes" + echo -e "${lightyellow}Applying Post-Install Fixes}${default}" echo -e "=================================" fn_sleep_time postinstall=1 diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index ceed4cb00..76a819d07 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -610,17 +610,7 @@ fn_info_message_commandlineparms(){ if [ "${serverpassword}" == "NOT SET" ]; then unset serverpassword fi - if grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/secrets-${selfname}.cfg"; then - eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")" - elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/${selfname}.cfg"; then - eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/${selfname}.cfg")" - elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/secrets-common.cfg"; then - eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/secrets-common.cfg")" - elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/common.cfg"; then - eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/common.cfg")" - elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/_default.cfg"; then - eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/_default.cfg")" - fi + fn_reload_startparameters echo -e "${preexecutable} ${executable} ${startparameters}" } diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index a6c0cea58..42941078c 100755 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -87,7 +87,6 @@ elif [ "${shortname}" == "pmc" ]; then install_eula.sh update_papermc.sh elif [ "${shortname}" == "wmc" ]; then - install_eula.sh update_papermc.sh elif [ "${shortname}" == "mumble" ]; then update_mumble.sh diff --git a/linuxgsm.sh b/linuxgsm.sh index 36ef5764c..57e45cfc0 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -444,18 +444,28 @@ else # shellcheck source=/dev/null source "${configdirserver}/secrets-${selfname}.cfg" fi - # Use eval if startparameters are only in _default.cfg to ensure all vars in startparameters are set. - if ! grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/common.cfg" "${configdirserver}/${selfname}.cfg" "${configdirserver}/secrets-common.cfg" "${configdirserver}/secrets-${selfname}.cfg"; then + + # Reloads start parameter to ensure all vars in startparameters are set. + # Will reload the last defined startparameter. + fn_reload_startparameters(){ + # reload Wurm config. if [ "${shortname}" == "wurm" ]; then # shellcheck source=/dev/null source "${servercfgfullpath}" fi - if [ -n "${preexecutable}" ]; then - eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/_default.cfg")" + if grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/secrets-${selfname}.cfg"; then + eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")" + elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/${selfname}.cfg"; then + eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/${selfname}.cfg")" + elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/secrets-common.cfg"; then + eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/secrets-common.cfg")" + elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/common.cfg"; then + eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/common.cfg")" + elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/_default.cfg"; then + eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/_default.cfg")" fi - eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/_default.cfg")" - fi + } # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then From f5bc1051140b24c048a5bf9a5f5d2615d6f66855 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 6 Mar 2021 10:12:31 +0000 Subject: [PATCH 075/117] Release v21.2.0 --- lgsm/functions/core_functions.sh | 2 +- lgsm/functions/info_messages.sh | 2 +- lgsm/functions/install_eula.sh | 2 +- linuxgsm.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 59857e1a3..aaf4a163c 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v21.1.3" +modulesversion="v21.2.0" # Core diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index 76a819d07..e42236aa8 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -7,7 +7,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -# Separator is different for details +# Separator is different for details. fn_messages_separator(){ if [ "${commandname}" == "DETAILS" ]; then printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = diff --git a/lgsm/functions/install_eula.sh b/lgsm/functions/install_eula.sh index 043d9d1bc..d7c0b0b7a 100755 --- a/lgsm/functions/install_eula.sh +++ b/lgsm/functions/install_eula.sh @@ -9,7 +9,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" if [ "${shortname}" == "ts3" ]; then eulaurl="https://www.teamspeak.com/en/privacy-and-terms" -elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]; then +elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]; then eulaurl="https://account.mojang.com/documents/minecraft_eula" elif [ "${shortname}" == "ut" ]; then eulaurl="https://www.epicgames.com/unrealtournament/unreal-tournament-pre-alpha-test-development-build-eula" diff --git a/linuxgsm.sh b/linuxgsm.sh index 57e45cfc0..6c401ada3 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.3" +version="v21.2.0" shortname="core" gameservername="core" commandname="CORE" diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index b72e2b025..f515375e2 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.3" +version="v21.2.0" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 3b1b081a7..97a670fc7 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.3" +version="v21.2.0" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index 00fd32d17..bbc481942 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.3" +version="v21.2.0" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 0fcee304a..5b32cd783 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.1.3" +version="v21.2.0" shortname="ts3" gameservername="ts3server" commandname="CORE" From d0e38df3722b6358625410f8d39a476f029a3d54 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 6 Mar 2021 22:53:01 +0100 Subject: [PATCH 076/117] fix: revert part of #3280 to fix upgrade (#3341) --- linuxgsm.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/linuxgsm.sh b/linuxgsm.sh index 6c401ada3..93b483686 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -54,7 +54,7 @@ githubbranch="master" # Core function that is required first. core_functions.sh(){ functionfile="${FUNCNAME[0]}" - fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" + fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5" } # Bootstrap @@ -331,7 +331,7 @@ fi # LinuxGSM installer mode. if [ "${shortname}" == "core" ]; then # Download the latest serverlist. This is the complete list of all supported servers. - fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" + fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5" if [ ! -f "${serverlist}" ]; then echo -e "[ FAIL ] serverlist.csv could not be loaded." exit 1 @@ -376,7 +376,7 @@ else # Load the default config. If missing download it. If changed reload it. if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then mkdir -p "${configdirdefault}/config-lgsm/${gameservername}" - fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nohash" + fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nomd5" fi if [ ! -f "${configdirserver}/_default.cfg" ]; then mkdir -p "${configdirserver}" @@ -410,7 +410,7 @@ else source "${configdirserver}/_default.cfg" # Load the common.cfg config. If missing download it. if [ ! -f "${configdirserver}/common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" + fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" # shellcheck source=/dev/null source "${configdirserver}/common.cfg" else @@ -419,7 +419,7 @@ else fi # Load the secrets-common.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-common.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-common-template.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5" # shellcheck source=/dev/null source "${configdirserver}/secrets-common.cfg" else @@ -428,7 +428,7 @@ else fi # Load the instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" + fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" # shellcheck source=/dev/null source "${configdirserver}/${selfname}.cfg" else @@ -437,7 +437,7 @@ else fi # Load the secrets-instance.cfg config. If missing download it. if [ ! -f "${configdirserver}/secrets-${selfname}.cfg" ]; then - fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nohash" + fn_fetch_config "lgsm/config-default/config-lgsm" "secrets-instance-template.cfg" "${configdirserver}" "secrets-${selfname}.cfg" "nochmodx" "norun" "noforcedl" "nomd5" # shellcheck source=/dev/null source "${configdirserver}/secrets-${selfname}.cfg" else @@ -469,7 +469,7 @@ else # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nohash" + fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" fi # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. From 40625a789227e9245ca62f0957db1de09acd6545 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 6 Mar 2021 22:53:29 +0100 Subject: [PATCH 077/117] fix: startparameters set instead of parms and call function to eval parms once (#3340) --- lgsm/functions/command_start.sh | 2 +- linuxgsm.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index ab93a9e0b..b65e8d260 100755 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -72,7 +72,7 @@ fn_start_tmux(){ echo "${version}" >> "${lockdir}/${selfname}.lock" echo "${port}" >> "${lockdir}/${selfname}.lock" cd "${executabledir}" || exit - tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" ${preexecutable} ${executable} ${parms} 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" + tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" ${preexecutable} ${executable} ${startparameters} 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" # Create logfile. touch "${consolelog}" diff --git a/linuxgsm.sh b/linuxgsm.sh index 93b483686..2abf14cb9 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -466,7 +466,7 @@ else eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/_default.cfg")" fi } - + fn_reload_startparameters # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" From 3942ff6101dea16ef4bf60faa0c2eb8374e67644 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 6 Mar 2021 22:59:05 +0100 Subject: [PATCH 078/117] fix: regression from #3328 for tmux version (#3342) --- lgsm/functions/info_distro.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index f14447bce..3f7661696 100755 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -73,8 +73,10 @@ glibcversion=$(ldd --version | sed -n '1s/.* //p') # e.g: tmux 1.6 if [ ! "$(command -V tmux 2>/dev/null)" ]; then tmuxv="${red}NOT INSTALLED!${default}" + tmuxvdigit="0" else - if [ "$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')" -lt "16" ]; then + tmuxvdigit="$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')" + if [ "${tmuxvdigit}" -lt "16" ]; then tmuxv="$(tmux -V) (>= 1.6 required for console log)" else tmuxv=$(tmux -V) From 9ecc9509224330b98f8245b35cfdd84654e961a9 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 7 Mar 2021 09:39:15 +0100 Subject: [PATCH 079/117] feat(rust): add option to set gamemode for server (#3343) --- lgsm/config-default/config-lgsm/rustserver/_default.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/rustserver/_default.cfg b/lgsm/config-default/config-lgsm/rustserver/_default.cfg index e29a2c504..424cafabf 100644 --- a/lgsm/config-default/config-lgsm/rustserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rustserver/_default.cfg @@ -16,6 +16,7 @@ appport=28082 rconpassword="CHANGE_ME" rconweb="1" # Value is: 1 for the Facepunch web panel, Rustadmin desktop and Rustadmin Online; 0 for RCON tools like Rusty. servername="Rust" +gamemode="vanilla" # values: vanilla, softcore ( Doc: https://wiki.facepunch.com/rust/server-gamemodes ) maxplayers="50" seed="" # range: 1-2147483647, used to reproduce a procedural map. salt="" # range: unknown, used to recover a known setting from an existing map. @@ -24,7 +25,7 @@ saveinterval="300" # Auto-save in seconds. tickrate="30" # default: 30, range: 15-100. ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile" +startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile" #### LinuxGSM Settings #### From 47d0de16c8686dc0d5bb3af147a3aa39b311036d Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 7 Mar 2021 17:22:03 +0100 Subject: [PATCH 080/117] fix(fastdl): add missing file extention vmt and vtf (#3349) --- 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 2474ffd47..d6ab960bd 100755 --- a/lgsm/functions/command_fastdl.sh +++ b/lgsm/functions/command_fastdl.sh @@ -178,7 +178,7 @@ fn_fastdl_preview(){ elif [ "${directory}" == "materials" ]; then local allowed_extentions_array=( "*.vtf" "*.vmt" "*.vbf" "*.png" "*.svg" ) elif [ "${directory}" == "models" ]; then - local allowed_extentions_array=( "*.vtx" "*.vvd" "*.mdl" "*.phy" "*.jpg" "*.png" ) + local allowed_extentions_array=( "*.vtx" "*.vvd" "*.mdl" "*.phy" "*.jpg" "*.png" "*.vmt" "*.vtf" ) elif [ "${directory}" == "particles" ]; then local allowed_extentions_array=( "*.pcf" ) elif [ "${directory}" == "sound" ]; then From 5fc8953bdc1cc137c88b4d78252f4df4b7e9e111 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 7 Mar 2021 17:23:14 +0100 Subject: [PATCH 081/117] fix(details): fix to show last backup (#3348) --- 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 3f7661696..283d8ed39 100755 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -214,7 +214,7 @@ if [ -d "${backupdir}" ]; then # number of backups. backupcount=$(find "${backupdir}"/*.tar.gz | wc -l) # most recent backup. - lastbackup=$(ls -1tr "${backupdir}"/*.tar.gz | head -1) + lastbackup=$(ls -1t "${backupdir}"/*.tar.gz | head -1) # date of most recent backup. lastbackupdate=$(date -r "${lastbackup}") # no of days since last backup. From 7a30e36de411f406a1dc7814a3632b8e5d0c3f64 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 7 Mar 2021 17:23:38 +0100 Subject: [PATCH 082/117] fix(deps): add detection for lxc container add hostname dependency (#3350) --- lgsm/functions/check_deps.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 195d68ae0..94e48e672 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -454,6 +454,15 @@ fn_deps_build_debian(){ elif [ "${shortname}" == "pvr" ]; then array_deps_required+=( libc++1 ) fi + + # check if system is a lxc container and the hostname dependency. + if command -v systemd-detect-virt &> /dev/null; then + systemd_virt=$(systemd-detect-virt) + if [ "${systemd_virt}" == "lxc" ]||[ "${systemd_virt}" == "lxc-libvirt" ]; then + array_deps_required+=( hostname ) + fi + fi + fn_deps_email fn_check_loop } @@ -557,6 +566,15 @@ fn_deps_build_redhat(){ elif [ "${shortname}" == "pvr" ]; then array_deps_required+=( libcxx ) fi + + # check if system is a lxc container and the hostname dependency. + if command -v systemd-detect-virt &> /dev/null; then + systemd_virt=$(systemd-detect-virt) + if [ "${systemd_virt}" == "lxc" ]||[ "${systemd_virt}" == "lxc-libvirt" ]; then + array_deps_required+=( hostname ) + fi + fi + fn_deps_email fn_check_loop } From 5981accf0278d6a7dc8facb1158e76a532ffef19 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 14 Mar 2021 08:37:04 +0000 Subject: [PATCH 083/117] feat(etl): update ET: Legacy to 2.76 (#3363) --- 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 42941078c..fd6b09410 100755 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -27,7 +27,7 @@ fn_install_server_files(){ elif [ "${shortname}" == "codwaw" ]; then remote_fileurl="http://linuxgsm.download/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.xz"; local_filedir="${tmpdir}"; local_filename="codwaw-lnxded-1.7-full.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="2c6be1bb66ea631b9b2e7ae6216c6680" elif [ "${shortname}" == "etl" ]; then - remote_fileurl="http://linuxgsm.download/WolfensteinEnemyTerritory/etlegacy-v2.76-i386-et-260b.tar.xz"; local_filedir="${tmpdir}"; local_filename="etlegacy-v2.75-i386-et-260b.tar.bz2"; chmodx="nochmodx" run="norun"; force="noforce"; md5="178a00233cec1e25b69d130107ce1a79" + remote_fileurl="http://linuxgsm.download/WolfensteinEnemyTerritory/etlegacy-v2.77-i386-et-260b.tar.xz"; local_filedir="${tmpdir}"; local_filename="etlegacy-v2.77-i386-et-260b.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="7f301708f5bb1272c243f9e2d1b735dc" elif [ "${shortname}" == "mohaa" ]; then remote_fileurl="http://linuxgsm.download/MedalofHonorAlliedAssault/moh_revival_v1.12_RC3.5.1.tar.xz"; local_filedir="${tmpdir}"; local_filename="moh_revival_v1.12_RC3.5.1.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="7c664538999252eeaf2b6d9949416480" elif [ "${shortname}" == "ns" ]; then From a5785c4a67b21d27e7106460d1d3b13510bbcdcd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 14 Mar 2021 08:52:56 +0000 Subject: [PATCH 084/117] feat(ut99): update to 469b (#3364) --- 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 fd6b09410..bf0233177 100755 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -49,7 +49,7 @@ fn_install_server_files(){ elif [ "${shortname}" == "ut2k4" ]; then remote_fileurl="http://linuxgsm.download/UnrealTournament2004/ut2004-server-3369-3-ultimate-linux.tar.xz"; local_filedir="${tmpdir}"; local_filename="ut2004-server-3369-3-ultimate-linux.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="9fceaab68554749f4b45be66613b9a15" elif [ "${shortname}" == "ut99" ]; then - remote_fileurl="http://linuxgsm.download/UnrealTournament99/ut99-server-469a-ultimate-linux.tar.xz"; local_filedir="${tmpdir}"; local_filename="ut99-server-469a-ultimate-linux.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="e3f2ffaab8e23b98d9e825d0244e8b9d" + remote_fileurl="http://linuxgsm.download/UnrealTournament99/ut99-server-469b-ultimate-linux.tar.xz"; local_filedir="${tmpdir}"; local_filename="ut99-server-469b-ultimate-linux.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="dba3f1122a5e60ee45ece7422fcf78f5" elif [ "${shortname}" == "ut" ]; then remote_fileurl="http://linuxgsm.download/UnrealTournament/UnrealTournament-Server-XAN-3525360-Linux.tar.xz"; local_filedir="${tmpdir}"; local_filename="UnrealTournament-Server-XAN-3525360-Linux.tar.xz"; chmodx="noexecute" run="norun"; force="noforce"; md5="41dd92015713a78211eaccf503b72393" elif [ "${shortname}" == "ut3" ]; then From 3eeaf8fcc7f67d693e0c6757c5d69200baa659af Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 14 Mar 2021 17:23:37 +0000 Subject: [PATCH 085/117] Release v21.1.1 --- lgsm/functions/core_functions.sh | 2 +- linuxgsm.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index aaf4a163c..6f232a18d 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v21.2.0" +modulesversion="v21.2.1" # Core diff --git a/linuxgsm.sh b/linuxgsm.sh index 2abf14cb9..0182d24db 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.0" +version="v21.2.1" shortname="core" gameservername="core" commandname="CORE" diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index f515375e2..d5a2919ee 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.0" +version="v21.2.1" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 97a670fc7..792ceb2a6 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.0" +version="v21.2.1" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index bbc481942..d6006c669 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.0" +version="v21.2.1" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 5b32cd783..344c9083e 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.0" +version="v21.2.1" shortname="ts3" gameservername="ts3server" commandname="CORE" From dd2ab39170b6a829b2a209e6d2fd1341556d3909 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 14 Mar 2021 17:24:33 +0000 Subject: [PATCH 086/117] Revert "fix(vhserver): add escaped quotes to Valheim startparams to account for spaces (#3272)" (#3370) This reverts commit 8db3b6d48740817eec2c337f6e579c9064ec9e74. Co-authored-by: Brandon --- lgsm/config-default/config-lgsm/vhserver/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg index 818040bd3..096faf2a4 100644 --- a/lgsm/config-default/config-lgsm/vhserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg @@ -18,7 +18,7 @@ public="1" savedir="$HOME/.config/unity3d/IronGate/Valheim" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -startparameters="-name \"${servername}\" -password \"${serverpassword}\" -port ${port} -world \"${gameworld}\" -public ${public} -savedir \"${savedir}\"" +startparameters="-name '${servername}' -password ${serverpassword} -port ${port} -world ${gameworld} -public ${public} -savedir '${savedir}'" #### LinuxGSM Settings #### From 06e348a2b609eabba8db0b5654b9e9a190b41b15 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 14 Mar 2021 18:24:50 +0100 Subject: [PATCH 087/117] fix(ts3): regression from #3283 (#3369) --- lgsm/functions/update_ts3.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh index 51192a331..782a138d1 100644 --- a/lgsm/functions/update_ts3.sh +++ b/lgsm/functions/update_ts3.sh @@ -103,7 +103,7 @@ fn_update_ts3_localbuild(){ fn_update_ts3_remotebuild(){ # Gets remote build info. - if [ "${ts3arch}" == "x86_64" ]; then + if [ "${ts3arch}" == "amd64" ]; then remotebuild=$(curl -s "https://www.teamspeak.com/versions/server.json" | jq -r '.linux.x86_64.version') elif [ "${ts3arch}" == "x86" ]; then remotebuild=$(curl -s "https://www.teamspeak.com/versions/server.json" | jq -r '.linux.x86.version') From 1df5f0bbbd2acb4eefe0c12ce9a95e65d1d1f83f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 15 Mar 2021 14:31:51 +0000 Subject: [PATCH 088/117] fix(start): revert commit removing quotes from tmux This reverts commit 3d396049a650069fa332611b92148618c610451c. This commit broke start parameters --- 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 b65e8d260..e06a0e3e5 100755 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -72,7 +72,7 @@ fn_start_tmux(){ echo "${version}" >> "${lockdir}/${selfname}.lock" echo "${port}" >> "${lockdir}/${selfname}.lock" cd "${executabledir}" || exit - tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" ${preexecutable} ${executable} ${startparameters} 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" + tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${startparameters}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" # Create logfile. touch "${consolelog}" From 641109750a2bdbcaac6c12ce6c4837c7ebc3ec91 Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 15 Mar 2021 20:43:48 +0100 Subject: [PATCH 089/117] fix(valheim): disable queryport if public is set to 0 (#3374) --- lgsm/functions/info_parms.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index f5533717f..f2496ce5d 100755 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -237,7 +237,11 @@ fn_info_parms_ut(){ fn_info_parms_vh(){ port=${port:-"0"} - queryport=$((port + 1)) + if [ "${public}" != "0" ]; then + queryport=$((port + 1)) + else + querymode="1" + fi gameworld=${gameworld:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"} servername=${servername:-"NOT SET"} From 23f6c9a35ca8e194dc7ae5dc1a73c03a6c04c4ad Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 15 Mar 2021 20:02:33 +0000 Subject: [PATCH 090/117] fix(config): parms setting will work again if present in configs (#3381) * fix(config): parms setting will work again if present in configs This will allow the legacy "parms" to still function --- linuxgsm.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/linuxgsm.sh b/linuxgsm.sh index 0182d24db..86957eb39 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -465,7 +465,25 @@ else elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/_default.cfg"; then eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/_default.cfg")" fi + + # For legacy configs that still use parms= 15.03.21 + if grep -qE "^[[:blank:]]*parms=" "${configdirserver}/secrets-${selfname}.cfg"; then + eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")" + elif grep -qE "^[[:blank:]]*parms=" "${configdirserver}/${selfname}.cfg"; then + eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/${selfname}.cfg")" + elif grep -qE "^[[:blank:]]*parms=" "${configdirserver}/secrets-common.cfg"; then + eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/secrets-common.cfg")" + elif grep -qE "^[[:blank:]]*parms=" "${configdirserver}/common.cfg"; then + eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/common.cfg")" + elif grep -qE "^[[:blank:]]*parms=" "${configdirserver}/_default.cfg"; then + eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/_default.cfg")" + fi + + if [ -n "${parms}" ]; then + startparameters="${parms}" + fi } + fn_reload_startparameters # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then From 342c48c9cf0f699585ffa45a459149adf1faf972 Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 15 Mar 2021 21:04:30 +0100 Subject: [PATCH 091/117] fix(core): fix start paramerter reloading (#3380) * fix(core): fix start paramerter reloading Co-authored-by: Daniel Gibbs --- linuxgsm.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/linuxgsm.sh b/linuxgsm.sh index 86957eb39..615ed9b41 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -453,7 +453,7 @@ else # shellcheck source=/dev/null source "${servercfgfullpath}" fi - + # reload startparameters. if grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/secrets-${selfname}.cfg"; then eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")" elif grep -qE "^[[:blank:]]*startparameters=" "${configdirserver}/${selfname}.cfg"; then @@ -466,6 +466,18 @@ else eval startparameters="$(sed -nr 's/^ *startparameters=(.*)$/\1/p' "${configdirserver}/_default.cfg")" fi +# reload preexecutable. + if grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/secrets-${selfname}.cfg"; then + eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")" + elif grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/${selfname}.cfg"; then + eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/${selfname}.cfg")" + elif grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/secrets-common.cfg"; then + eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/secrets-common.cfg")" + elif grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/common.cfg"; then + eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/common.cfg")" + elif grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/_default.cfg"; then + eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/_default.cfg")" + # For legacy configs that still use parms= 15.03.21 if grep -qE "^[[:blank:]]*parms=" "${configdirserver}/secrets-${selfname}.cfg"; then eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")" From 5ad8422784afacc32bdd4a385d22ec85b6e147aa Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 15 Mar 2021 22:48:48 +0000 Subject: [PATCH 092/117] Release v21.2.2 --- lgsm/functions/core_functions.sh | 2 +- linuxgsm.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 6f232a18d..89b0ef0fa 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v21.2.1" +modulesversion="v21.2.2" # Core diff --git a/linuxgsm.sh b/linuxgsm.sh index 615ed9b41..05ec72e53 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.1" +version="v21.2.2" shortname="core" gameservername="core" commandname="CORE" diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index d5a2919ee..c4a716aa9 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.1" +version="v21.2.2" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 792ceb2a6..ff1eec547 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.1" +version="v21.2.2" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index d6006c669..ce24f3df0 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.1" +version="v21.2.2" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 344c9083e..d867b41ac 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.1" +version="v21.2.2" shortname="ts3" gameservername="ts3server" commandname="CORE" From 532443eafeee33706399a980070be70e2d5693fd Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Mon, 15 Mar 2021 22:57:04 +0000 Subject: [PATCH 093/117] Release v21.2.2 --- linuxgsm.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/linuxgsm.sh b/linuxgsm.sh index 05ec72e53..08bb0975f 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -477,7 +477,8 @@ else eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/common.cfg")" elif grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/_default.cfg"; then eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/_default.cfg")" - + fi + # For legacy configs that still use parms= 15.03.21 if grep -qE "^[[:blank:]]*parms=" "${configdirserver}/secrets-${selfname}.cfg"; then eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")" From 0068857b9363fb86e55a0f3d64c54ca93e6032c1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 26 Mar 2021 23:54:04 +0000 Subject: [PATCH 094/117] fix(arma3): increase glibc requirement to 2.27 (#3408) --- lgsm/config-default/config-lgsm/arma3server/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/arma3server/_default.cfg b/lgsm/config-default/config-lgsm/arma3server/_default.cfg index d7da37cf1..7b338811a 100644 --- a/lgsm/config-default/config-lgsm/arma3server/_default.cfg +++ b/lgsm/config-default/config-lgsm/arma3server/_default.cfg @@ -166,7 +166,7 @@ consoleinteract="no" # Do not edit gamename="ARMA 3" engine="realvirtuality" -glibc="2.13" +glibc="2.27" #### Directories #### # Edit with care From 4c9ea848a03ea137c8106431794773db4c73bde5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 26 Mar 2021 23:56:50 +0000 Subject: [PATCH 095/117] fix(alert): correct discord avatar from png to jpg (#3410) --- lgsm/functions/alert_discord.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/alert_discord.sh b/lgsm/functions/alert_discord.sh index b8467eecc..1d047b60b 100755 --- a/lgsm/functions/alert_discord.sh +++ b/lgsm/functions/alert_discord.sh @@ -15,13 +15,13 @@ fi json=$(cat < Date: Sat, 27 Mar 2021 00:05:47 +0000 Subject: [PATCH 096/117] fix(rust): increase rust query delay (#3412) 5 mins is not enough for some servers to load and query to become available --- lgsm/config-default/config-lgsm/rustserver/_default.cfg | 2 +- lgsm/functions/check_deps.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/config-default/config-lgsm/rustserver/_default.cfg b/lgsm/config-default/config-lgsm/rustserver/_default.cfg index 424cafabf..5d4808dc7 100644 --- a/lgsm/config-default/config-lgsm/rustserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rustserver/_default.cfg @@ -108,7 +108,7 @@ logdays="7" ## Monitor | https://docs.linuxgsm.com/commands/monitor # Query delay time -querydelay="5" +querydelay="10" ## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors ansi="on" diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 94e48e672..50109b2f6 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -350,7 +350,7 @@ fn_deps_build_debian(){ if [ "${shortname}" != "ts3" ]&&[ "${shortname}" != "mumble" ]&&[ "${shortname}" != "mc" ]&&[ "${shortname}" != "pmc" ]&&[ "${shortname}" != "wmc" ]&&[ "${engine}" != "renderware" ]; then if [ "${arch}" == "x86_64" ]; then # lib32gcc1 is now called lib32gcc-s1 in debian 11 - if { [ "${distroid}" == "debian" ]&&[ "${distroversion}" == "11" ]; }|| { [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; } ||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.10" ]; }; then + if { [ "${distroid}" == "debian" ]&&[ "${distroversion}" == "11" ]; }||{ [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; }||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.10" ]; }; then array_deps_required+=( lib32gcc-s1 lib32stdc++6 ) else array_deps_required+=( lib32gcc1 lib32stdc++6 ) From 631c22a1ee63e7c5287f88d0edce4b36b123093d Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 27 Mar 2021 00:10:08 +0000 Subject: [PATCH 097/117] feat(mcbserver): gamedig is now supported (#3389) Make sure gamedig is updated --- lgsm/config-default/config-lgsm/mcbserver/_default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgsm/config-default/config-lgsm/mcbserver/_default.cfg b/lgsm/config-default/config-lgsm/mcbserver/_default.cfg index abad7f61c..d5ad3b59f 100644 --- a/lgsm/config-default/config-lgsm/mcbserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/mcbserver/_default.cfg @@ -122,7 +122,7 @@ stopmode="5" # 3: gamedig # 4: gsquery # 5: tcp -querymode="4" +querymode="2" querytype="minecraftbe" ## Console type From 5a5a12525bd6cc346da7aceb787642293d774bf0 Mon Sep 17 00:00:00 2001 From: jobhh Date: Sun, 28 Mar 2021 22:44:20 +0200 Subject: [PATCH 098/117] feat(etl): update ET: Legacy to 2.77.1 (#3417) --- 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 bf0233177..b6b9f5240 100755 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -27,7 +27,7 @@ fn_install_server_files(){ elif [ "${shortname}" == "codwaw" ]; then remote_fileurl="http://linuxgsm.download/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.xz"; local_filedir="${tmpdir}"; local_filename="codwaw-lnxded-1.7-full.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="2c6be1bb66ea631b9b2e7ae6216c6680" elif [ "${shortname}" == "etl" ]; then - remote_fileurl="http://linuxgsm.download/WolfensteinEnemyTerritory/etlegacy-v2.77-i386-et-260b.tar.xz"; local_filedir="${tmpdir}"; local_filename="etlegacy-v2.77-i386-et-260b.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="7f301708f5bb1272c243f9e2d1b735dc" + remote_fileurl="http://linuxgsm.download/WolfensteinEnemyTerritory/etlegacy-v2.77.1-i386-et-260b.tar.xz"; local_filedir="${tmpdir}"; local_filename="etlegacy-v2.77.1-i386-et-260b.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="cc307a9232abd3999be499b42d8e4ea8" elif [ "${shortname}" == "mohaa" ]; then remote_fileurl="http://linuxgsm.download/MedalofHonorAlliedAssault/moh_revival_v1.12_RC3.5.1.tar.xz"; local_filedir="${tmpdir}"; local_filename="moh_revival_v1.12_RC3.5.1.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="7c664538999252eeaf2b6d9949416480" elif [ "${shortname}" == "ns" ]; then From 53fdf7c7058d3f990792691340d2adc398301ee5 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 28 Mar 2021 21:46:36 +0100 Subject: [PATCH 099/117] fix(rust): resolve rust seed not loading to server (#3407) --- lgsm/functions/command_debug.sh | 2 ++ lgsm/functions/command_start.sh | 1 + lgsm/functions/core_legacy.sh | 3 ++- lgsm/functions/info_messages.sh | 19 +++++++++++++++++-- linuxgsm.sh | 3 +-- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 7925e3ff9..aac203ac9 100755 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -67,6 +67,8 @@ fi if [ "${serverpassword}" ]; then echo -e "${lightblue}Server password:\t${default}${serverpassword}" fi + +fn_reload_startparameters echo -e "${lightblue}Start parameters:${default}" if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then echo -e "${executable} ${startparameters} -debug" diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index e06a0e3e5..caa933320 100755 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -71,6 +71,7 @@ fn_start_tmux(){ date '+%s' > "${lockdir}/${selfname}.lock" echo "${version}" >> "${lockdir}/${selfname}.lock" echo "${port}" >> "${lockdir}/${selfname}.lock" + fn_reload_startparameters cd "${executabledir}" || exit tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${startparameters}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" diff --git a/lgsm/functions/core_legacy.sh b/lgsm/functions/core_legacy.sh index e28cb7457..811acfbba 100755 --- a/lgsm/functions/core_legacy.sh +++ b/lgsm/functions/core_legacy.sh @@ -79,5 +79,6 @@ if [ -z "${wsstartmap}" ]; then fi fn_parms(){ -parms="${startparameters}" + fn_reload_startparameters + parms="${startparameters}" } diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index e42236aa8..7ff432079 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -347,7 +347,7 @@ fn_info_message_gameserver(){ fi if [ -n "${defaultscenario}" ]; then - # Current scenario + # Current scenario (Insurgency: Sandstorm) if [ -n "${gdgamemode}" ]; then echo -e "${lightblue}Current scenario:\t${default}${gdgamemode}" fi @@ -425,7 +425,22 @@ fn_info_message_gameserver(){ # Save interval (Rust) if [ -n "${saveinterval}" ]; then - echo -e "${lightblue}ASE:\t${default}${saveinterval} s" + echo -e "${lightblue}Save interval:\t${default}${saveinterval}s" + fi + + # Seed (Rust) + if [ -n "${seed}" ]; then + echo -e "${lightblue}Seed:\t${default}${seed}" + fi + + # Salt (Rust) + if [ -n "${salt}" ]; then + echo -e "${lightblue}Salt:\t${default}${salt}" + fi + + # World Size (Rust) + if [ -n "${worldsize}" ]; then + echo -e "${lightblue}World size:\t${default}${worldsize}m" fi # Random map rotation mode (Squad and Post Scriptum) diff --git a/linuxgsm.sh b/linuxgsm.sh index 08bb0975f..ea29b72a6 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -478,7 +478,7 @@ else elif grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/_default.cfg"; then eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/_default.cfg")" fi - + # For legacy configs that still use parms= 15.03.21 if grep -qE "^[[:blank:]]*parms=" "${configdirserver}/secrets-${selfname}.cfg"; then eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")" @@ -497,7 +497,6 @@ else fi } - fn_reload_startparameters # Load the linuxgsm.sh in to tmpdir. If missing download it. if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5" From 669e2c9227b3a58051ee715469448dfd2fc39b90 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 28 Mar 2021 22:25:02 +0100 Subject: [PATCH 100/117] Release v21.2.3 --- lgsm/functions/core_functions.sh | 2 +- linuxgsm.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 89b0ef0fa..ec1a98531 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v21.2.2" +modulesversion="v21.2.3" # Core diff --git a/linuxgsm.sh b/linuxgsm.sh index ea29b72a6..c4df71037 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.2" +version="v21.2.3" shortname="core" gameservername="core" commandname="CORE" diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index c4a716aa9..f31d4ac96 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.2" +version="v21.2.3" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index ff1eec547..7203ac0d2 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.2" +version="v21.2.3" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index ce24f3df0..420732839 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.2" +version="v21.2.3" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index d867b41ac..afc68811a 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.2" +version="v21.2.3" shortname="ts3" gameservername="ts3server" commandname="CORE" From 079ec1e8d4d2e96f590620d9e26e853af52bf616 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 6 Apr 2021 10:54:44 +0100 Subject: [PATCH 101/117] feat(wipe): resolve random seed and simplify wipe (#3420) merge merge merge merge merge merge MERGE merge merge merge merge message about Rust+ data merge merge merge merge merge mertge merge merge merge merge merge merge --- .../config-lgsm/rustserver/_default.cfg | 8 +- lgsm/data/bo_header.jpg | Bin 0 -> 19790 bytes lgsm/data/rust_header.jpg | Bin 0 -> 117845 bytes lgsm/functions/command_wipe.sh | 267 +++++++----------- lgsm/functions/core_getopt.sh | 6 +- lgsm/functions/core_messages.sh | 22 ++ lgsm/functions/fix_rust.sh | 10 + lgsm/functions/info_messages.sh | 6 + lgsm/functions/info_parms.sh | 15 +- lgsm/functions/install_modules.sh | 20 -- lgsm/functions/query_gamedig.sh | 8 +- lgsm/functions/update_papermc.sh | 2 +- 12 files changed, 169 insertions(+), 195 deletions(-) create mode 100644 lgsm/data/bo_header.jpg create mode 100644 lgsm/data/rust_header.jpg delete mode 100755 lgsm/functions/install_modules.sh diff --git a/lgsm/config-default/config-lgsm/rustserver/_default.cfg b/lgsm/config-default/config-lgsm/rustserver/_default.cfg index 5d4808dc7..a29d76374 100644 --- a/lgsm/config-default/config-lgsm/rustserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rustserver/_default.cfg @@ -16,16 +16,18 @@ appport=28082 rconpassword="CHANGE_ME" rconweb="1" # Value is: 1 for the Facepunch web panel, Rustadmin desktop and Rustadmin Online; 0 for RCON tools like Rusty. servername="Rust" -gamemode="vanilla" # values: vanilla, softcore ( Doc: https://wiki.facepunch.com/rust/server-gamemodes ) -maxplayers="50" +gamemode="vanilla" # Values: vanilla, softcore ( Doc: https://wiki.facepunch.com/rust/server-gamemodes ) +serverlevel="Procedural Map" # Values: Procedural Map, Barren, HapisIsland, SavasIsland +customlevelurl="" # Custom level url seed="" # range: 1-2147483647, used to reproduce a procedural map. salt="" # range: unknown, used to recover a known setting from an existing map. +maxplayers="50" worldsize="3000" # default: 3000, range: 1000-6000, map size in meters. saveinterval="300" # Auto-save in seconds. tickrate="30" # default: 30, range: 15-100. ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile" +startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.level \"${serverlevel}\" +server.seed ${seed} +server.salt ${salt} +server.levelurl ${customlevelurl} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile" #### LinuxGSM Settings #### diff --git a/lgsm/data/bo_header.jpg b/lgsm/data/bo_header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d63ee5c3da594ffd9b7d71080bccd535ba662795 GIT binary patch literal 19790 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 literal 0 HcmV?d00001 diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh index 63cb830fb..d2d05defc 100755 --- a/lgsm/functions/command_wipe.sh +++ b/lgsm/functions/command_wipe.sh @@ -12,9 +12,9 @@ fn_firstcommand_set # Provides an exit code upon error. fn_wipe_exit_code(){ - ((exitcode=$?)) + exitcode=$? if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${currentaction}" + fn_print_fail_eol_nl core_exit.sh else fn_print_ok_eol_nl @@ -22,209 +22,160 @@ fn_wipe_exit_code(){ } # Removes files to wipe server. -fn_wipe_server_files(){ - fn_print_start_nl "Wiping server" - fn_script_log_info "Wiping server" - # Wipe procedural map. - if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.map")" ]; then - echo -en "removing procedural map proceduralmap.*.map file(s)..." - fn_sleep_time - fn_script_log_info "Removing procedural map file(s): ${serveridentitydir}/proceduralmap.*.map" - find "${serveridentitydir:?}" -type f -name "proceduralmap.*.map" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - fn_sleep_time - else - echo -e "no procedural map file to remove" - fn_sleep_time - fn_script_log_pass "No procedural map file to remove" - fi - # Wipe Barren map. - if [ -n "$(find "${serveridentitydir}" -type f -name "barren*.map")" ]; then - echo -en "removing barren map barren*.map file(s)..." - fn_sleep_time - fn_script_log_info "Removing map file(s): ${serveridentitydir}/barren*.map" - find "${serveridentitydir:?}" -type f -name "barren*.map" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - fn_sleep_time - else - echo -e "no barren map file to remove" - fn_sleep_time - fn_script_log_pass "No barren map file to remove" - fi - # Wipe custom map. - if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ]; then - echo -en "removing custom map file(s)..." - fn_sleep_time - fn_script_log_info "Removing map file(s): ${serveridentitydir}/*.map" - find "${serveridentitydir:?}" -type f -name "*.map" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - fn_sleep_time - else - echo -e "no map file to remove" - fn_sleep_time - fn_script_log_pass "No map file to remove" - fi - # Wipe custom map save. - if [ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]; then - echo -en "removing map save *.sav* file(s)..." - fn_sleep_time - fn_script_log_info "Removing map save(s): ${serveridentitydir}/*.sav*" - find "${serveridentitydir:?}" -type f -name "*.sav*" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - fn_sleep_time - else - echo -e "no map save to remove" - fn_sleep_time - fn_script_log_pass "No map save to remove." - fi - # Wipe user dir, might be a legacy thing, maybe to be removed. - if [ -d "${serveridentitydir}/user" ]; then - echo -en "removing user directory..." - fn_sleep_time - fn_script_log_info "removing user directory: ${serveridentitydir}/user" - rm -rf "${serveridentitydir:?}/user" - fn_wipe_exit_code - fn_sleep_time - # We do not print additional information if there is nothing to remove since this might be obsolete. - fi - # Wipe storage dir, might be a legacy thing, maybe to be removed. - if [ -d "${serveridentitydir}/storage" ]; then - echo -en "removing storage directory..." - fn_sleep_time - fn_script_log_info "removing storage directory: ${serveridentitydir}/storage" - rm -rf "${serveridentitydir:?}/storage" - fn_wipe_exit_code - fn_sleep_time - # We do not print additional information if there is nothing to remove since this might be obsolete. - fi - # Wipe sv.files. - if [ -n "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then - echo -en "removing server misc srv.files*.db file(s)..." - fn_sleep_time - fn_script_log_info "Removing server misc files: ${serveridentitydir}/sv.files.*.db" - find "${serveridentitydir:?}" -type f -name "sv.files.*.db" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - fn_sleep_time - # No further information if not found because it should I could not get this file showing up. - fi - # Wipe player death files. - if [ -n "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]; then - echo -en "removing player deaths player.deaths.*.db file(s)..." - fn_sleep_time - fn_script_log_info "Removing player death files: ${serveridentitydir}/player.deaths.*.db" - find "${serveridentitydir:?}" -type f -name "player.deaths.*.db" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - fn_sleep_time - else - echo -e "no player death to remove" - fn_sleep_time - fn_script_log_pass "No player death to remove" - fi - # Wipe player states files - if [ -n "$(find "${serveridentitydir}" -type f -name "player.states.*.db")" ]; then - echo -en "removing player states player.states.*.db file(s)..." - fn_sleep_time - fn_script_log_info "Removing player states: ${serveridentitydir}/player.states.*.db" - find "${serveridentitydir:?}" -type f -name "player.states.*.db" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - fn_sleep_time - else - echo -e "no player states to remove" - fn_sleep_time - fn_script_log_pass "No player states to remove" - fi - # Wipe blueprints only if full-wipe command was used. - if [ "${fullwipe}" == "1" ]; then - if [ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]; then - echo -en "removing blueprints player.blueprints.*.db file(s)..." +fn_wipe_files(){ + fn_print_start_nl "${wipetype}" + fn_script_log_info "${wipetype}" + + # Remove Map files + if [ -n "${serverwipe}" ]||[ -n "${mapwipe}" ]; then + if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ]; then + echo -en "removing .map file(s)..." + fn_script_log_info "removing *.map file(s)" fn_sleep_time - fn_script_log_info "Removing blueprint file(s): ${serveridentitydir}/player.blueprints.*.db" - find "${serveridentitydir:?}" -type f -name "player.blueprints.*.db" -delete | tee -a "${lgsmlog}" + find "${serveridentitydir:?}" -type f -name "*.map" -printf "%f\n" >> "${lgsmlog}" + find "${serveridentitydir:?}" -type f -name "*.map" -delete | tee -a "${lgsmlog}" fn_wipe_exit_code + else + echo -e "no .map file(s) to remove" + fn_sleep_time + fn_script_log_pass "no .map file(s) to remove" + fi + fi + # Remove Save files. + if [ -n "${serverwipe}" ]||[ -n "${mapwipe}" ]; then + if [ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]; then + echo -en "removing .sav file(s)..." + fn_script_log_info "removing .sav file(s)" fn_sleep_time + find "${serveridentitydir:?}" -type f -name "*.sav*" -printf "%f\n" >> "${lgsmlog}" + find "${serveridentitydir:?}" -type f -name "*.sav*" -delete + fn_wipe_exit_code else - echo -e "no blueprint file to remove" + echo -e "no .sav file(s) to remove" + fn_script_log_pass "no .sav file(s) to remove" fn_sleep_time - fn_script_log_pass "No blueprint file to remove" fi - elif [ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]; then - echo -e "keeping blueprints" - fn_sleep_time - fn_script_log_info "Keeping blueprints" - else - echo -e "no blueprints found" - fn_sleep_time - fn_script_log_pass "No blueprints found" fi - # Wipe some logs that might be there. - if [ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then - echo -en "removing log files..." - fn_sleep_time - fn_script_log_info "Removing log files: ${serveridentitydir}/Log.*.txt" - find "${serveridentitydir:?}" -type f -name "Log.*.txt" -delete - fn_wipe_exit_code - fn_sleep_time - # We do not print additional information if there are no logs to remove. + # Remove db files for full wipe. + # Excluding player.tokens.db for Rust+. + if [ -n "${serverwipe}" ]; then + if [ -n "$(find "${serveridentitydir}" -type f ! -name 'player.tokens.db' -name "*.db")" ]; then + echo -en "removing .db file(s)..." + fn_script_log_info "removing .db file(s)" + fn_sleep_time + find "${serveridentitydir:?}" -type f ! -name 'player.tokens.db' -name "*.db" -printf "%f\n" >> "${lgsmlog}" + find "${serveridentitydir:?}" -type f ! -name 'player.tokens.db' -name "*.db" -delete + fn_wipe_exit_code + else + echo -e "no .db file(s) to remove" + fn_sleep_time + fn_script_log_pass "no .db file(s) to remove" + fi fi } -fn_stop_warning(){ - fn_print_warn "this game server will be stopped during wipe" - fn_script_log_warn "this game server will be stopped during wipe" +fn_map_wipe_warning(){ + fn_print_warn "Map wipe will reset the map data and keep blueprint data" + fn_script_log_warn "Map wipe will reset the map data and keep blueprint data" totalseconds=3 for seconds in {3..1}; do - fn_print_warn "this game server will be stopped during wipe: ${totalseconds}" + fn_print_warn "Map wipe will reset the map data and keep blueprint data: ${totalseconds}" totalseconds=$((totalseconds - 1)) sleep 1 if [ "${seconds}" == "0" ]; then break fi done - fn_print_warn_nl "this game server will be stopped during wipe" + fn_print_warn_nl "Map wipe will reset the map data and keep blueprint data" } -fn_wipe_warning(){ - fn_print_warn "wipe is about to start" - fn_script_log_warn "wipe is about to start" +fn_full_wipe_warning(){ + fn_print_warn "Server wipe will reset the map data and remove blueprint data" + fn_script_log_warn "Server wipe will reset the map data and remove blueprint data" totalseconds=3 for seconds in {3..1}; do - fn_print_warn "wipe is about to start: ${totalseconds}" + fn_print_warn "Server wipe will reset the map data and remove blueprint data: ${totalseconds}" totalseconds=$((totalseconds - 1)) sleep 1 if [ "${seconds}" == "0" ]; then break fi done - fn_print_warn "wipe is about to start" + fn_print_warn_nl "Server wipe will reset the map data and remove blueprint data" } -# Will change the seed everytime the wipe command is run if the seed in config is not set. +# Will change the seed if the seed is not defined by the user. fn_wipe_random_seed(){ - shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt" + if [ -f "${datadir}/${selfname}-seed.txt" ]&&[ -n "${randomseed}" ]; then + shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt" + seed=$(cat "${datadir}/${selfname}-seed.txt") + randomseed=1 + echo -en "generating new random seed (${cyan}${seed}${default})..." + fn_script_log_pass "generating new random seed (${cyan}${seed}${default})" + fn_sleep_time + fn_print_ok_eol_nl + fi +} + +# A summary of what wipe is going to do. +fn_wipe_details(){ + fn_print_information_nl "Wipe does not remove Rust+ data." + echo -en "* Wipe map data: " + if [ -n "${serverwipe}" ]||[ -n "${mapwipe}" ]; then + fn_print_yes_eol_nl + else + fn_print_no_eol_nl + fi + + echo -en "* Wipe blueprint data: " + if [ -n "${serverwipe}" ]; then + fn_print_yes_eol_nl + else + fn_print_no_eol_nl + fi + + echo -en "* Change Procedural Map seed: " + if [ -n "${randomseed}" ]; then + fn_print_yes_eol_nl + else + fn_print_no_eol_nl + fi } fn_print_dots "" check.sh +fix_rust.sh # Check if there is something to wipe. -if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then - fn_wipe_warning +if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]&&[ -n "$(find "${serveridentitydir}" -type f ! -name 'player.tokens.db' -name "*.db")" ]; then + if [ -n "${serverwipe}" ]; then + wipetype="Full wipe" + fn_full_wipe_warning + fn_wipe_details + elif [ -n "${mapwipe}" ]; then + wipetype="Map wipe" + fn_map_wipe_warning + fn_wipe_details + fi check_status.sh if [ "${status}" != "0" ]; then - fn_stop_warning + fn_print_restart_warning exitbypass=1 command_stop.sh fn_firstcommand_reset - fn_wipe_server_files + fn_wipe_files + fn_wipe_random_seed + fn_print_complete_nl "${wipetype}" + fn_script_log_pass "${wipetype}" exitbypass=1 command_start.sh fn_firstcommand_reset else - fn_wipe_server_files + fn_wipe_files + fn_wipe_random_seed + fn_print_complete_nl "${wipetype}" + fn_script_log_pass "${wipetype}" fi - fn_print_complete_nl "Wiping ${selfname}" - fn_script_log_pass "Wiping ${selfname}" - fn_wipe_random_seed else fn_print_ok_nl "Wipe not required" fn_script_log_pass "Wipe not required" diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh index 904bad37d..ea3c84f6d 100755 --- a/lgsm/functions/core_getopt.sh +++ b/lgsm/functions/core_getopt.sh @@ -40,8 +40,8 @@ cmd_mods_update=( "mu;mods-update" "command_mods_update.sh" "Update installed mo # Server specific. cmd_change_password=( "pw;change-password" "command_ts3_server_pass.sh" "Change TS3 serveradmin password." ) cmd_install_default_resources=( "ir;install-default-resources" "command_install_resources_mta.sh" "Install the MTA default resources." ) -cmd_wipe=( "w;wipe;wi" "command_wipe.sh" "Map assets are wiped and blueprints are kept." ) -cmd_full_wipe=( "fw;full-wipe;wa;wipeall" "fullwipe=1; command_wipe.sh" "Map assets and blueprints are wiped." ) +cmd_fullwipe=( "fw;full-wipe;wa;wipeall" "serverwipe=1; command_wipe.sh" "Reset the map and remove blueprint data." ) +cmd_mapwipe=( "mw;map-wipe;w;wipe;wi" "mapwipe=1; command_wipe.sh" "Reset the map and keep blueprint 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." ) @@ -105,7 +105,7 @@ fi # Unreal exclusive. if [ "${shortname}" == "rust" ]; then - currentopt+=( "${cmd_wipe[@]}" "${cmd_full_wipe[@]}" ) + currentopt+=( "${cmd_fullwipe[@]}" "${cmd_mapwipe[@]}" ) fi if [ "${engine}" == "unreal2" ]; then if [ "${shortname}" == "ut2k4" ]; then diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh index 8dfca6661..463f833c2 100755 --- a/lgsm/functions/core_messages.sh +++ b/lgsm/functions/core_messages.sh @@ -375,6 +375,28 @@ fn_prompt_message(){ # On-Screen End of Line ################################## +# YES +fn_print_yes_eol(){ + echo -en "${cyan}YES${default}" + fn_sleep_time +} + +fn_print_yes_eol_nl(){ + echo -e "${cyan}YES${default}" + fn_sleep_time +} + +# NO +fn_print_no_eol(){ + echo -en "${red}NO${default}" + fn_sleep_time +} + +fn_print_no_eol_nl(){ + echo -e "${red}NO${default}" + fn_sleep_time +} + # OK fn_print_ok_eol(){ echo -en "${green}OK${default}" diff --git a/lgsm/functions/fix_rust.sh b/lgsm/functions/fix_rust.sh index 1e62898df..4488377a3 100755 --- a/lgsm/functions/fix_rust.sh +++ b/lgsm/functions/fix_rust.sh @@ -9,3 +9,13 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" # Fixes: [Raknet] Server Shutting Down (Shutting Down). export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/RustDedicated_Data/Plugins/x86_64" + +# Part of random seed feature. +# If seed is not defined by user generate a seed file. +if [ -z "${seed}" ]; then + if [ ! -f "${datadir}/${selfname}-seed.txt" ]; then + shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt" + fi + seed="$(cat "${datadir}/${selfname}-seed.txt")" + randomseed=1 +fi diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index 7ff432079..391964c2a 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -262,6 +262,11 @@ fn_info_message_gameserver(){ echo -e "${lightblue}Beta Password:\t${default}${betapassword}" fi + # Server Version + if [ -n "${gdversion}" ]; then + echo -e "${lightblue}Server Version:\t${default}${gdversion}" + fi + # Server ip echo -e "${lightblue}Server IP:\t${default}${ip}:${port}" @@ -1141,6 +1146,7 @@ fn_info_message_rust(){ echo -e "${lightblue}DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL${default}" echo -e "> Game/Query\tINBOUND\t${port}\tudp" echo -e "> RCON\tINBOUND\t${rconport}\ttcp" + echo -e "> App\tINBOUND\t${appport}\ttcp" } | column -s $'\t' -t } diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh index f2496ce5d..47148f4b3 100755 --- a/lgsm/functions/info_parms.sh +++ b/lgsm/functions/info_parms.sh @@ -135,19 +135,16 @@ fn_info_parms_rust(){ servername=${servername:-"NOT SET"} port=${port:-"0"} queryport=${port:-"0"} + appport=${appport:-"0"} rconport=${rconport:-"0"} + gamemode=${gamemode:-"NOT SET"} + maxplayers=${maxplayers:-"0"} rconpassword=${rconpassword:-"NOT SET"} rconweb=${rconweb:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - saveinterval=${saveinterval:-"0"} tickrate=${tickrate:-"0"} - # Part of random seed feature. - if [ -z "${seed}" ]; then - if [ ! -f "${datadir}/${selfname}-seed.txt" ]; then - shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt" - fi - seed=$(cat "${datadir}/${selfname}-seed.txt") - fi + saveinterval=${saveinterval:-"0"} + serverlevel=${serverlevel:-"NOT SET"} + worldsize=${worldsize:-"0"} } fn_info_parms_samp(){ diff --git a/lgsm/functions/install_modules.sh b/lgsm/functions/install_modules.sh deleted file mode 100755 index af1050a94..000000000 --- a/lgsm/functions/install_modules.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# LinuxGSM install_modules.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Downloads all modules on install. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "${lightyellow}Downloading LinuxGSM Modules${default}" -echo -e "=================================" - -fn_fetch_file "https://github.com/GameServerManagers/LinuxGSM/archive/master.tar.gz" "${tmpdir}" "master.tar.gz" "nochmodx" "norun" "noforce" "nohash" -fn_dl_extract "${tmpdir}" "master.tar.gz" "${tmpdir}" -cp "${tmpdir}/LinuxGSM-master/lgsm/functions"/*.sh "${functionsdir}" -cp "${tmpdir}/LinuxGSM-master/lgsm/functions"/*.py "${functionsdir}" -chmod +x "${functionsdir}"/* -command_update_linuxgsm.sh -fn_firstcommand_reset diff --git a/lgsm/functions/query_gamedig.sh b/lgsm/functions/query_gamedig.sh index 4d479a4c0..123d8c86c 100755 --- a/lgsm/functions/query_gamedig.sh +++ b/lgsm/functions/query_gamedig.sh @@ -46,7 +46,7 @@ if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ]; # maxplayers. gdmaxplayers=$(echo "${gamedigraw}" | jq -re '.maxplayers') if [ "${gdmaxplayers}" == "null" ]; then - unset maxplayers + unset gdmaxplayers elif [ "${gdmaxplayers}" == "[]" ]; then gdmaxplayers=0 fi @@ -68,5 +68,11 @@ if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ]; if [ "${gdbots}" == "null" ]||[ "${gdbots}" == "0" ]; then unset gdbots fi + + # server version. + gdversion=$(echo "${gamedigraw}" | jq -re '.raw.version') + if [ "${gdversion}" == "null" ]||[ "${gdversion}" == "0" ]; then + unset gdversion + fi fi fi diff --git a/lgsm/functions/update_papermc.sh b/lgsm/functions/update_papermc.sh index ae512c0ba..2e669d93d 100644 --- a/lgsm/functions/update_papermc.sh +++ b/lgsm/functions/update_papermc.sh @@ -74,7 +74,7 @@ fn_update_papermc_remotebuild(){ fn_update_papermc_compare(){ fn_print_dots "Checking for update: ${remotelocation}" sleep 0.5 - if [ "${localbuild}" != "${remotebuild}" ]||[ "${forceupdate}" == "1" ]; then + if [ "${localbuild}" != "${remotebuild}" ]||[ "${forceupdate}" == "1" ]; then fn_print_ok_nl "Checking for update: ${remotelocation}" echo -en "\n" echo -e "Update available for version ${paperversion}" From 8ea23f49f15dcb2a1e58d2c590db142746cbf3e6 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 6 Apr 2021 11:49:50 +0100 Subject: [PATCH 102/117] remove +server.levelurl from parameters --- lgsm/config-default/config-lgsm/rustserver/_default.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lgsm/config-default/config-lgsm/rustserver/_default.cfg b/lgsm/config-default/config-lgsm/rustserver/_default.cfg index a29d76374..c956b492c 100644 --- a/lgsm/config-default/config-lgsm/rustserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/rustserver/_default.cfg @@ -18,7 +18,7 @@ rconweb="1" # Value is: 1 for the Facepunch web panel, Rustadmin desktop and Rus servername="Rust" gamemode="vanilla" # Values: vanilla, softcore ( Doc: https://wiki.facepunch.com/rust/server-gamemodes ) serverlevel="Procedural Map" # Values: Procedural Map, Barren, HapisIsland, SavasIsland -customlevelurl="" # Custom level url +customlevelurl="" # Custom level url. +server.levelurl \"${customlevelurl}\" seed="" # range: 1-2147483647, used to reproduce a procedural map. salt="" # range: unknown, used to recover a known setting from an existing map. maxplayers="50" @@ -27,7 +27,7 @@ saveinterval="300" # Auto-save in seconds. tickrate="30" # default: 30, range: 15-100. ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.level \"${serverlevel}\" +server.seed ${seed} +server.salt ${salt} +server.levelurl ${customlevelurl} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile" +startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.level \"${serverlevel}\" +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile" #### LinuxGSM Settings #### From ecc455c4fc83d68cfde4324010206d38c5086de3 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 6 Apr 2021 23:25:58 +0100 Subject: [PATCH 103/117] Update labeler.yml --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 248598e23..6b0c0ea06 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,5 +12,5 @@ jobs: - uses: Naturalclar/issue-action@v2.0.2 with: title-or-body: "both" - parameters: '[ {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]} ]' + parameters: '[ {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valhiem"], "labels": ["game: Valheim"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' github-token: "${{ secrets.GITHUB_TOKEN }}" From cd44a0e8497c6af410fab809a11c819cdc63138b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 6 Apr 2021 23:35:43 +0100 Subject: [PATCH 104/117] Update labeler.yml --- .github/workflows/labeler.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 6b0c0ea06..2ed4ffe37 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -1,9 +1,9 @@ name: "Set Issue Label and Assignee" on: issues: - types: [opened] + types: [opened, edited] pull_request: - typed: [opened] + types: [opened, edited] jobs: test: From f07a7aba01c98aa082166ad8667f3a4ccb9e0fa2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 6 Apr 2021 23:38:54 +0100 Subject: [PATCH 105/117] Update labeler.yml --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 2ed4ffe37..f6747e29e 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,5 +12,5 @@ jobs: - uses: Naturalclar/issue-action@v2.0.2 with: title-or-body: "both" - parameters: '[ {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valhiem"], "labels": ["game: Valheim"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' + parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valhiem"], "labels": ["game: Valheim"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' github-token: "${{ secrets.GITHUB_TOKEN }}" From 3873a45798c9b65cb647d78106ae01e4a355e3e2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 6 Apr 2021 23:42:21 +0100 Subject: [PATCH 106/117] Update labeler.yml --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index f6747e29e..484d30d11 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,5 +12,5 @@ jobs: - uses: Naturalclar/issue-action@v2.0.2 with: title-or-body: "both" - parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valhiem"], "labels": ["game: Valheim"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' + parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valheim"], "labels": ["game: Valheim"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' github-token: "${{ secrets.GITHUB_TOKEN }}" From 19ac5610f1d532c5ee2697b800c5b385b8d4a519 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Tue, 6 Apr 2021 23:45:34 +0100 Subject: [PATCH 107/117] Update labeler.yml --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 484d30d11..316f08b98 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,5 +12,5 @@ jobs: - uses: Naturalclar/issue-action@v2.0.2 with: title-or-body: "both" - parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valheim"], "labels": ["game: Valheim"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' + parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature request"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valheim"], "labels": ["game: Valheim"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' github-token: "${{ secrets.GITHUB_TOKEN }}" From 2a7fd6f2dd6b2d5af817ba83ae465c784e2438b1 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 9 Jun 2021 22:35:53 +0100 Subject: [PATCH 108/117] fix(mc): add Java 16 as a dependency requirement for Ubuntu 20.04 and above (#3482) * Added java info to details for game servers that require it * added openjdk-16-jre option for Ubuntu server --- lgsm/functions/check_deps.sh | 16 ++++++++++++++-- lgsm/functions/info_distro.sh | 4 ++++ lgsm/functions/info_messages.sh | 3 +++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 50109b2f6..722a0a4da 100755 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -414,8 +414,20 @@ fn_deps_build_debian(){ # Hurtword/Rust elif [ "${shortname}" == "hw" ]||[ "${shortname}" == "rust" ]; then array_deps_required+=( lib32z1 ) - # Minecraft, Rising World, Wurm - elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]||[ "${shortname}" == "rw" ]; then + # Minecraft, Rising World + elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]; then + javaversion=$(java -version 2>&1 | grep "version") + if [ "${javaversion}" ]; then + # Added for users using Oracle JRE to bypass the check. + javacheck=1 + else + if { [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.04" ]; }||{ [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; }||{ [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "21.04" ]; }||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.04" ]; }||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.10" ]; }||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "21.04" ]; }; then + array_deps_required+=( openjdk-16-jre ) + else + array_deps_required+=( default-jre ) + fi + fi + elif [ "${shortname}" == "rw" ]; then javaversion=$(java -version 2>&1 | grep "version") if [ "${javaversion}" ]; then # Added for users using Oracle JRE to bypass the check. diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index 283d8ed39..7f0dc2b19 100755 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -83,6 +83,10 @@ else fi fi +if [ "$(command -V java 2>/dev/null)" ]; then + javaversion=$(java -version 2>&1 | grep "version") +fi + ## Uptime uptime=$( Date: Wed, 9 Jun 2021 22:42:06 +0100 Subject: [PATCH 109/117] fix(steamcmd): resolve disk write failure bug (#3483) --- lgsm/functions/check_steamcmd.sh | 1 + lgsm/functions/core_steamcmd.sh | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh index 9b84686dc..030cbbf03 100755 --- a/lgsm/functions/check_steamcmd.sh +++ b/lgsm/functions/check_steamcmd.sh @@ -17,5 +17,6 @@ if [ ${shortname} == "ark" ]; then fi fn_check_steamcmd_dir fn_check_steamcmd_dir_legacy +fn_check_steamcmd_steamapp fn_check_steamcmd_user fn_check_steamcmd_exec diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh index ece274f0f..5fbd5db9f 100755 --- a/lgsm/functions/core_steamcmd.sh +++ b/lgsm/functions/core_steamcmd.sh @@ -97,6 +97,13 @@ fn_check_steamcmd_dir_legacy(){ fi } +fn_check_steamcmd_steamapp(){ + # Check that steamapp directory fixes issue #3481 + if [ ! -d "${serverfiles}/steamapps" ]; then + mkdir -p "${serverfiles}/steamapps" + fi +} + fn_check_steamcmd_ark(){ # Checks if SteamCMD exists in # Engine/Binaries/ThirdParty/SteamCMD/Linux From 54aa34a40516777fd62188800c3e5f82170d8ef4 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 9 Jun 2021 22:46:18 +0100 Subject: [PATCH 110/117] v21.2.4 --- lgsm/functions/core_functions.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index ec1a98531..55b23a590 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v21.2.3" +modulesversion="v21.2.4" # Core diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index f31d4ac96..a4686684a 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.3" +version="v21.2.4" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index 7203ac0d2..f39dc0476 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.3" +version="v21.2.4" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index 420732839..a426a07e9 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.3" +version="v21.2.4" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index afc68811a..32cb17c49 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.3" +version="v21.2.4" shortname="ts3" gameservername="ts3server" commandname="CORE" From 9b6d239ca44b699eb3f48e963af46c4f886a2e4f Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Thu, 10 Jun 2021 12:05:41 +0100 Subject: [PATCH 111/117] v21.2.4 --- linuxgsm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linuxgsm.sh b/linuxgsm.sh index c4df71037..7173fe0ba 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.3" +version="v21.2.4" shortname="core" gameservername="core" commandname="CORE" From 9d8c53f5bf7a8addf65a2002337811cc3e280266 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 7 Jul 2021 14:14:51 +0100 Subject: [PATCH 112/117] Update labeler.yml --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 316f08b98..9647a5461 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,5 +12,5 @@ jobs: - uses: Naturalclar/issue-action@v2.0.2 with: title-or-body: "both" - parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature request"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valheim"], "labels": ["game: Valheim"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' + parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature request"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valheim"], "labels": ["game: Valheim"]}, {"keywords": ["Garry's Mod"], "labels": ["game: Garry's Mod"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' github-token: "${{ secrets.GITHUB_TOKEN }}" From 6960cd5c14a901113355574720c13a68e1d06353 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 7 Jul 2021 14:16:51 +0100 Subject: [PATCH 113/117] Update labeler.yml --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 9647a5461..5b9f23012 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,5 +12,5 @@ jobs: - uses: Naturalclar/issue-action@v2.0.2 with: title-or-body: "both" - parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature request"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valheim"], "labels": ["game: Valheim"]}, {"keywords": ["Garry's Mod"], "labels": ["game: Garry's Mod"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' + parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature request"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valheim"], "labels": ["game: Valheim"]}, {"keywords": ["Garry\'s Mod"], "labels": ["game: Garry\'s Mod"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' github-token: "${{ secrets.GITHUB_TOKEN }}" From c0e79e803ab481e6cd9364f8f685a44c1e884d28 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 7 Jul 2021 14:17:58 +0100 Subject: [PATCH 114/117] Update labeler.yml --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 5b9f23012..316f08b98 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,5 +12,5 @@ jobs: - uses: Naturalclar/issue-action@v2.0.2 with: title-or-body: "both" - parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature request"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valheim"], "labels": ["game: Valheim"]}, {"keywords": ["Garry\'s Mod"], "labels": ["game: Garry\'s Mod"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' + parameters: '[ {"keywords": ["Server Request"], "labels": ["type: game server request"]}, {"keywords": ["backup"], "labels": ["command: backup"]}, {"keywords": ["console"], "labels": ["command: console"]}, {"keywords": ["command: debug"], "labels": ["command: debug"]}, {"keywords": ["command: details"], "labels": ["command: details"]}, {"keywords": ["fast-dl"], "labels": ["command: fast-dl"]}, {"keywords": ["command: install"], "labels": ["command: install"]}, {"keywords": ["command: mods"], "labels": ["command: mods"]}, {"keywords": ["monitor"], "labels": ["command: monitor"]}, {"keywords": ["command: start"], "labels": ["command: start"]}, {"keywords": ["command: stop"], "labels": ["command: stop"]}, {"keywords": ["command: update-lgsm"], "labels": ["command: update-lgsm"]}, {"keywords": ["update"], "labels": ["command: update"]}, {"keywords": ["validate"], "labels": ["command: validate"]}, {"keywords": ["wipe"], "labels": ["command: wipe"]}, {"keywords": ["CentOS"], "labels": ["distro: CentOS"]}, {"keywords": ["Debian"], "labels": ["distro: Debian"]}, {"keywords": ["Fedora"], "labels": ["distro: Fedora"]}, {"keywords": ["Ubuntu"], "labels": ["distro: Ubuntu"]}, {"keywords": ["alert"], "labels": ["info: alerts"]}, {"keywords": ["dependency"], "labels": ["info: dependency"]}, {"keywords": ["docker"], "labels": ["info: docker"]}, {"keywords": ["steamcmd"], "labels": ["info: steamcmd"]}, {"keywords": ["systemd"], "labels": ["info: systemd"]}, {"keywords": ["tmux"], "labels": ["info: tmux"]}, {"keywords": ["bug"], "labels": ["type: bug"]}, {"keywords": ["feature"], "labels": ["type: feature request"]}, {"keywords": ["refactor"], "labels": ["type: refactor"]}, {"keywords": ["Ark"], "labels": ["game: Ark: Survival Evolved"]}, {"keywords": ["Arma 3"], "labels": ["game: Arma 3"]}, {"keywords": ["Counter-Strike: Global Offensive"], "labels": ["game: Counter-Strike: Global Offensive"]}, {"keywords": ["Minecraft"], "labels": ["game: Minecraft"]}, {"keywords": ["Rust"], "labels": ["game: Rust"]}, {"keywords": ["Valheim"], "labels": ["game: Valheim"]}, {"keywords": ["7 Days to Die"], "labels": ["game: 7 Days to Die"]}]' github-token: "${{ secrets.GITHUB_TOKEN }}" From c87a530fc75ea1aca1acaef8abfbfe61c37965fb Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 7 Jul 2021 14:34:34 +0100 Subject: [PATCH 115/117] Update CONTRIBUTING.md --- CONTRIBUTING.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bcb1caf7f..4a114d2fc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,8 +48,7 @@ Before creating bug reports, please check [this list](https://github.com/GameSer #### Before Submitting A Bug Report * **Check the [documentation](https://docs.linuxgsm.com).** You might be able to find the cause of the problem and fix things yourself. -* **Check that the problem is not related to** [**support page**](https://linuxgsm/com/support) for links to other support options. -* **Check the** [**support page**](https://linuxgsm/com/support) for links to other support options. +* **Check the** [**support page**](https://linuxgsm.com/support) for links to other support options. * **Perform a** [**cursory search**](https://github.com/search?q=org:GameServerManagers%20type:issues&type=Issues) to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue and give it a thumbs up instead of opening a new one. #### How Do I Submit A (Good) Bug Report? From a826e61e41658f0c6d233c547ddcbf9db714f6de Mon Sep 17 00:00:00 2001 From: Clemens Mol Date: Fri, 6 Aug 2021 21:39:55 +0200 Subject: [PATCH 116/117] fix(mcb): resolve failing to check remote build (#3521) * mcbserver update working again * fix(mcbserver) better random and added comment * code styling fix. Codacy Static Code Analysis wasn't happy * style update --- lgsm/functions/update_minecraft_bedrock.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lgsm/functions/update_minecraft_bedrock.sh b/lgsm/functions/update_minecraft_bedrock.sh index f109a52e3..f4054ae00 100644 --- a/lgsm/functions/update_minecraft_bedrock.sh +++ b/lgsm/functions/update_minecraft_bedrock.sh @@ -7,8 +7,11 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" +#random number for userAgent +randnum=$((1 + RANDOM % 5000)) + fn_update_minecraft_dl(){ - latestmcbuildurl=$(curl -Ls "https://www.minecraft.net/en-us/download/server/bedrock/" | grep -o 'https://minecraft.azureedge.net/bin-linux/[^"]*zip') + latestmcbuildurl=$(curl -H "Accept-Encoding: identity" -H "Accept-Language: en" -Ls -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.${randnum}.212 Safari/537.36" "https://www.minecraft.net/en-us/download/server/bedrock/" | grep -o 'https://minecraft.azureedge.net/bin-linux/[^"]*zip') fn_fetch_file "${latestmcbuildurl}" "" "" "" "${tmpdir}" "bedrock_server.${remotebuild}.zip" echo -e "Extracting to ${serverfiles}...\c" if [ "${firstcommandname}" == "INSTALL" ]; then @@ -79,7 +82,7 @@ fn_update_minecraft_localbuild(){ fn_update_minecraft_remotebuild(){ # Gets remote build info. - remotebuild=$(curl -Ls "https://www.minecraft.net/en-us/download/server/bedrock/" | grep -o 'https://minecraft.azureedge.net/bin-linux/[^"]*' | sed 's/.*\///' | grep -Eo "[.0-9]+[0-9]") + remotebuild=$(curl -H "Accept-Encoding: identity" -H "Accept-Language: en" -Ls -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.${randnum}.212 Safari/537.36" "https://www.minecraft.net/en-us/download/server/bedrock/" | grep -o 'https://minecraft.azureedge.net/bin-linux/[^"]*' | sed 's/.*\///' | grep -Eo "[.0-9]+[0-9]") if [ "${firstcommandname}" != "INSTALL" ]; then fn_print_dots "Checking remote build: ${remotelocation}" # Checks if remotebuild variable has been set. From 79b60561a033d74936e7923d1e1f254441cf939b Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 6 Aug 2021 20:43:22 +0100 Subject: [PATCH 117/117] v21.2.5 --- lgsm/functions/core_functions.sh | 2 +- linuxgsm.sh | 2 +- tests/tests_fctrserver.sh | 2 +- tests/tests_jc2server.sh | 2 +- tests/tests_mcserver.sh | 2 +- tests/tests_ts3server.sh | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index 55b23a590..6d9f4303d 100755 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -8,7 +8,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -modulesversion="v21.2.4" +modulesversion="v21.2.5" # Core diff --git a/linuxgsm.sh b/linuxgsm.sh index 7173fe0ba..462ea09ad 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.4" +version="v21.2.5" shortname="core" gameservername="core" commandname="CORE" diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh index a4686684a..9b47f763d 100644 --- a/tests/tests_fctrserver.sh +++ b/tests/tests_fctrserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.4" +version="v21.2.5" shortname="fctr" gameservername="fctrserver" commandname="CORE" diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh index f39dc0476..da0fd91ce 100644 --- a/tests/tests_jc2server.sh +++ b/tests/tests_jc2server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.4" +version="v21.2.5" shortname="jc2" gameservername="jc2server" commandname="CORE" diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh index a426a07e9..501b64a43 100644 --- a/tests/tests_mcserver.sh +++ b/tests/tests_mcserver.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.4" +version="v21.2.5" shortname="mc" gameservername="mcserver" commandname="CORE" diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh index 32cb17c49..b9941598a 100644 --- a/tests/tests_ts3server.sh +++ b/tests/tests_ts3server.sh @@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then set -x fi -version="v21.2.4" +version="v21.2.5" shortname="ts3" gameservername="ts3server" commandname="CORE"