diff --git a/.github/labeler.yml b/.github/labeler.yml
index 3da0d47ee..34ffd66f1 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -74,6 +74,8 @@
- "/(Barotrauma)/i"
"game: Counter-Strike: Global Offensive":
- "/(Counter-Strike: Global Offensive|CS:GO|csgo)/i"
+"game: Counter-Strike 2":
+ - "/(Counter-Strike 2|CS2)/i"
"game: Counter-Strike: Source":
- "/(Counter-Strike: Source|CS:S)/i"
"game: Counter-Strike 1.6":
@@ -95,13 +97,13 @@
"game: Left 4 Dead 2":
- "/(Left 4 Dead 2|L4D2)/i"
"game: Minecraft":
- - "/(minecraft)((?!bedrock).)*$/i"
+ - "/(Minecraft)((?!bedrock).)*$/i"
"game: Minecraft Bedrock":
- "/(Bedrock)/i"
"game: Mumble":
- "/(Mumble)/i"
"game: Project Zomboid":
- - "/(Project Zomboid)/i"
+ - "/(Project Zomboid|PZ)/i"
"game: Quake 3":
- "/(Quake 3|Q3A|q3)/i"
"game: Rising World":
diff --git a/.github/workflows/add-to-project.yml b/.github/workflows/add-to-project.yml
index e429645bf..fb092b649 100644
--- a/.github/workflows/add-to-project.yml
+++ b/.github/workflows/add-to-project.yml
@@ -7,10 +7,11 @@ on:
jobs:
add-to-project:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
steps:
- name: Add to Project
- uses: actions/add-to-project@v0.5.0
+ uses: actions/add-to-project@v1.0.1
with:
project-url: https://github.com/orgs/GameServerManagers/projects/11
github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
diff --git a/.github/workflows/detals-check-generate-matrix.sh b/.github/workflows/details-check-generate-matrix.sh
similarity index 89%
rename from .github/workflows/detals-check-generate-matrix.sh
rename to .github/workflows/details-check-generate-matrix.sh
index 14cbb6ee7..bba9e8d5d 100755
--- a/.github/workflows/detals-check-generate-matrix.sh
+++ b/.github/workflows/details-check-generate-matrix.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-curl "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/master/lgsm/data/serverlist.csv" | grep -v '^[[:blank:]]*$' > serverlist.csv
+curl "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${GITHUB_REF#refs/heads/}/lgsm/data/serverlist.csv" | grep -v '^[[:blank:]]*$' > serverlist.csv
echo -n "{" > "shortnamearray.json"
echo -n "\"include\":[" >> "shortnamearray.json"
diff --git a/.github/workflows/details-check.yml b/.github/workflows/details-check.yml
index ca27ba5a3..748a77991 100644
--- a/.github/workflows/details-check.yml
+++ b/.github/workflows/details-check.yml
@@ -3,6 +3,8 @@ name: Details Check
on:
workflow_dispatch:
push:
+ branches:
+ - develop
concurrency:
group: details-check-${{ github.ref_name }}
@@ -10,6 +12,7 @@ concurrency:
jobs:
create-matrix:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
@@ -18,7 +21,7 @@ jobs:
uses: actions/checkout@v4
- name: Generate matrix with generate-matrix.sh
- run: chmod +x .github/workflows/detals-check-generate-matrix.sh; .github/workflows/detals-check-generate-matrix.sh
+ run: chmod +x .github/workflows/details-check-generate-matrix.sh; .github/workflows/details-check-generate-matrix.sh
- name: Set Matrix
id: set-matrix
@@ -28,6 +31,7 @@ jobs:
echo -n "matrix=${shortnamearray}" >> $GITHUB_OUTPUT
details-check:
+ if: github.repository_owner == 'GameServerManagers'
needs: create-matrix
continue-on-error: true
runs-on: ubuntu-latest
@@ -59,14 +63,14 @@ jobs:
- name: Download config
run: |
- if [ -z "${{ steps.sets-servercfgname.outputs.servercfgname }}" ]; then
+ if [ "${{ steps.sets-servercfgname.outputs.servercfgname }}" == "" ]; then
echo "This game server has no config file."
else
curl -f -o config "https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/main/${{ matrix.shortname }}/${{ steps.sets-servercfgname.outputs.servercfgname }}"
fi
- name: Display config
run: |
- if [ -z "${{ steps.sets-servercfgname.outputs.servercfgname }}" ]; then
+ if [ "${{ steps.sets-servercfgname.outputs.servercfgname }}" == "" ]; then
echo "This game server has no config file."
else
cat config
@@ -79,7 +83,7 @@ jobs:
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server details
- name: Detect details
- run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server detect-details
+ run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server parse-game-details
- name: Query Raw
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server query-raw
diff --git a/.github/workflows/git-sync.yml b/.github/workflows/git-sync.yml
index 42ddd42e5..544ba6892 100644
--- a/.github/workflows/git-sync.yml
+++ b/.github/workflows/git-sync.yml
@@ -9,10 +9,11 @@ on:
jobs:
gitHub-to-bitbucket:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
steps:
- name: SSH Agent
- uses: webfactory/ssh-agent@v0.8.0
+ uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.BITBUCKET_SECRET }}
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 44beca03d..4a946a861 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -11,10 +11,11 @@ permissions:
jobs:
issue-labeler:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
steps:
- name: Issue Labeler
- uses: github/issue-labeler@v3.2
+ uses: github/issue-labeler@v3.4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/labeler.yml
@@ -22,6 +23,7 @@ jobs:
include-title: 1
is-sponsor-label:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
steps:
- name: Is Sponsor Label
diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml
index 4883914f8..ce00b840b 100644
--- a/.github/workflows/lock.yml
+++ b/.github/workflows/lock.yml
@@ -9,10 +9,11 @@ permissions:
jobs:
lock:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
steps:
- name: Lock Threads
- uses: dessant/lock-threads@v4
+ uses: dessant/lock-threads@v5
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
issue-comment: >
diff --git a/.github/workflows/potential-duplicates.yml b/.github/workflows/potential-duplicates.yml
index 3c7f4334c..ea0ba23fd 100644
--- a/.github/workflows/potential-duplicates.yml
+++ b/.github/workflows/potential-duplicates.yml
@@ -5,6 +5,7 @@ on:
- opened
jobs:
potential-duplicates:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
steps:
- name: Potential Duplicates
diff --git a/.github/workflows/serverlist-validate-game-icons.sh b/.github/workflows/serverlist-validate-game-icons.sh
new file mode 100755
index 000000000..ca41892c9
--- /dev/null
+++ b/.github/workflows/serverlist-validate-game-icons.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+cd "lgsm/data" || exit
+
+echo ""
+echo "Checking that all the game servers listed in serverlist.csv have a shortname-icon.png file"
+for shortname in $(tail -n +2 serverlist.csv | cut -d ',' -f1); do
+ # check if $shortname-icon.png exists
+ if [ ! -f "gameicons/${shortname}-icon.png" ]; then
+ echo "ERROR: gameicons/${shortname}-icon.png does not exist"
+ exitcode=1
+ else
+ echo "OK: gameicons/${shortname}-icon.png exists"
+ fi
+done
+
+echo ""
+echo "Checking if an unexpected gameicon exists"
+for gameicon in $(ls -1 gameicons); do
+ # check if $gameicon is in serverlist.csv
+ if ! grep -q "${gameicon%-icon.png}" serverlist.csv; then
+ echo "ERROR: gameicon ${gameicon} is not in serverlist.csv"
+ exitcode=1
+ else
+ echo "OK: gameicon ${gameicon} is in serverlist.csv"
+ fi
+done
+
+echo ""
+echo "Checking that the number of gameicons matches the number of servers in serverlist.csv"
+gameiconcount="$(ls -1 gameicons | wc -l)"
+serverlistcount="$(tail -n +2 serverlist.csv | wc -l)"
+if [ "${gameiconcount}" -ne "${serverlistcount}" ]; then
+ echo "ERROR: game icons (${gameiconcount}) does not match serverlist.csv ($serverlistcount)"
+ exitcode=1
+else
+ echo "OK: gameiconcount ($gameiconcount) matches serverlistcount ($serverlistcount)"
+fi
+
+exit ${exitcode}
diff --git a/.github/workflows/serverlist-validate.sh b/.github/workflows/serverlist-validate.sh
index 50b2da712..0c7634018 100755
--- a/.github/workflows/serverlist-validate.sh
+++ b/.github/workflows/serverlist-validate.sh
@@ -10,7 +10,7 @@ csvlist="$(ls -1 | grep -E '^(ubuntu|debian|centos|rhel|almalinux|rocky).*\.csv$
# loop though each csv file and make sure the number of lines is the same as the serverlistcount
for csv in $csvlist; do
csvcount="$(wc -l < "${csv}")"
- csvcount=$((csvcount-2))
+ csvcount=$((csvcount - 2))
if [ "$csvcount" -ne "$serverlistcount" ]; then
echo "ERROR: $csv ($csvcount) does not match serverlist.csv ($serverlistcount)"
exitcode=1
@@ -19,4 +19,20 @@ for csv in $csvlist; do
fi
done
+# Compare all game servers listed in serverlist.csv to $shortname-icon.png files in lgsm/data/gameicons
+# if the game server is listed in serverlist.csv then it will have a $shortname-icon.png file
+
+# loop though shortname in serverlist.csv
+echo ""
+echo "Checking that all the game servers listed in serverlist.csv have a shortname-icon.png file"
+for shortname in $(tail -n +2 serverlist.csv | cut -d ',' -f1); do
+ # check if $shortname-icon.png exists
+ if [ ! -f "gameicons/${shortname}-icon.png" ]; then
+ echo "ERROR: gameicons/${shortname}-icon.png does not exist"
+ exitcode=1
+ else
+ echo "OK: gameicons/${shortname}-icon.png exists"
+ fi
+done
+
exit ${exitcode}
diff --git a/.github/workflows/serverlist-validate.yml b/.github/workflows/serverlist-validate.yml
index 13f7376a1..f4a95a039 100644
--- a/.github/workflows/serverlist-validate.yml
+++ b/.github/workflows/serverlist-validate.yml
@@ -5,6 +5,7 @@ on:
jobs:
serverlist-validate:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -12,3 +13,6 @@ jobs:
- name: Compare Versions
run: chmod +x .github/workflows/serverlist-validate.sh; .github/workflows/serverlist-validate.sh
+
+ - name: Validate Game Icons
+ run: chmod +x .github/workflows/serverlist-validate-game-icons.sh; .github/workflows/serverlist-validate-game-icons.sh
diff --git a/.github/workflows/trigger-docker-build.yml b/.github/workflows/trigger-docker-build.yml
index 61ec91d39..ae66542de 100644
--- a/.github/workflows/trigger-docker-build.yml
+++ b/.github/workflows/trigger-docker-build.yml
@@ -6,6 +6,7 @@ on:
jobs:
trigger_build_docker-linuxgsm:
+ if: github.repository_owner == 'GameServerManagers'
name: Trigger Build Docker LinuxGSM
runs-on: ubuntu-latest
steps:
@@ -18,6 +19,7 @@ jobs:
workflow_file_name: docker-publish.yml
trigger_build_docker-gameserver:
+ if: github.repository_owner == 'GameServerManagers'
name: Trigger Build Docker GameServer
needs: trigger_build_docker-linuxgsm
runs-on: ubuntu-latest
diff --git a/.github/workflows/update-check.yml b/.github/workflows/update-check.yml
index dfbc7dd58..932e3ea2a 100644
--- a/.github/workflows/update-check.yml
+++ b/.github/workflows/update-check.yml
@@ -3,6 +3,8 @@ name: Update Check
on:
workflow_dispatch:
push:
+ branches:
+ - develop
concurrency:
group: update-check-${{ github.ref_name }}
@@ -10,6 +12,7 @@ concurrency:
jobs:
update-check:
+ if: github.repository_owner == 'GameServerManagers'
continue-on-error: true
runs-on: ubuntu-latest
diff --git a/.github/workflows/update-copyright-years-in-license-file.yml b/.github/workflows/update-copyright-years-in-license-file.yml
index 2d6d3eeeb..3301c9cb7 100644
--- a/.github/workflows/update-copyright-years-in-license-file.yml
+++ b/.github/workflows/update-copyright-years-in-license-file.yml
@@ -6,6 +6,7 @@ on:
jobs:
update-license-year:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
steps:
- name: Checkout
diff --git a/.github/workflows/version-check.yml b/.github/workflows/version-check.yml
index a66eaca14..cfa7615bd 100644
--- a/.github/workflows/version-check.yml
+++ b/.github/workflows/version-check.yml
@@ -7,6 +7,7 @@ permissions:
jobs:
version-Check:
+ if: github.repository_owner == 'GameServerManagers'
runs-on: ubuntu-latest
steps:
- name: Checkout
diff --git a/LICENSE.md b/LICENSE.md
index 12352eafa..344a8fb48 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -1,6 +1,6 @@
# The MIT License (MIT)
-Copyright (c) 2012-2023 Daniel Gibbs
+Copyright (c) 2012-2024 Daniel Gibbs
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/lgsm/config-default/config-lgsm/acserver/_default.cfg b/lgsm/config-default/config-lgsm/acserver/_default.cfg
index c6aeb7b63..154f38c7b 100644
--- a/lgsm/config-default/config-lgsm/acserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/acserver/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg
index fa8f9fa90..a98c90701 100644
--- a/lgsm/config-default/config-lgsm/ahl2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ahl2server/_default.cfg
@@ -40,6 +40,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -72,7 +75,6 @@ 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"
@@ -80,11 +82,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ahlserver/_default.cfg b/lgsm/config-default/config-lgsm/ahlserver/_default.cfg
index 6b8012b36..04cc2e6f9 100644
--- a/lgsm/config-default/config-lgsm/ahlserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ahlserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/arkserver/_default.cfg b/lgsm/config-default/config-lgsm/arkserver/_default.cfg
index 6e3b466fd..8680c1bad 100644
--- a/lgsm/config-default/config-lgsm/arkserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/arkserver/_default.cfg
@@ -12,14 +12,13 @@
ip="0.0.0.0"
port="7777"
queryport="27015"
-rconport="27020"
# Default Map: TheIsland, Ragnarok, CrystalIsles, Aberration_P, ScorchedEarth_P, TheCenter, Extinction, Valguero_P, Genesis, Gen2
defaultmap="TheIsland"
altsavedirectoryname="${defaultmap}"
-maxplayers="70"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="${defaultmap}?AltSaveDirectoryName=${altsavedirectoryname}?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port} -automanagedmods -crossplay -PublicIPForEpic=${publicip}"
+## Game Server Docs | https://ark.wiki.gg/wiki/Server_configuration
+startparameters="${defaultmap}?AltSaveDirectoryName=${altsavedirectoryname} -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -AutoManagedMods -Crossplay -PublicIPForEpic=${publicip}"
#### LinuxGSM Settings ####
@@ -38,6 +37,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -70,7 +72,6 @@ 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"
@@ -78,11 +79,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/arma3server/_default.cfg b/lgsm/config-default/config-lgsm/arma3server/_default.cfg
index 8a59a6fb1..b0918ef3c 100644
--- a/lgsm/config-default/config-lgsm/arma3server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/arma3server/_default.cfg
@@ -32,7 +32,7 @@ servermods=""
bepath=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-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 ####
@@ -51,6 +51,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -83,7 +86,6 @@ 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"
@@ -91,11 +93,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/armarserver/_default.cfg b/lgsm/config-default/config-lgsm/armarserver/_default.cfg
index 913447e47..61103d332 100644
--- a/lgsm/config-default/config-lgsm/armarserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/armarserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/atsserver/_default.cfg b/lgsm/config-default/config-lgsm/atsserver/_default.cfg
index 04b795dc5..f6d165098 100644
--- a/lgsm/config-default/config-lgsm/atsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/atsserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/avserver/_default.cfg b/lgsm/config-default/config-lgsm/avserver/_default.cfg
index 45cd149b2..7b225de1f 100644
--- a/lgsm/config-default/config-lgsm/avserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/avserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/bb2server/_default.cfg b/lgsm/config-default/config-lgsm/bb2server/_default.cfg
index 4076878d4..b9250cc5f 100644
--- a/lgsm/config-default/config-lgsm/bb2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/bb2server/_default.cfg
@@ -41,6 +41,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -73,7 +76,6 @@ 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"
@@ -81,11 +83,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/bbserver/_default.cfg b/lgsm/config-default/config-lgsm/bbserver/_default.cfg
index 9932d4ffe..99262d8e3 100644
--- a/lgsm/config-default/config-lgsm/bbserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/bbserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/bdserver/_default.cfg b/lgsm/config-default/config-lgsm/bdserver/_default.cfg
index 7fcdb4e1d..3c1769fb3 100644
--- a/lgsm/config-default/config-lgsm/bdserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/bdserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/bf1942server/_default.cfg b/lgsm/config-default/config-lgsm/bf1942server/_default.cfg
index d99068522..30e2f957a 100644
--- a/lgsm/config-default/config-lgsm/bf1942server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/bf1942server/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/bfvserver/_default.cfg b/lgsm/config-default/config-lgsm/bfvserver/_default.cfg
index c6e4b8bb7..53aa36054 100644
--- a/lgsm/config-default/config-lgsm/bfvserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/bfvserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg b/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg
index b17a16f4d..e353d57b0 100644
--- a/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/bmdmserver/_default.cfg
@@ -41,6 +41,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -73,7 +76,6 @@ 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"
@@ -81,11 +83,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/boserver/_default.cfg b/lgsm/config-default/config-lgsm/boserver/_default.cfg
index 1ede22c39..ae7912ab6 100644
--- a/lgsm/config-default/config-lgsm/boserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/boserver/_default.cfg
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/bsserver/_default.cfg b/lgsm/config-default/config-lgsm/bsserver/_default.cfg
index d01696170..d81cde16d 100644
--- a/lgsm/config-default/config-lgsm/bsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/bsserver/_default.cfg
@@ -45,6 +45,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -77,7 +80,6 @@ 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"
@@ -85,11 +87,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/btlserver/_default.cfg b/lgsm/config-default/config-lgsm/btlserver/_default.cfg
index aeaadea9b..28e8b95e3 100644
--- a/lgsm/config-default/config-lgsm/btlserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/btlserver/_default.cfg
@@ -14,7 +14,7 @@ port="7777"
queryport="7780"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="/Game/Maps/Final_Maps/Derailed?Game=/Script/ShooterGame.WartideGameMode?listen -log -broadcastip=\"${publicip}\" -PORT=${port} -QueryPort=${queryport} -defgameini=\"${servercfgfullpath}\""
+startparameters="-Port=${port} -QueryPort=${queryport} -BroadcastIp=${publicip} -log"
#### LinuxGSM Settings ####
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -155,8 +159,8 @@ systemdir="${serverfiles}/Battalion"
executabledir="${systemdir}/Binaries/Linux"
executable="./BattalionServer-Linux-Shipping"
servercfgdir="${systemdir}/Saved/Config/LinuxServer"
-servercfg="${selfname}.ini"
-servercfgdefault="DefaultGame.ini"
+servercfg="Game.ini"
+servercfgdefault="Game.ini"
servercfgfullpath="${servercfgdir}/${servercfg}"
## Backup Directory
diff --git a/lgsm/config-default/config-lgsm/btserver/_default.cfg b/lgsm/config-default/config-lgsm/btserver/_default.cfg
index 636136580..71c02c3fc 100644
--- a/lgsm/config-default/config-lgsm/btserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/btserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ccserver/_default.cfg b/lgsm/config-default/config-lgsm/ccserver/_default.cfg
index 1b8617e11..66847b410 100644
--- a/lgsm/config-default/config-lgsm/ccserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ccserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ckserver/_default.cfg b/lgsm/config-default/config-lgsm/ckserver/_default.cfg
index fe3d56f44..f54d7cc7f 100644
--- a/lgsm/config-default/config-lgsm/ckserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ckserver/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg
index d0fe00b0d..776b06a1d 100644
--- a/lgsm/config-default/config-lgsm/cmwserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/cmwserver/_default.cfg
@@ -34,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +69,6 @@ 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"
@@ -74,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/cod2server/_default.cfg b/lgsm/config-default/config-lgsm/cod2server/_default.cfg
index 8f0d889d0..9665a9ba8 100644
--- a/lgsm/config-default/config-lgsm/cod2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/cod2server/_default.cfg
@@ -15,7 +15,7 @@ defaultmap="mp_leningrad"
maxplayers="20"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-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}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +map ${defaultmap} +exec ${servercfg}"
#### LinuxGSM Settings ####
@@ -34,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +69,6 @@ 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"
@@ -74,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/cod4server/_default.cfg b/lgsm/config-default/config-lgsm/cod4server/_default.cfg
index 6fce7fea3..f9787c352 100644
--- a/lgsm/config-default/config-lgsm/cod4server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/cod4server/_default.cfg
@@ -15,7 +15,7 @@ defaultmap="mp_crossfire"
maxplayers="32"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-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}"
+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} +map ${defaultmap} +exec ${servercfg}"
#### LinuxGSM Settings ####
@@ -34,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +69,6 @@ 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"
@@ -74,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/codserver/_default.cfg b/lgsm/config-default/config-lgsm/codserver/_default.cfg
index 9929f2626..8f1476ad3 100644
--- a/lgsm/config-default/config-lgsm/codserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/codserver/_default.cfg
@@ -15,7 +15,7 @@ defaultmap="mp_neuville"
maxplayers="20"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-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}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +map ${defaultmap} +exec ${servercfg}"
#### LinuxGSM Settings ####
@@ -34,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +69,6 @@ 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"
@@ -74,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/coduoserver/_default.cfg b/lgsm/config-default/config-lgsm/coduoserver/_default.cfg
index 1719eb8f7..c405966d4 100644
--- a/lgsm/config-default/config-lgsm/coduoserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/coduoserver/_default.cfg
@@ -15,7 +15,7 @@ defaultmap="mp_cassino"
maxplayers="20"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-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}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +map ${defaultmap} +exec ${servercfg}"
#### LinuxGSM Settings ####
@@ -34,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +69,6 @@ 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"
@@ -74,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/codwawserver/_default.cfg b/lgsm/config-default/config-lgsm/codwawserver/_default.cfg
index c7169f170..ca0f002d3 100644
--- a/lgsm/config-default/config-lgsm/codwawserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/codwawserver/_default.cfg
@@ -15,7 +15,7 @@ defaultmap="mp_castle"
maxplayers="20"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-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}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +map ${defaultmap} +exec ${servercfg}"
#### LinuxGSM Settings ####
@@ -34,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +69,6 @@ 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"
@@ -74,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/colserver/_default.cfg b/lgsm/config-default/config-lgsm/colserver/_default.cfg
index 4d2f04cd2..cd94e9b37 100644
--- a/lgsm/config-default/config-lgsm/colserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/colserver/_default.cfg
@@ -29,6 +29,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -61,7 +64,6 @@ 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"
@@ -69,11 +71,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -134,7 +138,7 @@ querymode="2"
querytype="protocol-valve"
## Console type
-consoleverbose="no"
+consoleverbose="yes"
consoleinteract="no"
## Game Server Details
diff --git a/lgsm/config-default/config-lgsm/cs2server/_default.cfg b/lgsm/config-default/config-lgsm/cs2server/_default.cfg
new file mode 100644
index 000000000..a2df48244
--- /dev/null
+++ b/lgsm/config-default/config-lgsm/cs2server/_default.cfg
@@ -0,0 +1,187 @@
+##################################
+######## 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
+# https://docs.linuxgsm.com/game-servers/counter-strike-2
+ip="0.0.0.0"
+port="27015"
+maxplayers="16"
+wsapikey=""
+
+## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+startparameters="-dedicated -ip ${ip} -port ${port} -maxplayers ${maxplayers} -authkey ${wsapikey} +exec ${selfname}.cfg"
+
+#### 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"
+
+# Alert on Start/Stop/Restart
+statusalert="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=""
+
+# Gotify Alerts | https://docs.linuxgsm.com/alerts/gotify
+gotifyalert="off"
+gotifytoken="token"
+gotifywebhook="webhook"
+
+# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
+iftttalert="off"
+ifttttoken="accesstoken"
+iftttevent="linuxgsm_alert"
+
+# 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"
+
+# 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 all".
+telegramapi="api.telegram.org"
+telegramalert="off"
+telegramtoken="accesstoken"
+telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
+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="730"
+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
+# 3: quit
+# 4: quit 120s
+# 5: stop
+# 6: q
+# 7: exit
+# 8: 7 Days to Die
+# 9: GoldSrc
+# 10: Avorion
+# 11: end
+stopmode="9"
+
+## Query mode
+# 1: session only
+# 2: gamedig (gsquery fallback)
+# 3: gamedig
+# 4: gsquery
+# 5: tcp
+querymode="2"
+querytype="protocol-valve"
+
+## Console type
+consoleverbose="yes"
+consoleinteract="yes"
+
+## Game Server Details
+# Do not edit
+gamename="Counter-Strike 2"
+engine="source2"
+glibc="2.31"
+
+#### Directories ####
+# Edit with care
+
+## Game Server Directories
+systemdir="${serverfiles}/game/csgo"
+executabledir="${serverfiles}/game/bin/linuxsteamrt64"
+executable="./cs2"
+servercfgdir="${systemdir}/cfg"
+servercfg="${selfname}.cfg"
+servercfgdefault="server.cfg"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+
+## Backup Directory
+backupdir="${lgsmdir}/backup"
+
+## Logging Directories
+[ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || 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"
+
+## Log Parameters
+logtimestamp="off"
+logtimestampformat="%Y-%m-%d %H:%M:%S"
diff --git a/lgsm/config-default/config-lgsm/csczserver/_default.cfg b/lgsm/config-default/config-lgsm/csczserver/_default.cfg
index a3f49922b..29001a098 100644
--- a/lgsm/config-default/config-lgsm/csczserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/csczserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg
index f9d0acf1a..29b3aea10 100644
--- a/lgsm/config-default/config-lgsm/csgoserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/csgoserver/_default.cfg
@@ -72,6 +72,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -104,7 +107,6 @@ 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"
@@ -112,11 +114,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/csserver/_default.cfg b/lgsm/config-default/config-lgsm/csserver/_default.cfg
index 87a132f3d..266448e74 100644
--- a/lgsm/config-default/config-lgsm/csserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/csserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/cssserver/_default.cfg b/lgsm/config-default/config-lgsm/cssserver/_default.cfg
index 612aeb0f1..103c30897 100644
--- a/lgsm/config-default/config-lgsm/cssserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/cssserver/_default.cfg
@@ -41,6 +41,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -73,7 +76,6 @@ 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"
@@ -81,11 +83,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ctserver/_default.cfg b/lgsm/config-default/config-lgsm/ctserver/_default.cfg
index 2c31d5cc6..ac87d7516 100644
--- a/lgsm/config-default/config-lgsm/ctserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ctserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -133,7 +137,7 @@ querymode="1"
querytype=""
## Console type
-consoleverbose="no"
+consoleverbose="yes"
consoleinteract="yes"
## Game Server Details
diff --git a/lgsm/config-default/config-lgsm/dabserver/_default.cfg b/lgsm/config-default/config-lgsm/dabserver/_default.cfg
index 84ea667e4..3d5015808 100644
--- a/lgsm/config-default/config-lgsm/dabserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/dabserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/dayzserver/_default.cfg b/lgsm/config-default/config-lgsm/dayzserver/_default.cfg
index 01eb4509e..f09d23c23 100644
--- a/lgsm/config-default/config-lgsm/dayzserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/dayzserver/_default.cfg
@@ -8,6 +8,10 @@
#### Game Server Settings ####
+## SteamCMD Login | https://docs.linuxgsm.com/steamcmd#steamcmd-login
+steamuser="username"
+steampass='password'
+
## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
ip="0.0.0.0"
port="2302"
@@ -47,6 +51,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -79,7 +86,6 @@ 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"
@@ -87,11 +93,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -120,13 +128,13 @@ sleeptime="0.5"
## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
# Server appid
-appid="1042420"
+appid="223350"
steamcmdforcewindows="no"
# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
branch=""
betapassword=""
# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
-steammaster="false"
+steammaster="true"
## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
# 1: tmux kill
diff --git a/lgsm/config-default/config-lgsm/dmcserver/_default.cfg b/lgsm/config-default/config-lgsm/dmcserver/_default.cfg
index f46fe5025..3d74fca4d 100644
--- a/lgsm/config-default/config-lgsm/dmcserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/dmcserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/dodrserver/_default.cfg b/lgsm/config-default/config-lgsm/dodrserver/_default.cfg
index d692fdfa7..0565b94e9 100644
--- a/lgsm/config-default/config-lgsm/dodrserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/dodrserver/_default.cfg
@@ -34,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +69,6 @@ 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"
@@ -74,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/dodserver/_default.cfg b/lgsm/config-default/config-lgsm/dodserver/_default.cfg
index b2940a658..e2419289a 100644
--- a/lgsm/config-default/config-lgsm/dodserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/dodserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/dodsserver/_default.cfg b/lgsm/config-default/config-lgsm/dodsserver/_default.cfg
index 9ff0cfa96..b6973f0a7 100644
--- a/lgsm/config-default/config-lgsm/dodsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/dodsserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/doiserver/_default.cfg b/lgsm/config-default/config-lgsm/doiserver/_default.cfg
index 1580d58b2..9a06b7b02 100644
--- a/lgsm/config-default/config-lgsm/doiserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/doiserver/_default.cfg
@@ -37,6 +37,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -69,7 +72,6 @@ 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"
@@ -77,11 +79,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/dstserver/_default.cfg b/lgsm/config-default/config-lgsm/dstserver/_default.cfg
index 4677162c3..2c8de8bd4 100644
--- a/lgsm/config-default/config-lgsm/dstserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/dstserver/_default.cfg
@@ -38,6 +38,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -70,7 +73,6 @@ 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"
@@ -78,11 +80,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/dysserver/_default.cfg b/lgsm/config-default/config-lgsm/dysserver/_default.cfg
index 907482a36..fcb37c41a 100644
--- a/lgsm/config-default/config-lgsm/dysserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/dysserver/_default.cfg
@@ -41,6 +41,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -73,7 +76,6 @@ 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"
@@ -81,11 +83,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg
index ae4bfa681..c08f37072 100644
--- a/lgsm/config-default/config-lgsm/ecoserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ecoserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -129,8 +133,8 @@ stopmode="2"
# 3: gamedig
# 4: gsquery
# 5: tcp
-querymode="1"
-querytype=""
+querymode="3"
+querytype="eco"
## Console type
consoleverbose="yes"
diff --git a/lgsm/config-default/config-lgsm/emserver/_default.cfg b/lgsm/config-default/config-lgsm/emserver/_default.cfg
index 33fb4f849..1762e5175 100644
--- a/lgsm/config-default/config-lgsm/emserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/emserver/_default.cfg
@@ -41,6 +41,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -73,7 +76,6 @@ 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"
@@ -81,11 +83,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/etlserver/_default.cfg b/lgsm/config-default/config-lgsm/etlserver/_default.cfg
index 034f29c5d..11a408fb8 100644
--- a/lgsm/config-default/config-lgsm/etlserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/etlserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/ets2server/_default.cfg b/lgsm/config-default/config-lgsm/ets2server/_default.cfg
index 215ab2b41..6abe98fb3 100644
--- a/lgsm/config-default/config-lgsm/ets2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ets2server/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/fctrserver/_default.cfg b/lgsm/config-default/config-lgsm/fctrserver/_default.cfg
index 6b03f9a30..284fafaec 100644
--- a/lgsm/config-default/config-lgsm/fctrserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/fctrserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/fofserver/_default.cfg b/lgsm/config-default/config-lgsm/fofserver/_default.cfg
index 41dae637a..7ce630310 100644
--- a/lgsm/config-default/config-lgsm/fofserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/fofserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg
index b170c3436..2cc683d20 100644
--- a/lgsm/config-default/config-lgsm/gmodserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/gmodserver/_default.cfg
@@ -19,8 +19,6 @@ tickrate="66"
gamemode="sandbox"
## Workshop Parameters | https://wiki.facepunch.com/gmod/Workshop_for_Dedicated_Servers
-# To get an API key visit - https://steamcommunity.com/dev/apikey
-wsapikey=""
wscollectionid=""
## Game Server Login Token (GSLT): Optional
@@ -29,7 +27,7 @@ wscollectionid=""
gslt=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-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"
+startparameters="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickrate} +host_workshop_collection ${wscollectionid} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -disableluarefresh"
#### LinuxGSM Settings ####
@@ -48,6 +46,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -80,7 +81,6 @@ 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"
@@ -88,11 +88,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/hcuserver/_default.cfg b/lgsm/config-default/config-lgsm/hcuserver/_default.cfg
index 00b0b30c7..0925fe384 100644
--- a/lgsm/config-default/config-lgsm/hcuserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/hcuserver/_default.cfg
@@ -17,7 +17,7 @@ queryport="27015"
servername="LinuxGSM"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="${defaultmap}?Difficulty=1?Game=DM?MapList=KidsBedroom,Playground,Garden,Hallway_Simple,Bathroom,Hallway_Hard,Attic_Daytime,Shed,ToyPalace,Kitchen,Garage?MaxPlayers=${maxplayers}?WeaponTypes=7?TimeLimit=600?ScoreLimit=30?Teamplay -ServerName='${servername}' -Port=${port} -QueryPort=${queryport} -NOCONSOLE -unattended"
+startparameters="${defaultmap}?MaxPlayers=${maxplayers} -ServerName='${servername}' -Port=${port} -QueryPort=${queryport}"
## Server Parameters for Plague mode
#startparameters="${defaultmap}?Game=PL?MapList=KidsBedroom,Garden,Hallway_Simple,Attic_Daytime,Garage,Shed,Kitchen,Hallway_Hard,ToyPalace,Bathroom?MaxPlayers=${maxplayers}?WeaponTypes=7?TimeLimit=600 -ServerName='${servername}' -Port=${port} -QueryPort=${queryport} -NOCONSOLE -unattended"
@@ -43,6 +43,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -75,7 +78,6 @@ 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"
@@ -83,11 +85,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -148,7 +152,7 @@ querymode="1"
querytype=""
## Console type
-consoleverbose="no"
+consoleverbose="yes"
consoleinteract="no"
## Game Server Details
diff --git a/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg b/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg
index 8bbf8fdec..c429a6c8e 100644
--- a/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/hldmserver/_default.cfg b/lgsm/config-default/config-lgsm/hldmserver/_default.cfg
index f78e1542b..3bddb128e 100644
--- a/lgsm/config-default/config-lgsm/hldmserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/hldmserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg b/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg
index fd854b0c2..74321c1f4 100644
--- a/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/hldmsserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/hwserver/_default.cfg b/lgsm/config-default/config-lgsm/hwserver/_default.cfg
index 853a52078..7fe1a4969 100644
--- a/lgsm/config-default/config-lgsm/hwserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/hwserver/_default.cfg
@@ -27,7 +27,7 @@ loadsave=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
# http://hurtworld.wikia.com/wiki/Hosting_A_Server
-startparameters="-batchmode -nographics -logfile ${gamelog} -exec \"host ${port} ${defaultmap} ${loadsave};queryport ${queryport};maxplayers ${maxplayers};servername ${servername};creativemode ${creativemode};${admins}\""
+startparameters="-batchmode -nographics -logfile ${gamelog} -exec \"host ${port} ${defaultmap} ${loadsave};queryport ${queryport};maxplayers ${maxplayers};servername ${servername};creativemode ${creativemode};addadmin ${admins}\""
#### LinuxGSM Settings ####
@@ -46,6 +46,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -78,7 +81,6 @@ 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"
@@ -86,11 +88,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/loserver/_default.cfg b/lgsm/config-default/config-lgsm/hzserver/_default.cfg
similarity index 86%
rename from lgsm/config-default/config-lgsm/loserver/_default.cfg
rename to lgsm/config-default/config-lgsm/hzserver/_default.cfg
index cc2f7b89a..b610594e7 100644
--- a/lgsm/config-default/config-lgsm/loserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/hzserver/_default.cfg
@@ -9,18 +9,13 @@
#### Game Server Settings ####
## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
-## https://docs.linuxgsm.com/game-servers/last-oasis
-servername="LinuxGSM"
ip="0.0.0.0"
port="7777"
queryport="27015"
-customerkey=""
-providerkey=""
-slots="100"
+servername="LinuxGSM"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-# For specific IP use: -OverrideConnectionAddress=${ip}
-startparameters="-log -force_steamclient_link -messaging -NoLiveServer -EnableCheats -backendapiurloverride="backend.last-oasis.com" -identifier=${servername} -port=${port} -CustomerKey=${customerkey} -ProviderKey=${providerkey} -slots=${slots} -QueryPort=${queryport}"
+startparameters="-log -port=${port} -queryport=${queryport} -steamservername=${servername}"
#### LinuxGSM Settings ####
@@ -39,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -71,7 +69,6 @@ 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"
@@ -100,7 +97,7 @@ logdays="7"
## Monitor | https://docs.linuxgsm.com/commands/monitor
# Query delay time
-querydelay="1"
+querydelay="5"
## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
ansi="on"
@@ -112,13 +109,13 @@ sleeptime="0.5"
## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
# Server appid
-appid="920720"
+appid="2728330"
steamcmdforcewindows="no"
# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
-branch=""
+branch="linuxbranch"
betapassword=""
# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
-steammaster="false"
+steammaster="true"
## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
# 1: tmux kill
@@ -140,16 +137,16 @@ stopmode="2"
# 3: gamedig
# 4: gsquery
# 5: tcp
-querymode="1"
-querytype=""
+querymode="2"
+querytype="protocol-valve"
## Console type
-consoleverbose="yes"
+consoleverbose="no"
consoleinteract="no"
## Game Server Details
# Do not edit
-gamename="Last Oasis"
+gamename="HumanitZ"
engine="unreal4"
glibc="2.17"
@@ -157,12 +154,12 @@ glibc="2.17"
# Edit with care
## Game Server Directories
-systemdir="${serverfiles}/Mist"
+systemdir="${serverfiles}/TSSGame"
executabledir="${systemdir}/Binaries/Linux"
-executable="./MistServer-Linux-Shipping"
+executable="./TSSGameServer-Linux-Shipping"
servercfgdir="${systemdir}/Saved/Config/LinuxServer"
-servercfg="Game.ini"
-servercfgdefault="Game.ini"
+servercfg="GameUserSettings.ini"
+servercfgdefault="GameUserSettings.ini"
servercfgfullpath="${servercfgdir}/${servercfg}"
## Backup Directory
diff --git a/lgsm/config-default/config-lgsm/insserver/_default.cfg b/lgsm/config-default/config-lgsm/insserver/_default.cfg
index 69d095881..cd1d13029 100644
--- a/lgsm/config-default/config-lgsm/insserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/insserver/_default.cfg
@@ -42,6 +42,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -74,7 +77,6 @@ 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"
@@ -82,11 +84,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/inssserver/_default.cfg b/lgsm/config-default/config-lgsm/inssserver/_default.cfg
index 117ddbff8..4049e5e11 100644
--- a/lgsm/config-default/config-lgsm/inssserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/inssserver/_default.cfg
@@ -13,10 +13,10 @@ ip="0.0.0.0"
port="27102"
queryport="27131"
rconport="27015"
-rconpassword=""
+rconpassword="CHANGE_ME"
servername="LinuxGSM"
-defaultmap="Canyon"
-defaultscenario="Scenario_Crossing_Push_Security"
+defaultmap="Oilfield"
+defaultscenario="Scenario_Refinery_Push_Security"
maxplayers="28"
## Game Server Login Token (GSLT): Optional
@@ -25,7 +25,7 @@ maxplayers="28"
gslt=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-## Parameter Docs | https://mod.io/g/insurgencysandstorm/r/server-admin-guide
+## Game Server Docs | https://mod.io/g/insurgencysandstorm/r/server-admin-guide
startparameters="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -Rcon -RconPassword=${rconpassword} -RconListenPort=${rconport} -GSLTToken=${gslt} -log"
#### LinuxGSM Settings ####
@@ -45,6 +45,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -77,7 +80,6 @@ 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"
@@ -85,11 +87,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -166,9 +170,6 @@ glibc="2.17"
systemdir="${serverfiles}/Insurgency"
executabledir="${systemdir}/Binaries/Linux"
executable="./InsurgencyServer-Linux-Shipping"
-servercfgdir="${systemdir}/Saved/Config/LinuxServer"
-servercfg="Game.ini"
-servercfgdefault="Game.ini"
## Backup Directory
backupdir="${lgsmdir}/backup"
diff --git a/lgsm/config-default/config-lgsm/iosserver/_default.cfg b/lgsm/config-default/config-lgsm/iosserver/_default.cfg
index 365a3dee2..ff6764d0b 100644
--- a/lgsm/config-default/config-lgsm/iosserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/iosserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/jc2server/_default.cfg b/lgsm/config-default/config-lgsm/jc2server/_default.cfg
index 69bc8018b..5a82bbad9 100644
--- a/lgsm/config-default/config-lgsm/jc2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/jc2server/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -130,7 +134,7 @@ stopmode="2"
# 4: gsquery
# 5: tcp
querymode="2"
-querytype="jc2mp"
+querytype="jc2m"
## Console type
consoleverbose="yes"
diff --git a/lgsm/config-default/config-lgsm/jc3server/_default.cfg b/lgsm/config-default/config-lgsm/jc3server/_default.cfg
index 872541961..62d9cd4ab 100644
--- a/lgsm/config-default/config-lgsm/jc3server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/jc3server/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/jk2server/_default.cfg b/lgsm/config-default/config-lgsm/jk2server/_default.cfg
index 4313daa58..f238c45fe 100644
--- a/lgsm/config-default/config-lgsm/jk2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/jk2server/_default.cfg
@@ -18,7 +18,7 @@ port="27960"
defaultmap="ffa_bespin"
## 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}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set net_ip ${ip} +set net_port ${port} +map ${defaultmap} +exec ${servercfg}"
#### LinuxGSM Settings ####
@@ -37,6 +37,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -69,7 +72,6 @@ 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"
@@ -77,11 +79,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/kf2server/_default.cfg b/lgsm/config-default/config-lgsm/kf2server/_default.cfg
index 88fe360be..8f44458cd 100644
--- a/lgsm/config-default/config-lgsm/kf2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/kf2server/_default.cfg
@@ -34,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +69,6 @@ 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"
@@ -74,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/kfserver/_default.cfg b/lgsm/config-default/config-lgsm/kfserver/_default.cfg
index 92cfd258c..d9df57d3e 100644
--- a/lgsm/config-default/config-lgsm/kfserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/kfserver/_default.cfg
@@ -40,6 +40,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -72,7 +75,6 @@ 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"
@@ -80,11 +82,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -119,7 +123,7 @@ steamcmdforcewindows="no"
branch=""
betapassword=""
# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
-steammaster="false"
+steammaster="true"
## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
# 1: tmux kill
diff --git a/lgsm/config-default/config-lgsm/l4d2server/_default.cfg b/lgsm/config-default/config-lgsm/l4d2server/_default.cfg
index 96c2cc5bc..a37ef4eb4 100644
--- a/lgsm/config-default/config-lgsm/l4d2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/l4d2server/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/l4dserver/_default.cfg b/lgsm/config-default/config-lgsm/l4dserver/_default.cfg
index 2b5a64be6..dc22bc871 100644
--- a/lgsm/config-default/config-lgsm/l4dserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/l4dserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/mcbserver/_default.cfg b/lgsm/config-default/config-lgsm/mcbserver/_default.cfg
index c4d9d5455..d7171a3f6 100644
--- a/lgsm/config-default/config-lgsm/mcbserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/mcbserver/_default.cfg
@@ -31,6 +31,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -63,7 +66,6 @@ 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"
@@ -71,11 +73,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -123,7 +127,7 @@ stopmode="5"
# 4: gsquery
# 5: tcp
querymode="2"
-querytype="minecraftbe"
+querytype="mbe"
## Console type
consoleverbose="yes"
diff --git a/lgsm/config-default/config-lgsm/mcserver/_default.cfg b/lgsm/config-default/config-lgsm/mcserver/_default.cfg
index cd2a80849..1288fab95 100644
--- a/lgsm/config-default/config-lgsm/mcserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/mcserver/_default.cfg
@@ -37,6 +37,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -69,7 +72,6 @@ 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"
@@ -77,11 +79,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/mhserver/_default.cfg b/lgsm/config-default/config-lgsm/mhserver/_default.cfg
index 4be0fab64..197440ab2 100644
--- a/lgsm/config-default/config-lgsm/mhserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/mhserver/_default.cfg
@@ -17,7 +17,8 @@ queryport="27015"
defaultmap="FFA_ThePit"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="Mordhau ${defaultmap} -log -MultiHome=${ip} -Port=${port} -BeaconPort=${beaconport} -QueryPort=${queryport} -GameIni=${servercfgfullpath}"
+## Game Server Docs | https://mordhau.fandom.com/wiki/Dedicated_Server_Hosting_Guide
+startparameters="Mordhau ${defaultmap} -MultiHome=${ip} -Port=${port} -BeaconPort=${beaconport} -QueryPort=${queryport} -GameIni=${servercfgfullpath} -log"
#### LinuxGSM Settings ####
@@ -36,6 +37,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +72,6 @@ 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"
@@ -76,11 +79,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg b/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg
index cbfbcfb92..dfd87335c 100644
--- a/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/mohaaserver/_default.cfg
@@ -14,7 +14,7 @@ port="12203"
defaultmap="dm/mohdm1"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-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}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set fs_outputpath ${gamelogdir} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +map ${defaultmap} +exec ${servercfg} "
#### LinuxGSM Settings ####
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/momserver/_default.cfg b/lgsm/config-default/config-lgsm/momserver/_default.cfg
index 670e7b3a7..5834670c9 100644
--- a/lgsm/config-default/config-lgsm/momserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/momserver/_default.cfg
@@ -14,7 +14,8 @@ port="7777"
beaconport="15000"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-port="${port}" -beaconport="${beaconport}" -MULTIHOME="${ip}""
+## Game Server Docs | https://memoriesofmars.fandom.com/wiki/Dedicated_Servers
+startparameters="-MultiHome=${ip} -Port=${port} -BeaconPort=${beaconport} -log"
#### LinuxGSM Settings ####
@@ -33,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +69,6 @@ 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"
@@ -73,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/mtaserver/_default.cfg b/lgsm/config-default/config-lgsm/mtaserver/_default.cfg
index 3af42ea2b..d1880ef89 100644
--- a/lgsm/config-default/config-lgsm/mtaserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/mtaserver/_default.cfg
@@ -31,6 +31,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -63,7 +66,6 @@ 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"
@@ -71,11 +73,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/ndserver/_default.cfg b/lgsm/config-default/config-lgsm/ndserver/_default.cfg
index de3a3aaec..249556af4 100644
--- a/lgsm/config-default/config-lgsm/ndserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ndserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/necserver/_default.cfg b/lgsm/config-default/config-lgsm/necserver/_default.cfg
index 4857107c8..8062f8d5f 100644
--- a/lgsm/config-default/config-lgsm/necserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/necserver/_default.cfg
@@ -31,6 +31,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -63,7 +66,6 @@ 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"
@@ -71,11 +73,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg b/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg
index e3b56f545..8757caa6c 100644
--- a/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/nmrihserver/_default.cfg
@@ -41,6 +41,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -73,7 +76,6 @@ 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"
@@ -81,11 +83,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg b/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg
index 2ca53a335..2f8f47af5 100644
--- a/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ns2cserver/_default.cfg
@@ -15,7 +15,7 @@ defaultmap="co_core"
maxplayers="24"
servername="LinuxGSM"
httpuser="admin"
-httppassword="admin"
+httppassword="CHANGE_ME"
httpport="8080"
mods=""
serverpassword=""
@@ -24,7 +24,7 @@ serverpassword=""
# -password \"${serverpassword}\"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${httpuser} -webpassword \"${httppassword}\" -webport ${httpport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\""
+startparameters="-name '${servername}' -port ${port} -webadmin -webdomain ${ip} -webuser ${httpuser} -webpassword '${httppassword}' -webport ${httpport} -map ${defaultmap} -limit ${maxplayers} -config_path '${servercfgdir}' -modstorage '${modstoragedir}' -mods '${mods}'"
#### LinuxGSM Settings ####
@@ -43,6 +43,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -75,7 +78,6 @@ 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"
@@ -83,11 +85,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ns2server/_default.cfg b/lgsm/config-default/config-lgsm/ns2server/_default.cfg
index 3ee3a0514..9cec798da 100644
--- a/lgsm/config-default/config-lgsm/ns2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ns2server/_default.cfg
@@ -12,19 +12,20 @@
ip="0.0.0.0"
port="27015"
defaultmap="ns2_summit"
-maxplayers="24"
+maxplayers="20"
+maxspectators="5"
servername="LinuxGSM"
httpuser="admin"
-httppassword="admin"
+httppassword="CHANGE_ME"
httpport="8080"
-mods=""
+modserverport="27031"
serverpassword=""
# Add the following line to the parms if you want a private server. Ensuring
# that the password variable above is not left empty.
-# -password \"${serverpassword}\"
+# -password '${serverpassword}'
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${httpuser} -webpassword \"${httppassword}\" -webport ${httpport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -logdir \"${gamelogdir}\" -modstorage \"${modstoragedir}\" -mods2 \"${mods}\""
+startparameters="-name '${servername}' -port ${port} -webadmin -webdomain ${ip} -webuser ${httpuser} -webpassword '${httppassword}' -webport ${httpport} -startmodserver -modserverport ${modserverport} -map ${defaultmap} -limit ${maxplayers} -speclimit ${maxspectators} -config_path '${servercfgdir}' -logdir '${gamelogdir}' -modstorage '${modstoragedir}'"
#### LinuxGSM Settings ####
@@ -43,6 +44,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -75,7 +79,6 @@ 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"
@@ -83,11 +86,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/nsserver/_default.cfg b/lgsm/config-default/config-lgsm/nsserver/_default.cfg
index 7880222fa..367878519 100644
--- a/lgsm/config-default/config-lgsm/nsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/nsserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ohdserver/_default.cfg b/lgsm/config-default/config-lgsm/ohdserver/_default.cfg
index 25a418edc..26bc3a30c 100644
--- a/lgsm/config-default/config-lgsm/ohdserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ohdserver/_default.cfg
@@ -12,14 +12,14 @@
ip="0.0.0.0"
port="7777"
queryport="27005"
+rconport="7778"
servername="LinuxGSM"
-serverpassword=""
# Maps: risala, khafji_p, lamdong, montecassino, argonne
defaultmap="AAS-TestMap"
maxplayers="16"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="${defaultmap}?MaxPlayers=${maxplayers}?Password=${serverpassword} -Port=${port} -QueryPort=${queryport} -SteamServerName='${servername}' -log"
+startparameters="${defaultmap}?MaxPlayers=${maxplayers} -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -RconPort=${rconport} -SteamServerName='${servername}' -log"
#### LinuxGSM Settings ####
@@ -38,6 +38,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -70,7 +73,6 @@ 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"
@@ -78,11 +80,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/onsetserver/_default.cfg b/lgsm/config-default/config-lgsm/onsetserver/_default.cfg
index b25cfb60c..0103ef069 100644
--- a/lgsm/config-default/config-lgsm/onsetserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/onsetserver/_default.cfg
@@ -9,6 +9,7 @@
#### Game Server Settings ####
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+## Game Server Docs | https://dev.playonset.com/wiki/DedicatedServer
startparameters="--config ${servercfgfullpath}"
#### LinuxGSM Settings ####
@@ -28,6 +29,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +64,6 @@ 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"
@@ -68,11 +71,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/opforserver/_default.cfg b/lgsm/config-default/config-lgsm/opforserver/_default.cfg
index a0785a4b6..93d00fc5c 100644
--- a/lgsm/config-default/config-lgsm/opforserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/opforserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/pc2server/_default.cfg b/lgsm/config-default/config-lgsm/pc2server/_default.cfg
index 1b9a6e6f1..d4e6ce1d6 100644
--- a/lgsm/config-default/config-lgsm/pc2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/pc2server/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/pcserver/_default.cfg b/lgsm/config-default/config-lgsm/pcserver/_default.cfg
index 1d4b15394..c36dfaac6 100644
--- a/lgsm/config-default/config-lgsm/pcserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/pcserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/pmcserver/_default.cfg b/lgsm/config-default/config-lgsm/pmcserver/_default.cfg
index 430daefbe..74e0e7e18 100644
--- a/lgsm/config-default/config-lgsm/pmcserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/pmcserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/psserver/_default.cfg b/lgsm/config-default/config-lgsm/psserver/_default.cfg
index 9d8fa9383..80d991f94 100644
--- a/lgsm/config-default/config-lgsm/psserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/psserver/_default.cfg
@@ -10,15 +10,11 @@
## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
ip="0.0.0.0"
-maxplayers="40"
port="10027"
queryport="10037"
-randommap="NONE"
-reservedslots="0"
-tickrate="50"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="MULTIHOME=${ip} RANDOM=${randommap} Port=${port} QueryPort=${queryport} FIXEDMAXPLAYERS=${maxplayers} FIXEDMAXTICKRATE=${tickrate} NumReservedSlots=${reservedslots}"
+startparameters="-MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -log"
#### LinuxGSM Settings ####
@@ -37,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -69,7 +68,6 @@ 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"
@@ -77,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg b/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg
index 7f8adbf5f..1e2ca3660 100644
--- a/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/pvrserver/_default.cfg b/lgsm/config-default/config-lgsm/pvrserver/_default.cfg
index 12e089fe0..374da3dd1 100644
--- a/lgsm/config-default/config-lgsm/pvrserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/pvrserver/_default.cfg
@@ -17,7 +17,8 @@ defaultmap="datacenter"
apikey=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="Pavlov ${defaultmap} -log -MultiHome=${ip} -Port=${port} ApiKey=${apikey}"
+## Game Server Docs | http://pavlovwiki.com/index.php/Setting_up_a_dedicated_server
+startparameters="Pavlov ${defaultmap} -MultiHome=${ip} -Port=${port} ApiKey=${apikey} -log"
#### LinuxGSM Settings ####
@@ -36,6 +37,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +72,6 @@ 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"
@@ -76,11 +79,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -147,7 +152,7 @@ consoleinteract="no"
## Game Server Details
# Do not edit
gamename="Pavlov VR"
-engine="unreal4"
+engine="unreal5"
glibc="2.17"
#### Directories ####
diff --git a/lgsm/config-default/config-lgsm/pwserver/_default.cfg b/lgsm/config-default/config-lgsm/pwserver/_default.cfg
new file mode 100644
index 000000000..5e848264e
--- /dev/null
+++ b/lgsm/config-default/config-lgsm/pwserver/_default.cfg
@@ -0,0 +1,188 @@
+##################################
+######## 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="LinuxGSM"
+
+# For community servers (serverlist) you need to change these settings (publicip & publicport) in the gameserver config file aswell
+port="8211"
+steamport="27015"
+
+## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+## Game Server Docs | https://tech.palworldgame.com/settings-and-operation/arguments
+startparameters="-publiclobby -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -servername='${servername}' -port='${port}' -queryport='${steamport}'"
+
+#### 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"
+
+# Alert on Start/Stop/Restart
+statusalert="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=""
+
+# Gotify Alerts | https://docs.linuxgsm.com/alerts/gotify
+gotifyalert="off"
+gotifytoken="token"
+gotifywebhook="webhook"
+
+# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
+iftttalert="off"
+ifttttoken="accesstoken"
+iftttevent="linuxgsm_alert"
+
+# 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"
+
+# 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 all".
+telegramapi="api.telegram.org"
+telegramalert="off"
+telegramtoken="accesstoken"
+telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
+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="2394010"
+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="palworld"
+
+## Console type
+consoleverbose="yes"
+consoleinteract="no"
+
+## Game Server Details
+# Do not edit
+gamename="Palworld"
+engine="unreal5"
+glibc="2.17"
+
+#### Directories ####
+# Edit with care
+
+## Game Server Directories
+systemdir="${serverfiles}/Pal"
+executabledir="${systemdir}/Binaries/Linux/"
+executable="./PalServer-Linux-Shipping"
+servercfgdir="${serverfiles}/Pal/Saved/Config/LinuxServer"
+servercfg="PalWorldSettings.ini"
+servercfgdefault="PalWorldSettings.ini"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+
+## Backup Directory
+backupdir="${lgsmdir}/backup"
+
+## Logging Directories
+[ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || 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"
+
+## Log Parameters
+logtimestamp="off"
+logtimestampformat="%Y-%m-%d %H:%M:%S"
diff --git a/lgsm/config-default/config-lgsm/pzserver/_default.cfg b/lgsm/config-default/config-lgsm/pzserver/_default.cfg
index a3a5ac340..f830d7cc4 100644
--- a/lgsm/config-default/config-lgsm/pzserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/pzserver/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/q2server/_default.cfg b/lgsm/config-default/config-lgsm/q2server/_default.cfg
index 0d899df65..79820d650 100644
--- a/lgsm/config-default/config-lgsm/q2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/q2server/_default.cfg
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/q3server/_default.cfg b/lgsm/config-default/config-lgsm/q3server/_default.cfg
index e53fb4285..74b0d11f3 100644
--- a/lgsm/config-default/config-lgsm/q3server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/q3server/_default.cfg
@@ -14,7 +14,7 @@ port="27960"
defaultmap="q3dm17"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-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}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set com_hunkMegs 32 +set net_ip ${ip} +set net_port ${port} +map ${defaultmap} +exec ${servercfg}"
#### LinuxGSM Settings ####
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/cdserver/_default.cfg b/lgsm/config-default/config-lgsm/q4server/_default.cfg
similarity index 83%
rename from lgsm/config-default/config-lgsm/cdserver/_default.cfg
rename to lgsm/config-default/config-lgsm/q4server/_default.cfg
index 69e4ee51e..d07828e9f 100644
--- a/lgsm/config-default/config-lgsm/cdserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/q4server/_default.cfg
@@ -8,8 +8,15 @@
#### Game Server Settings ####
+## SteamCMD Login | https://docs.linuxgsm.com/steamcmd#steamcmd-login
+steamuser="username"
+steampass='password'
+
+## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
+port="28004"
+
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-batchmode -nographics"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set net_port ${port} +exec ${servercfg}"
#### LinuxGSM Settings ####
@@ -28,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +70,6 @@ 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"
@@ -68,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -101,8 +112,8 @@ sleeptime="0.5"
## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
# Server appid
-appid="685100"
-steamcmdforcewindows="no"
+appid="2210"
+steamcmdforcewindows="yes"
# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
branch=""
betapassword=""
@@ -121,7 +132,7 @@ steammaster="false"
# 9: GoldSrc
# 10: Avorion
# 11: end
-stopmode="2"
+stopmode="3"
## Query mode
# 1: session only
@@ -129,17 +140,17 @@ stopmode="2"
# 3: gamedig
# 4: gsquery
# 5: tcp
-querymode="1"
-querytype=""
+querymode="2"
+querytype="quake4"
## Console type
consoleverbose="yes"
-consoleinteract="no"
+consoleinteract="yes"
## Game Server Details
# Do not edit
-gamename="Crafting Dead"
-engine="unity3d"
+gamename="Quake 4"
+engine="idtech3_ql"
glibc="2.15"
#### Directories ####
@@ -148,10 +159,10 @@ glibc="2.15"
## Game Server Directories
systemdir="${serverfiles}"
executabledir="${serverfiles}"
-executable="./crafting_dead.x86_64"
-servercfgdir="${systemdir}"
-servercfg="properties.json"
-servercfgdefault="properties.json"
+executable="./quake4-dedicated"
+servercfgdir="${systemdir}/q4base"
+servercfg="${selfname}.cfg"
+servercfgdefault="server.cfg"
servercfgfullpath="${servercfgdir}/${servercfg}"
## Backup Directory
@@ -159,9 +170,10 @@ backupdir="${lgsmdir}/backup"
## Logging Directories
[ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || logdir="${rootdir}/log"
-gamelogdir="${systemdir}/logs"
+gamelogdir="${logdir}/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"
diff --git a/lgsm/config-default/config-lgsm/qlserver/_default.cfg b/lgsm/config-default/config-lgsm/qlserver/_default.cfg
index 3f28329ac..84631b765 100644
--- a/lgsm/config-default/config-lgsm/qlserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/qlserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/qwserver/_default.cfg b/lgsm/config-default/config-lgsm/qwserver/_default.cfg
index 95dea75f8..620943c3e 100644
--- a/lgsm/config-default/config-lgsm/qwserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/qwserver/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg b/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg
index 419825ec1..bb1957de0 100644
--- a/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ricochetserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/roserver/_default.cfg b/lgsm/config-default/config-lgsm/roserver/_default.cfg
index 4617289fd..c000f6181 100644
--- a/lgsm/config-default/config-lgsm/roserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/roserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg b/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg
index 159b8dfd4..9011bbced 100644
--- a/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/rtcwserver/_default.cfg
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/rustserver/_default.cfg b/lgsm/config-default/config-lgsm/rustserver/_default.cfg
index 9a4bfe147..cf609a84c 100644
--- a/lgsm/config-default/config-lgsm/rustserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/rustserver/_default.cfg
@@ -26,9 +26,10 @@ 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.
+tags="" # values: monthly, biweekly, weekly, vanilla, hardcore, softcore, pve, roleplay, creative, minigame, training, battlefield, broyale, builds, NA, SA, EU, WA, EA, OC, AF ( Doc: https://wiki.facepunch.com/rust/server-browser-tags )
## 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.queryport ${queryport} +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"
+startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.queryport ${queryport} +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}\" +server.tags ${tags} -logfile ${gamelog}"
#### LinuxGSM Settings ####
@@ -47,6 +48,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -79,7 +83,6 @@ 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"
@@ -87,11 +90,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -182,6 +187,7 @@ backupdir="${lgsmdir}/backup"
gamelogdir="${logdir}/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"
diff --git a/lgsm/config-default/config-lgsm/rwserver/_default.cfg b/lgsm/config-default/config-lgsm/rwserver/_default.cfg
index c714045ca..9523dd63b 100644
--- a/lgsm/config-default/config-lgsm/rwserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/rwserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/sampserver/_default.cfg b/lgsm/config-default/config-lgsm/sampserver/_default.cfg
index 448f8c20f..870603bb0 100644
--- a/lgsm/config-default/config-lgsm/sampserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/sampserver/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
@@ -121,11 +125,11 @@ stopmode="2"
# 4: gsquery
# 5: tcp
querymode="3"
-querytype="samp"
+querytype="gtasam"
## Console type
-consoleverbose=""
-consoleinteract=""
+consoleverbose="no"
+consoleinteract="no"
## Game Server Details
# Do not edit
diff --git a/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg b/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg
index e5fe5b5d8..82d651ec3 100644
--- a/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/sbotsserver/_default.cfg
@@ -15,7 +15,7 @@ defaultmap="StationKappa"
servername="LinuxGSM"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="Port=${port}?QueryPort=${queryport} -startup_map ${defaultmap} -server_name \"${servername}\""
+startparameters="-MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -startup_map ${defaultmap} -server_name '${servername}'"
#### LinuxGSM Settings ####
@@ -34,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +69,6 @@ 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"
@@ -74,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -155,11 +159,6 @@ glibc="2.17"
systemdir="${serverfiles}"
executabledir="${systemdir}/blank1/Binaries/Linux"
executable="./blank1Server-Linux-Shipping"
-servercfgdir="${systemdir}/blank1/Saved/Config/LinuxServer"
-servercfg="Game.ini"
-servercfgdefault="Game.ini"
-servercfgfullpath="${servercfgdir}/${servercfg}"
-
## Backup Directory
backupdir="${lgsmdir}/backup"
diff --git a/lgsm/config-default/config-lgsm/sbserver/_default.cfg b/lgsm/config-default/config-lgsm/sbserver/_default.cfg
index 79e447454..3d06b4235 100644
--- a/lgsm/config-default/config-lgsm/sbserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/sbserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg
index ad2e2f9d5..237bbebe3 100644
--- a/lgsm/config-default/config-lgsm/scpslserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/scpslserver/_default.cfg
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg
index 6c7a7b3ca..e54814df2 100644
--- a/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg b/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg
index b2c8e00f0..0a091dae4 100644
--- a/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/sdtdserver/_default.cfg
@@ -31,6 +31,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -63,7 +66,6 @@ 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"
@@ -71,11 +73,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -132,7 +136,7 @@ stopmode="8"
# 3: gamedig
# 4: gsquery
# 5: tcp
-querymode="5"
+querymode="2"
querytype="protocol-valve"
## Console type
diff --git a/lgsm/config-default/config-lgsm/sfcserver/_default.cfg b/lgsm/config-default/config-lgsm/sfcserver/_default.cfg
index b566de690..831f92353 100644
--- a/lgsm/config-default/config-lgsm/sfcserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/sfcserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/sfserver/_default.cfg b/lgsm/config-default/config-lgsm/sfserver/_default.cfg
index 46d0ebf88..65930bfc1 100644
--- a/lgsm/config-default/config-lgsm/sfserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/sfserver/_default.cfg
@@ -15,7 +15,8 @@ beaconport="15000"
port="7777"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="FactoryGame -multihome=${ip} -ServerQueryPort=${queryport} -BeaconPort=${beaconport} -Port=${port} -log -unattended"
+## Game Server Docs | https://satisfactory.fandom.com/wiki/Dedicated_servers
+startparameters="FactoryGame -MultiHome=${ip} -Port=${port} -ServerQueryPort=${queryport} -BeaconPort=${beaconport} -log"
#### LinuxGSM Settings ####
@@ -34,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -66,7 +70,6 @@ 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"
@@ -74,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -145,7 +150,7 @@ consoleinteract="no"
## Game Server Details
# Do not edit
gamename="Satisfactory"
-engine="unreal4"
+engine="unreal5"
glibc="2.17"
#### Directories ####
@@ -154,7 +159,7 @@ glibc="2.17"
## Game Server Directories
systemdir="${serverfiles}/FactoryGame"
executabledir="${serverfiles}/Engine/Binaries/Linux"
-executable="./UE4Server-Linux-Shipping"
+executable="./UnrealServer-Linux-Shipping"
servercfgdir="${systemdir}/Saved/Config/LinuxServer"
servercfg="GameUserSettings.ini"
servercfgdefault="GameUserSettings.ini"
diff --git a/lgsm/config-default/config-lgsm/smserver/_default.cfg b/lgsm/config-default/config-lgsm/smserver/_default.cfg
new file mode 100644
index 000000000..306179b9c
--- /dev/null
+++ b/lgsm/config-default/config-lgsm/smserver/_default.cfg
@@ -0,0 +1,189 @@
+##################################
+######## 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="LinuxGSM"
+serverpassword=""
+adminpassword=""
+port="8777"
+queryport="27015"
+telnetport="18888"
+maxplayers="50"
+backupinterval="15" # Backup interval in minutes.
+defaultmap="Level01_Main"
+
+## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+startparameters="WS ${defaultmap} -MultiHome=${ip} -Port=${port} -EchoPort=${telnetport} -QueryPort=${queryport} -SteamServerName='${servername}' -PSW='${serverpassword}' -adminpsw='${adminpassword}' -MaxPlayers=${maxplayers} -initbackup -backupinterval=${backupinterval} -UTF8Output -forcepassthrough -log"
+
+#### 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"
+
+# Alert on Start/Stop/Restart
+statusalert="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=""
+
+# Gotify Alerts | https://docs.linuxgsm.com/alerts/gotify
+gotifyalert="off"
+gotifytoken="token"
+gotifywebhook="webhook"
+
+# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
+iftttalert="off"
+ifttttoken="accesstoken"
+iftttevent="linuxgsm_alert"
+
+# 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"
+
+# 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 all".
+telegramapi="api.telegram.org"
+telegramalert="off"
+telegramtoken="accesstoken"
+telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
+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="3017300"
+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
+# 3: quit
+# 4: quit 120s
+# 5: stop
+# 6: q
+# 7: exit
+# 8: 7 Days to Die
+# 9: GoldSrc
+# 10: Avorion
+# 11: end
+# 12: shutdown
+# 13: soulmask
+stopmode="13"
+
+## Query mode
+# 1: session only
+# 2: gamedig (gsquery fallback)
+# 3: gamedig
+# 4: gsquery
+# 5: tcp
+querymode="2"
+querytype="protocol-valve"
+
+## Console type
+consoleverbose="yes"
+consoleinteract="no"
+
+## Game Server Details
+# Do not edit
+gamename="Soulmask"
+engine="unreal4"
+glibc="2.17"
+
+#### Directories ####
+# Edit with care
+
+## Game Server Directories
+systemdir="${serverfiles}/WS"
+executabledir="${systemdir}/Binaries/Linux"
+executable="./WSServer-Linux-Shipping"
+
+## Backup Directory
+backupdir="${lgsmdir}/backup"
+
+## Logging Directories
+[ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || logdir="${rootdir}/log"
+gamelogdir="${systemdir}/WS/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"
+
+## Log Parameters
+logtimestamp="off"
+logtimestampformat="%Y-%m-%d %H:%M:%S"
diff --git a/lgsm/config-default/config-lgsm/sof2server/_default.cfg b/lgsm/config-default/config-lgsm/sof2server/_default.cfg
index 6169950c0..e00afefa1 100644
--- a/lgsm/config-default/config-lgsm/sof2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/sof2server/_default.cfg
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/solserver/_default.cfg b/lgsm/config-default/config-lgsm/solserver/_default.cfg
index 671dcd429..8581104dd 100644
--- a/lgsm/config-default/config-lgsm/solserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/solserver/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/squadserver/_default.cfg b/lgsm/config-default/config-lgsm/squadserver/_default.cfg
index dbaa3c736..99b91b538 100644
--- a/lgsm/config-default/config-lgsm/squadserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/squadserver/_default.cfg
@@ -11,10 +11,10 @@
## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
port="7787"
queryport="27165"
-randommap="ALWAYS"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="MULTIHOME=${ip} RANDOM=${randommap} Port=${port} QueryPort=${queryport}"
+## Game Server Docs | https://squad.fandom.com/wiki/Dedicated_server
+startparameters="-MultiHome=${ip} -Port=${port} -QueryPort=${queryport}"
#### LinuxGSM Settings ####
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -134,8 +138,8 @@ stopmode="2"
# 3: gamedig
# 4: gsquery
# 5: tcp
-querymode="2"
-querytype="protocol-valve"
+querymode="1"
+querytype=""
## Console type
consoleverbose="yes"
diff --git a/lgsm/config-default/config-lgsm/stnserver/_default.cfg b/lgsm/config-default/config-lgsm/stnserver/_default.cfg
index 3e5f97c7b..70c7d290c 100644
--- a/lgsm/config-default/config-lgsm/stnserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/stnserver/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/stserver/_default.cfg b/lgsm/config-default/config-lgsm/stserver/_default.cfg
index 980c4e045..2f2fe0ed4 100644
--- a/lgsm/config-default/config-lgsm/stserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/stserver/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/svenserver/_default.cfg b/lgsm/config-default/config-lgsm/svenserver/_default.cfg
index 7f47091e4..4cd97c50e 100644
--- a/lgsm/config-default/config-lgsm/svenserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/svenserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg b/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg
index 562b0fd9b..fc0d291c9 100644
--- a/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/terrariaserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/tf2server/_default.cfg b/lgsm/config-default/config-lgsm/tf2server/_default.cfg
index d7d53928b..600249013 100644
--- a/lgsm/config-default/config-lgsm/tf2server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/tf2server/_default.cfg
@@ -41,6 +41,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -73,7 +76,6 @@ 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"
@@ -81,11 +83,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/tfcserver/_default.cfg b/lgsm/config-default/config-lgsm/tfcserver/_default.cfg
index 6709767a9..17787eef5 100644
--- a/lgsm/config-default/config-lgsm/tfcserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/tfcserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/tfserver/_default.cfg b/lgsm/config-default/config-lgsm/tfserver/_default.cfg
new file mode 100644
index 000000000..fbce96a44
--- /dev/null
+++ b/lgsm/config-default/config-lgsm/tfserver/_default.cfg
@@ -0,0 +1,200 @@
+##################################
+######## 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
+ip="0.0.0.0"
+port="5001"
+beaconport="5002"
+shutdownport="5003"
+queryport="27015"
+adminlabel="true" # Enable admin icon.
+allowsensitivewords="true"
+altsavedirectoryname="${defaultmap}"
+anticheat="true"
+damageself="true"
+damangeallies="true"
+gamemode="0" # 0 = PvP; 1 = PvE
+greenhand="true"
+maxplayers="40"
+maxqueuesize="50"
+queuevalidtime="120"
+saveinterval="300" # Auto-save in seconds.
+serveradmins="" # Use 17-digit Steam IDs separated by commas to grant admin privileges to players.
+servername="LinuxGSM"
+serverpassword=""
+servertags="LinuxGSM"
+steamsocket="0" # Use Steam Socket. 0 = off; 1 = on. Use Steam Servers for network penetration. Enable this if you don't have a public IP but you want to allow players from outside your network to join your server. If disabled, only you and other players on your LAN can join. If you have a public IP, you do not need to enable this.
+
+## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+startparameters="ProjectWar_Start?DedicatedServer?MaxPlayers=${maxplayers} -server -game -log -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -BeaconPort=${beaconport} -ShutDownServicePort=${shutdownport} -ConfigServerName='${selfname}' -OutIPAddress=${publicip} -ServerTags='${servertags}' -UseSteamSocket=${steamsocket} -UserDir='${serverfiles}/${selfname}' -ServerName='${servername}' -EnableParallelCharacterMovementTickFunction -EnableParallelCharacterTickFunction -UseDynamicPhysicsScene -Game.PhysicsVehicle=false -ansimalloc -Game.MaxFrameRate=35 -MaxQueueSize=${maxqueuesize} -QueueValidTime=${queuevalidtime} -QueueThreshold=${maxplayers} -ServerFightModeType=${gamemode} -IsCanSelfDamage=${damageself} -IsCanFriendDamage=${damageallies} -SaveWorldInterval=${saveinterval} -GMOverlapRatio=2 -GreenHand=${greenhand} -SensitiveWords=${allowsensitivewords} -UseACE=${anticheat} -ServerAdminAccounts='${serveradmins}' -IsShowGmTitle=${adminlabel} -ServerPassword='${serverpassword}'"
+
+#### 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"
+
+# Alert on Start/Stop/Restart
+statusalert="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=""
+
+# Gotify Alerts | https://docs.linuxgsm.com/alerts/gotify
+gotifyalert="off"
+gotifytoken="token"
+gotifywebhook="webhook"
+
+# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
+iftttalert="off"
+ifttttoken="accesstoken"
+iftttevent="linuxgsm_alert"
+
+# 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"
+
+# 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 all".
+telegramapi="api.telegram.org"
+telegramalert="off"
+telegramtoken="accesstoken"
+telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
+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="2334200"
+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
+# 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="yes"
+consoleinteract="no"
+
+## Game Server Details
+# Do not edit
+gamename="The Front"
+engine="unreal4"
+glibc="2.17"
+
+#### Directories ####
+# Edit with care
+
+## Game Server Directories
+systemdir="${serverfiles}/ProjectWar"
+executabledir="${systemdir}/Binaries/Linux"
+executable="./TheFrontServer"
+
+## Backup Directory
+backupdir="${lgsmdir}/backup"
+
+## Logging Directories
+[ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || 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"
+
+## Log Parameters
+logtimestamp="off"
+logtimestampformat="%Y-%m-%d %H:%M:%S"
diff --git a/lgsm/config-default/config-lgsm/tiserver/_default.cfg b/lgsm/config-default/config-lgsm/tiserver/_default.cfg
index 994a2574a..4090d85c9 100644
--- a/lgsm/config-default/config-lgsm/tiserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/tiserver/_default.cfg
@@ -11,9 +11,10 @@
## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
ip="0.0.0.0"
port="7777"
-defaultmap="/Game/TheIsle/Maps/Game/Isla_Spiro/Isla_Spiro"
+defaultmap="/Game/TheIsle/Maps/Game/Gateway/Gateway"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+## Game Server Docs | https://isle.fandom.com/wiki/The_Isle_Server_Settings_and_Configuration
startparameters="${defaultmap} -Port=${port} -log"
#### LinuxGSM Settings ####
@@ -33,6 +34,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +69,6 @@ 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"
@@ -73,11 +76,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -144,7 +149,7 @@ consoleinteract="no"
## Game Server Details
# Do not edit
gamename="The Isle"
-engine="unreal4"
+engine="unreal5"
glibc="2.17"
#### Directories ####
diff --git a/lgsm/config-default/config-lgsm/ts3server/_default.cfg b/lgsm/config-default/config-lgsm/ts3server/_default.cfg
index dc3e7a3fa..d132d5c57 100644
--- a/lgsm/config-default/config-lgsm/ts3server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ts3server/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/tsserver/_default.cfg b/lgsm/config-default/config-lgsm/tsserver/_default.cfg
index c9ea3b381..418727ae6 100644
--- a/lgsm/config-default/config-lgsm/tsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/tsserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/tuserver/_default.cfg b/lgsm/config-default/config-lgsm/tuserver/_default.cfg
index 551ce95f4..ba22c5aa6 100644
--- a/lgsm/config-default/config-lgsm/tuserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/tuserver/_default.cfg
@@ -19,7 +19,7 @@ queryport="27015"
gslt=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-log -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -TowerServerINI=${selfname}.ini"
+startparameters="-MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -TowerServerINI=${selfname}.ini -log"
#### LinuxGSM Settings ####
@@ -38,6 +38,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -70,7 +73,6 @@ 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"
@@ -78,11 +80,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/twserver/_default.cfg b/lgsm/config-default/config-lgsm/twserver/_default.cfg
index d7e84704a..4d47cb2d1 100644
--- a/lgsm/config-default/config-lgsm/twserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/twserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/untserver/_default.cfg b/lgsm/config-default/config-lgsm/untserver/_default.cfg
index b250d3284..a556c1758 100644
--- a/lgsm/config-default/config-lgsm/untserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/untserver/_default.cfg
@@ -42,6 +42,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -74,7 +77,6 @@ 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"
@@ -82,11 +84,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg b/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg
index dc5d39fd7..ef8fab731 100644
--- a/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ut2k4server/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/ut3server/_default.cfg b/lgsm/config-default/config-lgsm/ut3server/_default.cfg
index 412422257..1088d1f0c 100644
--- a/lgsm/config-default/config-lgsm/ut3server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ut3server/_default.cfg
@@ -29,7 +29,7 @@ gspassword=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
# 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}"
+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} -multihome=${ip} -port=${port} -queryport=${queryport} -nohomedir -unattended -log=${gamelog}"
#### LinuxGSM Settings ####
@@ -48,6 +48,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -80,7 +83,6 @@ 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"
@@ -88,11 +90,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/ut99server/_default.cfg b/lgsm/config-default/config-lgsm/ut99server/_default.cfg
index 6df4ea539..3343afc81 100644
--- a/lgsm/config-default/config-lgsm/ut99server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ut99server/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/utserver/_default.cfg b/lgsm/config-default/config-lgsm/utserver/_default.cfg
index 1ae90d9bb..299d2571a 100644
--- a/lgsm/config-default/config-lgsm/utserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/utserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg
index ce90a2b07..b027d0fca 100644
--- a/lgsm/config-default/config-lgsm/vhserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg
@@ -10,23 +10,47 @@
## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
servername="LinuxGSM"
-# Minimum password length is 5.
-serverpassword=""
+serverpassword="" # Minimum password length is 5.
port="2456"
worldname="${selfname}"
public="1"
savedir="$HOME/.config/unity3d/IronGate/Valheim"
logFile=""
-saveinterval="1800"
+saveinterval="1800" # Auto-save in seconds.
backups="4"
backupshort="7200"
backuplong="43200"
-# If crossplay is empty, it's off. Fill with any text to make true
-# Crossplay is currently not working on Linux dedicated servers, so for now the default is false (emtpy)
-crossplay=""
+instanceid="1"
+
+# INSTRUCTIONS FOR WORLD MODIFIERS (from Valheim Dedicated Server Manual.pdf located in serverfiles)
+# World modifiers can only be set in the start parameters and can be a combination of the following
+# PRESETS:
+# Setting a preset will overwrite any other previous modifiers.
+# Command line parameter: -preset
+# Valid values: normal, casual, easy, hard, hardcore, immersive, hammer.
+# MODIFIERS:
+# This is set as a combination of key and value, if combined with a preset should be set after.
+# Command line parameter: -modifier
+# Valid keys and possible values:
+# combat: veryeasy, easy, hard, veryhard
+# deathPenalty: casual, veryeasy, easy, hard, hardcore
+# resources: muchless, less, more, muchmore, most
+# raids: none, muchless, less, more, muchmore
+# portals: casual, hard, veryhard
+# KEYS:
+# Sets a world modifier checkbox key.
+# Command line parameter: -setkey
+# Valid values: nobuildcost, playerevents, passivemobs, nomap
+# Example of a combination of modifiers where we set no raids, very hard portals and no map run:
+# worldmodifiers="-modifier raids none -modifier portals veryhard -setkey nomap"
+# NOTE: removing world modifiers will NOT reset them to default. the modifiers are stored in the world save file (.fwl)
+# To go back to default you need to launch the server with the following parameter at least once:
+#. worldmodifiers="-preset normal"
+
+worldmodifiers=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-name '${servername}' -password ${serverpassword} -port ${port} -world ${worldname} -public ${public} -savedir '${savedir}' -logFile '${logFile}' -saveinterval ${saveinterval} -backups ${backups} -backupshort ${backupshort} -backuplong ${backuplong} ${crossplay:+-crossplay}"
+startparameters="-name '${servername}' -password ${serverpassword} -port ${port} -world ${worldname} -public ${public} -savedir '${savedir}' -saveinterval ${saveinterval} -backups ${backups} -backupshort ${backupshort} -backuplong ${backuplong} -crossplay -instanceid ${instanceid} ${logFile:+ -logFile '${logFile}'} ${worldmodifiers:+ ${worldmodifiers}}"
#### LinuxGSM Settings ####
@@ -45,6 +69,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -77,7 +104,6 @@ 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"
@@ -85,11 +111,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/vintsserver/_default.cfg b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg
index 75288012e..a3bc472c4 100644
--- a/lgsm/config-default/config-lgsm/vintsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/vintsserver/_default.cfg
@@ -32,6 +32,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -64,7 +67,6 @@ 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"
@@ -72,11 +74,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/vpmcserver/_default.cfg b/lgsm/config-default/config-lgsm/vpmcserver/_default.cfg
index 636f23d9a..28bc1b2ea 100644
--- a/lgsm/config-default/config-lgsm/vpmcserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/vpmcserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/vsserver/_default.cfg b/lgsm/config-default/config-lgsm/vsserver/_default.cfg
index 257c98963..c7976b384 100644
--- a/lgsm/config-default/config-lgsm/vsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/vsserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/wetserver/_default.cfg b/lgsm/config-default/config-lgsm/wetserver/_default.cfg
index 153a2b1c5..b53a0674c 100644
--- a/lgsm/config-default/config-lgsm/wetserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/wetserver/_default.cfg
@@ -28,6 +28,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -60,7 +63,6 @@ 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"
@@ -68,11 +70,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Backup | https://docs.linuxgsm.com/commands/backup
diff --git a/lgsm/config-default/config-lgsm/wfserver/_default.cfg b/lgsm/config-default/config-lgsm/wfserver/_default.cfg
index 80fbe2037..d59790ca5 100644
--- a/lgsm/config-default/config-lgsm/wfserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/wfserver/_default.cfg
@@ -33,6 +33,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -65,7 +68,6 @@ 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"
@@ -73,11 +75,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -152,7 +156,7 @@ glibc="2.15"
# Edit with care
## Game Server Directories
-systemdir="${serverfiles}/Warfork.app/Contents/Resources"
+systemdir="${serverfiles}"
executabledir="${systemdir}"
executable="./wf_server.x86_64"
servercfgdir="${systemdir}/basewf"
diff --git a/lgsm/config-default/config-lgsm/wmcserver/_default.cfg b/lgsm/config-default/config-lgsm/wmcserver/_default.cfg
index 82a398363..c9a0a5d52 100644
--- a/lgsm/config-default/config-lgsm/wmcserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/wmcserver/_default.cfg
@@ -35,6 +35,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -67,7 +70,6 @@ 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"
@@ -75,11 +77,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg
index e4ef942d5..0141e7d7e 100644
--- a/lgsm/config-default/config-lgsm/wurmserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/wurmserver/_default.cfg
@@ -27,7 +27,7 @@ homekingdom="4"
# Unlocks the admin commands from within the game, that can be used to change
# the gameplay settings of the server, such as skill gain rate and field growth time.
-adminpassword="ADMINPASSWORD"
+adminpassword="CHANGE_ME"
# If true the server will follow the rules from the Epic servers in Wurm Online.
# For instance it will use the skill curve.
@@ -72,6 +72,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -104,7 +107,6 @@ 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"
@@ -112,11 +114,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
@@ -177,8 +181,8 @@ querymode="2"
querytype="protocol-valve"
## Console type
-consoleverbose=""
-consoleinteract=""
+consoleverbose="yes"
+consoleinteract="no"
## Game Server Details
# Do not edit
diff --git a/lgsm/config-default/config-lgsm/zmrserver/_default.cfg b/lgsm/config-default/config-lgsm/zmrserver/_default.cfg
index 4de16fd16..391d83baf 100644
--- a/lgsm/config-default/config-lgsm/zmrserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/zmrserver/_default.cfg
@@ -36,6 +36,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -68,7 +71,6 @@ 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"
@@ -76,11 +78,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/config-default/config-lgsm/zpsserver/_default.cfg b/lgsm/config-default/config-lgsm/zpsserver/_default.cfg
index 0cb900501..b5a7b3b93 100644
--- a/lgsm/config-default/config-lgsm/zpsserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/zpsserver/_default.cfg
@@ -41,6 +41,9 @@ displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
+# Alert on Start/Stop/Restart
+statusalert="off"
+
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
@@ -73,7 +76,6 @@ 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"
@@ -81,11 +83,13 @@ 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".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help all".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
+telegramthreadid=""
+telegramsilentnotification="false"
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
diff --git a/lgsm/data/almalinux-8.csv b/lgsm/data/almalinux-8.csv
index ac4b7c36f..204242144 100644
--- a/lgsm/data/almalinux-8.csv
+++ b/lgsm/data/almalinux-8.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python36,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +28,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,java-17-openjdk
+mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -82,13 +81,15 @@ onset,mariadb-connector-c
opfor
pc
pc2
-pmc,java-17-openjdk
+pmc,java-21-openjdk
ps,GConf2
pvkii
pvr,libcxx
+pw
pz,java-11-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,13 +126,13 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
-vpmc,java-17-openjdk
+vpmc,java-21-openjdk
vs
wet
wf
-wmc,java-17-openjdk
+wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/almalinux-9.csv b/lgsm/data/almalinux-9.csv
index 124322b62..02f21426c 100644
--- a/lgsm/data/almalinux-9.csv
+++ b/lgsm/data/almalinux-9.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python3,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +28,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,java-17-openjdk
+mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -82,20 +81,22 @@ onset,mariadb-connector-c
opfor
pc
pc2
-pmc,java-17-openjdk
+pmc,java-21-openjdk
ps,GConf2
pvkii
pvr,libcxx
-pz,java-11-openjdk rng-tools
+pw
+pz,java-21-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
-rw,java-11-openjdk
+rw,java-21-openjdk
samp
sb
sbots
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,13 +126,13 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
-vpmc,java-17-openjdk
+vpmc,java-21-openjdk
vs
wet
wf
-wmc,java-17-openjdk
+wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/centos-7.csv b/lgsm/data/centos-7.csv
index 4c256491d..a536c9c0f 100644
--- a/lgsm/data/centos-7.csv
+++ b/lgsm/data/centos-7.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python3,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +28,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,java-11-openjdk
+mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-libs,libxml2
nd
nec
@@ -86,9 +85,11 @@ pmc,java-11-openjdk
ps,GConf2
pvkii
pvr,libcxx
+pw
pz,java-11-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-11-openjdk
vs
diff --git a/lgsm/data/centos-8.csv b/lgsm/data/centos-8.csv
index ac4b7c36f..d4d008fd4 100644
--- a/lgsm/data/centos-8.csv
+++ b/lgsm/data/centos-8.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python36,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +28,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,java-17-openjdk
+mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -86,9 +85,11 @@ pmc,java-17-openjdk
ps,GConf2
pvkii
pvr,libcxx
+pw
pz,java-11-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
diff --git a/lgsm/data/centos-9.csv b/lgsm/data/centos-9.csv
index 124322b62..574401733 100644
--- a/lgsm/data/centos-9.csv
+++ b/lgsm/data/centos-9.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python3,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +28,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
mc,java-17-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -86,16 +85,18 @@ pmc,java-17-openjdk
ps,GConf2
pvkii
pvr,libcxx
-pz,java-11-openjdk rng-tools
+pw
+pz,java-21-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
-rw,java-11-openjdk
+rw,java-21-openjdk
samp
sb
sbots
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
diff --git a/lgsm/data/debian-10.csv b/lgsm/data/debian-10.csv
index 4b1c94518..6b1a843bb 100644
--- a/lgsm/data/debian-10.csv
+++ b/lgsm/data/debian-10.csv
@@ -1,8 +1,7 @@
-all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
-steamcmd,lib32gcc1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
ahl2
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
ark
arma3
armar,libcurl4
@@ -19,7 +18,6 @@ bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
-cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
@@ -29,6 +27,7 @@ coduo,libstdc++5:i386
codwaw
col
cs
+cs2
cscz
csgo
css,libtinfo5:i386
@@ -54,6 +53,7 @@ hl2dm
hldm
hldms
hw,lib32z1
+hz
ins
inss
ios
@@ -64,12 +64,10 @@ kf
kf2
l4d
l4d2
-lo
mc,openjdk-11-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -86,9 +84,11 @@ pmc,openjdk-11-jre
ps,libgconf-2-4
pvkii
pvr,libc++1
+pw
pz,openjdk-11-jre,rng-tools
q2
q3
+q4
ql
qw
ricochet
@@ -104,13 +104,16 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
st,libxml2-utils
+steamcmd,lib32gcc1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
+tf
tf2,libcurl4-gnutls-dev:i386
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-11-jre
vs
diff --git a/lgsm/data/debian-11.csv b/lgsm/data/debian-11.csv
index 9ab997eaa..60a46f55d 100644
--- a/lgsm/data/debian-11.csv
+++ b/lgsm/data/debian-11.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
-cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
@@ -29,6 +28,7 @@ coduo,libstdc++5:i386
codwaw
col
cs
+cs2
cscz
csgo
css,libtinfo5:i386
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,lib32z1
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
mc,openjdk-17-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -86,9 +85,11 @@ pmc,openjdk-17-jre
ps,libgconf-2-4
pvkii
pvr,libc++1
+pw
pz,openjdk-17-jre,rng-tools
q2
q3
+q4
ql
qw
ricochet
@@ -104,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2-utils
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
+tf
tf2,libcurl4-gnutls-dev:i386
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-11-jre
vs
diff --git a/lgsm/data/debian-12.csv b/lgsm/data/debian-12.csv
index 3a5c24fbf..0fd50f2d7 100644
--- a/lgsm/data/debian-12.csv
+++ b/lgsm/data/debian-12.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat-traditional,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat-openbsd,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
-cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
@@ -29,6 +28,7 @@ coduo,libstdc++5:i386
codwaw
col
cs
+cs2
cscz
csgo
css,libtinfo5:i386
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,lib32z1
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
mc,openjdk-17-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -86,9 +85,11 @@ pmc,openjdk-17-jre
ps,libgconf-2-4
pvkii
pvr,libc++1
+pw
pz,openjdk-17-jre,rng-tools5
q2
q3
+q4
ql
qw
ricochet
@@ -104,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2-utils
stn
sven,libssl3:i386,zlib1g:i386
terraria
+tf
tf2,libcurl4-gnutls-dev:i386
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-17-jre
vs
diff --git a/lgsm/data/debian-13.csv b/lgsm/data/debian-13.csv
new file mode 100644
index 000000000..6d16deb9f
--- /dev/null
+++ b/lgsm/data/debian-13.csv
@@ -0,0 +1,137 @@
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat-openbsd,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
+ac
+ahl
+ahl2
+ark
+arma3
+armar,libcurl4
+ats
+av
+bb
+bb2,libcurl4-gnutls-dev:i386
+bd
+bf1942,libncurses5:i386,libtinfo5:i386
+bfv,libncurses5:i386,libstdc++5:i386
+bmdm,libncurses5:i386
+bo
+bs
+bt,libicu-dev,dos2unix,libxml2-utils
+btl
+cc
+ck,xvfb,libxi6
+cmw
+cod,libstdc++5:i386
+cod2,libstdc++5:i386
+cod4
+coduo,libstdc++5:i386
+codwaw
+col
+cs
+cs2
+cscz
+csgo
+css,libtinfo5:i386
+ct
+dab
+dayz
+dmc
+dod
+dodr
+dods
+doi
+dst,libcurl4-gnutls-dev:i386
+dys
+eco,libgdiplus
+em
+etl
+ets2
+fctr
+fof
+gmod,libtinfo5:i386
+hcu
+hl2dm
+hldm
+hldms
+hw,lib32z1
+hz
+ins
+inss
+ios
+jc2
+jc3
+jk2
+kf
+kf2
+l4d
+l4d2
+mc,openjdk-22-jre
+mcb
+mh
+mohaa,libstdc++5:i386
+mta,libncursesw5,libxml2-utils
+nd
+nec
+nmrih,libtinfo5:i386
+ns
+ns2,speex,libtbb12
+ns2c,speex:i386,libtbb12
+ohd
+onset,libmariadb-dev
+opfor
+pc
+pc2
+pmc,openjdk-22-jre
+ps,libgconf-2-4
+pvkii
+pvr,libc++1
+pw
+pz,openjdk-22-jre,rng-tools5
+q2
+q3
+q4
+ql
+qw
+ricochet
+ro
+rtcw
+rust,lib32z1
+rw,openjdk-22-jre
+samp
+sb
+sbots
+scpsl,mono-complete
+scpslsm,mono-complete
+sdtd,telnet,expect,libxml2-utils
+sf
+sfc,libtinfo5:i386
+sof2
+sol
+squad
+st,libxml2-utils
+stn
+sven,libssl3:i386,zlib1g:i386
+terraria
+tf
+tf2,libcurl4-gnutls-dev:i386
+tfc
+ti
+ts
+ts3
+tu
+tw
+unt
+ut
+ut2k4
+ut3
+ut99
+vh,libc6-dev,libatomic1,libpulse-dev
+vints,aspnetcore-runtime-7.0
+vpmc,openjdk-21-jre
+vs
+wet
+wf
+wmc,openjdk21-jre
+wurm,xvfb
+zmr,libtinfo5:i386
+zps,libtinfo5:i386
diff --git a/lgsm/data/debian-9.csv b/lgsm/data/debian-9.csv
index e3143955f..174bd8e16 100644
--- a/lgsm/data/debian-9.csv
+++ b/lgsm/data/debian-9.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,pigz,python3,tar,tmux,unzip,util-linux,wget,xz-utils
steamcmd,lib32gcc1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
-cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
@@ -29,6 +28,7 @@ coduo,libstdc++5:i386
codwaw
col
cs
+cs2
cscz
csgo
css,libtinfo5:i386
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,lib32z1
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
mc,openjdk-8-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -86,9 +85,11 @@ pmc,openjdk-8-jre
ps,libgconf-2-4
pvkii
pvr,libc++1
+pw
pz,openjdk-8-jre,rng-tools
q2
q3
+q4
ql
qw
ricochet
@@ -104,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2-utils
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
+tf
tf2,libcurl4-gnutls-dev:i386
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-8-jre
vs
diff --git a/lgsm/data/gameicons/ac-icon.png b/lgsm/data/gameicons/ac-icon.png
new file mode 100644
index 000000000..fcf39841e
Binary files /dev/null and b/lgsm/data/gameicons/ac-icon.png differ
diff --git a/lgsm/data/gameicons/ahl-icon.png b/lgsm/data/gameicons/ahl-icon.png
new file mode 100644
index 000000000..f4e5cb535
Binary files /dev/null and b/lgsm/data/gameicons/ahl-icon.png differ
diff --git a/lgsm/data/gameicons/ahl2-icon.png b/lgsm/data/gameicons/ahl2-icon.png
new file mode 100644
index 000000000..04d35d040
Binary files /dev/null and b/lgsm/data/gameicons/ahl2-icon.png differ
diff --git a/lgsm/data/gameicons/ark-icon.png b/lgsm/data/gameicons/ark-icon.png
new file mode 100644
index 000000000..096e7cfbf
Binary files /dev/null and b/lgsm/data/gameicons/ark-icon.png differ
diff --git a/lgsm/data/gameicons/arma3-icon.png b/lgsm/data/gameicons/arma3-icon.png
new file mode 100644
index 000000000..0bb0bc64c
Binary files /dev/null and b/lgsm/data/gameicons/arma3-icon.png differ
diff --git a/lgsm/data/gameicons/armar-icon.png b/lgsm/data/gameicons/armar-icon.png
new file mode 100644
index 000000000..ea79ba088
Binary files /dev/null and b/lgsm/data/gameicons/armar-icon.png differ
diff --git a/lgsm/data/gameicons/ats-icon.png b/lgsm/data/gameicons/ats-icon.png
new file mode 100644
index 000000000..6495b1073
Binary files /dev/null and b/lgsm/data/gameicons/ats-icon.png differ
diff --git a/lgsm/data/gameicons/av-icon.png b/lgsm/data/gameicons/av-icon.png
new file mode 100644
index 000000000..4bce455ad
Binary files /dev/null and b/lgsm/data/gameicons/av-icon.png differ
diff --git a/lgsm/data/gameicons/bb-icon.png b/lgsm/data/gameicons/bb-icon.png
new file mode 100644
index 000000000..2c6b7ec88
Binary files /dev/null and b/lgsm/data/gameicons/bb-icon.png differ
diff --git a/lgsm/data/gameicons/bb2-icon.png b/lgsm/data/gameicons/bb2-icon.png
new file mode 100644
index 000000000..56716418c
Binary files /dev/null and b/lgsm/data/gameicons/bb2-icon.png differ
diff --git a/lgsm/data/gameicons/bd-icon.png b/lgsm/data/gameicons/bd-icon.png
new file mode 100644
index 000000000..93ba9db92
Binary files /dev/null and b/lgsm/data/gameicons/bd-icon.png differ
diff --git a/lgsm/data/gameicons/bf1942-icon.png b/lgsm/data/gameicons/bf1942-icon.png
new file mode 100644
index 000000000..653ce6a8f
Binary files /dev/null and b/lgsm/data/gameicons/bf1942-icon.png differ
diff --git a/lgsm/data/gameicons/bfv-icon.png b/lgsm/data/gameicons/bfv-icon.png
new file mode 100644
index 000000000..70cae02ee
Binary files /dev/null and b/lgsm/data/gameicons/bfv-icon.png differ
diff --git a/lgsm/data/gameicons/bmdm-icon.png b/lgsm/data/gameicons/bmdm-icon.png
new file mode 100644
index 000000000..4ff37301e
Binary files /dev/null and b/lgsm/data/gameicons/bmdm-icon.png differ
diff --git a/lgsm/data/gameicons/bo-icon.png b/lgsm/data/gameicons/bo-icon.png
new file mode 100644
index 000000000..53f5577d8
Binary files /dev/null and b/lgsm/data/gameicons/bo-icon.png differ
diff --git a/lgsm/data/gameicons/bs-icon.png b/lgsm/data/gameicons/bs-icon.png
new file mode 100644
index 000000000..712f8d430
Binary files /dev/null and b/lgsm/data/gameicons/bs-icon.png differ
diff --git a/lgsm/data/gameicons/bt-icon.png b/lgsm/data/gameicons/bt-icon.png
new file mode 100644
index 000000000..d262bf39f
Binary files /dev/null and b/lgsm/data/gameicons/bt-icon.png differ
diff --git a/lgsm/data/gameicons/btl-icon.png b/lgsm/data/gameicons/btl-icon.png
new file mode 100644
index 000000000..615ba7cb9
Binary files /dev/null and b/lgsm/data/gameicons/btl-icon.png differ
diff --git a/lgsm/data/gameicons/cc-icon.png b/lgsm/data/gameicons/cc-icon.png
new file mode 100644
index 000000000..6249a0f89
Binary files /dev/null and b/lgsm/data/gameicons/cc-icon.png differ
diff --git a/lgsm/data/gameicons/ck-icon.png b/lgsm/data/gameicons/ck-icon.png
new file mode 100644
index 000000000..a22d81480
Binary files /dev/null and b/lgsm/data/gameicons/ck-icon.png differ
diff --git a/lgsm/data/gameicons/cmw-icon.png b/lgsm/data/gameicons/cmw-icon.png
new file mode 100644
index 000000000..627490866
Binary files /dev/null and b/lgsm/data/gameicons/cmw-icon.png differ
diff --git a/lgsm/data/gameicons/cod-icon.png b/lgsm/data/gameicons/cod-icon.png
new file mode 100644
index 000000000..7af55bf2c
Binary files /dev/null and b/lgsm/data/gameicons/cod-icon.png differ
diff --git a/lgsm/data/gameicons/cod2-icon.png b/lgsm/data/gameicons/cod2-icon.png
new file mode 100644
index 000000000..dfd6ee7de
Binary files /dev/null and b/lgsm/data/gameicons/cod2-icon.png differ
diff --git a/lgsm/data/gameicons/cod4-icon.png b/lgsm/data/gameicons/cod4-icon.png
new file mode 100644
index 000000000..25808b182
Binary files /dev/null and b/lgsm/data/gameicons/cod4-icon.png differ
diff --git a/lgsm/data/gameicons/coduo-icon.png b/lgsm/data/gameicons/coduo-icon.png
new file mode 100644
index 000000000..c8151fee2
Binary files /dev/null and b/lgsm/data/gameicons/coduo-icon.png differ
diff --git a/lgsm/data/gameicons/codwaw-icon.png b/lgsm/data/gameicons/codwaw-icon.png
new file mode 100644
index 000000000..10f06601d
Binary files /dev/null and b/lgsm/data/gameicons/codwaw-icon.png differ
diff --git a/lgsm/data/gameicons/col-icon.png b/lgsm/data/gameicons/col-icon.png
new file mode 100644
index 000000000..fbd91f9ef
Binary files /dev/null and b/lgsm/data/gameicons/col-icon.png differ
diff --git a/lgsm/data/gameicons/cs-icon.png b/lgsm/data/gameicons/cs-icon.png
new file mode 100644
index 000000000..5e61337e0
Binary files /dev/null and b/lgsm/data/gameicons/cs-icon.png differ
diff --git a/lgsm/data/gameicons/cs2-icon.png b/lgsm/data/gameicons/cs2-icon.png
new file mode 100644
index 000000000..3cda210bb
Binary files /dev/null and b/lgsm/data/gameicons/cs2-icon.png differ
diff --git a/lgsm/data/gameicons/cscz-icon.png b/lgsm/data/gameicons/cscz-icon.png
new file mode 100644
index 000000000..490174b30
Binary files /dev/null and b/lgsm/data/gameicons/cscz-icon.png differ
diff --git a/lgsm/data/gameicons/csgo-icon.png b/lgsm/data/gameicons/csgo-icon.png
new file mode 100644
index 000000000..b9ed6ca4d
Binary files /dev/null and b/lgsm/data/gameicons/csgo-icon.png differ
diff --git a/lgsm/data/gameicons/css-icon.png b/lgsm/data/gameicons/css-icon.png
new file mode 100644
index 000000000..e0f099f8a
Binary files /dev/null and b/lgsm/data/gameicons/css-icon.png differ
diff --git a/lgsm/data/gameicons/ct-icon.png b/lgsm/data/gameicons/ct-icon.png
new file mode 100644
index 000000000..5fb048b56
Binary files /dev/null and b/lgsm/data/gameicons/ct-icon.png differ
diff --git a/lgsm/data/gameicons/dab-icon.png b/lgsm/data/gameicons/dab-icon.png
new file mode 100644
index 000000000..fac2aaf24
Binary files /dev/null and b/lgsm/data/gameicons/dab-icon.png differ
diff --git a/lgsm/data/gameicons/dayz-icon.png b/lgsm/data/gameicons/dayz-icon.png
new file mode 100644
index 000000000..de66c6112
Binary files /dev/null and b/lgsm/data/gameicons/dayz-icon.png differ
diff --git a/lgsm/data/gameicons/dmc-icon.png b/lgsm/data/gameicons/dmc-icon.png
new file mode 100644
index 000000000..0d3dad709
Binary files /dev/null and b/lgsm/data/gameicons/dmc-icon.png differ
diff --git a/lgsm/data/gameicons/dod-icon.png b/lgsm/data/gameicons/dod-icon.png
new file mode 100644
index 000000000..49e963392
Binary files /dev/null and b/lgsm/data/gameicons/dod-icon.png differ
diff --git a/lgsm/data/gameicons/dodr-icon.png b/lgsm/data/gameicons/dodr-icon.png
new file mode 100644
index 000000000..db4313719
Binary files /dev/null and b/lgsm/data/gameicons/dodr-icon.png differ
diff --git a/lgsm/data/gameicons/dods-icon.png b/lgsm/data/gameicons/dods-icon.png
new file mode 100644
index 000000000..455a25b8c
Binary files /dev/null and b/lgsm/data/gameicons/dods-icon.png differ
diff --git a/lgsm/data/gameicons/doi-icon.png b/lgsm/data/gameicons/doi-icon.png
new file mode 100644
index 000000000..bd1329216
Binary files /dev/null and b/lgsm/data/gameicons/doi-icon.png differ
diff --git a/lgsm/data/gameicons/dst-icon.png b/lgsm/data/gameicons/dst-icon.png
new file mode 100644
index 000000000..25b41366c
Binary files /dev/null and b/lgsm/data/gameicons/dst-icon.png differ
diff --git a/lgsm/data/gameicons/dys-icon.png b/lgsm/data/gameicons/dys-icon.png
new file mode 100644
index 000000000..bab210283
Binary files /dev/null and b/lgsm/data/gameicons/dys-icon.png differ
diff --git a/lgsm/data/gameicons/eco-icon.png b/lgsm/data/gameicons/eco-icon.png
new file mode 100644
index 000000000..c3f995e69
Binary files /dev/null and b/lgsm/data/gameicons/eco-icon.png differ
diff --git a/lgsm/data/gameicons/em-icon.png b/lgsm/data/gameicons/em-icon.png
new file mode 100644
index 000000000..2c98840b2
Binary files /dev/null and b/lgsm/data/gameicons/em-icon.png differ
diff --git a/lgsm/data/gameicons/etl-icon.png b/lgsm/data/gameicons/etl-icon.png
new file mode 100644
index 000000000..d81c43fb5
Binary files /dev/null and b/lgsm/data/gameicons/etl-icon.png differ
diff --git a/lgsm/data/gameicons/ets2-icon.png b/lgsm/data/gameicons/ets2-icon.png
new file mode 100644
index 000000000..11779d255
Binary files /dev/null and b/lgsm/data/gameicons/ets2-icon.png differ
diff --git a/lgsm/data/gameicons/fctr-icon.png b/lgsm/data/gameicons/fctr-icon.png
new file mode 100644
index 000000000..421235343
Binary files /dev/null and b/lgsm/data/gameicons/fctr-icon.png differ
diff --git a/lgsm/data/gameicons/fof-icon.png b/lgsm/data/gameicons/fof-icon.png
new file mode 100644
index 000000000..c9e17c4ff
Binary files /dev/null and b/lgsm/data/gameicons/fof-icon.png differ
diff --git a/lgsm/data/gameicons/gmod-icon.png b/lgsm/data/gameicons/gmod-icon.png
new file mode 100644
index 000000000..00ba856c8
Binary files /dev/null and b/lgsm/data/gameicons/gmod-icon.png differ
diff --git a/lgsm/data/gameicons/hcu-icon.png b/lgsm/data/gameicons/hcu-icon.png
new file mode 100644
index 000000000..f265a5853
Binary files /dev/null and b/lgsm/data/gameicons/hcu-icon.png differ
diff --git a/lgsm/data/gameicons/hl2dm-icon.png b/lgsm/data/gameicons/hl2dm-icon.png
new file mode 100644
index 000000000..5bf5720ac
Binary files /dev/null and b/lgsm/data/gameicons/hl2dm-icon.png differ
diff --git a/lgsm/data/gameicons/hldm-icon.png b/lgsm/data/gameicons/hldm-icon.png
new file mode 100644
index 000000000..2a9779640
Binary files /dev/null and b/lgsm/data/gameicons/hldm-icon.png differ
diff --git a/lgsm/data/gameicons/hldms-icon.png b/lgsm/data/gameicons/hldms-icon.png
new file mode 100644
index 000000000..37e2a20b8
Binary files /dev/null and b/lgsm/data/gameicons/hldms-icon.png differ
diff --git a/lgsm/data/gameicons/hw-icon.png b/lgsm/data/gameicons/hw-icon.png
new file mode 100644
index 000000000..0894332e3
Binary files /dev/null and b/lgsm/data/gameicons/hw-icon.png differ
diff --git a/lgsm/data/gameicons/hz-icon.png b/lgsm/data/gameicons/hz-icon.png
new file mode 100644
index 000000000..7d2428669
Binary files /dev/null and b/lgsm/data/gameicons/hz-icon.png differ
diff --git a/lgsm/data/gameicons/ins-icon.png b/lgsm/data/gameicons/ins-icon.png
new file mode 100644
index 000000000..30cfaaf35
Binary files /dev/null and b/lgsm/data/gameicons/ins-icon.png differ
diff --git a/lgsm/data/gameicons/inss-icon.png b/lgsm/data/gameicons/inss-icon.png
new file mode 100644
index 000000000..0109dd07c
Binary files /dev/null and b/lgsm/data/gameicons/inss-icon.png differ
diff --git a/lgsm/data/gameicons/ios-icon.png b/lgsm/data/gameicons/ios-icon.png
new file mode 100644
index 000000000..d53577676
Binary files /dev/null and b/lgsm/data/gameicons/ios-icon.png differ
diff --git a/lgsm/data/gameicons/jc2-icon.png b/lgsm/data/gameicons/jc2-icon.png
new file mode 100644
index 000000000..782edabc3
Binary files /dev/null and b/lgsm/data/gameicons/jc2-icon.png differ
diff --git a/lgsm/data/gameicons/jc3-icon.png b/lgsm/data/gameicons/jc3-icon.png
new file mode 100644
index 000000000..3c1cfff29
Binary files /dev/null and b/lgsm/data/gameicons/jc3-icon.png differ
diff --git a/lgsm/data/gameicons/jk2-icon.png b/lgsm/data/gameicons/jk2-icon.png
new file mode 100644
index 000000000..8c480a205
Binary files /dev/null and b/lgsm/data/gameicons/jk2-icon.png differ
diff --git a/lgsm/data/gameicons/kf-icon.png b/lgsm/data/gameicons/kf-icon.png
new file mode 100644
index 000000000..516bf8d6f
Binary files /dev/null and b/lgsm/data/gameicons/kf-icon.png differ
diff --git a/lgsm/data/gameicons/kf2-icon.png b/lgsm/data/gameicons/kf2-icon.png
new file mode 100644
index 000000000..5e3a57c6e
Binary files /dev/null and b/lgsm/data/gameicons/kf2-icon.png differ
diff --git a/lgsm/data/gameicons/l4d-icon.png b/lgsm/data/gameicons/l4d-icon.png
new file mode 100644
index 000000000..319f644f8
Binary files /dev/null and b/lgsm/data/gameicons/l4d-icon.png differ
diff --git a/lgsm/data/gameicons/l4d2-icon.png b/lgsm/data/gameicons/l4d2-icon.png
new file mode 100644
index 000000000..9a9a3d68b
Binary files /dev/null and b/lgsm/data/gameicons/l4d2-icon.png differ
diff --git a/lgsm/data/gameicons/mc-icon.png b/lgsm/data/gameicons/mc-icon.png
new file mode 100644
index 000000000..ad6904d9c
Binary files /dev/null and b/lgsm/data/gameicons/mc-icon.png differ
diff --git a/lgsm/data/gameicons/mcb-icon.png b/lgsm/data/gameicons/mcb-icon.png
new file mode 100644
index 000000000..963422030
Binary files /dev/null and b/lgsm/data/gameicons/mcb-icon.png differ
diff --git a/lgsm/data/gameicons/mh-icon.png b/lgsm/data/gameicons/mh-icon.png
new file mode 100644
index 000000000..1f1621f15
Binary files /dev/null and b/lgsm/data/gameicons/mh-icon.png differ
diff --git a/lgsm/data/gameicons/mohaa-icon.png b/lgsm/data/gameicons/mohaa-icon.png
new file mode 100644
index 000000000..0acd3dcf3
Binary files /dev/null and b/lgsm/data/gameicons/mohaa-icon.png differ
diff --git a/lgsm/data/gameicons/mom-icon.png b/lgsm/data/gameicons/mom-icon.png
new file mode 100644
index 000000000..317b6010a
Binary files /dev/null and b/lgsm/data/gameicons/mom-icon.png differ
diff --git a/lgsm/data/gameicons/mta-icon.png b/lgsm/data/gameicons/mta-icon.png
new file mode 100644
index 000000000..25f89c9d8
Binary files /dev/null and b/lgsm/data/gameicons/mta-icon.png differ
diff --git a/lgsm/data/gameicons/nd-icon.png b/lgsm/data/gameicons/nd-icon.png
new file mode 100644
index 000000000..dbc6a6891
Binary files /dev/null and b/lgsm/data/gameicons/nd-icon.png differ
diff --git a/lgsm/data/gameicons/nec-icon.png b/lgsm/data/gameicons/nec-icon.png
new file mode 100644
index 000000000..27ba109ea
Binary files /dev/null and b/lgsm/data/gameicons/nec-icon.png differ
diff --git a/lgsm/data/gameicons/nmrih-icon.png b/lgsm/data/gameicons/nmrih-icon.png
new file mode 100644
index 000000000..02631268f
Binary files /dev/null and b/lgsm/data/gameicons/nmrih-icon.png differ
diff --git a/lgsm/data/gameicons/ns-icon.png b/lgsm/data/gameicons/ns-icon.png
new file mode 100644
index 000000000..bb59c4a0e
Binary files /dev/null and b/lgsm/data/gameicons/ns-icon.png differ
diff --git a/lgsm/data/gameicons/ns2-icon.png b/lgsm/data/gameicons/ns2-icon.png
new file mode 100644
index 000000000..4894b0fa4
Binary files /dev/null and b/lgsm/data/gameicons/ns2-icon.png differ
diff --git a/lgsm/data/gameicons/ns2c-icon.png b/lgsm/data/gameicons/ns2c-icon.png
new file mode 100644
index 000000000..c519b771d
Binary files /dev/null and b/lgsm/data/gameicons/ns2c-icon.png differ
diff --git a/lgsm/data/gameicons/ohd-icon.png b/lgsm/data/gameicons/ohd-icon.png
new file mode 100644
index 000000000..85ccded14
Binary files /dev/null and b/lgsm/data/gameicons/ohd-icon.png differ
diff --git a/lgsm/data/gameicons/onset-icon.png b/lgsm/data/gameicons/onset-icon.png
new file mode 100644
index 000000000..598455658
Binary files /dev/null and b/lgsm/data/gameicons/onset-icon.png differ
diff --git a/lgsm/data/gameicons/opfor-icon.png b/lgsm/data/gameicons/opfor-icon.png
new file mode 100644
index 000000000..3ff940ea1
Binary files /dev/null and b/lgsm/data/gameicons/opfor-icon.png differ
diff --git a/lgsm/data/gameicons/pc-icon.png b/lgsm/data/gameicons/pc-icon.png
new file mode 100644
index 000000000..f115231dd
Binary files /dev/null and b/lgsm/data/gameicons/pc-icon.png differ
diff --git a/lgsm/data/gameicons/pc2-icon.png b/lgsm/data/gameicons/pc2-icon.png
new file mode 100644
index 000000000..8a20b75c8
Binary files /dev/null and b/lgsm/data/gameicons/pc2-icon.png differ
diff --git a/lgsm/data/gameicons/pmc-icon.png b/lgsm/data/gameicons/pmc-icon.png
new file mode 100644
index 000000000..c58cb7aed
Binary files /dev/null and b/lgsm/data/gameicons/pmc-icon.png differ
diff --git a/lgsm/data/gameicons/ps-icon.png b/lgsm/data/gameicons/ps-icon.png
new file mode 100644
index 000000000..afe81e823
Binary files /dev/null and b/lgsm/data/gameicons/ps-icon.png differ
diff --git a/lgsm/data/gameicons/pvkii-icon.png b/lgsm/data/gameicons/pvkii-icon.png
new file mode 100644
index 000000000..bf518f6c8
Binary files /dev/null and b/lgsm/data/gameicons/pvkii-icon.png differ
diff --git a/lgsm/data/gameicons/pvr-icon.png b/lgsm/data/gameicons/pvr-icon.png
new file mode 100644
index 000000000..f471bd5d0
Binary files /dev/null and b/lgsm/data/gameicons/pvr-icon.png differ
diff --git a/lgsm/data/gameicons/pw-icon.png b/lgsm/data/gameicons/pw-icon.png
new file mode 100644
index 000000000..1772c3bd9
Binary files /dev/null and b/lgsm/data/gameicons/pw-icon.png differ
diff --git a/lgsm/data/gameicons/pz-icon.png b/lgsm/data/gameicons/pz-icon.png
new file mode 100644
index 000000000..63218d100
Binary files /dev/null and b/lgsm/data/gameicons/pz-icon.png differ
diff --git a/lgsm/data/gameicons/q2-icon.png b/lgsm/data/gameicons/q2-icon.png
new file mode 100644
index 000000000..e57d4917d
Binary files /dev/null and b/lgsm/data/gameicons/q2-icon.png differ
diff --git a/lgsm/data/gameicons/q3-icon.png b/lgsm/data/gameicons/q3-icon.png
new file mode 100644
index 000000000..7d111da1e
Binary files /dev/null and b/lgsm/data/gameicons/q3-icon.png differ
diff --git a/lgsm/data/gameicons/q4-icon.png b/lgsm/data/gameicons/q4-icon.png
new file mode 100644
index 000000000..dd4c2d7fa
Binary files /dev/null and b/lgsm/data/gameicons/q4-icon.png differ
diff --git a/lgsm/data/gameicons/ql-icon.png b/lgsm/data/gameicons/ql-icon.png
new file mode 100644
index 000000000..5b0e5ceff
Binary files /dev/null and b/lgsm/data/gameicons/ql-icon.png differ
diff --git a/lgsm/data/gameicons/qw-icon.png b/lgsm/data/gameicons/qw-icon.png
new file mode 100644
index 000000000..c5a65f4ca
Binary files /dev/null and b/lgsm/data/gameicons/qw-icon.png differ
diff --git a/lgsm/data/gameicons/ricochet-icon.png b/lgsm/data/gameicons/ricochet-icon.png
new file mode 100644
index 000000000..da9b2a309
Binary files /dev/null and b/lgsm/data/gameicons/ricochet-icon.png differ
diff --git a/lgsm/data/gameicons/ro-icon.png b/lgsm/data/gameicons/ro-icon.png
new file mode 100644
index 000000000..027c0f662
Binary files /dev/null and b/lgsm/data/gameicons/ro-icon.png differ
diff --git a/lgsm/data/gameicons/rtcw-icon.png b/lgsm/data/gameicons/rtcw-icon.png
new file mode 100644
index 000000000..d0fb797a7
Binary files /dev/null and b/lgsm/data/gameicons/rtcw-icon.png differ
diff --git a/lgsm/data/gameicons/rust-icon.png b/lgsm/data/gameicons/rust-icon.png
new file mode 100644
index 000000000..484777503
Binary files /dev/null and b/lgsm/data/gameicons/rust-icon.png differ
diff --git a/lgsm/data/gameicons/rw-icon.png b/lgsm/data/gameicons/rw-icon.png
new file mode 100644
index 000000000..58d4a949b
Binary files /dev/null and b/lgsm/data/gameicons/rw-icon.png differ
diff --git a/lgsm/data/gameicons/samp-icon.png b/lgsm/data/gameicons/samp-icon.png
new file mode 100644
index 000000000..d20d3faf7
Binary files /dev/null and b/lgsm/data/gameicons/samp-icon.png differ
diff --git a/lgsm/data/gameicons/sb-icon.png b/lgsm/data/gameicons/sb-icon.png
new file mode 100644
index 000000000..3baf0a116
Binary files /dev/null and b/lgsm/data/gameicons/sb-icon.png differ
diff --git a/lgsm/data/gameicons/sbots-icon.png b/lgsm/data/gameicons/sbots-icon.png
new file mode 100644
index 000000000..c897b3cce
Binary files /dev/null and b/lgsm/data/gameicons/sbots-icon.png differ
diff --git a/lgsm/data/gameicons/scpsl-icon.png b/lgsm/data/gameicons/scpsl-icon.png
new file mode 100644
index 000000000..2872a7841
Binary files /dev/null and b/lgsm/data/gameicons/scpsl-icon.png differ
diff --git a/lgsm/data/gameicons/scpslsm-icon.png b/lgsm/data/gameicons/scpslsm-icon.png
new file mode 100644
index 000000000..2872a7841
Binary files /dev/null and b/lgsm/data/gameicons/scpslsm-icon.png differ
diff --git a/lgsm/data/gameicons/sdtd-icon.png b/lgsm/data/gameicons/sdtd-icon.png
new file mode 100644
index 000000000..04c8f87f8
Binary files /dev/null and b/lgsm/data/gameicons/sdtd-icon.png differ
diff --git a/lgsm/data/gameicons/sf-icon.png b/lgsm/data/gameicons/sf-icon.png
new file mode 100644
index 000000000..8685b4ad5
Binary files /dev/null and b/lgsm/data/gameicons/sf-icon.png differ
diff --git a/lgsm/data/gameicons/sfc-icon.png b/lgsm/data/gameicons/sfc-icon.png
new file mode 100644
index 000000000..5f866bd77
Binary files /dev/null and b/lgsm/data/gameicons/sfc-icon.png differ
diff --git a/lgsm/data/gameicons/sof2-icon.png b/lgsm/data/gameicons/sof2-icon.png
new file mode 100644
index 000000000..7da4f30c1
Binary files /dev/null and b/lgsm/data/gameicons/sof2-icon.png differ
diff --git a/lgsm/data/gameicons/sol-icon.png b/lgsm/data/gameicons/sol-icon.png
new file mode 100644
index 000000000..e2589b0ed
Binary files /dev/null and b/lgsm/data/gameicons/sol-icon.png differ
diff --git a/lgsm/data/gameicons/squad-icon.png b/lgsm/data/gameicons/squad-icon.png
new file mode 100644
index 000000000..adc1464f8
Binary files /dev/null and b/lgsm/data/gameicons/squad-icon.png differ
diff --git a/lgsm/data/gameicons/st-icon.png b/lgsm/data/gameicons/st-icon.png
new file mode 100644
index 000000000..67ca7ade6
Binary files /dev/null and b/lgsm/data/gameicons/st-icon.png differ
diff --git a/lgsm/data/gameicons/stn-icon.png b/lgsm/data/gameicons/stn-icon.png
new file mode 100644
index 000000000..8bb7b1e3a
Binary files /dev/null and b/lgsm/data/gameicons/stn-icon.png differ
diff --git a/lgsm/data/gameicons/sven-icon.png b/lgsm/data/gameicons/sven-icon.png
new file mode 100644
index 000000000..a46d41261
Binary files /dev/null and b/lgsm/data/gameicons/sven-icon.png differ
diff --git a/lgsm/data/gameicons/terraria-icon.png b/lgsm/data/gameicons/terraria-icon.png
new file mode 100644
index 000000000..8f0a253e7
Binary files /dev/null and b/lgsm/data/gameicons/terraria-icon.png differ
diff --git a/lgsm/data/gameicons/tf-icon.png b/lgsm/data/gameicons/tf-icon.png
new file mode 100644
index 000000000..ace42ff5b
Binary files /dev/null and b/lgsm/data/gameicons/tf-icon.png differ
diff --git a/lgsm/data/gameicons/tf2-icon.png b/lgsm/data/gameicons/tf2-icon.png
new file mode 100644
index 000000000..3f5474ba9
Binary files /dev/null and b/lgsm/data/gameicons/tf2-icon.png differ
diff --git a/lgsm/data/gameicons/tfc-icon.png b/lgsm/data/gameicons/tfc-icon.png
new file mode 100644
index 000000000..f04580e2c
Binary files /dev/null and b/lgsm/data/gameicons/tfc-icon.png differ
diff --git a/lgsm/data/gameicons/ti-icon.png b/lgsm/data/gameicons/ti-icon.png
new file mode 100644
index 000000000..0c6e126dd
Binary files /dev/null and b/lgsm/data/gameicons/ti-icon.png differ
diff --git a/lgsm/data/gameicons/ts-icon.png b/lgsm/data/gameicons/ts-icon.png
new file mode 100644
index 000000000..271c5bc70
Binary files /dev/null and b/lgsm/data/gameicons/ts-icon.png differ
diff --git a/lgsm/data/gameicons/ts3-icon.png b/lgsm/data/gameicons/ts3-icon.png
new file mode 100644
index 000000000..1a71ba0ca
Binary files /dev/null and b/lgsm/data/gameicons/ts3-icon.png differ
diff --git a/lgsm/data/gameicons/tu-icon.png b/lgsm/data/gameicons/tu-icon.png
new file mode 100644
index 000000000..80ea98bab
Binary files /dev/null and b/lgsm/data/gameicons/tu-icon.png differ
diff --git a/lgsm/data/gameicons/tw-icon.png b/lgsm/data/gameicons/tw-icon.png
new file mode 100644
index 000000000..cd8ccd809
Binary files /dev/null and b/lgsm/data/gameicons/tw-icon.png differ
diff --git a/lgsm/data/gameicons/unt-icon.png b/lgsm/data/gameicons/unt-icon.png
new file mode 100644
index 000000000..bd8d94915
Binary files /dev/null and b/lgsm/data/gameicons/unt-icon.png differ
diff --git a/lgsm/data/gameicons/ut-icon.png b/lgsm/data/gameicons/ut-icon.png
new file mode 100644
index 000000000..8c81e418a
Binary files /dev/null and b/lgsm/data/gameicons/ut-icon.png differ
diff --git a/lgsm/data/gameicons/ut2k4-icon.png b/lgsm/data/gameicons/ut2k4-icon.png
new file mode 100644
index 000000000..3494d31fb
Binary files /dev/null and b/lgsm/data/gameicons/ut2k4-icon.png differ
diff --git a/lgsm/data/gameicons/ut3-icon.png b/lgsm/data/gameicons/ut3-icon.png
new file mode 100644
index 000000000..1713a3531
Binary files /dev/null and b/lgsm/data/gameicons/ut3-icon.png differ
diff --git a/lgsm/data/gameicons/ut99-icon.png b/lgsm/data/gameicons/ut99-icon.png
new file mode 100644
index 000000000..5ebe6c09c
Binary files /dev/null and b/lgsm/data/gameicons/ut99-icon.png differ
diff --git a/lgsm/data/gameicons/vh-icon.png b/lgsm/data/gameicons/vh-icon.png
new file mode 100644
index 000000000..e74f2604d
Binary files /dev/null and b/lgsm/data/gameicons/vh-icon.png differ
diff --git a/lgsm/data/gameicons/vints-icon.png b/lgsm/data/gameicons/vints-icon.png
new file mode 100644
index 000000000..f6e6748c0
Binary files /dev/null and b/lgsm/data/gameicons/vints-icon.png differ
diff --git a/lgsm/data/gameicons/vpmc-icon.png b/lgsm/data/gameicons/vpmc-icon.png
new file mode 100644
index 000000000..95d3e0f8a
Binary files /dev/null and b/lgsm/data/gameicons/vpmc-icon.png differ
diff --git a/lgsm/data/gameicons/vs-icon.png b/lgsm/data/gameicons/vs-icon.png
new file mode 100644
index 000000000..0817c14eb
Binary files /dev/null and b/lgsm/data/gameicons/vs-icon.png differ
diff --git a/lgsm/data/gameicons/wet-icon.png b/lgsm/data/gameicons/wet-icon.png
new file mode 100644
index 000000000..e24d585a9
Binary files /dev/null and b/lgsm/data/gameicons/wet-icon.png differ
diff --git a/lgsm/data/gameicons/wf-icon.png b/lgsm/data/gameicons/wf-icon.png
new file mode 100644
index 000000000..21b6a98cc
Binary files /dev/null and b/lgsm/data/gameicons/wf-icon.png differ
diff --git a/lgsm/data/gameicons/wmc-icon.png b/lgsm/data/gameicons/wmc-icon.png
new file mode 100644
index 000000000..ebdbae8d6
Binary files /dev/null and b/lgsm/data/gameicons/wmc-icon.png differ
diff --git a/lgsm/data/gameicons/wurm-icon.png b/lgsm/data/gameicons/wurm-icon.png
new file mode 100644
index 000000000..248b42618
Binary files /dev/null and b/lgsm/data/gameicons/wurm-icon.png differ
diff --git a/lgsm/data/gameicons/zmr-icon.png b/lgsm/data/gameicons/zmr-icon.png
new file mode 100644
index 000000000..d6c61b1d4
Binary files /dev/null and b/lgsm/data/gameicons/zmr-icon.png differ
diff --git a/lgsm/data/gameicons/zps-icon.png b/lgsm/data/gameicons/zps-icon.png
new file mode 100644
index 000000000..e37f37280
Binary files /dev/null and b/lgsm/data/gameicons/zps-icon.png differ
diff --git a/lgsm/data/rhel-7.csv b/lgsm/data/rhel-7.csv
index ac272c917..8854649ad 100644
--- a/lgsm/data/rhel-7.csv
+++ b/lgsm/data/rhel-7.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python36,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -9,6 +9,7 @@ armar,libcurl,openssl11-libs
ats
av
bb
+pw
bb2,libcurl.i686
bd
bf1942,ncurses-libs.i686
@@ -19,7 +20,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +29,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +55,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +66,10 @@ kf
kf2
l4d
l4d2
-lo
mc,java-11-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-libs,libxml2
nd
nec
@@ -89,6 +89,7 @@ pvr,libcxx
pz,java-11-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-11-openjdk
vs
diff --git a/lgsm/data/rhel-8.csv b/lgsm/data/rhel-8.csv
index ac4b7c36f..7dd334f38 100644
--- a/lgsm/data/rhel-8.csv
+++ b/lgsm/data/rhel-8.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python36,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +28,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,java-17-openjdk
+mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -82,20 +81,22 @@ onset,mariadb-connector-c
opfor
pc
pc2
-pmc,java-17-openjdk
+pmc,java-21-openjdk
ps,GConf2
pvkii
pvr,libcxx
-pz,java-11-openjdk rng-tools
+pw
+pz,java-21-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
-rw,java-11-openjdk
+rw,java-21-openjdk
samp
sb
sbots
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,13 +126,13 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
-vpmc,java-17-openjdk
+vpmc,java-21-openjdk
vs
wet
wf
-wmc,java-17-openjdk
+wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/rhel-9.csv b/lgsm/data/rhel-9.csv
index 124322b62..02f21426c 100644
--- a/lgsm/data/rhel-9.csv
+++ b/lgsm/data/rhel-9.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python3,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +28,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,java-17-openjdk
+mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -82,20 +81,22 @@ onset,mariadb-connector-c
opfor
pc
pc2
-pmc,java-17-openjdk
+pmc,java-21-openjdk
ps,GConf2
pvkii
pvr,libcxx
-pz,java-11-openjdk rng-tools
+pw
+pz,java-21-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
-rw,java-11-openjdk
+rw,java-21-openjdk
samp
sb
sbots
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,13 +126,13 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
-vpmc,java-17-openjdk
+vpmc,java-21-openjdk
vs
wet
wf
-wmc,java-17-openjdk
+wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/rocky-8.csv b/lgsm/data/rocky-8.csv
index ac4b7c36f..7dd334f38 100644
--- a/lgsm/data/rocky-8.csv
+++ b/lgsm/data/rocky-8.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python36,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +28,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,java-17-openjdk
+mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -82,20 +81,22 @@ onset,mariadb-connector-c
opfor
pc
pc2
-pmc,java-17-openjdk
+pmc,java-21-openjdk
ps,GConf2
pvkii
pvr,libcxx
-pz,java-11-openjdk rng-tools
+pw
+pz,java-21-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
-rw,java-11-openjdk
+rw,java-21-openjdk
samp
sb
sbots
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,13 +126,13 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
-vpmc,java-17-openjdk
+vpmc,java-21-openjdk
vs
wet
wf
-wmc,java-17-openjdk
+wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/rocky-9.csv b/lgsm/data/rocky-9.csv
index 124322b62..02f21426c 100644
--- a/lgsm/data/rocky-9.csv
+++ b/lgsm/data/rocky-9.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
+all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,pigz,python3,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu,dos2unix,libxml2
btl
cc
-cd
ck,xorg-x11-server-Xvfb
cmw
cod,compat-libstdc++-33.i686
@@ -29,6 +28,7 @@ coduo,compat-libstdc++-33.i686
codwaw
col
cs
+cs2
cscz
csgo
css,ncurses-libs.i686
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,zlib-devel
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,java-17-openjdk
+mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -82,20 +81,22 @@ onset,mariadb-connector-c
opfor
pc
pc2
-pmc,java-17-openjdk
+pmc,java-21-openjdk
ps,GConf2
pvkii
pvr,libcxx
-pz,java-11-openjdk rng-tools
+pw
+pz,java-21-openjdk rng-tools
q2
q3
+q4
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
-rw,java-11-openjdk
+rw,java-21-openjdk
samp
sb
sbots
@@ -104,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2
stn
sven
terraria
+tf
tf2,libcurl.i686
tfc
ti
@@ -123,13 +126,13 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
-vpmc,java-17-openjdk
+vpmc,java-21-openjdk
vs
wet
wf
-wmc,java-17-openjdk
+wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/serverlist.csv b/lgsm/data/serverlist.csv
index 7872048c7..7d2173321 100644
--- a/lgsm/data/serverlist.csv
+++ b/lgsm/data/serverlist.csv
@@ -18,7 +18,6 @@ bs,bsserver,Blade Symphony,ubuntu-22.04
bt,btserver,Barotrauma,ubuntu-22.04
btl,btlserver,BATTALION: Legacy,ubuntu-20.04
cc,ccserver,Codename CURE,ubuntu-22.04
-cd,cdserver,Crafting Dead,ubuntu-22.04
ck,ckserver,Core Keeper,ubuntu-22.04
cmw,cmwserver,Chivalry: Medieval Warfare,ubuntu-22.04
cod,codserver,Call of Duty,ubuntu-22.04
@@ -28,6 +27,7 @@ coduo,coduoserver,Call of Duty: United Offensive,ubuntu-22.04
codwaw,codwawserver,Call of Duty: World at War,ubuntu-22.04
col,colserver,Colony Survival,ubuntu-22.04
cs,csserver,Counter-Strike 1.6,ubuntu-22.04
+cs2,cs2server,Counter-Strike 2,ubuntu-22.04
cscz,csczserver,Counter-Strike: Condition Zero,ubuntu-22.04
csgo,csgoserver,Counter-Strike: Global Offensive,ubuntu-22.04
css,cssserver,Counter-Strike: Source,ubuntu-22.04
@@ -53,6 +53,7 @@ hl2dm,hl2dmserver,Half-Life 2: Deathmatch,ubuntu-22.04
hldm,hldmserver,Half-Life: Deathmatch,ubuntu-22.04
hldms,hldmsserver,Half-Life Deathmatch: Source,ubuntu-22.04
hw,hwserver,Hurtworld,ubuntu-22.04
+hz,hzserver,Humanitz,ubuntu-22.04
ins,insserver,Insurgency,ubuntu-22.04
inss,inssserver,Insurgency: Sandstorm,ubuntu-22.04
ios,iosserver,IOSoccer,ubuntu-22.04
@@ -63,12 +64,10 @@ kf,kfserver,Killing Floor,ubuntu-22.04
kf2,kf2server,Killing Floor 2,ubuntu-22.04
l4d,l4dserver,Left 4 Dead,ubuntu-22.04
l4d2,l4d2server,Left 4 Dead 2,ubuntu-22.04
-lo,loserver,Last Oasis,ubuntu-22.04
mc,mcserver,Minecraft,ubuntu-22.04
mcb,mcbserver,Minecraft Bedrock,ubuntu-22.04
mh,mhserver,MORDHAU,ubuntu-22.04
mohaa,mohaaserver,Medal of Honor: Allied Assault,ubuntu-22.04
-mom,momserver,Memories of Mars,ubuntu-22.04
mta,mtaserver,Multi Theft Auto,ubuntu-22.04
nd,ndserver,Nuclear Dawn,ubuntu-22.04
nec,necserver,Necesse,ubuntu-22.04
@@ -85,9 +84,11 @@ pmc,pmcserver,PaperMC,ubuntu-22.04
ps,psserver,Post Scriptum,ubuntu-22.04
pvkii,pvkiiserver,Pirates Vikings & Knights II,ubuntu-22.04
pvr,pvrserver,Pavlov VR,ubuntu-22.04
+pw,pwserver,Palworld,ubuntu-22.04
pz,pzserver,Project Zomboid,ubuntu-22.04
q2,q2server,Quake 2,ubuntu-22.04
q3,q3server,Quake 3: Arena,ubuntu-22.04
+q4,q4server,Quake 4,ubuntu-22.04
ql,qlserver,Quake Live,ubuntu-22.04
qw,qwserver,Quake World,ubuntu-22.04
ricochet,ricochetserver,Ricochet,ubuntu-22.04
@@ -103,6 +104,7 @@ scpslsm,scpslsmserver,SCP: Secret Laboratory ServerMod,ubuntu-22.04
sdtd,sdtdserver,7 Days to Die,ubuntu-22.04
sf,sfserver,Satisfactory,ubuntu-22.04
sfc,sfcserver,SourceForts Classic,ubuntu-22.04
+sm,smserver,Soulmask,ubuntu-22.04
sof2,sof2server,Soldier Of Fortune 2: Gold Edition,ubuntu-22.04
sol,solserver,Soldat,ubuntu-22.04
squad,squadserver,Squad,ubuntu-22.04
@@ -110,6 +112,7 @@ st,stserver,Stationeers,ubuntu-22.04
stn,stnserver,Survive the Nights,ubuntu-22.04
sven,svenserver,Sven Co-op,ubuntu-20.04
terraria,terrariaserver,Terraria,ubuntu-22.04
+tf,tfserver,The Front,ubuntu-22.04
tf2,tf2server,Team Fortress 2,ubuntu-22.04
tfc,tfcserver,Team Fortress Classic,ubuntu-22.04
ti,tiserver,The Isle,ubuntu-22.04
diff --git a/lgsm/data/ubuntu-16.04.csv b/lgsm/data/ubuntu-16.04.csv
index fd1cd8460..1f359ab9d 100644
--- a/lgsm/data/ubuntu-16.04.csv
+++ b/lgsm/data/ubuntu-16.04.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
steamcmd,lib32gcc1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
@@ -9,6 +9,7 @@ armar,libcurl4
ats
av
bb
+pw
bb2,libcurl4-gnutls-dev:i386
bd
bf1942,libncurses5:i386,libtinfo5:i386
@@ -19,7 +20,6 @@ bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
-cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
@@ -29,6 +29,7 @@ coduo,libstdc++5:i386
codwaw
col
cs
+cs2
cscz
csgo
css,libtinfo5:i386
@@ -54,6 +55,7 @@ hl2dm
hldm
hldms
hw,lib32z1
+hz
ins
inss
ios
@@ -64,12 +66,10 @@ kf
kf2
l4d
l4d2
-lo
mc,openjdk-8-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta
nd
nec
@@ -89,6 +89,7 @@ pvr,libc++1
pz,openjdk-8-jre,rng-tools
q2
q3
+q4
ql
qw
ricochet
@@ -104,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2-utils
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
+tf
tf2,libcurl4-gnutls-dev:i386
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-8-jre
vs
diff --git a/lgsm/data/ubuntu-18.04.csv b/lgsm/data/ubuntu-18.04.csv
index 4b1c94518..cccd53dc7 100644
--- a/lgsm/data/ubuntu-18.04.csv
+++ b/lgsm/data/ubuntu-18.04.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
steamcmd,lib32gcc1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
@@ -8,6 +8,7 @@ arma3
armar,libcurl4
ats
av
+pw
bb
bb2,libcurl4-gnutls-dev:i386
bd
@@ -19,7 +20,6 @@ bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
-cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
@@ -29,6 +29,7 @@ coduo,libstdc++5:i386
codwaw
col
cs
+cs2
cscz
csgo
css,libtinfo5:i386
@@ -54,6 +55,7 @@ hl2dm
hldm
hldms
hw,lib32z1
+hz
ins
inss
ios
@@ -64,12 +66,10 @@ kf
kf2
l4d
l4d2
-lo
mc,openjdk-11-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -89,6 +89,7 @@ pvr,libc++1
pz,openjdk-11-jre,rng-tools
q2
q3
+q4
ql
qw
ricochet
@@ -104,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2-utils
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
+tf
tf2,libcurl4-gnutls-dev:i386
tfc
ti
@@ -123,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-11-jre
vs
diff --git a/lgsm/data/ubuntu-20.04.csv b/lgsm/data/ubuntu-20.04.csv
index f50fb4c83..4c0cae0a8 100644
--- a/lgsm/data/ubuntu-20.04.csv
+++ b/lgsm/data/ubuntu-20.04.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
steamcmd,lib32gcc1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
-cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
@@ -29,6 +28,7 @@ coduo,libstdc++5:i386
codwaw
col
cs
+cs2
cscz
csgo
css,libtinfo5:i386
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,lib32z1
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,openjdk-17-jre
+mc,openjdk-21-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -82,20 +81,22 @@ onset,libmariadb-dev
opfor
pc
pc2
-pmc,openjdk-17-jre
+pmc,openjdk-21-jre
ps,libgconf-2-4
pvkii
pvr,libc++1
-pz,openjdk-17-jre,rng-tools
+pw
+pz,openjdk-21-jre,rng-tools
q2
q3
+q4
ql
qw
ricochet
ro
rtcw
rust,lib32z1
-rw,openjdk-17-jre
+rw,openjdk-21-jre
samp
sb
sbots
@@ -104,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2-utils
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
+tf
tf2,libcurl4-gnutls-dev:i386
tfc
ti
@@ -123,13 +126,13 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-11-jre
vs
wet
wf
-wmc,openjdk-17-jre
+wmc,openjdk-21-jre
wurm,xvfb
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-22.04.csv b/lgsm/data/ubuntu-22.04.csv
index 8526a176b..b0f896fae 100644
--- a/lgsm/data/ubuntu-22.04.csv
+++ b/lgsm/data/ubuntu-22.04.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
-cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
@@ -29,6 +28,7 @@ coduo,libstdc++5:i386
codwaw
col
cs
+cs2
cscz
csgo
css,libtinfo5:i386
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,lib32z1
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,openjdk-17-jre
+mc,openjdk-21-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -82,20 +81,22 @@ onset,libmariadb-dev
opfor
pc
pc2
-pmc,openjdk-17-jre
+pmc,openjdk-21-jre
ps,libgconf-2-4
pvkii
pvr,libc++1
-pz,openjdk-17-jre,rng-tools5
+pw
+pz,openjdk-21-jre,rng-tools5
q2
q3
+q4
ql
qw
ricochet
ro
rtcw
rust,lib32z1
-rw,openjdk-17-jre
+rw,openjdk-21-jre
samp
sb
sbots
@@ -104,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2-utils
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
+tf
tf2,libcurl4-gnutls-dev:i386
tfc
ti
@@ -123,13 +126,13 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
-vpmc,openjdk-17-jre
+vpmc,openjdk-21-jre
vs
wet
wf
-wmc,openjdk-17-jre
+wmc,openjdk-21-jre
wurm,xvfb
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-23.04.csv b/lgsm/data/ubuntu-23.04.csv
index 8526a176b..7ad90039b 100644
--- a/lgsm/data/ubuntu-23.04.csv
+++ b/lgsm/data/ubuntu-23.04.csv
@@ -1,4 +1,4 @@
-all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat-openbsd,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
@@ -19,7 +19,6 @@ bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
-cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
@@ -29,6 +28,7 @@ coduo,libstdc++5:i386
codwaw
col
cs
+cs2
cscz
csgo
css,libtinfo5:i386
@@ -54,6 +54,7 @@ hl2dm
hldm
hldms
hw,lib32z1
+hz
ins
inss
ios
@@ -64,12 +65,10 @@ kf
kf2
l4d
l4d2
-lo
-mc,openjdk-17-jre
+mc,openjdk-21-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -82,20 +81,22 @@ onset,libmariadb-dev
opfor
pc
pc2
-pmc,openjdk-17-jre
+pmc,openjdk-21-jre
ps,libgconf-2-4
pvkii
pvr,libc++1
-pz,openjdk-17-jre,rng-tools5
+pw
+pz,openjdk-21-jre,rng-tools5
q2
q3
+q4
ql
qw
ricochet
ro
rtcw
rust,lib32z1
-rw,openjdk-17-jre
+rw,openjdk-21-jre
samp
sb
sbots
@@ -104,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -111,6 +113,7 @@ st,libxml2-utils
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
+tf
tf2,libcurl4-gnutls-dev:i386
tfc
ti
@@ -123,13 +126,13 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
-vpmc,openjdk-17-jre
+vpmc,openjdk-21-jre
vs
wet
wf
-wmc,openjdk-17-jre
+wmc,openjdk-21-jre
wurm,xvfb
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-23.10.csv b/lgsm/data/ubuntu-23.10.csv
new file mode 100644
index 000000000..7ad90039b
--- /dev/null
+++ b/lgsm/data/ubuntu-23.10.csv
@@ -0,0 +1,138 @@
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat-openbsd,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
+ac
+ahl
+ahl2
+ark
+arma3
+armar,libcurl4
+ats
+av
+bb
+bb2,libcurl4-gnutls-dev:i386
+bd
+bf1942,libncurses5:i386,libtinfo5:i386
+bfv,libncurses5:i386,libstdc++5:i386
+bmdm,libncurses5:i386
+bo
+bs
+bt,libicu-dev,dos2unix,libxml2-utils
+btl
+cc
+ck,xvfb,libxi6
+cmw
+cod,libstdc++5:i386
+cod2,libstdc++5:i386
+cod4
+coduo,libstdc++5:i386
+codwaw
+col
+cs
+cs2
+cscz
+csgo
+css,libtinfo5:i386
+ct
+dab
+dayz
+dmc
+dod
+dodr
+dods
+doi
+dst,libcurl4-gnutls-dev:i386
+dys
+eco,libgdiplus
+em
+etl
+ets2
+fctr
+fof
+gmod,libtinfo5:i386
+hcu
+hl2dm
+hldm
+hldms
+hw,lib32z1
+hz
+ins
+inss
+ios
+jc2
+jc3
+jk2
+kf
+kf2
+l4d
+l4d2
+mc,openjdk-21-jre
+mcb
+mh
+mohaa,libstdc++5:i386
+mta,libncursesw5,libxml2-utils
+nd
+nec
+nmrih,libtinfo5:i386
+ns
+ns2,speex,libtbb2
+ns2c,speex:i386,libtbb2
+ohd
+onset,libmariadb-dev
+opfor
+pc
+pc2
+pmc,openjdk-21-jre
+ps,libgconf-2-4
+pvkii
+pvr,libc++1
+pw
+pz,openjdk-21-jre,rng-tools5
+q2
+q3
+q4
+ql
+qw
+ricochet
+ro
+rtcw
+rust,lib32z1
+rw,openjdk-21-jre
+samp
+sb
+sbots
+scpsl,mono-complete
+scpslsm,mono-complete
+sdtd,telnet,expect,libxml2-utils
+sf
+sfc,libtinfo5:i386
+sm,telnet,expect
+sof2
+sol
+squad
+st,libxml2-utils
+stn
+sven,libssl1.1:i386,zlib1g:i386
+terraria
+tf
+tf2,libcurl4-gnutls-dev:i386
+tfc
+ti
+ts
+ts3
+tu
+tw
+unt
+ut
+ut2k4
+ut3
+ut99
+vh,libc6-dev,libatomic1,libpulse-dev
+vints,aspnetcore-runtime-7.0
+vpmc,openjdk-21-jre
+vs
+wet
+wf
+wmc,openjdk-21-jre
+wurm,xvfb
+zmr,libtinfo5:i386
+zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-24.04.csv b/lgsm/data/ubuntu-24.04.csv
new file mode 100644
index 000000000..7ad90039b
--- /dev/null
+++ b/lgsm/data/ubuntu-24.04.csv
@@ -0,0 +1,138 @@
+all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat-openbsd,pigz,python3,tar,tmux,unzip,util-linux,uuid-runtime,wget,xz-utils
+steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
+ac
+ahl
+ahl2
+ark
+arma3
+armar,libcurl4
+ats
+av
+bb
+bb2,libcurl4-gnutls-dev:i386
+bd
+bf1942,libncurses5:i386,libtinfo5:i386
+bfv,libncurses5:i386,libstdc++5:i386
+bmdm,libncurses5:i386
+bo
+bs
+bt,libicu-dev,dos2unix,libxml2-utils
+btl
+cc
+ck,xvfb,libxi6
+cmw
+cod,libstdc++5:i386
+cod2,libstdc++5:i386
+cod4
+coduo,libstdc++5:i386
+codwaw
+col
+cs
+cs2
+cscz
+csgo
+css,libtinfo5:i386
+ct
+dab
+dayz
+dmc
+dod
+dodr
+dods
+doi
+dst,libcurl4-gnutls-dev:i386
+dys
+eco,libgdiplus
+em
+etl
+ets2
+fctr
+fof
+gmod,libtinfo5:i386
+hcu
+hl2dm
+hldm
+hldms
+hw,lib32z1
+hz
+ins
+inss
+ios
+jc2
+jc3
+jk2
+kf
+kf2
+l4d
+l4d2
+mc,openjdk-21-jre
+mcb
+mh
+mohaa,libstdc++5:i386
+mta,libncursesw5,libxml2-utils
+nd
+nec
+nmrih,libtinfo5:i386
+ns
+ns2,speex,libtbb2
+ns2c,speex:i386,libtbb2
+ohd
+onset,libmariadb-dev
+opfor
+pc
+pc2
+pmc,openjdk-21-jre
+ps,libgconf-2-4
+pvkii
+pvr,libc++1
+pw
+pz,openjdk-21-jre,rng-tools5
+q2
+q3
+q4
+ql
+qw
+ricochet
+ro
+rtcw
+rust,lib32z1
+rw,openjdk-21-jre
+samp
+sb
+sbots
+scpsl,mono-complete
+scpslsm,mono-complete
+sdtd,telnet,expect,libxml2-utils
+sf
+sfc,libtinfo5:i386
+sm,telnet,expect
+sof2
+sol
+squad
+st,libxml2-utils
+stn
+sven,libssl1.1:i386,zlib1g:i386
+terraria
+tf
+tf2,libcurl4-gnutls-dev:i386
+tfc
+ti
+ts
+ts3
+tu
+tw
+unt
+ut
+ut2k4
+ut3
+ut99
+vh,libc6-dev,libatomic1,libpulse-dev
+vints,aspnetcore-runtime-7.0
+vpmc,openjdk-21-jre
+vs
+wet
+wf
+wmc,openjdk-21-jre
+wurm,xvfb
+zmr,libtinfo5:i386
+zps,libtinfo5:i386
diff --git a/lgsm/functions/README.md b/lgsm/functions/README.md
deleted file mode 100644
index de008ecfa..000000000
--- a/lgsm/functions/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# LinuxGSM - Modules
-
-These modules are scripts that are called upon by the primary script linuxgsm.sh
-
-## Module Names
-
-Modules have been named to give an idea of what the function does.
-
-- 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 modules.
-- fix: Applies a game server specific fix.
-- info: retrieves information from a source such as config file or the OS.
-- 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
deleted file mode 100644
index 59deae2b6..000000000
--- a/lgsm/functions/alert.sh
+++ /dev/null
@@ -1,238 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Overall function for managing alerts.
-
-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_game.sh
- info_messages.sh
- if [ -f "${alertlog}" ]; then
- rm -f "${alertlog:?}"
- fi
-
- {
- fn_info_message_head
- fn_info_message_distro
- fn_info_message_server_resource
- fn_info_message_gameserver_resource
- fn_info_message_gameserver
- fn_info_logs
- } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | tee -a "${alertlog}" > /dev/null 2>&1
-}
-
-fn_alert_test() {
- fn_script_log_info "Sending test alert"
- alertsubject="Alert - ${selfname} - Test"
- alertemoji="🚧"
- alertsound="1"
- alerturl="not enabled"
- alertbody="Testing LinuxGSM Alert. No action to be taken."
-}
-
-fn_alert_restart() {
- fn_script_log_info "Sending alert: Restarted: ${executable} not running"
- alertsubject="Alert - ${selfname} - Restarted"
- alertemoji="🚨"
- alertsound="2"
- alerturl="not enabled"
- alertbody="${selfname} ${executable} not running"
-}
-
-fn_alert_restart_query() {
- fn_script_log_info "Sending alert: Restarted: ${selfname}"
- alertsubject="Alert - ${selfname} - Restarted"
- alertemoji="🚨"
- alertsound="2"
- alerturl="not enabled"
- alertbody="Unable to query: ${selfname}"
-}
-
-fn_alert_update() {
- fn_script_log_info "Sending alert: Updated"
- alertsubject="Alert - ${selfname} - Updated"
- alertemoji="🎮"
- alertsound="1"
- alerturl="not enabled"
- alertbody="${gamename} received update: ${remotebuildversion}"
-}
-
-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: ${remotebuildversion}"
-}
-
-fn_alert_permissions() {
- fn_script_log_info "Sending alert: Permissions error"
- alertsubject="Alert - ${selfname}: Permissions error"
- alertemoji="❗"
- alertsound="2"
- alerturl="not enabled"
- alertbody="${selfname} has permissions issues"
-}
-
-fn_alert_config() {
- fn_script_log_info "Sending alert: New _default.cfg"
- alertsubject="Alert - ${selfname} - New _default.cfg"
- alertemoji="🎮"
- alertsound="1"
- alerturl="not enabled"
- alertbody="${selfname} has received a new _default.cfg. Check file for changes."
-}
-
-if [ "${alert}" == "permissions" ]; then
- fn_alert_permissions
-elif [ "${alert}" == "restart" ]; then
- fn_alert_restart
-elif [ "${alert}" == "restartquery" ]; then
- fn_alert_restart_query
-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
-
-# Generate alert log.
-fn_alert_log
-
-# Generates the more info link.
-if [ "${postalert}" == "on" ] && [ -n "${postalert}" ]; then
- exitbypass=1
- command_postdetails.sh
- fn_firstcommand_reset
- unset exitbypass
-elif [ "${postalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "More Info not enabled"
- fn_script_log_warn "More Info alerts not enabled"
-fi
-
-if [ "${discordalert}" == "on" ] && [ -n "${discordalert}" ]; then
- alert_discord.sh
-elif [ "${discordalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "Discord alerts not enabled"
- fn_script_log_warn "Discord alerts not enabled"
-elif [ -z "${discordtoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Discord token not set"
- echo -e "* https://docs.linuxgsm.com/alerts/discord"
- fn_script_error "Discord token not set"
-fi
-
-if [ "${emailalert}" == "on" ] && [ -n "${email}" ]; then
- alert_email.sh
-elif [ "${emailalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "Email alerts not enabled"
- fn_script_log_warn "Email alerts not enabled"
-elif [ -z "${email}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Email not set"
- fn_script_log_error "Email not set"
-fi
-
-if [ "${gotifyalert}" == "on" ] && [ -n "${gotifyalert}" ]; then
- alert_gotify.sh
-elif [ "${gotifyalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "Gotify alerts not enabled"
- fn_script_log_warn "Gotify alerts not enabled"
-elif [ -z "${gotifytoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Gotify token not set"
- echo -e "* https://docs.linuxgsm.com/alerts/gotify"
- fn_script_error "Gotify token not set"
-elif [ -z "${gotifywebhook}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Gotify webhook not set"
- echo -e "* https://docs.linuxgsm.com/alerts/gotify"
- fn_script_error "Gotify webhook not set"
-fi
-
-if [ "${iftttalert}" == "on" ] && [ -n "${iftttalert}" ]; then
- alert_ifttt.sh
-elif [ "${iftttalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "IFTTT alerts not enabled"
- fn_script_log_warn "IFTTT alerts not enabled"
-elif [ -z "${ifttttoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "IFTTT token not set"
- echo -e "* https://docs.linuxgsm.com/alerts/ifttt"
- fn_script_error "IFTTT token not set"
-fi
-
-if [ "${mailgunalert}" == "on" ] && [ -n "${mailgunalert}" ]; then
- alert_mailgun.sh
-elif [ "${mailgunalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "Mailgun alerts not enabled"
- fn_script_log_warn "Mailgun alerts not enabled"
-elif [ -z "${mailguntoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Mailgun token not set"
- echo -e "* https://docs.linuxgsm.com/alerts/mailgun"
- fn_script_error "Mailgun token not set"
-fi
-
-if [ "${pushbulletalert}" == "on" ] && [ -n "${pushbullettoken}" ]; then
- alert_pushbullet.sh
-elif [ "${pushbulletalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "Pushbullet alerts not enabled"
- fn_script_log_warn "Pushbullet alerts not enabled"
-elif [ -z "${pushbullettoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Pushbullet token not set"
- echo -e "* https://docs.linuxgsm.com/alerts/pushbullet"
- fn_script_error "Pushbullet token not set"
-fi
-
-if [ "${pushoveralert}" == "on" ] && [ -n "${pushoveralert}" ]; then
- alert_pushover.sh
-elif [ "${pushoveralert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "Pushover alerts not enabled"
- fn_script_log_warn "Pushover alerts not enabled"
-elif [ -z "${pushovertoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Pushover token not set"
- echo -e "* https://docs.linuxgsm.com/alerts/pushover"
- fn_script_error "Pushover token not set"
-fi
-
-if [ "${telegramalert}" == "on" ] && [ -n "${telegramtoken}" ]; then
- alert_telegram.sh
-elif [ "${telegramalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "Telegram Messages not enabled"
- fn_script_log_warn "Telegram Messages not enabled"
-elif [ -z "${telegramtoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Telegram token not set."
- echo -e "* https://docs.linuxgsm.com/alerts/telegram"
- fn_script_error "Telegram token not set."
-elif [ -z "${telegramchatid}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Telegram chat id not set."
- echo -e "* https://docs.linuxgsm.com/alerts/telegram"
- fn_script_error "Telegram chat id not set."
-fi
-
-if [ "${rocketchatalert}" == "on" ] && [ -n "${rocketchatalert}" ]; then
- alert_rocketchat.sh
-elif [ "${rocketchatalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "Rocketchat alerts not enabled"
- fn_script_log_warn "Rocketchat alerts not enabled"
-elif [ -z "${rocketchattoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Rocketchat token not set"
- #echo -e "* https://docs.linuxgsm.com/alerts/slack"
- fn_script_error "Rocketchat token not set"
-fi
-
-if [ "${slackalert}" == "on" ] && [ -n "${slackalert}" ]; then
- alert_slack.sh
-elif [ "${slackalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_warn_nl "Slack alerts not enabled"
- fn_script_log_warn "Slack alerts not enabled"
-elif [ -z "${slacktoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
- fn_print_error_nl "Slack token not set"
- echo -e "* https://docs.linuxgsm.com/alerts/slack"
- fn_script_error "Slack token not set"
-fi
diff --git a/lgsm/functions/alert_discord.sh b/lgsm/functions/alert_discord.sh
deleted file mode 100644
index 770817516..000000000
--- a/lgsm/functions/alert_discord.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert_discord.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends Discord alert.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-json=$(
- cat << EOF
-{
- "username":"LinuxGSM",
- "avatar_url":"https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
- "file":"content",
- "embeds": [{
- "color": "2067276",
- "author": {
- "name": "${alertemoji} ${alertsubject} ${alertemoji}",
- "icon_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg"
- },
- "title": "${servername}",
- "description": "${alertbody} \n More info: ${alerturl}",
- "url": "",
- "type": "content",
- "thumbnail": {},
- "fields": [
- {
- "name": "Game",
- "value": "${gamename}",
- "inline": true
- },
- {
- "name": "Server IP",
- "value": "[${alertip}:${port}](https://www.gametracker.com/server_info/${alertip}:${port})",
- "inline": true
- },
- {
- "name": "Hostname",
- "value": "${HOSTNAME}",
- "inline": true
- }
- ]
- }]
-}
-EOF
-)
-
-fn_print_dots "Sending Discord alert"
-
-discordsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${discordwebhook}")
-
-if [ -n "${discordsend}" ]; then
- fn_print_fail_nl "Sending Discord alert: ${discordsend}"
- fn_script_log_fatal "Sending Discord alert: ${discordsend}"
-else
- fn_print_ok_nl "Sending Discord alert"
- fn_script_log_pass "Sending Discord alert"
-fi
diff --git a/lgsm/functions/alert_email.sh b/lgsm/functions/alert_email.sh
deleted file mode 100644
index ad90e880f..000000000
--- a/lgsm/functions/alert_email.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert_email.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends email alert.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_print_dots "Sending Email alert: ${email}"
-fn_sleep_time
-
-if [ -n "${emailfrom}" ]; then
- mail -s "${alertsubject}" -r "${emailfrom}" "${email}" < "${alertlog}"
-else
- mail -s "${alertsubject}" "${email}" < "${alertlog}"
-fi
-exitcode=$?
-if [ "${exitcode}" == "0" ]; then
- fn_print_ok_nl "Sending Email alert: ${email}"
- fn_script_log_pass "Sending Email alert: ${email}"
-else
- fn_print_fail_nl "Sending Email alert: ${email}"
- fn_script_log_fatal "Sending Email alert: ${email}"
-fi
diff --git a/lgsm/functions/alert_gotify.sh b/lgsm/functions/alert_gotify.sh
deleted file mode 100644
index faeba4593..000000000
--- a/lgsm/functions/alert_gotify.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert_gotify.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends Gotify alert.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-json=$(
- cat << EOF
-{
- "title": "${alertemoji} ${alertsubject} ${alertemoji}",
- "message": "Server name\n${servername}\n\nMessage\n${alertbody}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}",
- "priority": 5
-}
-EOF
-)
-
-fn_print_dots "Sending Gotify alert"
-
-gotifysend=$(curl --connect-timeout 10 -sSL "${gotifywebhook}/message"?token="${gotifytoken}" -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)")
-
-if [ -n "${gotifysend}" ]; then
- fn_print_ok_nl "Sending Gotify alert"
- fn_script_log_pass "Sending Gotify alert"
-else
- fn_print_fail_nl "Sending Gotify alert: ${gotifysend}"
- fn_script_log_fatal "Sending Gotify alert: ${gotifysend}"
-fi
diff --git a/lgsm/functions/alert_ifttt.sh b/lgsm/functions/alert_ifttt.sh
deleted file mode 100644
index f8bbc24ad..000000000
--- a/lgsm/functions/alert_ifttt.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert_ifttt.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends IFTTT alert.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-json=$(
- cat << EOF
-{
- "value1": "${selfname}",
- "value2": "${alertemoji} ${alertsubject} ${alertemoji}",
- "value3": "Message: \n${alertbody}\n\nGame: \n${gamename}\n\nServer name: \n${servername}\n\nHostname: \n${HOSTNAME}\n\nServer IP: \n${alertip}:${port}\n\nMore info: \n${alerturl}"
-}
-EOF
-)
-
-fn_print_dots "Sending IFTTT alert"
-iftttsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "https://maker.ifttt.com/trigger/${iftttevent}/with/key/${ifttttoken}" | grep "Bad Request")
-
-if [ -n "${iftttsend}" ]; then
- fn_print_fail_nl "Sending IFTTT alert: ${pushbulletsend}"
- fn_script_log_fatal "Sending IFTTT alert: ${pushbulletsend}"
-else
- fn_print_ok_nl "Sending IFTTT alert"
- fn_script_log_pass "Sent IFTTT alert"
-fi
diff --git a/lgsm/functions/alert_mailgun.sh b/lgsm/functions/alert_mailgun.sh
deleted file mode 100644
index 25576209c..000000000
--- a/lgsm/functions/alert_mailgun.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert_mailgun.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends Mailgun Email alert.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if [ "${mailgunapiregion}" == "eu" ]; then
- mailgunapiurl="https://api.eu.mailgun.net"
-else
- mailgunapiurl="https://api.mailgun.net"
-fi
-
-fn_print_dots "Sending Email alert: Mailgun: ${mailgunemail}"
-
-mailgunsend=$(curl --connect-timeout 10 -s --user "api:${mailguntoken}" \
- -F from="LinuxGSM <${mailgunemailfrom}>" \
- -F to="LinuxGSM Admin <${mailgunemail}>" \
- -F subject="${alertemoji} ${alertsubject} ${alertemoji}" \
- -F o:tag='alert' \
- -F o:tag='LinuxGSM' \
- -F text="$(cat "${alertlog}")" "${mailgunapiurl}/v3/${mailgundomain}/messages")
-
-if [ -z "${mailgunsend}" ]; then
- fn_print_fail_nl "Sending Email alert: Mailgun: ${mailgunemail}"
- fn_script_log_fatal "Sending Email alert: Mailgun: ${mailgunemail}"
-else
- fn_print_ok_nl "Sending Email alert: Mailgun: ${mailgunemail}"
- fn_script_log_pass "Sending Email alert: Mailgun: ${mailgunemail}"
-fi
diff --git a/lgsm/functions/alert_pushbullet.sh b/lgsm/functions/alert_pushbullet.sh
deleted file mode 100644
index 3e82d0db0..000000000
--- a/lgsm/functions/alert_pushbullet.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert_pushbullet.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends Pushbullet Messenger alert.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-json=$(
- cat << EOF
-{
- "channel_tag": "${channeltag}",
- "type": "note",
- "title": "${alertemoji} ${alertsubject} ${alertemoji}",
- "body": "Server name\n${servername}\n\nMessage\n${alertbody}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}"
-}
-EOF
-)
-
-fn_print_dots "Sending Pushbullet alert"
-pushbulletsend=$(curl --connect-timeout 10 -sSL -u """${pushbullettoken}"":" -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "https://api.pushbullet.com/v2/pushes" | grep "error_code")
-
-if [ -n "${pushbulletsend}" ]; then
- fn_print_fail_nl "Sending Pushbullet alert: ${pushbulletsend}"
- fn_script_log_fatal "Sending Pushbullet alert: ${pushbulletsend}"
-else
- fn_print_ok_nl "Sending Pushbullet alert"
- fn_script_log_pass "Sent Pushbullet alert"
-fi
diff --git a/lgsm/functions/alert_pushover.sh b/lgsm/functions/alert_pushover.sh
deleted file mode 100644
index d7c086478..000000000
--- a/lgsm/functions/alert_pushover.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert_pushover.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends Pushover alert.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_print_dots "Sending Pushover alert"
-
-# Different alerts are given different priorities and notification sounds.
-if [ "${alertsound}" == "1" ]; then
- alertsound=""
- alertpriority="0"
-elif [ "${alertsound}" == "2" ]; then
- # restarted.
- alertsound="siren"
- alertpriority="1"
-else
- alertsound=""
- alertpriority="0"
-fi
-
-pushoversend=$(curl --connect-timeout 10 -sS -F token="${pushovertoken}" -F user="${pushoveruserkey}" -F html="1" -F sound="${alertsound}" -F priority="${alertpriority}" -F title="${alertemoji} ${alertsubject} ${alertemoji}" -F message=" Server name
${servername}
Message
${alertbody}
Game
${gamename}
Server IP
${alertip}:${port}
Hostname
${HOSTNAME}
More info
${alerturl}" "https://api.pushover.net/1/messages.json" | grep errors)
-
-if [ -n "${pushoversend}" ]; then
- fn_print_fail_nl "Sending Pushover alert: ${pushoversend}"
- fn_script_log_fatal "Sending Pushover alert: ${pushoversend}"
-else
- fn_print_ok_nl "Sending Pushover alert"
- fn_script_log_pass "Sent Pushover alert"
-fi
diff --git a/lgsm/functions/alert_rocketchat.sh b/lgsm/functions/alert_rocketchat.sh
deleted file mode 100644
index 34d018e38..000000000
--- a/lgsm/functions/alert_rocketchat.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert_rocketchat.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends Rocketchat alert.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-json=$(
- cat << EOF
-{
- "alias": "LinuxGSM",
- "text": "*${alertemoji} ${alertsubject} ${alertemoji}* \n *${servername}* \n ${alertbody} \n More info: ${alerturl}",
- "attachments": [
- {
- "fields": [
- {
- "short": true,
- "title": "Game:",
- "value": "${gamename}"
- },
- {
- "short": true,
- "title": "Server IP:",
- "value": "${alertip}:${port}"
- },
- {
- "short": true,
- "title": "Hostname:",
- "value": "${HOSTNAME}"
- }
- ]
- }
- ]
-}
-EOF
-)
-
-fn_print_dots "Sending Rocketchat alert"
-
-rocketchatsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${rocketchatwebhook}")
-
-if [ -n "${rocketchatsend}" ]; then
- fn_print_ok_nl "Sending Rocketchat alert"
- fn_script_log_pass "Sending Rocketchat alert"
-else
- fn_print_fail_nl "Sending Rocketchat alert: ${rocketchatsend}"
- fn_script_log_fatal "Sending Rocketchat alert: ${rocketchatsend}"
-fi
diff --git a/lgsm/functions/alert_slack.sh b/lgsm/functions/alert_slack.sh
deleted file mode 100644
index 2e87c1571..000000000
--- a/lgsm/functions/alert_slack.sh
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/bin/bash
-# LinuxGSM alert_slack.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends Slack alert.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-json=$(
- cat << EOF
-{
- "attachments": [
- {
- "color": "#36a64f",
- "blocks": [
- {
- "type": "section",
- "text": {
- "type": "mrkdwn",
- "text": "*LinuxGSM Alert*"
- }
- },
- {
- "type": "section",
- "text": {
- "type": "mrkdwn",
- "text": "*${alertemoji} ${alertsubject}* \n ${alertbody}"
- }
- },
- {
- "type": "divider"
- },
- {
- "type": "section",
- "fields": [
- {
- "type": "mrkdwn",
- "text": "*Game:* \n ${gamename}"
- },
- {
- "type": "mrkdwn",
- "text": "*Server IP:* \n ${alertip}:${port}"
- },
- {
- "type": "mrkdwn",
- "text": "*Server Name:* \n ${servername}"
- }
- ]
- },
- {
- "type": "section",
- "text": {
- "type": "mrkdwn",
- "text": "Hostname: ${HOSTNAME} / More info: ${alerturl}"
- }
- }
- ]
- }
- ]
-}
-EOF
-)
-
-fn_print_dots "Sending Slack alert"
-
-slacksend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${slackwebhook}")
-
-if [ "${slacksend}" == "ok" ]; then
- fn_print_ok_nl "Sending Slack alert"
- fn_script_log_pass "Sending Slack alert"
-else
- fn_print_fail_nl "Sending Slack alert: ${slacksend}"
- fn_script_log_fatal "Sending Slack alert: ${slacksend}"
-fi
diff --git a/lgsm/functions/alert_telegram.sh b/lgsm/functions/alert_telegram.sh
deleted file mode 100644
index 27e34beb4..000000000
--- a/lgsm/functions/alert_telegram.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-# 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]}")")"
-
-json=$(
- cat << EOF
-{
- "chat_id": "${telegramchatid}",
- "parse_mode": "HTML",
- "text": "${alertemoji} ${alertsubject} ${alertemoji}\n\nServer name\n${servername}\n\nMessage\n${alertbody}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}",
- "disable_web_page_preview": "yes"
-}
-EOF
-)
-
-fn_print_dots "Sending Telegram alert"
-telegramsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" ${curlcustomstring} "https://${telegramapi}/bot${telegramtoken}/sendMessage" | grep "error_code")
-
-if [ -n "${telegramsend}" ]; then
- fn_print_fail_nl "Sending Telegram alert: ${telegramsend}"
- fn_script_log_fatal "Sending Telegram alert: ${telegramsend}"
-else
- fn_print_ok_nl "Sending Telegram alert"
- fn_script_log_pass "Sent Telegram alert"
-fi
diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh
deleted file mode 100644
index e19853424..000000000
--- a/lgsm/functions/check.sh
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Every command that requires checks just references check.sh.
-# check.sh selects which checks to run by using arrays.
-
-if [ "${commandname}" != "INSTALL" ]; then
- check_root.sh
-fi
-
-if [ "${commandname}" != "UPDATE-LGSM" ]; then
- check_version.sh
-fi
-
-check_tmuxception.sh
-
-if [ "$(whoami)" != "root" ] || [ -f /.dockerenv ]; then
- if [ "${commandname}" != "MONITOR" ]; then
- check_permissions.sh
- fi
-fi
-
-if [ "${commandname}" != "INSTALL" ] && [ "${commandname}" != "UPDATE-LGSM" ] && [ "${commandname}" != "DETAILS" ] && [ "${commandname}" != "POST-DETAILS" ]; then
- check_system_dir.sh
-fi
-
-allowed_commands_array=(DEBUG START)
-for allowed_command in "${allowed_commands_array[@]}"; do
- if [ "${allowed_command}" == "${commandname}" ]; then
- check_executable.sh
- fi
-done
-
-if [ "$(whoami)" != "root" ] || [ -f /.dockerenv ]; then
- allowed_commands_array=(DEBUG START INSTALL)
- for allowed_command in "${allowed_commands_array[@]}"; do
- if [ "${allowed_command}" == "${commandname}" ]; then
- check_glibc.sh
- fi
- done
-fi
-
-allowed_commands_array=(BACKUP CHANGE-PASSWORD CONSOLE DEBUG DETAILS FASTDL MAP-COMPRESSOR MODS-INSTALL MODS-REMOVE MODS-UPDATE MONITOR POST-DETAILS RESTART START STOP TEST-ALERT UPDATE UPDATE-LGSM VALIDATE WIPE)
-for allowed_command in "${allowed_commands_array[@]}"; do
- if [ "${allowed_command}" == "${commandname}" ]; then
- check_logs.sh
- fi
-done
-
-allowed_commands_array=(DEBUG START)
-for allowed_command in "${allowed_commands_array[@]}"; do
- if [ "${allowed_command}" == "${commandname}" ]; then
- check_deps.sh
- fi
-done
-
-allowed_commands_array=(CONSOLE DEBUG MONITOR START STOP)
-for allowed_command in "${allowed_commands_array[@]}"; do
- if [ "${allowed_command}" == "${commandname}" ]; then
- check_config.sh
- fi
-done
-
-allowed_commands_array=(DEBUG DETAILS DEV-QUERY-RAW MONITOR POST-DETAILS START STOP)
-for allowed_command in "${allowed_commands_array[@]}"; do
- if [ "${allowed_command}" == "${commandname}" ]; then
- if [ -z "${installflag}" ]; then
- check_ip.sh
- fi
- fi
-done
-
-allowed_commands_array=(CHECK-UPDATE DEBUG MONITOR START UPDATE VALIDATE)
-for allowed_command in "${allowed_commands_array[@]}"; do
- if [ "${allowed_command}" == "${commandname}" ]; then
- if [ "${appid}" ]; then
- check_steamcmd.sh
- fi
- fi
-done
-
-allowed_commands_array=(CHANGE-PASSWORD DETAILS MONITOR POST-DETAILS START STOP UPDATE VALIDATE)
-for allowed_command in "${allowed_commands_array[@]}"; do
- if [ "${allowed_command}" == "${commandname}" ]; then
- check_status.sh
- fi
-done
-
-allowed_commands_array=(DEBUG START INSTALL)
-for allowed_command in "${allowed_commands_array[@]}"; do
- if [ "${allowed_command}" == "${commandname}" ]; then
- check_system_requirements.sh
- fi
-done
diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh
deleted file mode 100644
index 2c65243eb..000000000
--- a/lgsm/functions/check_config.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-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" ] && [ -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
-
-if [ "${shortname}" == "vh" ] && [ -z "${serverpassword}" ]; then
- fn_print_fail_nl "serverpassword is not set"
- fn_script_log_fatal "serverpassword is not set"
-elif [ "${shortname}" == "vh" ] && [ "${#serverpassword}" -le "4" ]; then
- fn_print_fail_nl "serverpassword is to short (min 5 chars)"
- fn_script_log_fatal "serverpassword is to short (min 5 chars)"
-fi
diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh
deleted file mode 100644
index bb8507769..000000000
--- a/lgsm/functions/check_deps.sh
+++ /dev/null
@@ -1,363 +0,0 @@
-#!/bin/bash
-# LinuxGSM check_deps.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Checks and installs missing dependencies.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_install_mono_repo() {
- if [ "${autodepinstall}" == "0" ]; then
- fn_print_information_nl "Automatically adding Mono repository."
- fn_script_log_info "Automatically adding Mono repository."
- echo -en ".\r"
- sleep 1
- echo -en "..\r"
- sleep 1
- echo -en "...\r"
- sleep 1
- echo -en " \r"
- if [ "${distroid}" == "ubuntu" ]; then
- if [ "${distroversion}" == "20.04" ]; then
- cmd="sudo apt install gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-focal main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
- elif [ "${distroversion}" == "18.04" ]; then
- cmd="sudo apt install gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-bionic main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
- elif [ "${distroversion}" == "16.04" ]; then
- cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt install apt-transport-https ca-certificates;echo 'deb https://download.mono-project.com/repo/ubuntu stable-xenial main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
- else
- monoautoinstall="1"
- fi
- elif [ "${distroid}" == "debian" ]; then
- if [ "${distroversion}" == "10" ]; then
- cmd="sudo apt install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-buster main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
- elif [ "${distroversion}" == "9" ]; then
- cmd="sudo apt install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-stretch main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
- else
- monoautoinstall="1"
- fi
- elif [ "${distroid}" == "centos" ] || [ "${distroid}" == "almalinux" ] || [ "${distroid}" == "rocky" ]; then
- if [ "${distroversion}" == "8" ]; then
- cmd="sudo rpmkeys --import 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF';su -c 'curl https://download.mono-project.com/repo/centos8-stable.repo | tee /etc/yum.repos.d/mono-centos8-stable.repo'"
- elif [ "${distroversion}" == "7" ]; then
- cmd="sudo rpmkeys --import 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF';su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo'"
- else
- monoautoinstall="1"
- fi
- elif [ "${distroid}" == "fedora" ]; then
- if [ "${distroversion}" -ge "29" ]; then
- cmd="sudo rpm --import 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF';su -c 'curl https://download.mono-project.com/repo/centos8-stable.repo | tee /etc/yum.repos.d/mono-centos8-stable.repo';dnf update"
- else
- cmd="sudo rpm --import 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF';su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo';dnf update"
- fi
- else
- monoautoinstall="1"
- fi
-
- # Run the mono repo install.
- eval "${cmd}"
-
- # Did Mono repo install correctly?
- if [ "${monoautoinstall}" != "1" ]; then
- if [ $? != 0 ]; then
- fn_print_failure_nl "Unable to install Mono repository."
- fn_script_log_fatal "Unable to install Mono repository."
- else
- fn_print_complete_nl "Installing Mono repository completed."
- fn_script_log_pass "Installing Mono repository completed."
- fi
- fi
-
- # Mono can not be auto installed with this distro.
- if [ "${monoautoinstall}" == "1" ]; then
- fn_print_warning_nl "Mono auto install not available for ${distroname}."
- echo -e "Follow instructions on Mono website to install."
- echo -e "https://www.mono-project.com/download/stable/#download-lin"
- fn_script_log_warn "Unable to install Mono repository. Mono auto install not available for ${distroname}."
- fi
-
- else
- fn_print_information_nl "Installing Mono repository."
- fn_print_warning_nl "$(whoami) does not have sudo access."
- echo -e "Follow instructions on Mono website to install."
- echo -e "https://www.mono-project.com/download/stable/#download-lin"
- fn_script_log_warn "Unable to install Mono repository. $(whoami) does not have sudo access."
- fi
-}
-
-fn_deps_email() {
- # Adds postfix to required dependencies if email alert is enabled.
- if [ "${emailalert}" == "on" ]; then
- if [ -f /usr/bin/mailx ]; then
- if [ -d /etc/exim4 ]; then
- array_deps_required+=(exim4)
- elif [ -d /etc/sendmail ]; then
- array_deps_required+=(sendmail)
- elif [ "$(command -v dpkg-query 2> /dev/null)" ]; then
- array_deps_required+=(mailutils postfix)
- elif [ "$(command -v rpm 2> /dev/null)" ]; then
- array_deps_required+=(mailx postfix)
- fi
- else
- if [ "$(command -v dpkg-query 2> /dev/null)" ]; then
- array_deps_required+=(mailutils postfix)
- elif [ "$(command -v rpm 2> /dev/null)" ]; then
- array_deps_required+=(mailx postfix)
- fi
- fi
- fi
-}
-
-fn_install_missing_deps() {
- # If any dependencies are not installed.
- if [ "${#array_deps_missing[*]}" != "0" ]; then
- if [ "${commandname}" == "INSTALL" ]; then
- fn_print_warning_nl "Missing dependencies: ${red}${array_deps_missing[*]}${default}"
- fn_script_log_warn "Missing dependencies: ${array_deps_missing[*]}"
- else
- fn_print_dots "Missing dependencies"
- fn_print_warn "Missing dependencies: ${red}${array_deps_missing[*]}${default}"
- fn_script_log_warn "Missing dependencies: ${array_deps_missing[*]}"
- fi
- fn_sleep_time
-
- # Attempt automatic dependency installation
- if [ "${autoinstall}" == "1" ]; then
- sudo -n true > /dev/null 2>&1
- else
- sudo -v > /dev/null 2>&1
- fi
- autodepinstall="$?"
-
- if [ "${monostatus}" == "1" ]; then
- fn_install_mono_repo
- fi
-
- if [ "${commandname}" == "INSTALL" ]; then
- if [ "${autodepinstall}" == "0" ]; then
- fn_print_information_nl "$(whoami) has sudo access."
- fn_script_log_info "$(whoami) has sudo access."
- else
- fn_print_warning_nl "$(whoami) does not have sudo access. Manually install dependencies."
- fn_script_log_warn "$(whoami) does not have sudo access. Manually install dependencies."
- fi
- fi
-
- # Add sudo dpkg --add-architecture i386 if using i386 packages.
- if [ "$(command -v dpkg-query 2> /dev/null)" ]; then
- if printf '%s\n' "${array_deps_required[@]}" | grep -q -P 'i386'; then
- i386installcommand="sudo dpkg --add-architecture i386; "
- fi
- fi
-
- # If automatic dependency install is available
- if [ "${autodepinstall}" == "0" ]; then
- fn_print_information_nl "Automatically installing missing dependencies."
- fn_script_log_info "Automatically installing missing dependencies."
- echo -en ".\r"
- sleep 1
- echo -en "..\r"
- sleep 1
- echo -en "...\r"
- sleep 1
- echo -en " \r"
- if [ "$(command -v dpkg-query 2> /dev/null)" ]; then
- cmd="echo steamcmd steam/question select \"I AGREE\" | sudo debconf-set-selections; echo steamcmd steam/license note '' | sudo debconf-set-selections; ${i386installcommand}sudo apt-get update; sudo apt-get -y install ${array_deps_missing[*]}"
- eval "${cmd}"
- elif [ "$(command -v dnf 2> /dev/null)" ]; then
- cmd="sudo dnf -y install ${array_deps_missing[*]}"
- eval "${cmd}"
- elif [ "$(command -v yum 2> /dev/null)" ]; then
- cmd="sudo yum -y install ${array_deps_missing[*]}"
- eval "${cmd}"
- fi
- autodepinstall="$?"
-
- # If auto install passes remove steamcmd install failure.
- if [ "${autodepinstall}" == "0" ]; then
- unset steamcmdfail
- fi
- fi
-
- # If automatic dependency install is unavailable.
- if [ "${autodepinstall}" != "0" ]; then
- if [ "$(command -v dpkg-query 2> /dev/null)" ]; then
- echo -e "${i386installcommand}sudo apt update; sudo apt install ${array_deps_missing[*]}"
- elif [ "$(command -v dnf 2> /dev/null)" ]; then
- echo -e "sudo dnf install ${array_deps_missing[*]}"
- elif [ "$(command -v yum 2> /dev/null)" ]; then
- echo -e "sudo yum install ${array_deps_missing[*]}"
- fi
- fi
-
- if [ "${steamcmdfail}" ]; then
- if [ "${commandname}" == "INSTALL" ]; then
- fn_print_failure_nl "Missing dependencies required to run SteamCMD."
- fn_script_log_fatal "Missing dependencies required to run SteamCMD."
- core_exit.sh
- else
- fn_print_error_nl "Missing dependencies required to run SteamCMD."
- fn_script_log_error "Missing dependencies required to run SteamCMD."
- fi
- fi
-
- else
- if [ "${commandname}" == "INSTALL" ]; then
- fn_print_information_nl "Required dependencies already installed."
- fn_script_log_info "Required dependencies already installed."
- fi
- fi
-}
-
-fn_check_loop() {
- # Loop though required depenencies checking if they are installed.
- for deptocheck in ${array_deps_required[*]}; do
- fn_deps_detector
- done
-
- # user will be informed of any missing dependencies.
- fn_install_missing_deps
-}
-
-# Checks if dependency is installed or not.
-fn_deps_detector() {
- ## Check.
- # SteamCMD: Will be removed from required array if no appid is present or non-free repo is not available.
- # This will cause SteamCMD to be installed using tar.
- if [ "${deptocheck}" == "libsdl2-2.0-0:i386" ] && [ -z "${appid}" ]; then
- array_deps_required=("${array_deps_required[@]/libsdl2-2.0-0:i386/}")
- steamcmdstatus=1
- elif [ "${deptocheck}" == "steamcmd" ] && [ -z "${appid}" ]; then
- array_deps_required=("${array_deps_required[@]/steamcmd/}")
- steamcmdstatus=1
- elif [ "${deptocheck}" == "steamcmd" ] && [ "${distroid}" == "debian" ] && ! grep -qE "^deb .*non-free" /etc/apt/sources.list; then
- array_deps_required=("${array_deps_required[@]/steamcmd/}")
- steamcmdstatus=1
- # Java: Added for users using Oracle JRE to bypass check.
- elif [[ ${deptocheck} == "openjdk"* ]] || [[ ${deptocheck} == "java"* ]]; then
- # Is java already installed?
- if [ -n "${javaversion}" ]; then
- # Added for users using Oracle JRE to bypass check.
- depstatus=0
- deptocheck="${javaversion}"
- else
- depstatus=1
- fi
- # Mono: A Mono repo needs to be installed.
- elif [ "${deptocheck}" == "mono-complete" ]; then
- if [ -n "${monoversion}" ] && [ "${monoversion}" -ge "5" ]; then
- # Mono >= 5.0.0 already installed.
- depstatus=0
- monostatus=0
- else
- # Mono not installed or installed Mono < 5.0.0.
- depstatus=1
- monostatus=1
- fi
- elif [ "$(command -v dpkg-query 2> /dev/null)" ]; then
- dpkg-query -W -f='${Status}' "${deptocheck}" 2> /dev/null | grep -q -P '^install ok installed'
- depstatus=$?
- elif [ "$(command -v dnf 2> /dev/null)" ]; then
- dnf list installed "${deptocheck}" > /dev/null 2>&1
- depstatus=$?
- elif [ "$(command -v rpm 2> /dev/null)" ]; then
- rpm -q "${deptocheck}" > /dev/null 2>&1
- depstatus=$?
- fi
-
- # Outcome of Check.
- if [ "${steamcmdstatus}" == "1" ]; then
- # If SteamCMD is not available in repo dont check for it.
- unset steamcmdstatus
- elif [ "${depstatus}" == "0" ]; then
- # If dependency is found.
- missingdep=0
- if [ "${commandname}" == "INSTALL" ]; then
- echo -e "${green}${deptocheck}${default}"
- sleep 0.1
- fi
- elif [ "${depstatus}" != "0" ]; then
- # If dependency is not found.
- missingdep=1
- if [ "${commandname}" == "INSTALL" ]; then
- echo -e "${red}${deptocheck}${default}"
- sleep 0.1
- fi
- # If SteamCMD requirements are not met install will fail.
- if [ -n "${appid}" ]; then
- for steamcmddeptocheck in ${array_deps_required_steamcmd[*]}; do
- if [ "${deptocheck}" != "steamcmd" ] && [ "${deptocheck}" == "${steamcmddeptocheck}" ]; then
- steamcmdfail=1
- fi
- done
- fi
- fi
- unset depstatus
-
- # Missing dependencies are added to array_deps_missing.
- if [ "${missingdep}" == "1" ]; then
- array_deps_missing+=("${deptocheck}")
- fi
-}
-
-if [ "${commandname}" == "INSTALL" ]; then
- if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then
- echo -e ""
- echo -e "${lightyellow}Checking Dependencies as root${default}"
- echo -e "================================="
- fn_print_information_nl "Checking any missing dependencies for ${gamename} server only."
- fn_print_information_nl "This will NOT install a ${gamename} server."
- fn_sleep_time
- else
- echo -e ""
- echo -e "${lightyellow}Checking Dependencies${default}"
- echo -e "================================="
- fi
-fi
-
-# Will warn user if their distro is no longer supported by the vendor.
-if [ -n "${distrosupport}" ]; then
- if [ "${distrosupport}" == "unsupported" ]; then
- fn_print_warning_nl "${distroname} is no longer supported by the vendor. Upgrading is recommended."
- fn_script_log_warn "${distroname} is no longer supported by the vendor. Upgrading is recommended."
- fi
-fi
-
-info_distro.sh
-
-if [ ! -f "${tmpdir}/dependency-no-check.tmp" ] && [ ! -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then
- # Check that the distro dependency csv file exists.
- fn_check_file_github "lgsm/data" "${distroid}-${distroversioncsv}.csv"
- if [ -n "${checkflag}" ] && [ "${checkflag}" == "0" ]; then
- fn_fetch_file_github "lgsm/data" "${distroid}-${distroversioncsv}.csv" "lgsm/data" "chmodx" "norun" "noforce" "nohash"
- fi
-fi
-
-# If the file successfully downloaded run the dependency check.
-if [ -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then
- depall=$(awk -F, '$1=="all" {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv")
- depsteamcmd=$(awk -F, '$1=="steamcmd" {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv")
- depshortname=$(awk -v shortname="${shortname}" -F, '$1==shortname {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv")
-
- # Generate array of missing deps.
- array_deps_missing=()
-
- array_deps_required=("${depall} ${depsteamcmd} ${depshortname}")
- array_deps_required_steamcmd=("${depsteamcmd}")
- fn_deps_email
- # Unique sort dependency array.
- IFS=" " read -r -a array_deps_required <<< "$(echo "${array_deps_required[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')"
-
- fn_check_loop
-# Warn the user that dependency checking is unavailable for their distro.
-elif [ "${commandname}" == "INSTALL" ] || [ -n "${checkflag}" ] && [ "${checkflag}" != "0" ]; then
- fn_print_warning_nl "LinuxGSM dependency checking currently unavailable for ${distroname}."
- # Prevent future dependency checking if unavailable for the distro.
- echo "${version}" > "${tmpdir}/dependency-no-check.tmp"
-elif [ -f "${tmpdir}/dependency-no-check.tmp" ]; then
- # Allow LinuxGSM to try a dependency check if LinuxGSM has been recently updated.
- nocheckversion=$(cat "${tmpdir}/dependency-no-check.tmp")
- if [ "${version}" != "${nocheckversion}" ]; then
- rm -f "${tmpdir:?}/dependency-no-check.tmp"
- fi
-fi
diff --git a/lgsm/functions/check_executable.sh b/lgsm/functions/check_executable.sh
deleted file mode 100644
index d1b5c3efd..000000000
--- a/lgsm/functions/check_executable.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-# LinuxGSM check_executable.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Checks if server executable exists.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Check if executable exists
-execname=$(basename "${executable}")
-if [ ! -f "${executabledir}/${execname}" ]; then
- fn_print_fail_nl "executable was not found"
- echo -e "* ${executabledir}/${execname}"
- if [ -d "${lgsmlogdir}" ]; then
- fn_script_log_fatal "Executable was not found: ${executabledir}/${execname}"
- fi
- unset exitbypass
- core_exit.sh
-fi
diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh
deleted file mode 100644
index b1a959f5b..000000000
--- a/lgsm/functions/check_glibc.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-info_distro.sh
-
-if [ "${glibc}" == "null" ]; then
- # Glibc is not required.
- :
-elif [ -z "${glibc}" ]; then
- fn_print_dots "glibc"
- fn_print_error_nl "glibc requirement unknown"
- fn_script_log_error "glibc requirement unknown"
-elif [ "$(printf '%s\n'${glibc}'\n' "${glibcversion}" | sort -V | head -n 1)" != "${glibc}" ]; then
- fn_print_dots "glibc"
- fn_print_error_nl "glibc requirements not met"
- fn_script_log_error "glibc requirements not met"
- echo -en "\n"
- echo -e " * glibc required: ${glibc}"
- echo -e " * glibc installed: ${red}${glibcversion}${default}"
- echo -en "\n"
- fn_print_information_nl "distro upgrade is required"
- fn_script_log_info "distro upgrade is required"
-fi
diff --git a/lgsm/functions/check_ip.sh b/lgsm/functions/check_ip.sh
deleted file mode 100644
index 4b8eca5ec..000000000
--- a/lgsm/functions/check_ip.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-# 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".
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-info_game.sh
-
-ip_commands_array=("/bin/ip" "/usr/sbin/ip" "ip")
-for ip_command in "${ip_commands_array[@]}"; do
- if [ "$(command -v "${ip_command}" 2> /dev/null)" ]; then
- ipcommand="${ip_command}"
- break
- fi
-done
-
-ethtool_commands_array=("/bin/ethtool" "/usr/sbin/ethtool" "ethtool")
-for ethtool_command in "${ethtool_commands_array[@]}"; do
- if [ "$(command -v "${ethtool_command}" 2> /dev/null)" ]; then
- ethtoolcommand="${ethtool_command}"
- break
- fi
-done
-
-mapfile -t current_ips < <(${ipcommand} -o -4 addr | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | sort -u | grep -v 127.0.0)
-
-function fn_is_valid_ip() {
- local ip="${1}"
- # excluding 0.* ips also
- grep -qEe '^[1-9]+[0-9]*\.[0-9]+\.[0-9]+\.[0-9]+$' <<< "${ip}"
-}
-
-# Check if server has multiple IP addresses
-
-# If the IP variable has been set by user.
-if fn_is_valid_ip "${ip}"; then
- queryips=("${ip}")
- webadminip=("${ip}")
- telnetip=("${ip}")
-# If game config does have an IP set.
-elif fn_is_valid_ip "${configip}"; then
- queryips=("${configip}")
- ip="${configip}"
- webadminip=("${configip}")
- telnetip=("${configip}")
-# If there is only 1 server IP address.
-# Some IP details can automaticly use the one IP
-elif [ "${#current_ips[@]}" == "1" ]; then
- queryips=("127.0.0.1" "${current_ips[@]}")
- ip="0.0.0.0"
- webadminip=("${current_ips[@]}")
- telnetip=("${current_ips[@]}")
-# If no ip is set by the user and server has more than one IP.
-else
- queryips=("127.0.0.1" "${current_ips[@]}")
- ip="0.0.0.0"
- webadminip=("${ip}")
- telnetip=("${ip}")
-fi
diff --git a/lgsm/functions/check_last_update.sh b/lgsm/functions/check_last_update.sh
deleted file mode 100644
index ee86c0ba1..000000000
--- a/lgsm/functions/check_last_update.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if [ -f "${lockdir}/${selfname}-laststart.lock" ]; then
- laststart=$(cat "${lockdir}/${selfname}-laststart.lock")
-fi
-if [ -f "${lockdir}/lastupdate.lock" ]; then
- lastupdate=$(cat "${lockdir}/lastupdate.lock")
-fi
-
-check_status.sh
-if [ -f "${lockdir}/lastupdate.lock" ] && [ "${status}" != "0" ]; then
- if [ ! -f "${lockdir}/${selfname}-laststart.lock" ] || [ "${laststart}" -lt "${lastupdate}" ]; then
- fn_print_info "${selfname} has not been restarted since last update"
- fn_script_log_info "${selfname} has not been restarted since last update"
- command_restart.sh
- fn_firstcommand_reset
- fi
-fi
diff --git a/lgsm/functions/check_logs.sh b/lgsm/functions/check_logs.sh
deleted file mode 100644
index fa3df92d1..000000000
--- a/lgsm/functions/check_logs.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# LinuxGSM check_logs.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Checks if log files exist.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_check_logs() {
- fn_print_dots "Checking for log files"
- fn_print_info_nl "Checking for log files: Creating log files"
- checklogs=1
- install_logs.sh
-}
-
-# Create directories for the script and console logs.
-if [ ! -d "${lgsmlogdir}" ] || [ ! -d "${consolelogdir}" ]; then
- fn_check_logs
-fi
-
-# Create gamelogdir.
-# If variable exists gamelogdir exists and log/server does not.
-if [ "${gamelogdir}" ] && [ -d "${gamelogdir}" ] && [ ! -d "${logdir}/server" ]; then
- fn_check_logs
-fi
diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh
deleted file mode 100644
index 0094456ec..000000000
--- a/lgsm/functions/check_permissions.sh
+++ /dev/null
@@ -1,233 +0,0 @@
-#!/bin/bash
-# LinuxGSM check_permissions.sh
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Checks ownership & permissions of scripts, files and directories.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_check_ownership() {
- if [ -f "${rootdir}/${selfname}" ]; then
- if [ "$(find "${rootdir}/${selfname}" -not -user "$(whoami)" | wc -l)" -ne "0" ]; then
- selfownissue=1
- fi
- fi
- if [ -d "${functionsdir}" ]; then
- if [ "$(find "${functionsdir}" -not -user "$(whoami)" | wc -l)" -ne "0" ]; then
- funcownissue=1
- fi
- fi
- if [ -d "${serverfiles}" ]; then
- if [ "$(find "${serverfiles}" -not -user "$(whoami)" | wc -l)" -ne "0" ]; then
- filesownissue=1
- fi
- fi
- if [ "${selfownissue}" == "1" ] || [ "${funcownissue}" == "1" ] || [ "${filesownissue}" == "1" ]; then
- fn_print_fail_nl "Ownership issues found"
- fn_script_log_fatal "Ownership issues found"
- fn_print_information_nl "The current user ($(whoami)) does not have ownership of the following files:"
- fn_script_log_info "The current user ($(whoami)) does not have ownership of the following files:"
- {
- echo -e "User\tGroup\tFile\n"
- if [ "${selfownissue}" == "1" ]; then
- find "${rootdir}/${selfname}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n"
- fi
- if [ "${funcownissue}" == "1" ]; then
- find "${functionsdir}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n"
- fi
- if [ "${filesownissue}" == "1" ]; then
- find "${serverfiles}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n"
- fi
-
- } | column -s $'\t' -t | tee -a "${lgsmlog}"
- echo -e ""
- fn_print_information_nl "please see https://docs.linuxgsm.com/support/faq#fail-starting-game-server-permission-issues-found"
- fn_script_log "For more information, please see https://docs.linuxgsm.com/support/faq#fail-starting-game-server-permission-issues-found"
- if [ "${monitorflag}" == 1 ]; then
- alert="permissions"
- alert.sh
- fi
- core_exit.sh
- fi
-}
-
-fn_check_permissions() {
- if [ -d "${functionsdir}" ]; then
- if [ "$(find "${functionsdir}" -type f -not -executable | wc -l)" -ne "0" ]; then
- fn_print_fail_nl "Permissions issues found"
- fn_script_log_fatal "Permissions issues found"
- fn_print_information_nl "The following files are not executable:"
- fn_script_log_info "The following files are not executable:"
- {
- echo -e "File\n"
- find "${functionsdir}" -type f -not -executable -printf "%p\n"
- } | column -s $'\t' -t | tee -a "${lgsmlog}"
- if [ "${monitorflag}" == 1 ]; then
- alert="permissions"
- alert.sh
- fi
- core_exit.sh
- fi
- fi
-
- # Check rootdir permissions.
- if [ "${rootdir}" ]; then
- # Get permission numbers on directory under the form 775.
- rootdirperm=$(stat -c %a "${rootdir}")
- # Grab the first and second digit for user and group permission.
- userrootdirperm="${rootdirperm:0:1}"
- grouprootdirperm="${rootdirperm:1:1}"
- if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then
- fn_print_fail_nl "Permissions issues found"
- fn_script_log_fatal "Permissions issues found"
- fn_print_information_nl "The following directory does not have the correct permissions:"
- fn_script_log_info "The following directory does not have the correct permissions:"
- fn_script_log_info "${rootdir}"
- ls -l "${rootdir}"
- if [ "${monitorflag}" == 1 ]; then
- alert="permissions"
- alert.sh
- fi
- core_exit.sh
- fi
- fi
- # Check if executable is executable and attempt to fix it.
- # First get executable name.
- execname=$(basename "${executable}")
- if [ -f "${executabledir}/${execname}" ]; then
- # Get permission numbers on file under the form 775.
- execperm=$(stat -c %a "${executabledir}/${execname}")
- # Grab the first and second digit for user and group permission.
- userexecperm="${execperm:0:1}"
- groupexecperm="${execperm:1:1}"
- # Check for invalid user permission.
- if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then
- # If user permission is invalid, then check for invalid group permissions.
- if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then
- # If permission issues are found.
- fn_print_warn_nl "Permissions issue found"
- fn_script_log_warn "Permissions issue found"
- fn_print_information_nl "The following file is not executable:"
- ls -l "${executabledir}/${execname}"
- fn_script_log_info "The following file is not executable:"
- fn_script_log_info "${executabledir}/${execname}"
- fn_print_information_nl "Applying chmod u+x,g+x ${executabledir}/${execname}"
- fn_script_log_info "Applying chmod u+x,g+x ${execperm}"
- # Make the executable executable.
- chmod u+x,g+x "${executabledir}/${execname}"
- # Second check to see if it's been successfully applied.
- # Get permission numbers on file under the form 775.
- execperm=$(stat -c %a "${executabledir}/${execname}")
- # Grab the first and second digit for user and group permission.
- userexecperm="${execperm:0:1}"
- groupexecperm="${execperm:1:1}"
- if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then
- if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then
- # If errors are still found.
- fn_print_fail_nl "The following file could not be set executable:"
- ls -l "${executabledir}/${execname}"
- fn_script_log_warn "The following file could not be set executable:"
- fn_script_log_info "${executabledir}/${execname}"
- if [ "${monitorflag}" == "1" ]; then
- alert="permissions"
- alert.sh
- fi
- core_exit.sh
- fi
- fi
- fi
- fi
- fi
-}
-
-## The following fn_sys_perm_* functions checks for permission errors in /sys directory.
-
-# Checks for permission errors in /sys directory.
-fn_sys_perm_errors_detect() {
- # Reset test variables.
- sysdirpermerror="0"
- classdirpermerror="0"
- netdirpermerror="0"
- # Check permissions.
- # /sys, /sys/class and /sys/class/net should be readable & executable.
- if [ ! -r "/sys" ] || [ ! -x "/sys" ]; then
- sysdirpermerror="1"
- fi
- if [ ! -r "/sys/class" ] || [ ! -x "/sys/class" ]; then
- classdirpermerror="1"
- fi
- if [ ! -r "/sys/class/net" ] || [ ! -x "/sys/class/net" ]; then
- netdirpermerror="1"
- fi
-}
-
-# Display a message on how to fix the issue manually.
-fn_sys_perm_fix_manually_msg() {
- echo -e ""
- fn_print_information_nl "This error causes servers to fail starting properly"
- fn_script_log_info "This error causes servers to fail starting properly."
- echo -e " * To fix this issue, run the following command as root:"
- fn_script_log_info "To fix this issue, run the following command as root:"
- echo -e " chmod a+rx /sys /sys/class /sys/class/net"
- fn_script_log "chmod a+rx /sys /sys/class /sys/class/net"
- fn_sleep_time
- if [ "${monitorflag}" == 1 ]; then
- alert="permissions"
- alert.sh
- fi
- core_exit.sh
-}
-
-# Attempt to fix /sys related permission errors if sudo is available, exits otherwise.
-fn_sys_perm_errors_fix() {
- if sudo -n true > /dev/null 2>&1; then
- fn_print_dots "Automatically fixing /sys permissions"
- fn_script_log_info "Automatically fixing /sys permissions."
- if [ "${sysdirpermerror}" == "1" ]; then
- sudo chmod a+rx "/sys"
- fi
- if [ "${classdirpermerror}" == "1" ]; then
- sudo chmod a+rx "/sys/class"
- fi
- if [ "${netdirpermerror}" == "1" ]; then
- sudo chmod a+rx "/sys/class/net"
- fi
- # Run check again to see if it's fixed.
- fn_sys_perm_errors_detect
- if [ "${sysdirpermerror}" == "1" ] || [ "${classdirpermerror}" == "1" ] || [ "${netdirpermerror}" == "1" ]; then
- fn_print_error "Could not fix /sys permissions"
- fn_script_log_error "Could not fix /sys permissions."
- fn_sleep_time
- # Show the user how to fix.
- fn_sys_perm_fix_manually_msg
- else
- fn_print_ok_nl "Automatically fixing /sys permissions"
- fn_script_log_pass "Permissions in /sys fixed"
- fi
- else
- # Show the user how to fix.
- fn_sys_perm_fix_manually_msg
- fi
-}
-
-# Processes to the /sys related permission errors check & fix/info.
-fn_sys_perm_error_process() {
- fn_sys_perm_errors_detect
- # If any error was found.
- if [ "${sysdirpermerror}" == "1" ] || [ "${classdirpermerror}" == "1" ] || [ "${netdirpermerror}" == "1" ]; then
- fn_print_error_nl "Permission error(s) found in /sys"
- fn_script_log_error "Permission error(s) found in /sys"
- # Run the fix
- fn_sys_perm_errors_fix
- fi
-}
-
-## Run permisions checks when not root or docker.
-if [ "$(whoami)" != "root" ] && [ ! -f /.dockerenv ]; then
- fn_check_ownership
- fn_check_permissions
- if [ "${commandname}" == "START" ]; then
- fn_sys_perm_error_process
- fi
-fi
diff --git a/lgsm/functions/check_root.sh b/lgsm/functions/check_root.sh
deleted file mode 100644
index dab033148..000000000
--- a/lgsm/functions/check_root.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then
- if [ "${commandname}" != "INSTALL" ]; then
- fn_print_fail_nl "Do NOT run this script as root!"
- if [ -d "${lgsmlogdir}" ]; then
- fn_script_log_fatal "${selfname} attempted to run as root."
- else
- # Forces exit code is log does not yet exist.
- exitcode=1
- fi
- core_exit.sh
- fi
-fi
diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh
deleted file mode 100644
index a454b4eff..000000000
--- a/lgsm/functions/check_status.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-# LinuxGSM check_status.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Checks the process status of the server. Either online or offline.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-status=$(tmux -L "${sessionname}" list-sessions -F "#{session_name}" 2>/dev/null | grep -Ecx "^${sessionname}")
diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh
deleted file mode 100644
index d41e8669f..000000000
--- a/lgsm/functions/check_steamcmd.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-# LinuxGSM check_steamcmd.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Checks if SteamCMD is installed correctly.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# init steamcmd functions
-core_steamcmd.sh
-
-fn_check_steamcmd_clear
-fn_check_steamcmd
-if [ "${shortname}" == "ark" ]; then
- fn_check_steamcmd_ark
-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/check_system_dir.sh b/lgsm/functions/check_system_dir.sh
deleted file mode 100644
index 0a732d6d1..000000000
--- a/lgsm/functions/check_system_dir.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if [ "${commandname}" != "VALIDATE" ]; then
- checkdir="${serverfiles}"
-else
- checkdir="${systemdir}"
-fi
-
-if [ ! -d "${checkdir}" ]; then
- fn_print_fail_nl "Cannot access ${checkdir}: No such directory"
- if [ -d "${lgsmlogdir}" ]; then
- fn_script_log_fatal "Cannot access ${checkdir}: No such directory."
- fi
- core_exit.sh
-fi
diff --git a/lgsm/functions/check_system_requirements.sh b/lgsm/functions/check_system_requirements.sh
deleted file mode 100644
index bfe597135..000000000
--- a/lgsm/functions/check_system_requirements.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/bash
-# LinuxGSM check_system_requirements.sh
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Checks RAM requirements.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-info_distro.sh
-
-# RAM requirements in megabytes for each game or engine.
-
-if [ "${shortname}" == "ark" ]; then
- ramrequirementmb="4000"
- ramrequirementgb="4"
-elif [ "${shortname}" == "bt" ]; then
- ramrequirementmb="1000"
- ramrequirementgb="1"
-elif [ "${shortname}" == "mh" ]; then
- ramrequirementmb="4000"
- ramrequirementgb="4"
-elif [ "${shortname}" == "arma3" ]; then
- ramrequirementmb="1000"
- ramrequirementgb="1"
-elif [ "${shortname}" == "rust" ]; then
- ramrequirementmb="4000"
- ramrequirementgb="4"
-elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "wmc" ]; then
- ramrequirementmb="1000"
- ramrequirementgb="1"
-elif [ "${shortname}" == "pstbs" ]; then
- ramrequirementmb="2000"
- ramrequirementgb="2"
-elif [ "${shortname}" == "ns2" ] || [ "${shortname}" == "ns2c" ]; then
- ramrequirementmb="1000"
- ramrequirementgb="1"
-elif [ "${shortname}" == "st" ]; then
- ramrequirementmb="1000"
- ramrequirementgb="1"
-elif [ "${shortname}" == "pvr" ]; then
- ramrequirementmb="2000"
- ramrequirementgb="2"
-fi
-
-# If the game or engine has a minimum RAM Requirement, compare it to system's available RAM.
-if [ "${ramrequirementmb}" ]; then
- if [ "${physmemtotalmb}" -lt "${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."
- fn_sleep_time
- fi
-fi
diff --git a/lgsm/functions/check_tmuxception.sh b/lgsm/functions/check_tmuxception.sh
deleted file mode 100644
index 64705a3a8..000000000
--- a/lgsm/functions/check_tmuxception.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-# LinuxGSM check_config.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Checks if run from tmux or screen.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_check_is_in_tmux() {
- if [ "${TMUX}" ]; then
- fn_print_fail_nl "tmuxception error: Sorry Cobb you cannot start a tmux session inside of a tmux session."
- fn_script_log_fatal "Tmuxception error: Attempted to start a tmux session inside of a tmux session."
- fn_print_information_nl "LinuxGSM creates a tmux session when starting the server."
- echo -e "It is not possible to run a tmux session inside another tmux session"
- echo -e "https://docs.linuxgsm.com/requirements/tmux#tmuxception"
- core_exit.sh
- fi
-}
-
-fn_check_is_in_screen() {
- if [ "${STY}" ]; then
- fn_print_fail_nl "tmuxception error: Sorry Cobb you cannot start a tmux session inside of a screen session."
- fn_script_log_fatal "Tmuxception error: Attempted to start a tmux session inside of a screen session."
- fn_print_information_nl "LinuxGSM creates a tmux session when starting the server."
- echo -e "It is not possible to run a tmux session inside screen session"
- echo -e "https://docs.linuxgsm.com/requirements/tmux#tmuxception"
- core_exit.sh
- fi
-}
-
-fn_check_is_in_tmux
-fn_check_is_in_screen
diff --git a/lgsm/functions/check_version.sh b/lgsm/functions/check_version.sh
deleted file mode 100644
index 657e32b54..000000000
--- a/lgsm/functions/check_version.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# 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 ""
- fn_print_error_nl "LinuxGSM version mismatch"
- echo -e ""
- echo -e "* ${selfname}: ${version}"
- echo -e "* modules: ${modulesversion}"
- echo -e ""
- fn_sleep_time
- fn_script_log_error "LinuxGSM Version mismatch: ${selfname}: ${version}: modules: ${modulesversion}"
- command_update_linuxgsm.sh
- fn_firstcommand_reset
-fi
diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh
deleted file mode 100644
index d69c57a0f..000000000
--- a/lgsm/functions/command_backup.sh
+++ /dev/null
@@ -1,268 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_backup.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Creates a .tar.gz file in the backup directory.
-
-commandname="BACKUP"
-commandaction="Backing up"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-
-# Trap to remove lockfile on quit.
-fn_backup_trap() {
- echo -e ""
- echo -en "backup ${backupname}.tar.gz..."
- fn_print_canceled_eol_nl
- fn_script_log_info "Backup ${backupname}.tar.gz: CANCELED"
- rm -f "${backupdir:?}/${backupname}.tar.gz" | tee -a "${lgsmlog}"
- echo -en "backup ${backupname}.tar.gz..."
- fn_print_removed_eol_nl
- 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
-}
-
-# Check if a backup is pending or has been aborted using backup.lock.
-fn_backup_check_lockfile() {
- if [ -f "${lockdir}/backup.lock" ]; then
- fn_print_info_nl "Lock file found: Backup is currently running"
- fn_script_log_error "Lock file found: Backup is currently running: ${lockdir}/backup.lock"
- core_exit.sh
- fi
-}
-
-# Initialisation.
-fn_backup_init() {
- # Backup file name with selfname and current date.
- backupname="${selfname}-$(date '+%Y-%m-%d-%H%M%S')"
-
- info_distro.sh
- fn_print_dots "Backup starting"
- fn_script_log_info "Backup starting"
- fn_print_ok_nl "Backup starting"
- if [ ! -d "${backupdir}" ] || [ "${backupcount}" == "0" ]; then
- fn_print_info_nl "There are no previous backups"
- else
- if [ "${lastbackupdaysago}" == "0" ]; then
- daysago="less than 1 day ago"
- elif [ "${lastbackupdaysago}" == "1" ]; then
- daysago="1 day ago"
- else
- daysago="${lastbackupdaysago} days ago"
- fi
- echo -e "* Previous backup was created ${daysago}, total size ${lastbackupsize}"
- fi
-}
-
-# Check if server is started and whether to stop it.
-fn_backup_stop_server() {
- check_status.sh
- # Server is running but will not be stopped.
- if [ "${stoponbackup}" == "off" ]; then
- fn_print_warn_nl "${selfname} is currently running"
- echo -e "* Although unlikely; creating a backup while ${selfname} is running might corrupt the backup."
- fn_script_log_warn "${selfname} is currently running"
- fn_script_log_warn "Although unlikely; creating a backup while ${selfname} is running might corrupt the backup"
- # Server is running and will be stopped if stoponbackup=on or unset.
- # If server is started
- elif [ "${status}" != "0" ]; then
- fn_print_restart_warning
- startserver="1"
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- fi
-}
-
-# Create required folders.
-fn_backup_dir() {
- # Create backupdir if it doesn't exist.
- if [ ! -d "${backupdir}" ]; then
- mkdir -p "${backupdir}"
- fi
-}
-
-# Migrate Backups from old dir before refactor
-fn_backup_migrate_olddir() {
- # Check if old backup dir is there before the refactor and move the backups
- if [ -d "${rootdir}/backups" ]; then
- if [ "${rootdir}/backups" != "${backupdir}" ]; then
- fn_print_dots "Backup directory is being migrated"
- fn_script_log_info "Backup directory is being migrated"
- fn_script_log_info "${rootdir}/backups > ${backupdir}"
- mv "${rootdir}/backups/"* "${backupdir}" 2> /dev/null
- exitcode=$?
- if [ "${exitcode}" == 0 ]; then
- rmdir "${rootdir}/backups" 2> /dev/null
- exitcode=$?
- fi
- if [ "${exitcode}" != 0 ]; then
- fn_print_error_nl "Backup directory is being migrated"
- fn_script_log_error "Backup directory is being migrated"
- else
-
- fn_print_ok_nl "Backup directory is being migrated"
- fn_script_log_pass "Backup directory is being migrated"
- fi
- fi
- fi
-}
-
-fn_backup_create_lockfile() {
- # Create lockfile.
- date '+%s' > "${lockdir}/backup.lock"
- fn_script_log_info "Lockfile generated"
- fn_script_log_info "${lockdir}/backup.lock"
- # trap to remove lockfile on quit.
- trap fn_backup_trap INT
-}
-
-# Compressing files.
-fn_backup_compression() {
- # Tells how much will be compressed using rootdirduexbackup value from info_distro and prompt for continue.
- fn_print_info "A total of ${rootdirduexbackup} will be compressed."
- fn_script_log_info "A total of ${rootdirduexbackup} will be compressed: ${backupdir}/${backupname}.tar.gz"
- fn_print_dots "Backup (${rootdirduexbackup}) ${backupname}.tar.gz, in progress..."
- fn_script_log_info "backup ${rootdirduexbackup} ${backupname}.tar.gz, in progress"
- excludedir=$(fn_backup_relpath)
-
- # Check that excludedir is a valid path.
- if [ ! -d "${excludedir}" ]; then
- fn_print_fail_nl "Problem identifying the previous backup directory for exclusion."
- fn_script_log_fatal "Problem identifying the previous backup directory for exclusion"
- core_exit.sh
- fi
-
- tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}/backup.lock" ./.
- local exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol
- fn_script_log_fatal "Backup in progress: FAIL"
- echo -e "${extractcmd}" | tee -a "${lgsmlog}"
- fn_print_fail_nl "Starting backup"
- fn_script_log_fatal "Starting backup"
- else
- fn_print_ok_eol
- fn_print_ok_nl "Completed: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')"
- fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')"
- fi
- # Remove lock file
- rm -f "${lockdir:?}/backup.lock"
-}
-
-# Clear old backups according to maxbackups and maxbackupdays variables.
-fn_backup_prune() {
- # Clear if backup variables are set.
- if [ "${maxbackups}" ] && [ -n "${maxbackupdays}" ]; then
- # How many backups there are.
- info_distro.sh
- # How many backups exceed maxbackups.
- backupquotadiff=$((backupcount - maxbackups))
- # How many backups exceed maxbackupdays.
- backupsoudatedcount=$(find "${backupdir}"/ -type f -name "*.tar.gz" -mtime +"${maxbackupdays}" | wc -l)
- # If anything can be cleared.
- if [ "${backupquotadiff}" -gt "0" ] || [ "${backupsoudatedcount}" -gt "0" ]; then
- fn_print_dots "Pruning"
- fn_script_log_info "Backup pruning activated"
- fn_print_ok_nl "Pruning"
- # If maxbackups greater or equal to backupsoutdatedcount, then it is over maxbackupdays.
- if [ "${backupquotadiff}" -ge "${backupsoudatedcount}" ]; then
- # Display how many backups will be cleared.
- echo -e "* Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit"
- fn_script_log_info "Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit"
- fn_sleep_time
- fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)"
- fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)"
- # Clear backups over quota.
- find "${backupdir}"/ -type f -name "*.tar.gz" -printf '%T@ %p\n' | sort -rn | tail -${backupquotadiff} | cut -f2- -d" " | xargs rm
- fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)"
- fn_script_log_pass "Pruning: Cleared ${backupquotadiff} backup(s)"
- # If maxbackupdays is used over maxbackups.
- elif [ "${backupquotadiff}" -lt "${backupsoudatedcount}" ]; then
- # Display how many backups will be cleared.
- echo -e "* Pruning: ${backupsoudatedcount} backup(s) are older than ${maxbackupdays} days."
- fn_script_log_info "Pruning: ${backupsoudatedcount} backup(s) older than ${maxbackupdays} days."
- fn_sleep_time
- fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)."
- fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)"
- # Clear backups over quota
- find "${backupdir}"/ -type f -mtime +"${maxbackupdays}" -exec rm -f {} \;
- fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)"
- fn_script_log_pass "Pruning: Cleared ${backupquotadiff} backup(s)"
- fi
- fi
- fi
-}
-
-fn_backup_relpath() {
- # Written by CedarLUG as a "realpath --relative-to" alternative in bash.
- # Populate an array of tokens initialized from the rootdir components.
- declare -a rdirtoks=($(readlink -f "${rootdir}" | sed "s/\// /g"))
- if [ ${#rdirtoks[@]} -eq 0 ]; then
- fn_print_fail_nl "Problem assessing rootdir during relative path assessment"
- fn_script_log_fatal "Problem assessing rootdir during relative path assessment: ${rootdir}"
- core_exit.sh
- fi
-
- # Populate an array of tokens initialized from the backupdir components.
- declare -a bdirtoks=($(readlink -f "${backupdir}" | sed "s/\// /g"))
- if [ ${#bdirtoks[@]} -eq 0 ]; then
- fn_print_fail_nl "Problem assessing backupdir during relative path assessment"
- fn_script_log_fatal "Problem assessing backupdir during relative path assessment: ${rootdir}"
- core_exit.sh
- fi
-
- # Compare the leading entries of each array. These common elements will be clipped off.
- # for the relative path output.
- for ((base = 0; base < ${#rdirtoks[@]}; base++)); do
- [[ "${rdirtoks[$base]}" != "${bdirtoks[$base]}" ]] && break
- done
-
- # Next, climb out of the remaining rootdir location with updir references.
- for ((x = base; x < ${#rdirtoks[@]}; x++)); do
- echo -n "../"
- done
-
- # Climb down the remaining components of the backupdir location.
- for ((x = base; x < $((${#bdirtoks[@]} - 1)); x++)); do
- echo -n "${bdirtoks[$x]}/"
- done
-
- # In the event there were no directories left in the backupdir above to
- # traverse down, just add a newline. Otherwise at this point, there is
- # one remaining directory component in the backupdir to navigate.
- if (("$base" < "${#bdirtoks[@]}")); then
- echo -e "${bdirtoks[$((${#bdirtoks[@]} - 1))]}"
- else
- echo
- fi
-}
-
-# Start the server if it was stopped for the backup.
-fn_backup_start_server() {
- if [ -n "${startserver}" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- fi
-}
-
-# Run functions.
-fn_backup_check_lockfile
-fn_backup_init
-fn_backup_stop_server
-fn_backup_dir
-fn_backup_migrate_olddir
-fn_backup_create_lockfile
-fn_backup_compression
-fn_backup_prune
-fn_backup_start_server
-
-core_exit.sh
diff --git a/lgsm/functions/command_check_update.sh b/lgsm/functions/command_check_update.sh
deleted file mode 100644
index b2647e2a1..000000000
--- a/lgsm/functions/command_check_update.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_check_update.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# 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
-
-if [ "${shortname}" == "ts3" ]; then
- update_ts3.sh
-elif [ "${shortname}" == "mc" ]; then
- update_minecraft.sh
-elif [ "${shortname}" == "mcb" ]; then
- update_minecraft_bedrock.sh
-elif [ "${shortname}" == "pmc" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then
- update_papermc.sh
-elif [ "${shortname}" == "fctr" ]; then
- update_factorio.sh
-elif [ "${shortname}" == "mta" ]; then
- update_mta.sh
-elif [ "${shortname}" == "jk2" ]; then
- update_jediknight2.sh
-elif [ "${shortname}" == "vints" ]; then
- update_vintagestory.sh
-elif [ "${shortname}" == "ut99" ]; then
- update_ut99.sh
-else
- update_steamcmd.sh
-fi
-
-core_exit.sh
diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh
deleted file mode 100644
index 4f09776b8..000000000
--- a/lgsm/functions/command_console.sh
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="CONSOLE"
-commandaction="Access console"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-fn_print_header
-
-if [ "${consoleverbose}" == "yes" ]; then
- echo -e "* Verbose output: ${lightgreen}yes${default}"
-elif [ "${consoleverbose}" == "no" ]; then
- echo -e "* Verbose output: ${red}no${default}"
-else
- echo -e "* Verbose output: ${red}unknown${default}"
-fi
-
-if [ "${consoleinteract}" == "yes" ]; then
- echo -e "* Interactive output: ${lightgreen}yes${default}"
-elif [ "${consoleinteract}" == "no" ]; then
- echo -e "* Interactive output: ${red}no${default}"
-else
- echo -e "* Interactive output: ${red}unknown${default}"
-fi
-echo ""
-fn_print_information_nl "Press \"CTRL+b\" then \"d\" to exit console."
-fn_print_warning_nl "Do NOT press CTRL+c to exit."
-echo -e "* https://docs.linuxgsm.com/commands/console"
-echo -e ""
-if ! fn_prompt_yn "Continue?" Y; then
- exitcode=0
- core_exit.sh
-fi
-fn_print_dots "Accessing console"
-check_status.sh
-if [ "${status}" != "0" ]; then
- fn_print_ok_nl "Accessing console"
- fn_script_log_pass "Console accessed"
- tmux -L "${sessionname}" attach-session -t "${sessionname}"
- fn_print_ok_nl "Closing console"
- fn_script_log_pass "Console closed"
-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
- fn_firstcommand_reset
- fi
-fi
-
-core_exit.sh
diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh
deleted file mode 100644
index c6422be65..000000000
--- a/lgsm/functions/command_debug.sh
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="DEBUG"
-commandaction="Debuging"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-# Trap to remove lockfile on quit.
-fn_lockfile_trap() {
- # Remove lockfile.
- rm -f "${lockdir:?}/${selfname}.lock"
- # resets terminal. Servers can sometimes mess up the terminal on exit.
- reset
- fn_print_dots "Stopping debug"
- fn_print_ok_nl "Stopping debug"
- fn_script_log_pass "Stopping debug"
- # remove trap.
- trap - INT
- core_exit.sh
-}
-
-check.sh
-fix.sh
-info_distro.sh
-info_game.sh
-fn_print_header
-{
- echo -e "${lightblue}Distro:\t\t${default}${distroname}"
- echo -e "${lightblue}Architecture:\t\t${default}${arch}"
- echo -e "${lightblue}Kernel:\t\t${default}${kernel}"
- echo -e "${lightblue}Hostname:\t\t${default}${HOSTNAME}"
- echo -e "${lightblue}tmux:\t\t${default}${tmuxv}"
- echo -e "${lightblue}Avg Load:\t\t${default}${load}"
- echo -e "${lightblue}Free Memory:\t\t${default}${physmemfree}"
- echo -e "${lightblue}Free Disk:\t\t${default}${availspace}"
-} | column -s $'\t' -t
-
-# glibc required.
-if [ -n "${glibc}" ]; then
- if [ "${glibc}" == "null" ]; then
- # Glibc is not required.
- :
- elif [ -z "${glibc}" ]; then
- echo -e "${lightblue}glibc required:\t${red}UNKNOWN${default}"
- elif [ "$(printf '%s\n'${glibc}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibc}" ]; then
- echo -e "${lightblue}glibc required:\t${red}${glibc} ${default}(${red}distro glibc ${glibcversion} too old${default})"
- else
- echo -e "${lightblue}glibc required:\t${green}${glibc}${default}"
- fi
-fi
-
-# Server IP.
-echo -e "${lightblue}Game Server IP:\t${default}${ip}:${port}"
-
-# External server IP.
-if [ "${extip}" ]; then
- if [ "${ip}" != "${extip}" ]; then
- echo -e "${lightblue}Internet IP:\t${default}${extip}:${port}"
- fi
-fi
-
-# Server password.
-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"
-elif [ "${engine}" == "quake" ]; then
- echo -e "${executable} ${startparameters} -condebug"
-else
- echo -e "${preexecutable} ${executable} ${startparameters}"
-fi
-echo -e ""
-echo -e "Use debug for identifying server issues only!"
-echo -e "Press CTRL+c to drop out of debug mode."
-fn_print_warning_nl "If ${selfname} is already running it will be stopped."
-echo -e ""
-if ! fn_prompt_yn "Continue?" Y; then
- exitcode=0
- core_exit.sh
-fi
-
-fn_print_info_nl "Stopping any running servers"
-fn_script_log_info "Stopping any running servers"
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
-unset exitbypass
-fn_print_dots "Starting debug"
-fn_script_log_info "Starting debug"
-fn_print_ok_nl "Starting debug"
-
-# Create lockfile.
-date '+%s' > "${lockdir}/${selfname}.lock"
-echo "${version}" >> "${lockdir}/${selfname}.lock"
-echo "${port}" >> "${lockdir}/${selfname}.lock"
-fn_script_log_info "Lockfile generated"
-fn_script_log_info "${lockdir}/${selfname}.lock"
-
-if [ "${shortname}" == "av" ]; then
- cd "${systemdir}" || exit
-else
- cd "${executabledir}" || exit
-fi
-
-# Note: do not add double quotes to ${executable} ${startparameters}.
-if [ "${engine}" == "source" ] || [ "${engine}" == "goldsrc" ]; then
- eval "${executable} ${startparameters} -debug"
-elif [ "${engine}" == "quake" ]; then
- eval "${executable} ${startparameters} -condebug"
-else
- # shellcheck disable=SC2086
- eval "${preexecutable} ${executable} ${startparameters}"
-fi
-
-if [ $? -ne 0 ]; then
- fn_print_error_nl "Server has stopped: exit code: $?"
- fn_script_log_error "Server has stopped: exit code: $?"
- fn_print_error_nl "Press ENTER to exit debug mode"
- read -r
-else
- fn_print_ok_nl "Server has stopped"
- fn_script_log_pass "Server has stopped"
- fn_print_ok_nl "Press ENTER to exit debug mode"
- read -r
-fi
-
-fn_lockfile_trap
-
-fn_print_dots "Stopping debug"
-fn_print_ok_nl "Stopping debug"
-fn_script_log_info "Stopping debug"
-
-core_exit.sh
diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh
deleted file mode 100644
index 08d9f031b..000000000
--- a/lgsm/functions/command_details.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_details.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Displays server information.
-
-commandname="DETAILS"
-commandaction="Viewing details"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-# Run checks and gathers details to display.
-check.sh
-info_distro.sh
-info_game.sh
-info_messages.sh
-if [ "${querymode}" == "2" ] || [ "${querymode}" == "3" ]; then
- for queryip in "${queryips[@]}"; do
- query_gamedig.sh
- if [ "${querystatus}" == "0" ]; then
- break
- fi
- done
-fi
-fn_info_message_distro
-fn_info_message_server_resource
-fn_info_message_gameserver_resource
-fn_info_message_gameserver
-fn_info_message_script
-fn_info_message_backup
-# Some game servers do not have parms.
-if [ "${shortname}" != "jc2" ] && [ "${shortname}" != "dst" ] && [ "${shortname}" != "pz" ] && [ "${engine}" != "renderware" ]; then
- fn_info_message_commandlineparms
-fi
-fn_info_message_ports_edit
-fn_info_message_ports
-fn_info_message_select_engine
-fn_info_message_statusbottom
-
-core_exit.sh
diff --git a/lgsm/functions/command_dev_clear_functions.sh b/lgsm/functions/command_dev_clear_functions.sh
deleted file mode 100644
index 87c77515d..000000000
--- a/lgsm/functions/command_dev_clear_functions.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="DEV-CLEAR-MODULES"
-commandaction="Clearing modules"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-echo -e "================================="
-echo -e "Clear Functions"
-echo -e "================================="
-echo -e ""
-if fn_prompt_yn "Do you want to delete all functions?" Y; then
- rm -rfv "${functionsdir:?}/"*
- rm -rfv "${configdirdefault:?}/"*
- fn_script_log_info "Cleared modules directory"
- fn_script_log_info "Cleared default config directory"
-fi
-
-core_exit.sh
diff --git a/lgsm/functions/command_dev_debug.sh b/lgsm/functions/command_dev_debug.sh
deleted file mode 100644
index 19f16d58e..000000000
--- a/lgsm/functions/command_dev_debug.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="DEV-DEBUG"
-commandaction="Developer debug"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_reset
-
-if [ -f "${rootdir}/.dev-debug" ]; then
- rm -f "${rootdir:?}/.dev-debug"
- fn_print_ok_nl "Disabled dev-debug"
- fn_script_log_info "Disabled dev-debug"
-else
- date '+%s' > "${rootdir}/.dev-debug"
- fn_print_ok_nl "Enabled dev-debug"
- fn_script_log_info "Enabled dev-debug"
-fi
-
-core_exit.sh
diff --git a/lgsm/functions/command_dev_detect_deps.sh b/lgsm/functions/command_dev_detect_deps.sh
deleted file mode 100644
index d16b74418..000000000
--- a/lgsm/functions/command_dev_detect_deps.sh
+++ /dev/null
@@ -1,231 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="DEV-DETECT-DEPS"
-commandaction="Developer detect deps"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-echo -e "================================="
-echo -e "Dependencies Checker"
-echo -e "================================="
-echo -e "Checking directory: "
-echo -e "${serverfiles}"
-if [ "$(command -v eu-readelf 2> /dev/null)" ]; then
- readelf=eu-readelf
-elif [ "$(command -v readelf 2> /dev/null)" ]; then
- readelf=readelf
-else
- echo -e "readelf/eu-readelf not installed"
-fi
-files=$(find "${serverfiles}" | wc -l)
-find "${serverfiles}" -type f -print0 \
- | while IFS= read -r -d $'\0' line; do
- if [ "${readelf}" == "eu-readelf" ]; then
- ${readelf} -d "${line}" 2> /dev/null | grep NEEDED | awk '{ print $4 }' | sed 's/\[//g;s/\]//g' >> "${tmpdir}/.depdetect_readelf"
- else
- ${readelf} -d "${line}" 2> /dev/null | grep NEEDED | awk '{ print $5 }' | sed 's/\[//g;s/\]//g' >> "${tmpdir}/.depdetect_readelf"
- fi
- echo -n "${i} / ${files}" $'\r'
- ((i++))
- done
-
-sort "${tmpdir}/.depdetect_readelf" | uniq > "${tmpdir}/.depdetect_readelf_uniq"
-
-touch "${tmpdir}/.depdetect_centos_list"
-touch "${tmpdir}/.depdetect_ubuntu_list"
-touch "${tmpdir}/.depdetect_debian_list"
-
-while read -r lib; do
- echo -e "${lib}"
- libs_array=(libm.so.6 libc.so.6 libtcmalloc_minimal.so.4 libpthread.so.0 libdl.so.2 libnsl.so.1 libgcc_s.so.1 librt.so.1 ld-linux.so.2 libdbus-glib-1.so.2 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libnm-glib.so.4 libnm-util.so.2)
- for lib_file in "${libs_array[@]}"; do
- if [ "${lib}" == "${lib_file}" ]; then
- echo -e "glibc.i686" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "lib32gcc1" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "lib32gcc1" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- fi
- done
-
- libs_array=(libawt.so libjava.so libjli.so libjvm.so libnet.so libnio.so libverify.so)
- for lib_file in "${libs_array[@]}"; do
- if [ "${lib}" == "${lib_file}" ]; then
- echo -e "java-1.8.0-openjdk" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "default-jre" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "default-jre" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- fi
- done
-
- libs_array=(libtier0.so libtier0_srv.so libvstdlib_srv.so Core.so libvstdlib.so libtier0_s.so Editor.so Engine.so liblua.so libsteam_api.so ld-linux-x86-64.so.2 libPhysX3_x86.so libPhysX3Common_x86.so libPhysX3Cooking_x86.so)
- for lib_file in "${libs_array[@]}"; do
- # Known shared libs what dont requires dependencies.
- if [ "${lib}" == "${lib_file}" ]; then
- libdetected=1
- fi
- done
-
- if [ "${lib}" == "libstdc++.so.6" ]; then
- echo -e "libstdc++.i686" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libstdc++6:i386" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libstdc++6:i386" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libstdc++.so.5" ]; then
- echo -e "compat-libstdc++-33.i686" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libstdc++5:i386" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libstdc++5:i386" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libcurl-gnutls.so.4" ]; then
- echo -e "libcurl.i686" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libcurl4-gnutls-dev:i386" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libcurl4-gnutls-dev:i386" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libspeex.so.1" ] || [ "${lib}" == "libspeexdsp.so.1" ]; then
- echo -e "speex.i686" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "speex:i386" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "speex:i386" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "./libSDL-1.2.so.0" ] || [ "${lib}" == "libSDL-1.2.so.0" ]; then
- echo -e "SDL.i686" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libsdl1.2debian" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libsdl1.2debian" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libtbb.so.2" ]; then
- echo -e "tbb.i686" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libtbb2" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libtbb2" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
-
- elif [ "${lib}" == "libXrandr.so.2" ]; then
- echo -e "libXrandr" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libxrandr2" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libxrandr2" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libXext.so.6" ]; then
- echo -e "libXext" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libxext6" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libxext6" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libXtst.so.6" ]; then
- echo -e "libXtst" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libxtst6" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libxtst6" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libpulse.so.0" ]; then
- echo -e "pulseaudio-libs" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libpulse0" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libpulse0" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libopenal.so.1" ]; then
- echo -e "" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libopenal1" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libopenal1" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libgconf-2.so.4" ]; then
- echo -e "GConf2" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libgconf2-4" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libgconf2-4" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libz.so.1" ]; then
- echo -e "zlib" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "zlib1g" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "zlib1g" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libatk-1.0.so.0" ]; then
- echo -e "atk" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libatk1.0-0" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libatk1.0-0" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libcairo.so.2" ]; then
- echo -e "cairo" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libcairo2" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libcairo2" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libfontconfig.so.1" ]; then
- echo -e "fontconfig" >> "${tmpdir}/.depdetect_centos_list"
- echo -e "libfontconfig1" >> "${tmpdir}/.depdetect_ubuntu_list"
- echo -e "libfontconfig1" >> "${tmpdir}/.depdetect_debian_list"
- libdetected=1
- elif [ "${lib}" == "libfreetype.so.6" ]; then
- echo -e "freetype" >> "${tmpdir}/.depdetect_centos_list"
- 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
- unknownlib=1
- echo -e "${lib}" >> "${tmpdir}/.depdetect_unknown"
- fi
- unset libdetected
-done < "${tmpdir}/.depdetect_readelf_uniq"
-
-sort "${tmpdir}/.depdetect_centos_list" | uniq >> "${tmpdir}/.depdetect_centos_list_uniq"
-sort "${tmpdir}/.depdetect_ubuntu_list" | uniq >> "${tmpdir}/.depdetect_ubuntu_list_uniq"
-sort "${tmpdir}/.depdetect_debian_list" | uniq >> "${tmpdir}/.depdetect_debian_list_uniq"
-if [ "${unknownlib}" == "1" ]; then
- sort "${tmpdir}/.depdetect_unknown" | uniq >> "${tmpdir}/.depdetect_unknown_uniq"
-fi
-
-awk -vORS='' '{ print $1,$2 }' "${tmpdir}/.depdetect_centos_list_uniq" > "${tmpdir}/.depdetect_centos_line"
-awk -vORS='' '{ print $1,$2 }' "${tmpdir}/.depdetect_ubuntu_list_uniq" > "${tmpdir}/.depdetect_ubuntu_line"
-awk -vORS='' '{ print $1,$2 }' "${tmpdir}/.depdetect_debian_list_uniq" > "${tmpdir}/.depdetect_debian_line"
-echo -e ""
-echo -e ""
-echo -e "Required Dependencies"
-echo -e "================================="
-echo -e "${executable}"
-echo -e ""
-echo -e "CentOS"
-echo -e "================================="
-cat "${tmpdir}/.depdetect_centos_line"
-echo -e ""
-echo -e ""
-echo -e "Ubuntu"
-echo -e "================================="
-cat "${tmpdir}/.depdetect_ubuntu_line"
-echo -e ""
-echo -e ""
-echo -e "Debian"
-echo -e "================================="
-cat "${tmpdir}/.depdetect_debian_line"
-echo -e ""
-if [ "${unknownlib}" == "1" ]; then
- echo -e ""
- echo -e "Unknown shared Library"
- echo -e "================================="
- cat "${tmpdir}/.depdetect_unknown"
-fi
-echo -e ""
-echo -e "Required Librarys"
-echo -e "================================="
-sort "${tmpdir}/.depdetect_readelf" | uniq
-echo -en "\n"
-rm -f "${tmpdir:?}/.depdetect_centos_line"
-rm -f "${tmpdir:?}/.depdetect_centos_list"
-rm -f "${tmpdir:?}/.depdetect_centos_list_uniq"
-
-rm -f "${tmpdir:?}/.depdetect_debian_line"
-rm -f "${tmpdir:?}/.depdetect_debian_list"
-rm -f "${tmpdir:?}/.depdetect_debian_list_uniq"
-
-rm -f "${tmpdir:?}/.depdetect_ubuntu_line"
-rm -f "${tmpdir:?}/.depdetect_ubuntu_list"
-rm -f "${tmpdir:?}/.depdetect_ubuntu_list_uniq"
-
-rm -f "${tmpdir:?}/.depdetect_readelf"
-rm -f "${tmpdir:?}/.depdetect_readelf_uniq"
-rm -f "${tmpdir:?}/.depdetect_unknown"
-rm -f "${tmpdir:?}/.depdetect_unknown_uniq"
-
-core_exit.sh
diff --git a/lgsm/functions/command_dev_detect_glibc.sh b/lgsm/functions/command_dev_detect_glibc.sh
deleted file mode 100644
index 73280e55d..000000000
--- a/lgsm/functions/command_dev_detect_glibc.sh
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="DEV-DETECT-GLIBC"
-commandaction="Developer detect glibc"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-echo -e "================================="
-echo -e "glibc Requirements Checker"
-echo -e "================================="
-
-if [ ! "$(command -v objdump)" ]; then
- fn_print_failure_nl "objdump is missing"
- fn_script_log_fatal "objdump is missing"
- core_exit.sh
-fi
-
-if [ -z "${serverfiles}" ]; then
- dir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
-fi
-
-if [ -d "${serverfiles}" ]; then
- echo -e "Checking directory: "
- echo -e "${serverfiles}"
-elif [ -f "${serverfiles}" ]; then
- echo -e "Checking file: "
- echo -e "${serverfiles}"
-fi
-echo -e ""
-
-glibc_check_dir_array=(steamcmddir serverfiles)
-for glibc_check_var in "${glibc_check_dir_array[@]}"; do
- if [ "${glibc_check_var}" == "serverfiles" ]; then
- glibc_check_dir="${serverfiles}"
- glibc_check_name="${gamename}"
- elif [ "${glibc_check_var}" == "steamcmddir" ]; then
- glibc_check_dir="${steamcmddir}"
- glibc_check_name="SteamCMD"
- fi
-
- if [ -d "${glibc_check_dir}" ]; then
- glibc_check_files=$(find "${glibc_check_dir}" | wc -l)
- find "${glibc_check_dir}" -type f -print0 \
- | while IFS= read -r -d $'\0' line; do
- glibcversion=$(objdump -T "${line}" 2> /dev/null | grep -oP "GLIBC[^ ]+" | grep -v GLIBCXX | sort | uniq | sort -r --version-sort | head -n 1)
- if [ "${glibcversion}" ]; then
- echo -e "${glibcversion}: ${line}" >> "${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp"
- fi
- objdump -T "${line}" 2> /dev/null | grep -oP "GLIBC[^ ]+" >> "${tmpdir}/detect_glibc_${glibc_check_var}.tmp"
- echo -n "${i} / ${glibc_check_files}" $'\r'
- ((i++))
- done
- echo -e ""
- echo -e ""
- echo -e "${glibc_check_name} glibc Requirements"
- echo -e "================================="
- if [ -f "${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp" ]; then
- echo -e "Required glibc"
- cat "${tmpdir}/detect_glibc_${glibc_check_var}.tmp" | sort | uniq | sort -r --version-sort | head -1 | tee -a "${tmpdir}/detect_glibc_highest.tmp"
- echo -e ""
- echo -e "Files requiring GLIBC"
- echo -e "Highest verion required: filename"
- cat "${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp"
- echo -e ""
- echo -e "All required GLIBC versions"
- cat "${tmpdir}/detect_glibc_${glibc_check_var}.tmp" | sort | uniq | sort -r --version-sort
- rm -f "${tmpdir:?}/detect_glibc_${glibc_check_var}.tmp"
- rm -f "${tmpdir:?}/detect_glibc_files_${glibc_check_var}.tmp"
- else
- fn_print_information_nl "glibc is not required"
- fi
- else
- fn_print_information_nl "${glibc_check_name} is not installed"
- fi
-done
-echo -e ""
-echo -e "Final glibc Requirement"
-echo -e "================================="
-if [ -f "${tmpdir}/detect_glibc_highest.tmp" ]; then
- cat "${tmpdir}/detect_glibc_highest.tmp" | sort | uniq | sort -r --version-sort | head -1
- rm -f "${tmpdir:?}/detect_glibc_highest.tmp"
-else
- fn_print_information_nl "glibc is not required"
-fi
-
-core_exit.sh
diff --git a/lgsm/functions/command_dev_detect_ldd.sh b/lgsm/functions/command_dev_detect_ldd.sh
deleted file mode 100644
index 43630d4e9..000000000
--- a/lgsm/functions/command_dev_detect_ldd.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="DEV-DETECT-LDD"
-commandaction="Developer detect ldd"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-echo -e "================================="
-echo -e "Shared Object dependencies Checker"
-echo -e "================================="
-
-if [ -z "${serverfiles}" ]; then
- dir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
-fi
-
-if [ -d "${serverfiles}" ]; then
- echo -e "Checking directory: "
- echo -e "${serverfiles}"
-elif [ -f "${serverfiles}" ]; then
- echo -e "Checking file: "
- echo -e "${serverfiles}"
-fi
-echo -e ""
-touch "${tmpdir}/detect_ldd.tmp"
-touch "${tmpdir}/detect_ldd_not_found.tmp"
-
-files=$(find "${serverfiles}" | wc -l)
-find "${serverfiles}" -type f -print0 \
- | while IFS= read -r -d $'\0' line; do
- if ldd "${line}" 2> /dev/null | grep -v "not a dynamic executable"; then
- echo -e "${line}" >> "${tmpdir}/detect_ldd.tmp"
- ldd "${line}" 2> /dev/null | grep -v "not a dynamic executable" >> "${tmpdir}/detect_ldd.tmp"
- if ldd "${line}" 2> /dev/null | grep -v "not a dynamic executable" | grep "not found"; then
- echo -e "${line}" >> "${tmpdir}/detect_ldd_not_found.tmp"
- ldd "${line}" 2> /dev/null | grep -v "not a dynamic executable" | grep "not found" >> "${tmpdir}/detect_ldd_not_found.tmp"
- fi
- fi
- echo -n "$i / $files" $'\r'
- ((i++))
- done
-echo -e ""
-echo -e ""
-echo -e "All"
-echo -e "================================="
-cat "${tmpdir}/detect_ldd.tmp"
-
-echo -e ""
-echo -e "Not Found"
-echo -e "================================="
-cat "${tmpdir}/detect_ldd_not_found.tmp"
-
-rm -f "${tmpdir:?}/detect_ldd.tmp"
-rm -f "${tmpdir:?}/detect_ldd_not_found.tmp"
-
-core_exit.sh
diff --git a/lgsm/functions/command_dev_query_raw.sh b/lgsm/functions/command_dev_query_raw.sh
deleted file mode 100644
index 26884b259..000000000
--- a/lgsm/functions/command_dev_query_raw.sh
+++ /dev/null
@@ -1,280 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="DEV-QUERY-RAW"
-commandaction="Developer query raw"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-info_game.sh
-info_distro.sh
-info_messages.sh
-
-echo -e ""
-echo -e "${lightgreen}Query IP Addresses${default}"
-echo -e "=================================================================="
-echo -e ""
-for queryip in "${queryips[@]}"; do
- echo -e "${queryip}"
-done
-echo -e ""
-echo -e "${lightgreen}Game Server Ports${default}"
-echo -e "=================================================================="
-{
- echo -e "${lightblue}Port Name \tPort Number \tStatus \tTCP \tUDP${default}"
- if [ -v port ]; then
- echo -e "Game: \t${port} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Game:"
- fi
- if [ "${shortname}" == "rw" ]; then
- if [ -v port2 ]; then
- echo -e "Game+1: \t${port2} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port2} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port2} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Game+1:"
- fi
-
- if [ -v port3 ]; then
- echo -e "Game+2: \t${port3} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port3} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port3} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Game+2:"
- fi
-
- if [ -v port4 ]; then
- echo -e "Game+3: \t${port4} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port4} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port4} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Game+3:"
- fi
- fi
-
- if [ -v port401 ]; then
- echo -e "Game+400: \t${port401} \t$(ss -tupl | grep -c ${port401}) \t$(ss -tupl | grep ${port401} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port401} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Game+400:"
- fi
-
- if [ -v portipv6 ]; then
- echo -e "Game ipv6: \t${portipv6} \t$(ss -tupl | grep -c ${portipv6}) \t$(ss -tupl | grep ${portipv6} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${portipv6} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Game ipv6:"
- fi
-
- if [ -v queryport ]; then
- echo -e "Query: \t${queryport} \t$(ss -tupl | grep -c ${queryport}) \t$(ss -tupl | grep ${queryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${queryport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Query:"
- fi
-
- if [ -v httpport ]; then
- echo -e "HTTP: \t${httpport} \t$(ss -tupl | grep -c ${httpport}) \t$(ss -tupl | grep ${httpport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${httpport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "HTTP:"
- fi
-
- if [ -v httpqueryport ]; then
- echo -e "HTTP Query: \t${httpqueryport} \t$(ss -tupl | grep -c ${httpqueryport}) \t$(ss -tupl | grep ${httpqueryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${httpqueryport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "HTTP Query:"
- fi
-
- if [ -v webadminport ]; then
- echo -e "Web Admin: \t${webadminport} \t$(ss -tupl | grep -c ${webadminport}) \t$(ss -tupl | grep ${webadminport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${webadminport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Web Admin:"
- fi
-
- if [ -v clientport ]; then
- echo -e "Client: \t${clientport} \t$(ss -tupl | grep -c ${clientport}) \t$(ss -tupl | grep ${clientport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${clientport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Client:"
- fi
-
- if [ -v rconport ]; then
- echo -e "RCON: \t${rconport} \t$(ss -tupl | grep -c ${rconport}) \t$(ss -tupl | grep ${rconport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${rconport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "RCON:"
- fi
-
- if [ -v rawport ]; then
- echo -e "RAW UDP Socket: \t${rawport} \t$(ss -tupl | grep -c ${rawport}) \t$(ss -tupl | grep ${rawport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${rawport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "RAW UDP Socket:"
- fi
-
- if [ -v masterport ]; then
- echo -e "Game: Master: \t${masterport} \t$(ss -tupl | grep -c ${masterport}) \t$(ss -tupl | grep ${masterport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${masterport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Game: Master:"
- fi
-
- if [ -v steamport ]; then
- echo -e "Steam: \t${steamport} \t$(ss -tupl | grep -c ${steamport}) \t$(ss -tupl | grep ${steamport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Steam:"
- fi
-
- if [ -v steamauthport ]; then
- echo -e "Steam: Auth: \t${steamauthport} \t$(ss -tupl | grep -c ${steamauthport}) \t$(ss -tupl | grep ${steamauthport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamauthport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Steam: Auth:"
- fi
-
- if [ -v steammasterport ]; then
- echo -e "Steam: Master: \t${steammasterport} \t$(ss -tupl | grep -c ${steammasterport}) \t$(ss -tupl | grep ${steammasterport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steammasterport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Steam: Master:"
- fi
-
- if [ -v steamqueryport ]; then
- echo -e "Steam: Query: \t${steamqueryport} \t$(ss -tupl | grep -c ${steamqueryport}) \t$(ss -tupl | grep ${steamqueryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamqueryport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Steam: Query:"
- fi
- if [ -v beaconport ]; then
- echo -e "Beacon: \t${beaconport} \t$(ss -tupl | grep -c ${beaconport}) \t$(ss -tupl | grep ${beaconport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${beaconport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Beacon:"
- fi
-
- if [ -v appport ]; then
- echo -e "App: \t${appport} \t$(ss -tupl | grep -c ${appport}) \t$(ss -tupl | grep ${appport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${appport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "App:"
- fi
-
- if [ -v telnetport ]; then
- echo -e "Telnet: \t${telnetport} \t$(ss -tupl | grep -c ${telnetport}) \t$(ss -tupl | grep ${telnetport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${telnetport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Telnet:"
- fi
-
- if [ -v sourcetvport ]; then
- echo -e "SourceTV: \t${sourcetvport} \t$(ss -tupl | grep -c ${sourcetvport}) \t$(ss -tupl | grep ${sourcetvport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${sourcetvport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "SourceTV:"
- fi
-
- if [ -v fileport ]; then
- echo -e "File: \t${fileport} \t$(ss -tupl | grep -c ${fileport}) \t$(ss -tupl | grep ${fileport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${fileport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "File:"
- fi
-
- if [ -v udplinkport ]; then
- echo -e "UDP Link: \t${udplinkport} \t$(ss -tupl | grep -c ${udplinkport}) \t$(ss -tupl | grep ${udplinkport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${udplinkport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "UDP Link:"
- fi
-
- if [ -v voiceport ]; then
- echo -e "Voice: \t${voiceport} \t$(ss -tupl | grep -c ${voiceport}) \t$(ss -tupl | grep ${voiceport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${voiceport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Voice:"
- fi
-
- if [ -v voiceunusedport ]; then
- echo -e "Voice (Unused): \t${voiceunusedport} \t$(ss -tupl | grep -c ${voiceunusedport}) \t$(ss -tupl | grep ${voiceunusedport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${voiceunusedport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Voice (Unused):"
- fi
-
- if [ -v battleeyeport ]; then
- echo -e "BattleEye: \t${battleeyeport} \t$(ss -tupl | grep -c ${battleeyeport}) \t$(ss -tupl | grep ${battleeyeport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${battleeyeport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "BattleEye:"
- fi
-
- if [ -v statsport ]; then
- echo -e "Stats: \t${battleeyeport} \t$(ss -tupl | grep -c ${statsport}) \t$(ss -tupl | grep ${statsport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${statsport} | grep udp | awk '{ print $2 }')"
- else
- echo -e "Stats:"
- fi
-
-} | column -s $'\t' -t
-echo -e ""
-echo -e "${lightgreen}SS Output${default}"
-echo -e "================================="
-fn_info_message_ports
-echo -e ""
-echo -e "${lightgreen}Query Port - Raw Output${default}"
-echo -e "=================================================================="
-echo -e ""
-echo -e "PORT: ${port}"
-echo -e "QUERY PORT: ${queryport}"
-echo -e ""
-echo -e "${lightgreen}Gamedig Raw Output${default}"
-echo -e "================================="
-echo -e ""
-if [ ! "$(command -v gamedig 2> /dev/null)" ]; then
- fn_print_failure_nl "gamedig not installed"
-fi
-if [ ! "$(command -v jq 2> /dev/null)" ]; then
- fn_print_failure_nl "jq not installed"
-fi
-for queryip in "${queryips[@]}"; do
- query_gamedig.sh
- echo -e "${gamedigcmd}"
- echo""
- echo "${gamedigraw}" | jq
-done
-echo -e ""
-echo -e "${lightgreen}gsquery Raw Output${default}"
-echo -e "================================="
-echo -e ""
-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" "nohash"
- fi
- "${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}"
-done
-echo -e ""
-echo -e "${lightgreen}TCP Raw Output${default}"
-echo -e "================================="
-echo -e ""
-for queryip in "${queryips[@]}"; do
- echo -e "bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${queryport}''"
- echo -e ""
- timeout 3 bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${queryport}''
- querystatus="$?"
- echo -e ""
- if [ "${querystatus}" == "0" ]; then
- echo -e "TCP query PASS"
- else
- echo -e "TCP query FAIL"
- fi
-done
-echo -e ""
-echo -e "${lightgreen}Game Port - Raw Output${default}"
-echo -e "=================================================================="
-echo -e ""
-echo -e "${lightgreen}TCP Raw Output${default}"
-echo -e "================================="
-echo -e ""
-for queryip in "${queryips[@]}"; do
- echo -e "bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${port}''"
- echo -e ""
- timeout 3 bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${port}''
- querystatus="$?"
- echo -e ""
- if [ "${querystatus}" == "0" ]; then
- echo -e "TCP query PASS"
- else
- echo -e "TCP query FAIL"
- fi
-done
-echo -e ""
-echo -e "${lightgreen}Steam Master Server Response${default}"
-echo -e "=================================================================="
-echo -e ""
-echo -e "Response: ${displaymasterserver}"
-echo -e ""
-
-exitcode=0
-core_exit.sh
diff --git a/lgsm/functions/command_donate.sh b/lgsm/functions/command_donate.sh
deleted file mode 100644
index f00a4d702..000000000
--- a/lgsm/functions/command_donate.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_donate.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Shows ways to donate.
-
-commandname="DONATE"
-commandaction="Donate"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-fn_print_ascii_logo
-echo -e "${lightyellow}Support LinuxGSM${default}"
-echo -e "================================="
-echo -e ""
-echo -e "Been using LinuxGSM?"
-echo -e "Consider donating to support development."
-echo -e ""
-echo -e "* ${lightblue}Patreon:${default} https://linuxgsm.com/patreon"
-echo -e "* ${lightblue}GitHub:${default} https://github.com/sponsors/dgibbs64"
-echo -e "* ${lightblue}PayPal:${default} https://linuxgsm.com/paypal"
-echo -e ""
-echo -e "LinuxGSM est. 2012"
-
-core_exit.sh
diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh
deleted file mode 100644
index 78abd650a..000000000
--- a/lgsm/functions/command_fastdl.sh
+++ /dev/null
@@ -1,442 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_fastdl.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Creates a FastDL directory.
-
-commandname="FASTDL"
-commandaction="Fastdl"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-
-# Directories.
-if [ -z "${webdir}" ]; then
- webdir="${rootdir}/public_html"
-fi
-fastdldir="${webdir}/fastdl"
-addonsdir="${systemdir}/addons"
-# Server lua autorun dir, used to autorun lua on client connect to the server.
-luasvautorundir="${systemdir}/lua/autorun/server"
-luafastdlfile="lgsm_cl_force_fastdl.lua"
-luafastdlfullpath="${luasvautorundir}/${luafastdlfile}"
-
-# Check if bzip2 is installed.
-if [ ! "$(command -v bzip2 2> /dev/null)" ]; then
- fn_print_fail "bzip2 is not installed"
- fn_script_log_fatal "bzip2 is not installed"
- core_exit.sh
-fi
-
-# Header
-fn_print_header
-echo -e "More info: https://docs.linuxgsm.com/commands/fastdl"
-echo -e ""
-
-# Prompts user for FastDL creation settings.
-echo -e "${commandaction} setup"
-echo -e "================================="
-
-# Prompt for clearing old files if directory was already here.
-if [ -d "${fastdldir}" ]; then
- fn_print_warning_nl "FastDL directory already exists."
- echo -e "${fastdldir}"
- echo -e ""
- if fn_prompt_yn "Overwrite existing directory?" Y; then
- fn_script_log_info "Overwrite existing directory: YES"
- else
- core_exit.sh
- fi
-fi
-
-# Garry's Mod Specific.
-if [ "${shortname}" == "gmod" ]; then
- # Prompt for download enforcer, which is using a .lua addfile resource generator.
- if fn_prompt_yn "Force clients to download files?" Y; then
- luaresource="on"
- fn_script_log_info "Force clients to download files: YES"
- else
- luaresource="off"
- fn_script_log_info "Force clients to download filesr: NO"
- fi
-fi
-
-# Clears any fastdl directory content.
-fn_clear_old_fastdl() {
- # Clearing old FastDL.
- if [ -d "${fastdldir}" ]; then
- echo -en "clearing existing FastDL directory ${fastdldir}..."
- rm -rf "${fastdldir:?}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Clearing existing FastDL directory ${fastdldir}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Clearing existing FastDL directory ${fastdldir}"
- fi
- fi
-}
-
-fn_fastdl_dirs() {
- # Check and create directories.
- if [ ! -d "${webdir}" ]; then
- echo -en "creating web directory ${webdir}..."
- mkdir -p "${webdir}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Creating web directory ${webdir}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Creating web directory ${webdir}"
- fi
- fi
- if [ ! -d "${fastdldir}" ]; then
- echo -en "creating fastdl directory ${fastdldir}..."
- mkdir -p "${fastdldir}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Creating fastdl directory ${fastdldir}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Creating fastdl directory ${fastdldir}"
- fi
- fi
-}
-
-# Using this gist https://gist.github.com/agunnerson-ibm/efca449565a3e7356906
-fn_human_readable_file_size() {
- local abbrevs=(
- $((1 << 60)):ZB
- $((1 << 50)):EB
- $((1 << 40)):TB
- $((1 << 30)):GB
- $((1 << 20)):MB
- $((1 << 10)):KB
- $((1)):bytes
- )
-
- local bytes="${1}"
- local precision="${2}"
-
- if [[ "${bytes}" == "1" ]]; then
- echo -e "1 byte"
- else
- for item in "${abbrevs[@]}"; do
- local factor="${item%:*}"
- local abbrev="${item#*:}"
- if [[ "${bytes}" -ge "${factor}" ]]; then
- size=$(bc -l <<< "${bytes} / ${factor}")
- printf "%.*f %s\n" "${precision}" "${size}" "${abbrev}"
- break
- fi
- done
- fi
-}
-
-# Provides info about the fastdl directory content and prompts for confirmation.
-fn_fastdl_preview() {
- # Remove any file list.
- if [ -f "${tmpdir}/fastdl_files_to_compress.txt" ]; then
- rm -f "${tmpdir:?}/fastdl_files_to_compress.txt"
- fi
- echo -e "analysing required files"
- fn_script_log_info "Analysing required files"
- # Garry's Mod
- if [ "${shortname}" == "gmod" ]; then
- cd "${systemdir}" || exit
- allowed_extentions_array=("*.ain" "*.bsp" "*.mdl" "*.mp3" "*.ogg" "*.otf" "*.pcf" "*.phy" "*.png" "*.svg" "*.vtf" "*.vmt" "*.vtx" "*.vvd" "*.ttf" "*.wav")
- for allowed_extention in "${allowed_extentions_array[@]}"; do
- fileswc=0
- tput sc
- while read -r ext; do
- ((fileswc++))
- tput rc
- tput el
- echo -e "gathering ${allowed_extention} : ${fileswc}..."
- echo -e "${ext}" >> "${tmpdir}/fastdl_files_to_compress.txt"
- done < <(find . -type f -iname "${allowed_extention}")
- if [ ${fileswc} != 0 ]; then
- fn_print_ok_eol_nl
- else
- fn_print_info_eol_nl
- fi
- done
- # Source engine
- else
- fastdl_directories_array=("maps" "materials" "models" "particles" "sound" "resources")
- for directory in "${fastdl_directories_array[@]}"; do
- if [ -d "${systemdir}/${directory}" ]; then
- if [ "${directory}" == "maps" ]; then
- local allowed_extentions_array=("*.bsp" "*.ain" "*.nav" "*.jpg" "*.txt")
- 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" "*.vmt" "*.vtf")
- elif [ "${directory}" == "particles" ]; then
- local allowed_extentions_array=("*.pcf")
- elif [ "${directory}" == "sound" ]; then
- local allowed_extentions_array=("*.wav" "*.mp3" "*.ogg")
- fi
- for allowed_extention in "${allowed_extentions_array[@]}"; do
- fileswc=0
- tput sc
- while read -r ext; do
- ((fileswc++))
- tput rc
- tput el
- echo -e "gathering ${directory} ${allowed_extention} : ${fileswc}..."
- echo -e "${ext}" >> "${tmpdir}/fastdl_files_to_compress.txt"
- done < <(find "${systemdir}/${directory}" -type f -iname "${allowed_extention}")
- tput rc
- tput el
- echo -e "gathering ${directory} ${allowed_extention} : ${fileswc}..."
- if [ ${fileswc} != 0 ]; then
- fn_print_ok_eol_nl
- else
- fn_print_info_eol_nl
- fi
- done
- fi
- done
- fi
- if [ -f "${tmpdir}/fastdl_files_to_compress.txt" ]; then
- echo -e "calculating total file size..."
- fn_sleep_time
- totalfiles=$(wc -l < "${tmpdir}/fastdl_files_to_compress.txt")
- # Calculates total file size.
- while read -r dufile; do
- filesize=$(stat -c %s "${dufile}")
- filesizetotal=$((filesizetotal + filesize))
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Calculating total file size."
- core_exit.sh
- fi
- done < "${tmpdir}/fastdl_files_to_compress.txt"
- else
- fn_print_fail_eol_nl "generating file list"
- fn_script_log_fatal "Generating file list."
- core_exit.sh
- fi
- echo -e "about to compress ${totalfiles} files, total size $(fn_human_readable_file_size ${filesizetotal} 0)"
- fn_script_log_info "${totalfiles} files, total size $(fn_human_readable_file_size ${filesizetotal} 0)"
- rm -f "${tmpdir:?}/fastdl_files_to_compress.txt"
- if ! fn_prompt_yn "Continue?" Y; then
- fn_script_log "User exited"
- core_exit.sh
- fi
-}
-
-# Builds Garry's Mod fastdl directory content.
-fn_fastdl_gmod() {
- cd "${systemdir}" || exit
- for allowed_extention in "${allowed_extentions_array[@]}"; do
- fileswc=0
- tput sc
- while read -r fastdlfile; do
- ((fileswc++))
- tput rc
- tput el
- echo -e "copying ${allowed_extention} : ${fileswc}..."
- cp --parents "${fastdlfile}" "${fastdldir}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Copying ${fastdlfile} > ${fastdldir}"
- core_exit.sh
- else
- fn_script_log_pass "Copying ${fastdlfile} > ${fastdldir}"
- fi
- done < <(find . -type f -iname "${allowed_extention}")
- if [ ${fileswc} != 0 ]; then
- fn_print_ok_eol_nl
- fi
- done
- # Correct addons directory structure for FastDL.
- if [ -d "${fastdldir}/addons" ]; then
- echo -en "updating addons file structure..."
- cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Updating addons file structure"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Updating addons file structure"
- fi
- # Clear addons directory in fastdl.
- echo -en "clearing addons dir from fastdl dir..."
- fn_sleep_time
- rm -rf "${fastdldir:?}/addons"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Clearing addons dir from fastdl dir"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Clearing addons dir from fastdl dir"
- fi
- fi
- # Correct content that may be into a lua directory by mistake like some darkrpmodification addons.
- if [ -d "${fastdldir}/lua" ]; then
- echo -en "correcting DarkRP files..."
- fn_sleep_time
- cp -Rf "${fastdldir}/lua/"* "${fastdldir}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Correcting DarkRP files"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Correcting DarkRP files"
- fi
- fi
- if [ -f "${tmpdir}/fastdl_files_to_compress.txt" ]; then
- totalfiles=$(wc -l < "${tmpdir}/fastdl_files_to_compress.txt")
- # Calculates total file size.
- while read -r dufile; do
- filesize=$(du -b "${dufile}" | awk '{ print $1 }')
- filesizetotal=$((filesizetotal + filesize))
- done < "${tmpdir}/fastdl_files_to_compress.txt"
- fi
-}
-
-fn_fastdl_source() {
- for directory in "${fastdl_directories_array[@]}"; do
- if [ -d "${systemdir}/${directory}" ]; then
- if [ "${directory}" == "maps" ]; then
- local allowed_extentions_array=("*.bsp" "*.ain" "*.nav" "*.jpg" "*.txt")
- 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")
- elif [ "${directory}" == "particles" ]; then
- local allowed_extentions_array=("*.pcf")
- elif [ "${directory}" == "sound" ]; then
- local allowed_extentions_array=("*.wav" "*.mp3" "*.ogg")
- fi
- for allowed_extention in "${allowed_extentions_array[@]}"; do
- fileswc=0
- tput sc
- while read -r fastdlfile; do
- ((fileswc++))
- tput rc
- tput el
- echo -e "copying ${directory} ${allowed_extention} : ${fileswc}..."
- fn_sleep_time
- # get relative path of file in the dir
- tmprelfilepath="${fastdlfile#"${systemdir}/"}"
- copytodir="${tmprelfilepath%/*}"
- # create relative path for fastdl
- if [ ! -d "${fastdldir}/${copytodir}" ]; then
- mkdir -p "${fastdldir}/${copytodir}"
- fi
- cp "${fastdlfile}" "${fastdldir}/${copytodir}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Copying ${fastdlfile} > ${fastdldir}/${copytodir}"
- core_exit.sh
- else
- fn_script_log_pass "Copying ${fastdlfile} > ${fastdldir}/${copytodir}"
- fi
- done < <(find "${systemdir}/${directory}" -type f -iname "${allowed_extention}")
- if [ ${fileswc} != 0 ]; then
- fn_print_ok_eol_nl
- fi
- done
- fi
- done
-}
-
-# Builds the fastdl directory content.
-fn_fastdl_build() {
- # Copy all needed files for FastDL.
- echo -e "copying files to ${fastdldir}"
- fn_script_log_info "Copying files to ${fastdldir}"
- if [ "${shortname}" == "gmod" ]; then
- fn_fastdl_gmod
- fn_fastdl_gmod_dl_enforcer
- else
- fn_fastdl_source
- fi
-}
-
-# Generate lua file that will force download any file into the FastDL directory.
-fn_fastdl_gmod_dl_enforcer() {
- # Clear old lua file.
- if [ -f "${luafastdlfullpath}" ]; then
- echo -en "removing existing download enforcer: ${luafastdlfile}..."
- rm -f "${luafastdlfullpath:?}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Removing existing download enforcer ${luafastdlfullpath}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Removing existing download enforcer ${luafastdlfullpath}"
- fi
- fi
- # Generate new one if user said yes.
- if [ "${luaresource}" == "on" ]; then
- echo -en "creating new download enforcer: ${luafastdlfile}..."
- touch "${luafastdlfullpath}"
- # Read all filenames and put them into a lua file at the right path.
- while read -r line; do
- echo -e "resource.AddFile( \"${line}\" )" >> "${luafastdlfullpath}"
- done < <(find "${fastdldir:?}" \( -type f ! -name "*.bz2" \) -printf '%P\n')
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Creating new download enforcer ${luafastdlfullpath}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Creating new download enforcer ${luafastdlfullpath}"
- fi
- fi
-}
-
-# Compresses FastDL files using bzip2.
-fn_fastdl_bzip2() {
- while read -r filetocompress; do
- echo -en "\r\033[Kcompressing ${filetocompress}..."
- bzip2 -f "${filetocompress}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Compressing ${filetocompress}"
- core_exit.sh
- else
- fn_script_log_pass "Compressing ${filetocompress}"
- fi
- done < <(find "${fastdldir:?}" \( -type f ! -name "*.bz2" \))
- fn_print_ok_eol_nl
-}
-
-# Run functions.
-fn_fastdl_preview
-fn_clear_old_fastdl
-fn_fastdl_dirs
-fn_fastdl_build
-fn_fastdl_bzip2
-# Finished message.
-echo -e "FastDL files are located in:"
-echo -e "${fastdldir}"
-echo -e "FastDL completed"
-fn_script_log_info "FastDL completed"
-
-core_exit.sh
diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh
deleted file mode 100644
index 19dc59c7e..000000000
--- a/lgsm/functions/command_install.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_install.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Overall function for the installer.
-
-commandname="INSTALL"
-commandaction="Installing"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then
- check_deps.sh
-else
- install_header.sh
- install_server_dir.sh
- install_logs.sh
- check_deps.sh
- installflag=1
- # Download and install.
- if [ "${shortname}" == "ut2k4" ]; then
- install_server_files.sh
- install_ut2k4_key.sh
- elif [ -z "${appid}" ]; then
- install_server_files.sh
- elif [ "${appid}" ]; then
- install_steamcmd.sh
- install_server_files.sh
- fi
-
- # Configuration.
- install_config.sh
- if [ -v gslt ]; then
- install_gslt.sh
- elif [ "${shortname}" == "dst" ]; then
- install_dst_token.sh
- elif [ "${shortname}" == "squad" ]; then
- install_squad_license.sh
- elif [ "${shortname}" == "ts3" ]; then
- install_ts3db.sh
- elif [ "${shortname}" == "mta" ]; then
- command_install_resources_mta.sh
- fn_firstcommand_reset
- fi
-
- fix.sh
- install_stats.sh
- install_complete.sh
-fi
-core_exit.sh
diff --git a/lgsm/functions/command_install_resources_mta.sh b/lgsm/functions/command_install_resources_mta.sh
deleted file mode 100644
index daf039551..000000000
--- a/lgsm/functions/command_install_resources_mta.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="DEFAULT-RESOURCES"
-commandaction="Default Resources"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-fn_install_resources() {
- echo -e ""
- echo -e "${lightyellow}Installing Default Resources${default}"
- echo -e "================================="
- 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."
-}
-
-fn_print_header
-
-if [ -z "${autoinstall}" ]; then
- fn_print_warning_nl "Installing the default resources with existing resources may cause issues."
- if fn_prompt_yn "Do you want to install MTA default resources?" Y; then
- fn_install_resources
- fi
-else
- fn_print_warning_nl "Default resources are not installed when using ./${selfname} auto-install."
- fn_print_information_nl "To install default resources use ./${selfname} install"
-fi
diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh
deleted file mode 100644
index 0edbe5bc0..000000000
--- a/lgsm/functions/command_mods_install.sh
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_mods_install.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: List and installs available mods along with mods_list.sh and mods_core.sh.
-
-commandname="MODS-INSTALL"
-commandaction="Installing mods"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-mods_core.sh
-
-fn_print_header
-
-# Displays a list of installed mods.
-fn_mods_installed_list
-if [ "${installedmodscount}" -gt "0" ]; then
- echo -e "Installed addons/mods"
- echo -e "================================="
- # Go through all available commands, get details and display them to the user.
- for ((llindex = 0; llindex < ${#installedmodslist[@]}; llindex++)); do
- # Current mod is the "llindex" value of the array we're going through.
- currentmod="${installedmodslist[llindex]}"
- fn_mod_get_info
- # Display mod info to the user.
- echo -e " * ${green}${modcommand}${default}${default}"
- done
- echo -e ""
-fi
-
-echo -e "Available addons/mods"
-echo -e "================================="
-# Display available mods from mods_list.sh.
-# Set and reset vars
-compatiblemodslistindex=0
-# As long as we're within index values.
-while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do
- # Set values for convenience.
- displayedmodname="${compatiblemodslist[compatiblemodslistindex]}"
- displayedmodcommand="${compatiblemodslist[compatiblemodslistindex + 1]}"
- displayedmodsite="${compatiblemodslist[compatiblemodslistindex + 2]}"
- displayedmoddescription="${compatiblemodslist[compatiblemodslistindex + 3]}"
- # Output mods to the user.
- echo -e "${displayedmodname} - ${displayedmoddescription} - ${displayedmodsite}"
- echo -e " * ${cyan}${displayedmodcommand}${default}"
- # Increment index from the amount of values we just displayed.
- let "compatiblemodslistindex+=4"
- ((totalmodsavailable++))
-done
-
-# If no mods are available for a specific game.
-if [ -z "${compatiblemodslist}" ]; then
- fn_print_fail_nl "No mods are currently available for ${gamename}."
- fn_script_log_info "No mods are currently available for ${gamename}."
- core_exit.sh
-fi
-fn_script_log_info "${totalmodsavailable} addons/mods are available for install"
-
-## User selects a mod.
-echo -e ""
-while [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; do
- echo -en "Enter an ${cyan}addon/mod${default} to ${green}install${default} (or exit to abort): "
- read -r usermodselect
- # Exit if user says exit or abort.
- if [ "${usermodselect}" == "exit" ] || [ "${usermodselect}" == "abort" ]; then
- core_exit.sh
- # Supplementary output upon invalid user input.
- elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then
- fn_print_error2_nl "${usermodselect} is not a valid addon/mod."
- fi
-done
-# Get mod info.
-currentmod="${usermodselect}"
-fn_mod_get_info
-
-echo -e ""
-echo -e "Installing ${modprettyname}"
-echo -e "================================="
-fn_script_log_info "${modprettyname} selected for install"
-
-# Check if the mod is already installed and warn the user.
-if [ -f "${modsinstalledlistfullpath}" ]; then
- if [ "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then
- fn_print_warning_nl "${modprettyname} is already installed"
- fn_script_log_warn "${modprettyname} is already installed"
- echo -e " * Any configs may be overwritten."
- if ! fn_prompt_yn "Continue?" Y; then
- core_exit.sh
- fi
- fn_script_log_info "User selected to continue"
- fi
-fi
-
-## Installation.
-# If amxmodx check if metamod exists first
-if [ "${modcommand}" == "amxmodx" ]; then
- fn_mod_exist "metamod"
-fi
-
-if [ "${modcommand}" == "amxmodxcs" ] \
- || [ "${modcommand}" == "amxmodxdod" ] \
- || [ "${modcommand}" == "amxmodxtfc" ] \
- || [ "${modcommand}" == "amxmodxns" ] \
- || [ "${modcommand}" == "amxmodxts" ]; then
- fn_mod_exist "amxmodx"
-fi
-
-fn_create_mods_dir
-fn_mods_clear_tmp_dir
-fn_mods_create_tmp_dir
-fn_mod_install_files
-fn_mod_lowercase
-fn_mod_create_filelist
-fn_mod_copy_destination
-fn_mod_add_list
-fn_mod_tidy_files_list
-fn_mods_clear_tmp_dir
-
-# Create/modify existing liblist.gam file for Metamod
-if [ "${modcommand}" == "metamod" ]; then
- fn_mod_install_liblist_gam_file
-fi
-
-# Create/modify plugins.ini file for Metamod
-if [ "${modcommand}" == "amxmodx" ]; then
- fn_mod_install_amxmodx_file
-fi
-
-echo -e "${modprettyname} installed"
-fn_script_log_pass "${modprettyname} installed."
-
-core_exit.sh
diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh
deleted file mode 100644
index 7127dcb3c..000000000
--- a/lgsm/functions/command_mods_remove.sh
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_mods_uninstall.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Uninstall mods along with mods_list.sh and mods_core.sh.
-
-commandname="MODS-REMOVE"
-commandaction="Removing mods"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-mods_core.sh
-fn_mods_check_installed
-
-fn_print_header
-echo -e "Remove addons/mods"
-echo -e "================================="
-
-# Displays list of installed mods.
-# Generates list to display to user.
-fn_mods_installed_list
-for ((mlindex = 0; mlindex < ${#installedmodslist[@]}; mlindex++)); do
- # Current mod is the "mlindex" value of the array we are going through.
- currentmod="${installedmodslist[mlindex]}"
- # Get mod info.
- fn_mod_get_info
- # Display mod info to the user.
- echo -e "${red}${modcommand}${default} - ${modprettyname} - ${moddescription}"
-done
-
-echo -e ""
-# Keep prompting as long as the user input doesn't correspond to an available mod.
-while [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; do
- echo -en "Enter an ${cyan}addon/mod${default} to ${red}remove${default} (or exit to abort): "
- read -r usermodselect
- # Exit if user says exit or abort.
- if [ "${usermodselect}" == "exit" ] || [ "${usermodselect}" == "abort" ]; then
- core_exit.sh
- # Supplementary output upon invalid user input.
- elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then
- fn_print_error2_nl "${usermodselect} is not a valid addon/mod."
- fi
-done
-
-fn_print_warning_nl "You are about to remove ${cyan}${usermodselect}${default}."
-echo -e " * Any custom files/configuration will be removed."
-if ! fn_prompt_yn "Continue?" Y; then
- core_exit.sh
-fi
-
-currentmod="${usermodselect}"
-fn_mod_get_info
-fn_check_mod_files_list
-
-# Uninstall the mod.
-fn_script_log_info "Removing ${modsfilelistsize} files from ${modprettyname}"
-echo -e "removing ${modprettyname}"
-echo -e "* ${modsfilelistsize} files to be removed"
-echo -e "* location: ${modinstalldir}"
-fn_sleep_time
-# Go through every file and remove it.
-modfileline="1"
-tput sc
-while [ "${modfileline}" -le "${modsfilelistsize}" ]; do
- # Current line defines current file to remove.
- currentfileremove=$(sed "${modfileline}q;d" "${modsdir}/${modcommand}-files.txt")
- # If file or directory exists, then remove it.
-
- if [ -f "${modinstalldir}/${currentfileremove}" ] || [ -d "${modinstalldir}/${currentfileremove}" ]; then
- rm -rf "${modinstalldir:?}/${currentfileremove:?}"
- ((exitcode = $?))
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "Removing ${modinstalldir}/${currentfileremove}"
- break
- else
- fn_script_log_pass "Removing ${modinstalldir}/${currentfileremove}"
- fi
- fi
- tput rc
- tput el
- echo -e "removing ${modprettyname} ${modfileline} / ${modsfilelistsize} : ${currentfileremove}..."
- ((modfileline++))
-done
-
-# Added logic not to fail since removing game specific mods (amxmodxcs) removes files that will
-# not be found when removing the base (amxmodx) mod
-if [ "${modcommand}" != "amxmodx" ]; then
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fi
-else
- fn_print_ok_eol_nl
-fi
-
-# Remove file list.
-echo -en "removing ${modcommand}-files.txt..."
-fn_sleep_time
-rm -rf "${modsdir:?}/${modcommand}-files.txt"
-exitcode=$?
-if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "Removing ${modsdir}/${modcommand}-files.txt"
- fn_print_fail_eol_nl
- core_exit.sh
-else
- fn_script_log_pass "Removing ${modsdir}/${modcommand}-files.txt"
- fn_print_ok_eol_nl
-fi
-
-# Remove mods from installed mods list.
-echo -en "removing ${modcommand} from ${modsinstalledlist}..."
-fn_sleep_time
-
-sed -i "/^${modcommand}$/d" "${modsinstalledlistfullpath}"
-exitcode=$?
-if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "Removing ${modcommand} from ${modsinstalledlist}"
- fn_print_fail_eol_nl
- core_exit.sh
-else
- fn_script_log_pass "Removing ${modcommand} from ${modsinstalledlist}"
- fn_print_ok_eol_nl
-fi
-
-# Oxide fix
-# Oxide replaces server files, so a validate is required after uninstall.
-if [ "${engine}" == "unity3d" ] && [[ "${modprettyname}" == *"Oxide"* ]]; then
- fn_print_information_nl "Validating to restore original ${gamename} files replaced by Oxide"
- fn_script_log "Validating to restore original ${gamename} files replaced by Oxide"
- exitbypass="1"
- command_validate.sh
- fn_firstcommand_reset
- unset exitbypass
-fi
-
-# Remove/modify existing liblist.gam file for Metamod
-if [ "${modcommand}" == "metamod" ]; then
- fn_mod_remove_liblist_gam_file
-fi
-
-# Remove/modify plugins.ini file for AMX Mod X
-if [ "${modcommand}" == "amxmodx" ]; then
- fn_mod_remove_amxmodx_file
-fi
-
-echo -e "${modprettyname} removed"
-fn_script_log "${modprettyname} removed"
-
-core_exit.sh
diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh
deleted file mode 100644
index 80b23fea9..000000000
--- a/lgsm/functions/command_mods_update.sh
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_mods_update.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Updates installed mods along with mods_list.sh and mods_core.sh.
-
-commandname="MODS-UPDATE"
-commandaction="Updating mods"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-mods_core.sh
-
-# Prevents specific files being overwritten upon update (set by ${modkeepfiles}).
-# For that matter, remove cfg files after extraction before copying them to destination.
-fn_remove_cfg_files() {
- if [ "${modkeepfiles}" != "OVERWRITE" ] && [ "${modkeepfiles}" != "NOUPDATE" ]; then
- echo -e "the following files/directories will be preserved:"
- fn_sleep_time
- # Count how many files there are to remove.
- filestopreserve=$(echo -e "${modkeepfiles}" | awk -F ';' '{ print NF }')
- # Test all subvalues of "modkeepfiles" using the ";" separator.
- for ((preservefilesindex = 1; preservefilesindex < filestopreserve; preservefilesindex++)); do
- # Put the current file we are looking for into a variable.
- filetopreserve=$(echo -e "${modkeepfiles}" | awk -F ';' -v x=${preservefilesindex} '{ print $x }')
- echo -e " * serverfiles/${filetopreserve}"
- # If it matches an existing file that have been extracted delete the file.
- if [ -f "${extractdest}/${filetopreserve}" ] || [ -d "${extractdest}/${filetopreserve}" ]; then
- rm -r "${extractdest:?}/${filetopreserve}"
- # Write the file path in a tmp file, to rebuild a full file list as it is rebuilt upon update.
- if [ ! -f "${modsdir}/.removedfiles.tmp" ]; then
- touch "${modsdir}/.removedfiles.tmp"
- fi
- echo -e "${filetopreserve}" >> "${modsdir}/.removedfiles.tmp"
- fi
- done
- fi
-}
-
-fn_print_dots "Update addons/mods"
-fn_mods_check_installed
-fn_print_info_nl "Update addons/mods: ${installedmodscount} addons/mods will be updated"
-fn_script_log_info "${installedmodscount} mods or addons will be updated"
-fn_mods_installed_list
-# Go through all available commands, get details and display them to the user.
-for ((ulindex = 0; ulindex < ${#installedmodslist[@]}; ulindex++)); do
- # Current mod is the "ulindex" value of the array we're going through.
- currentmod="${installedmodslist[ulindex]}"
- fn_mod_get_info
- # Display installed mods and the update policy.
- if [ -z "${modkeepfiles}" ]; then
- # If modkeepfiles is not set for some reason, that's a problem.
- fn_script_log_error "Could not find update policy for ${modprettyname}"
- fn_print_error_nl "Could not find update policy for ${modprettyname}"
- exitcode="1"
- core_exit.sh
- # If the mod won't get updated.
- elif [ "${modkeepfiles}" == "NOUPDATE" ]; then
- echo -e " * ${red}{modprettyname}${default} (won't be updated)"
- # If the mode is just overwritten.
- elif [ "${modkeepfiles}" == "OVERWRITE" ]; then
- echo -e " * ${modprettyname} (overwrite)"
- else
- echo -e " * ${yellow}${modprettyname}${default} (retain common custom files)"
- fi
-done
-
-## Update
-# List all installed mods and apply update.
-# Reset line value.
-installedmodsline="1"
-while [ "${installedmodsline}" -le "${installedmodscount}" ]; do
- currentmod=$(sed "${installedmodsline}q;d" "${modsinstalledlistfullpath}")
- if [ "${currentmod}" ]; then
- fn_mod_get_info
- # Don not update mod if the policy is set to "NOUPDATE".
- if [ "${modkeepfiles}" == "NOUPDATE" ]; then
- fn_print_info "${modprettyname} will not be updated to preserve custom files"
- fn_script_log_info "${modprettyname} will not be updated to preserve custom files"
- else
- echo -e ""
- echo -e "==> Updating ${modprettyname}"
- fn_create_mods_dir
- fn_mods_clear_tmp_dir
- fn_mods_create_tmp_dir
- fn_mod_install_files
- fn_mod_lowercase
- fn_remove_cfg_files
- fn_mod_create_filelist
- fn_mod_copy_destination
- fn_mod_add_list
- fn_mod_tidy_files_list
- fn_mods_clear_tmp_dir
- fi
- ((installedmodsline++))
- else
- fn_print_fail "No mod was selected"
- fn_script_log_fatal "No mod was selected"
- exitcode="1"
- core_exit.sh
- fi
-done
-echo -e ""
-fn_print_ok_nl "Mods update complete"
-fn_script_log_info "Mods update complete"
-
-core_exit.sh
diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh
deleted file mode 100644
index 20c830e0b..000000000
--- a/lgsm/functions/command_monitor.sh
+++ /dev/null
@@ -1,245 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_monitor.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Monitors server by checking for running processes
-# then passes to gamedig and gsquery.
-
-commandname="MONITOR"
-commandaction="Monitoring"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-fn_monitor_check_lockfile() {
- # Monitor does not run it lockfile is not found.
- if [ ! -f "${lockdir}/${selfname}.lock" ]; then
- fn_print_dots "Checking lockfile: "
- fn_print_checking_eol
- fn_script_log_info "Checking lockfile: CHECKING"
- fn_print_error "Checking lockfile: No lockfile found: "
- fn_print_error_eol_nl
- fn_script_log_error "Checking lockfile: No lockfile found: ERROR"
- echo -e "* Start ${selfname} to run monitor."
- core_exit.sh
- fi
-
- # Fix if lockfile is not unix time or contains letters
- if [ -f "${lockdir}/${selfname}.lock" ] && [[ "$(head -n 1 "${lockdir}/${selfname}.lock")" =~ [A-Za-z] ]]; then
- date '+%s' > "${lockdir}/${selfname}.lock"
- echo "${version}" >> "${lockdir}/${selfname}.lock"
- echo "${port}" >> "${lockdir}/${selfname}.lock"
- fi
-}
-
-fn_monitor_check_update() {
- # Monitor will check if update is already running.
- if [ "$(pgrep "${selfname} update" | wc -l)" != "0" ]; then
- fn_print_dots "Checking active updates: "
- fn_print_checking_eol
- fn_script_log_info "Checking active updates: CHECKING"
- fn_print_error_nl "Checking active updates: SteamCMD is currently checking for updates: "
- fn_print_error_eol
- fn_script_log_error "Checking active updates: SteamCMD is currently checking for updates: ERROR"
- core_exit.sh
- fi
-}
-
-fn_monitor_check_session() {
- fn_print_dots "Checking session: "
- fn_print_checking_eol
- fn_script_log_info "Checking session: CHECKING"
- # uses status var from check_status.sh
- if [ "${status}" != "0" ]; then
- fn_print_ok "Checking session: "
- fn_print_ok_eol_nl
- fn_script_log_pass "Checking session: OK"
- else
- fn_print_error "Checking session: "
- fn_print_fail_eol_nl
- fn_script_log_fatal "Checking session: FAIL"
- alert="restart"
- alert.sh
- fn_script_log_info "Checking session: Monitor is restarting ${selfname}"
- command_restart.sh
- core_exit.sh
- fi
-}
-
-fn_monitor_check_queryport() {
- # Monitor will check queryport is set before continuing.
- if [ -z "${queryport}" ] || [ "${queryport}" == "0" ]; then
- fn_print_dots "Checking port: "
- fn_print_checking_eol
- fn_script_log_info "Checking port: CHECKING"
- if [ -n "${rconenabled}" ] && [ "${rconenabled}" != "true" ] && [ "${shortname}" == "av" ]; then
- fn_print_warn "Checking port: Unable to query, rcon is not enabled"
- fn_script_log_warn "Checking port: Unable to query, rcon is not enabled"
- else
- fn_print_error "Checking port: Unable to query, queryport is not set"
- fn_script_log_error "Checking port: Unable to query, queryport is not set"
- fi
- core_exit.sh
- fi
-}
-
-fn_query_gsquery() {
- if [ ! -f "${functionsdir}/query_gsquery.py" ]; then
- 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="$?"
-}
-
-fn_query_tcp() {
- bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${queryport}'' > /dev/null 2>&1
- querystatus="$?"
-}
-
-fn_monitor_query() {
- # Will loop and query up to 5 times every 15 seconds.
- # Query will wait up to 60 seconds to confirm server is down as server can become non-responsive during map changes.
- totalseconds=0
- for queryattempt in {1..5}; do
- for queryip in "${queryips[@]}"; do
- fn_print_dots "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: "
- fn_print_querying_eol
- fn_script_log_info "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : QUERYING"
- # querydelay
- if [ "$(head -n 1 "${lockdir}/${selfname}.lock")" -gt "$(date "+%s" -d "${querydelay} mins ago")" ]; then
- fn_print_ok "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
- fn_print_delay_eol_nl
- fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : DELAY"
- fn_script_log_info "Query bypassed: ${gameservername} started less than ${querydelay} minutes ago"
- fn_script_log_info "Server started: $(date -d @$(head -n 1 "${lockdir}/${selfname}.lock"))"
- fn_script_log_info "Current time: $(date)"
- monitorpass=1
- core_exit.sh
- # will use query method selected in fn_monitor_loop
- # gamedig
- elif [ "${querymethod}" == "gamedig" ]; then
- query_gamedig.sh
- # gsquery
- elif [ "${querymethod}" == "gsquery" ]; then
- fn_query_gsquery
- #tcp query
- elif [ "${querymethod}" == "tcp" ]; then
- fn_query_tcp
- fi
-
- if [ "${querystatus}" == "0" ]; then
- # Server query OK.
- fn_print_ok "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: "
- fn_print_ok_eol_nl
- fn_script_log_pass "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : OK"
- monitorpass=1
- if [ "${querystatus}" == "0" ]; then
- # Add query data to log.
- if [ "${gdname}" ]; then
- fn_script_log_info "Server name: ${gdname}"
- fi
- if [ "${gdplayers}" ]; then
- fn_script_log_info "Players: ${gdplayers}/${gdmaxplayers}"
- fi
- if [ "${gdbots}" ]; then
- fn_script_log_info "Bots: ${gdbots}"
- fi
- if [ "${gdmap}" ]; then
- fn_script_log_info "Map: ${gdmap}"
- fi
- if [ "${gdgamemode}" ]; then
- fn_script_log_info "Game Mode: ${gdgamemode}"
- fi
-
- # send LinuxGSM stats if monitor is OK.
- if [ "${stats}" == "on" ] || [ "${stats}" == "y" ]; then
- info_stats.sh
- fi
- fi
- core_exit.sh
- else
- # Server query FAIL.
- fn_print_fail "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: "
- fn_print_fail_eol
- fn_script_log_warn "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : FAIL"
- # Monitor will try gamedig (if supported) for first 30s then gsquery before restarting.
- # gsquery will fail if longer than 60s
- if [ "${totalseconds}" -ge "59" ]; then
- # Monitor will FAIL if over 60s and trigger gane server reboot.
- fn_print_fail "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: "
- fn_print_fail_eol_nl
- fn_script_log_warn "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : FAIL"
- # Send alert if enabled.
- alert="restartquery"
- alert.sh
- command_restart.sh
- fn_firstcommand_reset
- core_exit.sh
- fi
- fi
- done
- # Second counter will wait for 15s before breaking loop.
- for seconds in {1..15}; do
- fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt} : ${cyan}WAIT${default}"
- sleep 0.5
- totalseconds=$((totalseconds + 1))
- if [ "${seconds}" == "15" ]; then
- break
- fi
- done
- done
-}
-
-fn_monitor_loop() {
- # loop though query methods selected by querymode.
- totalseconds=0
- if [ "${querymode}" == "2" ]; then
- local query_methods_array=(gamedig gsquery)
- elif [ "${querymode}" == "3" ]; then
- local query_methods_array=(gamedig)
- elif [ "${querymode}" == "4" ]; then
- local query_methods_array=(gsquery)
- elif [ "${querymode}" == "5" ]; then
- local query_methods_array=(tcp)
- fi
- for querymethod in "${query_methods_array[@]}"; do
- # Will check if gamedig is installed and bypass if not.
- if [ "${querymethod}" == "gamedig" ]; then
- if [ "$(command -v gamedig 2> /dev/null)" ] && [ "$(command -v jq 2> /dev/null)" ]; then
- if [ -z "${monitorpass}" ]; then
- fn_monitor_query
- fi
- else
- fn_script_log_info "gamedig is not installed"
- fn_script_log_info "https://docs.linuxgsm.com/requirements/gamedig"
- fi
- else
- # will not query if query already passed.
- if [ -z "${monitorpass}" ]; then
- fn_monitor_query
- fi
- fi
- done
-}
-
-monitorflag=1
-check.sh
-core_logs.sh
-info_game.sh
-
-# query pre-checks
-fn_monitor_check_lockfile
-fn_monitor_check_update
-fn_monitor_check_session
-# Monitor will not continue if session only check.
-if [ "${querymode}" != "1" ]; then
- fn_monitor_check_queryport
-
- # Add a querydelay of 1 min if var missing.
- if [ -z "${querydelay}" ]; then
- querydelay="1"
- fi
-
- fn_monitor_loop
-fi
-core_exit.sh
diff --git a/lgsm/functions/command_postdetails.sh b/lgsm/functions/command_postdetails.sh
deleted file mode 100644
index dad44d9af..000000000
--- a/lgsm/functions/command_postdetails.sh
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="POST-DETAILS"
-commandaction="Posting details"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-posttarget="https://termbin.com"
-
-# source all of the functions defined in the details command.
-info_messages.sh
-
-fn_bad_postdetailslog() {
- fn_print_fail_nl "Unable to create temporary file ${postdetailslog}."
- core_exit.sh
-}
-
-# Remove any existing postdetails.log file.
-if [ -f "${postdetailslog}" ]; then
- rm -f "${postdetailslog:?}"
-fi
-
-# Rather than a one-pass sed parser, default to using a temporary directory.
-if [ "${exitbypass}" ]; then
- postdetailslog="${alertlog}"
-else
- # Run checks and gathers details to display.
- check.sh
- info_game.sh
- info_distro.sh
- info_messages.sh
- for queryip in "${queryips[@]}"; do
- query_gamedig.sh
- if [ "${querystatus}" == "0" ]; then
- break
- fi
- done
- touch "${postdetailslog}" || fn_bad_postdetailslog
- {
- fn_info_message_distro
- fn_info_message_server_resource
- fn_info_message_gameserver_resource
- fn_info_message_gameserver
- fn_info_message_script
- fn_info_message_backup
- # Some game servers do not have parms.
- if [ "${shortname}" != "jc2" ] && [ "${shortname}" != "jc3" ] && [ "${shortname}" != "dst" ] && [ "${shortname}" != "pz" ] && [ "${engine}" != "renderware" ]; then
- fn_info_message_commandlineparms
- fi
- fn_info_message_ports_edit
- fn_info_message_ports
- fn_info_message_select_engine
- fn_info_message_statusbottom
- } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | tee -a "${postdetailslog}" > /dev/null 2>&1
-fi
-
-fn_print_dots "termbin.com"
-link=$(cat "${postdetailslog}" | nc termbin.com 9999 | tr -d '\n\0')
-fn_print_ok_nl "termbin.com for 30D"
-fn_script_log_pass "termbin.com for 30D"
-pdurl="${link}"
-
-if [ "${firstcommandname}" == "POST-DETAILS" ]; then
- echo -e ""
- echo -e "Please share the following url for support: "
- echo -e "${pdurl}"
-fi
-fn_script_log_info "${pdurl}"
-alerturl="${pdurl}"
-
-if [ -z "${exitbypass}" ]; then
- core_exit.sh
-fi
diff --git a/lgsm/functions/command_restart.sh b/lgsm/functions/command_restart.sh
deleted file mode 100644
index 3bf60c32c..000000000
--- a/lgsm/functions/command_restart.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_restart.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Restarts the server.
-
-commandname="MODS-INSTALL"
-commandaction="Restarting"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-info_game.sh
-exitbypass=1
-command_stop.sh
-command_start.sh
-fn_firstcommand_reset
-core_exit.sh
diff --git a/lgsm/functions/command_send.sh b/lgsm/functions/command_send.sh
deleted file mode 100644
index d65212571..000000000
--- a/lgsm/functions/command_send.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/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 -L "${sessionname}" 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/command_skeleton.sh b/lgsm/functions/command_skeleton.sh
deleted file mode 100644
index 53c4ddec5..000000000
--- a/lgsm/functions/command_skeleton.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# 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
-
-# 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/command_start.sh b/lgsm/functions/command_start.sh
deleted file mode 100644
index 699bc8222..000000000
--- a/lgsm/functions/command_start.sh
+++ /dev/null
@@ -1,224 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_start.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Starts the server.
-
-commandname="START"
-commandaction="Starting"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-addtimestamp="gawk '{ print strftime(\\\"[$logtimestampformat]\\\"), \\\$0 }'"
-fn_firstcommand_set
-
-fn_start_teamspeak3() {
- if [ ! -f "${servercfgfullpath}" ]; then
- fn_print_warn_nl "${servercfgfullpath} is missing"
- fn_script_log_warn "${servercfgfullpath} is missing"
- echo " * Creating blank ${servercfg}"
- fn_script_log_info "Creating blank ${servercfg}"
- fn_sleep_time
- echo " * ${servercfg} can remain blank by default."
- fn_script_log_info "${servercfgfullpath} can remain blank by default."
- fn_sleep_time
- echo " * ${servercfg} is located in ${servercfgfullpath}."
- fn_script_log_info "${servercfg} is located in ${servercfgfullpath}."
- sleep 5
- touch "${servercfgfullpath}"
- fi
- # Accept license.
- if [ ! -f "${executabledir}/.ts3server_license_accepted" ]; then
- install_eula.sh
- fi
- fn_start_tmux
-}
-
-# This will allow the Jedi Knight 2 version to be printed in console on start.
-# Used to allow update to detect JK2MV server version.
-fn_start_jk2() {
- fn_start_tmux
- tmux -L "${sessionname}" send -t "${sessionname}" version ENTER > /dev/null 2>&1
-}
-
-fn_start_tmux() {
- if [ "${parmsbypass}" ]; then
- startparameters=""
- fi
- # check for tmux size variables.
- if [[ "${servercfgtmuxwidth}" =~ ^[0-9]+$ ]]; then
- sessionwidth="${servercfgtmuxwidth}"
- else
- sessionwidth="80"
- fi
- if [[ "${servercfgtmuxheight}" =~ ^[0-9]+$ ]]; then
- sessionheight="${servercfgtmuxheight}"
- else
- sessionheight="23"
- fi
-
- # Log rotation.
- fn_script_log_info "Rotating log files"
- if [ "${engine}" == "unreal2" ] && [ -f "${gamelog}" ]; then
- mv "${gamelog}" "${gamelogdate}"
- fi
- if [ -f "${lgsmlog}" ]; then
- mv "${lgsmlog}" "${lgsmlogdate}"
- fi
- if [ -f "${consolelog}" ]; then
- mv "${consolelog}" "${consolelogdate}"
- fi
-
- # Create lockfile
- date '+%s' > "${lockdir}/${selfname}.lock"
- echo "${version}" >> "${lockdir}/${selfname}.lock"
- echo "${port}" >> "${lockdir}/${selfname}.lock"
- fn_reload_startparameters
-
- if [ "${shortname}" == "av" ]; then
- cd "${systemdir}" || exit
- else
- cd "${executabledir}" || exit
- fi
-
- tmux -L "${sessionname}" new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${startparameters}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp"
-
- # Create logfile.
- touch "${consolelog}"
-
- # Create last start lock file
- date +%s > "${lockdir}/${selfname}-laststart.lock"
-
- # 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
- if [ "$logtimestamp" == "on" ]; then
- tmux -L "${sessionname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
- else
- tmux -L "${sessionname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
- fi
- fi
-
- elif [ -n "${tmuxv}" ]; then
- # tmux pipe-pane not supported in tmux versions < 1.6.
- 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 [ "${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}"
- # Console logging enable or not set.
- elif [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
- if [ "$logtimestamp" == "on" ]; then
- tmux pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
- else
- tmux pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
- fi
- fi
- else
- echo -e "Unable to detect tmux version" >> "${consolelog}"
- fn_script_log_warn "Unable to detect tmux version"
- fi
-
- # Console logging disabled.
- if [ "${consolelogging}" == "off" ]; then
- echo -e "Console logging disabled by user" >> "${consolelog}"
- fn_script_log_info "Console logging disabled by user"
- fi
- fn_sleep_time
-
- # If the server fails to start.
- check_status.sh
- if [ "${status}" == "0" ]; then
- 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:"
- echo -e ""
- echo -e "Command"
- echo -e "================================="
- echo -e "tmux -L \"${sessionname}\" new-session -d -s \"${sessionname}\" \"${preexecutable} ${executable} ${startparameters}\"" | tee -a "${lgsmlog}"
- echo -e ""
- echo -e "Error"
- echo -e "================================="
- tee -a "${lgsmlog}" < "${lgsmlogdir}/.${selfname}-tmux-error.tmp"
-
- # Detected error https://linuxgsm.com/support
- if grep -c "Operation not permitted" "${lgsmlogdir}/.${selfname}-tmux-error.tmp"; then
- echo -e ""
- echo -e "Fix"
- echo -e "================================="
- if ! grep "tty:" /etc/group | grep "$(whoami)"; then
- echo -e "$(whoami) is not part of the tty group."
- fn_script_log_info "$(whoami) is not part of the tty group."
- group=$(grep tty /etc/group)
- echo -e ""
- echo -e " ${group}"
- fn_script_log_info "${group}"
- echo -e ""
- echo -e "Run the following command with root privileges."
- echo -e ""
- echo -e " usermod -G tty $(whoami)"
- echo -e ""
- echo -e "https://linuxgsm.com/tmux-op-perm"
- fn_script_log_info "https://linuxgsm.com/tmux-op-perm"
- else
- echo -e "No known fix currently. Please log an issue."
- fn_script_log_info "No known fix currently. Please log an issue."
- echo -e "https://linuxgsm.com/support"
- fn_script_log_info "https://linuxgsm.com/support"
- fi
- fi
- fi
- core_exit.sh
- else
- fn_print_ok "${servername}"
- fn_script_log_pass "Started ${servername}"
- fi
- rm -f "${lgsmlogdir:?}/.${selfname}-tmux-error.tmp" 2> /dev/null
- echo -en "\n"
-}
-
-check.sh
-
-# Is the server already started.
-# $status comes from check_status.sh, which is run by check.sh for this command
-if [ "${status}" != "0" ]; then
- fn_print_dots "${servername}"
- fn_print_info_nl "${servername} is already running"
- fn_script_log_error "${servername} is already running"
- if [ -z "${exitbypass}" ]; then
- core_exit.sh
- fi
-fi
-if [ -z "${fixbypass}" ]; then
- fix.sh
-fi
-info_game.sh
-core_logs.sh
-
-# Will check for updates is updateonstart is yes.
-if [ "${updateonstart}" == "yes" ] || [ "${updateonstart}" == "1" ] || [ "${updateonstart}" == "on" ]; then
- exitbypass=1
- unset updateonstart
- command_update.sh
- fn_firstcommand_reset
-fi
-
-fn_print_dots "${servername}"
-
-if [ "${shortname}" == "ts3" ]; then
- fn_start_teamspeak3
-elif [ "${shortname}" == "jk2" ]; then
- fn_start_jk2
-else
- fn_start_tmux
-fi
-
-core_exit.sh
diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh
deleted file mode 100644
index d2e88fcea..000000000
--- a/lgsm/functions/command_stop.sh
+++ /dev/null
@@ -1,283 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_stop.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Stops the server.
-
-commandname="STOP"
-commandaction="Stopping"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-# Attempts graceful shutdown by sending 'CTRL+c'.
-fn_stop_graceful_ctrlc() {
- fn_print_dots "Graceful: CTRL+c"
- fn_script_log_info "Graceful: CTRL+c"
- # Sends quit.
- tmux -L "${sessionname}" send-keys -t "${sessionname}" C-c > /dev/null 2>&1
- # Waits up to 30 seconds giving the server time to shutdown gracefuly.
- for seconds in {1..30}; do
- check_status.sh
- if [ "${status}" == "0" ]; then
- fn_print_ok "Graceful: CTRL+c: ${seconds}: "
- fn_print_ok_eol_nl
- fn_script_log_pass "Graceful: CTRL+c: OK: ${seconds} seconds"
- break
- fi
- sleep 1
- fn_print_dots "Graceful: CTRL+c: ${seconds}"
- done
- check_status.sh
- if [ "${status}" != "0" ]; then
- fn_print_error "Graceful: CTRL+c: "
- fn_print_fail_eol_nl
- fn_script_log_error "Graceful: CTRL+c: FAIL"
- fi
-}
-
-# Attempts graceful shutdown by sending a specified command.
-# Usage: fn_stop_graceful_cmd "console_command" "timeout_in_seconds"
-# e.g.: fn_stop_graceful_cmd "quit" "30"
-fn_stop_graceful_cmd() {
- fn_print_dots "Graceful: sending \"${1}\""
- fn_script_log_info "Graceful: sending \"${1}\""
- # Sends specific stop command.
- tmux -L "${sessionname}" 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
- if [ "${status}" == "0" ]; then
- fn_print_ok "Graceful: sending \"${1}\": ${seconds}: "
- fn_print_ok_eol_nl
- fn_script_log_pass "Graceful: sending \"${1}\": OK: ${seconds} seconds"
- break
- fi
- sleep 1
- fn_print_dots "Graceful: sending \"${1}\": ${seconds}"
- done
- check_status.sh
- if [ "${status}" != "0" ]; then
- fn_print_error "Graceful: sending \"${1}\": "
- fn_print_fail_eol_nl
- fn_script_log_error "Graceful: sending \"${1}\": FAIL"
- fi
-}
-
-# Attempts graceful shutdown of goldsrc using rcon 'quit' command.
-# There is only a 3 second delay before a forced a tmux shutdown
-# as GoldSrc servers 'quit' command does a restart rather than shutdown.
-fn_stop_graceful_goldsrc() {
- fn_print_dots "Graceful: sending \"quit\""
- fn_script_log_info "Graceful: sending \"quit\""
- # sends quit
- tmux -L "${sessionname}" send -t "${sessionname}" quit ENTER > /dev/null 2>&1
- # Waits 3 seconds as goldsrc servers restart with the quit command.
- for seconds in {1..3}; do
- sleep 1
- fn_print_dots "Graceful: sending \"quit\": ${seconds}"
- done
- fn_print_ok "Graceful: sending \"quit\": ${seconds}: "
- fn_print_ok_eol_nl
- fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds"
-}
-
-# telnet command for sdtd graceful shutdown.
-fn_stop_graceful_sdtd_telnet() {
- if [ -z "${telnetpass}" ] || [ "${telnetpass}" == "NOT SET" ]; then
- sdtd_telnet_shutdown=$(expect -c '
- proc abort {} {
- puts "Timeout or EOF\n"
- exit 1
- }
- spawn telnet '"${telnetip}"' '"${telnetport}"'
- expect {
- "session." { send "shutdown\r" }
- default abort
- }
- expect { eof }
- puts "Completed.\n"
- ')
- else
- sdtd_telnet_shutdown=$(expect -c '
- proc abort {} {
- puts "Timeout or EOF\n"
- exit 1
- }
- spawn telnet '"${telnetip}"' '"${telnetport}"'
- expect {
- "password:" { send "'"${telnetpass}"'\r" }
- default abort
- }
- expect {
- "session." { send "shutdown\r" }
- default abort
- }
- expect { eof }
- puts "Completed.\n"
- ')
- fi
-}
-
-# Attempts graceful shutdown of 7 Days To Die using telnet.
-fn_stop_graceful_sdtd() {
- fn_print_dots "Graceful: telnet"
- fn_script_log_info "Graceful: telnet"
- if [ "${telnetenabled}" == "false" ]; then
- fn_print_info_nl "Graceful: telnet: DISABLED: Enable in ${servercfg}"
- elif [ "$(command -v expect 2> /dev/null)" ]; then
- # Tries to shutdown with both localhost and server IP.
- for telnetip in 127.0.0.1 ${ip}; do
- fn_print_dots "Graceful: telnet: ${telnetip}:${telnetport}"
- fn_script_log_info "Graceful: telnet: ${telnetip}:${telnetport}"
- fn_stop_graceful_sdtd_telnet
- completed=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Completed.")
- refused=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Timeout or EOF")
- if [ "${refused}" ]; then
- fn_print_error "Graceful: telnet: ${telnetip}:${telnetport} : "
- fn_print_fail_eol_nl
- fn_script_log_error "Graceful: telnet: ${telnetip}:${telnetport} : FAIL"
- elif [ "${completed}" ]; then
- break
- fi
- done
-
- # If telnet shutdown was successful will use telnet again to check
- # the connection has closed, confirming that the tmux session can now be killed.
- if [ "${completed}" ]; then
- for seconds in {1..30}; do
- fn_stop_graceful_sdtd_telnet
- refused=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Timeout or EOF")
- if [ "${refused}" ]; then
- fn_print_ok "Graceful: telnet: ${telnetip}:${telnetport} : "
- fn_print_ok_eol_nl
- fn_script_log_pass "Graceful: telnet: ${telnetip}:${telnetport} : ${seconds} seconds"
- break
- fi
- sleep 1
- fn_print_dots "Graceful: telnet: ${seconds}"
- done
- # If telnet shutdown fails tmux shutdown will be used, this risks loss of world save.
- else
- if [ "${refused}" ]; then
- fn_print_error "Graceful: telnet: "
- fn_print_fail_eol_nl
- fn_script_log_error "Graceful: telnet: ${telnetip}:${telnetport} : FAIL"
- else
- fn_print_error_nl "Graceful: telnet: Unknown error"
- fn_script_log_error "Graceful: telnet: Unknown error"
- fi
- echo -en "\n" | tee -a "${lgsmlog}"
- echo -en "Telnet output:" | tee -a "${lgsmlog}"
- echo -en "\n ${sdtd_telnet_shutdown}" | tee -a "${lgsmlog}"
- echo -en "\n\n" | tee -a "${lgsmlog}"
- fi
- else
- fn_print_warn "Graceful: telnet: expect not installed: "
- fn_print_fail_eol_nl
- fn_script_log_warn "Graceful: telnet: expect not installed: FAIL"
- fi
-}
-
-# Attempts graceful shutdown by sending /save /stop.
-fn_stop_graceful_avorion() {
- fn_print_dots "Graceful: /save /stop"
- fn_script_log_info "Graceful: /save /stop"
- # Sends /save.
- tmux -L "${sessionname}" send-keys -t "${sessionname}" /save ENTER > /dev/null 2>&1
- sleep 5
- # Sends /quit.
- tmux -L "${sessionname}" send-keys -t "${sessionname}" /stop ENTER > /dev/null 2>&1
- # Waits up to 30 seconds giving the server time to shutdown gracefuly.
- for seconds in {1..30}; do
- check_status.sh
- if [ "${status}" == "0" ]; then
- fn_print_ok "Graceful: /save /stop: ${seconds}: "
- fn_print_ok_eol_nl
- fn_script_log_pass "Graceful: /save /stop: OK: ${seconds} seconds"
- break
- fi
- sleep 1
- fn_print_dots "Graceful: /save /stop: ${seconds}"
- done
- check_status.sh
- if [ "${status}" != "0" ]; then
- fn_print_error "Graceful: /save /stop: "
- fn_print_fail_eol_nl
- fn_script_log_error "Graceful: /save /stop: FAIL"
- fi
-}
-
-fn_stop_graceful_select() {
- if [ "${stopmode}" == "1" ]; then
- fn_stop_tmux
- elif [ "${stopmode}" == "2" ]; then
- fn_stop_graceful_ctrlc
- elif [ "${stopmode}" == "3" ]; then
- fn_stop_graceful_cmd "quit" 30
- elif [ "${stopmode}" == "4" ]; then
- fn_stop_graceful_cmd "quit" 120
- elif [ "${stopmode}" == "5" ]; then
- fn_stop_graceful_cmd "stop" 30
- elif [ "${stopmode}" == "6" ]; then
- fn_stop_graceful_cmd "q" 30
- elif [ "${stopmode}" == "7" ]; then
- fn_stop_graceful_cmd "exit" 30
- elif [ "${stopmode}" == "8" ]; then
- fn_stop_graceful_sdtd
- elif [ "${stopmode}" == "9" ]; then
- fn_stop_graceful_goldsrc
- elif [ "${stopmode}" == "10" ]; then
- fn_stop_graceful_avorion
- elif [ "${stopmode}" == "11" ]; then
- fn_stop_graceful_cmd "end" 30
- elif [ "${stopmode}" == "12" ]; then
- fn_stop_graceful_cmd "shutdown" 30
- fi
-}
-
-fn_stop_tmux() {
- fn_print_dots "${servername}"
- fn_script_log_info "tmux kill-session: ${sessionname}: ${servername}"
- # Kill tmux session.
- tmux -L "${sessionname}" kill-session -t "${sessionname}" > /dev/null 2>&1
- sleep 0.5
- check_status.sh
- if [ "${status}" == "0" ]; then
- fn_print_ok_nl "${servername}"
- fn_script_log_pass "Stopped ${servername}"
- else
- fn_print_fail_nl "Unable to stop ${servername}"
- fn_script_log_fatal "Unable to stop ${servername}"
- fi
-}
-
-# Checks if the server is already stopped.
-fn_stop_pre_check() {
- if [ "${status}" == "0" ]; then
- fn_print_info_nl "${servername} is already stopped"
- fn_script_log_error "${servername} is already stopped"
- else
- # Select graceful shutdown.
- fn_stop_graceful_select
- fi
- # Check status again, a kill tmux session if graceful shutdown failed.
- check_status.sh
- if [ "${status}" != "0" ]; then
- fn_stop_tmux
- fi
-}
-
-check.sh
-fn_print_dots "${servername}"
-
-info_game.sh
-fn_stop_pre_check
-# Remove lockfile.
-if [ -f "${lockdir}/${selfname}.lock" ]; then
- rm -f "${lockdir:?}/${selfname}.lock"
-fi
-
-if [ -z "${exitbypass}" ]; then
- core_exit.sh
-fi
diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh
deleted file mode 100644
index 7fe61e48a..000000000
--- a/lgsm/functions/command_test_alert.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_test_alert.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Sends a test alert.
-
-commandname="TEST-ALERT"
-commandaction="Sending Alert"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-fn_print_dots "${servername}"
-check.sh
-info_game.sh
-alert="test"
-alert.sh
-
-core_exit.sh
diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh
deleted file mode 100644
index be0816d15..000000000
--- a/lgsm/functions/command_ts3_server_pass.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_ts3_server_pass.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Changes TS3 serveradmin password.
-
-commandname="CHANGE-PASSWORD"
-commandaction="Changing password"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-fn_serveradmin_password_prompt() {
- fn_print_header
- fn_print_information_nl "You are about to change the ${gamename} ServerAdmin password."
- fn_print_warning_nl "${gamename} will restart during this process."
- echo -e ""
- if ! fn_prompt_yn "Continue?" Y; then
- exitcode=0
- core_exit.sh
- fi
- fn_script_log_info "Initiating ${gamename} ServerAdmin password change"
- read -rp "Enter new password: " newpassword
- fn_print_info_nl "Changing password"
- fn_script_log_info "Changing password"
-}
-
-fn_serveradmin_password_set() {
- # Start server in "new password mode".
- ts3serverpass="1"
- exitbypass="1"
- command_start.sh
- fn_firstcommand_reset
- fn_print_ok_nl "New password applied"
- fn_script_log_pass "New ServerAdmin password applied"
-}
-
-# Running functions.
-check.sh
-fn_serveradmin_password_prompt
-if [ "${status}" != "0" ]; then
- # Stop any running server.
- exitbypass="1"
- command_stop.sh
- fn_firstcommand_reset
- fn_serveradmin_password_set
- parms="serveradmin_password=\"${newpassword}\" inifile=\"${servercfgfullpath}\" > /dev/null 2>&1"
- ts3serverpass="0"
- command_restart.sh
- fn_firstcommand_reset
-else
- fn_serveradmin_password_set
- command_stop.sh
- fn_firstcommand_reset
-fi
-
-core_exit.sh
diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh
deleted file mode 100644
index ae5c2065c..000000000
--- a/lgsm/functions/command_update.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_update.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Handles updating of servers.
-
-commandname="UPDATE"
-commandaction="Updating"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-fn_print_dots ""
-check.sh
-core_logs.sh
-check_last_update.sh
-
-if [ "${shortname}" == "ts3" ]; then
- update_ts3.sh
-elif [ "${shortname}" == "mc" ]; then
- update_minecraft.sh
-elif [ "${shortname}" == "mcb" ]; then
- update_minecraft_bedrock.sh
-elif [ "${shortname}" == "pmc" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then
- update_papermc.sh
-elif [ "${shortname}" == "fctr" ]; then
- update_factorio.sh
-elif [ "${shortname}" == "mta" ]; then
- update_mta.sh
-elif [ "${shortname}" == "jk2" ]; then
- update_jediknight2.sh
-elif [ "${shortname}" == "vints" ]; then
- update_vintagestory.sh
-elif [ "${shortname}" == "ut99" ]; then
- update_ut99.sh
-else
- update_steamcmd.sh
-fi
-
-core_exit.sh
diff --git a/lgsm/functions/command_update_linuxgsm.sh b/lgsm/functions/command_update_linuxgsm.sh
deleted file mode 100644
index 569bc7cdb..000000000
--- a/lgsm/functions/command_update_linuxgsm.sh
+++ /dev/null
@@ -1,236 +0,0 @@
-#!/bin/bash
-# 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.
-
-commandname="UPDATE-LGSM"
-commandaction="Updating LinuxGSM"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-info_distro.sh
-
-fn_print_dots ""
-fn_script_log_info "Updating LinuxGSM"
-
-fn_print_dots "Selecting repo"
-fn_script_log_info "Selecting repo"
-# Select remotereponame
-curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1> /dev/null
-if [ $? != "0" ]; then
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1> /dev/null
- if [ $? != "0" ]; then
- fn_print_fail_nl "Selecting repo: Unable to to access GitHub or Bitbucket repositories"
- fn_script_log_fatal "Selecting repo: Unable to to access GitHub or Bitbucket repositories"
- core_exit.sh
- else
- remotereponame="Bitbucket"
- fn_print_ok_nl "Selecting repo: ${remotereponame}"
- fi
-else
- remotereponame="GitHub"
- fn_print_ok_nl "Selecting repo: ${remotereponame}"
-fi
-
-# Check linuxsm.sh
-echo -en "checking ${remotereponame} linuxgsm.sh...\c"
-if [ "${remotereponame}" == "GitHub" ]; then
- curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1> /dev/null
-else
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1> /dev/null
-fi
-if [ $? != "0" ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Checking ${remotereponame} linuxgsm.sh"
- fn_script_log_fatal "Curl returned error: $?"
- core_exit.sh
-fi
-
-if [ "${remotereponame}" == "GitHub" ]; then
- tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh"))
-else
- tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh"))
-fi
-
-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" "nohash"
-else
- fn_print_ok_eol_nl
- fn_script_log_pass "Checking ${remotereponame} linuxgsm.sh"
-fi
-
-# Check gameserver.sh
-# Compare gameserver.sh against linuxgsm.sh in the tmp dir.
-# Ignoring server specific vars.
-echo -en "checking ${selfname}...\c"
-fn_script_log_info "Checking ${selfname}"
-script_diff=$(diff <(sed '\/shortname/d;\/gameservername/d;\/gamename/d;\/githubuser/d;\/githubrepo/d;\/githubbranch/d' "${tmpdir}/linuxgsm.sh") <(sed '\/shortname/d;\/gameservername/d;\/gamename/d;\/githubuser/d;\/githubrepo/d;\/githubbranch/d' "${rootdir}/${selfname}"))
-if [ "${script_diff}" != "" ]; then
- fn_print_update_eol_nl
- fn_script_log_update "Checking ${selfname}"
- echo -en "backup ${selfname}...\c"
- fn_script_log_info "Backup ${selfname}"
- if [ ! -d "${backupdir}/script" ]; then
- mkdir -p "${backupdir}/script"
- fi
- cp "${rootdir}/${selfname}" "${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak"
- if [ $? != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Backup ${selfname}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Backup ${selfname}"
- echo -e "backup location ${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak"
- fn_script_log_pass "Backup location ${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak"
- fi
-
- echo -en "copying ${selfname}...\c"
- fn_script_log_info "copying ${selfname}"
- cp "${tmpdir}/linuxgsm.sh" "${rootdir}/${selfname}"
- sed -i "s+shortname=\"core\"+shortname=\"${shortname}\"+g" "${rootdir}/${selfname}"
- sed -i "s+gameservername=\"core\"+gameservername=\"${gameservername}\"+g" "${rootdir}/${selfname}"
- sed -i "s+gamename=\"core\"+gamename=\"${gamename}\"+g" "${rootdir}/${selfname}"
- sed -i "s+githubuser=\"GameServerManagers\"+githubuser=\"${githubuser}\"+g" "${rootdir}/${selfname}"
- sed -i "s+githubrepo=\"LinuxGSM\"+githubrepo=\"${githubrepo}\"+g" "${rootdir}/${selfname}"
- sed -i "s+githubbranch=\"master\"+githubbranch=\"${githubbranch}\"+g" "${rootdir}/${selfname}"
-
- if [ $? != "0" ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "copying ${selfname}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "copying ${selfname}"
- fi
-else
- fn_print_ok_eol_nl
- fn_script_log_info "Checking ${selfname}"
-fi
-
-# Check _default.cfg.
-echo -en "checking ${remotereponame} config _default.cfg...\c"
-fn_script_log_info "Checking ${remotereponame} config _default.cfg"
-if [ "${remotereponame}" == "GitHub" ]; then
- curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1> /dev/null
-else
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1> /dev/null
-fi
-if [ $? != "0" ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Checking ${remotereponame} config _default.cfg"
- fn_script_log_fatal "Curl returned error: $?"
- core_exit.sh
-fi
-
-if [ "${remotereponame}" == "GitHub" ]; then
- config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg"))
-else
- config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg"))
-fi
-
-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" "nohash"
- alert="config"
- alert.sh
-else
- fn_print_ok_eol_nl
- fn_script_log_pass "Checking ${remotereponame} config _default.cfg"
-fi
-
-# Check distro csv. ${datadir}/${distroid}-${distroversioncsv}.csv
-if [ -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then
- echo -en "checking ${remotereponame} config ${distroid}-${distroversioncsv}.csv...\c"
- fn_script_log_info "Checking ${remotereponame} ${distroid}-${distroversioncsv}.csv"
- if [ "${remotereponame}" == "GitHub" ]; then
- curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv" 1> /dev/null
- else
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv" 1> /dev/null
- fi
- if [ $? != "0" ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Checking ${remotereponame} ${distroid}-${distroversioncsv}.csv"
- fn_script_log_fatal "Curl returned error: $?"
- core_exit.sh
- fi
-
- if [ "${remotereponame}" == "GitHub" ]; then
- config_file_diff=$(diff "${datadir}/${distroid}-${distroversioncsv}.csv" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv"))
- else
- config_file_diff=$(diff "${datadir}/${distroid}-${distroversioncsv}.csv" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv"))
- fi
-
- if [ "${config_file_diff}" != "" ]; then
- fn_print_update_eol_nl
- fn_script_log_update "Checking ${remotereponame} ${distroid}-${distroversioncsv}.csv"
- rm -f "${datadir:?}/${distroid}-${distroversioncsv}.csv"
- fn_fetch_file_github "lgsm/data" "${distroid}-${distroversioncsv}.csv" "${datadir}" "nochmodx" "norun" "noforce" "nohash"
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Checking ${remotereponame} ${distroid}-${distroversioncsv}.csv"
- fi
-fi
-# Check and update modules.
-if [ -n "${functionsdir}" ]; then
- if [ -d "${functionsdir}" ]; then
- (
- cd "${functionsdir}" || exit
- for functionfile in *; do
- # check if module exists in the repo and remove if missing.
- # commonly used if module names change.
- echo -en "checking ${remotereponame} module ${functionfile}...\c"
- github_file_url_dir="lgsm/functions"
- if [ "${remotereponame}" == "GitHub" ]; then
- curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${functionfile}" 1> /dev/null
- else
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${functionfile}" 1> /dev/null
- fi
- if [ $? != 0 ]; then
- fn_print_error_eol_nl
- fn_script_log_error "Checking ${remotereponame} module ${functionfile}"
- echo -en "removing module ${functionfile}...\c"
- if ! rm -f "${functionfile:?}"; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Removing module ${functionfile}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Removing module ${functionfile}"
- fi
- else
- # compare file
- if [ "${remotereponame}" == "GitHub" ]; then
- function_file_diff=$(diff "${functionsdir}/${functionfile}" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${functionfile}"))
- else
- function_file_diff=$(diff "${functionsdir}/${functionfile}" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${functionfile}"))
- fi
-
- # results
- if [ "${function_file_diff}" != "" ]; then
- fn_print_update_eol_nl
- fn_script_log_update "Checking ${remotereponame} module ${functionfile}"
- rm -rf "${functionsdir:?}/${functionfile}"
- fn_update_function
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Checking ${remotereponame} module ${functionfile}"
- fi
- fi
- done
- )
- fi
-fi
-
-fn_print_ok_nl "Updating functions"
-fn_script_log_pass "Updating functions"
-
-core_exit.sh
diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh
deleted file mode 100644
index 15257a3e2..000000000
--- a/lgsm/functions/command_validate.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_validate.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Runs a server validation.
-
-commandname="VALIDATE"
-commandaction="Validating"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-fn_validate() {
- fn_print_warn "Validate might overwrite some customised files"
- fn_script_log_warn "${commandaction} server: Validate might overwrite some customised files"
- totalseconds=3
- for seconds in {3..1}; do
- fn_print_warn "Validate might overwrite some customised files: ${totalseconds}"
- totalseconds=$((totalseconds - 1))
- sleep 1
- if [ "${seconds}" == "0" ]; then
- break
- fi
- done
- fn_print_warn_nl "Validate might overwrite some customised files"
-
- fn_dl_steamcmd
-}
-
-# The location where the builds are checked and downloaded.
-remotelocation="SteamCMD"
-check.sh
-
-fn_print_dots "${remotelocation}"
-
-if [ "${status}" != "0" ]; then
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- fn_validate
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
-else
- fn_validate
-fi
-
-core_exit.sh
diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh
deleted file mode 100644
index e1677e827..000000000
--- a/lgsm/functions/command_wipe.sh
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_backup.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Wipes server data, useful after updates for some games like Rust.
-
-commandname="WIPE"
-commandaction="Wiping"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-# Provides an exit code upon error.
-fn_wipe_exit_code() {
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fi
-}
-
-# Removes files to wipe server.
-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
- 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 .sav file(s) to remove"
- fn_script_log_pass "no .sav file(s) to remove"
- fn_sleep_time
- fi
- fi
- # 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_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 "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 "Map wipe will reset the map data and keep blueprint data"
-}
-
-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 "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_nl "Server wipe will reset the map data and remove blueprint data"
-}
-
-# Will change the seed if the seed is not defined by the user.
-fn_wipe_random_seed() {
- 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 [ -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_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- 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_files
- fn_wipe_random_seed
- fn_print_complete_nl "${wipetype}"
- fn_script_log_pass "${wipetype}"
- fi
-else
- fn_print_ok_nl "Wipe not required"
- fn_script_log_pass "Wipe not required"
-fi
-core_exit.sh
diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh
deleted file mode 100644
index 0c32d3c77..000000000
--- a/lgsm/functions/compress_unreal2_maps.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-# LinuxGSM compress_unreal2_maps.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Compresses unreal maps.
-
-commandname="MAP-COMPRESSOR"
-commandaction="Compressing maps"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-fn_print_header
-echo -e "Will compress all maps in:"
-echo -e ""
-pwd
-echo -e ""
-echo -e "Compressed maps saved to:"
-echo -e ""
-echo -e "${compressedmapsdir}"
-echo -e ""
-if ! fn_prompt_yn "Start compression?" Y; then
- exitcode=0
- core_exit.sh
-fi
-mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1
-rm -rfv "${serverfiles:?}/Maps/"*.ut2.uz2
-cd "${systemdir}" || exit
-for map in "${serverfiles}/Maps/"*; do
- ./ucc-bin compress "${map}" --nohomedir
-done
-mv -fv "${serverfiles}/Maps/"*.ut2.uz2 "${compressedmapsdir}"
-
-core_exit.sh
diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh
deleted file mode 100644
index 9aa074ba9..000000000
--- a/lgsm/functions/compress_ut99_maps.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-# LinuxGSM compress_ut99_maps.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Compresses unreal maps.
-
-commandname="MAP-COMPRESSOR"
-commandaction="Compressing maps"
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-fn_firstcommand_set
-
-check.sh
-fn_print_header
-echo -e "Will compress all maps in:"
-echo -e ""
-pwd
-echo -e ""
-echo -e "Compressed maps saved to:"
-echo -e ""
-echo -e "${compressedmapsdir}"
-echo -e ""
-if ! fn_prompt_yn "Start compression?" Y; then
- exitcode=0
- core_exit.sh
-fi
-mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1
-rm -rfv "${serverfiles:?}/Maps/"*.unr.uz
-cd "${systemdir}" || exit
-for map in "${serverfiles}/Maps/"*; do
- ./ucc-bin compress "${map}" --nohomedir
-done
-mv -fv "${serverfiles}/Maps/"*.unr.uz "${compressedmapsdir}"
-
-core_exit.sh
diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh
deleted file mode 100644
index 53a60cc1a..000000000
--- a/lgsm/functions/core_dl.sh
+++ /dev/null
@@ -1,625 +0,0 @@
-#!/bin/bash
-# LinuxGSM core_dl.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Deals with all downloads for LinuxGSM.
-
-# remote_fileurl: The URL of the file: http://example.com/dl/File.tar.bz2
-# local_filedir: location the file is to be saved: /home/server/lgsm/tmp
-# local_filename: name of file (this can be different from the url name): file.tar.bz2
-# 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
-# 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}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}"
-# fn_fetch_file "http://example.com/file.tar.bz2" "http://example.com/file2.tar.bz2" "file.tar.bz2" "file2.tar.bz2" "/some/dir" "file.tar.bz2" "chmodx" "run" "forcedl" "10cd7353aa9d758a075c600a6dd193fd"
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_dl_steamcmd() {
- fn_print_start_nl "${remotelocation}"
- fn_script_log_info "${commandaction} ${selfname}: ${remotelocation}"
- if [ -n "${branch}" ]; then
- echo -e "Branch: ${branch}"
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -n "${betapassword}" ]; then
- echo -e "Branch password: ${betapassword}"
- fn_script_log_info "Branch password: ${betapassword}"
- fi
- if [ -d "${steamcmddir}" ]; then
- cd "${steamcmddir}" || exit
- fi
-
- # Unbuffer will allow the output of steamcmd not buffer allowing a smooth output.
- # unbuffer us part of the expect package.
- if [ "$(command -v unbuffer)" ]; then
- unbuffer="unbuffer"
- fi
-
- # Validate will be added as a parameter if required.
- if [ "${commandname}" == "VALIDATE" ] || [ "${commandname}" == "INSTALL" ]; then
- validate="validate"
- fi
-
- # To do error checking for SteamCMD the output of steamcmd will be saved to a log.
- steamcmdlog="${lgsmlogdir}/${selfname}-steamcmd.log"
-
- # clear previous steamcmd log
- if [ -f "${steamcmdlog}" ]; then
- rm -f "${steamcmdlog:?}"
- fi
- counter=0
- while [ "${counter}" == "0" ] || [ "${exitcode}" != "0" ]; do
- counter=$((counter + 1))
- # Select SteamCMD parameters
- # If GoldSrc (appid 90) servers. GoldSrc (appid 90) require extra commands.
- if [ "${appid}" == "90" ]; then
- # If using a specific branch.
- if [ -n "${branch}" ] && [ -n "${betapassword}" ]; then
- ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}"
- elif [ -n "${branch}" ]; then
- ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}"
- else
- ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}"
- fi
- # Force Windows Platform type.
- elif [ "${steamcmdforcewindows}" == "yes" ]; then
- if [ -n "${branch}" ] && [ -n "${betapassword}" ]; then
- ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}"
- elif [ -n "${branch}" ]; then
- ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}"
- else
- ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}"
- fi
- # All other servers.
- else
- if [ -n "${branch}" ] && [ -n "${betapassword}" ]; then
- ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}"
- elif [ -n "${branch}" ]; then
- ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}"
- else
- ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}"
- fi
- 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 -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 disk space to download server files"
- fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files"
- core_exit.sh
- # Not enough space.
- elif [ -n "$(grep "0x212" "${steamcmdlog}" | tail -1)" ]; then
- fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files"
- fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files"
- core_exit.sh
- # Need tp purchase game.
- elif [ -n "$(grep "No subscription" "${steamcmdlog}" | tail -1)" ]; then
- fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Steam account does not have a license for the required game"
- fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Steam account does not have a license for the required game"
- core_exit.sh
- # Two-factor authentication failure
- elif [ -n "$(grep "Two-factor code mismatch" "${steamcmdlog}" | tail -1)" ]; then
- fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Two-factor authentication failure"
- fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Two-factor authentication failure"
- core_exit.sh
- # Incorrect Branch password
- elif [ -n "$(grep "Password check for AppId" "${steamcmdlog}" | tail -1)" ]; then
- fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: betapassword is incorrect"
- fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: betapassword is incorrect"
- core_exit.sh
- # Update did not finish.
- elif [ -n "$(grep "0x402" "${steamcmdlog}" | tail -1)" ] || [ -n "$(grep "0x602" "${steamcmdlog}" | tail -1)" ]; then
- fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Update required but not completed - check network"
- fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Update required but not completed - check network"
- else
- fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Unknown error occured"
- echo -en "Please provide content log to LinuxGSM developers https://linuxgsm.com/steamcmd-error"
- fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Unknown error occured"
- fi
- elif [ "${exitcode}" != 0 ]; then
- fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Exit code: ${exitcode}"
- fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Exit code: ${exitcode}"
- else
- fn_print_complete_nl "${commandaction} ${selfname}: ${remotelocation}"
- fn_script_log_pass "${commandaction} ${selfname}: ${remotelocation}"
- fi
-
- if [ "${counter}" -gt "10" ]; then
- fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Did not complete the download, too many retrys"
- fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Did not complete the download, too many retrys"
- core_exit.sh
- fi
- done
-}
-
-# Emptys contents of the LinuxGSM tmpdir.
-fn_clear_tmp() {
- echo -en "clearing LinuxGSM tmp directory..."
- if [ -d "${tmpdir}" ]; then
- rm -rf "${tmpdir:?}/"*
- local exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_error_eol_nl
- fn_script_log_error "clearing LinuxGSM tmp directory"
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "clearing LinuxGSM tmp directory"
- fi
- fi
-}
-
-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
- hashsumcmd=$(${hashbin} "${local_filedir}/${local_filename}" | awk '{print $1}')
- if [ "${hashsumcmd}" != "${hash}" ]; then
- fn_print_fail_eol_nl
- 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 ${hashtype}"
- fn_script_log_info "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}"
- fn_script_log_info "Expected ${hashtype} checksum: ${hash}"
- fi
- fi
-}
-
-# Extracts bzip2, gzip or zip files.
-# Extracts can be defined in code like so:
-# fn_dl_extract "${local_filedir}" "${local_filename}" "${extractdest}" "${extractsrc}"
-# fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles"
-fn_dl_extract() {
- local_filedir="${1}"
- local_filename="${2}"
- extractdest="${3}"
- extractsrc="${4}"
- # Extracts archives.
- echo -en "extracting ${local_filename}..."
-
- if [ ! -d "${extractdest}" ]; then
- mkdir "${extractdest}"
- fi
- if [ ! -f "${local_filedir}/${local_filename}" ]; then
- fn_print_fail_eol_nl
- echo -en "file ${local_filedir}/${local_filename} not found"
- fn_script_log_fatal "Extracting ${local_filename}"
- fn_script_log_fatal "File ${local_filedir}/${local_filename} not found"
- core_exit.sh
- fi
- mime=$(file -b --mime-type "${local_filedir}/${local_filename}")
- if [ "${mime}" == "application/gzip" ] || [ "${mime}" == "application/x-gzip" ]; then
- if [ -n "${extractsrc}" ]; then
- extractcmd=$(tar -zxf "${local_filedir}/${local_filename}" -C "${extractdest}" --strip-components=1 "${extractsrc}")
- else
- extractcmd=$(tar -zxf "${local_filedir}/${local_filename}" -C "${extractdest}")
- fi
- elif [ "${mime}" == "application/x-bzip2" ]; then
- if [ -n "${extractsrc}" ]; then
- extractcmd=$(tar -jxf "${local_filedir}/${local_filename}" -C "${extractdest}" --strip-components=1 "${extractsrc}")
- else
- extractcmd=$(tar -jxf "${local_filedir}/${local_filename}" -C "${extractdest}")
- fi
- elif [ "${mime}" == "application/x-xz" ]; then
- if [ -n "${extractsrc}" ]; then
- extractcmd=$(tar -Jxf "${local_filedir}/${local_filename}" -C "${extractdest}" --strip-components=1 "${extractsrc}")
- else
- extractcmd=$(tar -Jxf "${local_filedir}/${local_filename}" -C "${extractdest}")
- fi
- elif [ "${mime}" == "application/zip" ]; then
- if [ -n "${extractsrc}" ]; then
- extractcmd=$(unzip -qoj -d "${extractdest}" "${local_filedir}/${local_filename}" "${extractsrc}"/*)
- else
- extractcmd=$(unzip -qo -d "${extractdest}" "${local_filedir}/${local_filename}")
- fi
- fi
- local exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Extracting ${local_filename}"
- if [ -f "${lgsmlog}" ]; then
- echo -e "${extractcmd}" >> "${lgsmlog}"
- fi
- echo -e "${extractcmd}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Extracting ${local_filename}"
- fi
-}
-
-# Trap to remove file download if canceled before completed.
-fn_fetch_trap() {
- echo -e ""
- echo -en "downloading ${local_filename}..."
- fn_print_canceled_eol_nl
- fn_script_log_info "Downloading ${local_filename}...CANCELED"
- fn_sleep_time
- rm -f "${local_filedir:?}/${local_filename}"
- echo -en "downloading ${local_filename}..."
- fn_print_removed_eol_nl
- fn_script_log_info "Downloading ${local_filename}...REMOVED"
- core_exit.sh
-}
-
-# Will check a file exists and download it. Will not exit if fails to download.
-fn_check_file() {
- remote_fileurl="${1}"
- remote_fileurl_backup="${2}"
- remote_fileurl_name="${3}"
- remote_fileurl_backup_name="${4}"
- remote_filename="${5}"
- # If backup fileurl exists include it.
- if [ -n "${remote_fileurl_backup}" ]; then
- # counter set to 0 to allow second try
- counter=0
- remote_fileurls_array=(remote_fileurl remote_fileurl_backup)
- else
- # counter set to 1 to not allow second try
- counter=1
- remote_fileurls_array=(remote_fileurl)
- fi
- for remote_fileurl_array in "${remote_fileurls_array[@]}"; do
- if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then
- fileurl="${remote_fileurl}"
- fileurl_name="${remote_fileurl_name}"
- elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then
- fileurl="${remote_fileurl_backup}"
- fileurl_name="${remote_fileurl_backup_name}"
- fi
- counter=$((counter + 1))
- echo -en "checking ${fileurl_name} ${remote_filename}...\c"
- curlcmd=$(curl --output /dev/null --silent --head --fail "${fileurl}" 2>&1)
- local exitcode=$?
-
- # On first try will error. On second try will fail.
- if [ "${exitcode}" != 0 ]; then
- if [ ${counter} -ge 2 ]; then
- fn_print_fail_eol_nl
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_fatal "Checking ${remote_filename}"
- fn_script_log_fatal "${fileurl}"
- checkflag=1
- fi
- else
- fn_print_error_eol_nl
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_error "Checking ${remote_filename}"
- fn_script_log_error "${fileurl}"
- checkflag=2
- fi
- fi
- else
- fn_print_ok_eol
- echo -en "\033[2K\\r"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_pass "Checking ${remote_filename}"
- checkflag=0
- fi
- break
- fi
- done
-
- if [ -f "${local_filedir}/${local_filename}" ]; then
- fn_dl_hash
- # Execute file if run is set.
- if [ "${run}" == "run" ]; then
- # shellcheck source=/dev/null
- source "${local_filedir}/${local_filename}"
- fi
- fi
-}
-
-fn_fetch_file() {
- 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}"
- hash="${10:-0}"
-
- # Download file if missing or download forced.
- if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then
- # If backup fileurl exists include it.
- if [ -n "${remote_fileurl_backup}" ]; then
- # counter set to 0 to allow second try
- counter=0
- remote_fileurls_array=(remote_fileurl remote_fileurl_backup)
- else
- # counter set to 1 to not allow second try
- counter=1
- remote_fileurls_array=(remote_fileurl)
- fi
- for remote_fileurl_array in "${remote_fileurls_array[@]}"; do
- if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then
- fileurl="${remote_fileurl}"
- fileurl_name="${remote_fileurl_name}"
- elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then
- fileurl="${remote_fileurl_backup}"
- fileurl_name="${remote_fileurl_backup_name}"
- fi
- counter=$((counter + 1))
- if [ ! -d "${local_filedir}" ]; then
- mkdir -p "${local_filedir}"
- fi
- # Trap will remove part downloaded files if canceled.
- trap fn_fetch_trap INT
- curlcmd=(curl --connect-timeout 10 --fail -L -o "${local_filedir}/${local_filename}" --retry 2)
-
- # if is large file show progress, else be silent
- local exitcode=""
- large_files=("bz2" "gz" "zip" "jar" "xz")
- if grep -qE "(^|\s)${local_filename##*.}(\s|$)" <<< "${large_files[@]}"; then
- echo -en "downloading ${local_filename}..."
- fn_sleep_time
- echo -en "\033[1K"
- "${curlcmd[@]}" --progress-bar "${fileurl}" 2>&1
- exitcode="$?"
- else
- echo -en "fetching ${fileurl_name} ${local_filename}...\c"
- "${curlcmd[@]}" --silent --show-error "${fileurl}" 2>&1
- exitcode="$?"
- fi
-
- # Download will fail if downloads a html file.
- if [ -f "${local_filedir}/${local_filename}" ]; then
- if head -n 1 "${local_filedir}/${local_filename}" | grep -q "DOCTYPE"; then
- rm "${local_filedir:?}/${local_filename:?}"
- local exitcode=2
- fi
- fi
-
- # On first try will error. On second try will fail.
- if [ "${exitcode}" != 0 ]; then
- if [ ${counter} -ge 2 ]; then
- fn_print_fail_eol_nl
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_fatal "Downloading ${local_filename}..."
- fn_script_log_fatal "${fileurl}"
- fi
- core_exit.sh
- else
- fn_print_error_eol_nl
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_error "Downloading ${local_filename}..."
- fn_script_log_error "${fileurl}"
- fi
- fi
- else
- fn_print_ok_eol_nl
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_pass "Downloading ${local_filename}..."
- fi
-
- # Make file executable if chmodx is set.
- if [ "${chmodx}" == "chmodx" ]; then
- chmod +x "${local_filedir}/${local_filename}"
- fi
-
- # Remove trap.
- trap - INT
-
- break
- fi
- done
- fi
-
- if [ -f "${local_filedir}/${local_filename}" ]; then
- fn_dl_hash
- # Execute file if run is set.
- if [ "${run}" == "run" ]; then
- # shellcheck source=/dev/null
- source "${local_filedir}/${local_filename}"
- fi
- fi
-}
-
-# GitHub file download functions.
-# Used to simplify downloading specific files from GitHub.
-
-# github_fileurl_dir: the directory of the file in the GitHub: lgsm/functions
-# github_fileurl_name: the filename of the file to download from GitHub: core_messages.sh
-# githuburl: the full GitHub url
-
-# remote_fileurl: The URL of the file: http://example.com/dl/File.tar.bz2
-# local_filedir: location the file is to be saved: /home/server/lgsm/tmp
-# local_filename: name of file (this can be different from the url name): file.tar.bz2
-# 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
-# hash: Optional, set an hash sum and will compare it against the file.
-
-# Fetches files from the Git repo.
-fn_fetch_file_github() {
- github_fileurl_dir="${1}"
- github_fileurl_name="${2}"
- # For legacy versions - code can be removed at a future date
- if [ "${legacymode}" == "1" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork.
- elif [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- else
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- fi
- remote_fileurl_name="GitHub"
- remote_fileurl_backup_name="Bitbucket"
- local_filedir="${3}"
- local_filename="${github_fileurl_name}"
- chmodx="${4:-0}"
- run="${5:-0}"
- forcedl="${6:-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}" "${hash}"
-}
-
-fn_check_file_github() {
- github_fileurl_dir="${1}"
- github_fileurl_name="${2}"
- if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- else
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- fi
- remote_fileurl_name="GitHub"
- remote_fileurl_backup_name="Bitbucket"
- fn_check_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${github_fileurl_name}"
-}
-
-# Fetches config files from the Git repo.
-fn_fetch_config() {
- github_fileurl_dir="${1}"
- github_fileurl_name="${2}"
- # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork.
- if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- else
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- fi
- remote_fileurl_name="GitHub"
- remote_fileurl_backup_name="Bitbucket"
- local_filedir="${3}"
- local_filename="${4}"
- chmodx="nochmodx"
- run="norun"
- forcedl="noforce"
- 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}" "${hash}"
-}
-
-# Fetches modules from the Git repo during first download.
-fn_fetch_function() {
- github_fileurl_dir="lgsm/functions"
- github_fileurl_name="${functionfile}"
- # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork.
- if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- else
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- fi
- remote_fileurl_name="GitHub"
- remote_fileurl_backup_name="Bitbucket"
- local_filedir="${functionsdir}"
- local_filename="${github_fileurl_name}"
- chmodx="chmodx"
- run="run"
- forcedl="noforce"
- 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}" "${hash}"
-}
-
-# Fetches modules from the Git repo during update-lgsm.
-fn_update_function() {
- github_fileurl_dir="lgsm/functions"
- github_fileurl_name="${functionfile}"
- # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork.
- if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}"
- else
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}"
- fi
- remote_fileurl_name="GitHub"
- remote_fileurl_backup_name="Bitbucket"
- local_filedir="${functionsdir}"
- local_filename="${github_fileurl_name}"
- chmodx="chmodx"
- run="norun"
- forcedl="noforce"
- 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}" "${hash}"
-
-}
-
-# 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
-}
diff --git a/lgsm/functions/core_exit.sh b/lgsm/functions/core_exit.sh
deleted file mode 100644
index 95d9d8cae..000000000
--- a/lgsm/functions/core_exit.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_exit_dev_debug() {
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e ""
- echo -e "${functionselfname} exiting with code: ${exitcode}"
- if [ -f "${rootdir}/dev-debug.log" ]; then
- grep "functionfile=" "${rootdir}/dev-debug.log" | sed 's/functionfile=//g' > "${rootdir}/dev-debug-function-order.log"
- fi
- fi
-}
-
-# If running dependency check as root will remove any files that belong to root user.
-if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then
- find "${lgsmdir}"/ -group root -prune -exec rm -rf {} + > /dev/null 2>&1
- find "${logdir}"/ -group root -prune -exec rm -rf {} + > /dev/null 2>&1
-fi
-
-if [ "${exitbypass}" ]; then
- unset exitbypass
-elif [ "${exitcode}" != "0" ]; then
- # List LinuxGSM version in logs
- fn_script_log_info "LinuxGSM version: ${version}"
- if [ "${exitcode}" == "1" ]; then
- fn_script_log_fatal "${functionselfname} exiting with code: ${exitcode}"
- elif [ "${exitcode}" == "2" ]; then
- fn_script_log_error "${functionselfname} exiting with code: ${exitcode}"
- elif [ "${exitcode}" == "3" ]; then
- fn_script_log_warn "${functionselfname} exiting with code: ${exitcode}"
- else
- fn_script_log_warn "${functionselfname} exiting with code: ${exitcode}"
- fi
- fn_exit_dev_debug
- # remove trap.
- trap - INT
- exit "${exitcode}"
-elif [ "${exitcode}" ] && [ "${exitcode}" == "0" ]; then
- # List LinuxGSM version in logs
- fn_script_log_info "LinuxGSM version: ${version}"
- fn_script_log_pass "${functionselfname} exiting with code: ${exitcode}"
- fn_exit_dev_debug
- # remove trap.
- trap - INT
- exit "${exitcode}"
-else
- # List LinuxGSM version in logs
- fn_script_log_info "LinuxGSM version: ${version}"
- fn_print_error "No exit code set"
- fn_script_log_pass "${functionselfname} exiting with code: NOT SET"
- fn_exit_dev_debug
- # remove trap.
- trap - INT
- exit "${exitcode}"
-fi
diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh
deleted file mode 100644
index b301b7e46..000000000
--- a/lgsm/functions/core_functions.sh
+++ /dev/null
@@ -1,816 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-modulesversion="v23.2.3"
-
-# Core
-
-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" "nohash"
- else
- 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" "nohash"
- else
- 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" "nohash"
- else
- fn_bootstrap_fetch_file_github "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash"
- fi
-}
-
-core_exit.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-core_getopt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-core_trap.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-core_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-core_github.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Commands
-
-command_backup.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_console.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_debug.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_details.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_donate.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_postdetails.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_test_alert.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_monitor.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_start.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_stop.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_validate.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_install.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_install_resources_mta.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_squad_license.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_mods_install.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_mods_update.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_mods_remove.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_fastdl.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_ts3_server_pass.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_restart.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_skeleton.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_wipe.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_send.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Checks
-
-check.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_config.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_deps.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_executable.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_glibc.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_ip.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_last_update.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_logs.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_permissions.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_root.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_status.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_system_dir.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_system_requirements.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_tmuxception.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_version.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Compress
-
-compress_unreal2_maps.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-compress_ut99_maps.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Mods
-
-mods_list.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-mods_core.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Dev
-
-command_dev_clear_functions.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_debug.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_detect_deps.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_detect_glibc.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_detect_ldd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_query_raw.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Fix
-
-fix.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ark.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_av.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_arma3.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_armar.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_bt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_bo.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_cmw.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_csgo.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_dst.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_hw.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ins.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_kf.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_kf2.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_lo.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_mcb.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_mta.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_nmrih.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_onset.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ro.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_rust.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_rw.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_sfc.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_st.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_terraria.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_tf2.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ut3.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_rust.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_samp.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_sdtd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_sof2.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_squad.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ts3.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ut2k4.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ut.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_unt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_vh.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_wurm.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_zmr.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Info
-
-info_distro.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-info_game.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-info_messages.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-info_stats.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Alert
-
-alert.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_discord.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_email.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_ifttt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_mailgun.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_pushbullet.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_pushover.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_gotify.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_telegram.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_rocketchat.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_slack.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-# Logs
-
-core_logs.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Query
-
-query_gamedig.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Update
-
-command_update_functions.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_update_linuxgsm.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_update.sh() {
- 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
-}
-
-update_minecraft.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_minecraft_bedrock.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_papermc.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_mta.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_factorio.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_jediknight2.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_vintagestory.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_ut99.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fn_update_functions.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-#
-## Installer functions
-#
-
-fn_autoinstall() {
- autoinstall=1
- command_install.sh
-}
-
-install_complete.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_config.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_factorio_save.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_dst_token.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_eula.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_gsquery.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_gslt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_header.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_logs.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_retry.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_server_dir.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-install_server_files.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_stats.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_ts3.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_ts3db.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_ut2k4.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_dl_ut2k4.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_ut2k4_key.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Calls code required for legacy servers
-core_legacy.sh
-
-# Creates tmp dir if missing
-if [ ! -d "${tmpdir}" ]; then
- mkdir -p "${tmpdir}"
-fi
-
-# Creates lock dir if missing
-if [ ! -d "${lockdir}" ]; then
- mkdir -p "${lockdir}"
-fi
-
-# Calls on-screen messages (bootstrap)
-core_messages.sh
-
-#Calls file downloader (bootstrap)
-core_dl.sh
-
-# Calls the global Ctrl-C trap
-core_trap.sh
diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh
deleted file mode 100644
index 808fe2e2a..000000000
--- a/lgsm/functions/core_getopt.sh
+++ /dev/null
@@ -1,215 +0,0 @@
-#!/bin/bash
-# LinuxGSM core_getopt.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: getopt arguments.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-### Define all commands here.
-## User commands | Trigger commands | Description
-# Standard commands.
-cmd_install=("i;install" "command_install.sh" "Install the server.")
-cmd_auto_install=("ai;auto-install" "fn_autoinstall" "Install the server without prompts.")
-cmd_start=("st;start" "command_start.sh" "Start the server.")
-cmd_stop=("sp;stop" "command_stop.sh" "Stop the server.")
-cmd_restart=("r;restart" "command_restart.sh" "Restart the server.")
-cmd_details=("dt;details" "command_details.sh" "Display server information.")
-cmd_postdetails=("pd;postdetails" "command_postdetails.sh" "Post details to termbin.com (removing passwords).")
-cmd_backup=("b;backup" "command_backup.sh" "Create backup archives of the server.")
-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.")
-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.")
-# 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.")
-# Server with mods-install.
-cmd_mods_install=("mi;mods-install" "command_mods_install.sh" "View and install available mods/addons.")
-cmd_mods_remove=("mr;mods-remove" "command_mods_remove.sh" "View and remove an installed mod/addon.")
-cmd_mods_update=("mu;mods-update" "command_mods_update.sh" "Update installed mods/addons.")
-# Server specific.
-cmd_change_password=("pw;change-password" "command_ts3_server_pass.sh" "Change TS3 serveradmin password.")
-cmd_install_default_resources=("ir;install-default-resources" "command_install_resources_mta.sh" "Install the MTA default resources.")
-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.")
-cmd_install_dst_token=("ct;cluster-token" "install_dst_token.sh" "Configure cluster token.")
-cmd_install_squad_license=("li;license" "install_squad_license.sh" "Add your Squad server license.")
-cmd_fastdl=("fd;fastdl" "command_fastdl.sh" "Build a FastDL directory.")
-# Dev commands.
-cmd_dev_debug=("dev;developer" "command_dev_debug.sh" "Enable developer Mode.")
-cmd_dev_detect_deps=("dd;detect-deps" "command_dev_detect_deps.sh" "Detect required dependencies.")
-cmd_dev_detect_glibc=("dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect required glibc.")
-cmd_dev_detect_ldd=("dl;detect-ldd" "command_dev_detect_ldd.sh" "Detect required dynamic dependencies.")
-cmd_dev_query_raw=("qr;query-raw" "command_dev_query_raw.sh" "The raw output of gamedig and gsquery.")
-cmd_dev_clear_functions=("cf;clear-functions" "command_dev_clear_functions.sh" "Delete the contents of the functions dir.")
-
-### Set specific opt here.
-
-currentopt=("${cmd_start[@]}" "${cmd_stop[@]}" "${cmd_restart[@]}" "${cmd_monitor[@]}" "${cmd_test_alert[@]}" "${cmd_details[@]}" "${cmd_postdetails[@]}" "${cmd_skeleton[@]}")
-
-# Update LinuxGSM.
-currentopt+=("${cmd_update_linuxgsm[@]}")
-
-# Exclude noupdate games here.
-if [ "${shortname}" == "jk2" ] || [ "${engine}" != "idtech3" ]; then
- if [ "${shortname}" != "bf1942" ] && [ "${shortname}" != "bfv" ] && [ "${engine}" != "idtech2" ] && [ "${engine}" != "iw2.0" ] && [ "${engine}" != "iw3.0" ] && [ "${engine}" != "quake" ] && [ "${shortname}" != "samp" ] && [ "${shortname}" != "ut2k4" ]; then
- currentopt+=("${cmd_update[@]}" "${cmd_check_update[@]}")
- # force update for SteamCMD or Multi Theft Auto only.
- if [ "${appid}" ] || [ "${shortname}" == "mta" ]; then
- currentopt+=("${cmd_force_update[@]}")
- fi
- fi
-fi
-
-# Validate and check-update command.
-if [ "${appid}" ]; then
- currentopt+=("${cmd_validate[@]}")
-fi
-
-# Backup.
-currentopt+=("${cmd_backup[@]}")
-
-# Console & Debug.
-currentopt+=("${cmd_console[@]}" "${cmd_debug[@]}")
-
-# Console send.
-if [ "${consoleinteract}" == "yes" ]; then
- currentopt+=("${cmd_send[@]}")
-fi
-
-## Game server exclusive commands.
-
-# FastDL command.
-if [ "${engine}" == "source" ]; then
- currentopt+=("${cmd_fastdl[@]}")
-fi
-
-# TeamSpeak exclusive.
-if [ "${shortname}" == "ts3" ]; then
- currentopt+=("${cmd_change_password[@]}")
-fi
-
-# Rust exclusive.
-if [ "${shortname}" == "rust" ]; then
- currentopt+=("${cmd_fullwipe[@]}" "${cmd_mapwipe[@]}")
-fi
-
-# Unreal exclusive.
-if [ "${engine}" == "unreal2" ]; then
- if [ "${shortname}" == "ut2k4" ]; then
- currentopt+=("${cmd_install_cdkey[@]}" "${cmd_map_compressor_u2[@]}")
- else
- currentopt+=("${cmd_map_compressor_u2[@]}")
- fi
-fi
-if [ "${engine}" == "unreal" ]; then
- currentopt+=("${cmd_map_compressor_u99[@]}")
-fi
-
-# DST exclusive.
-if [ "${shortname}" == "dst" ]; then
- currentopt+=("${cmd_install_dst_token[@]}")
-fi
-
-# MTA exclusive.
-if [ "${shortname}" == "mta" ]; then
- currentopt+=("${cmd_install_default_resources[@]}")
-fi
-
-# Squad license exclusive.
-if [ "${shortname}" == "squad" ]; then
- currentopt+=("${cmd_install_squad_license[@]}")
-fi
-
-## Mods commands.
-if [ "${engine}" == "source" ] || [ "${shortname}" == "rust" ] || [ "${shortname}" == "hq" ] || [ "${shortname}" == "sdtd" ] || [ "${shortname}" == "cs" ] || [ "${shortname}" == "dod" ] || [ "${shortname}" == "tfc" ] || [ "${shortname}" == "ns" ] || [ "${shortname}" == "ts" ] || [ "${shortname}" == "hldm" ] || [ "${shortname}" == "vh" ]; then
- currentopt+=("${cmd_mods_install[@]}" "${cmd_mods_remove[@]}" "${cmd_mods_update[@]}")
-fi
-
-## Installer.
-currentopt+=("${cmd_install[@]}" "${cmd_auto_install[@]}")
-
-## Developer commands.
-currentopt+=("${cmd_dev_debug[@]}")
-if [ -f ".dev-debug" ]; then
- currentopt+=("${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" "${cmd_dev_query_raw[@]}" "${cmd_dev_clear_functions[@]}")
-fi
-
-## Donate.
-currentopt+=("${cmd_donate[@]}")
-
-### Build list of available commands.
-optcommands=()
-index="0"
-for ((index = "0"; index < ${#currentopt[@]}; index += 3)); do
- cmdamount=$(echo -e "${currentopt[index]}" | awk -F ';' '{ print NF }')
- for ((cmdindex = 1; cmdindex <= cmdamount; cmdindex++)); do
- optcommands+=("$(echo -e "${currentopt[index]}" | awk -F ';' -v x=${cmdindex} '{ print $x }')")
- done
-done
-
-# Shows LinuxGSM usage.
-fn_opt_usage() {
- echo -e "Usage: $0 [option]"
- echo -e ""
- echo -e "LinuxGSM - ${gamename} - Version ${version}"
- echo -e "https://linuxgsm.com/${gameservername}"
- echo -e ""
- echo -e "${lightyellow}Commands${default}"
- # Display available commands.
- index="0"
- {
- for ((index = "0"; index < ${#currentopt[@]}; index += 3)); do
- # Hide developer commands.
- if [ "${currentopt[index + 2]}" != "DEVCOMMAND" ]; then
- echo -e "${cyan}$(echo -e "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo -e "${currentopt[index]}" | awk -F ';' '{ print $1 }')\t| ${currentopt[index + 2]}"
- fi
- done
- } | column -s $'\t' -t
- fn_script_log_pass "Display commands"
- core_exit.sh
-}
-
-# Check if command existw and run corresponding scripts, or display script usage.
-if [ -z "${getopt}" ]; then
- fn_opt_usage
-fi
-# If command exists.
-for i in "${optcommands[@]}"; do
- if [ "${i}" == "${getopt}" ]; then
- # Seek and run command.
- index="0"
- for ((index = "0"; index < ${#currentopt[@]}; index += 3)); do
- currcmdamount=$(echo -e "${currentopt[index]}" | awk -F ';' '{ print NF }')
- for ((currcmdindex = 1; currcmdindex <= currcmdamount; currcmdindex++)); do
- if [ "$(echo -e "${currentopt[index]}" | awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then
- # Run command.
- eval "${currentopt[index + 1]}"
- # Exit should occur in modules. Should this not happen print an error
- fn_print_error2_nl "Command did not exit correctly: ${getopt}"
- fn_script_log_error "Command did not exit correctly: ${getopt}"
- core_exit.sh
- fi
- done
- done
- fi
-done
-
-# If we're executing this, it means command was not found.
-fn_print_error2_nl "Unknown command: $0 ${getopt}"
-fn_script_log_error "Unknown command: $0 ${getopt}"
-fn_opt_usage
-core_exit.sh
diff --git a/lgsm/functions/core_github.sh b/lgsm/functions/core_github.sh
deleted file mode 100644
index 0462e65bf..000000000
--- a/lgsm/functions/core_github.sh
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/bash
-# LinuxGSM core_github.sh function
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# 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
-}
diff --git a/lgsm/functions/core_legacy.sh b/lgsm/functions/core_legacy.sh
deleted file mode 100644
index 1cb77258b..000000000
--- a/lgsm/functions/core_legacy.sh
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# This is to help the transition to v20.3.0 and above
-legacy_versions_array=(v20.2.1 v20.2.0 v20.1.5 v20.1.4 v20.1.3 v20.1.2 v20.1.1 v20.1.0 v19.12.5 v19.12.4 v19.12.3 v19.12.2 v19.12.1 v19.12.0)
-for legacy_version in "${legacy_versions_array[@]}"; do
- if [ "${version}" == "${legacy_version}" ]; then
- legacymode=1
- fi
-done
-
-if [ -z "${serverfiles}" ]; then
- serverfiles="${filesdir}"
-fi
-
-if [ -z "${logdir}" ]; then
- [ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || logdir="${rootdir}/log"
-fi
-
-if [ -z "${lgsmlogdir}" ]; then
- lgsmlogdir="${scriptlogdir}"
-fi
-
-if [ -z "${lgsmlog}" ]; then
- lgsmlog="${scriptlog}"
-fi
-
-if [ -z "${lgsmlogdate}" ]; then
- lgsmlogdate="${scriptlogdate}"
-fi
-
-if [ -z "${steamcmddir}" ]; then
- steamcmddir="${HOME}/.steam/steamcmd"
-fi
-
-if [ -z "${lgsmdir}" ]; then
- lgsmdir="${rootdir}/lgsm"
-fi
-
-if [ -z "${tmpdir}" ]; then
- tmpdir="${lgsmdir}/tmp"
-fi
-
-if [ -z "${alertlog}" ]; then
- alertlog="${emaillog}"
-fi
-
-if [ -z "${servicename}" ]; then
- servicename="${selfname}"
-fi
-
-# Alternations to workshop variables.
-if [ -z "${wsapikey}" ]; then
- if [ "${workshopauth}" ]; then
- wsapikey="${workshopauth}"
- elif [ "${authkey}" ]; then
- wsapikey="${authkey}"
- fi
-fi
-
-if [ -z "${wscollectionid}" ]; then
- if [ "${workshopauth}" ]; then
- wscollectionid="${ws_collection_id}"
- elif [ "${authkey}" ]; then
- wscollectionid="${workshopcollectionid}"
- fi
-fi
-
-if [ -z "${wsstartmap}" ]; then
- if [ "${ws_start_map}" ]; then
- wscollectionid="${ws_start_map}"
- fi
-fi
-
-fn_parms() {
- fn_reload_startparameters
- parms="${startparameters}"
-}
diff --git a/lgsm/functions/core_logs.sh b/lgsm/functions/core_logs.sh
deleted file mode 100644
index 1f0e27540..000000000
--- a/lgsm/functions/core_logs.sh
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/bin/bash
-# LinuxGSM core_logs.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Acts as a log rotator, removing old logs.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Check if logfile variable and file exist, create logfile if it doesn't exist.
-if [ "${consolelog}" ]; then
- if [ ! -f "${consolelog}" ]; then
- touch "${consolelog}"
- fi
-fi
-
-# For games not displaying a console, and having logs into their game directory.
-check_status.sh
-if [ "${status}" != "0" ] && [ "${commandname}" == "START" ] && [ -n "${gamelogfile}" ]; then
- if [ "$(find "${systemdir}" -name "gamelog*.log")" ]; then
- fn_print_info "Moving game logs to ${gamelogdir}"
- fn_script_log_info "Moving game logs to ${gamelogdir}"
- echo -en "\n"
- fn_sleep_time
- mv "${systemdir}"/gamelog*.log "${gamelogdir}"
- fi
-fi
-
-# Log manager will start the cleanup if it finds logs older than "${logdays}".
-if [ "$(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | wc -l)" -ne "0" ]; then
- fn_print_dots "Starting"
- # Set common logs directories
- commonlogs="${systemdir}/logs"
- commonsourcelogs="${systemdir}/*/logs"
- # Set addon logs directories
- sourcemodlogdir="${systemdir}/addons/sourcemod/logs"
- ulxlogdir="${systemdir}/data/ulx_logs"
- darkrplogdir="${systemdir}/data/darkrp_logs"
- legacyserverlogdir="${logdir}/server"
- # Setting up counting variables
- scriptcount="0"
- consolecount="0"
- gamecount="0"
- srcdscount="0"
- smcount="0"
- ulxcount="0"
- darkrpcount="0"
- legacycount="0"
- fn_sleep_time
- fn_print_info "Removing logs older than ${logdays} days"
- fn_script_log_info "Removing logs older than ${logdays} days"
- # Logging logfiles to be removed according to "${logdays}", counting and removing them.
- # Script logfiles.
- find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
- scriptcount=$(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | wc -l)
- find "${lgsmlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
- # SRCDS and unreal logfiles.
- if [ "${engine}" == "unreal2" ] || [ "${engine}" == "source" ]; then
- find "${gamelogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
- gamecount=$(find "${gamelogdir}"/ -type f -mtime +"${logdays}" | wc -l)
- find "${gamelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
- fi
- # Console logfiles.
- if [ "${consolelog}" ]; then
- find "${consolelogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
- consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}" | wc -l)
- find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
- fi
- # Common logfiles.
- if [ -d "${commonlogs}" ]; then
- find "${commonlogs}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
- smcount=$(find "${commonlogs}"/ -type f -mtime +"${logdays}" | wc -l)
- find "${commonlogs}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
- fi
- if [ -d "${commonsourcelogs}" ]; then
- find "${commonsourcelogs}"/* -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
- smcount=$(find "${commonsourcelogs}"/* -type f -mtime +"${logdays}" | wc -l)
- find "${commonsourcelogs}"/* -mtime +"${logdays}" -type f -exec rm -f {} \;
- fi
- # Source addons logfiles.
- if [ "${engine}" == "source" ]; then
- # SourceMod logfiles.
- if [ -d "${sourcemodlogdir}" ]; then
- find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
- smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}" | wc -l)
- find "${sourcemodlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
- fi
- # Garry's Mod logfiles.
- if [ "${shortname}" == "gmod" ]; then
- # ULX logfiles.
- if [ -d "${ulxlogdir}" ]; then
- find "${ulxlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
- ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +"${logdays}" | wc -l)
- find "${ulxlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
- fi
- # DarkRP logfiles.
- if [ -d "${darkrplogdir}" ]; then
- find "${darkrplogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
- darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +"${logdays}" | wc -l)
- find "${darkrplogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
- fi
- fi
- fi
-
- # Count total amount of files removed.
- countlogs=$((scriptcount + consolecount + gamecount + srcdscount + smcount + ulxcount + darkrpcount))
- # Job done.
- fn_print_ok "Removed ${countlogs} log files"
- fn_script_log "Removed ${countlogs} log files"
-fi
diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh
deleted file mode 100644
index 5362dd3d3..000000000
--- a/lgsm/functions/core_messages.sh
+++ /dev/null
@@ -1,598 +0,0 @@
-#!/bin/bash
-# LinuxGSM core_messages.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Defines on-screen messages such as [ OK ] and how script logs look.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# nl: new line: message is following by a new line.
-# eol: end of line: message is placed at the end of the current line.
-fn_ansi_loader() {
- if [ "${ansi}" != "off" ]; then
- # echo colors
- default="\e[0m"
- black="\e[30m"
- red="\e[31m"
- lightred="\e[91m"
- green="\e[32m"
- lightgreen="\e[92m"
- yellow="\e[33m"
- lightyellow="\e[93m"
- blue="\e[34m"
- lightblue="\e[94m"
- magenta="\e[35m"
- lightmagenta="\e[95m"
- cyan="\e[36m"
- lightcyan="\e[96m"
- darkgrey="\e[90m"
- lightgrey="\e[37m"
- white="\e[97m"
- fi
- # carriage return & erase to end of line.
- creeol="\r\033[K"
-}
-
-fn_sleep_time() {
- if [ "${sleeptime}" != "0" ] || [ "${travistest}" != "1" ]; then
- if [ -z "${sleeptime}" ]; then
- sleeptime=0.5
- fi
- sleep "${sleeptime}"
- fi
-}
-
-# Log display
-########################
-## Feb 28 14:56:58 ut99-server: Monitor:
-fn_script_log() {
- if [ -d "${lgsmlogdir}" ]; then
- if [ -n "${commandname}" ]; then
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: ${1}" >> "${lgsmlog}"
- else
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${1}" >> "${lgsmlog}"
- fi
- fi
-}
-
-## Feb 28 14:56:58 ut99-server: Monitor: PASS:
-fn_script_log_pass() {
- if [ -d "${lgsmlogdir}" ]; then
-
- if [ -n "${commandname}" ]; then
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: PASS: ${1}" >> "${lgsmlog}"
- else
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: PASS: ${1}" >> "${lgsmlog}"
- fi
- fi
- exitcode=0
-}
-
-## Feb 28 14:56:58 ut99-server: Monitor: FATAL:
-fn_script_log_fatal() {
- if [ -d "${lgsmlogdir}" ]; then
- if [ -n "${commandname}" ]; then
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: FATAL: ${1}" >> "${lgsmlog}"
- else
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: FATAL: ${1}" >> "${lgsmlog}"
- fi
- fi
- exitcode=1
-}
-
-## Feb 28 14:56:58 ut99-server: Monitor: ERROR:
-fn_script_log_error() {
- if [ -d "${lgsmlogdir}" ]; then
- if [ -n "${commandname}" ]; then
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: ERROR: ${1}" >> "${lgsmlog}"
- else
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ERROR: ${1}" >> "${lgsmlog}"
- fi
- fi
- exitcode=2
-}
-
-## Feb 28 14:56:58 ut99-server: Monitor: WARN:
-fn_script_log_warn() {
- if [ -d "${lgsmlogdir}" ]; then
- if [ -n "${commandname}" ]; then
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: WARN: ${1}" >> "${lgsmlog}"
- else
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: WARN: ${1}" >> "${lgsmlog}"
- fi
- fi
- exitcode=3
-}
-
-## Feb 28 14:56:58 ut99-server: Monitor: INFO:
-fn_script_log_info() {
- if [ -d "${lgsmlogdir}" ]; then
- if [ -n "${commandname}" ]; then
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: INFO: ${1}" >> "${lgsmlog}"
- else
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: INFO: ${1}" >> "${lgsmlog}"
- fi
- fi
-}
-
-## Feb 28 14:56:58 ut99-server: Monitor: UPDATE:
-fn_script_log_update() {
- if [ -d "${lgsmlogdir}" ]; then
- if [ -n "${commandname}" ]; then
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: UPDATE: ${1}" >> "${lgsmlog}"
- else
- echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: UPDATE: ${1}" >> "${lgsmlog}"
- fi
- fi
-}
-
-# On-Screen - Automated functions
-##################################
-
-# [ .... ]
-fn_print_dots() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[ .... ] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[ .... ] $*"
- fi
- fn_sleep_time
-}
-
-fn_print_dots_nl() {
- if [ "${commandaction}" ]; then
- echo -e "${creeol}[ .... ] ${commandaction} ${selfname}: $*"
- else
- echo -e "${creeol}[ .... ] $*"
- fi
- fn_sleep_time
- echo -en "\n"
-}
-
-# [ OK ]
-fn_print_ok() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${green} OK ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${green} OK ${default}] $*"
- fi
- fn_sleep_time
-}
-
-fn_print_ok_nl() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${green} OK ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${green} OK ${default}] $*"
- fi
- fn_sleep_time
- echo -en "\n"
-}
-
-# [ FAIL ]
-fn_print_fail() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${red} FAIL ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${red} FAIL ${default}] $*"
- fi
- fn_sleep_time
-}
-
-fn_print_fail_nl() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${red} FAIL ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${red} FAIL ${default}] $*"
- fi
- fn_sleep_time
- echo -en "\n"
-}
-
-# [ ERROR ]
-fn_print_error() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${red} ERROR ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${red} ERROR ${default}] $*"
- fi
- fn_sleep_time
-}
-
-fn_print_error_nl() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${red} ERROR ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${red} ERROR ${default}] $*"
- fi
- fn_sleep_time
- echo -en "\n"
-}
-
-# [ WARN ]
-fn_print_warn() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${lightyellow} WARN ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${lightyellow} WARN ${default}] $*"
- fi
- fn_sleep_time
-}
-
-fn_print_warn_nl() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${lightyellow} WARN ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${lightyellow} WARN ${default}] $*"
- fi
- fn_sleep_time
- echo -en "\n"
-}
-
-# [ INFO ]
-fn_print_info() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${cyan} INFO ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${cyan} INFO ${default}] $*"
- fi
- fn_sleep_time
-}
-
-fn_print_info_nl() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${cyan} INFO ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${cyan} INFO ${default}] $*"
- fi
- fn_sleep_time
- echo -en "\n"
-}
-
-# [ START ]
-fn_print_start() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${lightgreen} START ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${lightgreen} START ${default}] $*"
- fi
- fn_sleep_time
-}
-
-fn_print_start_nl() {
- if [ "${commandaction}" ]; then
- echo -en "${creeol}[${lightgreen} START ${default}] ${commandaction} ${selfname}: $*"
- else
- echo -en "${creeol}[${lightgreen} START ${default}] $*"
- fi
- fn_sleep_time
- echo -en "\n"
-}
-
-# On-Screen - Interactive messages
-##################################
-
-# No More Room in Hell Debug
-# =================================
-fn_print_header() {
- echo -e ""
- echo -e "${lightyellow}${gamename} ${commandaction}${default}"
- echo -e "=================================${default}"
-}
-
-# Complete!
-fn_print_complete() {
- echo -en "${green}Complete!${default} $*"
- fn_sleep_time
-}
-
-fn_print_complete_nl() {
- echo -e "${green}Complete!${default} $*"
- fn_sleep_time
-}
-
-# Failure!
-fn_print_failure() {
- echo -en "${red}Failure!${default} $*"
- fn_sleep_time
-}
-
-fn_print_failure_nl() {
- echo -e "${red}Failure!${default} $*"
- fn_sleep_time
-}
-
-# Error!
-fn_print_error2() {
- echo -en "${red}Error!${default} $*"
- fn_sleep_time
-}
-
-fn_print_error2_nl() {
- echo -e "${red}Error!${default} $*"
- fn_sleep_time
-}
-
-# Warning!
-fn_print_warning() {
- echo -en "${lightyellow}Warning!${default} $*"
- fn_sleep_time
-}
-
-fn_print_warning_nl() {
- echo -e "${lightyellow}Warning!${default} $*"
- fn_sleep_time
-}
-
-# Information!
-fn_print_information() {
- echo -en "${cyan}Information!${default} $*"
- fn_sleep_time
-}
-
-fn_print_information_nl() {
- echo -e "${cyan}Information!${default} $*"
- fn_sleep_time
-}
-
-# Y/N Prompt
-fn_prompt_yn() {
- local prompt="$1"
- local initial="$2"
-
- if [ "${initial}" == "Y" ]; then
- prompt+=" [Y/n] "
- elif [ "${initial}" == "N" ]; then
- prompt+=" [y/N] "
- else
- prompt+=" [y/n] "
- fi
-
- while true; do
- read -e -i "${initial}" -p "${prompt}" -r yn
- case "${yn}" in
- [Yy] | [Yy][Ee][Ss]) return 0 ;;
- [Nn] | [Nn][Oo]) return 1 ;;
- *) echo -e "Please answer yes or no." ;;
- esac
- 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
-##################################
-
-# 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}"
- fn_sleep_time
-}
-
-fn_print_ok_eol_nl() {
- echo -e "${green}OK${default}"
- fn_sleep_time
-}
-
-# FAIL
-fn_print_fail_eol() {
- echo -en "${red}FAIL${default}"
- fn_sleep_time
-}
-
-fn_print_fail_eol_nl() {
- echo -e "${red}FAIL${default}"
- fn_sleep_time
-}
-
-# ERROR
-fn_print_error_eol() {
- echo -en "${red}ERROR${default}"
- fn_sleep_time
-}
-
-fn_print_error_eol_nl() {
- echo -e "${red}ERROR${default}"
- fn_sleep_time
-}
-
-# WAIT
-fn_print_wait_eol() {
- echo -en "${cyan}WAIT${default}"
- fn_sleep_time
-}
-
-fn_print_wait_eol_nl() {
- echo -e "${cyan}WAIT${default}"
- fn_sleep_time
-}
-
-# WARN
-fn_print_warn_eol() {
- echo -en "${lightyellow}WARN${default}"
- fn_sleep_time
-}
-
-fn_print_warn_eol_nl() {
- echo -e "${lightyellow}WARN${default}"
- fn_sleep_time
-}
-
-# INFO
-fn_print_info_eol() {
- echo -en "${cyan}INFO${default}"
- fn_sleep_time
-}
-
-fn_print_info_eol_nl() {
- echo -e "${cyan}INFO${default}"
- fn_sleep_time
-}
-
-# QUERYING
-fn_print_querying_eol() {
- echo -en "${cyan}QUERYING${default}"
- fn_sleep_time
-}
-
-fn_print_querying_eol_nl() {
- echo -e "${cyan}QUERYING${default}"
- fn_sleep_time
-}
-
-# CHECKING
-fn_print_checking_eol() {
- echo -en "${cyan}CHECKING${default}"
- fn_sleep_time
-}
-
-fn_print_checking_eol_nl() {
- echo -e "${cyan}CHECKING${default}"
- fn_sleep_time
-}
-
-# DELAY
-fn_print_delay_eol() {
- echo -en "${green}DELAY${default}"
- fn_sleep_time
-}
-
-fn_print_delay_eol_nl() {
- echo -e "${green}DELAY${default}"
- fn_sleep_time
-}
-
-# CANCELED
-fn_print_canceled_eol() {
- echo -en "${lightyellow}CANCELED${default}"
- fn_sleep_time
-}
-
-fn_print_canceled_eol_nl() {
- echo -e "${lightyellow}CANCELED${default}"
- fn_sleep_time
-}
-
-# REMOVED
-fn_print_removed_eol() {
- echo -en "${red}REMOVED${default}"
- fn_sleep_time
-}
-
-fn_print_removed_eol_nl() {
- echo -e "${red}REMOVED${default}"
- fn_sleep_time
-}
-
-# UPDATE
-fn_print_update_eol() {
- echo -en "${cyan}UPDATE${default}"
- fn_sleep_time
-}
-
-fn_print_update_eol_nl() {
- echo -e "${cyan}UPDATE${default}"
- fn_sleep_time
-}
-
-fn_print_ascii_logo() {
- echo -e ""
- echo -e " mdMMMMbm"
- echo -e " mMMMMMMMMMMm"
- echo -e " mMMMMMMMMMMMMm"
- echo -e " mMMMMMMMMMMMMMMm"
- echo -e " hMMMV^VMMV^VMMMh"
- echo -e " MMMMM MM MMMMM"
- echo -e " hMMs vv sMMh"
- echo -e " hMMM: :MMMh"
- echo -e " .hMMMh hMMMh."
- echo -e " -dMMMh ${lightgrey}__${default} hMMMd-"
- echo -e " :mMMMs ${lightgrey}||${default} sMMMm:"
- echo -e " :MMMM+ ${lightgrey}||${default} ${red}_${default} +NMMN:"
- echo -e " .mMMM+ ${lightgrey}========${default} +MMMm."
- echo -e " yMMMy ${darkgrey}##############${default} yMMMy"
- echo -e " mMMM: ${darkgrey}##############${default} :MMMm"
- echo -e " mMM ${lightyellow}nn${default} ${lightyellow}nn${default} ${lightyellow}nn${default} ${lightyellow}nn${default} MMm"
- echo -e " o ${lightyellow}nNNNNNNNn${default} ${lightyellow}nNNNNNNNn${default} o"
- echo -e " ${lightyellow}nNNNNNNNNNn${default} ${lightyellow}nNNNNNNNNNn${default}"
- echo -e " ${lightyellow}nNNNNNNNNNNN${default} ${lightyellow}NNNNNNNNNNNn${default}"
- echo -e " ${lightyellow}+NNNNNNNNN:${default} ${lightyellow}:NNNNNNNNN+${default}"
- echo -e " ${lightyellow}nNNNNNNN${default} /\ ${lightyellow}NNNNNNNn${default}"
- echo -e " ${lightyellow}nnnnn${default} db ${lightyellow}nnnnn${default}"
- echo -e ""
- echo -e "${lightyellow}888${default} ${lightyellow}d8b${default} ${default}.d8888b. .d8888b. 888b d888"
- echo -e "${lightyellow}888 Y8P ${default}d88P Y88b d88P Y88b 8888b d8888"
- echo -e "${lightyellow}888${default} ${default}888${default} 888 Y88b. 88888b.d88888"
- echo -e "${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}88888b.${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} 888 Y888b. 888Y88888P888"
- echo -e "${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}88b${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}Y8bd8P${default} 888 88888 Y88b. 888 Y888P 888"
- echo -e "${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}X88K${default} 888 888 888 888 Y8P 888"
- echo -e "${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}Y88b${default} ${lightyellow}88Y${default} ${lightyellow}.d8pq8b.${default} Y88b d88P Y88b d88P 888 * 888"
- echo -e "${lightyellow}LinuxGSM${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}Y8888Y${default} ${lightyellow}888${default} ${lightyellow}888${default} Y2012P88 Y8888P 888 888"
- echo -e ""
-}
-
-fn_print_restart_warning() {
- fn_print_warn "${selfname} will be restarted"
- fn_script_log_warn "${selfname} will be restarted"
- totalseconds=3
- for seconds in {3..1}; do
- fn_print_warn "${selfname} will be restarted: ${totalseconds}"
- totalseconds=$((totalseconds - 1))
- sleep 1
- if [ "${seconds}" == "0" ]; then
- break
- fi
- done
- fn_print_warn_nl "${selfname} will be restarted"
-}
-
-# Functions below are used to ensure that logs and UI correctly reflect the command it is actually running.
-# Useful when a command has to call upon another command causing the other command to overrite commandname variables
-
-# Used to remember the command that ran first.
-fn_firstcommand_set() {
- if [ -z "${firstcommandname}" ]; then
- firstcommandname="${commandname}"
- firstcommandaction="${commandaction}"
- fi
-}
-
-# Used to reset commandname variables to the command the script ran first.
-fn_firstcommand_reset() {
- commandname="${firstcommandname}"
- commandaction="${firstcommandaction}"
-}
diff --git a/lgsm/functions/core_modules.sh b/lgsm/functions/core_modules.sh
deleted file mode 100644
index 80e890d1a..000000000
--- a/lgsm/functions/core_modules.sh
+++ /dev/null
@@ -1,816 +0,0 @@
-#!/bin/bash
-# LinuxGSM core_modules.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Defines all modules to allow download and execution of modules using fn_fetch_module.
-# This module is called first before any other module. Without this file other modules will not load.
-
-moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-modulesversion="v23.3.1"
-
-# Core
-
-core_dl.sh() {
- modulefile="${FUNCNAME[0]}"
- if [ "$(type fn_fetch_core_dl 2> /dev/null)" ]; then
- fn_fetch_core_dl "lgsm/modules" "core_dl.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
- else
- fn_bootstrap_fetch_file_github "lgsm/modules" "core_dl.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
- fi
-}
-
-core_messages.sh() {
- modulefile="${FUNCNAME[0]}"
- if [ "$(type fn_fetch_core_dl 2> /dev/null)" ]; then
- fn_fetch_core_dl "lgsm/modules" "core_messages.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
- else
- fn_bootstrap_fetch_file_github "lgsm/modules" "core_messages.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
- fi
-}
-
-core_legacy.sh() {
- modulefile="${FUNCNAME[0]}"
- if [ "$(type fn_fetch_core_dl 2> /dev/null)" ]; then
- fn_fetch_core_dl "lgsm/modules" "core_legacy.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
- else
- fn_bootstrap_fetch_file_github "lgsm/modules" "core_legacy.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
- fi
-}
-
-core_exit.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-core_getopt.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-core_trap.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-core_steamcmd.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-core_github.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Commands
-
-command_backup.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_console.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_debug.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_details.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_sponsor.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_postdetails.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_test_alert.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_monitor.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_start.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_stop.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_validate.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_install.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_install_resources_mta.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_squad_license.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_mods_install.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_mods_update.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_mods_remove.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_fastdl.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_ts3_server_pass.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_restart.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_skeleton.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_wipe.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_send.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Checks
-
-check.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_config.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_deps.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_executable.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_glibc.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_ip.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_last_update.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_logs.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_permissions.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_root.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_status.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_steamcmd.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_system_dir.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_system_requirements.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_tmuxception.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-check_version.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Compress
-
-compress_unreal2_maps.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-compress_ut99_maps.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Mods
-
-mods_list.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-mods_core.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Dev
-
-command_dev_clear_modules.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_dev_debug.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_dev_detect_deps.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_dev_detect_glibc.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_dev_detect_ldd.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_dev_query_raw.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Fix
-
-fix.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_ark.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_av.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_arma3.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_armar.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_bt.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_bo.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_cmw.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_csgo.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_dst.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_hw.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_ins.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_kf.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_kf2.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_lo.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_mcb.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_mta.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_nmrih.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_onset.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_ro.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_rust.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_rw.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_sfc.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_st.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_steamcmd.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_terraria.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_tf2.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_ut3.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_rust.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_samp.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_sdtd.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_sof2.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_squad.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_ts3.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_ut2k4.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_ut.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_unt.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_vh.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_wurm.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fix_zmr.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Info
-
-info_distro.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-info_game.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-info_messages.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-info_stats.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Alert
-
-alert.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_discord.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_email.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_ifttt.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_mailgun.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_pushbullet.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_pushover.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_gotify.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_telegram.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_rocketchat.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-alert_slack.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-# Logs
-
-core_logs.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Query
-
-query_gamedig.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Update
-
-command_update_modules.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_update_linuxgsm.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_update.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-command_check_update.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_ts3.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_minecraft.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_minecraft_bedrock.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_papermc.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_mta.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_factorio.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_jediknight2.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_steamcmd.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_vintagestory.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-update_ut99.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-fn_update_modules.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-#
-## Installer modules
-#
-
-fn_autoinstall() {
- autoinstall=1
- command_install.sh
-}
-
-install_complete.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_config.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_factorio_save.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_dst_token.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_eula.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_gsquery.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_gslt.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_header.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_logs.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_retry.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_server_dir.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-install_server_files.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_stats.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_steamcmd.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_ts3.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_ts3db.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_ut2k4.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_dl_ut2k4.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-install_ut2k4_key.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
-# Calls code required for legacy servers
-core_legacy.sh
-
-# Creates tmp dir if missing
-if [ ! -d "${tmpdir}" ]; then
- mkdir -p "${tmpdir}"
-fi
-
-# Creates lock dir if missing
-if [ ! -d "${lockdir}" ]; then
- mkdir -p "${lockdir}"
-fi
-
-# Calls on-screen messages (bootstrap)
-core_messages.sh
-
-#Calls file downloader (bootstrap)
-core_dl.sh
-
-# Calls the global Ctrl-C trap
-core_trap.sh
diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh
deleted file mode 100644
index 77dd12d5e..000000000
--- a/lgsm/functions/core_steamcmd.sh
+++ /dev/null
@@ -1,334 +0,0 @@
-#!/bin/bash
-# LinuxGSM core_steamcmd.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# 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
- fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "nochmodx" "norun" "noforce" "nohash"
- 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 "Login to SteamCMD as: anonymous"
- fi
- steamuser="anonymous"
- steampass=''
- else
- if [ -d "${lgsmlogdir}" ]; then
- fn_script_log_info "Login to SteamCMD as: ${steamuser}"
- fi
- 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 -f "${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_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
- # 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}" ]; then
- fn_print_fail "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_fatal "Missing local build info"
- core_exit.sh
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_steamcmd_remotebuild() {
- # Get 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
- remotebuildversion=$(${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 remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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}" != "${remotebuildversion}" ] || [ "${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}${remotebuildversion}${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: ${remotebuildversion}"
- 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} > ${remotebuildversion}"
-
- 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}${remotebuildversion}${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: ${remotebuildversion}"
- 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 -L "${serverfiles}" -type f -name "appmanifest_${appid}.acf")
- appmanifestfilewc=$(find -L "${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/core_trap.sh b/lgsm/functions/core_trap.sh
deleted file mode 100644
index ae2b79470..000000000
--- a/lgsm/functions/core_trap.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_exit_trap() {
- if [ -z "${exitcode}" ]; then
- exitcode=$?
- fi
- echo -e ""
- if [ -z "${exitcode}" ]; then
- exitcode=0
- fi
- core_exit.sh
-}
-
-# trap to give an exit code.
-trap fn_exit_trap INT
diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh
deleted file mode 100644
index 57f6a91fa..000000000
--- a/lgsm/functions/fix.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Messages that are displayed for some fixes.
-fn_fix_msg_start() {
- fn_print_dots "Applying ${fixname} fix: ${gamename}"
- fn_print_info "Applying ${fixname} fix: ${gamename}"
- fn_script_log_info "Applying ${fixname} fix: ${gamename}"
-}
-
-fn_fix_msg_start_nl() {
- fn_print_dots "Applying ${fixname} fix: ${gamename}"
- fn_print_info_nl "Applying ${fixname} fix: ${gamename}"
- fn_script_log_info "Applying ${fixname} fix: ${gamename}"
-}
-
-fn_fix_msg_end() {
- if [ $? != 0 ]; then
- fn_print_error_nl "Applying ${fixname} fix: ${gamename}"
- fn_script_log_error "Applying ${fixname} fix: ${gamename}"
- else
- fn_print_ok_nl "Applying ${fixname} fix: ${gamename}"
- fn_script_log_pass "Applying ${fixname} fix: ${gamename}"
- fi
-}
-
-fn_exists_fix() {
- local short="${1:?}"
-
- if [ "$(type -t "fix_${short}.sh")" == 'function' ]; then
- return 0
- else
- return 1
- fi
-}
-
-fn_apply_fix() {
- local phase_message="${1:?}"
- local short="${2:?}"
-
- if fn_exists_fix "${short}"; then
- "fix_${short}.sh"
- else
- fn_print_error_nl "${shortname} is marked to apply pre start fix but there is no fix registered"
- fi
-}
-
-apply_pre_start_fix=(arma3 armar ark av bt bo csgo cmw dst hw ins nmrih onset rust rw sdtd sfc sof2 squad st tf2 terraria ts3 mcb mta unt vh wurm zmr)
-apply_post_install_fix=(av kf kf2 lo ro samp ut2k4 ut ut3)
-
-# validate registered fixes for safe development
-for fix in "${apply_pre_start_fix[@]}" "${apply_post_install_fix[@]}"; do
- if ! fn_exists_fix "${fix}"; then
- fn_print_fail_nl "fix_${fix}.sh is registered but doesn't exist. Typo or did you miss to modify core_functions.sh?"
- exitcode 1
- core_exit.sh
- fi
-done
-
-# Fixes that are run on start.
-if [ "${commandname}" != "INSTALL" ] && [ -z "${fixbypass}" ]; then
- if [ "${appid}" ]; then
- fix_steamcmd.sh
- fi
-
- if grep -qEe "(^|\s)${shortname}(\s|$)" <<< "${apply_pre_start_fix[@]}"; then
- fn_apply_fix "pre start" "${shortname}"
- fi
-fi
-
-# Fixes that are run on install only.
-if [ "${commandname}" == "INSTALL" ]; then
- if grep -qEe "(^|\s)${shortname}(\s|$)" <<< "${apply_post_install_fix[@]}"; then
- echo -e ""
- echo -e "${lightyellow}Applying Post-Install Fixes${default}"
- echo -e "================================="
- fn_sleep_time
- postinstall=1
- fn_apply_fix "post install" "${shortname}"
- fi
-fi
diff --git a/lgsm/functions/fix_ark.sh b/lgsm/functions/fix_ark.sh
deleted file mode 100644
index f8e0447e3..000000000
--- a/lgsm/functions/fix_ark.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# removes mulitple appworkshop_346110.acf if found.
-steamappsfilewc="$(find "${HOME}" -name appworkshop_346110.acf | wc -l)"
-if [ "${steamappsfilewc}" -gt "1" ]; then
- fixname="multiple appworkshop acf files"
- fn_fix_msg_start
- find "${HOME}" -name appworkshop_346110.acf -exec rm -f {} \;
- fn_fix_msg_end
-elif [ "${steamappsfilewc}" -eq "1" ]; then
- # Steam mods directory selecter
- # This allows LinxuGSM to select either ~/.steam or ~/Steam. depending on what is being used
- steamappsfile=$(find "${HOME}" -name appworkshop_346110.acf)
- steamappsdir=$(dirname "${steamappsfile}")
- steamappspath=$(
- cd "${steamappsdir}" || return
- cd ../
- pwd
- )
-
- # removes the symlink if exists.
- # fixes issue with older versions of LinuxGSM linking to /home/arkserver/steamcmd
- if [ -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" ]; then
- fixname="broken SteamCMD symlink"
- fn_fix_msg_start
- unlink "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux"
- fn_fix_msg_end
- check_steamcmd.sh
- fi
-
- # removed ARK steamcmd directory if steamcmd is missing.
- if [ ! -f "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamcmd.sh" ]; then
- fixname="remove invalid ARK SteamCMD directory"
- fn_fix_msg_start
- rm -rf "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux"
- fn_fix_msg_end
- check_steamcmd.sh
- fi
-
- # if the steamapps symlink is incorrect unlink it.
- if [ -d "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" ] && [ -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" ] && [ "$(readlink "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps")" != "${steamappspath}" ]; then
- fixname="incorrect steamapps symlink"
- fn_fix_msg_start
- unlink "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps"
- fn_fix_msg_end
- fi
-
- # Put symlink to steamapps directory into the ARK SteamCMD directory to link the downloaded mods to the correct location.
- if [ ! -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" ]; then
- fixname="steamapps symlink"
- fn_fix_msg_start
- ln -s "${steamappspath}" "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps"
- fn_fix_msg_end
- fi
-fi
diff --git a/lgsm/functions/fix_arma3.sh b/lgsm/functions/fix_arma3.sh
deleted file mode 100644
index bbf14c9d2..000000000
--- a/lgsm/functions/fix_arma3.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_arma3.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves an issue with ARMA3.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Fixes: 20150 Segmentation fault (core dumped) error.
-if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3" ] || [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3 - Other Profiles" ]; then
- fixname="20150 Segmentation fault (core dumped)"
- fn_fix_msg_start
- mkdir -p "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3 - Other Profiles"
- fn_fix_msg_end
-fi
diff --git a/lgsm/functions/fix_armar.sh b/lgsm/functions/fix_armar.sh
deleted file mode 100644
index 9db42f51a..000000000
--- a/lgsm/functions/fix_armar.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_armar.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves an issue with Arma Reforger.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Fixes: Profile directory doesn't exist.
-# Issue Link: https://feedback.bistudio.com/T164845
-if [ ! -d "${serverprofilefullpath}" ]; then
- fixname="Profile directory doesn't exist"
- fn_fix_msg_start
- mkdir -p "${serverprofilefullpath}"
- fn_fix_msg_end
-fi
diff --git a/lgsm/functions/fix_av.sh b/lgsm/functions/fix_av.sh
deleted file mode 100644
index a61a8be65..000000000
--- a/lgsm/functions/fix_av.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_av.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves startup issue with Avorion
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64"
-
-# Generates the server config if it doesn't exist.
-if [ ! -f "${servercfgfullpath}" ]; then
- startparameters="--datapath ${avdatapath} --galaxy-name ${selfname} --init-folders-only"
- fn_print_information "starting ${gamename} server to generate configs."
- fn_sleep_time
- cd "${systemdir}" || exit
- eval "${executable} ${startparameters}"
-fi
diff --git a/lgsm/functions/fix_bo.sh b/lgsm/functions/fix_bo.sh
deleted file mode 100644
index 453691874..000000000
--- a/lgsm/functions/fix_bo.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_hw.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Ballistic Overkill.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/BODS_Data/Plugins/x86_64"
diff --git a/lgsm/functions/fix_bt.sh b/lgsm/functions/fix_bt.sh
deleted file mode 100644
index 07fd61ce5..000000000
--- a/lgsm/functions/fix_bt.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_bt.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves an issue with Barotrauma.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Fixes: Missing user data directory error.
-if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Daedalic Entertainment GmbH/Barotrauma" ]; then
- fixname="Missing user data directory error."
- fn_fix_msg_start
- mkdir -p "${XDG_DATA_HOME:="${HOME}/.local/share"}/Daedalic Entertainment GmbH/Barotrauma"
- fn_fix_msg_end
-fi
-
-# check if startscript is with windows line endings and reformat it
-if file -b "${serverfiles}${executable:1}" | grep -q CRLF; then
- fixname="Convert ${executable:2} to unix file format"
- fn_fix_msg_start
- dos2unix -q "${serverfiles}${executable:1}"
- fn_fix_msg_end
-fi
diff --git a/lgsm/functions/fix_cmw.sh b/lgsm/functions/fix_cmw.sh
deleted file mode 100644
index 192f483e8..000000000
--- a/lgsm/functions/fix_cmw.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# 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
- echo 219640 > "${executabledir}/steam_appid.txt"
- fn_fix_msg_end
-fi
-
-if [ ! -f "${servercfgfullpath}" ]; then
- fn_fix_msg_start
- fixname="copy config"
- mkdir "${servercfgdir}"
- cp "${systemdir}/UDKGame/Config/"*.ini "${servercfgdir}"
- fn_fix_msg_end
-fi
diff --git a/lgsm/functions/fix_csgo.sh b/lgsm/functions/fix_csgo.sh
deleted file mode 100644
index a393f2fd9..000000000
--- a/lgsm/functions/fix_csgo.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_csgo.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with CS:GO.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Fixes: server not always creating steam_appid.txt file.
-if [ ! -f "${serverfiles}/steam_appid.txt" ]; then
- fixname="730 steam_appid.txt"
- fn_fix_msg_start
- echo -n "730" >> "${serverfiles}/steam_appid.txt"
- fn_fix_msg_end
-fi
-
-# Fixes: Error parsing BotProfile.db - unknown attribute 'Rank'".
-if [ -f "${systemdir}/botprofile.db" ] && grep "^\s*Rank" "${systemdir}/botprofile.db" > /dev/null 2>&1; then
- fixname="botprofile.db"
- fn_fix_msg_start
- sed -i 's/^\s*Rank/\t\/\/Rank/g' "${systemdir}/botprofile.db" > /dev/null 2>&1
- fn_fix_msg_end
-fi
-
-# Fixes: Unknown command "cl_bobamt_vert" and exec: couldn't exec joystick.cfg.
-if [ -f "${servercfgdir}/valve.rc" ] && grep -E '^\s*exec\s*(default|joystick)\.cfg' "${servercfgdir}/valve.rc" > /dev/null 2>&1; then
- fixname="valve.rc"
- fn_fix_msg_start
- sed -i 's/^\s*exec\s*default.cfg/\/\/exec default.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1
- sed -i 's/^\s*exec\s*joystick.cfg/\/\/exec joystick.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1
- fn_fix_msg_end
-fi
-
-# Fixes: Detected engine 11 but could not load: /home/csgo/serverfiles/bin/libgcc_s.so.1: version `GCC_7.0.0' not found (required by /lib/i386-linux-gnu/libstdc++.so.6)
-libgccc_so="${serverfiles}/bin/libgcc_s.so.1"
-if [ -f "${libgccc_so}" ]; then
- fixname="libgcc_s.so.1 move away"
- fn_fix_msg_start
- mv -v "${libgccc_so}" "${libgccc_so}.bck"
- fn_fix_msg_end
-fi
diff --git a/lgsm/functions/fix_dst.sh b/lgsm/functions/fix_dst.sh
deleted file mode 100644
index e30507dc9..000000000
--- a/lgsm/functions/fix_dst.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Fixes: ./dontstarve_dedicated_server_nullrenderer: ./lib32/libcurl-gnutls.so.4: no version information available (required by ./dontstarve_dedicated_server_nullrenderer).
-# Issue only occures on CentOS as libcurl-gnutls.so.4 is called libcurl.so.4 on CentOS.
-if [ -f "/etc/redhat-release" ] && [ ! -f "${serverfiles}/bin/lib32/libcurl-gnutls.so.4" ]; then
- fixname="libcurl-gnutls.so.4"
- fn_fix_msg_start
- ln -s "/usr/lib/libcurl.so.4" "${serverfiles}/bin/lib32/libcurl-gnutls.so.4"
- fn_fix_msg_end
-fi
diff --git a/lgsm/functions/fix_hw.sh b/lgsm/functions/fix_hw.sh
deleted file mode 100644
index af06924db..000000000
--- a/lgsm/functions/fix_hw.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_hw.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Hurtworld.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/Hurtworld_Data/Plugins/x86_64"
diff --git a/lgsm/functions/fix_ins.sh b/lgsm/functions/fix_ins.sh
deleted file mode 100644
index 21a979c4c..000000000
--- a/lgsm/functions/fix_ins.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_ins.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Insurgency.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Fixes: ./srcds_linux: error while loading shared libraries: libtier0.so: cannot open shared object file: No such file or directory.
-
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/bin"
-
-# Fixes: issue #529 - gamemode not passed to debug or start.
-
-if [ "${commandname}" == "DEBUG" ]; then
- defaultmap="\"${defaultmap}\""
-else
- defaultmap="\\\"${defaultmap}\\\""
-fi
diff --git a/lgsm/functions/fix_kf.sh b/lgsm/functions/fix_kf.sh
deleted file mode 100644
index e749a2d27..000000000
--- a/lgsm/functions/fix_kf.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_kf.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Killing Floor.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e "Applying WebAdmin ROOst.css fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
-sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
-sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
-fn_sleep_time
-echo -e "Applying WebAdmin CharSet fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
-sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int"
-fn_sleep_time
-echo -e "applying server name fix."
-fn_sleep_time
-echo -e "forcing server restart..."
-fn_sleep_time
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
diff --git a/lgsm/functions/fix_kf2.sh b/lgsm/functions/fix_kf2.sh
deleted file mode 100644
index b680a9937..000000000
--- a/lgsm/functions/fix_kf2.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-startparameters="\"${defaultmap}?Game=KFGameContent.KFGameInfo_VersusSurvival\""
-
-fn_print_information "starting ${gamename} server to generate configs."
-fn_sleep_time
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 10
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
diff --git a/lgsm/functions/fix_lo.sh b/lgsm/functions/fix_lo.sh
deleted file mode 100644
index eec2ebd36..000000000
--- a/lgsm/functions/fix_lo.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_lo.sh function
-# Author: Daniel Gibbs
-# Website: https://linuxgsm.com
-# Description: Resolves installation issue with Last Oasis
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-appidfile=${executabledir}/steam_appid.txt
-if [ ! -f "${appidfile}" ]; then
- fn_print_information "adding ${appidfile} to ${gamename} server."
- fn_sleep_time
- echo "903950" > "${appidfile}"
-else
- fn_print_information "${appidfile} already exists. No action to be taken."
- fn_sleep_time
-fi
diff --git a/lgsm/functions/fix_mcb.sh b/lgsm/functions/fix_mcb.sh
deleted file mode 100644
index 4768a40cf..000000000
--- a/lgsm/functions/fix_mcb.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# official docs state that the server should be started with: LD_LIBRARY_PATH=. ./bedrock_server
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}"
diff --git a/lgsm/functions/fix_mta.sh b/lgsm/functions/fix_mta.sh
deleted file mode 100644
index 2c92e8d12..000000000
--- a/lgsm/functions/fix_mta.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_mta.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Installs the libmysqlclient for database functions on the server.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if [ ! -f "${lgsmdir}/lib/libmysqlclient.so.16" ]; then
- fixname="libmysqlclient16"
- fn_fix_msg_start_nl
- fn_sleep_time
- fn_fetch_file "https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16" "" "" "" "${lgsmdir}/lib" "libmysqlclient.so.16" "chmodx" "norun" "noforce" "6c188e0f8fb5d7a29f4bc413b9fed6c2"
- fn_fix_msg_end
-fi
diff --git a/lgsm/functions/fix_nmrih.sh b/lgsm/functions/fix_nmrih.sh
deleted file mode 100644
index 4bb70c6f9..000000000
--- a/lgsm/functions/fix_nmrih.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-# 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/
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so"
-ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so"
-ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so"
-ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so"
-ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so"
-ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so"
-ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so"
diff --git a/lgsm/functions/fix_onset.sh b/lgsm/functions/fix_onset.sh
deleted file mode 100644
index e4183999d..000000000
--- a/lgsm/functions/fix_onset.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_onset.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Onset.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}"
-
-# Fixes: Failed loading "mariadb": libmariadbclient.so.18: cannot open shared object file: No such file or directory
-# Issue only occures on CentOS as libmariadbclient.so.18 is called libmariadb.so.3 on CentOS.
-if [ -f "/etc/redhat-release" ] && [ ! -f "${serverfiles}/libmariadbclient.so.18" ] && [ -f "/usr/lib64/libmariadb.so.3" ]; then
- fixname="libmariadbclient.so.18"
- fn_fix_msg_start
- ln -s "/usr/lib64/libmariadb.so.3" "${serverfiles}/libmariadbclient.so.18"
- fn_fix_msg_end
-fi
diff --git a/lgsm/functions/fix_ro.sh b/lgsm/functions/fix_ro.sh
deleted file mode 100644
index 895c7c2da..000000000
--- a/lgsm/functions/fix_ro.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_ro.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Red Orchestra.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e "Applying WebAdmin ROOst.css fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
-sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
-sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
-fn_sleep_time
-echo -e "Applying WebAdmin CharSet fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
-sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/uweb.int"
-fn_sleep_time
-echo -e "Applying Steam AppID fix."
-sed -i 's/1210/1200/g' "${systemdir}/steam_appid.txt"
-fn_sleep_time
-echo -e "applying server name fix."
-fn_sleep_time
-echo -e "forcing server restart..."
-fn_sleep_time
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
diff --git a/lgsm/functions/fix_rust.sh b/lgsm/functions/fix_rust.sh
deleted file mode 100644
index 5f407e89f..000000000
--- a/lgsm/functions/fix_rust.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_rust.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves startup issue with Rust.
-
-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}" ] || [ "${seed}" == "0" ]; then
- if [ ! -f "${datadir}/${selfname}-seed.txt" ]; then
- shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt"
- seed="$(cat "${datadir}/${selfname}-seed.txt")"
- fn_print_info_nl "Generating new random seed (${cyan}${seed}${default})"
- fn_script_log_pass "Generating new random seed (${cyan}${seed}${default})"
- fi
- seed="$(cat "${datadir}/${selfname}-seed.txt")"
- randomseed=1
-fi
-
-# If Carbon mod is installed, run enviroment.sh
-if [ -f "${serverfiles}/carbon/tools/environment.sh" ]; then
- fn_print_info_nl "Running Carbon environment.sh"
- fn_script_log_info "Running Carbon environment.sh"
- # shellcheck source=/dev/null
- source "${serverfiles}/carbon/tools/environment.sh"
-fi
diff --git a/lgsm/functions/fix_samp.sh b/lgsm/functions/fix_samp.sh
deleted file mode 100644
index a88bf154f..000000000
--- a/lgsm/functions/fix_samp.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-# 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
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if [ -f "${servercfgfullpath}" ]; then
- # check if default password is set "changeme"
- currentpass=$(grep -E "^rcon_password" "${servercfgfullpath}" | sed 's/^rcon_password //')
- defaultpass="changeme"
- # check if default password is set
- if [ "${currentpass}" == "${defaultpass}" ]; then
- fixname="change default rcon password"
- fn_fix_msg_start
- fn_script_log_info "changing rcon/admin password."
- random=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 | xargs)
- rconpass="admin${random}"
- sed -i "s/rcon_password changeme/rcon_password ${rconpass}/g" "${servercfgfullpath}"
- fn_fix_msg_end
- fi
- # check if the hostname is the default name
- currenthostname=$(grep -E "^hostname" "${servercfgfullpath}" | sed 's/^hostname //')
- defaulthostname="SA-MP 0.3 Server"
- if [ "${currenthostname}" == "${defaulthostname}" ]; then
- fixname="change default hostname"
- fn_fix_msg_start
- fn_script_log_info "changing default hostname to LinuxGSM"
- sed -i "s/hostname ${defaulthostname}/hostname LinuxGSM/g" "${servercfgfullpath}"
- fn_fix_msg_end
- fi
-fi
diff --git a/lgsm/functions/fix_sdtd.sh b/lgsm/functions/fix_sdtd.sh
deleted file mode 100644
index e93db7970..000000000
--- a/lgsm/functions/fix_sdtd.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}/7DaysToDieServer_Data/Plugins/x86_64"
diff --git a/lgsm/functions/fix_sfc.sh b/lgsm/functions/fix_sfc.sh
deleted file mode 100644
index 51b95b9d5..000000000
--- a/lgsm/functions/fix_sfc.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if [ ! -f "${serverfiles}/bin/datacache.so" ]; then
- ln -s "${serverfiles}/bin/datacache_srv.so" "${serverfiles}/bin/datacache.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/dedicated.so" ]; then
- ln -s "${serverfiles}/bin/dedicated_srv.so" "${serverfiles}/bin/dedicated.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/engine.so" ]; then
- ln -s "${serverfiles}/bin/engine_srv.so" "${serverfiles}/bin/engine.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/materialsystem.so" ]; then
- ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/replay.so" ]; then
- ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/shaderapiempty.so" ]; then
- ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/soundemittersystem.so" ]; then
- ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/studiorender.so" ]; then
- ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/vphysics.so" ]; then
- ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/scenefilecache.so" ]; then
- ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so"
-fi
diff --git a/lgsm/functions/fix_sof2.sh b/lgsm/functions/fix_sof2.sh
deleted file mode 100644
index 002f42952..000000000
--- a/lgsm/functions/fix_sof2.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-# 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
deleted file mode 100644
index 7d5929b5d..000000000
--- a/lgsm/functions/fix_squad.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# 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 old and new config - if it is different move the old config over the new one
- if [ "$(diff -c "${oldservercfg}" "${servercfgfullpath}" | wc -l)" -gt 0 ]; then
- fixname="Migrate server config to new Game folder"
- fn_fix_msg_start
- mv -v "${oldservercfg}" "${servercfgfullpath}"
- fn_fix_msg_end
- else
- fixname="remove the same config from old configdir"
- fn_fix_msg_start
- rm -f "${oldservercfg}"
- fn_fix_msg_end
-
- fi
-fi
diff --git a/lgsm/functions/fix_st.sh b/lgsm/functions/fix_st.sh
deleted file mode 100644
index b9fb5b084..000000000
--- a/lgsm/functions/fix_st.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_rust.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves startup issue with Stationeers.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Fixes: [Raknet] Server Shutting Down (Shutting Down).
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/rocketstation_DedicatedServer_Data/Plugins/x86_64"
diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh
deleted file mode 100644
index 9644208dc..000000000
--- a/lgsm/functions/fix_steamcmd.sh
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_steamcmd.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues related to SteamCMD.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# function to simplify the steamclient.so fix
-# example
-# fn_fix_steamclient_so 32|64 (bit) "${serverfiles}/linux32/"
-fn_fix_steamclient_so() {
- # $1 type of fix 32 or 64 as possible values
- # $2 as destination where the lib will be copied to
- if [ "$1" == "32" ]; then
- # steamclient.so x86 fix.
- if [ ! -f "${2}/steamclient.so" ]; then
- fixname="steamclient.so x86"
- fn_fix_msg_start
- if [ ! -d "${2}" ]; then
- mkdir -p "${2}"
- fi
- if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
- cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${2}/steamclient.so"
- elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
- cp "${steamcmddir}/linux32/steamclient.so" "${2}/steamclient.so"
- elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
- cp "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" "${2}/steamclient.so"
- fi
- fn_fix_msg_end
- fi
- elif [ "$1" == "64" ]; then
- # steamclient.so x86_64 fix.
- if [ ! -f "${2}/steamclient.so" ]; then
- fixname="steamclient.so x86_64"
- fn_fix_msg_start
- if [ ! -d "${2}" ]; then
- mkdir -p "${2}"
- fi
- if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
- cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${2}/steamclient.so"
- elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
- cp "${steamcmddir}/linux64/steamclient.so" "${2}/steamclient.so"
- elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" ]; then
- cp "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" "${2}/steamclient.so"
- fi
- fn_fix_msg_end
- fi
- fi
-}
-
-# Helps fix: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so.
-steamsdk64="${HOME}/.steam/sdk64"
-steamclientsdk64="${steamsdk64}/steamclient.so"
-# remove any old unlinked versions of steamclient.so
-if [ -f "${steamclientsdk64}" ]; then
- if [ "$(stat -c '%h' "${steamclientsdk64}")" -eq 1 ]; then
- fixname="steamclient.so sdk64 - remove old file"
- fn_fix_msg_start
- rm -f "${steamclientsdk64}"
- fn_fix_msg_end
- fi
-fi
-
-# place new hardlink for the file to the disk
-if [ ! -f "${steamclientsdk64}" ]; then
- fixname="steamclient.so sdk64 hardlink"
- fn_fix_msg_start
- if [ ! -d "${steamsdk64}" ]; then
- mkdir -p "${steamsdk64}"
- fi
- if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
- ln "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${steamclientsdk64}"
- elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
- ln "${steamcmddir}/linux64/steamclient.so" "${steamclientsdk64}"
- elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" ]; then
- ln "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" "${steamclientsdk64}"
- else
- fn_print_fail_nl "Could not copy any steamclient.so 64bit for the gameserver"
- fi
- fn_fix_msg_end
-fi
-
-# Helps fix: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so.
-steamsdk32="${HOME}/.steam/sdk32"
-steamclientsdk32="${HOME}/.steam/sdk32/steamclient.so"
-if [ -f "${steamclientsdk32}" ]; then
- if [ " $(stat -c '%h' "${steamclientsdk32}")" -eq 1 ]; then
- fixname="steamclient.so sdk32 - remove old file"
- fn_fix_msg_start
- rm -f "${steamclientsdk32}"
- fn_fix_msg_end
- fi
-fi
-
-# place new hardlink for the file to the disk
-if [ ! -f "${steamclientsdk32}" ]; then
- fixname="steamclient.so sdk32 link"
- fn_fix_msg_start
- if [ ! -d "${steamsdk32}" ]; then
- mkdir -p "${steamsdk32}"
- fi
- if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
- ln "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${steamclientsdk32}"
- elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
- ln "${steamcmddir}/linux32/steamclient.so" "${steamclientsdk32}"
- elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
- ln "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" "${steamclientsdk32}"
- else
- fn_print_fail_nl "Could not copy any steamclient.so 32bit for the gameserver"
- fi
- fn_fix_msg_end
-fi
-
-# steamclient.so fixes
-if [ "${shortname}" == "bo" ]; then
- fn_fix_steamclient_so "32" "${serverfiles}/BODS_Data/Plugins/x86"
- fn_fix_steamclient_so "64" "${serverfiles}/BODS_Data/Plugins/x86_64"
-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
- fn_fix_steamclient_so "32" "${serverfiles}/linux32"
- fn_fix_steamclient_so "64" "${serverfiles}/linux64"
-elif [ "${shortname}" == "pvr" ]; then
- fn_fix_steamclient_so "64" "${executabledir}"
-elif [ "${shortname}" == "ss3" ]; then
- fn_fix_steamclient_so "32" "${serverfiles}/Bin"
-elif [ "${shortname}" == "tu" ]; then
- fn_fix_steamclient_so "64" "${executabledir}"
-elif [ "${shortname}" == "unt" ]; then
- fn_fix_steamclient_so "64" "${serverfiles}"
-elif [ "${shortname}" == "wurm" ]; then
- fn_fix_steamclient_so "64" "${serverfiles}/nativelibs"
-fi
diff --git a/lgsm/functions/fix_terraria.sh b/lgsm/functions/fix_terraria.sh
deleted file mode 100644
index 7758fdad9..000000000
--- a/lgsm/functions/fix_terraria.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_terraria.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves an issue with Terraria.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-export TERM=xterm
diff --git a/lgsm/functions/fix_tf2.sh b/lgsm/functions/fix_tf2.sh
deleted file mode 100644
index 77e41a969..000000000
--- a/lgsm/functions/fix_tf2.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-# 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]}")")"
-
-# Fixes: Team Fortress 2 Segmentation fault for Red-Hat Distros #2062.
-if [ -f "/etc/redhat-release" ] && [ ! -f "${serverfiles}/bin/libcurl-gnutls.so.4" ]; then
- fixname="libcurl-gnutls.so.4"
- fn_fix_msg_start
- ln -s "/usr/lib/libcurl.so.4" "${serverfiles}/bin/libcurl-gnutls.so.4"
- fn_fix_msg_end
-fi
diff --git a/lgsm/functions/fix_ts3.sh b/lgsm/functions/fix_ts3.sh
deleted file mode 100644
index 7c7387cb6..000000000
--- a/lgsm/functions/fix_ts3.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_ts3.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Teamspeak 3.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Fixes: makes libmariadb2 available #1924.
-if [ ! -f "${serverfiles}/libmariadb.so.2" ]; then
- fixname="libmariadb.so.2"
- fn_fix_msg_start
- 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}" ] && [ "${status}" == "0" ]; 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
diff --git a/lgsm/functions/fix_unt.sh b/lgsm/functions/fix_unt.sh
deleted file mode 100644
index eae2e6313..000000000
--- a/lgsm/functions/fix_unt.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_rust.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves startup issue with Unturned.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/Unturned_Headless_Data/Plugins/x86_64"
diff --git a/lgsm/functions/fix_ut.sh b/lgsm/functions/fix_ut.sh
deleted file mode 100644
index 2e6686a8d..000000000
--- a/lgsm/functions/fix_ut.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_ut.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Unreal Tournament.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-#Set Binary Executable
-echo -e "chmod +x ${executabledir}/${executable}"
-chmod +x "${executabledir}/${executable}"
-fn_sleep_time
diff --git a/lgsm/functions/fix_ut2k4.sh b/lgsm/functions/fix_ut2k4.sh
deleted file mode 100644
index 49610e4b6..000000000
--- a/lgsm/functions/fix_ut2k4.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e "applying WebAdmin ut2003.css fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
-sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ut2003.css"
-sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ut2003.css"
-fn_sleep_time
-echo -e "applying WebAdmin CharSet fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
-sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int"
-fn_sleep_time
-echo -e "applying server name fix."
-fn_sleep_time
-echo -e "forcing server restart."
-fn_sleep_time
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
diff --git a/lgsm/functions/fix_ut3.sh b/lgsm/functions/fix_ut3.sh
deleted file mode 100644
index 6bd26a53a..000000000
--- a/lgsm/functions/fix_ut3.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-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
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 10
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
diff --git a/lgsm/functions/fix_vh.sh b/lgsm/functions/fix_vh.sh
deleted file mode 100644
index a90c5d0b0..000000000
--- a/lgsm/functions/fix_vh.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/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
-
-modsdir="${lgsmdir}/mods"
-modsinstalledlistfullpath="${modsdir}/installed-mods.txt"
-if [ -f "${modsinstalledlistfullpath}" ]; then
- # special check if Valheim Plus is installed
- if grep -qE "^valheimplus" "${modsinstalledlistfullpath}"; then
- if ! grep -qE "^executable=\"./start_server_bepinex.sh\"" "${configdirserver}/${selfname}.cfg"; then
- echo 'executable="./start_server_bepinex.sh"' >> "${configdirserver}/${selfname}.cfg"
- executable="./start_server_bepinex.sh"
- fi
- fi
- # special exports for BepInEx if installed
- if grep -qE "^bepinexvh" "${modsinstalledlistfullpath}"; then
- fn_print_info_nl "BepInEx install detected, applying start exports"
- fn_script_log_info "BepInEx install detected, applying start exports"
- # exports for BepInEx framework from script start_server_bepinex.sh
- export DOORSTOP_ENABLE=TRUE
- export DOORSTOP_INVOKE_DLL_PATH=./BepInEx/core/BepInEx.Preloader.dll
- export DOORSTOP_CORLIB_OVERRIDE_PATH=./unstripped_corlib
-
- export LD_LIBRARY_PATH="./doorstop_libs:${LD_LIBRARY_PATH}"
- export LD_PRELOAD="libdoorstop_x64.so:${LD_PRELOAD}"
-
- export SteamAppId=892970
- fi
-fi
diff --git a/lgsm/functions/fix_wurm.sh b/lgsm/functions/fix_wurm.sh
deleted file mode 100644
index aba24d382..000000000
--- a/lgsm/functions/fix_wurm.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_wurm.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Wurm Unlimited.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# First run requires start with no parms.
-# After first run new dirs are created.
-if [ ! -d "${serverfiles}/Creative" ]; then
- parmsbypass=1
- fixbypass=1
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- sleep 10
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- unset parmsbypass
-fi
diff --git a/lgsm/functions/fix_zmr.sh b/lgsm/functions/fix_zmr.sh
deleted file mode 100644
index 491c36638..000000000
--- a/lgsm/functions/fix_zmr.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if [ ! -f "${serverfiles}/bin/datacache.so" ]; then
- ln -s "${serverfiles}/bin/datacache_srv.so" "${serverfiles}/bin/datacache.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/dedicated.so" ]; then
- ln -s "${serverfiles}/bin/dedicated_srv.so" "${serverfiles}/bin/dedicated.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/engine.so" ]; then
- ln -s "${serverfiles}/bin/engine_srv.so" "${serverfiles}/bin/engine.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/materialsystem.so" ]; then
- ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/replay.so" ]; then
- ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/shaderapiempty.so" ]; then
- ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/soundemittersystem.so" ]; then
- ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/studiorender.so" ]; then
- ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/vphysics.so" ]; then
- ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so"
-fi
-
-if [ ! -f "${serverfiles}/bin/scenefilecache.so" ]; then
- ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so"
-fi
diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh
deleted file mode 100644
index 8c2a67adf..000000000
--- a/lgsm/functions/info_distro.sh
+++ /dev/null
@@ -1,281 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-### Game Server pid
-if [ "${status}" == "1" ]; then
- gameserverpid="$(tmux -L "${sessionname}" list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}')"
- if [ "${engine}" == "source" ]; then
- srcdslinuxpid="$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep srcds_linux | awk '{print $2}')"
- elif [ "${engine}" == "goldsrc" ]; then
- hldslinuxpid="$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep hlds_linux | awk '{print $2}')"
- fi
-fi
-### Distro information
-
-## Distro
-# Returns architecture, kernel and distro/os.
-arch="$(uname -m)"
-kernel="$(uname -r)"
-
-# Distro Name - Ubuntu 16.04 LTS
-# Distro Version - 16.04
-# Distro ID - ubuntu
-# Distro Codename - xenial
-
-# Gathers distro info from various sources filling in missing gaps.
-distro_info_array=(os-release lsb_release hostnamectl debian_version redhat-release)
-for distro_info in "${distro_info_array[@]}"; do
- if [ -f "/etc/os-release" ] && [ "${distro_info}" == "os-release" ]; then
- distroname="$(grep "PRETTY_NAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
- distroversion="$(grep "VERSION_ID" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
- # Special var for rhel like distros to removed point in number e.g 8.4 to just 8.
- distroversionrh="$(sed -nr 's/^VERSION_ID="([0-9]*).+?"/\1/p' /etc/os-release)"
- distroid="$(grep "ID=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')"
- distroidlike="$(grep "ID_LIKE=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')"
- distrocodename="$(grep "VERSION_CODENAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
- elif [ "$(command -v lsb_release 2> /dev/null)" ] && [ "${distro_info}" == "lsb_release" ]; then
- if [ -z "${distroname}" ]; then
- distroname="$(lsb_release -sd)"
- elif [ -z "${distroversion}" ]; then
- distroversion="$(lsb_release -sr)"
- elif [ -z "${distroid}" ]; then
- distroid="$(lsb_release -si)"
- elif [ -z "${distrocodename}" ]; then
- distrocodename="$(lsb_release -sc)"
- fi
- elif [ "$(command -v hostnamectl 2> /dev/null)" ] && [ "${distro_info}" == "hostnamectl" ]; then
- if [ -z "${distroname}" ]; then
- distroname="$(hostnamectl | grep "Operating System" | sed 's/Operating System: //g')"
- fi
- elif [ -f "/etc/debian_version" ] && [ "${distro_info}" == "debian_version" ]; then
- if [ -z "${distroname}" ]; then
- distroname="Debian $(cat /etc/debian_version)"
- elif [ -z "${distroversion}" ]; then
- distroversion="$(cat /etc/debian_version)"
- elif [ -z "${distroid}" ]; then
- distroid="debian"
- fi
- elif [ -f "/etc/redhat-release" ] && [ "${distro_info}" == "redhat-release" ]; then
- if [ -z "${distroname}" ]; then
- distroname="$(cat /etc/redhat-release)"
- elif [ -z "${distroversion}" ]; then
- distroversion="$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora" | cut -d"-" -f3)"
- elif [ -z "${distroid}" ]; then
- distroid="$(awk '{print $1}' /etc/redhat-release)"
- fi
- fi
-done
-
-# some RHEL based distros use 8.4 instead of just 8.
-if [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then
- distroversioncsv="${distroversionrh}"
-else
- distroversioncsv="${distroversion}"
-fi
-
-# Check if distro supported by distro vendor.
-if [ "$(command -v distro-info 2> /dev/null)" ]; then
- distrosunsupported="$(distro-info --unsupported)"
- distrosunsupported_array=("${distrosunsupported}")
- for distrounsupported in "${distrosunsupported_array[@]}"; do
- if [ "${distrounsupported}" == "${distrocodename}" ]; then
- distrosupport=unsupported
- break
- else
- distrosupport=supported
- fi
- done
-else
- distrosupport=unknown
-fi
-
-## Glibc version
-# e.g: 1.17
-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}"
- tmuxvdigit="0"
-else
- 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)"
- fi
-fi
-
-if [ "$(command -V java 2> /dev/null)" ]; then
- javaversion="$(java -version 2>&1 | grep "version")"
-fi
-
-if [ "$(command -v mono 2> /dev/null)" ]; then
- monoversion="$(mono --version 2>&1 | grep -Po '(?<=version )\d')"
-fi
-
-## Uptime
-uptime="$(< /proc/uptime)"
-uptime=${uptime/[. ]*/}
-minutes="$((uptime / 60 % 60))"
-hours="$((uptime / 60 / 60 % 24))"
-days="$((uptime / 60 / 60 / 24))"
-
-### Performance information
-
-## Average server load
-load="$(uptime | awk -F 'load average: ' '{ print $2 }')"
-
-## CPU information
-cpumodel="$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')"
-cpucores="$(awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo)"
-cpufreqency="$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')"
-# CPU usage of the game server pid
-if [ -n "${gameserverpid}" ]; then
- cpuused="$(ps --forest -o pcpu -g "${gameserverpid}" | awk '{s+=$1} END {print s}')"
- cpuusedmhz="$(echo "${cpufreqency} * ${cpuused} / 100" | bc)"
-fi
-
-## Memory information
-# Available RAM and swap.
-
-# Newer distros can use numfmt to give more accurate results.
-if [ "$(command -v numfmt 2> /dev/null)" ]; then
- # Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated.
-
- # get the raw KB values of these fields.
- physmemtotalkb="$(grep MemTotal /proc/meminfo | awk '{print $2}')"
- physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')"
- physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')"
- physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')"
- physmemreclaimablekb="$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')"
-
- # check if MemAvailable Exists.
- if grep -q ^MemAvailable /proc/meminfo; then
- physmemactualfreekb="$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')"
- else
- physmemactualfreekb="$((physmemfreekb + physmembufferskb + physmemcachedkb))"
- fi
-
- # Available RAM and swap.
- physmemtotalmb="$((physmemtotalkb / 1024))"
- physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")"
- physmemfree="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"
- physmemused="$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb - physmemfreekb - physmembufferskb - physmemcachedkb - physmemreclaimablekb))K")"
- physmemavailable="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"
- physmemcached="$(numfmt --to=iec --from=iec --suffix=B "$((physmemcachedkb + physmemreclaimablekb))K")"
-
- swaptotal="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K")"
- swapfree="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")"
- swapused="$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^SwapTotal /proc/meminfo | awk '{print $2}') - $(grep ^SwapFree /proc/meminfo | awk '{print $2}')))K")"
- # RAM usage of the game server pid
- # MB
- if [ "${gameserverpid}" ]; then
- memused="$(ps --forest -o rss -g "${gameserverpid}" | awk '{s+=$1} END {print s}' | awk '{$1/=1024;printf "%.0f",$1}{print $2}')"
- # %
- pmemused="$(ps --forest -o %mem -g "${gameserverpid}" | awk '{s+=$1} END {print s}')"
- fi
-else
- # Older distros will need to use free.
- # Older versions of free do not support -h option.
- if [ "$(
- free -h > /dev/null 2>&1
- echo $?
- )" -ne "0" ]; then
- humanreadable="-m"
- else
- humanreadable="-h"
- fi
- physmemtotalmb="$(free -m | awk '/Mem:/ {print $2}')"
- physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')"
- physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')"
- physmemused="$(free ${humanreadable} | awk '/Mem:/ {print $3}')"
-
- oldfree="$(free ${humanreadable} | awk '/cache:/')"
- if [ "${oldfree}" ]; then
- physmemavailable="n/a"
- physmemcached="n/a"
- else
- physmemavailable="$(free ${humanreadable} | awk '/Mem:/ {print $7}')"
- physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')"
- fi
-
- swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')"
- swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')"
- swapfree="$(free ${humanreadable} | awk '/Swap:/ {print $4}')"
-fi
-
-### Disk information
-
-## Available disk space on the partition.
-filesystem="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $1}')"
-totalspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $2}')"
-usedspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $3}')"
-availspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $4}')"
-
-## LinuxGSM used space total.
-rootdirdu="$(du -sh "${rootdir}" 2> /dev/null | awk '{print $1}')"
-if [ -z "${rootdirdu}" ]; then
- rootdirdu="0M"
-fi
-
-## LinuxGSM used space in serverfiles dir.
-serverfilesdu="$(du -sh "${serverfiles}" 2> /dev/null | awk '{print $1}')"
-if [ -z "${serverfilesdu}" ]; then
- serverfilesdu="0M"
-fi
-
-## LinuxGSM used space total minus backup dir.
-rootdirduexbackup="$(du -sh --exclude="${backupdir}" "${serverfiles}" 2> /dev/null | awk '{print $1}')"
-if [ -z "${rootdirduexbackup}" ]; then
- rootdirduexbackup="0M"
-fi
-
-## Backup info
-if [ -d "${backupdir}" ]; then
- # Used space in backups dir.
- backupdirdu="$(du -sh "${backupdir}" | awk '{print $1}')"
- # If no backup dir, size is 0M.
- if [ -z "${backupdirdu}" ]; then
- backupdirdu="0M"
- fi
-
- # number of backups set to 0 by default.
- backupcount=0
-
- # If there are backups in backup dir.
- if [ "$(find "${backupdir}" -name "*.tar.gz" | wc -l)" -ne "0" ]; then
- # number of backups.
- backupcount="$(find "${backupdir}"/*.tar.gz | wc -l)"
- # most recent backup.
- lastbackup="$(ls -1t "${backupdir}"/*.tar.gz | head -1)"
- # date of most recent backup.
- lastbackupdate="$(date -r "${lastbackup}")"
- # no of days since last backup.
- lastbackupdaysago="$((($(date +'%s') - $(date -r "${lastbackup}" +'%s')) / 60 / 60 / 24))"
- # size of most recent backup.
- lastbackupsize="$(du -h "${lastbackup}" | awk '{print $1}')"
- fi
-fi
-
-# Network Interface name
-netint=$(${ipcommand} -o addr | grep "${ip}" | awk '{print $2}')
-netlink=$(${ethtoolcommand} "${netint}" 2> /dev/null | grep Speed | awk '{print $2}')
-
-# Sets the SteamCMD glibc requirement if the game server requirement is less or not required.
-if [ "${appid}" ]; then
- if [ "${glibc}" = "null" ] || [ -z "${glibc}" ] || [ "$(printf '%s\n'${glibc}'\n' "2.14" | sort -V | head -n 1)" != "2.14" ]; then
- glibc="2.14"
- fi
-fi
-
-# Gather Port Info using ss
-ssinfo="$(ss -tuplwn)"
diff --git a/lgsm/functions/info_game.sh b/lgsm/functions/info_game.sh
deleted file mode 100644
index b8f94c18a..000000000
--- a/lgsm/functions/info_game.sh
+++ /dev/null
@@ -1,2600 +0,0 @@
-#!/bin/bash
-# LinuxGSM info_game.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Gathers various game server information.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-## Examples of filtering to get info from config files.
-# sed 's/foo//g' - remove foo
-# tr -cd '[:digit:]' leave only digits
-# tr -d '=\"; ' remove selected characters =\";
-# grep -v "foo" filter out lines that contain foo
-# cut -f1 -d "/" remove everything after /
-
-fn_info_game_ac() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- adminpassword="${unavailable}"
- httpport="${zero}"
- port="${zero}"
- queryport="${zero}"
- servername="${unavailable}"
- else
- adminpassword=$(grep "ADMIN_PASSWORD" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/ADMIN_PASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- httpport=$(grep "HTTP_PORT" "${servercfgfullpath}" | tr -cd '[:digit:]')
- port=$(grep "TCP_PORT" "${servercfgfullpath}" | tr -cd '[:digit:]')
- queryport="${httpport}"
- servername=$(grep "NAME" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/NAME//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | head -n 1)
-
- # Not set
- adminpassword=${adminpassword:-"NOT SET"}
- httpport=${httpport:-"0"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- servername=${servername:-"NOT SET"}
-
- fi
-}
-
-fn_info_game_ark() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- adminpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- else
- adminpassword=$(sed -nr 's/^ServerAdminPassword=(.*)/\1/p' "${servercfgfullpath}")
- servername=$(sed -nr 's/^SessionName=(.*)/\1/p' "${servercfgfullpath}")
- serverpassword=$(sed -nr 's/^ServerPassword=(.*)/\1/p' "${servercfgfullpath}")
-
- # Not set
- adminpassword=${adminpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- fi
-
- # Parameters
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- rawport=$((port + 1))
- rconport=${rconport:-"0"}
-}
-
-fn_info_game_arma3() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- adminpassword="${unavailable}"
- maxplayers="${zero}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- else
- adminpassword=$(sed -nr 's/^passwordAdmin\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
- maxplayers=$(sed -nr 's/^maxPlayers\s*=\s*([0-9]+)\s*;/\1/p' "${servercfgfullpath}")
- servername=$(sed -nr 's/^hostname\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
- serverpassword=$(sed -nr 's/^password\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
-
- # Not set
- adminpassword=${adminpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- fi
-
- # Parameters
- battleeyeport=$((port + 4))
- port=${port:-"2302"}
- queryport=$((port + 1))
- steammasterport=$((port + 2))
- voiceport=${port:-"2302"}
- voiceunusedport=$((port + 3))
-}
-
-fn_info_game_armar() {
- if [ ! -f "${servercfgfullpath}" ]; then
- adminpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- else
- adminpassword=$(jq -r '.game.passwordAdmin' "${servercfgfullpath}")
- battleeyeport=1376
- configip=$(jq -r '.bindAddress' "${servercfgfullpath}")
- maxplayers=$(jq -r '.game.maxPlayers' "${servercfgfullpath}")
- port=$(jq -r '.bindPort' "${servercfgfullpath}")
- queryport=$(jq -r '.a2s.port' "${servercfgfullpath}")
- servername=$(jq -r '.game.name' "${servercfgfullpath}")
- serverpassword=$(jq -r '.game.password' "${servercfgfullpath}")
-
- # Not set
- adminpassword=${adminpassword:-"NOT SET"}
- configip=${configip:-"0.0.0.0"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- fi
-}
-
-fn_info_game_av() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- maxplayers="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- port=${zero}
- queryport=${zero}
- steamqueryport=${zero}
- steammasterport=${zero}
- rconport=${zero}
- rconenabled="${unavailable}"
- rconpassword="${unavailable}"
- else
- maxplayers=$(grep "maxPlayers=" "${servercfgfullpath}" | sed 's/maxPlayers=//')
- servername=$(grep "name=" "${servercfgfullpath}" | sed 's/name=//')
- serverpassword=$(grep "password=" "${servercfgfullpath}" | sed 's/password=//')
- port=$(grep "port=" "${servercfgfullpath}" | sed 's/port=//')
- queryport=$((port + 3))
- steamqueryport=$((port + 20))
- steammasterport=$((port + 21))
- rconport=$(grep "rconPort=" "${servercfgfullpath}" | sed 's/rconPort=//')
-
- rconpassword=$(grep "rconPassword=" "${servercfgfullpath}" | sed 's/rconPassword=//')
- if [ -n "${rconpassword}" ]; then
- rconenabled="true"
- fi
-
- # Not set
- maxplayers=${maxplayers:-"0"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- steamqueryport=${steamqueryport:-"0"}
- steammasterport=${steammasterport:-"0"}
- rconport=${rconport:-"0"}
- rconenabled=${rconenabled:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- fi
-}
-
-fn_info_game_bf1942() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- else
- servername=$(grep -E "^game.serverName " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverName //g' | tr -d '=\";,:' | xargs)
- serverpassword=$(grep "game.serverPassword" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/game.serverPassword//g' | tr -d '=\";,:' | xargs)
- maxplayers=$(grep "game.serverMaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
- port=$(grep "game.serverPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
- queryport="22000"
- configip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs)
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_bfv() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- else
- servername=$(grep "game.serverName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverName//g' | tr -d '=\";,:' | xargs)
- serverpassword=$(grep "game.serverPassword" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/game.serverPassword//g' | tr -d '=\";,:' | xargs)
- maxplayers=$(grep "game.serverMaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
- port=$(grep "game.serverPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
- queryport="23000"
- configip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs)
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_bo() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- maxplayers="${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]*$//')
- serverpassword=$(grep "Password=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- port=$(grep "ServerPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- queryport=$((port + 1))
- maxplayers=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- maxplayers=${maxplayers:-"0"}
- fi
-}
-
-fn_info_game_bt() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- maxplayers="${unavailable}"
- else
- servername=$(grep -Po 'name="\K.*(?=")' "${servercfgfullpath}") # Assuming GNU grep is used
- serverpassword=$(grep -Po 'password="\K.*(?=")' "${servercfgfullpath}") # Assuming GNU grep is used
- port=$(grep " port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- queryport=$(grep "queryport=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- maxplayers=$(grep "maxplayers=" "${servercfgfullpath}" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- maxplayers=${maxplayers:-"0"}
- fi
-}
-
-fn_info_game_btl() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- gamemode="${unavailable}"
- else
- servername=$(grep -m2 "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "Password" "${servercfgfullpath}" | grep -v "RCONPassword" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- gamemode=$(grep -m2 "PlayMode" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/PlayMode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- gamemode=${gamemode:-"NOT SET"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- rconport=$((port + 2))
-}
-
-fn_info_game_cd() {
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- port="${zero}"
- rconenabled="false"
- rconport="${zero}"
- rconpassword="${unavailable}"
- steamport="${zero}"
- maxplayers="${zero}"
- else
- servername=$(jq -r '.game_title' "${servercfgfullpath}")
- port=$(jq -r '.game_port' "${servercfgfullpath}")
- steamport=$(jq -r '.steam_port_messages' "${servercfgfullpath}")
- rconenabled=$(jq -r '.rcon' "${servercfgfullpath}")
- rconport=$(jq -r '.rcon_port' "${servercfgfullpath}")
- rconpassword=$(jq -r '.rcon_password' "${servercfgfullpath}")
- maxplayers=$(jq -r '.player_count' "${servercfgfullpath}")
- fi
-}
-
-fn_info_game_ck() {
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${zero}"
- else
- servername=$(jq -r '.worldName' "${servercfgfullpath}")
- maxplayers=$(jq -r '.maxNumberPlayers' "${servercfgfullpath}")
- fi
- queryport=$((port + 1))
-}
-
-fn_info_game_cmw() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- adminpassword="${unavailable}"
- rconport=${zero}
- servername="${unavailable}"
- serverpassword="${unavailable}"
-
- else
- adminpassword=$(grep -E "^adminpassword=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- rconport=$(grep -E "^RConPort=" "${servercfgdir}/DefaultGame.ini" | tr -cd '[:digit:]')
- servername=$(grep -E "^ServerName" "${servercfgfullpath}" | sed 's/^ServerName=//')
- serverpassword=$(grep -E "^GamePassword" "${servercfgfullpath}" | sed 's/^ServerName=//')
-
- # Not set
- adminpassword=${adminpassword:-"NOT SET"}
- rconport=${rconport:-"0"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
-}
-
-fn_info_game_cod() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- rconpassword="${unavailable}"
- else
- servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs)
- rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- rconpassword=${rconpassword=:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
-}
-
-fn_info_game_coduo() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- rconpassword="${unavailable}"
- else
- servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs)
- rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- rconpassword=${rconpassword=:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${port:-"28960"}
-}
-
-fn_info_game_cod2() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- rconpassword="${unavailable}"
- else
- servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs)
- rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- rconpassword=${rconpassword=:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${port:-"28960"}
-}
-
-fn_info_game_cod4() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- rconpassword="${unavailable}"
- else
- servername=$(sed -nr 's/^set\s*sv_hostname\s*"(.*)".*/\1/p' "${servercfgfullpath}")
- rconpassword=$(sed -nr 's/^set\s*rcon_password\s*"(.*)"\s*\/.*/\1/p' "${servercfgfullpath}")
- queryport=${port:-"28960"}
-
- # Not set
- servername=${servername:-"NOT SET"}
- rconpassword=${rconpassword=:-"NOT SET"}
- queryport=${queryport:-"28960"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${port:-"28960"}
-}
-
-fn_info_game_codwaw() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- rconpassword="${unavailable}"
- else
- servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs)
- rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- rconpassword=${rconpassword=:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${port:-"28960"}
-}
-
-fn_info_game_col() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- steamport="${zero}"
- rconpassword="${unavailable}"
- else
- servername=$(jq -r '.ServerSettings.ServerName' "${servercfgfullpath}")
- serverpassword=$(jq -r '.ServerSettings.ServerPassword' "${servercfgfullpath}")
- maxplayers=$(jq -r '.ServerSettings.MaxPlayerCount' "${servercfgfullpath}")
- port=$(jq -r '.ServerSettings.ServerGamePort' "${servercfgfullpath}")
- queryport=${port:-"0"}
- steamport=$(jq -r '.ServerSettings.ServerSteamPort' "${servercfgfullpath}")
- rconpassword=$(jq -r '.ServerSettings.RCONPassword' "${servercfgfullpath}")
- configip=$(jq -r '.ServerSettings.ServerIP' "${servercfgfullpath}")
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"27004"}
- queryport=${queryport:-"0"}
- steamport=${steamport:-"27005"}
- rconpassword=${rconpassword:-"NOT SET"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_dodr() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- maxplayers="${zero}"
- else
- maxplayers=$(sed -nr 's/^iServerMaxPlayers=(.*)$/\1/p' "${servercfgfullpath}")
-
- # Not set
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- servername=${servername:-"NOT SET"}
- port=${port:-"7777"}
- queryport=${queryport:-"27015"}
-}
-
-fn_info_game_dayz() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- adminpassword="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- else
- servername=$(sed -nr 's/^hostname\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
- adminpassword=$(sed -nr 's/^passwordAdmin\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
- serverpassword=$(sed -nr 's/^password\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
- maxplayers=$(sed -nr 's/^maxPlayers\s*=\s*([0-9]+)\s*;/\1/p' "${servercfgfullpath}")
- queryport=$(sed -nr 's/^steamQueryPort\s*=\s*([0-9]+)\s*;/\1/p' "${servercfgfullpath}")
-
- # Not Set
- servername=${servername:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- queryport=${queryport:-"27016"}
- fi
-
- # Parameters
- port=${port:-"2302"}
- steammasterport=$((port + 2))
- battleeyeport=$((port + 4))
-}
-
-fn_info_game_dst() {
- # Config
- if [ ! -f "${clustercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- gamemode="${unavailable}"
- tickrate="${zero}"
- masterport="${zero}"
- else
- servername=$(grep "cluster_name" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/cluster_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "cluster_password" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/cluster_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "max_players" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- gamemode=$(grep "game_mode" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_mode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- tickrate=$(grep "tick_rate" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- masterport=$(grep "master_port" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- configip=$(grep "bind_ip" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bind_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- gamemode=${gamemode:-"NOT SET"}
- tickrate=${tickrate:-"0"}
- masterport=${masterport:-"0"}
- configip=${configip:-"0.0.0.0"}
- fi
-
- if [ ! -f "${servercfgfullpath}" ]; then
- port="${zero}"
- steamauthport="${zero}"
- steammasterport="${zero}"
- else
- port=$(grep "server_port" "${servercfgfullpath}" | grep "^server_port" | grep -v "#" | tr -cd '[:digit:]')
- steamauthport=$(grep "authentication_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- steammasterport=$(grep "master_server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- port=${port:-"0"}
- steamauthport=${steamauthport:-"0"}
- steammasterport=${steammasterport:-"0"}
- fi
-
- # Parameters
- sharding=${sharding:-"NOT SET"}
- master=${master:-"NOT SET"}
- shard=${shard:-"NOT SET"}
- cluster=${cluster:-"NOT SET"}
- cave=${cave:-"NOT SET"}
-}
-
-fn_info_game_eco() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- tickrate="${zero}"
- port="${zero}"
- webadminport="${zero}"
- else
- configip=$(jq -r '.IPAddress' "${servercfgfullpath}")
- servername=$(jq -r '.Description' "${servercfgfullpath}")
- serverpassword=$(jq -r '.Password' "${servercfgfullpath}")
- maxplayers=$(jq -r '.MaxConnections' "${servercfgfullpath}")
- tickrate=$(jq -r '.Rate' "${servercfgfullpath}")
- port=$(jq -r '.GameServerPort' "${servercfgfullpath}")
- webadminport=$(jq -r '.WebServerPort' "${servercfgfullpath}")
-
- # Not set
- configip=${configip:-"0.0.0.0"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers=:-"0"}
- tickrate=${tickrate=:-"0"}
- port=${port=:-"0"}
- webadminport=${webadminport=:-"0"}
- fi
-}
-
-fn_info_game_etl() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- else
- port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- queryport="${port}"
- rconpassword=$(grep "set rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//g' -e '/^\//d' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "set sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "set sv_maxclients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- configip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"27960"}
- queryport=${queryport:-"27960"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_fctr() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="Factorio Server"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- authtoken="${unavailable}"
- savegameinterval="${unavailable}"
- versioncount="${unavailable}"
- else
- servername=$(jq -r '.name' "${servercfgfullpath}")
- serverpassword=$(jq -r '.game_password' "${servercfgfullpath}")
- maxplayers=$(jq -r '.max_players' "${servercfgfullpath}")
- authtoken=$(jq -r '.token' "${servercfgfullpath}")
- savegameinterval=$(jq -r '.autosave_interval' "${servercfgfullpath}")
- versioncount=$(jq -r '.autosave_slots' "${servercfgfullpath}")
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- authtoken=${authtoken:-"NOT SET"}
- savegameinterval=${savegameinterval:-"0"}
- versioncount=${versioncount:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- rconport=${rconport:-"0"}
- rconpassword=${rconpassword:-"NOT SET"}
-
- # get server version if installed
- local factoriobin="${executabledir}${executable:1}"
- if [ -f "${factoriobin}" ]; then
- serverversion=$(${factoriobin} --version | grep "Version:" | awk '{print $2}')
- fi
-}
-
-fn_info_game_jc2() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverdescription="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- else
- servername=$(grep "Name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverdescription=$(grep "Description" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Description//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "Password" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
- port=$(grep "BindPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
- queryport="${port}"
- configip=$(grep "BindIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/BindIP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- serverdescription=${serverdescription:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_hw() {
- # Parameters
- servername=${servername:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- maxplayers=${maxplayers:-"0"}
- defaultmap=${defaultmap:-"NOT SET"}
- creativemode=${creativemode:-"NOT SET"}
-}
-
-fn_info_game_inss() {
- # Parameters
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- rconport=${rconport:-"0"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- defaultmap=${defaultmap:-"NOT SET"}
- defaultscenario=${defaultscenario:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
-}
-
-fn_info_game_jc3() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverdescription="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryPort="${zero}"
- steamport="${zero}"
- httpport="${zero}"
- tickrate="${zero}"
- else
- servername=$(grep "name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverdescription=$(grep "description" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/description//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "\"maxPlayers\"" "${servercfgfullpath}" | tr -cd '[:digit:]')
- port=$(grep "\"port\"" "${servercfgfullpath}" | tr -cd '[:digit:]')
- queryport=$(grep "\"queryPort\"" "${servercfgfullpath}" | tr -cd '[:digit:]')
- steamport=$(grep "\"steamPort\"" "${servercfgfullpath}" | tr -cd '[:digit:]')
- httpport=$(grep "\"httpPort\"" "${servercfgfullpath}" | tr -cd '[:digit:]')
- tickrate=$(grep "\"maxTickRate\"" "${servercfgfullpath}" | tr -cd '[:digit:]')
- configip=$(grep "host" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/host//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverdescription=${serverdescription:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers=:-"0"}
- port=${port=:-"0"}
- queryport=${queryport=:-"0"}
- steamport=${steamport=:-"0"}
- httpport=${httpport=:-"0"}
- tickrate=${tickrate=:-"0"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_jk2() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- serverversion="${unavailable}"
- else
- rconpassword=$(grep "seta rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "seta sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "seta g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "seta sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- serverversion=$(grep "seta mv_serverversion" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta mv_serverversion//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- serverversion=${serverversion:-"NOT SET"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${port}
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_kf() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- adminpassword="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- queryportgs="${zero}"
- steamport="${zero}"
- steammasterport="${zero}"
- lanport="${zero}"
- httpport="${zero}"
- webadminenabled="${unavailable}"
- webadminuser="${unavailable}"
- webadminpass="${unavailable}"
- else
- 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=$(sed -nr 's/^OldQueryPortNumber=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]')
- steamport="20560"
- steammasterport="28852"
- lanport=$(grep "LANServerPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- httpport=$(sed -nr 's/^ListenPort=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]')
- webadminenabled=$(sed -nr 's/^bEnabled=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//')
- webadminuser=$(sed -nr 's/^AdminName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//')
- webadminpass="${adminpassword}"
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- queryportgs=${queryportgs:-"0"}
- steamport=${steamport:-"0"}
- steammasterport=${steammasterport:-"0"}
- lanport=${lanport:-"0"}
- httpport=${httpport:-"0"}
- webadminenabled=${webadminenabled:-"NOT SET"}
- webadminuser=${webadminuser:-"NOT SET"}
- webadminpass=${webadminpass:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_kf2() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- adminpassword="${unavailable}"
- port=${zero}
- queryport=${zero}
- webadminenabled="${unavailable}"
- httpport="${zero}"
- 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]*$//')
- serverpassword=$(grep "GamePassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/GamePassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- adminpassword=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- port=$(grep "Port" "${servercfgdir}/LinuxServer-KFEngine.ini" | sed -e 's/^[ \t]*//g' | grep "^Port" | grep -v "#" | tr -cd '[:digit:]')
- webadminenabled=$(grep "bEnabled" "${servercfgdir}/KFWeb.ini" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bEnabled//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- httpport=$(grep "ListenPort" "${servercfgdir}/KFWeb.ini" | grep -v "#" | tr -cd '[:digit:]')
- webadminuser="Admin"
- webadminpass=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- port=${port:-"0"}
- webadminenabled=${webadminenabled:-"NOT SET"}
- httpport=${webadminport:-"0"}
- webadminuser=${webadminuser:-"NOT SET"}
- webadminpass=${webadminpass:-"NOT SET"}
- fi
-
- # Parameters
- queryport=${queryport:-"0"}
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_lo() {
- # Parameters
- servername=${servername:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- maxplayers=${slots:-"0"}
-}
-
-fn_info_game_mc() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- rconpassword="${unavailable}"
- rconport="${zero}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- queryenabled="${unavailable}"
- gamemode="${unavailable}"
- gameworld="${unavailable}"
- else
- servername=$(grep "motd" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/motd//g' | tr -d '=\";,:' | sed 's/\\u00A70//g;s/\\u00A71//g;s/\\u00A72//g;s/\\u00A73//g;s/\\u00A74//g;s/\\u00A75//g;s/\\u00A76//g;s/\\u00A77//g;s/\\u00A78//g;s/\\u00A79//g;s/\\u00A7a//g;s/\\u00A7b//g;s/\\u00A7c//g;s/\\u00A7d//g;s/\\u00A7e//g;s/\\u00A7f//g;s/\\u00A7l//g;s/\\u00A7o//g;s/\\u00A7n//g;s/\\u00A7m//g;s/\\u00A7k//g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconpassword=$(grep "rcon.password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/rcon.password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconport=$(grep "rcon.port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- maxplayers=$(grep "max-players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- port=$(grep "server-port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- queryport=$(grep "query.port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- if [ -z "${queryport}" ]; then
- queryport=${port}
- fi
- queryenabled=$(grep "enable-query" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/enable-query//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- gamemode=$(grep "gamemode" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- gameworld=$(grep "level-name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/level-name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- configip=$(grep "server-ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server-ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- rconport=${rconport:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"NOT SET"}
- queryport=${queryport:-"NOT SET"}
- queryenabled="${queryenabled:-"NOT SET"}"
- gamemode=${gamemode:-"NOT SET"}
- gameworld=${gameworld:-"NOT SET"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_mcb() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- portipv6="${zero}"
- queryport="${zero}"
- gamemode="${unavailable}"
- gameworld="${unavailable}"
- else
- servername=$(grep "server-name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server-name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "max-players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- port=$(grep "server-port\b" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- portipv6=$(grep "server-portv6\b" "${servercfgfullpath}" | sed 's/v6//g' | grep -v "#" | tr -cd '[:digit:]')
- queryport=${port}
- gamemode=$(grep "gamemode" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/gamemode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- gameworld=$(grep "level-name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/level-name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"NOT SET"}
- portipv6=${portipv6:-"NOT SET"}
- queryport=${queryport:-"NOT SET"}
- gamemode=${gamemode:-"NOT SET"}
- gameworld=${gameworld:-"NOT SET"}
- fi
-}
-
-fn_info_game_mh() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- rconpassword="${unavailable}"
- maxplayers="${unavailable}"
- else
- servername=$(grep "ServerName" "${servercfgfullpath}" | awk -F '=' '{print $2}')
- serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | awk -F '=' '{print $2}')
- rconpassword=$(grep "AdminPassword" "${servercfgfullpath}" | awk -F '=' '{print $2}')
- maxplayers=$(grep "MaxSlots" "${servercfgfullpath}" | awk -F '=' '{print $2}')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- beaconport=${beaconport:-"0"}
-}
-
-fn_info_game_mohaa() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- else
- rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${port:-"0"}
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_mom() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- defaultmap="${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]*$//')
- serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/ServerPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/MaxPlayers//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- defaultmap=$(grep "MapName" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/MapName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- defaultmap=${defaultmap:-"NOT SET"}
- fi
-
- # Parameters
- port=${port:-"7777"}
- beaconport=${queryport:-"15000"}
-}
-
-fn_info_game_mta() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- port=${zero}
- queryport=${zero}
- httpport=${zero}
- ase="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- else
- port=$(grep -m 1 "serverport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]')
- queryport=$((port + 123))
- httpport=$(grep -m 1 "httpport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]')
- servername=$(grep -m 1 "servername" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<")
- serverpassword=$(grep -m 1 "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<")
- maxplayers=$(grep -m 1 "maxplayers" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]')
- ase=$(grep -m 1 "ase" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]')
- if [ "${ase}" == "1" ]; then
- ase="Enabled"
- else
- ase="Disabled"
- fi
-
- # Not set
- port=${port:-"22003"}
- queryport=${queryport:-"2326"}
- httpport=${httpport:-"22005"}
- ase=${ase:-"Disabled"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
-}
-
-fn_info_game_nec() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- servername="Necesse"
- serverpassword="${unavailable}"
- else
- maxplayers=$(grep "slots" "${servercfgfullpath}" | cut -f1 -d "/" | tr -cd '[:digit:]')
- port=$(grep "port" "${servercfgfullpath}" | cut -f1 -d "/" | tr -cd '[:digit:]')
- serverpassword=$(grep "password" "${servercfgfullpath}" | cut -f1 -d "/" | tr -cd '[:digit:]')
-
- # Not set
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- servername="Necesse Port ${port}"
- serverpassword=${serverpassword:-"NOT SET"}
- fi
-}
-
-fn_info_game_onset() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- httpport="${zero}"
- queryport="${zero}"
- else
- servername=$(grep -v "servername_short" "${servercfgfullpath}" | grep "servername" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/servername//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "maxplayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- port=$(grep "port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- httpport=$((port - 2))
- queryport=$((port - 1))
-
- # Not set
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"NOT SET"}
- httpport=${httpport:-"NOT SET"}
- queryport=${queryport:-"NOT SET"}
- fi
-}
-
-fn_info_game_pc() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- steamport="${zero}"
- else
- servername=$(grep "name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "password " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- port=$(grep "hostPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- queryport=$(grep "queryPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- steamport=$(grep "steamPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"NOT SET"}
- queryport=${queryport:-"NOT SET"}
- steamport=${steamport:-"NOT SET"}
- fi
-}
-
-fn_info_game_pc2() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- steamport="${zero}"
- else
- servername=$(grep "name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "password " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- port=$(grep "hostPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- queryport=$(grep "queryPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- steamport=$(grep "steamPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"NOT SET"}
- queryport=${queryport:-"NOT SET"}
- steamport=${steamport:-"NOT SET"}
- fi
-}
-
-fn_info_game_pstbs() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${unavailable}"
- reservedslots="${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]*$//')
- maxplayers=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- reservedslots=$(grep "NumReservedSlots=" "${servercfgfullpath}" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- reservedslots=${reservedslots:-"0"}
- fi
-
- if [ ! -f "${servercfgdir}/Rcon.cfg" ]; then
- rconport=${unavailable}
- rconpassword=${unavailable}
- else
- rconport=$(grep "Port=" "${servercfgdir}/Rcon.cfg" | tr -cd '[:digit:]')
- rconpassword=$(grep "Password=" "${servercfgdir}/Rcon.cfg" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- rconport=${rconport:-"0"}
- if [ -z "${rconpassword}" ] || [ ${#rconpassword} == 1 ]; then
- rconpassword="NOT SET"
- fi
- fi
-
- # Parameters
- port=${port:-"0"}
- if [ -z "${queryport}" ]; then
- queryport=${port:-"0"}
- fi
- rconport=${rconport:-"0"}
- randommap=${randommap:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- reservedslots=${reservedslots:-"0"}
-}
-
-fn_info_game_pvr() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${unavailable}"
- else
- servername=$(grep "ServerName" "${servercfgfullpath}" | awk -F '=' '{print $2}')
- maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | awk -F '=' '{print $2}')
-
- # Not set
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- port401=$((port + 400))
- queryport=${port:-"0"}
-}
-
-fn_info_game_prism3d() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- maxplayers="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- else
- maxplayers=$(sed -nr 's/^\s*max_players\s*:\s*([0-9]+)/\1/p' "${servercfgfullpath}")
- port=$(sed -nr 's/^\s*connection_dedicated_port\s*:\s*([0-9]+)/\1/p' "${servercfgfullpath}")
- queryport=$(sed -nr 's/^\s*query_dedicated_port\s*:\s*([0-9]+)/\1/p' "${servercfgfullpath}")
- servername=$(sed -nr 's/^\s*lobby_name\s*:\s*"?([^"\r\n]+)"?/\1/p' "${servercfgfullpath}")
- serverpassword=$(sed -nr 's/^\s*password\s*:\s*"(.*)"/\1/p' "${servercfgfullpath}")
-
- # Not set
- maxplayers=${maxplayers:-"0"}
- port=${port:-"27015"}
- queryport=${queryport:-"27016"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- fi
-}
-
-fn_info_game_pz() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- rconpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- gameworld="${unavailable}"
- else
- servername=$(grep "PublicName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/PublicName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "Password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^Password" | sed -e '/^#/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconpassword=$(grep "RCONPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/RCONPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- port=$(grep "DefaultPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
- queryport=${port}
- gameworld=$(grep "Map" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^Map" | sed -e '/^#/d' -e 's/Map//g' | tr -d '=\";' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- gameworld=${gameworld:-"NOT SET"}
- fi
-
- # Parameters
- adminpassword=${adminpassword:-"NOT SET"}
-
-}
-
-fn_info_game_q2() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- maxplayers="${zero}"
- else
- rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${port}
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_q3() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- else
- rconpassword=$(grep "zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${port}
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_ql() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- rconport="${zero}"
- statsport="${zero}"
- else
- rconpassword=$(grep "zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "sv_maxClients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- port=$(grep "net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- queryport=${port}
- rconport=$(grep "zmq_rcon_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- statsport=$(grep "zmq_stats_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- configip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- rconport=${rconport:-"0"}
- statsport=${statsport:-"0"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_qw() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- else
- rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "/")
- servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "/")
- maxplayers=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${port}
-}
-
-fn_info_game_ro() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- adminpassword="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- steamport="${zero}"
- steammasterport="${zero}"
- lanport="${zero}"
- httpport="${zero}"
- webadminenabled="${unavailable}"
- webadminuser="${unavailable}"
- webadminpass="${unavailable}"
- else
- 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))
- steamport="20610"
- steammasterport="28902"
- lanport=$(grep "LANServerPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- httpport=$(sed -nr 's/^ListenPort=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]')
- webadminenabled=$(sed -nr 's/^bEnabled=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//')
- webadminuser=$(sed -nr 's/^AdminName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//')
- webadminpass="${adminpassword}"
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- steamport=${steamport:-"0"}
- steammasterport=${steammasterport:-"0"}
- lanport=${lanport:-"0"}
- httpport=${httpport:-"0"}
- webadminenabled=${webadminenabled:-"NOT SET"}
- webadminuser=${webadminuser:-"NOT SET"}
- webadminpass=${webadminpass:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_rtcw() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- else
- rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${port:-"0"}
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_rust() {
- # Parameters
- servername=${servername:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- appport=${appport:-"0"}
- rconport=${rconport:-"0"}
- gamemode=${gamemode:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- rconpassword=${rconpassword:-"NOT SET"}
- rconweb=${rconweb:-"NOT SET"}
- tickrate=${tickrate:-"0"}
- saveinterval=${saveinterval:-"0"}
- serverlevel=${serverlevel:-"NOT SET"}
- customlevelurl=${customlevelurl:-"NOT SET"}
- worldsize=${worldsize:-"0"}
- if [ -n "${seed}" ]; then
- seed=${seed:-"0"}
- elif [ -f "${datadir}/${selfname}-seed.txt" ]; then
- seed=$(cat "${datadir}/${selfname}-seed.txt")
- else
- seed="0"
- fi
- salt=${salt:-"0"}
-}
-
-fn_info_game_rw() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- rconpassword="${unavailable}"
- rconport="${zero}"
- maxplayers="${zero}"
- port="${zero}"
- port2="${zero}"
- port3="${zero}"
- port4="${zero}"
- queryport="${zero}"
- gamemode="${unavailable}"
- gameworld="${unavailable}"
- else
- servername=$(grep "server_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "server_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconport=$(grep "rcon_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- maxplayers=$(grep "settings_max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- port=$(grep "server_port" "${servercfgfullpath}" | grep -v "database_mysql_server_port" | grep -v "#" | tr -cd '[:digit:]')
- port2=$((port + 1))
- port3=$((port + 2))
- port4=$((port + 3))
- queryport="${port}"
- httpqueryport=$((port - 1))
- gamemode=$(grep "settings_default_gamemode=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/settings_default_gamemode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- gameworld=$(grep "server_world_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_world_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- configip=$(grep "server_ip" "${servercfgfullpath}" | grep -v "database_mysql_server_ip" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- rconport=${rconport:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- port2=${port2:-"0"}
- port3=${port3:-"0"}
- port4=${port4:-"0"}
- queryport=${queryport:-"0"}
- httpqueryport=${httpport:-"0"}
- gamemode=${gamemode:-"NOT SET"}
- gameworld=${gameworld:-"NOT SET"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_samp() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="unnamed server"
- rconpassword="${unavailable}"
- port="7777"
- rconport="${port}"
- maxplayers="50"
- else
- servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- port=$(grep "port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- queryport=${port}
- rconport=${port}
- maxplayers=$(grep "maxplayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- port=${port:-"7777"}
- queryport=${port:-"7777"}
- rconport=${rconport:-"7777"}
- maxplayers=${maxplayers:-"12"}
- fi
-}
-
-fn_info_game_sb() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- queryenabled="${unavailable}"
- rconenabled="${unavailable}"
- rconpassword="${unavailable}"
- port="21025"
- queryport="21025"
- rconport="21026"
- maxplayers="8"
- else
- servername=$(grep "serverName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/serverName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- queryenabled=$(grep "runQueryServer" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/runQueryServer//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconenabled=$(grep "runRconServer" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/runRconServer//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconpassword=$(grep "rconServerPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/rconServerPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- port=$(grep "gameServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
- queryport=$(grep "queryServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
- rconport=$(grep "rconServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
- maxplayers=$(grep "maxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- queryenabled=${queryenabled:-"NOT SET"}
- rconenabled=${rconenabled:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- port=${port:-"21025"}
- queryport=${queryport:-"21025"}
- rconport=${rconport:-"21026"}
- maxplayers=${maxplayers:-"8"}
- fi
-}
-
-fn_info_game_sbots() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${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]*$//')
- maxplayers=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- defaultmap=${defaultmap:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
-}
-
-fn_info_game_scpsl() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- configip=${configip:-"0.0.0.0"}
- tickrate=${tickrate:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- else
- 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}")
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${port}
-}
-
-fn_info_game_sdtd() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- port="${zero}"
- port3="${zero}"
- queryport="${zero}"
- webadminenabled="${unavailable}"
- webadminport="${zero}"
- webadminpass="${unavailable}"
- telnetenabled="${unavailable}"
- telnetport="${zero}"
- telnetpass="${unavailable}"
- telnetip="${unavailable}"
- maxplayers="${unavailable}"
- gamemode="${unavailable}"
- gameworld="${unavailable}"
- else
- servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
- serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
- port=$(grep "ServerPort" "${servercfgfullpath}" | grep -Eo 'value="[0-9]+"' | tr -cd '[:digit:]')
- port3=$((port + 2))
- queryport=${port:-"0"}
- webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
- webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
- webadminpass=$(grep "ControlPanelPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
- telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
- telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
- telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
- # Telnet IP will be localhost if no password is set
- # check_ip will set the IP first. This will overwrite it.
- if [ -z "${telnetpass}" ]; then
- telnetip="127.0.0.1"
- fi
- maxplayers=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]')
- gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
- gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- webadminenabled=${webadminenabled:-"NOT SET"}
- webadminport=${webadminport:-"0"}
- webadminpass=${webadminpass:-"NOT SET"}
- telnetenabled=${telnetenabled:-"NOT SET"}
- telnetport=${telnetport:-"0"}
- telnetpass=${telnetpass:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- gamemode=${gamemode:-"NOT SET"}
- gameworld=${gameworld:-"NOT SET"}
- fi
-}
-
-fn_info_game_sf() {
- # Parameters
- servername=${selfname:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- beaconport=${beaconport:-"0"}
-}
-
-fn_info_game_sof2() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- else
- rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${port}
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_sol() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- adminpassword="${unavailable}"
- maxplayers="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- else
- adminpassword=$(grep "Admin_Password=" "${servercfgfullpath}" | awk -F '=' '{print $2}')
- maxplayers=$(grep "Max_Players=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- port=$(grep "Port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- queryport="${port}"
- filesport=$((port + 10))
- servername=$(grep "Server_Name=" "${servercfgfullpath}" | awk -F '=' '{print $2}')
- serverpassword=$(grep "Game_Password=" "${servercfgfullpath}" | awk -F '=' '{print $2}')
-
- # Not set
- adminpassword=${adminpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"23073"}
- queryport=${queryport:-"23083"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- fi
-}
-
-fn_info_game_source() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- rconpassword="${unavailable}"
- else
- servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/sv_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- rconport=${port:-"0"}
- queryport=${port:-"0"}
- clientport=${clientport:-"0"}
- # Steamport can be between 26901-26910 and is normaly automatically set.
- # Some servers might support -steamport parameter to set
- if [ "${steamport}" == "0" ] || [ -v "${steamport}" ]; then
- steamport="$(echo "${ssinfo}" | grep "${srcdslinuxpid}" | awk '{print $5}' | grep ":269" | cut -d ":" -f2)"
- fi
-}
-
-fn_info_game_spark() {
- defaultmap=${defaultmap:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"0"}
- queryport=$((port + 1))
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- webadminuser=${webadminuser:-"NOT SET"}
- webadminpass=${webadminpass:-"NOT SET"}
- webadminport=${webadminport:-"0"}
- # Commented out as displaying not set in details parameters
- #mods=${mods:-"NOT SET"}
-}
-
-fn_info_game_squad() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${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]*$//')
- maxplayers=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]')
-
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- if [ ! -f "${servercfgdir}/Rcon.cfg" ]; then
- rconport=${unavailable}
- rconpassword=${unavailable}
- else
- rconport=$(grep "Port=" "${servercfgdir}/Rcon.cfg" | tr -cd '[:digit:]')
- rconpassword=$(grep "Password=" "${servercfgdir}/Rcon.cfg" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- rconport=${rconport:-"0"}
- if [ -z "${rconpassword}" ] || [ ${#rconpassword} == 1 ]; then
- rconpassword="NOT SET"
- fi
-
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${queryport:-"0"}
-}
-
-fn_info_game_st() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- rconpassword="${unavailable}"
- maxplayers="${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]*$//')
- serverpassword=$(grep "PASSWORD" "${servercfgfullpath}" | grep "^PASSWORD" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/PASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconpassword=$(grep "RCONPASSWORD" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/RCONPASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "MAXPLAYER" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/MAXPLAYER//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- httpport=${port:-"0"}
- worldtype=${worldtype:-"NOT SET"}
- autosaveinterval=${autosaveinterval:-"0"}
- clearinterval=${clearinterval:-"0"}
- worldname=${worldname:-"NOT SET"}
-}
-
-fn_info_game_terraria() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- port="${zero}"
- gameworld="${unavailable}"
- maxplayers="${zero}"
- queryport="${zero}"
- else
- servername=$(grep "worldname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/worldname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- port=$(grep "port" "${servercfgfullpath}" | tr -cd '[:digit:]')
- queryport=${port:-"0"}
- gameworld=$(grep "world=" "${servercfgfullpath}" | grep -v "//" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/world=//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "maxplayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- gameworld=${gameworld:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-}
-
-fn_info_game_stn() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- configip=${configip:-"0.0.0.0"}
- port="${zero}"
- queryport="${zero}"
- serverpassword=${serverpassword:-"NOT SET"}
- else
- servername=$(sed -nr 's/^ServerName="(.*)"/\1/p' "${servercfgfullpath}")
- configip=$(sed -nr 's/^ServerIP=([0-9]+)/\1/p' "${servercfgfullpath}")
- port=$(sed -nr 's/^ServerPort=([0-9]+)/\1/p' "${servercfgfullpath}")
- serverpassword=$(sed -nr 's/^ServerPassword=(.*)$/\1/p' "${servercfgfullpath}")
- queryport=$((port + 1))
-
- # Not set
- serverpassword=${serverpassword:-"NOT SET"}
- port=${port:-"0"}
- serverpassword=${serverpassword:-"NOT SET"}
- queryport=${queryport:-"0"}
- fi
-}
-
-fn_info_game_ti() {
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${zero}"
- else
- servername=$(sed -nr 's/^ServerName="(.*)"/\1/p' "${servercfgfullpath}")
- maxplayers=$(sed -nr 's/^MaxPlayerCount=([0-9]+)/\1/' "${servercfgfullpath}")
-
- # Not set
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
-}
-
-fn_info_game_ts3() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- dbplugin="${unavailable}"
- port="9987"
- queryport="10011"
- querysshport="10022"
- queryhttpport="10080"
- queryhttpsport="10443"
- fileport="30033"
- telnetport="10011"
- else
- dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/dbplugin=//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- port=$(grep "default_voice_port" "${servercfgfullpath}" | tr -cd '[:digit:]')
- queryport=$(grep "query_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- querysshport=$(grep "query_ssh_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- queryhttpport=$(grep "query_http_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- queryhttpsport=$(grep "query_https_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- fileport=$(grep "filetransfer_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- telnetport="${queryport}"
- configip=$(grep "voice_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/voice_ip//g' | sed 's/,.*//' | tr -d '=\";,' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- dbplugin=${dbplugin:-"NOT SET"}
- port=${port:-"9987"}
- queryport=${queryport:-"10011"}
- querysshport=${querysshport:-"10022"}
- queryhttpport=${queryhttpport:-"10080"}
- queryhttpsport=${queryhttpsport:-"10443"}
- fileport=${fileport:-"30033"}
- telnetport=${telnetport:-"10011"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_tu() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${zero}"
- else
- servername=$(grep "ServerTitle" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/ServerTitle//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- steamport=$((port + 1))
- queryport=${queryport:-"0"}
-}
-
-fn_info_game_tw() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="unnamed server"
- serverpassword="${unavailable}"
- rconpassword="${unavailable}"
- port="8303"
- queryport="8303"
- maxplayers="12"
- else
- servername=$(grep "sv_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^sv_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^password" | sed -e '/^#/d' -e 's/^password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^sv_rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- port=$(grep "sv_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- queryport="${port}"
- maxplayers=$(grep "sv_max_clients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- rconpassword=${rconpassword:-"NOT SET"}
- port=${port:-"8303"}
- queryport=${port:-"8303"}
- maxplayers=${maxplayers:-"12"}
- fi
-}
-
-fn_info_game_ut99() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- adminpassword="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- queryportgs="${zero}"
- webadminenabled="${unavailable}"
- webadminport="${zero}"
- 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:]')
- queryport=$((port + 1))
- queryportgs=$(grep "OldQueryPortNumber" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- beaconport=$(grep "ServerBeaconPort" "${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$//')
- httpport=$(grep "ListenPort" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- webadminuser=$(grep "AdminUsername" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminUsername//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | sed 's/\r$//')
- webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 4 | grep "AdminPassword" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | sed 's/\r$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- beaconport=${beaconport:-"8777"}
- queryportgs=${queryportgs:-"0"}
- webadminenabled=${webadminenabled:-"NOT SET"}
- webadminport=${webadminport:-"0"}
- webadminuser=${webadminuser:-"NOT SET"}
- webadminpass=${webadminpass:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_unreal2() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- adminpassword="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- queryportgs="${zero}"
- webadminenabled="${unavailable}"
- webadminport="${zero}"
- webadminuser="${unavailable}"
- webadminpass="${unavailable}"
- else
- 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=$(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
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- queryportgs=${queryportgs:-"0"}
- webadminenabled=${webadminenabled:-"NOT SET"}
- webadminport=${webadminport:-"0"}
- webadminuser=${webadminuser:-"NOT SET"}
- webadminpass=${webadminpass:-"NOT SET"}
- fi
-
- # Parameters
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_unt() {
- # Parameters
- servername=${selfname:-"NOT SET"}
- port=${port:-"0"}
- queryport=${port}
- steamport=$((port + 1))
-}
-
-fn_info_game_ut() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- else
- servername=$(grep "ServerName" "${servercfgfullpath}" | awk -F '=' '{print $2}')
-
- # Not set
- servername=${servername:-"NOT SET"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=$((port + 1))
-}
-
-fn_info_game_unreal2k4() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- adminpassword="${unavailable}"
- port="${zero}"
- queryport="${zero}"
- queryportgs="${zero}"
- lanport="${zero}"
- webadminenabled="${unavailable}"
- httpport="${zero}"
- webadminuser="${unavailable}"
- webadminpass="${unavailable}"
- else
- 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=$(sed -nr 's/^OldQueryPortNumber=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]')
- lanport=$(grep "LANServerPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
- webadminenabled=$(sed -nr 's/^bEnabled=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//')
- httpport=$(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
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- queryportgs=${queryportgs:-"0"}
- lanport=${lanport:-"0"}
- webadminenabled=${webadminenabled:-"NOT SET"}
- httpport=${httpport:-"0"}
- webadminuser=${webadminuser:-"NOT SET"}
- webadminpass=${webadminpass:-"NOT SET"}
- fi
-}
-
-fn_info_game_ut3() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- serverpassword="${unavailable}"
- adminpassword="${unavailable}"
- maxplayers="${unavailable}"
- webadminenabled="${unavailable}"
- webadminport="${zero}"
- 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]*$//')
- serverpassword=$(grep "GamePassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/GamePassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- adminpassword=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- webadminenabled=$(grep "bEnabled" "${servercfgdir}/UTWeb.ini" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bEnabled//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- webadminport=$(grep "ListenPort" "${servercfgdir}/UTWeb.ini" | grep -v "#" | tr -cd '[:digit:]')
- webadminuser="Admin"
- webadminpass=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- webadminenabled=${webadminenabled:-"NOT SET"}
- webadminport=${webadminport:-"0"}
- webadminuser=${webadminuser:-"NOT SET"}
- webadminpass=${webadminpass:-"NOT SET"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport=${queryport:-"0"}
- defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_game_vh() {
- # Parameters
- port=${port:-"0"}
- # Query port only enabled if public server
- if [ "${public}" != "0" ]; then
- queryport=$((port + 1))
- else
- querymode="1"
- fi
- gameworld=${gameworld:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
-}
-
-fn_info_game_vints() {
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${unavailable}"
- serverpassword="${unavailable}"
- port="${port:-"0"}"
- else
- servername=$(jq -r '.ServerName' "${servercfgfullpath}")
- maxplayers=$(jq -r '.MaxClients' "${servercfgfullpath}")
- serverpassword=$(jq -r 'select(.Password != null) | .Password' "${servercfgfullpath}")
- port=$(jq -r '.Port' "${servercfgfullpath}")
- configip=$(jq -r 'select(.Ip != null) | .Ip' "${servercfgfullpath}")
- fi
- queryport=${port:-"0"}
- serverpassword=${serverpassword:-"NOT SET"}
- configip=${configip:-"0.0.0.0"}
-}
-
-fn_info_game_vpmc() {
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- configip="0.0.0.0"
- port="25577"
- else
- servername=$(sed -nr 's/^motd\s*=\s*"(.*)"/\1/p' "${servercfgfullpath}")
- bindaddress=$(sed -nr 's/^bind\s*=\s*"([0-9.:]+)"/\1/p' "${servercfgfullpath}")
- configip=$(echo "${bindaddress}" | cut -d ':' -f 1)
- port=$(echo "${bindaddress}" | cut -d ':' -f 2)
-
- servername=${servername:-"NOT SET"}
- fi
- queryport=${port:-"25577"}
-}
-
-fn_info_game_wet() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- else
- port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- queryport="${port}"
- rconpassword=$(grep "set zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//g' -e '/^\//d' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "set sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "set sv_maxclients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
- configip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- port=${port:-"27960"}
- queryport=${queryport:-"27960"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_wf() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- rconpassword="${unavailable}"
- servername="${unavailable}"
- maxplayers="${zero}"
- else
- rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-
- # Not set
- rconpassword=${rconpassword:-"NOT SET"}
- servername=${servername:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-
- # Parameters
- port=${port:-"0"}
- queryport="${port:-"0"}"
- webadminport=${webadminport:-"0"}
-}
-
-fn_info_game_wmc() {
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="${unavailable}"
- maxplayers="${zero}"
- port="${zero}"
- queryport="${zero}"
- queryenabled="${unavailable}"
- else
- 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
-
- # Not set
- servername=${servername:-"NOT SET"}
- queryport=${queryport:-"25577"}
- maxplayers=${maxplayers:-"0"}
- configip=${configip:-"0.0.0.0"}
- fi
-}
-
-fn_info_game_wurm() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- port="${zero}"
- queryport="${zero}"
- rconpassword="${unavailable}"
- servername="${unavailable}"
- serverpassword="${unavailable}"
- adminpassword="${unavailable}"
- maxplayers="${zero}"
- else
- port=$(grep "EXTERNALPORT=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- queryport=$(grep "QUERYPORT=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- servername=$(grep "SERVERNAME=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/SERVERNAME//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- serverpassword=$(grep "SERVERPASSWORD=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/SERVERPASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- adminpassword=$(grep "ADMINPWD=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/ADMINPWD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
- maxplayers=$(grep "MAXPLAYERS=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
- configip=$(grep "IP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/IP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-
- # Not set
- port=${port:-"3724"}
- queryport=${queryport:-"27017"}
- servername=${servername:-"NOT SET"}
- serverpassword=${serverpassword:-"NOT SET"}
- adminpassword=${adminpassword:-"NOT SET"}
- maxplayers=${maxplayers:-"0"}
- fi
-}
-
-unavailable="${red}UNAVAILABLE${default}"
-zero="${red}0${default}"
-
-if [ "${shortname}" == "ac" ]; then
- fn_info_game_ac
-elif [ "${shortname}" == "ark" ]; then
- fn_info_game_ark
-elif [ "${shortname}" == "arma3" ]; then
- fn_info_game_arma3
-elif [ "${shortname}" == "armar" ]; then
- fn_info_game_armar
-elif [ "${shortname}" == "av" ]; then
- fn_info_game_av
-elif [ "${shortname}" == "bf1942" ]; then
- fn_info_game_bf1942
-elif [ "${shortname}" == "bfv" ]; then
- fn_info_game_bfv
-elif [ "${shortname}" == "bo" ]; then
- fn_info_game_bo
-elif [ "${shortname}" == "bt" ]; then
- fn_info_game_bt
-elif [ "${shortname}" == "btl" ]; then
- fn_info_game_btl
-elif [ "${shortname}" == "cd" ]; then
- fn_info_game_cd
-elif [ "${shortname}" == "ck" ]; then
- fn_info_game_ck
-elif [ "${shortname}" == "cmw" ]; then
- fn_info_game_cmw
-elif [ "${shortname}" == "cod" ]; then
- fn_info_game_cod
-elif [ "${shortname}" == "coduo" ]; then
- fn_info_game_cod
-elif [ "${shortname}" == "cod2" ]; then
- fn_info_game_cod2
-elif [ "${shortname}" == "cod4" ]; then
- fn_info_game_cod4
-elif [ "${shortname}" == "codwaw" ]; then
- fn_info_game_codwaw
-elif [ "${shortname}" == "col" ]; then
- fn_info_game_col
-elif [ "${shortname}" == "dayz" ]; then
- fn_info_game_dayz
-elif [ "${shortname}" == "dodr" ]; then
- fn_info_game_dodr
-elif [ "${shortname}" == "dst" ]; then
- fn_info_game_dst
-elif [ "${shortname}" == "eco" ]; then
- fn_info_game_eco
-elif [ "${shortname}" == "etl" ]; then
- fn_info_game_etl
-elif [ "${shortname}" == "fctr" ]; then
- fn_info_game_fctr
-elif [ "${shortname}" == "hw" ]; then
- fn_info_game_hw
-elif [ "${shortname}" == "inss" ]; then
- fn_info_game_inss
-elif [ "${shortname}" == "jc2" ]; then
- fn_info_game_jc2
-elif [ "${shortname}" == "jc3" ]; then
- fn_info_game_jc3
-elif [ "${shortname}" == "jk2" ]; then
- fn_info_game_jk2
-elif [ "${shortname}" == "kf" ]; then
- fn_info_game_kf
-elif [ "${shortname}" == "kf2" ]; then
- fn_info_game_kf2
-elif [ "${shortname}" == "lo" ]; then
- fn_info_game_lo
-elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ]; then
- fn_info_game_mc
-elif [ "${shortname}" == "mcb" ]; then
- fn_info_game_mcb
-elif [ "${shortname}" == "mh" ]; then
- fn_info_game_mh
-elif [ "${shortname}" == "mohaa" ]; then
- fn_info_game_mohaa
-elif [ "${shortname}" == "mom" ]; then
- fn_info_game_mom
-elif [ "${shortname}" == "mta" ]; then
- fn_info_game_mta
-elif [ "${shortname}" == "nec" ]; then
- fn_info_game_nec
-elif [ "${shortname}" == "onset" ]; then
- fn_info_game_onset
-elif [ "${shortname}" == "pc" ]; then
- fn_info_game_pc
-elif [ "${shortname}" == "pc2" ]; then
- fn_info_game_pc2
-elif [ "${shortname}" == "pstbs" ]; then
- fn_info_game_pstbs
-elif [ "${shortname}" == "pvr" ]; then
- fn_info_game_pvr
-elif [ "${shortname}" == "pz" ]; then
- fn_info_game_pz
-elif [ "${shortname}" == "q2" ]; then
- fn_info_game_q2
-elif [ "${shortname}" == "q3" ]; then
- fn_info_game_q3
-elif [ "${shortname}" == "ql" ]; then
- fn_info_game_ql
-elif [ "${shortname}" == "qw" ]; then
- fn_info_game_qw
-elif [ "${shortname}" == "ro" ]; then
- fn_info_game_ro
-elif [ "${shortname}" == "rtcw" ]; then
- fn_info_game_rtcw
-elif [ "${shortname}" == "rust" ]; then
- fn_info_game_rust
-elif [ "${shortname}" == "rw" ]; then
- fn_info_game_rw
-elif [ "${shortname}" == "samp" ]; then
- fn_info_game_samp
-elif [ "${shortname}" == "sb" ]; then
- fn_info_game_sb
-elif [ "${shortname}" == "sbots" ]; then
- fn_info_game_sbots
-elif [ "${shortname}" == "scpsl" ] || [ "${shortname}" == "scpslsm" ]; then
- fn_info_game_scpsl
-elif [ "${shortname}" == "sdtd" ]; then
- fn_info_game_sdtd
-elif [ "${shortname}" == "sf" ]; then
- fn_info_game_sf
-elif [ "${shortname}" == "sof2" ]; then
- fn_info_game_sof2
-elif [ "${shortname}" == "sol" ]; then
- fn_info_game_sol
-elif [ "${engine}" == "spark" ]; then
- fn_info_game_spark
-elif [ "${shortname}" == "squad" ]; then
- fn_info_game_squad
-elif [ "${shortname}" == "st" ]; then
- fn_info_game_st
-elif [ "${shortname}" == "stn" ]; then
- fn_info_game_stn
-elif [ "${shortname}" == "terraria" ]; then
- fn_info_game_terraria
-elif [ "${shortname}" == "ti" ]; then
- fn_info_game_ti
-elif [ "${shortname}" == "ts3" ]; then
- fn_info_game_ts3
-elif [ "${shortname}" == "tu" ]; then
- fn_info_game_tu
-elif [ "${shortname}" == "tw" ]; then
- fn_info_game_tw
-elif [ "${shortname}" == "unt" ]; then
- fn_info_game_unt
-elif [ "${shortname}" == "ut" ]; then
- fn_info_game_ut
-elif [ "${shortname}" == "ut2k4" ]; then
- fn_info_game_unreal2k4
-elif [ "${shortname}" == "ut3" ]; then
- fn_info_game_ut3
-elif [ "${shortname}" == "ut99" ]; then
- fn_info_game_ut99
-elif [ "${shortname}" == "vh" ]; then
- fn_info_game_vh
-elif [ "${shortname}" == "vints" ]; then
- fn_info_game_vints
-elif [ "${shortname}" == "vpmc" ]; then
- fn_info_game_vpmc
-elif [ "${shortname}" == "wet" ]; then
- fn_info_game_wet
-elif [ "${shortname}" == "wf" ]; then
- fn_info_game_wf
-elif [ "${shortname}" == "wmc" ]; then
- fn_info_game_wmc
-elif [ "${shortname}" == "wurm" ]; then
- fn_info_game_wurm
-elif [ "${engine}" == "prism3d" ]; then
- fn_info_game_prism3d
-elif [ "${engine}" == "source" ] || [ "${engine}" == "goldsrc" ]; then
- fn_info_game_source
-elif [ "${engine}" == "unreal2" ]; then
- fn_info_game_unreal2
-fi
-
-# External IP address
-# Cache external IP address for 24 hours
-if [ -f "${tmpdir}/extip.txt" ]; then
- if [ "$(find "${tmpdir}/extip.txt" -mmin +1440)" ]; then
- rm -f "${tmpdir:?}/extip.txt"
- fi
-fi
-
-if [ ! -f "${tmpdir}/extip.txt" ]; then
- extip="$(curl --connect-timeout 10 -s https://api.ipify.org 2> /dev/null)"
- exitcode=$?
- # if curl passes add extip to externalip.txt
- if [ "${exitcode}" != "0" ]; then
- echo "Unable to get external IP address"
- else
- echo "${extip}" > "${tmpdir}/extip.txt"
- fi
-else
- extip="$(cat "${tmpdir}/extip.txt")"
-fi
-
-# Alert IP address
-if [ "${displayip}" ]; then
- alertip="${displayip}"
-elif [ "${extip}" ]; then
- alertip="${extip}"
-else
- alertip="${ip}"
-fi
-
-# Steam Master Server - checks if detected by master server.
-# Checked after config init, as the queryport is needed
-if [ -z "${displaymasterserver}" ]; then
- if [ "$(command -v jq 2> /dev/null)" ]; then
- if [ "${ip}" ] && [ "${port}" ]; then
- if [ "${steammaster}" == "true" ] || [ "${commandname}" == "DEV-QUERY-RAW" ]; then
- # Will query server IP addresses first.
- for queryip in "${queryips[@]}"; do
- masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${queryip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" '.response.servers[] | select((.gameport == ($port|tonumber) or (.gameport == ($queryport|tonumber)))) | .addr' | wc -l 2> /dev/null)"
- done
- # Should that not work it will try the external IP.
- if [ "${masterserver}" == "0" ]; then
- masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${extip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" '.response.servers[] | select((.gameport == ($port|tonumber) or (.gameport == ($queryport|tonumber)))) | .addr' | wc -l 2> /dev/null)"
- fi
- if [ "${masterserver}" == "0" ]; then
- displaymasterserver="false"
- else
- displaymasterserver="true"
- fi
- fi
- fi
- fi
-fi
diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh
deleted file mode 100644
index 3766049c6..000000000
--- a/lgsm/functions/info_messages.sh
+++ /dev/null
@@ -1,1849 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# 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
-}
-
-# Alert Summary
-# used with alertlog
-fn_info_message_head() {
- echo -e ""
- echo -e "${lightyellow}Alert Summary${default}"
- fn_messages_separator
- echo -e "Message"
- echo -e "${alertbody}"
- echo -e ""
- echo -e "Game"
- echo -e "${gamename}"
- echo -e ""
- echo -e "Server name"
- echo -e "${servername}"
- echo -e ""
- echo -e "Hostname"
- echo -e "${HOSTNAME}"
- echo -e ""
- echo -e "Server IP"
- echo -e "${ip}:${port}"
-}
-
-fn_info_message_distro() {
- #
- # Distro Details
- # =================================
- # Date: Sun 21 Feb 2021 09:22:53 AM UTC
- # Distro: Ubuntu 20.04.2 LTS
- # Arch: x86_64
- # Kernel: 5.4.0-65-generic
- # Hostname: server
- # Uptime: 16d, 5h, 18m
- # tmux: tmux 3.0a
- # glibc: 2.31
-
- echo -e ""
- echo -e "${lightyellow}Distro Details${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Date:\t${default}$(date)"
- echo -e "${lightblue}Distro:\t${default}${distroname}"
- echo -e "${lightblue}Arch:\t${default}${arch}"
- echo -e "${lightblue}Kernel:\t${default}${kernel}"
- echo -e "${lightblue}Hostname:\t${default}${HOSTNAME}"
- echo -e "${lightblue}Uptime:\t${default}${days}d, ${hours}h, ${minutes}m"
- echo -e "${lightblue}tmux:\t${default}${tmuxv}"
- echo -e "${lightblue}glibc:\t${default}${glibcversion}"
- if [ -n "${javaram}" ]; then
- echo -e "${lightblue}Java:\t${default}${javaversion}"
- fi
- } | column -s $'\t' -t
-}
-
-fn_info_message_server_resource() {
- #
- # Server Resource
- # =================================
- # CPU
- # Model: AMD EPYC 7601 32-Core Processor
- # Cores: 2
- # Frequency: 2199.994MHz
- # Avg Load: 0.01, 0.05, 0.18
- #
- # Memory
- # Mem: total used free cached available
- # Physical: 3.9GB 350MB 3.3GB 3.2GB 3.3GB
- # Swap: 512MB 55MB 458MB
- #
- # Storage
- # Filesystem: /dev/sda
- # Total: 79G
- # Used: 73G
- # Available: 1.4G
- #
- # Network
- # IP: 0.0.0.0
- # Internet IP: 176.58.124.96
-
- echo -e ""
- echo -e "${lightyellow}Server Resource${default}"
- fn_messages_separator
- {
- echo -e "${lightyellow}CPU\t${default}"
- echo -e "${lightblue}Model:\t${default}${cpumodel}"
- echo -e "${lightblue}Cores:\t${default}${cpucores}"
- echo -e "${lightblue}Frequency:\t${default}${cpufreqency}MHz"
- echo -e "${lightblue}Avg Load:\t${default}${load}"
- } | column -s $'\t' -t
- echo -e ""
- {
- echo -e "${lightyellow}Memory\t${default}"
- echo -e "${lightblue}Mem:\t${lightblue}total\tused\tfree\tcached\tavailable${default}"
- echo -e "${lightblue}Physical:\t${default}${physmemtotal}\t${physmemused}\t${physmemfree}\t${physmemcached}\t${physmemavailable}${default}"
- echo -e "${lightblue}Swap:\t${default}${swaptotal}\t${swapused}\t${swapfree}${default}"
- } | column -s $'\t' -t
- echo -e ""
- {
- echo -e "${lightyellow}Storage${default}"
- echo -e "${lightblue}Filesystem:\t${default}${filesystem}"
- echo -e "${lightblue}Total:\t\t${default}${totalspace}"
- echo -e "${lightblue}Used:\t\t${default}${usedspace}"
- echo -e "${lightblue}Available:\t${default}${availspace}"
- } | column -s $'\t' -t
- echo -e ""
- {
- echo -e "${lightyellow}Network${default}"
- if [ -n "${netint}" ]; then
- echo -e "${lightblue}Interface:\t${default}${netint}"
- fi
- if [ -n "${netlink}" ]; then
- echo -e "${lightblue}Link Speed:\t${default}${netlink}"
- fi
- echo -e "${lightblue}IP:\t${default}${ip}"
- if [ "${ip}" != "${extip}" ]; then
- echo -e "${lightblue}Internet IP:\t${default}${extip}"
- fi
- } | column -s $'\t' -t
-}
-
-fn_info_message_gameserver_resource() {
- #
- # Game Server Resource Usage
- # =================================
- # CPU Used: 1.1%
- # Mem Used: 4.8% 189MB
- #
- # Storage
- # Total: 241M
- # Serverfiles: 240M
- # Backups: 24K
-
- echo -e ""
- echo -e "${lightyellow}Game Server Resource Usage${default}"
- fn_messages_separator
- {
- if [ "${status}" != "0" ] && [ -v status ]; then
- 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}"
- fi
- } | column -s $'\t' -t
- echo -e ""
- {
- echo -e "${lightyellow}Storage${default}"
- echo -e "${lightblue}Total:\t${default}${rootdirdu}"
- echo -e "${lightblue}Serverfiles:\t${default}${serverfilesdu}"
- if [ -d "${backupdir}" ]; then
- echo -e "${lightblue}Backups:\t${default}${backupdirdu}"
- fi
- } | column -s $'\t' -t
-}
-
-fn_info_message_gameserver() {
- #
- # Counter-Strike: Global Offensive Server Details
- # =================================
- # Server name: LinuxGSM
- # Server IP: 0.0.0.0:27015
- # Internet IP: 176.48.124.96:34197
- # Server password: NOT SET
- # RCON password: adminF54CC0VR
- # Players: 0/16
- # Current map: de_mirage
- # Default map: de_mirage
- # Game type: 0
- # Game mode: 0
- # Tick rate: 64
- # Master Server: listed
- # Status: STARTED
-
- echo -e ""
- echo -e "${lightgreen}${gamename} Server Details${default}"
- fn_info_message_password_strip
- fn_messages_separator
- {
- # Server name
- if [ -n "${gdname}" ]; then
- echo -e "${lightblue}Server name:\t${default}${gdname}"
- elif [ -n "${servername}" ]; then
- echo -e "${lightblue}Server name:\t${default}${servername}"
- fi
-
- # Server description
- if [ -n "${serverdescription}" ]; then
- echo -e "${lightblue}Server Description:\t${default}${serverdescription}"
- fi
-
- # Appid
- if [ -n "${appid}" ]; then
- echo -e "${lightblue}App ID:\t${default}${appid}"
- fi
-
- # Branch
- if [ -n "${branch}" ]; then
- echo -e "${lightblue}Branch:\t${default}${branch}"
- fi
-
- # Beta Password
- if [ -n "${betapassword}" ]; then
- 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}"
-
- # Internet ip
- if [ -n "${extip}" ]; then
- if [ "${ip}" != "${extip}" ]; then
- echo -e "${lightblue}Internet IP:\t${default}${extip}:${port}"
- fi
- fi
-
- # Display ip
- if [ -n "${displayip}" ]; then
- echo -e "${lightblue}Display IP:\t${default}${displayip}:${port}"
- fi
-
- # Server password
- if [ -n "${serverpassword}" ]; then
- echo -e "${lightblue}Server password:\t${default}${serverpassword}"
- fi
-
- # Query enabled (Starbound)
- if [ -n "${queryenabled}" ]; then
- echo -e "${lightblue}Query enabled:\t${default}${queryenabled}"
- fi
-
- # RCON enabled (Starbound)
- if [ -n "${rconenabled}" ]; then
- echo -e "${lightblue}RCON enabled:\t${default}${rconenabled}"
- fi
-
- # RCON password
- if [ -n "${rconpassword}" ]; then
- echo -e "${lightblue}RCON password:\t${default}${rconpassword}"
- fi
-
- # RCON web (Rust)
- if [ -n "${rconweb}" ]; then
- echo -e "${lightblue}RCON web:\t${default}${rconweb}"
- fi
-
- # Admin password
- if [ -n "${adminpassword}" ]; then
- echo -e "${lightblue}Admin password:\t${default}${adminpassword}"
- fi
-
- # Stats password (Quake Live)
- if [ -n "${statspassword}" ]; then
- echo -e "${lightblue}Stats password:\t${default}${statspassword}"
- fi
-
- # Players
- if [ "${querystatus}" != "0" ]; then
- if [ -n "${maxplayers}" ]; then
- echo -e "${lightblue}Maxplayers:\t${default}${maxplayers}"
- fi
- else
- if [ -n "${gdplayers}" ] && [ -n "${gdmaxplayers}" ]; then
- echo -e "${lightblue}Players:\t${default}${gdplayers}/${gdmaxplayers}"
- elif [ -n "${gdplayers}" ] && [ -n "${maxplayers}" ]; then
- echo -e "${lightblue}Players:\t${default}${gdplayers}/${maxplayers}"
- elif [ -z "${gdplayers}" ] && [ -n "${gdmaxplayers}" ]; then
- echo -e "${lightblue}Players:\t${default}0/${gdmaxplayers}"
- elif [ -n "${gdplayers}" ] && [ -z "${gdmaxplayers}" ]; then
- echo -e "${lightblue}Players:\t${default}${gdplayers}/∞"
- elif [ -z "${gdplayers}" ] && [ -z "${gdmaxplayers}" ] && [ -n "${maxplayers}" ]; then
- echo -e "${lightblue}Maxplayers:\t${default}${maxplayers}"
- fi
- fi
-
- # Reverved Slots
- if [ -n "${statspassword}" ]; then
- echo -e "${lightblue}Reserved Slots:\t${default}${reservedslots}"
- fi
-
- # Bots
- if [ -n "${gdbots}" ]; then
- echo -e "${lightblue}Bots:\t${default}${gdbots}"
- fi
-
- # Current map
- if [ -n "${gdmap}" ]; then
- echo -e "${lightblue}Current map:\t${default}${gdmap}"
- fi
-
- # Default map
- if [ -n "${defaultmap}" ]; then
- echo -e "${lightblue}Default map:\t${default}${defaultmap}"
- fi
-
- if [ -n "${defaultscenario}" ]; then
- # Current scenario (Insurgency: Sandstorm)
- if [ -n "${gdgamemode}" ]; then
- echo -e "${lightblue}Current scenario:\t${default}${gdgamemode}"
- fi
- else
- # Current game mode
- if [ -n "${gdgamemode}" ]; then
- echo -e "${lightblue}Current game mode:\t${default}${gdgamemode}"
- fi
- fi
-
- # Default scenario
- if [ -n "${defaultscenario}" ]; then
- echo -e "${lightblue}Default scenario:\t${default}${defaultscenario}"
- fi
-
- # Game type
- if [ -n "${gametype}" ]; then
- echo -e "${lightblue}Game type:\t${default}${gametype}"
- fi
-
- # Game mode
- if [ -n "${gamemode}" ]; then
- echo -e "${lightblue}Game mode:\t${default}${gamemode}"
- fi
-
- # Game world
- if [ -n "${gameworld}" ]; then
- echo -e "${lightblue}Game world:\t${default}${gameworld}"
- fi
-
- # Tick rate
- if [ -n "${tickrate}" ]; then
- echo -e "${lightblue}Tick rate:\t${default}${tickrate}"
- fi
-
- # Sharding (Don't Starve Together)
- if [ -n "${sharding}" ]; then
- echo -e "${lightblue}Sharding:\t${default}${sharding}"
- fi
-
- # Master (Don't Starve Together)
- if [ -n "${master}" ]; then
- echo -e "${lightblue}Master:\t${default}${master}"
- fi
-
- # Shard (Don't Starve Together)
- if [ -n "${shard}" ]; then
- echo -e "${lightblue}Shard:\t${default}${shard}"
- fi
-
- # Cluster (Don't Starve Together)
- if [ -n "${cluster}" ]; then
- echo -e "${lightblue}Cluster:\t${default}${cluster}"
- fi
-
- # Cave (Don't Starve Together)
- if [ -n "${cave}" ]; then
- echo -e "${lightblue}Cave:\t${default}${cave}"
- fi
-
- # Creativemode (Hurtworld)
- if [ -n "${creativemode}" ]; then
- echo -e "${lightblue}Creativemode:\t${default}${creativemode}"
- fi
-
- # TeamSpeak dbplugin
- if [ -n "${dbplugin}" ]; then
- echo -e "${lightblue}dbplugin:\t${default}${dbplugin}"
- fi
-
- # ASE (Multi Theft Auto)
- if [ -n "${ase}" ]; then
- echo -e "${lightblue}ASE:\t${default}${ase}"
- fi
-
- # Save interval (Rust)
- if [ -n "${saveinterval}" ]; then
- 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)
- if [ -n "${randommap}" ]; then
- echo -e "${lightblue}Map rotation:\t${default}${randommap}"
- fi
-
- # Server Version (Jedi Knight II: Jedi Outcast)
- if [ -n "${serverversion}" ]; then
- echo -e "${lightblue}Server Version:\t${default}${serverversion}"
- fi
-
- # authentication token (Factorio)
- if [ -n "${authtoken}" ]; then
- echo -e "${lightblue}Auth Token:\t${default}${authtoken}"
- fi
-
- # savegameinterval (Factorio)
- if [ -n "${savegameinterval}" ]; then
- echo -e "${lightblue}Savegame Interval:\t${default}${savegameinterval}"
- fi
-
- # versioncount (Factorio)
- if [ -n "${versioncount}" ]; then
- echo -e "${lightblue}Version Count:\t${default}${versioncount}"
- fi
-
- # Listed on Master server
- if [ -n "${displaymasterserver}" ]; then
- if [ "${displaymasterserver}" == "true" ]; then
- echo -e "${lightblue}Master server:\t${green}listed${default}"
- else
- echo -e "${lightblue}Master server:\t${red}not listed${default}"
- fi
- fi
-
- # Game server status
- if [ "${status}" == "0" ]; then
- echo -e "${lightblue}Status:\t${red}STOPPED${default}"
- else
- echo -e "${lightblue}Status:\t${green}STARTED${default}"
- fi
- } | column -s $'\t' -t
- echo -e ""
-}
-
-fn_info_message_script() {
- # csgoserver Script Details
- # =================================
- # Script name: csgoserver
- # LinuxGSM version: v21.1.3
- # glibc required: 2.18
- # Discord alert: off
- # Email alert: off
- # Gotify alert: off
- # IFTTT alert: off
- # Mailgun (email) alert: off
- # Pushbullet alert: off
- # Pushover alert: off
- # Rocketchat alert: off
- # Slack alert: off
- # Telegram alert: off
- # Update on start: off
- # User: lgsm
- # Location: /home/lgsm/csgoserver
- # Config file: /home/lgsm/csgoserver/serverfiles/csgo/cfg/csgoserver.cfg
-
- echo -e "${lightgreen}${selfname} Script Details${default}"
- fn_messages_separator
- {
- # Script name
- echo -e "${lightblue}Script name:\t${default}${selfname}"
-
- # LinuxGSM version
- if [ -n "${version}" ]; then
- echo -e "${lightblue}LinuxGSM version:\t${default}${version}"
- fi
-
- # glibc required
- if [ -n "${glibc}" ]; then
- if [ "${glibc}" == "null" ]; then
- # Glibc is not required.
- :
- elif [ -z "${glibc}" ]; then
- echo -e "${lightblue}glibc required:\t${red}UNKNOWN${default}"
- elif [ "$(printf '%s\n'${glibc}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibc}" ]; then
- echo -e "${lightblue}glibc required:\t${red}${glibc} ${default}(${red}distro glibc ${glibcversion} too old${default})"
- else
- echo -e "${lightblue}glibc required:\t${green}${glibc}${default}"
- fi
- fi
-
- # Discord alert
- echo -e "${lightblue}Discord alert:\t${default}${discordalert}"
- # Email alert
- echo -e "${lightblue}Email alert:\t${default}${emailalert}"
- # Gotify alert
- echo -e "${lightblue}Gotify alert:\t${default}${gotifyalert}"
- # IFTTT alert
- echo -e "${lightblue}IFTTT alert:\t${default}${iftttalert}"
- # Mailgun alert
- echo -e "${lightblue}Mailgun (email) alert:\t${default}${mailgunalert}"
- # Pushbullet alert
- echo -e "${lightblue}Pushbullet alert:\t${default}${pushbulletalert}"
- # Pushover alert
- echo -e "${lightblue}Pushover alert:\t${default}${pushoveralert}"
- # Rocketchat alert
- echo -e "${lightblue}Rocketchat alert:\t${default}${rocketchatalert}"
- # Slack alert
- echo -e "${lightblue}Slack alert:\t${default}${slackalert}"
- # Telegram alert
- echo -e "${lightblue}Telegram alert:\t${default}${telegramalert}"
-
- # Update on start
- if [ -n "${updateonstart}" ]; then
- echo -e "${lightblue}Update on start:\t${default}${updateonstart}"
- fi
-
- # User
- echo -e "${lightblue}User:\t${default}$(whoami)"
-
- # Script location
- echo -e "${lightblue}Location:\t${default}${rootdir}"
-
- # Config file location
- if [ -n "${servercfgfullpath}" ]; then
- if [ -f "${servercfgfullpath}" ]; then
- echo -e "${lightblue}Config file:\t${default}${servercfgfullpath}"
- elif [ -d "${servercfgfullpath}" ]; then
- echo -e "${lightblue}Config dir:\t${default}${servercfgfullpath}"
- else
- echo -e "${lightblue}Config file:\t${default}${red}${servercfgfullpath}${default} (${red}FILE MISSING${default})"
- fi
- fi
-
- # Network config file location (ARMA 3)
- if [ -n "${networkcfgfullpath}" ]; then
- echo -e "${lightblue}Network config file:\t${default}${networkcfgfullpath}"
- fi
- } | column -s $'\t' -t
-}
-
-fn_info_message_backup() {
- #
- # Backups
- # =================================
- # No. of backups: 1
- # Latest backup:
- # date: Fri May 6 18:34:19 UTC 2016
- # file: /home/lgsm/qlserver/backups/ql-server-2016-05-06-183239.tar.gz
- # size: 945M
-
- echo -e ""
- echo -e "${lightgreen}Backups${default}"
- fn_messages_separator
- if [ ! -d "${backupdir}" ] || [ "${backupcount}" == "0" ]; then
- echo -e "No Backups created"
- else
- {
- echo -e "${lightblue}No. of backups:\t${default}${backupcount}"
- echo -e "${lightblue}Latest backup:${default}"
- if [ "${lastbackupdaysago}" == "0" ]; then
- echo -e "${lightblue} date:\t${default}${lastbackupdate} (less than 1 day ago)"
- elif [ "${lastbackupdaysago}" == "1" ]; then
- echo -e "${lightblue} date:\t${default}${lastbackupdate} (1 day ago)"
- else
- echo -e "${lightblue} date:\t${default}${lastbackupdate} (${lastbackupdaysago} days ago)"
- fi
- echo -e "${lightblue} file:\t${default}${lastbackup}"
- echo -e "${lightblue} size:\t${default}${lastbackupsize}"
- } | column -s $'\t' -t
- fi
-}
-
-fn_info_message_commandlineparms() {
- #
- # Command-line Parameters
- # =================================
- # ./run_server_x86.sh +set net_strict 1
-
- echo -e ""
- echo -e "${lightgreen}Command-line Parameters${default}"
- fn_info_message_password_strip
- fn_messages_separator
- if [ "${serverpassword}" == "NOT SET" ]; then
- unset serverpassword
- fi
- fn_reload_startparameters
- echo -e "${preexecutable} ${executable} ${startparameters}"
-}
-
-fn_info_message_ports_edit() {
- #
- # Ports
- # =================================
- # Change ports by editing the parameters in:
- # /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg
- echo -e ""
- echo -e "${lightgreen}Ports${default}"
- fn_messages_separator
- echo -e "${lightblue}Change ports by editing the parameters in:${default}"
-
- startparameterslocation="${red}UNKNOWN${default}"
- # engines/games that require editing in the config file.
- local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "cd" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "nec" "pc" "pc2" "prism3d" "pz" "qw" "refractor" "renderware" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "wurm")
- for port_edit in "${ports_edit_array[@]}"; do
- if [ "${shortname}" == "ut3" ]; then
- startparameterslocation="${servercfgdir}/UTWeb.ini"
- elif [ "${shortname}" == "kf2" ]; then
- startparameterslocation="${servercfgdir}/LinuxServer-KFEngine.ini\n${servercfgdir}/KFWeb.ini"
- elif [ "${engine}" == "${port_edit}" ] || [ "${gamename}" == "${port_edit}" ] || [ "${shortname}" == "${port_edit}" ]; then
- startparameterslocation="${servercfgfullpath}"
- fi
- done
- # engines/games that require editing the start parameters.
- local ports_edit_array=("av" "ck" "col" "fctr" "goldsrc" "hw" "iw3.0" "ioquake3" "qfusion" "rust" "scpsl" "scpslsm" "sol" "spark" "source" "unreal4" "arma3" "dayz" "unt" "vh")
- for port_edit in "${ports_edit_array[@]}"; do
- if [ "${engine}" == "${port_edit}" ] || [ "${gamename}" == "${port_edit}" ] || [ "${shortname}" == "${port_edit}" ]; then
- startparameterslocation="${configdirserver}"
- fi
- done
- echo -e "${startparameterslocation}"
- echo -e ""
-}
-
-fn_info_message_ports() {
- echo -e "${lightblue}Useful port diagnostic command:${default}"
- if [ "${shortname}" == "armar" ]; then
- echo -e "ss -tuplwn | grep enfMain"
- elif [ "${shortname}" == "av" ]; then
- echo -e "ss -tuplwn | grep AvorionServer"
- elif [ "${shortname}" == "bf1942" ]; then
- echo -e "ss -tuplwn | grep bf1942_lnxded"
- elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "nec" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "rw" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then
- echo -e "ss -tuplwn | grep java"
- elif [ "${shortname}" == "terraria" ]; then
- echo -e "ss -tuplwn | grep Main"
- elif [ "${engine}" == "source" ]; then
- echo -e "ss -tuplwn | grep srcds_linux"
- elif [ "${engine}" == "goldsrc" ]; then
- echo -e "ss -tuplwn | grep hlds_linux"
- else
- executableshort="$(basename "${executable}" | cut -c -15)"
- echo -e "ss -tuplwn | grep ${executableshort}"
- fi
- echo -e ""
-}
-
-fn_info_message_statusbottom() {
- echo -e ""
- if [ "${status}" == "0" ]; then
- echo -e "${lightblue}Status:\t${red}STOPPED${default}"
- else
- echo -e "${lightblue}Status:\t${green}STARTED${default}"
- fi
- echo -e ""
-}
-
-fn_info_logs() {
- echo -e ""
- echo -e "${selfname} Logs"
- echo -e "================================="
-
- if [ -n "${lgsmlog}" ]; then
- echo -e "\nScript log\n==================="
- if [ ! "$(ls -A "${lgsmlogdir}")" ]; then
- echo -e "${lgsmlogdir} (NO LOG FILES)"
- elif [ ! -s "${lgsmlog}" ]; then
- echo -e "${lgsmlog} (LOG FILE IS EMPTY)"
- else
- echo -e "${lgsmlog}"
- tail -25 "${lgsmlog}"
- fi
- echo -e ""
- fi
-
- if [ -n "${consolelog}" ]; then
- echo -e "\nConsole log\n===================="
- if [ ! "$(ls -A "${consolelogdir}")" ]; then
- echo -e "${consolelogdir} (NO LOG FILES)"
- elif [ ! -s "${consolelog}" ]; then
- echo -e "${consolelog} (LOG FILE IS EMPTY)"
- else
- echo -e "${consolelog}"
- tail -25 "${consolelog}" | awk '{ sub("\r$", ""); print }'
- fi
- echo -e ""
- fi
-
- if [ -n "${gamelogdir}" ]; then
- echo -e "\nServer log\n==================="
- if [ ! "$(ls -A "${gamelogdir}")" ]; then
- echo -e "${gamelogdir} (NO LOG FILES)"
- else
- echo -e "${gamelogdir}"
- # dos2unix sed 's/\r//'
- tail "${gamelogdir}"/* 2> /dev/null | grep -v "==>" | sed '/^$/d' | sed 's/\r//' | tail -25
- fi
- echo -e ""
- fi
-}
-
-# Engine/Game Specific details
-
-# Function used to generate port info. by passing info to function. (Reduces repeating code)
-# example output
-# DESCRIPTION PORT PROTOCOL LISTEN
-# Game 7777 udp 1
-# RAW UDP Socket 7778 udp 1
-# Query 27015 udp 1
-# RCON 27020 tcp 1
-
-fn_port() {
- if [ "${1}" == "header" ]; then
- echo -e "${lightblue}DESCRIPTION\tPORT\tPROTOCOL\tLISTEN${default}"
- else
- portname="${1}"
- porttype="${2}"
- portprotocol="${3}"
- echo -e "${portname}\t${!porttype}\t${portprotocol}\t$(echo "${ssinfo}" | grep "${portprotocol}" | grep -c "${!porttype}")"
- fi
-}
-
-fn_info_message_ac() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Game" port tcp
- fn_port "Query" queryport udp
- fn_port "HTTP" httpport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_ark() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "RAW UDP Socket" rawport udp
- fn_port "Query" queryport udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_arma3() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Voice" voiceport udp
- fn_port "Query" queryport udp
- fn_port "Steam Master" steammasterport udp
- fn_port "Voice (unused)" voiceunusedport udp
- fn_port "BattleEye" battleeyeport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_armar() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Steam Query" queryport udp
- fn_port "BattleEye" battleeyeport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_av() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Steam Master" steammasterport udp
- fn_port "Steam Query" steamqueryport udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_bf1942() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_bfv() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_bo() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_bt() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_btl() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_messages_cd() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Steam" steamport udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_messages_ck() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_cmw() {
- fn_info_message_password_strip
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_cod() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_coduo() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_cod2() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_cod4() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_codwaw() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_col() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport tcp
- fn_port "Steam" steamport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_csgo() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport tcp
- fn_port "RCON" rconport tcp
- fn_port "SourceTV" sourcetvport udp
- fn_port "Client" clientport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_dayz() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query Steam" queryport udp
- fn_port "Steam Master" steammasterport udp
- fn_port "BattleEye" battleeyeport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_dodr() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_dst() {
- {
- fn_port "header"
- fn_port "Game: Server" port udp
- fn_port "Game: Master" masterport udp
- fn_port "Steam: Auth" steamauthport udp
- fn_port "Steam: Master" steammasterport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_eco() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Web Admin" webadminport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_etl() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_fctr() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_goldsrc() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Client" clientport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_hw() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_ins() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport tcp
- fn_port "RCON" rconport tcp
- fn_port "SourceTV" sourcetvport udp
- fn_port "Client" clientport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_inss() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_jc2() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_jc3() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Steam" steamport udp
- fn_port "HTTP" httpport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_jk2() {
- {
- fn_port "header"
- fn_port "Game" port udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_kf() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Query (GameSpy)" queryportgs udp
- fn_port "Web Admin" webadminport tcp
- fn_port "LAN" lanport udp
- fn_port "Steam" steamport udp
- fn_port "Steam Master" steammasterport udp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${servername} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}"
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}"
- echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}"
- echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_kf2() {
- fn_info_message_password_strip
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Web Admin" webadminport tcp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${servername} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}"
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}"
- echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}"
- echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_lo() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_mc() {
- {
- fn_port "header"
- fn_port "Game" port tcp
- fn_port "Query" queryport udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_mcb() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Game" portipv6 udp6
- } | column -s $'\t' -t
-}
-
-fn_info_message_mh() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Beacon" beaconport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_mohaa() {
- {
- fn_port "header"
- fn_port "Game" port udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_mom() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Beacon" beaconport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_mta() {
- {
- fn_port "header"
- fn_port "Game" port udp
- if [ "${ase}" == "Enabled" ]; then
- fn_port "Query" queryport udp
- fi
- fn_port "HTTP" httpport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_nec() {
- {
- fn_port "header"
- fn_port "Game" port udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_onset() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "HTTP" httpport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_pc() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Steam" steamport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_pc2() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Steam" steamport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_pstbs() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_pvr() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Game" port tcp
- fn_port "Game+400" port401 udp
- fn_port "Query" queryport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_pz() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_qw() {
- {
- fn_port "header"
- fn_port "Game" port udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_q2() {
- {
- fn_port "header"
- fn_port "Game" port udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_q3() {
- {
- fn_port "header"
- fn_port "Game" port udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_ql() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "RCON" rconport tcp
- fn_port "Stats" statsport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_ro() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Web Admin" webadminport tcp
- fn_port "LAN" lanport udp
- fn_port "Steam" steamport udp
- fn_port "Steam Master" steammasterport udp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${servername} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}"
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}"
- echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}"
- echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_rtcw() {
- {
- fn_port "header"
- fn_port "Game" port udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_rust() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "RCON" rconport tcp
- fn_port "App" appport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_rw() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Game+1" port2 udp
- fn_port "Game+2" port3 udp
- fn_port "Game+3" port4 udp
- fn_port "Game+1" port2 tcp
- fn_port "Game+2" port3 tcp
- fn_port "Game+3" port4 tcp
- fn_port "Query" queryport tcp
- fn_port "Query HTTP" httpqueryport tcp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_samp() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "RCON" rconport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_sb() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport tcp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_sbots() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_scpsl() {
- {
- fn_port "header"
- fn_port "Game" port tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_sdtd() {
- fn_info_message_password_strip
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Game+2" port3 udp
- fn_port "Query" queryport tcp
- fn_port "Web Admin" webadminport tcp
- fn_port "Telnet" telnetport tcp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${gamename} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}"
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}/index.html"
- echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}"
- echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}"
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${gamename} Telnet${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Telnet enabled:\t${default}${telnetenabled}"
- echo -e "${lightblue}Telnet address:\t${default}${telnetip} ${telnetport}"
- echo -e "${lightblue}Telnet password:\t${default}${telnetpass}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_sf() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Beacon" beaconport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_sof2() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_sol() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Files" filesport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_prism3d() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_source() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport tcp
- fn_port "RCON" rconport tcp
- fn_port "SourceTV" sourcetvport udp
- # Will not show if unaviable
- if [ "${steamport}" == "0" ] || [ -v "${steamport}" ]; then
- fn_port "Steam" steamport udp
- fi
- fn_port "Client" clientport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_spark() {
- fn_info_message_password_strip
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Web Admin" webadminport tcp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${gamename} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}/index.html"
- echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}"
- echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_squad() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "RCON" rconport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_st() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Web Admin" webadminport tcp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${gamename} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_ti() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_ts3() {
- {
- fn_port "header"
- fn_port "Voice" port udp
- fn_port "Query" queryport tcp
- fn_port "Query (SSH)" querysshport tcp
- fn_port "Query (http)" queryhttpport tcp
- fn_port "Query (https)" queryhttpsport tcp
- fn_port "File Transfer" fileport tcp
- fn_port "Telnet" telnetport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_tw() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_terraria() {
- {
- fn_port "header"
- fn_port "Game" port tcp
- fn_port "Query" queryport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_tu() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Steam" steamport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_unreal() {
- fn_info_message_password_strip
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "LAN Beacon" beaconport udp
- fn_port "Web Admin" webadminport tcp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${servername} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}"
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}"
- echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}"
- echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_ut2k4() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Query (GameSpy)" queryportgs udp
- fn_port "Web Admin" webadminport tcp
- fn_port "LAN" lanport udp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${servername} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}"
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}"
- echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}"
- echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_unreal() {
- fn_info_message_password_strip
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "LAN Beacon" beaconport udp
- fn_port "Web Admin" webadminport tcp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${servername} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}"
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}"
- echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}"
- echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_unt() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Steam" steamport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_ut() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_ut3() {
- fn_info_message_password_strip
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Web Admin" webadminport tcp
- } | column -s $'\t' -t
- echo -e ""
- echo -e "${lightgreen}${servername} Web Admin${default}"
- fn_messages_separator
- {
- echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}"
- echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}"
- echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}"
- echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}"
- } | column -s $'\t' -t
-}
-
-fn_info_message_vh() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_vints() {
- {
- fn_port "header"
- fn_port "Game" port tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_vpmc() {
- {
- fn_port "header"
- fn_port "Game" port tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_wet() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_wf() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "HTTP" httpport tcp
- } | column -s $'\t' -t
-}
-
-fn_info_message_wurm() {
- {
- fn_port "header"
- fn_port "Game" port tcp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_stn() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_select_engine() {
- # Display details depending on game or engine.
- if [ "${shortname}" == "ac" ]; then
- fn_info_message_ac
- elif [ "${shortname}" == "ark" ]; then
- fn_info_message_ark
- elif [ "${shortname}" == "arma3" ]; then
- fn_info_message_arma3
- elif [ "${shortname}" == "armar" ]; then
- fn_info_message_armar
- elif [ "${shortname}" == "av" ]; then
- fn_info_message_av
- elif [ "${shortname}" == "bf1942" ]; then
- fn_info_message_bf1942
- elif [ "${shortname}" == "bfv" ]; then
- fn_info_message_bfv
- elif [ "${shortname}" == "bo" ]; then
- fn_info_message_bo
- elif [ "${shortname}" == "bt" ]; then
- fn_info_message_bt
- elif [ "${shortname}" == "btl" ]; then
- fn_info_message_btl
- elif [ "${shortname}" == "cd" ]; then
- fn_info_messages_cd
- elif [ "${shortname}" == "ck" ]; then
- fn_info_messages_ck
- elif [ "${shortname}" == "csgo" ]; then
- fn_info_message_csgo
- elif [ "${shortname}" == "cmw" ]; then
- fn_info_message_cmw
- elif [ "${shortname}" == "cod" ]; then
- fn_info_message_cod
- elif [ "${shortname}" == "coduo" ]; then
- fn_info_message_coduo
- elif [ "${shortname}" == "cod2" ]; then
- fn_info_message_cod2
- elif [ "${shortname}" == "cod4" ]; then
- fn_info_message_cod4
- elif [ "${shortname}" == "codwaw" ]; then
- fn_info_message_codwaw
- elif [ "${shortname}" == "col" ]; then
- fn_info_message_col
- elif [ "${shortname}" == "dayz" ]; then
- fn_info_message_dayz
- elif [ "${shortname}" == "dodr" ]; then
- fn_info_message_dodr
- elif [ "${shortname}" == "dst" ]; then
- fn_info_message_dst
- elif [ "${shortname}" == "eco" ]; then
- fn_info_message_eco
- elif [ "${shortname}" == "etl" ]; then
- fn_info_message_etl
- elif [ "${shortname}" == "fctr" ]; then
- fn_info_message_fctr
- elif [ "${shortname}" == "hcu" ]; then
- fn_info_message_hcu
- elif [ "${shortname}" == "hw" ]; then
- fn_info_message_hw
- elif [ "${shortname}" == "ins" ]; then
- fn_info_message_ins
- elif [ "${shortname}" == "inss" ]; then
- fn_info_message_inss
- elif [ "${shortname}" == "jc2" ]; then
- fn_info_message_jc2
- elif [ "${shortname}" == "jc3" ]; then
- fn_info_message_jc3
- elif [ "${shortname}" == "jk2" ]; then
- fn_info_message_jk2
- elif [ "${shortname}" == "kf" ]; then
- fn_info_message_kf
- elif [ "${shortname}" == "kf2" ]; then
- fn_info_message_kf2
- elif [ "${shortname}" == "lo" ]; then
- fn_info_message_lo
- elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "wmc" ]; then
- fn_info_message_mc
- elif [ "${shortname}" == "mcb" ]; then
- fn_info_message_mcb
- elif [ "${shortname}" == "mh" ]; then
- fn_info_message_mh
- elif [ "${shortname}" == "mohaa" ]; then
- fn_info_message_mohaa
- elif [ "${shortname}" == "mom" ]; then
- fn_info_message_mom
- elif [ "${shortname}" == "mta" ]; then
- fn_info_message_mta
- elif [ "${shortname}" == "nec" ]; then
- fn_info_message_nec
- elif [ "${shortname}" == "onset" ]; then
- fn_info_message_onset
- elif [ "${shortname}" == "pc" ]; then
- fn_info_message_pc
- elif [ "${shortname}" == "pc2" ]; then
- fn_info_message_pc2
- elif [ "${shortname}" == "pstbs" ]; then
- fn_info_message_pstbs
- elif [ "${shortname}" == "pvr" ]; then
- fn_info_message_pvr
- elif [ "${shortname}" == "pz" ]; then
- fn_info_message_pz
- elif [ "${shortname}" == "q2" ]; then
- fn_info_message_q2
- elif [ "${shortname}" == "q3" ]; then
- fn_info_message_q3
- elif [ "${shortname}" == "ql" ]; then
- fn_info_message_ql
- elif [ "${shortname}" == "qw" ]; then
- fn_info_message_qw
- elif [ "${shortname}" == "ro" ]; then
- fn_info_message_ro
- elif [ "${shortname}" == "rtcw" ]; then
- fn_info_message_rtcw
- elif [ "${shortname}" == "samp" ]; then
- fn_info_message_samp
- elif [ "${shortname}" == "sb" ]; then
- fn_info_message_sb
- elif [ "${shortname}" == "sbots" ]; then
- fn_info_message_sbots
- elif [ "${shortname}" == "scpsl" ] || [ "${shortname}" == "scpslsm" ]; then
- fn_info_message_scpsl
- elif [ "${shortname}" == "sdtd" ]; then
- fn_info_message_sdtd
- elif [ "${shortname}" == "sf" ]; then
- fn_info_message_sf
- elif [ "${shortname}" == "sof2" ]; then
- fn_info_message_sof2
- elif [ "${shortname}" == "sol" ]; then
- fn_info_message_sol
- elif [ "${shortname}" == "squad" ]; then
- fn_info_message_squad
- elif [ "${shortname}" == "st" ]; then
- fn_info_message_st
- elif [ "${shortname}" == "stn" ]; then
- fn_info_message_stn
- elif [ "${shortname}" == "terraria" ]; then
- fn_info_message_terraria
- elif [ "${shortname}" == "ti" ]; then
- fn_info_message_ti
- elif [ "${shortname}" == "ts3" ]; then
- fn_info_message_ts3
- elif [ "${shortname}" == "tu" ]; then
- fn_info_message_tu
- elif [ "${shortname}" == "tw" ]; then
- fn_info_message_tw
- elif [ "${shortname}" == "unt" ]; then
- fn_info_message_unt
- elif [ "${shortname}" == "vh" ]; then
- fn_info_message_vh
- elif [ "${shortname}" == "vints" ]; then
- fn_info_message_vints
- elif [ "${shortname}" == "rust" ]; then
- fn_info_message_rust
- elif [ "${shortname}" == "rw" ]; then
- fn_info_message_rw
- elif [ "${shortname}" == "ut" ]; then
- fn_info_message_ut
- elif [ "${shortname}" == "ut2k4" ]; then
- fn_info_message_ut2k4
- elif [ "${shortname}" == "ut3" ]; then
- fn_info_message_ut3
- elif [ "${shortname}" == "vpmc" ]; then
- fn_info_message_vpmc
- elif [ "${shortname}" == "wet" ]; then
- fn_info_message_wet
- elif [ "${shortname}" == "wf" ]; then
- fn_info_message_wf
- elif [ "${shortname}" == "wurm" ]; then
- fn_info_message_wurm
- elif [ "${engine}" == "goldsrc" ]; then
- fn_info_message_goldsrc
- elif [ "${engine}" == "prism3d" ]; then
- fn_info_message_prism3d
- elif [ "${engine}" == "source" ]; then
- fn_info_message_source
- elif [ "${engine}" == "spark" ]; then
- fn_info_message_spark
- elif [ "${engine}" == "unreal" ]; then
- fn_info_message_unreal
- else
- fn_print_error_nl "Unable to detect game server."
- fi
-}
diff --git a/lgsm/functions/info_stats.sh b/lgsm/functions/info_stats.sh
deleted file mode 100644
index 0589770f6..000000000
--- a/lgsm/functions/info_stats.sh
+++ /dev/null
@@ -1,173 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-info_distro.sh
-
-# remove uuid that was used in v20.2.0 and below
-if [ -f "${datadir}/uuid.txt" ]; then
- rm -f "${datadir:?}/uuid.txt"
-fi
-
-# generate uuid's
-# this consists of a standard uuid and a docker style name
-# to allow human readable uuid's.
-# e.g angry_proskuriakova_38a9ef76-4ae3-46a6-a895-7af474831eba
-
-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" "nohash"
- fi
- if [ ! -f "${datadir}/name-right.csv" ]; then
- fn_fetch_file_github "lgsm/data" "name-right.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash"
- fi
-
- # generate instance uuid
- if [ -n "$(command -v uuidgen 2> /dev/null)" ]; then
- uuid="$(uuidgen)"
- else
- uuid="$(cat /proc/sys/kernel/random/uuid)"
- fi
-
- nameleft="$(shuf -n 1 "${datadir}/name-left.csv")"
- nameright="$(shuf -n 1 "${datadir}/name-right.csv")"
- echo "instance_${nameleft}_${nameright}_${uuid}" > "${datadir}/uuid-${selfname}.txt"
- # generate install uuid if missing
- if [ ! -f "${datadir}/uuid-install.txt" ]; then
- echo "${nameleft}_${nameright}_${uuid}" > "${datadir}/uuid-install.txt"
- fi
-fi
-
-uuidinstance=$(cat "${datadir}/uuid-${selfname}.txt")
-uuidinstall=$(cat "${datadir}/uuid-install.txt")
-# machine-id is a unique id set on OS install
-uuidhardware=$(cat "/etc/machine-id")
-
-# results are rounded up to reduce number of different results in analytics.
-# nearest 100Mhz.
-cpuusedmhzroundup="$(((cpuusedmhz + 99) / 100 * 100))"
-# nearest 100MB
-memusedroundup="$(((memused + 99) / 100 * 100))"
-
-# Spliting the metrics in to 3 propertys allows more accurate metrics on numbers of invidual instances, installs and hardware.
-# Instance Property - UA-165287622-1
-# Install Property - UA-165287622-2
-# Hardware Property - UA-165287622-3
-
-## Distro.
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-
-## Game Server Name.
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-
-## LinuxGSM Version.
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-
-## CPU usage of a game server.
-if [ -n "${cpuusedmhzroundup}" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-## Ram usage of a game server.
-if [ -n "${memusedroundup}" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-## Disk usage of a game server.
-if [ -n "${serverfilesdu}" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-
-## CPU Model.
-if [ -n "${cpumodel}" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-
-fi
-
-## CPU Frequency.
-if [ -n "${cpufreqency}" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-
-## Server RAM.
-if [ -n "${physmemtotal}" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-
-## Server Disk.
-if [ -n "${totalspace}" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-
-## Alert Stats.
-if [ "${discordalert}" == "on" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Discord" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-if [ "${emailalert}" == "on" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Email" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-if [ "${iftttalert}" == "on" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=IFTTT" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-if [ "${mailgunalert}" == "on" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Mailgun" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-if [ "${pushbulletalert}" == "on" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Pushbullet" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-if [ "${pushoveralert}" == "on" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Pushover" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-if [ "${rocketchatalert}" == "on" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Rocket Chat" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-if [ "${slackalert}" == "on" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Slack" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-if [ "${telegramalert}" == "on" ]; then
- curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Telegram" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-fi
-
-## Summary Stats
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
-
-fn_script_log_info "Send LinuxGSM stats"
-fn_script_log_info "* uuid-${selfname}: ${uuidinstance}"
-fn_script_log_info "* uuid-install: ${uuidinstall}"
-fn_script_log_info "* uuid-hardware: ${uuidhardware}"
-fn_script_log_info "* Game Name: ${gamename}"
-fn_script_log_info "* Distro Name: ${distroname}"
-fn_script_log_info "* Game Server CPU Used: ${cpuusedmhzroundup}MHz"
-fn_script_log_info "* Game Server RAM Used: ${memusedroundup}MB"
-fn_script_log_info "* Game Server Disk Used: ${serverfilesdu}"
-fn_script_log_info "* Server CPU Model: ${cpumodel}"
-fn_script_log_info "* Server CPU Frequency: ${cpufreqency}"
-fn_script_log_info "* Server RAM: ${physmemtotal}"
-fn_script_log_info "* Server Disk: ${totalspace}"
diff --git a/lgsm/functions/install_complete.sh b/lgsm/functions/install_complete.sh
deleted file mode 100644
index ad258b224..000000000
--- a/lgsm/functions/install_complete.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_complete.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Prints installation completion message and hints.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "================================="
-echo -e "Install Complete!"
-fn_script_log_info "Install Complete!"
-echo -e ""
-echo -e "To start server type:"
-echo -e "./${selfname} start"
-echo -e ""
-core_exit.sh
diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh
deleted file mode 100644
index 35d7df7c6..000000000
--- a/lgsm/functions/install_config.sh
+++ /dev/null
@@ -1,937 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_config.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Creates default server configs.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Checks if server cfg dir exists, creates it if it doesn't.
-fn_check_cfgdir() {
- if [ ! -d "${servercfgdir}" ]; then
- echo -e "creating ${servercfgdir} config directory."
- fn_script_log_info "creating ${servercfgdir} config directory."
- mkdir -pv "${servercfgdir}"
- fi
-}
-
-# Downloads default configs from Game-Server-Configs repo to lgsm/config-default.
-fn_fetch_default_config() {
- echo -e ""
- echo -e "${lightyellow}Downloading ${gamename} Configs${default}"
- echo -e "================================="
- echo -e "default configs from https://github.com/GameServerManagers/Game-Server-Configs"
- fn_sleep_time
- 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" "nohash"
- done
-}
-
-# Copys default configs from Game-Server-Configs repo to server config location.
-fn_default_config_remote() {
- for config in "${array_configs[@]}"; do
- # every config is copied
- echo -e "copying ${config} config file."
- fn_script_log_info "copying ${servercfg} config file."
- if [ "${config}" == "${servercfgdefault}" ]; then
- mkdir -p "${servercfgdir}"
- cp -nv "${lgsmdir}/config-default/config-game/${config}" "${servercfgfullpath}"
- elif [ "${shortname}" == "arma3" ] && [ "${config}" == "${networkcfgdefault}" ]; then
- mkdir -p "${servercfgdir}"
- cp -nv "${lgsmdir}/config-default/config-game/${config}" "${networkcfgfullpath}"
- elif [ "${shortname}" == "dst" ] && [ "${config}" == "${clustercfgdefault}" ]; then
- cp -nv "${lgsmdir}/config-default/config-game/${clustercfgdefault}" "${clustercfgfullpath}"
- else
- mkdir -p "${servercfgdir}"
- cp -nv "${lgsmdir}/config-default/config-game/${config}" "${servercfgdir}/${config}"
- fi
- done
- fn_sleep_time
-}
-
-# Copys local default config to server config location.
-fn_default_config_local() {
- echo -e "copying ${servercfgdefault} config file."
- cp -nv "${servercfgdir}/${servercfgdefault}" "${servercfgfullpath}"
- fn_sleep_time
-}
-
-# Changes some variables within the default configs.
-# SERVERNAME to LinuxGSM
-# PASSWORD to random password
-fn_set_config_vars() {
- if [ -f "${servercfgfullpath}" ]; then
- random=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 | xargs)
- servername="LinuxGSM"
- rconpass="admin${random}"
- echo -e "changing hostname."
- fn_script_log_info "changing hostname."
- fn_sleep_time
- # prevents var from being overwritten with the servername.
- if grep -q "SERVERNAME=SERVERNAME" "${lgsmdir}/config-default/config-game/${config}" 2> /dev/null; then
- sed -i "s/SERVERNAME=SERVERNAME/SERVERNAME=${servername}/g" "${servercfgfullpath}"
- elif grep -q "SERVERNAME=\"SERVERNAME\"" "${lgsmdir}/config-default/config-game/${config}" 2> /dev/null; then
- sed -i "s/SERVERNAME=\"SERVERNAME\"/SERVERNAME=\"${servername}\"/g" "${servercfgfullpath}"
- else
- sed -i "s/SERVERNAME/${servername}/g" "${servercfgfullpath}"
- fi
- echo -e "changing rcon/admin password."
- fn_script_log_info "changing rcon/admin password."
- if [ "${shortname}" == "squad" ]; then
- sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgdir}/Rcon.cfg"
- else
- sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgfullpath}"
- fi
- fn_sleep_time
- else
- fn_script_log_warn "Config file not found, cannot alter it."
- echo -e "Config file not found, cannot alter it."
- fn_sleep_time
- fi
-}
-
-# Changes some variables within the default Don't Starve Together configs.
-fn_set_dst_config_vars() {
- ## cluster.ini
- if grep -Fq "SERVERNAME" "${clustercfgfullpath}"; then
- echo -e "changing server name."
- fn_script_log_info "changing server name."
- sed -i "s/SERVERNAME/LinuxGSM/g" "${clustercfgfullpath}"
- fn_sleep_time
- echo -e "changing shard mode."
- fn_script_log_info "changing shard mode."
- sed -i "s/USESHARDING/${sharding}/g" "${clustercfgfullpath}"
- fn_sleep_time
- echo -e "randomizing cluster key."
- fn_script_log_info "randomizing cluster key."
- randomkey=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 | xargs)
- sed -i "s/CLUSTERKEY/${randomkey}/g" "${clustercfgfullpath}"
- fn_sleep_time
- else
- echo -e "${clustercfg} is already configured."
- fn_script_log_info "${clustercfg} is already configured."
- fi
-
- ## server.ini
- # removing unnecessary options (dependent on sharding & shard type).
- if [ "${sharding}" == "false" ]; then
- sed -i "s/ISMASTER//g" "${servercfgfullpath}"
- sed -i "/SHARDNAME/d" "${servercfgfullpath}"
- elif [ "${master}" == "true" ]; then
- sed -i "/SHARDNAME/d" "${servercfgfullpath}"
- fi
-
- echo -e "changing shard name."
- fn_script_log_info "changing shard name."
- sed -i "s/SHARDNAME/${shard}/g" "${servercfgfullpath}"
- fn_sleep_time
- echo -e "changing master setting."
- fn_script_log_info "changing master setting."
- sed -i "s/ISMASTER/${master}/g" "${servercfgfullpath}"
- fn_sleep_time
-
- ## worldgenoverride.lua
- if [ "${cave}" == "true" ]; then
- echo -e "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua."
- fn_script_log_info "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua."
- echo 'return { override_enabled = true, preset = "DST_CAVE", }' > "${servercfgdir}/worldgenoverride.lua"
- fi
- fn_sleep_time
- echo -e ""
-}
-
-# Lists local config file locations
-fn_list_config_locations() {
- echo -e ""
- echo -e "${lightyellow}Config File Locations${default}"
- echo -e "================================="
- if [ -n "${servercfgfullpath}" ]; then
- if [ -f "${servercfgfullpath}" ]; then
- echo -e "Game Server Config File: ${servercfgfullpath}"
- elif [ -d "${servercfgfullpath}" ]; then
- echo -e "Game Server Config Dir: ${servercfgfullpath}"
- else
- echo -e "Config file: ${red}${servercfgfullpath} (${red}FILE MISSING${default})"
- fi
- fi
- echo -e "LinuxGSM Config: ${lgsmdir}/config-lgsm/${gameservername}"
- echo -e "Documentation: https://docs.linuxgsm.com/configuration/game-server-config"
-}
-
-if [ "${shortname}" == "sdtd" ]; then
- gamedirname="7DaysToDie"
- fn_default_config_local
- fn_list_config_locations
-elif [ "${shortname}" == "ac" ]; then
- gamedirname="AssettoCorsa"
- array_configs+=(server_cfg.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ahl" ]; then
- gamedirname="ActionHalfLife"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ahl2" ]; then
- gamedirname="ActionSource"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ark" ]; then
- gamedirname="ARKSurvivalEvolved"
- fn_check_cfgdir
- array_configs+=(GameUserSettings.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "arma3" ]; then
- gamedirname="Arma3"
- fn_check_cfgdir
- array_configs+=(server.cfg network.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "armar" ]; then
- gamedirname="ArmaReforger"
- fn_check_cfgdir
- array_configs+=(server.json)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ats" ]; then
- gamedirname="AmericanTruckSimulator"
- fn_check_cfgdir
- array_configs+=(server_config.sii)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "bo" ]; then
- gamedirname="BallisticOverkill"
- array_configs+=(config.txt)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "bd" ]; then
- gamedirname="BaseDefense"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "bt" ]; then
- gamedirname="Barotrauma"
- fn_check_cfgdir
- array_configs+=(serversettings.xml)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "btl" ]; then
- gamedirname="BattalionLegacy"
- fn_check_cfgdir
- array_configs+=(DefaultGame.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "bf1942" ]; then
- gamedirname="Battlefield1942"
- array_configs+=(serversettings.con)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "bfv" ]; then
- gamedirname="BattlefieldVietnam"
- array_configs+=(serversettings.con)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "bs" ]; then
- gamedirname="BladeSymphony"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "bb" ]; then
- gamedirname="BrainBread"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "bb2" ]; then
- gamedirname="BrainBread2"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "bmdm" ]; then
- gamedirname="BlackMesa"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "cd" ]; then
- gamedirname="CraftingDead"
- array_configs+=(properties.json)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ck" ]; then
- gamedirname="CoreKeeper"
- array_configs+=(ServerConfig.json)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "cod" ]; then
- gamedirname="CallOfDuty"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "coduo" ]; then
- gamedirname="CallOfDutyUnitedOffensive"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "cod2" ]; then
- gamedirname="CallOfDuty2"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "cod4" ]; then
- gamedirname="CallOfDuty4"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "codwaw" ]; then
- gamedirname="CallOfDutyWorldAtWar"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "cc" ]; then
- gamedirname="CodenameCURE"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- 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)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "cscz" ]; then
- gamedirname="CounterStrikeConditionZero"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "csgo" ]; then
- gamedirname="CounterStrikeGlobalOffensive"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "css" ]; then
- gamedirname="CounterStrikeSource"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "dayz" ]; then
- gamedirname="DayZ"
- fn_check_cfgdir
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "dod" ]; then
- gamedirname="DayOfDefeat"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "dodr" ]; then
- gamedirname="DayOfDragons"
- array_configs+=(Game.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_list_config_locations
-elif [ "${shortname}" == "dods" ]; then
- gamedirname="DayOfDefeatSource"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "doi" ]; then
- gamedirname="DayOfInfamy"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "dmc" ]; then
- gamedirname="DeathmatchClassic"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "dst" ]; then
- gamedirname="DontStarveTogether"
- fn_check_cfgdir
- array_configs+=(cluster.ini server.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_dst_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "dab" ]; then
- gamedirname="DoubleActionBoogaloo"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "dys" ]; then
- gamedirname="Dystopia"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "eco" ]; then
- gamedirname="Eco"
- array_configs+=(Network.eco)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "etl" ]; then
- gamedirname="ETLegacy"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ets2" ]; then
- gamedirname="EuroTruckSimulator2"
- fn_check_cfgdir
- array_configs+=(server_config.sii)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "fctr" ]; then
- gamedirname="Factorio"
- array_configs+=(server-settings.json)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "fof" ]; then
- gamedirname="FistfulofFrags"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "gmod" ]; then
- gamedirname="GarrysMod"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "hldm" ]; then
- gamedirname="HalfLifeDeathmatch"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "hldms" ]; then
- gamedirname="HalfLifeDeathmatchSource"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "opfor" ]; then
- gamedirname="OpposingForce"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "hl2dm" ]; then
- gamedirname="HalfLife2Deathmatch"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ins" ]; then
- gamedirname="Insurgency"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ios" ]; then
- gamedirname="IOSoccer"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "jc2" ]; then
- gamedirname="JustCause2"
- array_configs+=(config.lua)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "jc3" ]; then
- gamedirname="JustCause3"
- array_configs+=(config.json)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "kf" ]; then
- gamedirname="KillingFloor"
- array_configs+=(Default.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "l4d" ]; then
- gamedirname="Left4Dead"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "l4d2" ]; then
- gamedirname="Left4Dead2"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ]; then
- gamedirname="Minecraft"
- array_configs+=(server.properties)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "mcb" ]; then
- gamedirname="MinecraftBedrock"
- array_configs+=(server.properties)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "mohaa" ]; then
- gamedirname="MedalOfHonorAlliedAssault"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "mh" ]; then
- gamedirname="Mordhau"
- fn_check_cfgdir
- array_configs+=(Game.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ns" ]; then
- gamedirname="NaturalSelection"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "nmrih" ]; then
- gamedirname="NoMoreRoominHell"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "nd" ]; then
- gamedirname="NuclearDawn"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "mta" ]; then
- gamedirname="MultiTheftAuto"
- fn_check_cfgdir
- array_configs+=(acl.xml mtaserver.conf vehiclecolors.conf)
- fn_fetch_default_config
- fn_default_config_remote
- fn_list_config_locations
-elif [ "${shotname}" == "mom" ]; then
- gamedirname="MemoriesofMars"
- array_configs+=(DedicatedServerConfig.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "pvr" ]; then
- gamedirname="PavlovVR"
- fn_check_cfgdir
- array_configs+=(Game.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
-elif [ "${shortname}" == "pvkii" ]; then
- gamedirname="PiratesVikingandKnightsII"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "pz" ]; then
- gamedirname="ProjectZomboid"
- fn_check_cfgdir
- array_configs+=(server.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "nec" ]; then
- gamedirname="Necesse"
- fn_check_cfgdir
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "pc" ]; then
- gamedirname="ProjectCars"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "pc2" ]; then
- gamedirname="ProjectCars2"
- fn_default_config_local
- fn_list_config_locations
-elif [ "${shortname}" == "q2" ]; then
- gamedirname="Quake2"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "q3" ]; then
- gamedirname="Quake3Arena"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ql" ]; then
- gamedirname="QuakeLive"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "jk2" ]; then
- gamedirname="JediKnightIIJediOutcast"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
-elif [ "${shortname}" == "qw" ]; then
- gamedirname="QuakeWorld"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ricochet" ]; then
- gamedirname="Ricochet"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "rtcw" ]; then
- gamedirname="ReturnToCastleWolfenstein"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "rust" ]; then
- gamedirname="Rust"
- fn_check_cfgdir
- array_configs+=(server.cfg)
- 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}" == "sf" ]; then
- gamedirname="Satisfactory"
- array_configs+=(GameUserSettings.ini)
- 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)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "sof2" ]; then
- gamedirname="SoldierOfFortune2Gold"
- array_configs+=(server.cfg mapcycle.txt)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "sfc" ]; then
- gamedirname="SourceFortsClassic"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "squad" ]; then
- gamedirname="Squad"
- array_configs+=(Admins.cfg Bans.cfg License.cfg Server.cfg Rcon.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "sb" ]; then
- gamedirname="Starbound"
- array_configs+=(starbound_server.config)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "st" ]; then
- gamedirname="Stationeers"
- array_configs+=(default.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "stn" ]; then
- gamedirname="SurvivetheNights"
- array_configs+=(ServerConfig.txt ServerUsers.txt TpPresets.json UserPermissions.json)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "sven" ]; then
- gamedirname="SvenCoop"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "tf2" ]; then
- gamedirname="TeamFortress2"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "tfc" ]; then
- gamedirname="TeamFortressClassic"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ti" ]; then
- gamedirname="TheIsle"
- array_configs+=(Game.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ts" ]; then
- gamedirname="TheSpecialists"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ts3" ]; then
- gamedirname="TeamSpeak3"
- array_configs+=(ts3server.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_list_config_locations
-elif [ "${shortname}" == "tw" ]; then
- gamedirname="Teeworlds"
- array_configs+=(server.cfg ctf.cfg dm.cfg duel.cfg tdm.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "terraria" ]; then
- gamedirname="Terraria"
- array_configs+=(serverconfig.txt)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "tu" ]; then
- gamedirname="TowerUnite"
- fn_check_cfgdir
- array_configs+=(TowerServer.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ut" ]; then
- gamedirname="UnrealTournament"
- array_configs+=(Game.ini Engine.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ut2k4" ]; then
- gamedirname="UnrealTournament2004"
- array_configs+=(UT2004.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "ut99" ]; then
- gamedirname="UnrealTournament99"
- array_configs+=(Default.ini)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "unt" ]; then
- gamedirname="Unturned"
- array_configs+=(Config.json)
- fn_fetch_default_config
- 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)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "wet" ]; then
- gamedirname="WolfensteinEnemyTerritory"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "wf" ]; then
- gamedirname="Warfork"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- 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)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "zmr" ]; then
- gamedirname="ZombieMasterReborn"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-elif [ "${shortname}" == "zps" ]; then
- gamedirname="ZombiePanicSource"
- array_configs+=(server.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
-fi
diff --git a/lgsm/functions/install_dst_token.sh b/lgsm/functions/install_dst_token.sh
deleted file mode 100644
index 50bc7ed97..000000000
--- a/lgsm/functions/install_dst_token.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "${lightyellow}Enter ${gamename} Cluster Token${default}"
-echo -e "================================="
-fn_sleep_time
-echo -e "A cluster token is required to run this server!"
-echo -e "Follow the instructions in this link to obtain this key:"
-echo -e "https://linuxgsm.com/dst-auth-token"
-echo -e ""
-if [ -z "${autoinstall}" ]; then
- overwritetoken="true"
- if [ -s "${clustercfgdir}/cluster_token.txt" ]; then
- echo -e "The cluster token is already set. Do you want to overwrite it?"
- fn_script_log_info "Don't Starve Together cluster token is already set"
- if fn_prompt_yn "Continue?" N; then
- overwritetoken="true"
- else
- overwritetoken="false"
- fi
- fi
- if [ "${overwritetoken}" == "true" ]; then
- echo -e "Once you have the cluster token, enter it below"
- echo -n "Cluster Token: "
- read -r token
- mkdir -pv "${clustercfgdir}"
- echo -e "${token}" > "${clustercfgdir}/cluster_token.txt"
- if [ -f "${clustercfgdir}/cluster_token.txt" ]; then
- echo -e "Don't Starve Together cluster token created"
- fn_script_log_info "Don't Starve Together cluster token created"
- fi
- unset overwritetoken
- fi
-else
- echo -e "You can add your cluster token using the following command"
- echo -e "./${selfname} cluster-token"
-fi
-echo -e ""
diff --git a/lgsm/functions/install_eula.sh b/lgsm/functions/install_eula.sh
deleted file mode 100644
index 3e51fac71..000000000
--- a/lgsm/functions/install_eula.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_eula.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Gets user to accept the EULA.
-
-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" ]; 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"
-fi
-
-echo -e ""
-echo -e "${lightyellow}Accept ${gamename} EULA${default}"
-echo -e "================================="
-fn_sleep_time
-echo -e "You are required to accept the EULA:"
-echo -e "${eulaurl}"
-echo -e ""
-if [ -z "${autoinstall}" ]; then
- echo -e "By continuing you are indicating your agreement to the EULA."
- echo -e ""
- if ! fn_prompt_yn "Continue?" Y; then
- exitcode=0
- core_exit.sh
- fi
-elif [ "${commandname}" == "START" ]; then
- fn_print_info "By continuing you are indicating your agreement to the EULA."
- sleep 5
-else
- echo -e "By using auto-install you are indicating your agreement to the EULA."
- sleep 5
-fi
-
-if [ "${shortname}" == "ts3" ]; then
- touch "${executabledir}/.ts3server_license_accepted"
-elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ]; then
- touch "${serverfiles}/eula.txt"
- echo -e "eula=true" > "${serverfiles}/eula.txt"
-elif [ "${shortname}" == "ut" ]; then
- :
-fi
diff --git a/lgsm/functions/install_factorio_save.sh b/lgsm/functions/install_factorio_save.sh
deleted file mode 100644
index f5fdb8a04..000000000
--- a/lgsm/functions/install_factorio_save.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "${lightyellow}Creating initial Factorio savefile${default}"
-echo -e "================================="
-fn_sleep_time
-check_glibc.sh
-"${executabledir}"/factorio --create "${serverfiles}/save1"
diff --git a/lgsm/functions/install_gslt.sh b/lgsm/functions/install_gslt.sh
deleted file mode 100644
index 1ae1ef3b0..000000000
--- a/lgsm/functions/install_gslt.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_gslt.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Configures GSLT.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "${lightyellow}Game Server Login Token${default}"
-echo -e "================================="
-fn_sleep_time
-if [ "${shortname}" == "csgo" ] || [ "${shortname}" == "css" ] || [ "${shortname}" == "nmrih" ] || [ "${shortname}" == "bs" ]; then
- echo -e "GSLT is required to run a public ${gamename} server"
- fn_script_log_info "GSLT is required to run a public ${gamename} server"
-else
- echo -e "GSLT is an optional feature for ${gamename} server"
- fn_script_log_info "GSLT is an optional feature for ${gamename} server"
-fi
-
-echo -e "Get more info and a token here:"
-echo -e "https://docs.linuxgsm.com/steamcmd/gslt"
-fn_script_log_info "Get more info and a token here:"
-fn_script_log_info "https://docs.linuxgsm.com/steamcmd/gslt"
-echo -e ""
-if [ -z "${autoinstall}" ]; then
- if [ "${shortname}" != "tu" ]; then
- echo -e "Enter token below (Can be blank)."
- echo -n "GSLT TOKEN: "
- read -r token
- if ! grep -q "^gslt=" "${configdirserver}/${selfname}.cfg" > /dev/null 2>&1; then
- echo -e "\ngslt=\"${token}\"" >> "${configdirserver}/${selfname}.cfg"
- else
- sed -i -e "s/gslt=\"[^\"]*\"/gslt=\"${token}\"/g" "${configdirserver}/${selfname}.cfg"
- fi
- fi
-fi
-fn_sleep_time
-if [ "${shortname}" == "tu" ]; then
- echo -e "The GSLT can be changed by editing ${servercfgdir}/${servercfg}."
- fn_script_log_info "The GSLT can be changed by editing ${servercfgdir}/${servercfg}."
-else
- echo -e "The GSLT can be changed by editing ${configdirserver}/${selfname}.cfg."
- fn_script_log_info "The GSLT can be changed by editing ${configdirserver}/${selfname}.cfg."
-fi
-echo -e ""
diff --git a/lgsm/functions/install_header.sh b/lgsm/functions/install_header.sh
deleted file mode 100644
index 4cf067f8f..000000000
--- a/lgsm/functions/install_header.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_header.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Prints installation header.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-clear
-fn_print_ascii_logo
-fn_sleep_time
-echo -e "================================="
-echo -e "${lightyellow}Linux${default}GSM_"
-echo -e "by Daniel Gibbs"
-echo -e "${lightblue}Version:${default} ${version}"
-echo -e "${lightblue}Game:${default} ${gamename}"
-echo -e "${lightblue}Website:${default} https://linuxgsm.com"
-echo -e "${lightblue}Contributors:${default} https://linuxgsm.com/contrib"
-echo -e "${lightblue}Sponsor:${default} https://linuxgsm.com/sponsor"
-echo -e "================================="
-fn_sleep_time
diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh
deleted file mode 100644
index 80a55fb94..000000000
--- a/lgsm/functions/install_logs.sh
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_logs.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Creates log directories.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if [ "${checklogs}" != "1" ]; then
- echo -e ""
- echo -e "${lightyellow}Creating log directories${default}"
- echo -e "================================="
-fi
-fn_sleep_time
-# Create LinuxGSM logs.
-echo -en "installing log dir: ${logdir}..."
-mkdir -p "${logdir}"
-if [ $? != 0 ]; then
- fn_print_fail_eol_nl
- core_exit.sh
-else
- fn_print_ok_eol_nl
-fi
-
-echo -en "installing LinuxGSM log dir: ${lgsmlogdir}..."
-mkdir -p "${lgsmlogdir}"
-if [ $? != 0 ]; then
- fn_print_fail_eol_nl
- core_exit.sh
-else
- fn_print_ok_eol_nl
-fi
-echo -en "creating LinuxGSM log: ${lgsmlog}..."
-touch "${lgsmlog}"
-if [ $? != 0 ]; then
- fn_print_fail_eol_nl
- core_exit.sh
-else
- fn_print_ok_eol_nl
-fi
-# Create Console logs.
-if [ "${consolelogdir}" ]; then
- echo -en "installing console log dir: ${consolelogdir}..."
- mkdir -p "${consolelogdir}"
- if [ $? != 0 ]; then
- fn_print_fail_eol_nl
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fi
- echo -en "creating console log: ${consolelog}..."
- if ! touch "${consolelog}"; then
- fn_print_fail_eol_nl
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fi
-fi
-
-# Create Game logs.
-if [ "${gamelogdir}" ] && [ ! -d "${gamelogdir}" ]; then
- echo -en "installing game log dir: ${gamelogdir}..."
- if ! mkdir -p "${gamelogdir}"; then
- fn_print_fail_eol_nl
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fi
-fi
-
-# Symlink to gamelogdir
-# unless gamelogdir is within logdir.
-# e.g serverfiles/log is not within log/: symlink created
-# log/server is in log/: symlink not created
-if [ "${gamelogdir}" ]; then
- if [ "${gamelogdir:0:${#logdir}}" != "${logdir}" ]; then
- echo -en "creating symlink to game log dir: ${logdir}/server -> ${gamelogdir}..."
- if ! ln -nfs "${gamelogdir}" "${logdir}/server"; then
- fn_print_fail_eol_nl
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fi
- fi
-fi
-
-# If server uses SteamCMD create a symbolic link to the Steam logs.
-if [ -d "${rootdir}/Steam/logs" ]; then
- if [ ! -L "${logdir}/steamcmd" ]; then
- echo -en "creating symlink to steam log dir: ${logdir}/steamcmd -> ${rootdir}/Steam/logs..."
- if ! ln -nfs "${rootdir}/Steam/logs" "${logdir}/steamcmd"; then
- fn_print_fail_eol_nl
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fi
- fi
-fi
-fn_script_log_info "Logs installed"
diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh
deleted file mode 100644
index 011ad9b71..000000000
--- a/lgsm/functions/install_mta_resources.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_mta_resources.sh module
-# Author: Daniel Gibbs
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_print_information_nl "${gamename} will not function without resources!"
-echo -e " * install default resources using ./${selfname} install-default-resources"
-echo -e " * download resources from https://community.multitheftauto.com"
diff --git a/lgsm/functions/install_retry.sh b/lgsm/functions/install_retry.sh
deleted file mode 100644
index a36b4fb38..000000000
--- a/lgsm/functions/install_retry.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_retry.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Asks for installation retry after failure.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-if fn_prompt_yn "Retry install?" Y; then
- command_install.sh
- core_exit.sh
-else
- exitcode=0
- core_exit.sh
-fi
diff --git a/lgsm/functions/install_server_dir.sh b/lgsm/functions/install_server_dir.sh
deleted file mode 100644
index 658f4360c..000000000
--- a/lgsm/functions/install_server_dir.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_server_dir.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Creates the server directory.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "${lightyellow}Server Directory${default}"
-echo -e "================================="
-fn_sleep_time
-if [ -d "${serverfiles}" ]; then
- fn_print_warning_nl "A server is already installed here."
-fi
-pwd
-if [ -z "${autoinstall}" ]; then
- if ! fn_prompt_yn "Continue?" Y; then
- exitcode=0
- core_exit.sh
- fi
-fi
-if [ ! -d "${serverfiles}" ]; then
- mkdir -v "${serverfiles}"
-fi
diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh
deleted file mode 100644
index e550e1455..000000000
--- a/lgsm/functions/install_server_files.sh
+++ /dev/null
@@ -1,255 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_server_files.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Installs server files.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_install_server_files() {
- if [ "${shortname}" == "ahl" ]; then
- remote_fileurl="http://linuxgsm.download/ActionHalfLife/action_halflife-1.0.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="action_halflife-1.0.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="61d7b79fd714888b6d65944fdaafa94a"
- elif [ "${shortname}" == "bf1942" ]; then
- remote_fileurl="http://linuxgsm.download/BattleField1942/bf1942_lnxded-1.61-hacked-to-1.612.full.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="bf1942_lnxded-1.61-hacked-to-1.612.full.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="4223bf4ed85f5162c24b2cba51249b9e"
- elif [ "${shortname}" == "bfv" ]; then
- remote_fileurl="http://linuxgsm.download/BattlefieldVietnam/bfv_linded-v1.21-20041207_patch.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="bfv_linded-v1.21-20041207_patch.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="e3b4962cdd9d41e23c6fed65101bccde"
- elif [ "${shortname}" == "bb" ]; then
- remote_fileurl="http://linuxgsm.download/BrainBread/brainbread-v1.2-linuxserver.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="brainbread-v1.2-linuxserver.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="55f227183b736397806d5b6db6143f15"
- elif [ "${shortname}" == "cod" ]; then
- remote_fileurl="http://linuxgsm.download/CallOfDuty/cod-lnxded-1.5b-full.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="cod-lnxded-1.5-large.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="ee0ad1ccbfa1fd27fde01a4a431a5c2f"
- elif [ "${shortname}" == "coduo" ]; then
- remote_fileurl="http://linuxgsm.download/CallOfDutyUnitedOffensive/coduo-lnxded-1.51b-full.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="coduo-lnxded-1.51b-full.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="35cabccd67adcda44aaebc59405915b9"
- elif [ "${shortname}" == "cod2" ]; then
- remote_fileurl="http://linuxgsm.download/CallOfDuty2/cod2-lnxded-1.3-full.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="cod2-lnxded-1.3-full.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="b8c4c611f01627dd43348e78478a3d41"
- elif [ "${shortname}" == "cod4" ]; then
- remote_fileurl="http://linuxgsm.download/CallOfDuty4/cod4x18_lnxded.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="cod4x18_lnxded.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="d255b59b9756d7dbead67718208512ee"
- 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.78.1-i386-et-260b.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="etlegacy-v2.78.1-i386-et-260b.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="7c08b52cb09b30eadb98ea05ef780fc7"
- 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
- remote_fileurl="http://linuxgsm.download/NaturalSelection/ns_dedicated_server_v32.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="ns_dedicated_server_v32.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="23ec3cadd93d8bb1c475bad5b9cce370"
- elif [ "${shortname}" == "q2" ]; then
- remote_fileurl="http://linuxgsm.download/Quake2/quake2-3.20-glibc-i386-full-linux2.0.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="quake2-3.20-glibc-i386-full-linux2.0.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="2908164a32d4808bb720f2161f6b0c82"
- elif [ "${shortname}" == "q3" ]; then
- remote_fileurl="http://linuxgsm.download/Quake3/quake3-1.32c-x86-full-linux.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="quake3-1.32c-x86-full-linux.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="b0e26d8919fe9313fb9d8ded2360f3db"
- elif [ "${shortname}" == "qw" ]; then
- remote_fileurl="http://linuxgsm.download/QuakeWorld/nquake.server.linux.190506.full.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="nquake.server.linux.190506.full.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="82055b7d973206c13a606db8ba288d03"
- elif [ "${shortname}" == "rtcw" ]; then
- remote_fileurl="http://linuxgsm.download/ReturnToCastleWolfenstein/iortcw-1.51c-x86_64-server-linux-20190507.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="iortcw-1.51c-x86_64-server-linux-20190507.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="df6ff664d37dd0d22787848bdb3cac5f"
- elif [ "${shortname}" == "sfc" ]; then
- remote_fileurl="http://linuxgsm.download/SourceFortsClassic/SFClassic-1.0-RC7-fix.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="SFClassic-1.0-RC7-fix.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="70077137185700e28fe6bbb6021d12bc"
- elif [ "${shortname}" == "sof2" ]; then
- remote_fileurl="http://linuxgsm.download/SoldierOfFortune2/sof2gold-1.03.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="sof2gold-1.03.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="201e23bab04207d00ce813d001c483d9"
- elif [ "${shortname}" == "ts" ]; then
- remote_fileurl="http://linuxgsm.download/TheSpecialists/ts-3-linux-final.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="ts-3-linux-final.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="3c66ecff6e3644f7ac88015732a0fb93"
- 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-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
- remote_fileurl="http://linuxgsm.download/UnrealTournament3/UT3-linux-server-2.1.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="UT3-linux-server-2.1.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="8876cca61e3f83ea08db25208bde6ac6"
- elif [ "${shortname}" == "vs" ]; then
- remote_fileurl="http://linuxgsm.download/VampireSlayer/vs_l-6.0_full.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="vs_l-6.0_full.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="b322f79e0abd31847493c52acf802667"
- elif [ "${shortname}" == "wet" ]; then
- remote_fileurl="http://linuxgsm.download/WolfensteinEnemyTerritory/enemy-territory.260b.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="enemy-territory.260b.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="581a333cc7eacda2f56d5a00fe11eafa"
- elif [ "${shortname}" == "samp" ]; then
- remote_fileurl="https://files.sa-mp.com/samp037svr_R2-1.tar.gz"
- local_filedir="${tmpdir}"
- local_filename="samp037svr_R2-1.tar.gz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="93705e165550c97484678236749198a4"
- elif [ "${shortname}" == "zmr" ]; then
- remote_fileurl="http://linuxgsm.download/ZombieMasterReborn/zombie_master_reborn_b6_1.tar.xz"
- local_filedir="${tmpdir}"
- local_filename="zombie_master_reborn_b6_1.tar.xz"
- chmodx="nochmodx" run="norun"
- force="noforce"
- md5="0188ae86dbc9376f11ae3032dba2d665"
- else
- fn_print_fail_nl "Installing ${gamename} Server failed, missing default configuration"
- fn_script_log_fatal "Installing ${gamename} Server failed, missing default configuration"
- fi
- fn_fetch_file "${remote_fileurl}" "" "" "" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
- fn_dl_extract "${local_filedir}" "${local_filename}" "${serverfiles}"
-}
-
-echo -e ""
-echo -e "${lightyellow}Installing ${gamename} Server${default}"
-echo -e "================================="
-fn_sleep_time
-
-if [ "${appid}" ]; then
- remotelocation="SteamCMD"
- fn_dl_steamcmd
-fi
-
-if [ "${shortname}" == "ts3" ]; then
- update_ts3.sh
-elif [ "${shortname}" == "mc" ]; then
- install_eula.sh
- update_minecraft.sh
-elif [ "${shortname}" == "mcb" ]; then
- update_minecraft_bedrock.sh
-elif [ "${shortname}" == "pmc" ]; then
- install_eula.sh
- update_papermc.sh
-elif [ "${shortname}" == "wmc" ] || [ "${shortname}" == "vpmc" ]; then
- update_papermc.sh
-elif [ "${shortname}" == "mta" ]; then
- update_mta.sh
-elif [ "${shortname}" == "fctr" ]; then
- update_factorio.sh
- install_factorio_save.sh
-elif [ "${shortname}" == "jk2" ]; then
- update_jediknight2.sh
-elif [ "${shortname}" == "vints" ]; then
- update_vintagestory.sh
-elif [ "${shortname}" == "ut99" ]; then
- fn_install_server_files
- update_ut99.sh
-elif [ -z "${appid}" ] || [ "${shortname}" == "ahl" ] || [ "${shortname}" == "bb" ] || [ "${shortname}" == "ns" ] || [ "${shortname}" == "sfc" ] || [ "${shortname}" == "ts" ] || [ "${shortname}" == "vs" ] || [ "${shortname}" == "zmr" ]; then
- if [ "${shortname}" == "ut" ]; then
- install_eula.sh
- fi
- fn_install_server_files
-fi
-
-if [ -z "${autoinstall}" ]; then
- echo -e ""
- echo -e "================================="
- if ! fn_prompt_yn "Was the install successful?" Y; then
- install_retry.sh
- fi
-fi
diff --git a/lgsm/functions/install_squad_license.sh b/lgsm/functions/install_squad_license.sh
deleted file mode 100644
index 181646e85..000000000
--- a/lgsm/functions/install_squad_license.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "${lightyellow}Squad Server License${default}"
-echo -e "================================="
-fn_sleep_time
-echo -e "Server license is an optional feature for ${gamename} server"
-fn_script_log_info "Server license is an optional feature for ${gamename} server"
-
-echo -e "Get more info and a server license here:"
-echo -e "http://forums.joinsquad.com/topic/16519-server-licensing-general-info/"
-fn_script_log_info "Get more info and a server license here:"
-fn_script_log_info "http://forums.joinsquad.com/topic/16519-server-licensing-general-info/"
-echo -e ""
-fn_sleep_time
-echo -e "The Squad server license can be changed by editing ${servercfgdir}/License.cfg."
-fn_script_log_info "The Squad server license can be changed by editing ${selfname}."
-echo -e ""
diff --git a/lgsm/functions/install_stats.sh b/lgsm/functions/install_stats.sh
deleted file mode 100644
index d3b45b40b..000000000
--- a/lgsm/functions/install_stats.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_stats.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Enabled LinuxGSM Stats.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "${lightyellow}LinuxGSM Stats${default}"
-echo -e "================================="
-fn_sleep_time
-echo -e "Assist LinuxGSM development by sending anonymous stats to developers."
-echo -e "More info: https://docs.linuxgsm.com/configuration/linuxgsm-stats"
-echo -e "The following info will be sent:"
-echo -e "* game server"
-echo -e "* distro"
-echo -e "* game server resource usage"
-echo -e "* server hardware info"
-if [ -z "${autoinstall}" ]; then
- if fn_prompt_yn "Allow anonymous usage statistics?" Y; then
- echo "stats=\"on\"" >> "${configdirserver}/common.cfg"
- fn_print_information_nl "Stats setting is now enabled in common.cfg."
- fi
-else
- fn_print_information_nl "auto-install leaves stats off by default. Stats can be enabled in common.cfg"
-fi
diff --git a/lgsm/functions/install_steamcmd.sh b/lgsm/functions/install_steamcmd.sh
deleted file mode 100644
index b1e64a42c..000000000
--- a/lgsm/functions/install_steamcmd.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_steamcmd.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Downloads SteamCMD on install.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "${lightyellow}Installing SteamCMD${default}"
-echo -e "================================="
-fn_sleep_time
-check_steamcmd.sh
diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh
deleted file mode 100644
index ed879cd28..000000000
--- a/lgsm/functions/install_ts3db.sh
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_ts3db.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Installs the database server MariaDB for TeamSpeak 3.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_install_ts3db_mariadb() {
- if [ ! -f "${serverfiles}/libts3db_mariadb.so" ]; then
- echo -e "copying libmariadb.so.2...\c"
- cp "${serverfiles}/redist/libmariadb.so.2" "${serverfiles}"
- local exitcode=$?
- if [ "${exitcode}" != "0" ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "copying libmariadb.so.2"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "copying libmariadb.so.2"
- fi
- fi
-
- echo -e ""
- echo -e "${lightyellow}Configure ${gamename} Server for MariaDB${default}"
- echo -e "================================="
- fn_sleep_time
- read -rp "Enter MariaDB hostname: " mariahostname
- read -rp "Enter MariaDB port: " mariaport
- read -rp "Enter MariaDB username: " mariausername
- read -rp "Enter MariaDB password: " mariapassword
- read -rp "Enter MariaDB database name: " mariadbname
- read -rp "Enter MariaDB socket path: " mariadbsocket
-
- {
- echo -e "[config]"
- echo -e "host='${mariahostname}'"
- echo -e "port='${mariaport}'"
- echo -e "username='${mariausername}'"
- echo -e "password='${mariapassword}'"
- echo -e "database='${mariadbname}'"
- echo -e "socket='${mariadbsocket}'"
- } >> "${servercfgdir}/ts3db_mariadb.ini"
- sed -i "s/dbplugin=ts3db_sqlite3/dbplugin=ts3db_mariadb/g" "${servercfgfullpath}"
- sed -i "s/dbpluginparameter=/dbpluginparameter=ts3db_mariadb.ini/g" "${servercfgfullpath}"
- sed -i "s/dbsqlcreatepath=create_sqlite\//dbsqlcreatepath=create_mariadb\//g" "${servercfgfullpath}"
- echo -e "updating ts3db_mariadb.ini."
- fn_sleep_time
-}
-
-echo -e ""
-echo -e "${lightyellow}Select Database${default}"
-echo -e "================================="
-fn_sleep_time
-if [ -z "${autoinstall}" ]; then
- if fn_prompt_yn "Do you want to use MariaDB instead of sqlite? (MariaDB must be pre-configured)" N; then
- fn_install_ts3db_mariadb
- fi
-else
- fn_print_information_nl "./${selfname} auto-install is uses sqlite. For MariaDB use ./${selfname} install"
-fi
-
-install_eula.sh
-
-echo -e ""
-echo -e "${lightyellow}Getting Privilege Key${default}"
-echo -e "================================="
-fn_sleep_time
-fn_print_information_nl "Save these details for later."
-fn_print_information_nl "Key also saved in:"
-echo -e "${serverfiles}/privilege_key.txt"
-cd "${executabledir}" || exit
-./ts3server_startscript.sh start inifile=ts3-server.ini 2>&1 | tee "${serverfiles}/privilege_key.txt"
-sleep 5
-./ts3server_startscript.sh stop
diff --git a/lgsm/functions/install_ut2k4_key.sh b/lgsm/functions/install_ut2k4_key.sh
deleted file mode 100644
index 124052d05..000000000
--- a/lgsm/functions/install_ut2k4_key.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "${lightyellow}Enter ${gamename} CD Key${default}"
-echo -e "================================="
-fn_sleep_time
-echo -e "To get your server listed on the Master Server list"
-echo -e "you must get a free CD key. Get a key here:"
-echo -e "https://www.epicgames.com/unrealtournament/forums/cdkey.php?2004"
-echo -e ""
-if [ -z "${autoinstall}" ]; then
- echo -e "Once you have the key enter it below"
- echo -n "KEY: "
- read -r CODE
- echo -e ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey"
- if [ -f "${systemdir}/cdkey" ]; then
- fn_script_log_info "UT2K4 Server CD Key created"
- fi
-else
- echo -e "You can add your key using the following command"
- echo -e "./${selfname} server-cd-key"
-fi
-echo -e ""
diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh
deleted file mode 100644
index 8e4ade771..000000000
--- a/lgsm/functions/mods_core.sh
+++ /dev/null
@@ -1,755 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_mods_install.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Core functions for mods list/install/update/remove
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Files and Directories.
-modsdir="${lgsmdir}/mods"
-modstmpdir="${modsdir}/tmp"
-extractdest="${modstmpdir}/extract"
-modsinstalledlist="installed-mods.txt"
-modsinstalledlistfullpath="${modsdir}/${modsinstalledlist}"
-
-## Installation.
-
-# Download management.
-fn_mod_install_files() {
- fn_fetch_file "${modurl}" "" "" "" "${modstmpdir}" "${modfilename}"
- # Check if variable is valid checking if file has been downloaded and exists.
- if [ ! -f "${modstmpdir}/${modfilename}" ]; then
- fn_print_failure "An issue occurred downloading ${modprettyname}"
- fn_script_log_fatal "An issue occurred downloading ${modprettyname}"
- core_exit.sh
- fi
- if [ ! -d "${extractdest}" ]; then
- mkdir -p "${extractdest}"
- fi
- fn_dl_extract "${modstmpdir}" "${modfilename}" "${extractdest}"
-}
-
-# Convert mod files to lowercase if needed.
-fn_mod_lowercase() {
- # Checking lowercase settings from mods array definition
- if [ "${modlowercase}" == "LowercaseOn" ]; then
- echo -en "converting ${modprettyname} files to lowercase..."
- fn_sleep_time
- fn_script_log_info "Converting ${modprettyname} files to lowercase"
- # Total files and directories for the mod, to output to the user
- fileswc=$(find "${extractdest}" | wc -l)
- # Total uppercase files and directories for the mod, to output to the user
- filesupperwc=$(find "${extractdest}" -name '*[[:upper:]]*' | wc -l)
- fn_script_log_info "Found ${filesupperwc} uppercase files out of ${fileswc}, converting"
- echo -en "Found ${filesupperwc} uppercase files out of ${fileswc}, converting..."
- # Convert files and directories starting from the deepest to prevent issues (-depth argument)
- while read -r src; do
- # We have to convert only the last file from the path, otherwise we will fail to convert anything if a parent dir has any uppercase
- # therefore, we have to separate the end of the filename to only lowercase it rather than the whole line
- # Gather parent dir, filename lowercase filename, and set lowercase destination name
- latestparentdir=$(dirname "${src}")
- latestfilelc=$(basename "${src}" | tr '[:upper:]' '[:lower:]')
- dst="${latestparentdir}/${latestfilelc}"
- # Only convert if destination does not already exist for some reason
- if [ ! -e "${dst}" ]; then
- # Finally we can rename the file
- mv "${src}" "${dst}"
- # Exit if it fails for any reason
- local exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- core_exit.sh
- fi
- fi
- done < <(find "${extractdest}" -depth -name '*[[:upper:]]*')
- fn_print_ok_eol_nl
- fi
-}
-
-# Create ${modcommand}-files.txt containing the full extracted file/directory list.
-fn_mod_create_filelist() {
- echo -en "building ${modcommand}-files.txt..."
- fn_sleep_time
- # ${modsdir}/${modcommand}-files.txt.
- find "${extractdest}" -mindepth 1 -printf '%P\n' > "${modsdir}/${modcommand}-files.txt"
- local exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Building ${modsdir}/${modcommand}-files.txt"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Building ${modsdir}/${modcommand}-files.txt"
- fi
- # Adding removed files if needed.
- if [ -f "${modsdir}/.removedfiles.tmp" ]; then
- cat "${modsdir}/.removedfiles.tmp" >> "${modsdir}/${modcommand}-files.txt"
- fi
-}
-
-# Copy the mod into serverfiles.
-fn_mod_copy_destination() {
- echo -en "copying ${modprettyname} to ${modinstalldir}..."
- fn_sleep_time
- cp -Rf "${extractdest}/." "${modinstalldir}/"
- local exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Copying ${modprettyname} to ${modinstalldir}"
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Copying ${modprettyname} to ${modinstalldir}"
- fi
-}
-
-# Add the mod to the installed-mods.txt.
-fn_mod_add_list() {
- if [ -z "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then
- echo -e "${modcommand}" >> "${modsinstalledlistfullpath}"
- fn_script_log_info "${modcommand} added to ${modsinstalledlist}"
- fi
-}
-
-# Prevent sensitive directories from being erased upon uninstall by removing them from: ${modcommand}-files.txt.
-fn_mod_tidy_files_list() {
- # Check file list validity.
- fn_check_mod_files_list
- # Output to the user
- echo -en "tidy up ${modcommand}-files.txt..."
- fn_sleep_time
- fn_script_log_info "Tidy up ${modcommand}-files.txt"
- # Lines/files to remove from file list (end with ";" separator).
- removefromlist="cfg;addons;RustDedicated_Data;RustDedicated_Data\/Managed;RustDedicated_Data\/Managed\/x86;RustDedicated_Data\/Managed\/x64;"
- # Loop through files to remove from file list,
- # generate elements to remove from list.
- removefromlistamount=$(echo -e "${removefromlist}" | awk -F ';' '{ print NF }')
- # Test all subvalue of "removefromlist" using the ";" separator.
- for ((filesindex = 1; filesindex < removefromlistamount; filesindex++)); do
- # Put current file into test variable.
- removefilevar=$(echo -e "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }')
- # Delete line(s) matching exactly.
- sed -i "/^${removefilevar}$/d" "${modsdir}/${modcommand}-files.txt"
- # Exit on error.
- local exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Error while tidying line: ${removefilevar} from: ${modsdir}/${modcommand}-files.txt"
- core_exit.sh
- break
- fi
- done
- fn_print_ok_eol_nl
- # Sourcemod fix
- # Remove metamod from sourcemod fileslist.
- if [ "${modcommand}" == "sourcemod" ]; then
- # Remove addons/metamod & addons/metamod/sourcemod.vdf from ${modcommand}-files.txt.
- sed -i "/^addons\/metamod$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/metamod\/sourcemod.vdf$/d" "${modsdir}/${modcommand}-files.txt"
- fi
-
- # Remove common paths from deletion list (Add your sourcemod mod here)
- if [ "${modcommand}" == "gokz" ] || [ "${modcommand}" == "ttt" ] || [ "${modcommand}" == "steamworks" ] || [ "${modcommand}" == "get5" ]; then
- sed -i "/^addons\/sourcemod$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/configs$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/extensions$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/logs$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/plugins$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/plugins\/disabled$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting\/include$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/translations$/d" "${modsdir}/${modcommand}-files.txt"
- # Don't delete directories of translations like 'fr', 'sv', 'de', etc
- sed -i "/^addons\/sourcemod\/translations\/[A-Za-z0-9_]*$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^cfg\/sourcemod$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^maps$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^materialss$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^materials\/models$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^materials\/models\/weapons$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^materials\/darkness$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^materials\/decals$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^materials\/overlays$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^models$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^models\/weapons$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^sound$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^sound\/weapons$/d" "${modsdir}/${modcommand}-files.txt"
- fi
-
- # Remove paths of specific mods from deletion list
- if [ "${modcommand}" == "gokz" ]; then
- sed -i "/^addons\/sourcemod\/scripting\/include\/smjansson.inc$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting\/include\/GlobalAPI-Core.inc$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting\/include\/sourcebanspp.inc$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting\/include\/autoexecconfig.inc$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting\/include\/colorvariables.inc$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting\/include\/movementapi.inc$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting\/include\/movement.inc$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting\/include\/dhooks.inc$/d" "${modsdir}/${modcommand}-files.txt"
- sed -i "/^addons\/sourcemod\/scripting\/include\/updater.inc$/d" "${modsdir}/${modcommand}-files.txt"
- fi
-}
-
-## Information Gathering.
-
-# Get details of a mod any (relevant and unique, such as full mod name or install command) value.
-fn_mod_get_info() {
- # Variable to know when job is done.
- modinfocommand="0"
- # Find entry in global array.
- for ((index = 0; index <= ${#mods_global_array[@]}; index++)); do
- # When entry is found.
- if [ "${mods_global_array[index]}" == "${currentmod}" ]; then
- # Go back to the previous "MOD" separator.
- for ((index = index; index <= ${#mods_global_array[@]}; index--)); do
- # When "MOD" is found.
- if [ "${mods_global_array[index]}" == "MOD" ]; then
- # Get info.
- fn_mods_define
- modinfocommand="1"
- break
- fi
- done
- fi
- # Exit the loop if job is done.
- if [ "${modinfocommand}" == "1" ]; then
- break
- fi
- done
-
- # What happens if mod is not found.
- if [ "${modinfocommand}" == "0" ]; then
- fn_script_log_error "Could not find information for ${currentmod}"
- fn_print_error_nl "Could not find information for ${currentmod}"
- core_exit.sh
- fi
-}
-
-# Define all variables for a mod at once when index is set to a separator.
-fn_mods_define() {
- if [ -z "$index" ]; then
- fn_script_log_fatal "index variable not set. Please report an issue."
- fn_print_error "index variable not set. Please report an issue."
- echo -e "* https://github.com/GameServerManagers/LinuxGSM/issues"
- core_exit.sh
- fi
- modcommand="${mods_global_array[index + 1]}"
- modprettyname="${mods_global_array[index + 2]}"
- modurl="${mods_global_array[index + 3]}"
- modfilename="${mods_global_array[index + 4]}"
- modsubdirs="${mods_global_array[index + 5]}"
- modlowercase="${mods_global_array[index + 6]}"
- modinstalldir="${mods_global_array[index + 7]}"
- modkeepfiles="${mods_global_array[index + 8]}"
- modengines="${mods_global_array[index + 9]}"
- modgames="${mods_global_array[index + 10]}"
- modexcludegames="${mods_global_array[index + 11]}"
- modsite="${mods_global_array[index + 12]}"
- moddescription="${mods_global_array[index + 13]}"
-}
-
-# Builds list of installed mods.
-# using installed-mods.txt grabing mod info from mods_list.sh.
-fn_mods_installed_list() {
- fn_mods_count_installed
- # Set/reset variables.
- installedmodsline="1"
- installedmodslist=()
- modprettynamemaxlength="0"
- modsitemaxlength="0"
- moddescriptionmaxlength="0"
- modcommandmaxlength="0"
- # Loop through every line of the installed mods list ${modsinstalledlistfullpath}.
- while [ "${installedmodsline}" -le "${installedmodscount}" ]; do
- currentmod=$(sed "${installedmodsline}q;d" "${modsinstalledlistfullpath}")
- # Get mod info to make sure mod exists.
- fn_mod_get_info
- # Add the mod to available commands.
- installedmodslist+=("${modcommand}")
- # Increment line check.
- ((installedmodsline++))
- done
- if [ "${installedmodscount}" ]; then
- fn_script_log_info "${installedmodscount} addons/mods are currently installed"
- fi
-}
-
-# Loops through mods_global_array to define available mods & provide available commands for mods installation.
-fn_mods_available() {
- # First, reset variables.
- compatiblemodslist=()
- availablemodscommands=()
- # Find compatible games.
- # Find separators through the global array.
- for ((index = "0"; index <= ${#mods_global_array[@]}; index++)); do
- # If current value is a separator; then.
- if [ "${mods_global_array[index]}" == "${modseparator}" ]; then
- # Set mod variables.
- fn_mods_define
- # Test if game is compatible.
- fn_mod_compatible_test
- # If game is compatible.
- if [ "${modcompatibility}" == "1" ]; then
- # Put it into an array to prepare user output.
- compatiblemodslist+=("${modprettyname}" "${modcommand}" "${modsite}" "${moddescription}")
- # Keep available commands in an array to make life easier.
- availablemodscommands+=("${modcommand}")
- fi
- fi
- done
-}
-
-## Mod compatibility check.
-
-# Find out if a game is compatible with a mod from a modgames (list of games supported by a mod) variable.
-fn_compatible_mod_games() {
- # Reset test value.
- modcompatiblegame="0"
- # If value is set to GAMES (ignore).
- if [ "${modgames}" != "GAMES" ]; then
- # How many games we need to test.
- gamesamount=$(echo -e "${modgames}" | awk -F ';' '{ print NF }')
- # Test all subvalue of "modgames" using the ";" separator.
- for ((gamevarindex = 1; gamevarindex < gamesamount; gamevarindex++)); do
- # Put current game name into modtest variable.
- gamemodtest=$(echo -e "${modgames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }')
- # If game name matches.
- if [ "${gamemodtest}" == "${gamename}" ]; then
- # Mod is compatible.
- modcompatiblegame="1"
- fi
- done
- fi
-}
-
-# Find out if an engine is compatible with a mod from a modengines (list of engines supported by a mod) variable.
-fn_compatible_mod_engines() {
- # Reset test value.
- modcompatibleengine="0"
- # If value is set to ENGINES (ignore).
- if [ "${modengines}" != "ENGINES" ]; then
- # How many engines we need to test.
- enginesamount=$(echo -e "${modengines}" | awk -F ';' '{ print NF }')
- # Test all subvalue of "modengines" using the ";" separator.
- for ((gamevarindex = 1; gamevarindex < ${enginesamount}; gamevarindex++)); do
- # Put current engine name into modtest variable.
- enginemodtest=$(echo -e "${modengines}" | awk -F ';' -v x=${gamevarindex} '{ print $x }')
- # If engine name matches.
- if [ "${enginemodtest}" == "${engine}" ]; then
- # Mod is compatible.
- modcompatibleengine="1"
- fi
- done
- fi
-}
-
-# Find out if a game is not compatible with a mod from a modnotgames (list of games not supported by a mod) variable.
-fn_not_compatible_mod_games() {
- # Reset test value.
- modeincompatiblegame="0"
- # If value is set to NOTGAMES (ignore).
- if [ "${modexcludegames}" != "NOTGAMES" ]; then
- # How many engines we need to test.
- excludegamesamount=$(echo -e "${modexcludegames}" | awk -F ';' '{ print NF }')
- # Test all subvalue of "modexcludegames" using the ";" separator.
- for ((gamevarindex = 1; gamevarindex < excludegamesamount; gamevarindex++)); do
- # Put current engine name into modtest variable.
- excludegamemodtest=$(echo -e "${modexcludegames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }')
- # If engine name matches.
- if [ "${excludegamemodtest}" == "${gamename}" ]; then
- # Mod is compatible.
- modeincompatiblegame="1"
- fi
- done
- fi
-}
-
-# Sums up if a mod is compatible or not with modcompatibility=0/1.
-fn_mod_compatible_test() {
- # Test game and engine compatibility.
- fn_compatible_mod_games
- fn_compatible_mod_engines
- fn_not_compatible_mod_games
- if [ "${modeincompatiblegame}" == "1" ]; then
- modcompatibility="0"
- elif [ "${modcompatibleengine}" == "1" ] || [ "${modcompatiblegame}" == "1" ]; then
- modcompatibility="1"
- else
- modcompatibility="0"
- fi
-}
-
-## Directory management.
-
-# Create mods files and directories if it doesn't exist.
-fn_create_mods_dir() {
- # Create lgsm data modsdir.
- if [ ! -d "${modsdir}" ]; then
- echo -en "creating LinuxGSM mods data directory ${modsdir}..."
- mkdir -p "${modsdir}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Creating mod download dir ${modsdir}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Creating mod download dir ${modsdir}"
- fi
- fi
- # Create mod install directory.
- if [ ! -d "${modinstalldir}" ]; then
- echo -en "creating mods install directory ${modinstalldir}..."
- mkdir -p "${modinstalldir}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Creating mod install directory ${modinstalldir}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Creating mod install directory ${modinstalldir}"
- fi
- fi
-
- # Create lgsm/data/${modsinstalledlist}.
- if [ ! -f "${modsinstalledlistfullpath}" ]; then
- touch "${modsinstalledlistfullpath}"
- fn_script_log_info "Created ${modsinstalledlistfullpath}"
- fi
-}
-
-# Create tmp download mod directory.
-fn_mods_create_tmp_dir() {
- if [ ! -d "${modstmpdir}" ]; then
- mkdir -p "${modstmpdir}"
- exitcode=$?
- echo -en "creating mod download directory ${modstmpdir}..."
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Creating mod download directory ${modstmpdir}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Creating mod download directory ${modstmpdir}"
- fi
- fi
-}
-
-# Remove the tmp mod download directory when finished.
-fn_mods_clear_tmp_dir() {
- if [ -d "${modstmpdir}" ]; then
- echo -en "clearing mod download directory ${modstmpdir}..."
- rm -rf "${modstmpdir:?}"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Clearing mod download directory ${modstmpdir}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Clearing mod download directory ${modstmpdir}"
- fi
-
- fi
- # Clear temp file list as well.
- if [ -f "${modsdir}/.removedfiles.tmp" ]; then
- rm -f "${modsdir:?}/.removedfiles.tmp"
- fi
-}
-
-# Counts how many mods were installed.
-fn_mods_count_installed() {
- if [ -f "${modsinstalledlistfullpath}" ]; then
- installedmodscount=$(wc -l < "${modsinstalledlistfullpath}")
- else
- installedmodscount=0
- fi
-}
-
-# Exits if no mods were installed.
-fn_mods_check_installed() {
- # Count installed mods.
- fn_mods_count_installed
- # If no mods are found.
- if [ ${installedmodscount} -eq 0 ]; then
- echo -e ""
- fn_print_failure_nl "No installed mods or addons were found"
- echo -e " * Install mods using LinuxGSM first with: ./${selfname} mods-install"
- fn_script_log_error "No installed mods or addons were found."
- core_exit.sh
- fi
-}
-
-# Checks that mod files list exists and isn't empty.
-fn_check_mod_files_list() {
- # File list must exist and be valid before any operation on it.
- if [ -f "${modsdir}/${modcommand}-files.txt" ]; then
- # How many lines is the file list.
- modsfilelistsize=$(wc -l < "${modsdir}/${modcommand}-files.txt")
- # If file list is empty.
- if [ "${modsfilelistsize}" -eq 0 ]; then
- fn_print_failure "${modcommand}-files.txt is empty"
- echo -e "* Unable to remove ${modprettyname}"
- fn_script_log_fatal "${modcommand}-files.txt is empty: Unable to remove ${modprettyname}."
- core_exit.sh
- fi
- else
- fn_print_failure "${modsdir}/${modcommand}-files.txt does not exist"
- fn_script_log_fatal "${modsdir}/${modcommand}-files.txt does not exist: Unable to remove ${modprettyname}."
- core_exit.sh
- fi
-}
-
-fn_mod_exist() {
- modreq=$1
- # requires one parameter, the mod
- if [ -f "${modsdir}/${modreq}-files.txt" ]; then
- # how many lines is the file list
- modsfilelistsize=$(wc -l < "${modsdir}/${modreq}-files.txt")
- # if file list is empty
- if [ "${modsfilelistsize}" -eq 0 ]; then
- fn_mod_required_fail_exist "${modreq}"
- fi
- else
- fn_mod_required_fail_exist "${modreq}"
- fi
-}
-
-fn_mod_required_fail_exist() {
- modreq=$1
- # requires one parameter, the mod
- fn_script_log_fatal "${modreq}-files.txt is empty: unable to find ${modreq} installed"
- echo -en "* Unable to find '${modreq}' which is required prior to installing this mod..."
- fn_print_fail_eol_nl
- core_exit.sh
-}
-
-fn_mod_liblist_gam_filenames() {
- # clear variables just in case
- moddll=""
- modso=""
- moddylib=""
-
- # default libraries
- case ${gamename} in
- "Counter-Strike 1.6")
- moddll="mp.dll"
- modso="cs.so"
- moddylib="cs.dylib"
- ;;
- "Day of Defeat")
- moddll="dod.dll"
- modso="dod.so"
- moddylib="dod.dylib"
- ;;
- "Team Fortress Classic")
- moddll="tfc.dll"
- modso="tfc.so"
- moddylib="tfc.dylib"
- ;;
- "Natural Selection")
- moddll="ns.dll"
- modso="ns_i386.so"
- moddylib=""
- ;;
- "The Specialists")
- moddll="mp.dll"
- modso="ts_i386.so"
- moddylib=""
- ;;
- "Half-Life: Deathmatch")
- moddll="hl.dll"
- modso="hl.so"
- moddylib="hl.dylib"
- ;;
- esac
-}
-
-# modifers for liblist.gam to add/remote metamod binaries
-fn_mod_install_liblist_gam_file() {
-
- fn_mod_liblist_gam_filenames
-
- if [ -f "${modinstalldir}/liblist.gam" ]; then
- # modify the liblist.gam file to initialize Metamod
- logentry="sed replace (dlls\\${moddll}) ${modinstalldir}/liblist.gam"
- echo -en "modifying gamedll in liblist.gam..."
- rpldll="s/dlls\\\\${moddll}/addons\/metamod\/dlls\/metamod.dll/g"
- sed -i $rpldll "${modinstalldir}/liblist.gam"
- grep -q "addons/metamod/dlls/metamod.dll" "${modinstalldir}/liblist.gam"
- exitcode=$?
- # if replacement back didn't happen, error out.
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "${logentry}"
- fn_print_fail_eol_nl
- else
- fn_script_log_pass "${logentry}"
- fn_print_ok_eol_nl
- fi
-
- # modify the liblist.gam file to initialize metamod
- logentry="sed replace (dlls\\${modso}) ${modinstalldir}/liblist.gam"
- echo -en "modifying gamedll_linux in liblist.gam..."
- rplso="s/dlls\/${modso}/addons\/metamod\/dlls\/metamod.so/g"
- sed -i $rplso "${modinstalldir}/liblist.gam"
- grep -q "addons/metamod/dlls/metamod.so" "${modinstalldir}/liblist.gam"
- exitcode=$?
- # if replacement back didn't happen, error out
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "${logentry}"
- fn_print_fail_eol_nl
- else
- fn_script_log_pass "${logentry}"
- fn_print_ok_eol_nl
- fi
-
- # mac os needs to be checked not all mods support mac os
- if [ -n "${moddylib}" ]; then
- # modify the liblist.gam file to initialize metamod
- logentry="sed replace (dlls\\${moddylib}) ${modinstalldir}/liblist.gam"
- echo -en "modifying gamedll_osx in liblist.gam..."
- rpldylib="s/dlls\/${moddylib}/addons\/metamod\/dlls\/metamod.dylib/g"
- sed -i $rpldylib "${modinstalldir}/liblist.gam"
- grep -q "addons/metamod/dlls/metamod.dylib" "${modinstalldir}/liblist.gam"
- exitcode=$?
- # if replacement back didn't happen, error out.
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "${logentry}"
- fn_print_fail_eol_nl
- else
- fn_script_log_pass ${logentry}
- fn_print_ok_eol_nl
- fi
- fi
- fi
-}
-
-fn_mod_remove_liblist_gam_file() {
-
- fn_mod_liblist_gam_filenames
-
- if [ -f "${modinstalldir}/liblist.gam" ]; then
- # modify the liblist.gam file back to defaults
- logentry="sed replace (addons/metamod/dlls/metamod.dll) ${modinstalldir}/liblist.gam"
- echo -en "modifying gamedll in liblist.gam..."
- rpldll="s/addons\/metamod\/dlls\/metamod.dll/dlls\\\\${moddll}/g"
- sed -i $rpldll "${modinstalldir}/liblist.gam"
- grep -q "${moddll}" "${modinstalldir}/liblist.gam"
- exitcode=$?
- # if replacement back didn't happen, error out.
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "${logentry}"
- fn_print_fail_eol_nl
- else
- fn_script_log_pass ${logentry}
- fn_print_ok_eol_nl
- fi
-
- # modify the liblist.gam file back to defaults
- logentry="sed replace (addons/metamod/dlls/metamod.so) ${modinstalldir}/liblist.gam"
- echo -en "modifying gamedll_linux in liblist.gam..."
- rplso="s/addons\/metamod\/dlls\/metamod.so/dlls\/${modso}/g"
- sed -i $rplso "${modinstalldir}/liblist.gam"
- grep -q "${modso}" "${modinstalldir}/liblist.gam"
- exitcode=$?
- # if replacement back didn't happen, error out
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "${logentry}"
- fn_print_fail_eol_nl
- else
- fn_script_log_pass ${logentry}
- fn_print_ok_eol_nl
- fi
-
- # mac os needs to be checked not all mods support mac os
- if [ -n "${moddylib}" ]; then
- # modify the liblist.gam file back to defaults
- logentry="sed replace (addons/metamod/dlls/metamod.dylib) ${modinstalldir}/liblist.gam"
- echo -en "modifying gamedll_osx in liblist.gam..."
- rpldylib="s/addons\/metamod\/dlls\/metamod.dylib/dlls\/${moddylib}/g"
- sed -i $rpldylib "${modinstalldir}/liblist.gam"
- grep -q "${moddylib}" "${modinstalldir}/liblist.gam"
- # if replacement back didn't happen, error out.
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "${logentry}"
- fn_print_fail_eol_nl
- else
- fn_script_log_pass ${logentry}
- fn_print_ok_eol_nl
- fi
- fi
- fi
-}
-
-fn_mod_install_amxmodx_file() {
- # does plugins.ini exist?
- if [ -f "${modinstalldir}/addons/metamod/plugins.ini" ]; then
- # since it does exist, is the entry already in plugins.ini
- logentry="line (linux addons/amxmodx/dlls/amxmodx_mm_i386.so) inserted into ${modinstalldir}/addons/metamod/plugins.ini"
- echo -en "adding amxmodx_mm_i386.so in plugins.ini..."
- grep -q "amxmodx_mm_i386.so" "${modinstalldir}/addons/metamod/plugins.ini"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- # file exists but the entry does not, let's add it
- echo "linux addons/amxmodx/dlls/amxmodx_mm_i386.so" >> "${modinstalldir}/addons/metamod/plugins.ini"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "${logentry}"
- fn_print_fail_eol_nl
- else
- fn_script_log_pass ${logentry}
- fn_print_ok_eol_nl
- fi
- fi
- else
- # create new file and add the mod to it
- echo "linux addons/amxmodx/dlls/amxmodx_mm_i386.so" > "${modinstalldir}/addons/metamod/plugins.ini"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "${logentry}"
- fn_print_fail_eol_nl
- core_exit.sh
- else
- fn_script_log_pass ${logentry}
- fn_print_ok_eol_nl
- fi
- fi
-}
-
-fn_mod_remove_amxmodx_file() {
- if [ -f "${modinstalldir}/addons/metamod/plugins.ini" ]; then
- # since it does exist, is the entry already in plugins.ini
- logentry="line (linux addons/amxmodx/dlls/amxmodx_mm_i386.so) removed from ${modinstalldir}/addons/metamod/plugins.ini"
- echo -en "removing amxmodx_mm_i386.so in plugins.ini..."
- grep -q "linux addons/amxmodx/dlls/amxmodx_mm_i386.so" "${modinstalldir}/addons/metamod/plugins.ini"
- # iIs it found? If so remove it and clean up
- exitcode=$?
- if [ "${exitcode}" == 0 ]; then
- # delete the line we inserted
- sed -i '/linux addons\/amxmodx\/dlls\/amxmodx_mm_i386.so/d' "${modinstalldir}/addons/metamod/plugins.ini"
- # remove empty lines
- sed -i '/^$/d' "${modinstalldir}/addons/metamod/plugins.ini"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_script_log_fatal "${logentry}"
- fn_print_fail_eol_nl
- else
- fn_script_log_pass ${logentry}
- fn_print_ok_eol_nl
- fi
-
- # if file is empty, remove it.
- if [ -f "${modinstalldir}/addons/metamod/plugins.ini" ]; then
- rm -f "${modinstalldir}/addons/metamod/plugins.ini"
- fn_script_log_pass "file removed ${modinstalldir}/addons/metamod/plugins.ini because it was empty"
- fi
- fi
- fi
-}
-
-## Database initialisation.
-
-mods_list.sh
-fn_mods_available
diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh
deleted file mode 100644
index a83b7e303..000000000
--- a/lgsm/functions/mods_list.sh
+++ /dev/null
@@ -1,209 +0,0 @@
-#!/bin/bash
-# LinuxGSM mods_list.sh module
-# Author: Daniel Gibbs
-# 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;
-# Usage: Then add this array to the mods_global_array.
-# Usage: If needed, you can scrape the download URL first.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# Get a proper URL for mods that don't provide a good one (optional)
-fn_script_log_info "Retrieving latest mods URLs"
-
-# Metamod (Half-life 1 Classic Engine)
-metamodversion="1.21.1-am"
-metamodlatestfile="metamod-${metamodversion}.zip"
-metamoddownloadurl="https://www.amxmodx.org/release/${metamodlatestfile}"
-metamodurl="${metamoddownloadurl}"
-# AMX Mod X: Base
-amxxbaseversion="1.8.2"
-amxxbasemod="base"
-amxxbaselatestfile="amxmodx-${amxxbaseversion}-${amxxbasemod}-linux.tar.gz"
-amxxbasedownloadurl="https://www.amxmodx.org/release/${amxxbaselatestfile}"
-amxxbaseurl="${amxxbasedownloadurl}"
-# AMX Mod X: Counter-Strike
-amxxcsversion="1.8.2"
-amxxcsmod="cstrike"
-amxxcslatestfile="amxmodx-${amxxbaseversion}-${amxxcsmod}-linux.tar.gz"
-amxxcsdownloadurl="https://www.amxmodx.org/release/${amxxcslatestfile}"
-amxxcsurl="${amxxcsdownloadurl}"
-# AMX Mod X: Day of Defeat
-amxxdodversion="1.8.2"
-amxxdodmod="dod"
-amxxdodlatestfile="amxmodx-${amxxdodversion}-${amxxdodmod}-linux.tar.gz"
-amxxdoddownloadurl="https://www.amxmodx.org/release/${amxxdodlatestfile}"
-amxxdodurl="${amxxdoddownloadurl}"
-# AMX Mod X: Team Fortress Classic
-amxxtfcversion="1.8.2"
-amxxtfcmod="tfc"
-amxxtfclatestfile="amxmodx-${amxxtfcversion}-${amxxtfcmod}-linux.tar.gz"
-amxxtfcdownloadurl="https://www.amxmodx.org/release/${amxxtfclatestfile}"
-amxxtfcurl="${amxxtfcdownloadurl}"
-# AMX Mod X: Natural Selection
-amxxnsversion="1.8.2"
-amxxnsmod="ns"
-amxxnslatestfile="amxmodx-${amxxnsversion}-${amxxnsmod}-linux.tar.gz"
-amxxnsdownloadurl="https://www.amxmodx.org/release/${amxxnslatestfile}"
-amxxnsurl="${amxxnsdownloadurl}"
-# AMX Mod X: The Specialists
-amxxtsversion="1.8.2"
-amxxtsmod="ts"
-amxxtslatestfile="amxmodx-${amxxtsversion}-${amxxtsmod}-linux.tar.gz"
-amxxtsdownloadurl="https://www.amxmodx.org/release/${amxxtslatestfile}"
-amxxtsurl="${amxxtsdownloadurl}"
-# Metamod:Source
-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}"
-metamodsourceurl="${metamodsourcedownloadurl}"
-# Sourcemod
-sourcemodversion="1.11"
-sourcemodscrapeurl="https://sm.alliedmods.net/smdrop/${sourcemodversion}/sourcemod-latest-linux"
-sourcemodlatestfile=$(wget "${sourcemodscrapeurl}" -q -O -)
-sourcemoddownloadurl="https://www.sourcemod.net/latest.php?os=linux&version=${sourcemodversion}"
-sourcemodurl="${sourcemoddownloadurl}"
-# Steamworks
-steamworksscrapeurl="https://users.alliedmods.net/~kyles/builds/SteamWorks"
-steamworkslatestfile=$(curl --connect-timeout 10 -sL ${steamworksscrapeurl} | grep -m 1 linux | cut -d '"' -f 4)
-steamworksdownloadurl="${steamworksscrapeurl}/${steamworkslatestfile}"
-steamworksurl="${steamworksdownloadurl}"
-# CS:GO Mods
-get5lastbuild=$(curl --connect-timeout 10 -sL https://api.github.com/repos/splewis/get5/releases/latest | jq '.assets[] |select(.browser_download_url | endswith(".tar.gz"))')
-get5latestfile=$(echo -e "${get5lastbuild}" | jq -r '.name')
-get5latestfilelink=$(echo -e "${get5lastbuild}" | jq -r '.browser_download_url')
-csgopracticelatest=$(curl --connect-timeout 10 -sL https://api.github.com/repos/splewis/csgo-practice-mode/releases/latest | jq '.assets[]')
-csgopracticelatestfile=$(echo -e "${csgopracticelatest}" | jq -r '.name')
-csgopracticelatestlink=$(echo -e "${csgopracticelatest}" | jq -r '.browser_download_url')
-csgopuglatest=$(curl --connect-timeout 10 -sL https://api.github.com/repos/splewis/csgo-pug-setup/releases/latest | jq '.assets[]')
-csgopuglatestfile=$(echo -e "${csgopuglatest}" | jq -r '.name')
-csgopuglatestlink=$(echo -e "${csgopuglatest}" | jq -r '.browser_download_url')
-gokzlatestversion=$(curl --connect-timeout 10 -s https://api.github.com/repos/KZGlobalTeam/gokz/releases/latest | grep "tag_name" | cut -d : -f 2,3 | sed -E 's/.*"([^"]+)".*/\1/')
-gokzlatestfile="GOKZ-v${gokzlatestversion}.zip"
-gokzlatestlink="https://github.com/KZGlobalTeam/gokz/releases/download/${gokzlatestversion}/${gokzlatestfile}"
-movementapilatestversion=$(curl --connect-timeout 10 -s https://api.github.com/repos/danzayau/MovementAPI/releases/latest | grep "tag_name" | cut -d : -f 2,3 | sed -E 's/.*"([^"]+)".*/\1/')
-movementapilatestfile="MovementAPI-v${movementapilatestversion}.zip"
-movementapilatestlink="https://github.com/danzayau/MovementAPI/releases/download/${movementapilatestversion}/${movementapilatestfile}"
-
-# Rust
-carbonrustapilatestfile="Carbon.Linux.Release.tar.gz"
-carbonrustlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/CarbonCommunity/Carbon.Core/releases/tags/production_build | jq -r '.assets[]|select(.name == "Carbon.Linux.Release.tar.gz") | .browser_download_url')
-
-# Oxide
-oxiderustlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.Rust/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url')
-oxidehurtworldlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.Hurtworld/releases/latest | jq -r '.assets[].browser_download_url')
-oxidesdtdlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.SevenDaysToDie/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url')
-# Valheim Plus
-valeimpluslatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/valheimPlus/ValheimPlus/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("UnixServer.tar.gz")) | .browser_download_url')
-# Valheim BepInEx
-bepinexvhlatestlink=$(curl --connect-timeout 10 -sL "https://valheim.thunderstore.io/api/experimental/package/denikson/BepInExPack_Valheim/" -H "accept: application/json" | jq -r '.latest.download_url')
-
-# Define mods information (required)
-
-# Separator name
-modseparator="MOD"
-
-# REQUIRED: mod_info_name=( MOD "modcommand" "Pretty Name" "URL" "filename" "modsubdirs" "LowercaseOn/Off" "/files/to/keep;" "/install/path" "ENGINES" "GAMES" "NOTGAMES" "AUTHOR_URL" "Short Description" )
-# Example 1) Well made mod: mod_info_name=( MOD "awesomemod" "This is an Awesome Mod" "https://awesomemod.com/latest.zip" "awesomemod.zip" "0" "LowercaseOff" "OVERWRITE" "${systemdir}/addons" "source;unity3d;" "GAMES" "NOTGAMES" "https://awesomemod.com/" "This mod knows that 42 is the answer" )
-# Example 2) Poorly made mod: mod_info_name=( MOD "stupidmod" "This is a stupid mod" "${crappymodurl}" "StupidMod.zip" "2" "LowercaseOn" "cfg;data/crappymod;" "${systemdir}" "source;" "GAMES" "Garry's mod;Counter-Strike: Source;" "This mod is dumber than dumb" )
-# None of those values can be empty
-# index | Usage
-# [0] | MOD: separator, all mods must begin with it
-# [1] | "modcommand": the LGSM name and command to install the mod (must be unique and lowercase)
-# [2] | "Pretty Name": the common name people use to call the mod that will be displayed to the user
-# [3] | "URL": link to the mod archive file; can be a variable previously defined while scraping a URL
-# [4] | "filename": the output filename
-# [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future)
-# [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it)
-# [7] | "modinstalldir": the directory in which to install the mode (use LGSM dir variables such as ${systemdir})
-# [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" value to ignore the value or "NOUPDATE" to disallow updating; for files to keep upon uninstall, see fn_mod_tidy_files_list from mods_core.sh
-# [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value
-# [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value
-# [11] | "Unsupported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use NOTGAMES to ignore the value (useful to exclude a game when using Supported Engines)
-# [12] | "AUTHOR_URL" is the author's website, displayed to the user when chosing mods to install
-# [13] | "Short Description" a description showed to the user upon installation/removal
-
-# Half-life 1 Engine Mods
-mod_info_metamod=(MOD "metamod" "Metamod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/plugins.ini;" "ENGINES" "Counter-Strike 1.6;Day of Defeat;Team Fortress Classic;Natural Selection;The Specialists;Half-Life: Deathmatch;" "NOTGAMES" "https://github.com/alliedmodders/metamod-hl1" "Plugins Framework")
-mod_info_base_amxx=(MOD "amxmodx" "AMX Mod X: Base" "${amxxbaseurl}" "${amxxbaselatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Counter-Strike 1.6;Day of Defeat;Team Fortress Classic;Natural Selection;The Specialists;Half-Life: Deathmatch;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod)")
-
-# CS 1.6 (HL1) Engine Mods
-mod_info_cs_amxx=(MOD "amxmodxcs" "AMX Mod X: Counter-Strike" "${amxxcsurl}" "${amxxcslatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Counter-Strike 1.6;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)")
-
-# DOD (HL1) Engine Mods
-mod_info_dod_amxx=(MOD "amxmodxdod" "AMX Mod X: Day of Defeat" "${amxxdodurl}" "${amxxdodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Day of Defeat;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)")
-
-# TFC (HL1) Engine Mods
-mod_info_tfc_amxx=(MOD "amxmodxtfc" "AMX Mod X: Team Fortress Classic" "${amxxtfcurl}" "${amxxtfclatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Team Fortress Classic;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)")
-
-# NS (Natural Selection) (HL1) Engine Mods
-mod_info_ns_amxx=(MOD "amxmodxns" "AMX Mod X: Natural Selection" "${amxxnsurl}" "${amxxnslatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Natural Selection;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)")
-
-# TS (The Specialists) (HL1) Engine Mods
-mod_info_ts_amxx=(MOD "amxmodxts" "AMX Mod X: The Specialists" "${amxxtsurl}" "${amxxtslatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "The Specialists;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)")
-
-# Source mods
-mod_info_metamodsource=(MOD "metamodsource" "Metamod: Source" "${metamodsourceurl}" "${metamodsourcelatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/metaplugins.ini;" "source;" "GAMES" "NOTGAMES" "https://www.sourcemm.net" "Plugins Framework")
-mod_info_sourcemod=(MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "source;" "GAMES" "NOTGAMES" "http://www.sourcemod.net" "Admin Features (requires Metamod: Source)")
-mod_info_steamworks=(MOD "steamworks" "SteamWorks" "${steamworksurl}" "${steamworkslatestfile}" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/KyleSanderson/SteamWorks" "Exposing SteamWorks functions to SourcePawn")
-mod_info_stripper=(MOD "stripper" "Stripper Source" "http://www.bailopan.net/stripper/snapshots/1.2/stripper-1.2.2-git129-linux.tar.gz" "stripper-1.2.2-git129-linux.tar.gz" "0" "LowercaseOff" "${systemdir}" "addons/stripper/maps;" "ENGINES" "Counter-Strike: Global Offensive;Counter-Strike: Source;Day of Defeat: Source;Half Life: Deathmatch;Half Life 2: Deathmatch;Insurgency;Left 4 Dead;Left 4 Dead 2;Nuclear Dawn;Team Fortress 2;" "NOTGAMES" "http://www.bailopan.net/stripper/" "Add or remove objects from map (requires MetaMod)")
-
-# CS:GO Mods
-mod_info_gokz=(MOD "gokz" "GOKZ" "${gokzlatestlink}" "${gokzlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/KZGlobalTeam/gokz" "GOKZ ${gokzlatestversion} - Implements the KZ game mode (requires SourceMod and MetaMod)")
-mod_info_ttt=(MOD "ttt" "Trouble in Terrorist Town" "https://csgottt.com/downloads/ttt-latest-dev-${sourcemodversion}.zip" "ttt-latest.zip" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/Bara/TroubleinTerroristTown" "Implements the TTT game mode (requires SourceMod and MetaMod)")
-mod_info_get5=(MOD "get5" "Get 5" "${get5latestfilelink}" "${get5latestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/splewis/get5" "Plugin for competitive matches/scrims (requires SourceMod and MetaMod)")
-mod_info_prac=(MOD "prac" "csgo practice mode" "${csgopracticelatestlink}" "${csgopracticelatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/splewis/csgo-practice-mode" "Practice Mode is a sourcemod plugin for helping players/teams run practices.")
-mod_info_pug=(MOD "pug" "PUG" "${csgopuglatestlink}" "${csgopuglatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/splewis/csgo-pug-setup" "plugin for setting up private pug/10man games")
-mod_info_dhook=(MOD "dhook" "dhook" "https://forums.alliedmods.net/attachment.php?attachmentid=190123&d=1625050030" "dhooks-2.2.0d17.zip" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://forums.alliedmods.net/showpost.php?p=2588686&postcount=589" "DHooks 2.2.0 - Required for GOKZ")
-mod_info_movement=(MOD "movementapi" "movementapi" "${movementapilatestlink}" "${movementapilatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/danzayau/MovementAPI" "Movement API ${movementapilatestversion} - Required for GOKZ")
-mod_info_cleaner=(MOD "cleaner" "cleaner" "https://github.com/e54385991/console-cleaner/archive/refs/heads/master.zip" "console-cleaner.zip" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/e54385991/console-cleaner" "Console Cleaner - Optional for GOKZ")
-
-# Garry's Mod Addons
-mod_info_ulib=(MOD "ulib" "ULib" "https://codeload.github.com/TeamUlysses/ulib/zip/master" "ulib-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Complete Framework")
-mod_info_ulx=(MOD "ulx" "ULX" "https://codeload.github.com/TeamUlysses/ulx/zip/master" "ulx-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Admin Panel (requires ULib)")
-mod_info_utime=(MOD "utime" "UTime" "https://github.com/TeamUlysses/utime/archive/master.zip" "utime-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Keep track of players play time")
-mod_info_uclip=(MOD "uclip" "UClip" "https://github.com/TeamUlysses/uclip/archive/master.zip" "uclip-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "An alternative to noclip")
-mod_info_acf=(MOD "acf" "Armoured Combat Framework" "https://github.com/nrlulz/ACF/archive/master.zip" "acf-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "acf-master/lua/acf/shared/guns;" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/nrlulz/ACF" "Realistic Wepons & Engines")
-mod_info_acf_missiles=(MOD "acfmissiles" "ACF Missiles" "https://github.com/Bubbus/ACF-Missiles/archive/master.zip" "acf-missiles-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Bubbus/ACF-Missiles" "More missiles for ACF")
-mod_info_advdupe2=(MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/wiremod/advdupe2/archive/master.zip" "advdupe2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://www.wiremod.com" "Save your constructions. Second version")
-mod_info_pac3=(MOD "pac3" "PAC3" "https://github.com/CapsAdmin/pac3/archive/master.zip" "pac3-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/CapsAdmin/pac3" "Advanced player model customization")
-mod_info_wiremod=(MOD "wiremod" "Wiremod" "https://github.com/wiremod/wire/archive/master.zip" "wire-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/wiremod/wire" "Base Wiremod Addon")
-mod_info_wiremodextras=(MOD "wiremod-extras" "Wiremod Extras" "https://github.com/wiremod/wire-extras/archive/master.zip" "wire-extras-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/wiremod/wire-extras/" "Addition to Wiremod, Extra Content")
-mod_info_advduplicator=(MOD "advdupe1" "Advanced Duplicator 1" "https://github.com/wiremod/advduplicator/archive/master.zip" "advduplicator-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/wiremod/advduplicator" "Save your constructions. First version")
-mod_info_trackassemblytool=(MOD "trackassemblytool" "Track Assembly Tool" "https://github.com/dvdvideo1234/trackassemblytool/archive/master.zip" "trackassemblytool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/TrackAssemblyTool" "Assembles segmented track. Supports wire")
-mod_info_physpropertiesadv=(MOD "physpropertiesadv" "Phys Properties Adv" "https://github.com/dvdvideo1234/physpropertiesadv/archive/master.zip" "physpropertiesadv-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/PhysPropertiesAdv" "Advanced configurable properties")
-mod_info_controlsystemse2=(MOD "controlsystemse2" "Control Systems E2" "https://github.com/dvdvideo1234/controlsystemse2/archive/master.zip" "controlsystemse2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/ControlSystemsE2" "PID controllers and fast traces for E2. Minor included in wire-extas")
-mod_info_e2pistontiming=(MOD "e2pistontiming" "E2 Piston Timing" "https://github.com/dvdvideo1234/e2pistontiming/archive/master.zip" "e2pistontiming-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/E2PistonTiming" "Routine driven piston engine timings for E2")
-mod_info_propcannontool=(MOD "propcannontool" "Prop Cannon Tool" "https://github.com/dvdvideo1234/propcannontool/archive/master.zip" "propcannontool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/PropCannonTool" "Cannon entity that can fire props. Supports wire")
-mod_info_gearassemblytool=(MOD "gearassemblytool" "Gear Assembly Tool" "https://github.com/dvdvideo1234/gearassemblytool/archive/master.zip" "gearassemblytool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/GearAssemblyTool" "Assembles segmented gearbox")
-mod_info_spinnertool=(MOD "spinnertool" "Spinner Tool" "https://github.com/dvdvideo1234/spinnertool/archive/master.zip" "spinnertool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/SpinnerTool" "Torque lever controlled spinner. Supports wire")
-mod_info_surfacefrictiontool=(MOD "surfacefrictiontool" "Surface Friction Tool" "https://github.com/dvdvideo1234/surfacefrictiontool/archive/master.zip" "surfacefrictiontool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/SurfaceFrictionTool" "Controls the surface friction of a prop")
-mod_info_magneticdipole=(MOD "magneticdipole" "Magnetic Dipole" "https://github.com/dvdvideo1234/magneticdipole/archive/master.zip" "magneticdipole-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/MagneticDipole" "Magnet entity that runs forces on its poles. Supports wire")
-mod_info_environmentorganizer=(MOD "environmentorganizer" "Environment Organizer" "https://github.com/dvdvideo1234/environmentorganizer/archive/master.zip" "environmentorganizer-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/EnvironmentOrganizer" "Installs routines designed for server settings adjustment")
-mod_info_precision_alignment=(MOD "precision-alignment" "Precision Alignment" "https://github.com/Mista-Tea/precision-alignment/archive/master.zip" "precision-alignment-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Mista-Tea/precision-alignment" "Creates precise constraints and aligments")
-mod_info_improved_stacker=(MOD "improved-stacker" "Improved Stacker" "https://github.com/Mista-Tea/improved-stacker/archive/master.zip" "improved-stacker-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Mista-Tea/improved-stacker" "Stacks entities in the direction chosen")
-mod_info_improved_weight=(MOD "improved-weight" "Improved Weight" "https://github.com/Mista-Tea/improved-weight/archive/master.zip" "improved-weight-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Mista-Tea/improved-weight" "Weight tool but with more features")
-mod_info_improved_antinoclip=(MOD "improved-antinoclip" "Improved Antinoclip" "https://github.com/Mista-Tea/improved-antinoclip/archive/master.zip" "improved-antinoclip-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Mista-Tea/improved-antinoclip" "Controls clipping trough an object")
-mod_info_darkrp=(MOD "darkrp" "DarkRP" "https://github.com/FPtje/DarkRP/archive/master.zip" "darkrp-master.zip" "0" "LowercaseOn" "${systemdir}/gamemodes" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Most popular gamemode")
-mod_info_darkrpmodification=(MOD "darkrpmodification" "DarkRP Modification" "https://github.com/FPtje/darkrpmodification/archive/master.zip" "darkrpmodification-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "NOUPDATE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Customize DarkRP settings")
-mod_info_laserstool=(MOD "laserstool" "Laser STool" "https://github.com/dvdvideo1234/laserstool/archive/main.zip" "laserstool-main.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/LaserSTool" "Scripted tool that spawns laser entities, simulates light rays and even kill players")
-
-# Rust
-mod_info_rustcarbon=(MOD "rustcarbon" "Carbon for Rust" "${carbonrustlatestlink}" "Carbon.Linux.Release.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Rust;" "NOTGAMES" "carbonmod.gg" "Allows for the use of both plugins and harmony mods")
-
-# Oxidemod
-mod_info_rustoxide=(MOD "rustoxide" "Oxide for Rust" "${oxiderustlatestlink}" "Oxide.Rust-linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Rust;" "NOTGAMES" "https://umod.org/games/rust" "Allows for the use of plugins")
-mod_info_hwoxide=(MOD "hwoxide" "Oxide for Hurtworld" "${oxidehurtworldlatestlink}" "Oxide.Hurtworld.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Hurtworld;" "NOTGAMES" "https://umod.org/games/hurtworld" "Allows for the use of plugins")
-mod_info_sdtdoxide=(MOD "sdtdoxide" "Oxide for 7 Days To Die" "${oxidesdtdlatestlink}" "Oxide.SevenDaysToDie.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "https://umod.org/games/7-days-to-die" "Allows for the use of plugins")
-
-# ValheimPlus
-mod_info_valheimplus=(MOD "valheimplus" "Valheim PLUS" "${valeimpluslatestlink}" "ValheimPlus.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://github.com/valheimPlus/ValheimPlus" "Mod to improve Valheim gameplay")
-
-# BepInEx Valheim
-mod_info_bepinexvh=(MOD "bepinexvh" "BepInEx Valheim" "${bepinexvhlatestlink}" "denikson-BepInExPack_Valheim.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://valheim.thunderstore.io/package/denikson/BepInExPack_Valheim/" "Unity / XNA game patcher and plugin framework")
-
-# REQUIRED: Set all mods info into the global array
-mods_global_array=("${mod_info_metamod[@]}" "${mod_info_base_amxx[@]}" "${mod_info_cs_amxx[@]}" "${mod_info_dod_amxx[@]}" "${mod_info_tfc_amxx[@]}" "${mod_info_ns_amxx[@]}" "${mod_info_ts_amxx[@]}" "${mod_info_metamodsource[@]}" "${mod_info_sourcemod[@]}" "${mod_info_steamworks[@]}" "${mod_info_gokz[@]}" "${mod_info_ttt[@]}" "${mod_info_get5[@]}" "${mod_info_prac[@]}" "${mod_info_pug[@]}" "${mod_info_dhook[@]}" "${mod_info_movement[@]}" "${mod_info_cleaner[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_pac3[@]}" "${mod_info_wiremod[@]}" "${mod_info_wiremodextras[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustcarbon[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" "${mod_info_advduplicator[@]}" "${mod_info_trackassemblytool[@]}" "${mod_info_physpropertiesadv[@]}" "${mod_info_controlsystemse2[@]}" "${mod_info_e2pistontiming[@]}" "${mod_info_propcannontool[@]}" "${mod_info_gearassemblytool[@]}" "${mod_info_spinnertool[@]}" "${mod_info_surfacefrictiontool[@]}" "${mod_info_magneticdipole[@]}" "${mod_info_environmentorganizer[@]}" "${mod_info_precision_alignment[@]}" "${mod_info_improved_stacker[@]}" "${mod_info_improved_weight[@]}" "${mod_info_improved_antinoclip[@]}" "${mod_info_laserstool[@]}" "${mod_info_valheimplus[@]}" "${mod_info_bepinexvh[@]}")
diff --git a/lgsm/functions/query_gamedig.sh b/lgsm/functions/query_gamedig.sh
deleted file mode 100644
index 265607acd..000000000
--- a/lgsm/functions/query_gamedig.sh
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/bash
-# 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
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-querystatus="2"
-# Check if gamedig and jq are installed.
-if [ "$(command -v gamedig 2> /dev/null)" ] && [ "$(command -v jq 2> /dev/null)" ]; then
-
- # will bypass query if server offline.
- check_status.sh
- if [ "${status}" != "0" ]; then
- # GameDig requires you use the voice port when querying.
- if [ "${querytype}" == "teamspeak3" ]; then
- queryport="${port}"
- fi
- # checks if query is working null = pass.
- gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${queryip}\" --query_port \"${queryport}\"|jq")
- gamedigraw=$(gamedig --type "${querytype}" --host "${queryip}" --query_port "${queryport}")
- querystatus=$(echo "${gamedigraw}" | jq '.error|length')
-
- if [ "${querystatus}" != "null" ]; then
- gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${queryip}\" --port \"${queryport}\"|jq")
- gamedigraw=$(gamedig --type "${querytype}" --host "${queryip}" --port "${queryport}")
- querystatus=$(echo "${gamedigraw}" | jq '.error|length')
- fi
-
- if [ "${querytype}" == "teamspeak3" ]; then
- fn_info_game_ts3
- fi
-
- # server name.
- gdname=$(echo "${gamedigraw}" | jq -re '.name')
- if [ "${gdname}" == "null" ]; then
- unset gdname
- fi
-
- # numplayers.
- if [ "${querytype}" == "minecraft" ]; then
- gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length-1')
- elif [ "${querytype}" == "teamspeak3" ]; then
- gdplayers=$(echo "${gamedigraw}" | jq -re '.raw.virtualserver_clientsonline')
- else
- gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length')
- fi
- if [ "${gdplayers}" == "null" ]; then
- unset gdplayers
- elif [ "${gdplayers}" == "[]" ] || [ "${gdplayers}" == "-1" ]; then
- gdplayers=0
- fi
-
- # maxplayers.
- gdmaxplayers=$(echo "${gamedigraw}" | jq -re '.maxplayers')
- if [ "${gdmaxplayers}" == "null" ]; then
- unset gdmaxplayers
- elif [ "${gdmaxplayers}" == "[]" ]; then
- gdmaxplayers=0
- fi
-
- # current map.
- gdmap=$(echo "${gamedigraw}" | jq -re '.map')
- if [ "${gdmap}" == "null" ]; then
- unset gdmap
- fi
-
- # current gamemode.
- gdgamemode=$(echo "${gamedigraw}" | jq -re '.raw.rules.GameMode_s')
- if [ "${gdgamemode}" == "null" ]; then
- unset gdgamemode
- fi
-
- # numbots.
- gdbots=$(echo "${gamedigraw}" | jq -re '.bots | length')
- if [ "${gdbots}" == "null" ] || [ "${gdbots}" == "0" ]; then
- unset gdbots
- fi
-
- # server version.
- if [ "${querytype}" == "teamspeak3" ]; then
- gdversion=$(echo "${gamedigraw}" | jq -re '.raw.virtualserver_version')
- else
- gdversion=$(echo "${gamedigraw}" | jq -re '.raw.version')
- fi
-
- if [ "${gdversion}" == "null" ] || [ "${gdversion}" == "0" ]; then
- unset gdversion
- fi
- fi
-fi
diff --git a/lgsm/functions/query_gsquery.py b/lgsm/functions/query_gsquery.py
deleted file mode 100644
index 62c92082e..000000000
--- a/lgsm/functions/query_gsquery.py
+++ /dev/null
@@ -1,151 +0,0 @@
-#! /usr/bin/env python3
-# -*- coding: utf-8 -*-
-# LinuxGSM query_gsquery.py function
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Allows querying of various game servers.
-
-import argparse
-import socket
-import sys
-
-engine_types=('protocol-valve','protocol-quake3','protocol-quake3','protocol-gamespy1','protocol-unreal2','ut3','minecraft','minecraftbe','jc2mp','mumbleping','soldat','teeworlds')
-
-class gsquery:
- server_response_timeout = 5
- default_buffer_length = 1024
- sourcequery=('protocol-valve','avalanche3.0','barotrauma','madness','quakelive','realvirtuality','refractor','source','goldsrc','spark','starbound','unity3d','unreal4','wurm')
- idtech2query=('protocol-quake3','idtech2','quake','iw2.0')
- idtech3query=('protocol-quake3','iw3.0','ioquake3','qfusion')
- minecraftquery=('minecraft','lwjgl2')
- minecraftbequery=('minecraftbe',)
- jc2mpquery=('jc2mp',)
- mumblequery=('mumbleping',)
- soldatquery=('soldat',)
- twquery=('teeworlds',)
- unrealquery=('protocol-gamespy1','unreal')
- unreal2query=('protocol-unreal2','unreal2')
- unreal3query=('ut3','unreal3')
-
- def __init__(self, arguments):
- self.argument = arguments
- #
- if self.argument.engine in self.sourcequery:
- self.query_prompt_string = b'\xFF\xFF\xFF\xFFTSource Engine Query\0'
- elif self.argument.engine in self.idtech2query:
- self.query_prompt_string = b'\xff\xff\xff\xffstatus\x00'
- elif self.argument.engine in self.idtech3query:
- self.query_prompt_string = b'\xff\xff\xff\xffgetstatus'
- elif self.argument.engine in self.jc2mpquery:
- self.query_prompt_string = b'\xFE\xFD\x09\x10\x20\x30\x40'
- elif self.argument.engine in self.minecraftquery:
- self.query_prompt_string = b'\xFE\xFD\x09\x3d\x54\x1f\x93'
- elif self.argument.engine in self.minecraftbequery:
- self.query_prompt_string = b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\xfe\xfe\xfe\xfe\xfd\xfd\xfd\xfd\x12\x34\x56\x78\x00\x00\x00\x00\x00\x00\x00\x00'
- elif self.argument.engine in self.mumblequery:
- self.query_prompt_string = b'\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08'
- elif self.argument.engine in self.soldatquery:
- self.query_prompt_string = b'\x69\x00'
- elif self.argument.engine in self.twquery:
- self.query_prompt_string = b'\x04\x00\x00\xff\xff\xff\xff\x05' + bytearray(511)
- elif self.argument.engine in self.unrealquery:
- self.query_prompt_string = b'\x5C\x69\x6E\x66\x6F\x5C'
- elif self.argument.engine in self.unreal2query:
- self.query_prompt_string = b'\x79\x00\x00\x00\x00'
- elif self.argument.engine in self.unreal3query:
- self.query_prompt_string = b'\xFE\xFD\x09\x00\x00\x00\x00'
-
- self.connected = False
- self.response = None
-
- @staticmethod
- def fatal_error(error_message, error_code=1):
- sys.stderr.write('ERROR: ' + str(error_message) + '\n')
- sys.exit(error_code)
-
- @staticmethod
- def exit_success(success_message=''):
- sys.stdout.write('OK: ' + str(success_message) + '\n')
- sys.exit(0)
-
- def responding(self):
- # Connect.
- connection = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- connection.settimeout(self.server_response_timeout)
- try:
- self.connected = connection.connect((self.argument.address, int(self.argument.port)))
- except socket.timeout:
- self.fatal_error('Request timed out', 1)
- except Exception:
- self.fatal_error('Unable to connect', 1)
- # Send.
- connection.send(self.query_prompt_string)
- # Receive.
- try:
- self.response = connection.recv(self.default_buffer_length)
- except socket.error:
- self.fatal_error('Unable to receive', 2)
- connection.close()
- # Response.
- if self.response is None:
- self.fatal_error('No response', 3)
- if len(self.response) < 5:
- sys.exit('Short response.', 3)
- else:
- self.exit_success(str(self.response))
-
-def parse_args():
- parser = argparse.ArgumentParser(
- description='Allows querying of various game servers.',
- usage='usage: python3 %(prog)s [options]',
- add_help=False
- )
- parser.add_argument(
- '-a', '--address',
- type=str,
- required=True,
- help='The IPv4 address of the server.'
- )
- parser.add_argument(
- '-p', '--port',
- type=int,
- required=True,
- help='The IPv4 port of the server.'
- )
- parser.add_argument(
- '-e', '--engine',
- metavar='ENGINE',
- choices=engine_types,
- help='Engine type: ' + ' '.join(engine_types)
- )
- parser.add_argument(
- '-v', '--verbose',
- action='store_true',
- help='Display verbose output.'
- )
- parser.add_argument(
- '-d', '--debug',
- action='store_true',
- help='Display debugging output.'
- )
- parser.add_argument(
- '-V', '--version',
- action='version',
- version='%(prog)s 0.0.1',
- help='Display version and exit.'
- )
- parser.add_argument(
- '-h', '--help',
- action='help',
- help='Display help and exit.'
- )
- return parser.parse_args()
-
-def main():
- arguments = parse_args()
- server = gsquery(arguments)
- server.responding()
-
-if __name__ == '__main__':
- main()
diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh
deleted file mode 100644
index 852ab9d87..000000000
--- a/lgsm/functions/update_factorio.sh
+++ /dev/null
@@ -1,168 +0,0 @@
-#!/bin/bash
-# LinuxGSM update_factorio.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Handles updating of Factorio servers.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_update_dl() {
- # Download and extract files to serverfiles.
- fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "nohash"
- fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${remotebuildversion}.tar.xz" "${serverfiles}" "factorio"
- fn_clear_tmp
-}
-
-fn_update_localbuild() {
- # Gets local build info.
- fn_print_dots "Checking local build: ${remotelocation}"
- # Uses executable to get local build.
- if [ -d "${executabledir}" ]; then
- cd "${executabledir}" || exit
- localbuild=$(${executable} --version | grep "Version:" | awk '{print $2}')
- fi
- if [ -z "${localbuild}" ]; then
- fn_print_error "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_error "Missing local build info"
- fn_script_log_error "Set localbuild to 0"
- localbuild="0"
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_remotebuild() {
- # Get remote build info.
- apiurl="https://factorio.com/get-download/${branch}/headless/${factorioarch}"
- remotebuildresponse=$(curl -s "${apiurl}")
- remotebuildversion=$(echo "${remotebuildresponse}" | grep -o '[0-9]\.[0-9]\{1,\}\.[0-9]\{1,\}' | head -1)
- remotebuildurl="https://factorio.com/get-download/${branch}/headless/${factorioarch}"
- remotebuildfilename="factorio_headless_${factorioarch}-${remotebuildversion}.tar.xz"
-
- if [ "${firstcommandname}" != "INSTALL" ]; then
- fn_print_dots "Checking remote build: ${remotelocation}"
- # Checks if remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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_compare() {
- fn_print_dots "Checking for update: ${remotelocation}"
- if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then
- fn_print_ok_nl "Checking for update: ${remotelocation}"
- echo -en "\n"
- echo -e "Update available"
- echo -e "* Local build: ${red}${localbuild} ${factorioarch}${default}"
- echo -e "* Remote build: ${green}${remotebuildversion} ${factorioarch}${default}"
- if [ -n "${branch}" ]; then
- echo -e "* Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- echo -en "\n"
- fn_script_log_info "Update available"
- fn_script_log_info "Local build: ${localbuild} ${factorioarch}"
- fn_script_log_info "Remote build: ${remotebuildversion} ${factorioarch}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- fn_script_log_info "${localbuild} > ${remotebuildversion}"
-
- if [ "${commandname}" == "UPDATE" ]; then
- unset updateonstart
- check_status.sh
- # If server stopped.
- if [ "${status}" == "0" ]; then
- fn_update_dl
- if [ "${localbuild}" == "0" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- exitbypass=1
- sleep 5
- command_stop.sh
- fn_firstcommand_reset
- fi
- # If server started.
- else
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- exitbypass=1
- fn_update_dl
- 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} ${factorioarch}${default}"
- echo -e "* Remote build: ${green}${remotebuildversion} ${factorioarch}${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} ${factorioarch}"
- fn_script_log_info "Remote build: ${remotebuildversion} ${factorioarch}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- fi
-}
-
-# Game server architecture.
-factorioarch="linux64"
-
-# The location where the builds are checked and downloaded.
-remotelocation="factorio.com"
-
-if [ "${firstcommandname}" == "INSTALL" ]; then
- fn_update_remotebuild
- fn_update_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_localbuild
- fn_update_remotebuild
- fn_update_compare
-fi
diff --git a/lgsm/functions/update_jediknight2.sh b/lgsm/functions/update_jediknight2.sh
deleted file mode 100644
index a88b96f61..000000000
--- a/lgsm/functions/update_jediknight2.sh
+++ /dev/null
@@ -1,163 +0,0 @@
-#!/bin/bash
-# LinuxGSM update_jk2.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Handles updating of Jedi Knight 2 servers.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_update_dl() {
- # Download and extract files to serverfiles.
- fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "nohash"
- fn_dl_extract "${tmpdir}" "${remotebuildfilename}" "${serverfiles}/GameData" "linux-amd64"
- fn_clear_tmp
-}
-
-fn_update_localbuild() {
- # Gets local build info.
- fn_print_dots "Checking local build: ${remotelocation}"
- # Uses log file to get local build.
- localbuild=$(grep "\"version\"" "${consolelogdir}"/* 2> /dev/null | sed 's/.*://' | awk '{print $1}' | head -n 1 | sed 's/v//')
- if [ -z "${localbuild}" ]; then
- fn_print_error "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_error "Missing local build info"
- fn_script_log_error "Set localbuild to 0"
- localbuild="0"
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_remotebuild() {
- # Get remote build info.
- apiurl="https://api.github.com/repos/mvdevs/jk2mv/releases/latest"
- remotebuildresponse=$(curl -s "${apiurl}")
- remotebuildfilename=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("dedicated.zip")) | .name')
- remotebuildurl=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("dedicated.zip")) | .browser_download_url')
- remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.tag_name')
-
- if [ "${firstcommandname}" != "INSTALL" ]; then
- fn_print_dots "Checking remote build: ${remotelocation}"
- # Checks if remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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_compare() {
- fn_print_dots "Checking for update: ${remotelocation}"
- if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${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}${remotebuildversion}${default}"
- if [ -n "${branch}" ]; then
- echo -e "* Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- echo -en "\n"
- fn_script_log_info "Update available"
- fn_script_log_info "Local build: ${localbuild}"
- fn_script_log_info "Remote build: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- fn_script_log_info "${localbuild} > ${remotebuildversion}"
-
- if [ "${commandname}" == "UPDATE" ]; then
- unset updateonstart
- check_status.sh
- # If server stopped.
- if [ "${status}" == "0" ]; then
- fn_update_dl
- if [ "${localbuild}" == "0" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- exitbypass=1
- sleep 5
- command_stop.sh
- fn_firstcommand_reset
- fi
- # If server started.
- else
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- exitbypass=1
- fn_update_dl
- 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}${remotebuildversion}${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: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- fi
-}
-
-# The location where the builds are checked and downloaded.
-remotelocation="github.com"
-
-if [ "${firstcommandname}" == "INSTALL" ]; then
- fn_update_remotebuild
- fn_update_dl
-else
- update_steamcmd.sh
- fn_print_dots "Checking for update"
- fn_print_dots "Checking for update: ${remotelocation}"
- fn_script_log_info "Checking for update: ${remotelocation}"
- fn_update_localbuild
- fn_update_remotebuild
- fn_update_compare
-fi
diff --git a/lgsm/functions/update_minecraft.sh b/lgsm/functions/update_minecraft.sh
deleted file mode 100644
index dbef26d34..000000000
--- a/lgsm/functions/update_minecraft.sh
+++ /dev/null
@@ -1,176 +0,0 @@
-#!/bin/bash
-# LinuxGSM update_minecraft.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Handles updating of Minecraft: Java Edition servers.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_update_dl() {
- # Download and extract files to serverfiles.
- fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "chmodx" "norun" "noforce" "nohash"
- cp -f "${tmpdir}/${remotebuildfilename}" "${serverfiles}/${executable#./}"
-}
-
-fn_update_localbuild() {
- # Gets local build info.
- fn_print_dots "Checking local build: ${remotelocation}"
- # Uses executable to get local build.
- if [ -d "${executabledir}" ]; then
- cd "${executabledir}" || exit
- localbuild=$(unzip -p "minecraft_server.jar" version.json | jq -r '.id')
- fi
- if [ -z "${localbuild}" ]; then
- fn_print_error "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_error "Missing local build info"
- fn_script_log_error "Set localbuild to 0"
- localbuild="0"
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_remotebuild() {
- # Get remote build info.
- apiurl="https://launchermeta.mojang.com/mc/game/version_manifest.json"
- remotebuildresponse=$(curl -s "${apiurl}")
- # Latest release.
- if [ "${branch}" == "release" ] && [ "${mcversion}" == "latest" ]; then
- remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.latest.release')
- # Latest snapshot.
- elif [ "${branch}" == "snapshot" ] && [ "${mcversion}" == "latest" ]; then
- remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.latest.snapshot')
- # Specific release/snapshot.
- else
- remotebuildversion=$(echo "${remotebuildresponse}" | jq -r --arg branch "${branch}" --arg mcversion "${mcversion}" '.versions | .[] | select(.type==$branch and .id==$mcversion) | .id')
- fi
- remotebuildfilename="minecraft_server.${remotebuildversion}.jar"
- # Generate link to version manifest json.
- remotebuildmanifest=$(echo "${remotebuildresponse}" | jq -r --arg branch "${branch}" --arg mcversion "${remotebuildversion}" '.versions | .[] | select(.type==$branch and .id==$mcversion) | .url')
- # Generate link to server.jar
- remotebuildurl=$(curl -s "${remotebuildmanifest}" | jq -r '.downloads.server.url')
-
- if [ "${firstcommandname}" != "INSTALL" ]; then
- fn_print_dots "Checking remote build: ${remotelocation}"
- # Checks if remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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_compare() {
- fn_print_dots "Checking for update: ${remotelocation}"
- if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${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}${remotebuildversion}${default}"
- if [ -n "${branch}" ]; then
- echo -e "* Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- echo -en "\n"
- fn_script_log_info "Update available"
- fn_script_log_info "Local build: ${localbuild}"
- fn_script_log_info "Remote build: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- fn_script_log_info "${localbuild} > ${remotebuildversion}"
-
- if [ "${commandname}" == "UPDATE" ]; then
- unset updateonstart
- check_status.sh
- # If server stopped.
- if [ "${status}" == "0" ]; then
- fn_update_dl
- if [ "${localbuild}" == "0" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- exitbypass=1
- sleep 5
- command_stop.sh
- fn_firstcommand_reset
- fi
- # If server started.
- else
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- exitbypass=1
- fn_update_dl
- 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}${remotebuildversion}${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: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- fi
-}
-
-# The location where the builds are checked and downloaded.
-remotelocation="mojang.com"
-
-if [ "${firstcommandname}" == "INSTALL" ]; then
- fn_update_remotebuild
- fn_update_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_localbuild
- fn_update_remotebuild
- fn_update_compare
-fi
diff --git a/lgsm/functions/update_minecraft_bedrock.sh b/lgsm/functions/update_minecraft_bedrock.sh
deleted file mode 100644
index c17088171..000000000
--- a/lgsm/functions/update_minecraft_bedrock.sh
+++ /dev/null
@@ -1,181 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_update_dl() {
- fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "bedrock_server.${remotebuildversion}.zip" "nochmodx" "norun" "noforce" "nohash"
- echo -e "Extracting to ${serverfiles}...\c"
- if [ "${firstcommandname}" == "INSTALL" ]; then
- unzip -oq "${tmpdir}/bedrock_server.${remotebuildversion}.zip" -x "server.properties" -d "${serverfiles}"
- else
- unzip -oq "${tmpdir}/bedrock_server.${remotebuildversion}.zip" -x "permissions.json" "server.properties" "allowlist.json" -d "${serverfiles}"
- fi
- local exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- fn_print_fail_eol_nl
- fn_script_log_fatal "Extracting ${local_filename}"
- if [ -f "${lgsmlog}" ]; then
- echo -e "${extractcmd}" >> "${lgsmlog}"
- fi
- echo -e "${extractcmd}"
- core_exit.sh
- else
- fn_print_ok_eol_nl
- fn_script_log_pass "Extracting ${local_filename}"
- fi
-}
-
-fn_update_localbuild() {
- # Gets local build info.
- fn_print_dots "Checking local build: ${remotelocation}"
- # Uses log file to get local build.
- localbuild=$(grep Version "${consolelogdir}"/* 2> /dev/null | tail -1 | sed 's/.*Version: //' | tr -d '\000-\011\013-\037')
- if [ -z "${localbuild}" ]; then
- fn_print_error "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_error "Missing local build info"
- fn_script_log_error "Set localbuild to 0"
- localbuild="0"
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_remotebuild() {
- # Random number for userAgent
- randnum=$((1 + RANDOM % 5000))
- # Get remote build info.
- if [ "${mcversion}" == "latest" ]; then
- remotebuildversion=$(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]")
- else
- remotebuildversion="${mcversion}"
- fi
- remotebuildurl="https://minecraft.azureedge.net/bin-linux/bedrock-server-${remotebuildversion}.zip"
-
- if [ "${firstcommandname}" != "INSTALL" ]; then
- fn_print_dots "Checking remote build: ${remotelocation}"
- # Checks if remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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_compare() {
- fn_print_dots "Checking for update: ${remotelocation}"
- if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${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}${remotebuildversion}${default}"
- if [ -n "${branch}" ]; then
- echo -e "* Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- echo -en "\n"
- fn_script_log_info "Update available"
- fn_script_log_info "Local build: ${localbuild}"
- fn_script_log_info "Remote build: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- fn_script_log_info "${localbuild} > ${remotebuildversion}"
-
- if [ "${commandname}" == "UPDATE" ]; then
- unset updateonstart
- check_status.sh
- # If server stopped.
- if [ "${status}" == "0" ]; then
- fn_update_dl
- if [ "${localbuild}" == "0" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- exitbypass=1
- sleep 5
- command_stop.sh
- fn_firstcommand_reset
- fi
- # If server started.
- else
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- exitbypass=1
- fn_update_dl
- 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}${remotebuildversion}${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: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- fi
-}
-
-# The location where the builds are checked and downloaded.
-remotelocation="minecraft.net"
-
-if [ "${firstcommandname}" == "INSTALL" ]; then
- fn_update_remotebuild
- fn_update_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_localbuild
- fn_update_remotebuild
- fn_update_compare
-fi
diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh
deleted file mode 100644
index 5252c1328..000000000
--- a/lgsm/functions/update_mta.sh
+++ /dev/null
@@ -1,166 +0,0 @@
-#!/bin/bash
-# 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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_update_dl() {
- # Download and extract files to tmpdir.
- fn_fetch_file "http://linux.mtasa.com/dl/multitheftauto_linux_x64.tar.gz" "" "" "" "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "nochmodx" "norun" "force" "nohash"
- fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "${serverfiles}" "multitheftauto_linux_x64"
-}
-
-fn_update_localbuild() {
- # Gets local build info.
- fn_print_dots "Checking local build: ${remotelocation}"
- # Uses log file to get local build.
- localbuild=$(grep "= Multi Theft Auto: San Andreas v" "${serverfiles}/mods/deathmatch/logs/server.log" | awk '{ print $7 }' | sed -r 's/^.{1}//' | tail -1)
- if [ -z "${localbuild}" ]; then
- fn_print_error "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_error "Missing local build info"
- fn_script_log_error "Set localbuild to 0"
- localbuild="0"
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_remotebuild() {
- # Get remote build info.
- apiurl="https://api.github.com/repos/multitheftauto/mtasa-blue/releases/latest"
- remotebuildresponse=$(curl -s "${apiurl}")
- remotebuildfilename=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("Linux-amd64")) | .name')
- remotebuildurl=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("Linux-amd64")) | .browser_download_url')
- remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.tag_name')
- if [ "${firstcommandname}" != "INSTALL" ]; then
- fn_print_dots "Checking remote build: ${remotelocation}"
- # Checks if remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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_compare() {
- fn_print_dots "Checking for update: ${remotelocation}"
- if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then
- if [ "${forceupdate}" == "1" ]; then
- # forceupdate bypasses checks, useful for small build changes
- mtaupdatestatus="forced"
- else
- mtaupdatestatus="available"
- fi
- 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}${remotebuildversion}${default}"
- if [ -n "${branch}" ]; then
- echo -e "* Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- echo -en "\n"
- fn_script_log_info "Update available"
- fn_script_log_info "Local build: ${localbuild}"
- fn_script_log_info "Remote build: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- fn_script_log_info "${localbuild} > ${remotebuildversion}"
-
- if [ "${commandname}" == "UPDATE" ]; then
- unset updateonstart
- check_status.sh
- # If server stopped.
- if [ "${status}" == "0" ]; then
- fn_update_dl
- if [ "${localbuild}" == "0" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- exitbypass=1
- sleep 5
- command_stop.sh
- fn_firstcommand_reset
- fi
- # If server started.
- else
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- exitbypass=1
- fn_update_dl
- 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}${remotebuildversion}${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: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- fi
-}
-
-# The location where the builds are checked and downloaded.
-remotelocation="linux.mtasa.com"
-
-if [ "${firstcommandname}" == "INSTALL" ]; then
- fn_update_remotebuild
- fn_update_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_localbuild
- fn_update_remotebuild
- fn_update_compare
-fi
diff --git a/lgsm/functions/update_papermc.sh b/lgsm/functions/update_papermc.sh
deleted file mode 100644
index 102ef6570..000000000
--- a/lgsm/functions/update_papermc.sh
+++ /dev/null
@@ -1,194 +0,0 @@
-#!/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.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_update_dl() {
- # Download and extract files to serverfiles.
- fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "chmodx" "norun" "force" "${remotebuildhash}"
- cp -f "${tmpdir}/${remotebuildfilename}" "${serverfiles}/${executable#./}"
- echo "${remotebuildversion}" > "${serverfiles}/build.txt"
-}
-
-fn_update_localbuild() {
- # Gets local build info.
- fn_print_dots "Checking local build: ${remotelocation}"
- # Uses build file to get local build.
- localbuild=$(head -n 1 "${serverfiles}/build.txt" 2> /dev/null)
- if [ -z "${localbuild}" ]; then
- fn_print_error "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_error "Missing local build info"
- fn_script_log_error "Set localbuild to 0"
- localbuild="0"
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_remotebuild() {
- # Get remote build info.
- apiurl="https://papermc.io/api/v2/projects"
- # Get list of projects.
- remotebuildresponse=$(curl -s "${apiurl}")
- # Get list of Minecraft versions for project.
- remotebuildresponseproject=$(curl -s "${apiurl}/${paperproject}")
- # Get latest Minecraft: Java Edition version or user specified version.
- if [ "${mcversion}" == "latest" ]; then
- remotebuildmcversion=$(echo "${remotebuildresponseproject}" | jq -r '.versions[-1]')
- else
- # Checks if user specified version exists.
- remotebuildmcversion=$(echo "${remotebuildresponseproject}" | jq -r -e --arg mcversion "${mcversion}" '.versions[]|select(. == $mcversion)')
- if [ -z "${remotebuildmcversion}" ]; 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
- # Get list of paper builds for specific Minecraft: Java Edition version.
- remotebuildresponsemcversion=$(curl -s "${apiurl}/paper/versions/${remotebuildmcversion}")
- # Get latest paper build for specific Minecraft: Java Edition version.
- remotebuildpaperversion=$(echo "${remotebuildresponsemcversion}" | jq -r '.builds[-1]')
- # Get various info about the paper build.
- remotebuildresponseversion=$(curl -s "${apiurl}/${paperproject}/versions/${remotebuildmcversion}/builds/${remotebuildpaperversion}")
- remotebuildfilename=$(echo "${remotebuildresponseversion}" | jq -r '.downloads.application.name')
- remotebuildhash=$(echo "${remotebuildresponseversion}" | jq -r '.downloads.application.sha256')
- remotebuildurl="${apiurl}/${paperproject}/versions/${remotebuildmcversion}/builds/${remotebuildpaperversion}/downloads/${remotebuildfilename}"
- # Combines Minecraft: Java Edition version and paper build. e.g 1.16.5-456
- remotebuildversion="${remotebuildmcversion}-${remotebuildpaperversion}"
-
- if [ "${firstcommandname}" != "INSTALL" ]; then
- fn_print_dots "Checking remote build: ${remotelocation}"
- # Checks if remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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_compare() {
- fn_print_dots "Checking for update: ${remotelocation}"
- if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${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}${remotebuildversion}${default}"
- if [ -n "${branch}" ]; then
- echo -e "* Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- echo -en "\n"
- fn_script_log_info "Update available"
- fn_script_log_info "Local build: ${localbuild}"
- fn_script_log_info "Remote build: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- fn_script_log_info "${localbuild} > ${remotebuildversion}"
-
- if [ "${commandname}" == "UPDATE" ]; then
- unset updateonstart
- check_status.sh
- # If server stopped.
- if [ "${status}" == "0" ]; then
- fn_update_dl
- if [ "${localbuild}" == "0" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- exitbypass=1
- sleep 5
- command_stop.sh
- fn_firstcommand_reset
- fi
- # If server started.
- else
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- exitbypass=1
- fn_update_dl
- 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}${remotebuildversion}${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: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- fi
-}
-
-# The location where the builds are checked and downloaded.
-remotelocation="papermc.io"
-
-if [ "${shortname}" == "pmc" ]; then
- paperproject="paper"
-elif [ "${shortname}" == "vpmc" ]; then
- paperproject="velocity"
-elif [ "${shortname}" == "wmc" ]; then
- paperproject="waterfall"
-fi
-
-if [ "${firstcommandname}" == "INSTALL" ]; then
- fn_update_remotebuild
- fn_update_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_localbuild
- fn_update_remotebuild
- fn_update_compare
-fi
diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh
deleted file mode 100644
index 85bacb899..000000000
--- a/lgsm/functions/update_steamcmd.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-# LinuxGSM update_steamcmd.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Handles updating using SteamCMD.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-# init steamcmd functions
-core_steamcmd.sh
-
-# The location where the builds are checked and downloaded.
-remotelocation="SteamCMD"
-check.sh
-
-fn_print_dots "${remotelocation}"
-
-if [ "${forceupdate}" == "1" ]; then
- # forceupdate bypasses update checks.
- if [ "${status}" != "0" ]; then
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- fn_dl_steamcmd
- date +%s > "${lockdir}/lastupdate.lock"
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- else
- fn_dl_steamcmd
- date +%s > "${lockdir}/lastupdate.lock"
- fi
-else
- fn_update_steamcmd_localbuild
- fn_update_steamcmd_remotebuild
- fn_update_steamcmd_compare
-fi
diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh
deleted file mode 100644
index 0f5327de2..000000000
--- a/lgsm/functions/update_ts3.sh
+++ /dev/null
@@ -1,181 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_ts3.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Handles updating of Teamspeak 3 servers.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_update_dl() {
- # Download and extract files to serverfiles.
- fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "${remotebuildhash}"
- fn_dl_extract "${tmpdir}" "${remotebuildfilename}" "${serverfiles}" "teamspeak3-server_linux_${ts3arch}"
- fn_clear_tmp
-}
-
-fn_update_localbuild() {
- # Gets local build info.
- fn_print_dots "Checking local build: ${remotelocation}"
- # Uses log file to get local build.
- localbuild=$(grep -Eo "TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" "$(find ./* -name "ts3server*_0.log" 2> /dev/null | sort | tail -1)" | grep -Eo "((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" | tail -1)
- if [ -z "${localbuild}" ]; then
- fn_print_error "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_error "Missing local build info"
- fn_script_log_error "Set localbuild to 0"
- localbuild="0"
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_remotebuild() {
- # Get remote build info.
- apiurl="https://www.teamspeak.com/versions/server.json"
- remotebuildresponse=$(curl -s "${apiurl}")
-
- if [ "${ts3arch}" == "amd64" ]; then
- remotebuildurl=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86_64.mirrors."teamspeak.com"')
- remotebuildhash=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86_64.checksum')
- elif [ "${ts3arch}" == "x86" ]; then
- remotebuildurl=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86.mirrors."teamspeak.com"')
- remotebuildhash=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86.checksum')
- fi
- remotebuildfilename=$(basename "${remotebuildurl}")
- remotebuildversion=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86_64.version')
-
- if [ "${firstcommandname}" != "INSTALL" ]; then
- fn_print_dots "Checking remote build: ${remotelocation}"
- # Checks if remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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_compare() {
- fn_print_dots "Checking for update: ${remotelocation}"
- if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${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}${remotebuildversion}${default}"
- if [ -n "${branch}" ]; then
- echo -e "* Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- echo -en "\n"
- fn_script_log_info "Update available"
- fn_script_log_info "Local build: ${localbuild}"
- fn_script_log_info "Remote build: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- fn_script_log_info "${localbuild} > ${remotebuildversion}"
-
- if [ "${commandname}" == "UPDATE" ]; then
- unset updateonstart
- check_status.sh
- # If server stopped.
- if [ "${status}" == "0" ]; then
- fn_update_dl
- if [ "${localbuild}" == "0" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- exitbypass=1
- sleep 5
- command_stop.sh
- fn_firstcommand_reset
- fi
- # If server started.
- else
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- exitbypass=1
- fn_update_dl
- 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}${remotebuildversion}${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: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- fi
-}
-
-# Game server architecture.
-info_distro.sh
-if [ "${arch}" == "x86_64" ]; then
- ts3arch="amd64"
-elif [ "${arch}" == "i386" ] || [ "${arch}" == "i686" ]; then
- ts3arch="x86"
-else
- fn_print_failure "Unknown or unsupported architecture: ${arch}"
- fn_script_log_fatal "Unknown or unsupported architecture: ${arch}"
- core_exit.sh
-fi
-
-# The location where the builds are checked and downloaded.
-remotelocation="teamspeak.com"
-
-if [ "${firstcommandname}" == "INSTALL" ]; then
- fn_update_remotebuild
- fn_update_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_localbuild
- fn_update_remotebuild
- fn_update_compare
-fi
diff --git a/lgsm/functions/update_ut99.sh b/lgsm/functions/update_ut99.sh
deleted file mode 100644
index 045b29dbe..000000000
--- a/lgsm/functions/update_ut99.sh
+++ /dev/null
@@ -1,163 +0,0 @@
-#!/bin/bash
-# LinuxGSM command_ut99.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Handles updating of Unreal Tournament 99 servers.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_update_dl() {
- # Download and extract files to serverfiles.
- fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "nohash"
- fn_dl_extract "${tmpdir}" "${remotebuildfilename}" "${serverfiles}"
- echo "${remotebuildversion}" > "${serverfiles}/build.txt"
- fn_clear_tmp
-}
-
-fn_update_localbuild() {
- # Gets local build info.
- fn_print_dots "Checking local build: ${remotelocation}"
- # Uses build file to get local build.
- localbuild=$(head -n 1 "${serverfiles}/build.txt" 2> /dev/null)
- if [ -z "${localbuild}" ]; then
- fn_print_error "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_error "Missing local build info"
- fn_script_log_error "Set localbuild to 0"
- localbuild="0"
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_remotebuild() {
- # Get remote build info.
- apiurl="https://api.github.com/repos/OldUnreal/UnrealTournamentPatches/releases/latest"
- remotebuildresponse=$(curl -s "${apiurl}")
- remotebuildfilename=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("Linux-amd64")) | .name')
- remotebuildurl=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("Linux-amd64")) | .browser_download_url')
- remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.tag_name')
-
- if [ "${firstcommandname}" != "INSTALL" ]; then
- fn_print_dots "Checking remote build: ${remotelocation}"
- # Checks if remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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_compare() {
- fn_print_dots "Checking for update: ${remotelocation}"
- if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${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}${remotebuildversion}${default}"
- if [ -n "${branch}" ]; then
- echo -e "* Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- echo -en "\n"
- fn_script_log_info "Update available"
- fn_script_log_info "Local build: ${localbuild}"
- fn_script_log_info "Remote build: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- fn_script_log_info "${localbuild} > ${remotebuildversion}"
-
- if [ "${commandname}" == "UPDATE" ]; then
- unset updateonstart
- check_status.sh
- # If server stopped.
- if [ "${status}" == "0" ]; then
- fn_update_dl
- if [ "${localbuild}" == "0" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- exitbypass=1
- sleep 5
- command_stop.sh
- fn_firstcommand_reset
- fi
- # If server started.
- else
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- exitbypass=1
- fn_update_dl
- 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}${remotebuildversion}${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: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- fi
-}
-
-# The location where the builds are checked and downloaded.
-remotelocation="github.com"
-
-if [ "${firstcommandname}" == "INSTALL" ]; then
- fn_update_remotebuild
- fn_update_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_localbuild
- fn_update_remotebuild
- fn_update_compare
-fi
diff --git a/lgsm/functions/update_vintagestory.sh b/lgsm/functions/update_vintagestory.sh
deleted file mode 100644
index 7307a4b77..000000000
--- a/lgsm/functions/update_vintagestory.sh
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/bin/bash
-# LinuxGSM update_vintagestory.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Handles updating of Vintage Story servers.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-fn_update_dl() {
- # Download and extract files to serverfiles.
- fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "${remotebuildhash}"
- fn_dl_extract "${tmpdir}" "${remotebuildfilename}" "${serverfiles}"
- fn_clear_tmp
-}
-
-fn_update_localbuild() {
- # Gets local build info.
- fn_print_dots "Checking local build: ${remotelocation}"
- # Uses executable to get local build.
- if [ -d "${executabledir}" ]; then
- cd "${executabledir}" || exit
- localbuild="$(${preexecutable} ${executable} --version | sed '/^[[:space:]]*$/d')"
- fi
- if [ -z "${localbuild}" ]; then
- fn_print_error "Checking local build: ${remotelocation}: missing local build info"
- fn_script_log_error "Missing local build info"
- fn_script_log_error "Set localbuild to 0"
- localbuild="0"
- else
- fn_print_ok "Checking local build: ${remotelocation}"
- fn_script_log_pass "Checking local build"
- fi
-}
-
-fn_update_remotebuild() {
- # Get remote build info.
- apiurl="http://api.vintagestory.at/stable-unstable.json"
- remotebuildresponse=$(curl -s "${apiurl}")
- if [ "${branch}" == "stable" ]; then
- remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '[ to_entries[] ] | .[].key' | grep -Ev "\-rc|\-pre" | sort -r -V | head -1)
- else
- remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '[ to_entries[] ] | .[].key' | grep -E "\-rc|\-pre" | sort -r -V | head -1)
- fi
- remotebuildfilename=$(echo "${remotebuildresponse}" | jq --arg remotebuildversion "${remotebuildversion}" -r '.[$remotebuildversion].server.filename')
- remotebuildurl=$(echo "${remotebuildresponse}" | jq --arg remotebuildversion "${remotebuildversion}" -r '.[$remotebuildversion].server.urls.cdn')
- remotebuildhash=$(echo "${remotebuildresponse}" | jq --arg remotebuildversion "${remotebuildversion}" -r '.[$remotebuildversion].server.md5')
-
- if [ "${firstcommandname}" != "INSTALL" ]; then
- fn_print_dots "Checking remote build: ${remotelocation}"
- # Checks if remotebuildversion variable has been set.
- if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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 "${remotebuildversion}" ] || [ "${remotebuildversion}" == "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_compare() {
- fn_print_dots "Checking for update: ${remotelocation}"
- if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${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}${remotebuildversion}${default}"
- if [ -n "${branch}" ]; then
- echo -e "* Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- echo -en "\n"
- fn_script_log_info "Update available"
- fn_script_log_info "Local build: ${localbuild}"
- fn_script_log_info "Remote build: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- fn_script_log_info "${localbuild} > ${remotebuildversion}"
-
- if [ "${commandname}" == "UPDATE" ]; then
- unset updateonstart
- check_status.sh
- # If server stopped.
- if [ "${status}" == "0" ]; then
- fn_update_dl
- if [ "${localbuild}" == "0" ]; then
- exitbypass=1
- command_start.sh
- fn_firstcommand_reset
- exitbypass=1
- sleep 5
- command_stop.sh
- fn_firstcommand_reset
- fi
- # If server started.
- else
- fn_print_restart_warning
- exitbypass=1
- command_stop.sh
- fn_firstcommand_reset
- exitbypass=1
- fn_update_dl
- 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}${remotebuildversion}${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: ${remotebuildversion}"
- if [ -n "${branch}" ]; then
- fn_script_log_info "Branch: ${branch}"
- fi
- if [ -f "${rootdir}/.dev-debug" ]; then
- echo -e "Remote build info"
- echo -e "* apiurl: ${apiurl}"
- echo -e "* remotebuildfilename: ${remotebuildfilename}"
- echo -e "* remotebuildurl: ${remotebuildurl}"
- echo -e "* remotebuildversion: ${remotebuildversion}"
- fi
- fi
-}
-
-# The location where the builds are checked and downloaded.
-remotelocation="vintagestory.at"
-
-if [ "${firstcommandname}" == "INSTALL" ]; then
- fn_update_remotebuild
- fn_update_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_localbuild
- fn_update_remotebuild
- fn_update_compare
-fi
diff --git a/lgsm/modules/alert.sh b/lgsm/modules/alert.sh
index b8b668ef4..40288d234 100644
--- a/lgsm/modules/alert.sh
+++ b/lgsm/modules/alert.sh
@@ -18,105 +18,226 @@ fn_alert_log() {
fi
{
- fn_info_message_head
- fn_info_message_distro
- fn_info_message_server_resource
- fn_info_message_gameserver_resource
- fn_info_message_gameserver
+ fn_info_messages_head
+ fn_info_messages_distro
+ fn_info_messages_server_resource
+ fn_info_messages_gameserver_resource
+ fn_info_messages_gameserver
fn_info_logs
} | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | tee -a "${alertlog}" > /dev/null 2>&1
}
fn_alert_test() {
- fn_script_log_info "Sending test alert"
- alertsubject="Alert - ${selfname} - Test"
+ fn_script_log_info "Sending alert: Testing LinuxGSM Alert. No action to be taken"
+ alertaction="Tested"
alertemoji="🚧"
alertsound="1"
- alerturl="not enabled"
- alertbody="Testing LinuxGSM Alert. No action to be taken."
+ alertmessage="Testing ${selfname} LinuxGSM Alert. No action to be taken."
+ # Green
+ alertcolourhex="#cdcd00"
+ alertcolourdec="13487360"
}
-fn_alert_restart() {
- fn_script_log_info "Sending alert: Restarted: ${executable} not running"
- alertsubject="Alert - ${selfname} - Restarted"
+# Running command manually
+fn_alert_stopped() {
+ fn_script_log_info "Sending alert: ${selfname} has stopped"
+ alertaction="Stopped"
+ alertemoji="❌"
+ alertsound="1"
+ alertmessage="${selfname} has been stopped."
+ # Red
+ alertcolourhex="#cd0000"
+ alertcolourdec="13434880"
+}
+
+fn_alert_started() {
+ fn_script_log_info "Sending alert: ${selfname} has started"
+ alertaction="Started"
+ alertemoji="✔️"
+ alertsound="1"
+ alertmessage="${selfname} has been started."
+ # Green
+ alertcolourhex="#00cd00"
+ alertcolourdec="52480"
+}
+
+fn_alert_restarted() {
+ fn_script_log_info "Sending alert: ${selfname} has restarted"
+ alertaction="Restarted"
+ alertemoji="🗘"
+ alertsound="1"
+ alertmessage="${selfname} has been restarted."
+ # Green
+ alertcolourhex="#00cd00"
+ alertcolourdec="52480"
+}
+
+# Failed monitor checks
+fn_alert_monitor_session() {
+ fn_script_log_info "Sending alert: ${selfname} is not running. Game server has been restarted"
+ alertaction="Restarted"
alertemoji="🚨"
alertsound="2"
- alerturl="not enabled"
- alertbody="${selfname} ${executable} not running"
+ alertmessage="${selfname} is not running. Game server has been restarted."
+ # Red
+ alertcolourhex="#cd0000"
+ alertcolourdec="13434880"
}
-fn_alert_restart_query() {
- fn_script_log_info "Sending alert: Restarted: ${selfname}"
- alertsubject="Alert - ${selfname} - Restarted"
+fn_alert_monitor_query() {
+ fn_script_log_info "Sending alert: Unable to query ${selfname}. Game server has been restarted"
+ alertaction="Restarted"
alertemoji="🚨"
alertsound="2"
- alerturl="not enabled"
- alertbody="Unable to query: ${selfname}"
+ alertmessage="Unable to query ${selfname}. Game server has been restarted."
+ # Red
+ alertcolourhex="#cd0000"
+ alertcolourdec="13434880"
}
+# Update alerts
fn_alert_update() {
- fn_script_log_info "Sending alert: Updated"
- alertsubject="Alert - ${selfname} - Updated"
- alertemoji="🎮"
+ fn_script_log_info "Sending alert: ${selfname} has received a game server update: ${localbuild}"
+ alertaction="Updated"
+ alertemoji="🎉"
+ alertsound="1"
+ alertmessage="${selfname} has received a game server update: ${localbuild}."
+ # Green
+ alertcolourhex="#00cd00"
+ alertcolourdec="52480"
+}
+
+fn_alert_update_request() {
+ fn_script_log_info "Sending alert: ${selfname} has requested an update and needs to be restarted."
+ alertaction="Updating"
+ alertemoji="🎉"
alertsound="1"
- alerturl="not enabled"
- alertbody="${gamename} received update: ${remotebuildversion}"
+ alertmessage="${selfname} has requested an update and needs to be restarted."
+ # Blue
+ alertcolourhex="#1e90ff"
+ alertcolourdec="2003199"
}
fn_alert_check_update() {
- fn_script_log_info "Sending alert: Update available"
- alertsubject="Alert - ${selfname} - Update available"
- alertemoji="🎮"
+ fn_script_log_info "Sending alert: ${gamename} update available: ${remotebuildversion}"
+ alertaction="Update available"
+ alertemoji="🎉"
alertsound="1"
- alerturl="not enabled"
- alertbody="${gamename} update available: ${remotebuildversion}"
+ alertmessage="${gamename} update available: ${remotebuildversion}"
+ # Blue
+ alertcolourhex="#1e90ff"
+ alertcolourdec="2003199"
}
-fn_alert_update_restart() {
- fn_script_log_info "Sending alert: Restarted"
- alertsubject="Alert - ${selfname} - Restarted"
- alertemoji="🎮"
+fn_alert_update_linuxgsm() {
+ fn_script_log_info "Sending alert: ${selfname} has received an LinuxGSM update"
+ alertaction="Updated"
+ alertemoji="🎉"
alertsound="1"
- alerturl="not enabled"
- alertbody="${gamename} received update: ${remotebuildversion} and required restarting"
+ alertbody="${gamename} update available"
+ alertmessage="${selfname} has received an LinuxGSM update and been restarted."
+ # Green
+ alertcolourhex="#00cd00"
+ alertcolourdec="52480"
+}
+
+fn_alert_backup() {
+ fn_script_log_info "Sending alert: ${selfname} has been backed up"
+ alertaction="Backed Up"
+ alertemoji="📂"
+ alertsound="1"
+ alertmessage="${selfname} has been backed up."
+ # Green
+ alertcolourhex="#00cd00"
+ alertcolourdec="52480"
}
fn_alert_permissions() {
- fn_script_log_info "Sending alert: Permissions error"
- alertsubject="Alert - ${selfname}: Permissions error"
+ fn_script_log_info "Sending alert: ${selfname} has permissions issues"
+ alertaction="Checked Permissions"
alertemoji="❗"
alertsound="2"
- alerturl="not enabled"
- alertbody="${selfname} has permissions issues"
+ alertmessage="${selfname} has permissions issues."
+ # Red
+ alertcolourhex="#cd0000"
+ alertcolourdec="13434880"
}
fn_alert_config() {
- fn_script_log_info "Sending alert: New _default.cfg"
- alertsubject="Alert - ${selfname} - New _default.cfg"
- alertemoji="🎮"
+ fn_script_log_info "Sending alert: ${selfname} has received a new _default.cfg"
+ alertaction="Updated _default.cfg"
+ alertemoji="🎉"
+ alertsound="1"
+ alertmessage="${selfname} has received a new _default.cfg."
+ # Blue
+ alertcolourhex="#1e90ff"
+ alertcolourdec="2003199"
+}
+
+fn_alert_wipe() {
+ fn_script_log_info "Sending alert: ${selfname} has been wiped"
+ alertaction="Wiped"
+ alertemoji="🧹"
alertsound="1"
- alerturl="not enabled"
- alertbody="${selfname} has received a new _default.cfg. Check file for changes."
+ alertmessage="${selfname} has been wiped."
+ # Green
+ alertcolourhex="#00cd00"
+ alertcolourdec="52480"
}
+fn_alert_info() {
+ fn_script_log_info "Sending alert: ${selfname} info"
+ alerttitle="LinuxGSM Alert - ${selfname} - Info"
+ alertaction="Queried"
+ alertemoji="📄"
+ alertsound="1"
+ alertmessage="${selfname} info."
+ # Blue
+ alertcolourhex="#1e90ff"
+ alertcolourdec="2003199"
+}
+
+# Images
+alerticon="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/gameicons/${shortname}-icon.png"
+
if [ "${alert}" == "permissions" ]; then
fn_alert_permissions
-elif [ "${alert}" == "restart" ]; then
- fn_alert_restart
-elif [ "${alert}" == "restartquery" ]; then
- fn_alert_restart_query
+elif [ "${alert}" == "monitor-session" ]; then
+ fn_alert_monitor_session
+elif [ "${alert}" == "monitor-query" ]; then
+ fn_alert_monitor_query
elif [ "${alert}" == "test" ]; then
fn_alert_test
elif [ "${alert}" == "update" ]; then
fn_alert_update
+elif [ "${alert}" == "update-request" ]; then
+ fn_alert_update_request
elif [ "${alert}" == "check-update" ]; then
fn_alert_check_update
-elif [ "${alert}" == "update-restart" ]; then
- fn_alert_update_restart
elif [ "${alert}" == "config" ]; then
fn_alert_config
+elif [ "${alert}" == "wipe" ]; then
+ fn_alert_wipe
+elif [ "${alert}" == "info" ]; then
+ fn_alert_info
+elif [ "${alert}" == "started" ]; then
+ fn_alert_started
+elif [ "${alert}" == "stopped" ]; then
+ fn_alert_stopped
+elif [ "${alert}" == "restarted" ]; then
+ fn_alert_restarted
+elif [ "${alert}" == "update-linuxgsm" ]; then
+ fn_alert_update_linuxgsm
+elif [ "${alert}" == "backup" ]; then
+ fn_alert_backup
+else
+ fn_print_fail_nl "Missing alert type"
+ fn_script_log_fail "Missing alert type"
+ core_exit.sh
fi
+alerttitle="${alertemoji} ${alertaction} - ${servername} ${alertemoji}"
+
# Generate alert log.
fn_alert_log
@@ -220,7 +341,7 @@ if [ "${rocketchatalert}" == "on" ] && [ -n "${rocketchatalert}" ]; then
elif [ "${rocketchatalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "Rocketchat alerts not enabled"
fn_script_log_warn "Rocketchat alerts not enabled"
-elif [ -z "${rocketchattoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
+elif [ -z "${rocketchatwebhook}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Rocketchat token not set"
#echo -e "* https://docs.linuxgsm.com/alerts/slack"
fn_script_error "Rocketchat token not set"
diff --git a/lgsm/modules/alert_discord.sh b/lgsm/modules/alert_discord.sh
index f3a79416a..2b2ecf21b 100644
--- a/lgsm/modules/alert_discord.sh
+++ b/lgsm/modules/alert_discord.sh
@@ -7,48 +7,147 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-json=$(
+jsoninfo=$(
cat << EOF
{
- "username":"LinuxGSM",
- "avatar_url":"https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
- "file":"content",
- "embeds": [{
- "color": "2067276",
- "author": {
- "name": "${alertemoji} ${alertsubject} ${alertemoji}",
- "icon_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg"
- },
- "title": "${servername}",
- "description": "${alertbody} \n More info: ${alerturl}",
- "url": "",
- "type": "content",
- "thumbnail": {},
- "fields": [
- {
- "name": "Game",
- "value": "${gamename}",
- "inline": true
- },
- {
- "name": "Server IP",
- "value": "[${alertip}:${port}](https://www.gametracker.com/server_info/${alertip}:${port})",
- "inline": true
- },
- {
- "name": "Hostname",
- "value": "${HOSTNAME}",
- "inline": true
- }
- ]
- }]
+ "username": "LinuxGSM",
+ "avatar_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
+ "file": "content",
+ "embeds": [
+ {
+ "author": {
+ "name": "LinuxGSM Alert",
+ "url": "",
+ "icon_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg"
+ },
+ "title": "${alerttitle}",
+ "url": "",
+ "description": "",
+ "color": "${alertcolourdec}",
+ "type": "content",
+ "thumbnail": {
+ "url": "${alerticon}"
+ },
+ "fields": [
+ {
+ "name": "Server Name",
+ "value": "${servername}"
+ },
+ {
+ "name": "Information",
+ "value": "${alertmessage}"
+ },
+ {
+ "name": "Game",
+ "value": "${gamename}",
+ "inline": true
+ },
+ {
+ "name": "Server IP",
+ "value": "\`${alertip}:${port}\`",
+ "inline": true
+ },
+ {
+ "name": "Hostname",
+ "value": "${HOSTNAME}",
+ "inline": true
+ },
+ {
+ "name": "More info",
+ "value": "${alerturl}",
+ "inline": true
+ },
+ {
+ "name": "Server Time",
+ "value": "$(date)",
+ "inline": true
+ }
+ ],
+ "footer": {
+ "icon_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
+ "text": "Sent by LinuxGSM ${version}"
+ }
+ }
+ ]
+}
+EOF
+)
+
+jsonnoinfo=$(
+ cat << EOF
+{
+ "username": "LinuxGSM",
+ "avatar_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
+ "file": "content",
+ "embeds": [
+ {
+ "author": {
+ "name": "LinuxGSM Alert",
+ "url": "",
+ "icon_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg"
+ },
+ "title": "${alerttitle}",
+ "url": "",
+ "description": "",
+ "color": "${alertcolourdec}",
+ "type": "content",
+ "thumbnail": {
+ "url": "${alerticon}"
+ },
+ "fields": [
+ {
+ "name": "Server Name",
+ "value": "${servername}"
+ },
+ {
+ "name": "Information",
+ "value": "${alertmessage}"
+ },
+ {
+ "name": "Game",
+ "value": "${gamename}",
+ "inline": true
+ },
+ {
+ "name": "Server IP",
+ "value": "\`${alertip}:${port}\`",
+ "inline": true
+ },
+ {
+ "name": "Hostname",
+ "value": "${HOSTNAME}",
+ "inline": true
+ },
+ {
+ "name": "Is my Game Server Online?",
+ "value": "https://ismygameserver.online/${querytype}/${alertip}:${queryport}",
+ "inline": true
+ },
+ {
+ "name": "Server Time",
+ "value": "$(date)",
+ "inline": true
+ }
+ ],
+ "footer": {
+ "icon_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
+ "text": "Sent by LinuxGSM ${version}"
+ }
+ }
+ ]
}
EOF
)
fn_print_dots "Sending Discord alert"
-discordsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${discordwebhook}")
+if [ -z "${alerturl}" ]; then
+ json="${jsonnoinfo}"
+else
+ json="${jsoninfo}"
+fi
+
+discordsend=$(curl --connect-timeout 3 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${discordwebhook}")
if [ -n "${discordsend}" ]; then
fn_print_fail_nl "Sending Discord alert: ${discordsend}"
diff --git a/lgsm/modules/alert_email.sh b/lgsm/modules/alert_email.sh
index 0aca09fef..6833d9670 100644
--- a/lgsm/modules/alert_email.sh
+++ b/lgsm/modules/alert_email.sh
@@ -10,9 +10,9 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_dots "Sending Email alert: ${email}"
if [ -n "${emailfrom}" ]; then
- mail -s "${alertsubject}" -r "${emailfrom}" "${email}" < "${alertlog}"
+ mail -s "${alerttitle}" -r "${emailfrom}" "${email}" < "${alertlog}"
else
- mail -s "${alertsubject}" "${email}" < "${alertlog}"
+ mail -s "${alerttitle}" "${email}" < "${alertlog}"
fi
exitcode=$?
if [ "${exitcode}" == "0" ]; then
diff --git a/lgsm/modules/alert_gotify.sh b/lgsm/modules/alert_gotify.sh
index 27e4d3439..8f1d31e91 100644
--- a/lgsm/modules/alert_gotify.sh
+++ b/lgsm/modules/alert_gotify.sh
@@ -7,19 +7,34 @@
module_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-json=$(
+jsoninfo=$(
cat << EOF
{
- "title": "${alertemoji} ${alertsubject} ${alertemoji}",
- "message": "Server name\n${servername}\n\nMessage\n${alertbody}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}",
+ "title": "${alerttitle}",
+ "message": "Server Name\n${servername}\n\nInformation\n${alertmessage}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}\n\nServer Time\n$(date)",
"priority": 5
}
EOF
)
-fn_print_dots "Sending Gotify alert"
+jsonnoinfo=$(
+ cat << EOF
+{
+ "title": "${alerttitle}",
+ "message": "Server Name\n${servername}\n\nInformation\n${alertmessage}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nServer Time\n$(date)",
+ "priority": 5
+}
+EOF
+)
-gotifysend=$(curl --connect-timeout 10 -sSL "${gotifywebhook}/message"?token="${gotifytoken}" -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)")
+if [ -z "${alerturl}" ]; then
+ json="${jsonnoinfo}"
+else
+ json="${jsoninfo}"
+fi
+
+fn_print_dots "Sending Gotify alert"
+gotifysend=$(curl --connect-timeout 3 -sSL "${gotifywebhook}/message"?token="${gotifytoken}" -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)")
if [ -n "${gotifysend}" ]; then
fn_print_ok_nl "Sending Gotify alert"
diff --git a/lgsm/modules/alert_ifttt.sh b/lgsm/modules/alert_ifttt.sh
index c1ccfc9cb..cbd740ec5 100644
--- a/lgsm/modules/alert_ifttt.sh
+++ b/lgsm/modules/alert_ifttt.sh
@@ -7,18 +7,34 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-json=$(
+jsoninfo=$(
cat << EOF
{
"value1": "${selfname}",
- "value2": "${alertemoji} ${alertsubject} ${alertemoji}",
- "value3": "Message: \n${alertbody}\n\nGame: \n${gamename}\n\nServer name: \n${servername}\n\nHostname: \n${HOSTNAME}\n\nServer IP: \n${alertip}:${port}\n\nMore info: \n${alerturl}"
+ "value2": "${alerttitle}",
+ "value3": "Server Name\n${servername}\n\nInformation\n${alertmessage}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}\n\nServer Time\n$(date)"
}
EOF
)
+jsonnoinfo=$(
+ cat << EOF
+{
+ "value1": "${selfname}",
+ "value2": "${alerttitle}",
+ "value3": "Server Name\n${servername}\n\nInformation\n${alertmessage}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nServer Time\n$(date)"
+}
+EOF
+)
+
+if [ -z "${alerturl}" ]; then
+ json="${jsonnoinfo}"
+else
+ json="${jsoninfo}"
+fi
+
fn_print_dots "Sending IFTTT alert"
-iftttsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "https://maker.ifttt.com/trigger/${iftttevent}/with/key/${ifttttoken}" | grep "Bad Request")
+iftttsend=$(curl --connect-timeout 3 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "https://maker.ifttt.com/trigger/${iftttevent}/with/key/${ifttttoken}" | grep "Bad Request")
if [ -n "${iftttsend}" ]; then
fn_print_fail_nl "Sending IFTTT alert: ${pushbulletsend}"
diff --git a/lgsm/modules/alert_pushbullet.sh b/lgsm/modules/alert_pushbullet.sh
index 3bcd6141b..5ed3853f6 100644
--- a/lgsm/modules/alert_pushbullet.sh
+++ b/lgsm/modules/alert_pushbullet.sh
@@ -7,19 +7,36 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-json=$(
+jsoninfo=$(
cat << EOF
{
"channel_tag": "${channeltag}",
"type": "note",
- "title": "${alertemoji} ${alertsubject} ${alertemoji}",
- "body": "Server name\n${servername}\n\nMessage\n${alertbody}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}"
+ "title": "${alerttitle}",
+ "body": "Server Name\n${servername}\n\nInformation\n${alertmessage}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}\n\nServer Time\n$(date)"
}
EOF
)
+jsonnoinfo=$(
+ cat << EOF
+{
+ "channel_tag": "${channeltag}",
+ "type": "note",
+ "title": "${alerttitle}",
+ "body": "Server Name\n${servername}\n\nInformation\n${alertmessage}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nServer Time\n$(date)"
+}
+EOF
+)
+
+if [ -z "${alerturl}" ]; then
+ json="${jsonnoinfo}"
+else
+ json="${jsoninfo}"
+fi
+
fn_print_dots "Sending Pushbullet alert"
-pushbulletsend=$(curl --connect-timeout 10 -sSL -u """${pushbullettoken}"":" -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "https://api.pushbullet.com/v2/pushes" | grep "error_code")
+pushbulletsend=$(curl --connect-timeout 3 -sSL -H "Access-Token: ${pushbullettoken}" -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "https://api.pushbullet.com/v2/pushes" | grep "error_code")
if [ -n "${pushbulletsend}" ]; then
fn_print_fail_nl "Sending Pushbullet alert: ${pushbulletsend}"
diff --git a/lgsm/modules/alert_pushover.sh b/lgsm/modules/alert_pushover.sh
index 35229094a..22180d503 100644
--- a/lgsm/modules/alert_pushover.sh
+++ b/lgsm/modules/alert_pushover.sh
@@ -22,7 +22,11 @@ else
alertpriority="0"
fi
-pushoversend=$(curl --connect-timeout 10 -sS -F token="${pushovertoken}" -F user="${pushoveruserkey}" -F html="1" -F sound="${alertsound}" -F priority="${alertpriority}" -F title="${alertemoji} ${alertsubject} ${alertemoji}" -F message=" Server name
${servername}
Message
${alertbody}
Game
${gamename}
Server IP
${alertip}:${port}
Hostname
${HOSTNAME}
More info
${alerturl}" "https://api.pushover.net/1/messages.json" | grep errors)
+if [ -z "${alerturl}" ]; then
+ pushoversend=$(curl --connect-timeout 3 -sS -F token="${pushovertoken}" -F user="${pushoveruserkey}" -F html="1" -F sound="${alertsound}" -F priority="${alertpriority}" -F title="${alerttitle}" -F message=" Server name
${servername}
Information
${alertmessage}
Game
${gamename}
Server IP
${alertip}:${port}
Hostname
${HOSTNAME}
Server Time
$(date)" "https://api.pushover.net/1/messages.json" | grep errors)
+else
+ pushoversend=$(curl --connect-timeout 3 -sS -F token="${pushovertoken}" -F user="${pushoveruserkey}" -F html="1" -F sound="${alertsound}" -F priority="${alertpriority}" -F title="${alerttitle}" -F message=" Server name
${servername}
Information
${alertmessage}
Game
${gamename}
Server IP
${alertip}:${port}
Hostname
${HOSTNAME}
More info
${alerturl}
Server Time
$(date)" "https://api.pushover.net/1/messages.json" | grep errors)
+fi
if [ -n "${pushoversend}" ]; then
fn_print_fail_nl "Sending Pushover alert: ${pushoversend}"
diff --git a/lgsm/modules/alert_rocketchat.sh b/lgsm/modules/alert_rocketchat.sh
index f6e410ef8..910722804 100644
--- a/lgsm/modules/alert_rocketchat.sh
+++ b/lgsm/modules/alert_rocketchat.sh
@@ -7,28 +7,55 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-json=$(
+jsoninfo=$(
cat << EOF
{
"alias": "LinuxGSM",
- "text": "*${alertemoji} ${alertsubject} ${alertemoji}* \n *${servername}* \n ${alertbody} \n More info: ${alerturl}",
+ "text": "*${alerttitle}*",
"attachments": [
{
+ "title": "",
+ "color": "${alertcolourhex}",
+ "author_name": "LinuxGSM Alert",
+ "author_link": "https://linuxgsm.com",
+ "author_icon": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
+ "thumb_url": "${alerticon}",
+ "text": "",
"fields": [
{
- "short": true,
- "title": "Game:",
+ "short": false,
+ "title": "Server Name",
+ "value": "${servername}"
+ },
+ {
+ "short": false,
+ "title": "Information",
+ "value": "${alertmessage}"
+ },
+ {
+ "short": false,
+ "title": "Game",
"value": "${gamename}"
},
{
- "short": true,
- "title": "Server IP:",
+ "short": false,
+ "title": "Server IP",
"value": "${alertip}:${port}"
},
{
- "short": true,
- "title": "Hostname:",
+ "short": false,
+ "title": "Hostname",
"value": "${HOSTNAME}"
+ },
+ {
+ "short": false,
+ "title": "More info",
+ "value": "${alerturl}"
+ },
+ {
+ "short": false,
+ "title": "Server Time",
+ "value": "$(date)"
}
]
}
@@ -37,9 +64,66 @@ json=$(
EOF
)
-fn_print_dots "Sending Rocketchat alert"
+jsonnoinfo=$(
+ cat << EOF
+{
+ "alias": "LinuxGSM",
+ "text": "*${alerttitle}*",
+ "attachments": [
+ {
+ "title": "",
+ "color": "${alertcolourhex}",
+ "author_name": "LinuxGSM Alert",
+ "author_link": "https://linuxgsm.com",
+ "author_icon": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
+ "thumb_url": "${alerticon}",
+ "text": "",
+ "fields": [
+ {
+ "short": false,
+ "title": "Server Name",
+ "value": "${servername}"
+ },
+ {
+ "short": false,
+ "title": "Information",
+ "value": "${alertmessage}"
+ },
+ {
+ "short": false,
+ "title": "Game",
+ "value": "${gamename}"
+ },
+ {
+ "short": false,
+ "title": "Server IP",
+ "value": "${alertip}:${port}"
+ },
+ {
+ "short": false,
+ "title": "Hostname",
+ "value": "${HOSTNAME}"
+ },
+ {
+ "short": false,
+ "title": "Server Time",
+ "value": "$(date)"
+ }
+ ]
+ }
+ ]
+}
+EOF
+)
-rocketchatsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${rocketchatwebhook}")
+if [ -z "${alerturl}" ]; then
+ json="${jsonnoinfo}"
+else
+ json="${jsoninfo}"
+fi
+
+fn_print_dots "Sending Rocketchat alert"
+rocketchatsend=$(curl --connect-timeout 3 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${rocketchatwebhook}")
if [ -n "${rocketchatsend}" ]; then
fn_print_ok_nl "Sending Rocketchat alert"
diff --git a/lgsm/modules/alert_slack.sh b/lgsm/modules/alert_slack.sh
index f83df9510..b74f98dec 100644
--- a/lgsm/modules/alert_slack.sh
+++ b/lgsm/modules/alert_slack.sh
@@ -7,64 +7,182 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-json=$(
+jsonnoinfo=$(
cat << EOF
{
- "attachments": [
- {
- "color": "#36a64f",
- "blocks": [
- {
- "type": "section",
- "text": {
- "type": "mrkdwn",
- "text": "*LinuxGSM Alert*"
- }
- },
- {
- "type": "section",
- "text": {
- "type": "mrkdwn",
- "text": "*${alertemoji} ${alertsubject}* \n ${alertbody}"
- }
- },
- {
- "type": "divider"
- },
- {
- "type": "section",
- "fields": [
- {
- "type": "mrkdwn",
- "text": "*Game:* \n ${gamename}"
- },
- {
- "type": "mrkdwn",
- "text": "*Server IP:* \n ${alertip}:${port}"
- },
- {
- "type": "mrkdwn",
- "text": "*Server Name:* \n ${servername}"
- }
- ]
- },
- {
- "type": "section",
- "text": {
- "type": "mrkdwn",
- "text": "Hostname: ${HOSTNAME} / More info: ${alerturl}"
- }
- }
- ]
- }
- ]
+ "attachments": [
+ {
+ "color": "${alertcolourhex}",
+ "blocks": [
+ {
+ "type": "header",
+ "text": {
+ "type": "mrkdwn",
+ "text": "${alerttitle}",
+ "emoji": true
+ }
+ },
+ {
+ "type": "divider"
+ },
+ {
+ "type": "section",
+ "text": {
+ "type": "mrkdwn",
+ "text": "*Server Name*\n${servername}"
+ }
+ },
+ {
+ "type": "section",
+ "text": {
+ "type": "mrkdwn",
+ "text": "*Information*\n${alertmessage}"
+ }
+ },
+ {
+ "type": "section",
+ "fields": [
+ {
+ "type": "mrkdwn",
+ "text": "*Game*\n${gamename}"
+ },
+ {
+ "type": "mrkdwn",
+ "text": "*Server IP*\n\`${alertip}:${port}\`"
+ },
+ {
+ "type": "mrkdwn",
+ "text": "*Hostname*\n${HOSTNAME}"
+ },
+ {
+ "type": "mrkdwn",
+ "text": "*Server Time*\n$(date)"
+ }
+ ],
+ "accessory": {
+ "type": "image",
+ "image_url": "${alerticon}",
+ "alt_text": "cute cat"
+ }
+ },
+ {
+ "type": "context",
+ "elements": [
+ {
+ "type": "image",
+ "image_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
+ "alt_text": "LinuxGSM icon"
+ },
+ {
+ "type": "plain_text",
+ "text": "Sent by LinuxGSM ${version}",
+ "emoji": true
+ }
+ ]
+ }
+ ]
+ }
+ ]
}
EOF
)
+jsoninfo=$(
+ cat << EOF
+{
+ "attachments": [
+ {
+ "color": "${alertcolourhex}",
+ "blocks": [
+ {
+ "type": "header",
+ "text": {
+ "type": "mrkdwn",
+ "text": "${alerttitle}",
+ "emoji": true
+ }
+ },
+ {
+ "type": "divider"
+ },
+ {
+ "type": "section",
+ "text": {
+ "type": "mrkdwn",
+ "text": "*Server Name*\n${servername}"
+ }
+ },
+ {
+ "type": "section",
+ "text": {
+ "type": "mrkdwn",
+ "text": "*Information*\n${alertmessage}"
+ }
+ },
+ {
+ "type": "section",
+ "fields": [
+ {
+ "type": "mrkdwn",
+ "text": "*Game*\n${gamename}"
+ },
+ {
+ "type": "mrkdwn",
+ "text": "*Server IP*\n\`${alertip}:${port}\`"
+ },
+ {
+ "type": "mrkdwn",
+ "text": "*Hostname*\n${HOSTNAME}"
+ },
+ {
+ "type": "mrkdwn",
+ "text": "*Server Time*\n$(date)"
+ }
+ ],
+ "accessory": {
+ "type": "image",
+ "image_url": "${alerticon}",
+ "alt_text": "cute cat"
+ }
+ },
+ {
+ "type": "section",
+ "text": {
+ "type": "mrkdwn",
+ "text": "*Server Time*\n${alertmessage}"
+ }
+ },
+ {
+ "type": "context",
+ "elements": [
+ {
+ "type": "image",
+ "image_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg",
+ "alt_text": "LinuxGSM icon"
+ },
+ {
+ "type": "plain_text",
+ "text": "Sent by LinuxGSM ${version}",
+ "emoji": true
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+EOF
+)
+
+if [ -z "${alerturl}" ]; then
+ json="${jsonnoinfo}"
+else
+ json="${jsoninfo}"
+fi
+
fn_print_dots "Sending Slack alert"
-slacksend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${slackwebhook}")
+slacksend=$(curl --connect-timeout 3 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${slackwebhook}")
if [ "${slacksend}" == "ok" ]; then
fn_print_ok_nl "Sending Slack alert"
diff --git a/lgsm/modules/alert_telegram.sh b/lgsm/modules/alert_telegram.sh
index d2e72346a..98e1a980b 100644
--- a/lgsm/modules/alert_telegram.sh
+++ b/lgsm/modules/alert_telegram.sh
@@ -7,19 +7,40 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-json=$(
+jsoninfo=$(
cat << EOF
{
"chat_id": "${telegramchatid}",
+ "message_thread_id": "${telegramthreadid}",
"parse_mode": "HTML",
- "text": "${alertemoji} ${alertsubject} ${alertemoji}\n\nServer name\n${servername}\n\nMessage\n${alertbody}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}",
+ "disable_notification": "${telegramdisablenotification}",
+ "text": "${alerttitle}\n\nServer name\n${servername}\n\nInformation\n${alertmessage}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}\n\nServer Time\n$(date)",
"disable_web_page_preview": "yes"
}
EOF
)
+jsonnoinfo=$(
+ cat << EOF
+{
+ "chat_id": "${telegramchatid}",
+ "message_thread_id": "${telegramthreadid}",
+ "parse_mode": "HTML",
+ "disable_notification": "${telegramdisablenotification}",
+ "text": "${alerttitle}\n\nServer name\n${servername}\n\nInformation\n${alertmessage}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nServer Time\n$(date)",
+ "disable_web_page_preview": "yes"
+}
+EOF
+)
+
+if [ -z "${alerturl}" ]; then
+ json="${jsonnoinfo}"
+else
+ json="${jsoninfo}"
+fi
+
fn_print_dots "Sending Telegram alert"
-telegramsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" ${curlcustomstring} "https://${telegramapi}/bot${telegramtoken}/sendMessage" | grep "error_code")
+telegramsend=$(curl --connect-timeout 3 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" ${curlcustomstring} "https://${telegramapi}/bot${telegramtoken}/sendMessage" | grep "error_code")
if [ -n "${telegramsend}" ]; then
fn_print_fail_nl "Sending Telegram alert: ${telegramsend}"
diff --git a/lgsm/modules/check.sh b/lgsm/modules/check.sh
index 1b8796e47..2a63df3f3 100644
--- a/lgsm/modules/check.sh
+++ b/lgsm/modules/check.sh
@@ -54,7 +54,7 @@ for allowed_command in "${allowed_commands_array[@]}"; do
fi
done
-allowed_commands_array=(DEBUG START)
+allowed_commands_array=(BACKUP DEBUG START)
for allowed_command in "${allowed_commands_array[@]}"; do
if [ "${allowed_command}" == "${commandname}" ]; then
check_deps.sh
@@ -99,3 +99,10 @@ for allowed_command in "${allowed_commands_array[@]}"; do
check_system_requirements.sh
fi
done
+
+allowed_commands_array=(DETAILS MONITOR START STOP UPDATE VALIDATE POST-DETAILS)
+for allowed_command in "${allowed_commands_array[@]}"; do
+ if [ "${allowed_command}" == "${commandname}" ]; then
+ check_gamedig.sh
+ fi
+done
diff --git a/lgsm/modules/check_config.sh b/lgsm/modules/check_config.sh
index 436740afa..d8bfb5008 100644
--- a/lgsm/modules/check_config.sh
+++ b/lgsm/modules/check_config.sh
@@ -8,7 +8,6 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
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!"
@@ -17,13 +16,18 @@ if [ -n "${servercfgfullpath}" ] && [ ! -f "${servercfgfullpath}" ]; then
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"
+ fn_print_warn_nl "Default RCON password detected"
+ fn_script_log_warn "Default RCON password detected"
+elif [ -v httppassword ] && [ "${httppassword}" == "CHANGE_ME" ]; then
+ fn_print_warn_nl "Default Web password detected"
+ fn_script_log_warn "Default Web password detected"
+elif [ -v adminpassword ] && [ "${adminpassword}" == "CHANGE_ME" ]; then
+ fn_print_warn_nl "Default Admin password detected"
+ fn_script_log_warn "Default Admin password detected"
+
fi
if [ "${shortname}" == "vh" ] && [ -z "${serverpassword}" ]; then
diff --git a/lgsm/modules/check_deps.sh b/lgsm/modules/check_deps.sh
index d10948ca5..df5cb9478 100644
--- a/lgsm/modules/check_deps.sh
+++ b/lgsm/modules/check_deps.sh
@@ -25,11 +25,11 @@ fn_install_mono_repo() {
fn_print_information_nl "Automatically adding Mono repository."
fn_script_log_info "Automatically adding Mono repository."
echo -en ".\r"
- sleep 1
+ fn_sleep_time_1
echo -en "..\r"
- sleep 1
+ fn_sleep_time_1
echo -en "...\r"
- sleep 1
+ fn_sleep_time_1
echo -en " \r"
if [ "${distroid}" == "ubuntu" ]; then
if [ "${distroversion}" == "22.04" ]; then
@@ -160,8 +160,8 @@ fn_install_missing_deps() {
fn_print_information_nl "$(whoami) has sudo access."
fn_script_log_info "$(whoami) has sudo access."
else
- fn_print_warning_nl "$(whoami) does not have sudo access. Manually install dependencies."
- fn_script_log_warn "$(whoami) does not have sudo access. Manually install dependencies."
+ fn_print_warning_nl "$(whoami) does not have sudo access. Manually install dependencies or run ./${selfname} install as root."
+ fn_script_log_warn "$(whoami) does not have sudo access. Manually install dependencies or run ./${selfname} install as root."
fi
fi
@@ -177,11 +177,11 @@ fn_install_missing_deps() {
fn_print_information_nl "Automatically installing missing dependencies."
fn_script_log_info "Automatically installing missing dependencies."
echo -en ".\r"
- sleep 1
+ fn_sleep_time_1
echo -en "..\r"
- sleep 1
+ fn_sleep_time_1
echo -en "...\r"
- sleep 1
+ fn_sleep_time_1
echo -en " \r"
if [ "$(command -v apt 2> /dev/null)" ]; then
cmd="echo steamcmd steam/question select \"I AGREE\" | sudo debconf-set-selections; echo steamcmd steam/license note '' | sudo debconf-set-selections; ${i386installcommand}sudo apt-get update; sudo apt-get -y install ${array_deps_missing[*]}"
@@ -204,11 +204,11 @@ fn_install_missing_deps() {
# If automatic dependency install is unavailable.
if [ "${autodepinstall}" != "0" ]; then
if [ "$(command -v apt 2> /dev/null)" ]; then
- echo -e "${i386installcommand}sudo apt update; sudo apt install ${array_deps_missing[*]}"
+ echo -e " Run: '${green}${i386installcommand}sudo apt update; sudo apt install ${array_deps_missing[*]}${default}' as root to install missing dependencies."
elif [ "$(command -v dnf 2> /dev/null)" ]; then
- echo -e "sudo dnf install ${array_deps_missing[*]}"
+ echo -e " Run: '${green}sudo dnf install ${array_deps_missing[*]}${default}' as root to install missing dependencies."
elif [ "$(command -v yum 2> /dev/null)" ]; then
- echo -e "sudo yum install ${array_deps_missing[*]}"
+ echo -e " Run: '${green}sudo yum install ${array_deps_missing[*]}${default}' as root to install missing dependencies."
fi
fi
@@ -252,7 +252,7 @@ fn_deps_detector() {
elif [ "${deptocheck}" == "steamcmd" ] && [ -z "${appid}" ]; then
array_deps_required=("${array_deps_required[@]/steamcmd/}")
steamcmdstatus=1
- elif [ "${deptocheck}" == "steamcmd" ] && [ "${distroid}" == "debian" ] && ! grep -qE "^deb .*non-free" /etc/apt/sources.list; then
+ elif [ "${deptocheck}" == "steamcmd" ] && [ "${distroid}" == "debian" ] && ! grep -qE '[^deb]+non-free([^-]|$)' /etc/apt/sources.list; then
array_deps_required=("${array_deps_required[@]/steamcmd/}")
steamcmdstatus=1
# Java: Added for users using Oracle JRE to bypass check.
@@ -306,14 +306,14 @@ fn_deps_detector() {
missingdep=0
if [ "${commandname}" == "INSTALL" ]; then
echo -e "${green}${deptocheck}${default}"
- sleep 0.1
+ fn_sleep_time
fi
elif [ "${depstatus}" != "0" ]; then
# If dependency is not found.
missingdep=1
if [ "${commandname}" == "INSTALL" ]; then
echo -e "${red}${deptocheck}${default}"
- sleep 0.1
+ fn_sleep_time
fi
# If SteamCMD requirements are not met install will fail.
if [ -n "${appid}" ]; then
@@ -349,8 +349,8 @@ fi
# Will warn user if their distro is no longer supported by the vendor.
if [ -n "${distrosupport}" ]; then
if [ "${distrosupport}" == "unsupported" ]; then
- fn_print_warning_nl "${distroname} is no longer supported by the vendor. Upgrading is recommended."
- fn_script_log_warn "${distroname} is no longer supported by the vendor. Upgrading is recommended."
+ fn_print_warning_nl "${distroname} is no longer supported by the vendor or LinuxGSM. Upgrading is recommended."
+ fn_script_log_warn "${distroname} is no longer supported by the vendor or LinuxGSM. Upgrading is recommended."
fi
fi
diff --git a/lgsm/modules/check_gamedig.sh b/lgsm/modules/check_gamedig.sh
new file mode 100644
index 000000000..8abc0b759
--- /dev/null
+++ b/lgsm/modules/check_gamedig.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+# LinuxGSM check_gamedig.sh module
+# Author: Daniel Gibbs
+# Contributors: http://linuxgsm.com/contrib
+# Website: https://linuxgsm.com
+# Description: Installs nodejs and gamedig
+
+if [ "$(command -v node)" ] && [ "$(node -v | cut -d 'v' -f 2 | cut -d '.' -f 1)" -ge 16 ] && [ ! -f "${lgsmdir}/node_modules/gamedig/bin/gamedig.js" ]; then
+ echo -e ""
+ echo -e "${bold}${lightyellow}Installing Gamedig${default}"
+ fn_script_log_info "Installing Gamedig"
+ cd "${lgsmdir}" || exit
+ curl -L -o package.json "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${githubbranch}/package.json"
+ npm install
+elif [ "$(command -v node)" ] && [ "$(node -v | cut -d 'v' -f 2 | cut -d '.' -f 1)" -ge 16 ]; then
+ cd "${lgsmdir}" || exit
+ curl -s -L -o package.json "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${githubbranch}/package.json"
+ npm update > /dev/null 2>&1
+fi
diff --git a/lgsm/modules/check_glibc.sh b/lgsm/modules/check_glibc.sh
index 25357a461..9da491bce 100644
--- a/lgsm/modules/check_glibc.sh
+++ b/lgsm/modules/check_glibc.sh
@@ -13,17 +13,19 @@ if [ "${glibc}" == "null" ]; then
# Glibc is not required.
:
elif [ -z "${glibc}" ]; then
- fn_print_dots "glibc"
- fn_print_error_nl "glibc requirement unknown"
- fn_script_log_error "glibc requirement unknown"
+ fn_print_dots "Checking glibc"
+ fn_print_error_nl "Checking glibc: requirement unknown"
+ fn_script_log_error "Checking glibc: requirement unknown"
+ fn_sleep_time_5
elif [ "$(printf '%s\n'${glibc}'\n' "${glibcversion}" | sort -V | head -n 1)" != "${glibc}" ]; then
- fn_print_dots "glibc"
- fn_print_error_nl "glibc requirements not met"
- fn_script_log_error "glibc requirements not met"
+ fn_print_dots "Checking glibc"
+ fn_print_error_nl "Checking glibc: requirements not met"
+ fn_script_log_error "Checking glibc: requirements not met"
echo -en "\n"
echo -e " * glibc required: ${glibc}"
echo -e " * glibc installed: ${red}${glibcversion}${default}"
echo -en "\n"
- fn_print_information_nl "distro upgrade is required"
- fn_script_log_info "distro upgrade is required"
+ fn_print_information_nl "Distro upgrade is required"
+ fn_script_log_info "Distro upgrade is required"
+ fn_sleep_time_5
fi
diff --git a/lgsm/modules/check_ip.sh b/lgsm/modules/check_ip.sh
index 7671429cd..bf0418f74 100644
--- a/lgsm/modules/check_ip.sh
+++ b/lgsm/modules/check_ip.sh
@@ -38,25 +38,25 @@ function fn_is_valid_ip() {
# If the IP variable has been set by user.
if fn_is_valid_ip "${ip}"; then
- queryips=("${ip}")
+ queryips=("${ip}" "${publicip}")
httpip=("${ip}")
telnetip=("${ip}")
# If the game config has an IP set.
elif fn_is_valid_ip "${configip}"; then
- queryips=("${configip}")
+ queryips=("${configip}" "${publicip}")
ip="${configip}"
httpip=("${configip}")
telnetip=("${configip}")
# If there is only 1 server IP address.
# Some IP details can automatically use the one IP.
elif [ "${#current_ips[@]}" == "1" ]; then
- queryips=("127.0.0.1" "${current_ips[@]}")
+ queryips=("127.0.0.1" "${current_ips[@]}" "${publicip}")
ip="0.0.0.0"
httpip=("${current_ips[@]}")
telnetip=("${current_ips[@]}")
# If no ip is set by the user and server has more than one IP.
else
- queryips=("127.0.0.1" "${current_ips[@]}")
+ queryips=("127.0.0.1" "${current_ips[@]}" "${publicip}")
ip="0.0.0.0"
httpip=("${ip}")
telnetip=("${ip}")
diff --git a/lgsm/modules/check_last_update.sh b/lgsm/modules/check_last_update.sh
index 02d17c975..166d80a17 100644
--- a/lgsm/modules/check_last_update.sh
+++ b/lgsm/modules/check_last_update.sh
@@ -20,6 +20,8 @@ if [ -f "${lockdir}/last-updated.lock" ] && [ "${status}" != "0" ]; then
if [ ! -f "${lockdir}/${selfname}-last-started.lock" ] || [ "${laststart}" -lt "${lastupdate}" ]; then
fn_print_info "${selfname} has not been restarted since last update"
fn_script_log_info "${selfname} has not been restarted since last update"
+ alert="update"
+ alert.sh
command_restart.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/check_permissions.sh b/lgsm/modules/check_permissions.sh
index cc24596d2..3ee404ba9 100644
--- a/lgsm/modules/check_permissions.sh
+++ b/lgsm/modules/check_permissions.sh
@@ -18,8 +18,13 @@ fn_check_ownership() {
lgsmownissue=1
fi
fi
+ if [ -d "${modulesdir}" ]; then
+ if [ "$(find "${modulesdir}" -not -name '*.swp' -not -user "$(whoami)" | wc -l)" -ne "0" ]; then
+ funcownissue=1
+ fi
+ fi
if [ -d "${serverfiles}" ]; then
- if [ "$(find "${serverfiles}" -not -user "$(whoami)" | wc -l)" -ne "0" ]; then
+ if [ "$(find "${serverfiles}" -not -name '*.swp' -not -user "$(whoami)" | wc -l)" -ne "0" ]; then
filesownissue=1
fi
fi
@@ -175,7 +180,7 @@ fn_sys_perm_fix_manually_msg() {
fn_script_log_info "To fix this issue, run the following command as root:"
echo -e " chmod a+rx /sys /sys/class /sys/class/net"
fn_script_log "chmod a+rx /sys /sys/class /sys/class/net"
- fn_sleep_time
+ fn_sleep_time_5
if [ "${monitorflag}" == 1 ]; then
alert="permissions"
alert.sh
@@ -186,8 +191,8 @@ fn_sys_perm_fix_manually_msg() {
# Attempt to fix /sys related permission errors if sudo is available, exits otherwise.
fn_sys_perm_errors_fix() {
if sudo -n true > /dev/null 2>&1; then
- fn_print_dots "Automatically fixing /sys permissions"
- fn_script_log_info "Automatically fixing /sys permissions."
+ fn_print_dots "Fixing /sys permissions"
+ fn_script_log_info "Fixing /sys permissions."
if [ "${sysdirpermerror}" == "1" ]; then
sudo chmod a+rx "/sys"
fi
@@ -206,7 +211,7 @@ fn_sys_perm_errors_fix() {
# Show the user how to fix.
fn_sys_perm_fix_manually_msg
else
- fn_print_ok_nl "Automatically fixing /sys permissions"
+ fn_print_ok_nl "Fixing /sys permissions"
fn_script_log_pass "Permissions in /sys fixed"
fi
else
@@ -220,8 +225,9 @@ fn_sys_perm_error_process() {
fn_sys_perm_errors_detect
# If any error was found.
if [ "${sysdirpermerror}" == "1" ] || [ "${classdirpermerror}" == "1" ] || [ "${netdirpermerror}" == "1" ]; then
- fn_print_error_nl "Permission error(s) found in /sys"
- fn_script_log_error "Permission error(s) found in /sys"
+ fn_print_dots "Checking /sys permissions"
+ fn_print_error_nl "Checking /sys permissions"
+ fn_script_log_error "Checking /sys permissions"
# Run the fix
fn_sys_perm_errors_fix
fi
diff --git a/lgsm/modules/check_root.sh b/lgsm/modules/check_root.sh
index 81115394a..8fe20764c 100644
--- a/lgsm/modules/check_root.sh
+++ b/lgsm/modules/check_root.sh
@@ -9,7 +9,7 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ "$(whoami)" == "root" ]; then
if [ "${commandname}" != "INSTALL" ]; then
- fn_print_fail_nl "Do NOT run this script as root!"
+ fn_print_fail_nl "Do NOT run as root!"
if [ -d "${lgsmlogdir}" ]; then
fn_script_log_fail "${selfname} attempted to run as root."
else
diff --git a/lgsm/modules/check_system_dir.sh b/lgsm/modules/check_system_dir.sh
index 01c643748..2f57511fb 100644
--- a/lgsm/modules/check_system_dir.sh
+++ b/lgsm/modules/check_system_dir.sh
@@ -15,7 +15,7 @@ if [ ! -d "${serverfiles}" ]; then
core_exit.sh
fi
-if [ ! -d "${systemdir}" ]; then
+if [ ! -d "${systemdir}" ] && [ -z "${CI}" ]; then
fn_print_fail_nl "Cannot access ${systemdir}: No such directory"
if [ -d "${lgsmlogdir}" ]; then
fn_script_log_fail "Cannot access ${systemdir}: No such directory."
diff --git a/lgsm/modules/check_system_requirements.sh b/lgsm/modules/check_system_requirements.sh
index 88fb9d15a..d25954427 100644
--- a/lgsm/modules/check_system_requirements.sh
+++ b/lgsm/modules/check_system_requirements.sh
@@ -9,47 +9,66 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
info_distro.sh
-# RAM requirements in megabytes for each game or engine.
+# RAM requirements in gigabytes for each game or engine.
if [ "${shortname}" == "ark" ]; then
- ramrequirementmb="4000"
- ramrequirementgb="4"
+ ramrequirementgb="7"
+elif [ "${shortname}" == "arma3" ]; then
+ ramrequirementgb="2"
+elif [ "${shortname}" == "armar" ]; then
+ ramrequirementgb="3"
elif [ "${shortname}" == "bt" ]; then
- ramrequirementmb="1000"
ramrequirementgb="1"
-elif [ "${shortname}" == "mh" ]; then
- ramrequirementmb="4000"
- ramrequirementgb="4"
-elif [ "${shortname}" == "arma3" ]; then
- ramrequirementmb="1000"
+elif [ "${shortname}" == "cc" ]; then
ramrequirementgb="1"
-elif [ "${shortname}" == "rust" ]; then
- ramrequirementmb="4000"
+elif [ "${shortname}" == "dayz" ]; then
+ ramrequirementgb="5"
+elif [ "${shortname}" == "dodr" ]; then
+ ramrequirementgb="2"
+elif [ "${shortname}" == "hw" ]; then
+ ramrequirementgb="3"
+elif [ "${shortname}" == "mc" ]; then
+ ramrequirementgb="1"
+elif [ "${shortname}" == "pmc" ]; then
+ ramrequirementgb="2"
+elif [ "${shortname}" == "mh" ]; then
ramrequirementgb="4"
-elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "wmc" ]; then
- ramrequirementmb="1000"
+elif [ "${shortname}" == "ns2" ] || [ "${shortname}" == "ns2c" ]; then
ramrequirementgb="1"
elif [ "${shortname}" == "ps" ]; then
- ramrequirementmb="2000"
ramrequirementgb="2"
-elif [ "${shortname}" == "ns2" ] || [ "${shortname}" == "ns2c" ]; then
- ramrequirementmb="1000"
+elif [ "${shortname}" == "pvr" ]; then
ramrequirementgb="1"
+elif [ "${shortname}" == "pz" ]; then
+ ramrequirementgb="3"
+elif [ "${shortname}" == "rust" ]; then
+ ramrequirementgb="9"
+elif [ "${shortname}" == "sdtd" ]; then
+ ramrequirementgb="4"
+elif [ "${shortname}" == "sf" ]; then
+ ramrequirementgb="12"
+elif [ "${shortname}" == "squad" ]; then
+ ramrequirementgb="2"
+elif [ "${shortname}" == "sm" ]; then
+ ramrequirementgb="10"
elif [ "${shortname}" == "st" ]; then
- ramrequirementmb="1000"
ramrequirementgb="1"
-elif [ "${shortname}" == "pvr" ]; then
- ramrequirementmb="2000"
+elif [ "${shortname}" == "stn" ]; then
+ ramrequirementgb="3"
+elif [ "${shortname}" == "tu" ]; then
+ ramrequirementgb="2"
+elif [ "${shortname}" == "vh" ]; then
ramrequirementgb="2"
+else
+ ramrequirementgb="0.5"
fi
# If the game or engine has a minimum RAM Requirement, compare it to system's available RAM.
-if [ "${ramrequirementmb}" ]; then
- if [ "${physmemtotalmb}" -lt "${ramrequirementmb}" ]; then
- fn_print_dots "Check RAM"
- # Warn the user.
- fn_print_warn_nl "Check RAM: ${ramrequirementgb}G required, ${physmemtotal} available"
+if [ "${ramrequirementgb}" ]; then
+ if (($(echo "${physmemtotalgb} < ${ramrequirementgb}" | bc -l))); then
+ fn_print_dots "Checking RAM"
+ fn_print_warn_nl "Checking RAM: ${ramrequirementgb}G required, ${physmemtotal} available"
echo "* ${gamename} server may fail to run or experience poor performance."
- fn_sleep_time
+ fn_sleep_time_5
fi
fi
diff --git a/lgsm/modules/check_version.sh b/lgsm/modules/check_version.sh
index 3ca015843..5369fd832 100644
--- a/lgsm/modules/check_version.sh
+++ b/lgsm/modules/check_version.sh
@@ -16,8 +16,8 @@ if [ -n "${modulesversion}" ] && [ -n "${version}" ] && [ "${version}" != "${mod
echo -e "* ${selfname}: ${version}"
echo -e "* modules: ${modulesversion}"
echo -e ""
- fn_sleep_time
fn_script_log_error "LinuxGSM Version mismatch: ${selfname}: ${version}: modules: ${modulesversion}"
+ fn_sleep_time_1
command_update_linuxgsm.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/command_backup.sh b/lgsm/modules/command_backup.sh
index 16223c914..a3e1bbe7f 100644
--- a/lgsm/modules/command_backup.sh
+++ b/lgsm/modules/command_backup.sh
@@ -10,8 +10,6 @@ commandaction="Backing up"
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_firstcommand_set
-check.sh
-
# Trap to remove lockfile on quit.
fn_backup_trap() {
echo -e ""
@@ -56,12 +54,14 @@ fn_backup_init() {
backupname="${selfname}-$(date '+%Y-%m-%d-%H%M%S')"
info_distro.sh
- fn_print_dots "Backup starting"
- fn_script_log_info "Backup starting"
- fn_print_ok_nl "Backup starting"
+ fn_print_dots "Starting backup"
+ fn_script_log_info "Starting backup"
if [ ! -d "${backupdir}" ] || [ "${backupcount}" == "0" ]; then
- fn_print_info_nl "There are no previous backups"
+ fn_print_info_nl "Starting backup: No previous backups found"
+ fn_script_log_info "No previous backups found"
else
+ fn_print_info_nl "Starting backup: Previous backups found"
+ fn_script_log_info "Previous backups found"
if [ "${lastbackupdaysago}" == "0" ]; then
daysago="less than 1 day ago"
elif [ "${lastbackupdaysago}" == "1" ]; then
@@ -101,32 +101,6 @@ fn_backup_dir() {
fi
}
-# Migrate Backups from old dir before refactor
-fn_backup_migrate_olddir() {
- # Check if old backup dir is there before the refactor and move the backups
- if [ -d "${rootdir}/backups" ]; then
- if [ "${rootdir}/backups" != "${backupdir}" ]; then
- fn_print_dots "Backup directory is being migrated"
- fn_script_log_info "Backup directory is being migrated"
- fn_script_log_info "${rootdir}/backups > ${backupdir}"
- mv "${rootdir}/backups/"* "${backupdir}" 2> /dev/null
- exitcode=$?
- if [ "${exitcode}" == 0 ]; then
- rmdir "${rootdir}/backups" 2> /dev/null
- exitcode=$?
- fi
- if [ "${exitcode}" != 0 ]; then
- fn_print_error_nl "Backup directory is being migrated"
- fn_script_log_error "Backup directory is being migrated"
- else
-
- fn_print_ok_nl "Backup directory is being migrated"
- fn_script_log_pass "Backup directory is being migrated"
- fi
- fi
- fi
-}
-
fn_backup_create_lockfile() {
# Create lockfile.
date '+%s' > "${lockdir:?}/backup.lock"
@@ -142,7 +116,7 @@ fn_backup_compression() {
fn_print_info "A total of ${rootdirduexbackup} will be compressed."
fn_script_log_info "A total of ${rootdirduexbackup} will be compressed: ${backupdir}/${backupname}.tar.gz"
fn_print_dots "Backup (${rootdirduexbackup}) ${backupname}.tar.gz, in progress..."
- fn_script_log_info "backup ${rootdirduexbackup} ${backupname}.tar.gz, in progress"
+ fn_script_log_info "Backup ${rootdirduexbackup} ${backupname}.tar.gz, in progress"
excludedir=$(fn_backup_relpath)
# Check that excludedir is a valid path.
@@ -152,7 +126,7 @@ fn_backup_compression() {
core_exit.sh
fi
- tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}" ./.
+ tar --use-compress-program=pigz -cf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}" --exclude "${tmpdir}" ./.
local exitcode=$?
if [ "${exitcode}" != 0 ]; then
fn_print_fail_eol
@@ -164,6 +138,8 @@ fn_backup_compression() {
fn_print_ok_eol
fn_print_ok_nl "Completed: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')"
fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')"
+ alert="backup"
+ alert.sh
fi
}
@@ -187,7 +163,7 @@ fn_backup_prune() {
# Display how many backups will be cleared.
echo -e "* Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit"
fn_script_log_info "Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit"
- fn_sleep_time
+ fn_sleep_time_1
fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)"
fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)"
# Clear backups over quota.
@@ -199,7 +175,7 @@ fn_backup_prune() {
# Display how many backups will be cleared.
echo -e "* Pruning: ${backupsoudatedcount} backup(s) are older than ${maxbackupdays} days."
fn_script_log_info "Pruning: ${backupsoudatedcount} backup(s) older than ${maxbackupdays} days."
- fn_sleep_time
+ fn_sleep_time_1
fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)."
fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)"
# Clear backups over quota
@@ -264,12 +240,14 @@ fn_backup_start_server() {
fi
}
-# Run functions.
+fn_print_dots ""
+check.sh
+core_logs.sh
+
fn_backup_check_lockfile
fn_backup_init
fn_backup_stop_server
fn_backup_dir
-fn_backup_migrate_olddir
fn_backup_create_lockfile
fn_backup_compression
fn_backup_prune
diff --git a/lgsm/modules/command_debug.sh b/lgsm/modules/command_debug.sh
index 495417c16..2e6c0e2e2 100644
--- a/lgsm/modules/command_debug.sh
+++ b/lgsm/modules/command_debug.sh
@@ -34,7 +34,7 @@ fn_print_header
echo -e "${lightblue}Architecture:\t\t${default}${arch}"
echo -e "${lightblue}Kernel:\t\t${default}${kernel}"
echo -e "${lightblue}Hostname:\t\t${default}${HOSTNAME}"
- echo -e "${lightblue}tmux:\t\t${default}${tmuxv}"
+ echo -e "${lightblue}tmux:\t\t${default}${tmuxversion}"
echo -e "${lightblue}Avg Load:\t\t${default}${load}"
echo -e "${lightblue}Free Memory:\t\t${default}${physmemfree}"
echo -e "${lightblue}Free Disk:\t\t${default}${availspace}"
diff --git a/lgsm/modules/command_details.sh b/lgsm/modules/command_details.sh
index d180b3b18..ad55b1241 100644
--- a/lgsm/modules/command_details.sh
+++ b/lgsm/modules/command_details.sh
@@ -23,20 +23,20 @@ if [ "${querymode}" == "2" ] || [ "${querymode}" == "3" ]; then
fi
done
fi
-fn_info_message_distro
-fn_info_message_server_resource
-fn_info_message_gameserver_resource
-fn_info_message_gameserver
-fn_info_message_script
-fn_info_message_backup
+fn_info_messages_distro
+fn_info_messages_server_resource
+fn_info_messages_gameserver_resource
+fn_info_messages_gameserver
+fn_info_messages_script
+fn_info_messages_backup
# Some game servers do not have parms.
if [ "${shortname}" != "jc2" ] && [ "${shortname}" != "dst" ] && [ "${shortname}" != "pz" ] && [ "${engine}" != "renderware" ]; then
- fn_info_message_commandlineparms
+ fn_info_messages_commandlineparms
fi
-fn_info_message_ports_edit
-fn_info_message_ports
-fn_info_message_select_engine
-fn_info_message_statusbottom
+fn_info_messages_ports_edit
+fn_info_messages_ports
+fn_info_messages_select_engine
+fn_info_messages_statusbottom
exitcode=0
core_exit.sh
diff --git a/lgsm/modules/command_dev_debug.sh b/lgsm/modules/command_dev_debug.sh
index 081bda611..eb0356985 100644
--- a/lgsm/modules/command_dev_debug.sh
+++ b/lgsm/modules/command_dev_debug.sh
@@ -10,6 +10,10 @@ commandaction="Developer debug"
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_firstcommand_reset
+fn_print_dots ""
+check.sh
+core_logs.sh
+
if [ -f "${rootdir}/.dev-debug" ]; then
rm -f "${rootdir:?}/.dev-debug"
fn_print_ok_nl "Disabled dev-debug"
diff --git a/lgsm/modules/command_dev_details.sh b/lgsm/modules/command_dev_details.sh
deleted file mode 100644
index 2659465d3..000000000
--- a/lgsm/modules/command_dev_details.sh
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/bin/bash
-# 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.
-
-if [ -f "config" ]; then
- servercfgfullpath="config"
-fi
-if [ -f "clusterconfig" ]; then
- clustercfgfullpath="clusterconfig"
-fi
-
-info_game.sh
-
-carriagereturn=$(file -b "${servercfgfullpath}" | grep -q CRLF && echo "${red}CRLF${default}" || echo "${lightgreen}LF${default}")
-
-echo -e ""
-echo -e "${bold}${lightgreen}Server Details${default}"
-fn_messages_separator
-echo -e ""
-
-echo -e "Game: ${gamename}"
-echo -e "Config type: ${configtype}"
-echo -e "Config file: ${servercfgfullpath}"
-if [ -f "${clustercfgfullpath}" ]; then
- echo -e "Cluster config file: ${clustercfgfullpath}"
-fi
-echo -e "Carriage Return: ${carriagereturn}"
-
-# Create an associative array of the server details.
-declare -A server_details=(
- ['Admin Password']="${adminpassword}"
- ['API Port']="${apiport}"
- ['Cave']="${cave}"
- ['Cluster']="${cluster}"
- ['Config IP']="${configip}"
- ['Default Map']="${defaultmap}"
- ['Game Mode']="${gamemode}"
- ['Game Type']="${gametype}"
- ['HTTP Enabled']="${httpenabled}"
- ['HTTP IP']="${httpip}"
- ['HTTP Password']="${httppassword}"
- ['HTTP Port']="${httpport}"
- ['HTTP User']="${httpuser}"
- ['Internet IP']="${publicip}"
- ['LAN Port']="${lanport}"
- ['Master Port']="${masterport}"
- ['Master']="${master}"
- ['Maxplayers']="${maxplayers}"
- ['OldQueryPortNumber']="${oldqueryportnumber}"
- ['Port']="${port}"
- ['Query Port']="${queryport}"
- ['RCON Enabled']="${rconenabled}"
- ['RCON Password']="${rconpassword}"
- ['RCON Port']="${rconport}"
- ['Reserved Slots']="${reservedslots}"
- ['Server IP']="${ip}"
- ['Server Password']="${serverpassword}"
- ['Servername']="${servername}"
- ['Shard']="${shard}"
- ['Sharding']="${sharding}"
- ['Steam Auth Port']="${steamauthport}"
- ['Telnet Enabled']="${telnetenabled}"
- ['Telnet IP']="${telnetip}"
- ['Telnet Password']="${telnetpassword}"
- ['Telnet Port']="${telnetport}"
- ['Tickrate']="${tickrate}"
- ['World Name']="${worldname}"
- ['World Type']="${worldtype}"
-)
-
-# Initialize a variable to keep track of missing server details.
-missing_details=""
-
-# Loop through the server details and output them.
-echo -e ""
-echo -e "${bold}${lightgreen}Available Server Details${default}"
-fn_messages_separator
-for key in "${!server_details[@]}"; do
- value=${server_details[$key]}
- if [ -z "$value" ]; then
- missing_details+="\n${key}"
- else
- echo -e "$key: $value "
- fi
-done
-
-# Output the missing server details if there are any.
-if [ -n "$missing_details" ]; then
- echo -e ""
- echo -e "${lightgreen}Missing Server Details${default}"
- fn_messages_separator
- echo -e "${missing_details}"
-fi
-
-core_exit.sh
diff --git a/lgsm/modules/command_dev_parse_distro_details.sh b/lgsm/modules/command_dev_parse_distro_details.sh
new file mode 100644
index 000000000..ca2bfd9ed
--- /dev/null
+++ b/lgsm/modules/command_dev_parse_distro_details.sh
@@ -0,0 +1,114 @@
+#!/bin/bash
+# LinuxGSM command_dev_parse_distro_details.sh module
+# Author: Daniel Gibbs
+# Contributors: http://linuxgsm.com/contrib
+# Website: https://linuxgsm.com
+# Description: Display parsed distro details.
+
+check_ip.sh
+check_status.sh
+info_distro.sh
+
+# Create an associative array of the server details.
+declare -A server_details=(
+ ['.NET Version']="${dotnetversion}"
+ ['Arch']="${arch}"
+ ['Backup Count']="${backupcount}"
+ ['Backup Last Date']="${lastbackupdate}"
+ ['Backup Last Days Ago']="${lastbackupdaysago}"
+ ['Backup Last Size']="${lastbackupsize}"
+ ['Backup Last']="${lastbackup}"
+ ['CPU Average Load']="${load}"
+ ['CPU Cores']="${cpucores}"
+ ['CPU Frequency']="${cpufreqency}"
+ ['CPU Model']="${cpumodel}"
+ ['Distro Codename']="${distrocodename}"
+ ['Distro ID Like']="${distroidlike}"
+ ['Distro ID']="${distroid}"
+ ['Distro Kernel']="${kernel}"
+ ['Distro Name']="${distroname}"
+ ['Distro Version CSV']="${distroversioncsv}"
+ ['Distro Version RH']="${distroversionrh}"
+ ['Distro Version']="${distroversion}"
+ ['Distro-Info Support']="${distrosupport}"
+ ['File System']="${filesystem}"
+ ['Game Server PID']="${gameserverpid}"
+ ['Gameserver CPU Used MHz']="${cpuusedmhz}"
+ ['Gameserver CPU Used']="${cpuused}"
+ ['Gameserver Mem Used MB']="${memusedmb}"
+ ['Gameserver Mem Used Pct']="${memusedpct}"
+ ['GLIBC Version']="${glibcversion}"
+ ['GLIBC']="${glibc}"
+ ['HLDS Linux PID']="${hldslinuxpid}"
+ ['Java Version']="${javaversion}"
+ ['Mono Version']="${monoversion}"
+ ['Network Interface']="${netint}"
+ ['Network Link Speed']="${netlink}"
+ ['Old Free']="${oldfree}"
+ ['Phys Mem Available']="${physmemavailable}"
+ ['Phys Mem Buffers KB']="${physmembufferskb}"
+ ['Phys Mem Cached']="${physmemcached}"
+ ['Phys Mem Free']="${physmemfree}"
+ ['Phys Mem Reclaimable KB']="${physmemreclaimablekb}"
+ ['Phys Mem Total GB']="${physmemtotalgb}"
+ ['Phys Mem Used']="${physmemused}"
+ ['Size Backup Dir']="${backupdirdu}"
+ ['Size Root Dir ']="${rootdirdu}"
+ ['Size Root Dir Excl. Backup']="${rootdirduexbackup}"
+ ['Size Serverfiles']="${serverfilesdu}"
+ ['SRCDS Linux PID']="${srcdslinuxpid}"
+ ['Storage Available']="${availspace}"
+ ['Storage Total']="${totalspace}"
+ ['Storage Used']="${usedspace}"
+ ['Swap Free']="${swapfree}"
+ ['Swap Total']="${swaptotal}"
+ ['Swap Used']="${swapused}"
+ ['Tmux Version']="${tmuxversion}"
+ ['Uptime Days']="${days}"
+ ['Uptime Hours']="${hours}"
+ ['Uptime Minutes']="${minutes}"
+ ['Uptime Total Seconds']="${uptime}"
+ ['Virtual Environment']="${virtualenvironment}"
+ # ['Distro Info Array']="${distro_info_array}"
+ # ['Distros Unsupported Array']="${distrosunsupported_array}"
+ # ['Distros Unsupported']="${distrosunsupported}"
+ # ['Human Readable']="${humanreadable}"
+ # ['Phys Mem Actual Free KB']="${physmemactualfreekb}"
+ # ['Phys Mem Cached KB']="${physmemcachedkb}"
+ # ['Phys Mem Free KB']="${physmemfreekb}"
+ # ['Phys Mem Total KB']="${physmemtotalkb}"
+ # ['Phys Mem Total MB']="${physmemtotalmb}"
+ # ['SS Info']="${ssinfo}"
+)
+
+# Initialize variables to keep track of available and missing distro details.
+available_details=""
+missing_details=""
+
+# Loop through the distro details and store them.
+for key in "${!server_details[@]}"; do
+ value=${server_details[$key]}
+ if [ -n "$value" ]; then
+ available_details+="${lightblue}${key}: ${default}${value}\n"
+ else
+ missing_details+="${key}\n"
+ fi
+done
+
+# Sort and output the available distro details.
+if [ -n "$available_details" ]; then
+ echo -e ""
+ echo -e "${bold}${lightgreen}Available Distro Details${default}"
+ fn_messages_separator
+ echo -e "${available_details}" | sort
+fi
+
+# Sort and output the missing distro details.
+if [ -n "$missing_details" ]; then
+ echo -e ""
+ echo -e "${lightgreen}Missing or unsupported Distro Details${default}"
+ fn_messages_separator
+ echo -e "${missing_details}" | sort
+fi
+
+core_exit.sh
diff --git a/lgsm/modules/command_dev_parse_game_details.sh b/lgsm/modules/command_dev_parse_game_details.sh
new file mode 100644
index 000000000..2e22aa7ae
--- /dev/null
+++ b/lgsm/modules/command_dev_parse_game_details.sh
@@ -0,0 +1,157 @@
+#!/bin/bash
+# LinuxGSM command_dev_parse_game_details.sh module
+# Author: Daniel Gibbs
+# Contributors: http://linuxgsm.com/contrib
+# Website: https://linuxgsm.com
+# Description: Display parsed gameserver details.
+
+if [ -f "config" ]; then
+ servercfgfullpath="config"
+fi
+if [ -f "clusterconfig" ]; then
+ clustercfgfullpath="clusterconfig"
+fi
+
+info_game.sh
+
+carriagereturn=$(file -b "${servercfgfullpath}" | grep -q CRLF && echo "${red}CRLF${default}" || echo "${lightgreen}LF${default}")
+
+echo -e ""
+echo -e "${bold}${lightgreen}Server Details${default}"
+fn_messages_separator
+
+echo -e ""
+echo -e "${lightblue}Game: ${default}${gamename}"
+echo -e "${lightblue}Config type: ${default}${configtype}"
+echo -e "${lightblue}Config file: ${default}${servercfgfullpath}"
+if [ -f "${clustercfgfullpath}" ]; then
+ echo -e "${lightblue}Cluster config file: ${default}${clustercfgfullpath}"
+fi
+echo -e "${lightblue}Carriage Return: ${default}${carriagereturn}"
+
+# Create an associative array of the server details.
+declare -A server_details=(
+ ['Admin Password']="${adminpassword}"
+ ['Alert IP']="${alertip}"
+ ['API Port']="${apiport}"
+ ['App Port']="${appport}"
+ ['ASE']="${ase}"
+ ['Auth Token']="${authtoken}"
+ ['BattleEye Port']="${battleeyeport}"
+ ['Beacon Port']="${beaconport}"
+ ['Cave']="${cave}"
+ ['Client Port']="${clientport}"
+ ['Cluster']="${cluster}"
+ ['Config IP']="${configip}"
+ ['Creative Mode']="${creativemode}"
+ ['Custom Level URL']="${customlevelurl}"
+ ['DB Plugin']="${dbplugin}"
+ ['Default Map']="${defaultmap}"
+ ['Default Scenario']="${defaultscenario}"
+ ['Display Master Server']="${displaymasterserver}"
+ ['Epic Settings']="${epicsettings}"
+ ['File Port']="${fileport}"
+ ['Files Port']="${filesport}"
+ ['Game Mode']="${gamemode}"
+ ['Game Type']="${gametype}"
+ ['Home Kingdom']="${homekingdom}"
+ ['Home Server']="${homeserver}"
+ ['HTTP Enabled']="${httpenabled}"
+ ['HTTP IP']="${httpip}"
+ ['HTTP Password']="${httppassword}"
+ ['HTTP Port']="${httpport}"
+ ['HTTP User']="${httpuser}"
+ ['Internet IP']="${publicip}"
+ ['LAN Port']="${lanport}"
+ ['Login Server']="${loginserver}"
+ ['Master Port']="${masterport}"
+ ['Master Server']="${masterserver}"
+ ['Master']="${master}"
+ ['Max Players']="${maxplayers}"
+ ['Mod Server Port']="${modserverport}"
+ ['OldQueryPortNumber']="${oldqueryportnumber}"
+ ['Port 401']="${port401}"
+ ['Port IPv6']="${portipv6}"
+ ['Port']="${port}"
+ ['Query Enabled']="${queryenabled}"
+ ['Query HTTP Port']="${queryhttpport}"
+ ['Query HTTPS Port']="${queryhttpsport}"
+ ['Query Mode']="${querymode}"
+ ['Query Port GS']="${queryportgs}"
+ ['Query Port']="${queryport}"
+ ['Query SSH Port']="${querysshport}"
+ ['Queue Enabled']="${queueenabled}"
+ ['Queue Port']="${queueport}"
+ ['Random Map']="${randommap}"
+ ['Raw Port']="${rawport}"
+ ['RCON Enabled']="${rconenabled}"
+ ['RCON Password']="${rconpassword}"
+ ['RCON Port']="${rconport}"
+ ['RCON Web']="${rconweb}"
+ ['Reserved Slots']="${reservedslots}"
+ ['RMI Port']="${rmiport}"
+ ['RMI Reg Port']="${rmiregport}"
+ ['Salt']="${salt}"
+ ['Save Game Interval']="${savegameinterval}"
+ ['Save Interval']="${saveinterval}"
+ ['Secondary Port']="${port3}"
+ ['Seed']="${seed}"
+ ['Server Description']="${serverdescription}"
+ ['Server IP']="${ip}"
+ ['Server Level']="${serverlevel}"
+ ['Server Name']="${servername}"
+ ['Server Password Enabled']="${serverpasswordenabled}"
+ ['Server Password']="${serverpassword}"
+ ['Server Version']="${serverversion}"
+ ['Shard']="${shard}"
+ ['Sharding']="${sharding}"
+ ['Shutdown Port']="${shutdownport}"
+ ['Stats Port']="${statsport}"
+ ['Steam Auth Port']="${steamauthport}"
+ ['Steam Port']="${steamport}"
+ ['Steamworks Port']="${steamworksport}"
+ ['Telnet Enabled']="${telnetenabled}"
+ ['Telnet IP']="${telnetip}"
+ ['Telnet Password']="${telnetpassword}"
+ ['Telnet Port']="${telnetport}"
+ ['Tickrate']="${tickrate}"
+ ['Unknown Port']="${unknownport}"
+ ['Version Count']="${versioncount}"
+ ['Voice Port']="${voiceport}"
+ ['Voice Unused Port']="${voiceunusedport}"
+ ['World Name']="${worldname}"
+ ['World Size']="${worldsize}"
+ ['World Type']="${worldtype}"
+)
+
+# Initialize variables to keep track of available and missing server details.
+available_details=""
+missing_details=""
+
+# Loop through the server details and store them.
+for key in "${!server_details[@]}"; do
+ value=${server_details[$key]}
+ if [ -n "$value" ]; then
+ available_details+="${lightblue}${key}: ${default}${value}\n"
+ else
+ missing_details+="${key}\n"
+ fi
+done
+
+# Sort and output the available distro details.
+if [ -n "$available_details" ]; then
+ echo -e ""
+ echo -e "${bold}${lightgreen}Available Gameserver Details${default}"
+ fn_messages_separator
+ echo -e "${available_details}" | sort
+fi
+
+# Output the missing server details if there are any.
+if [ -n "$missing_details" ]; then
+ echo -e ""
+ echo -e "${lightgreen}Missing or unsupported Gameserver Details${default}"
+ fn_messages_separator
+ echo -e "${missing_details}" | sort
+fi
+
+core_exit.sh
diff --git a/lgsm/modules/command_dev_query_raw.sh b/lgsm/modules/command_dev_query_raw.sh
index cf9e14858..39f4787d3 100644
--- a/lgsm/modules/command_dev_query_raw.sh
+++ b/lgsm/modules/command_dev_query_raw.sh
@@ -15,6 +15,16 @@ info_game.sh
info_distro.sh
info_messages.sh
+echo -e ""
+echo -e "${lightgreen}IP Addresses Variables${default}"
+fn_messages_separator
+echo -e ""
+echo -e "IP: ${ip}"
+echo -e "HTTP IP: ${httpip}"
+echo -e "Public IP: ${publicip}"
+echo -e "Telnet IP: ${telnetip}"
+echo -e "Display IP: ${displayip}"
+
echo -e ""
echo -e "${lightgreen}Query IP Addresses${default}"
fn_messages_separator
@@ -185,7 +195,7 @@ fn_messages_separator
echo -e ""
echo -e "${lightgreen}SS Output${default}"
fn_messages_separator
-fn_info_message_ports
+fn_info_messages_ports
eval "${portcommand}"
echo -e ""
echo -e "${lightgreen}Query Port - Raw Output${default}"
@@ -197,7 +207,7 @@ echo -e ""
echo -e "${lightgreen}Gamedig Raw Output${default}"
fn_messages_separator
echo -e ""
-if [ ! "$(command -v gamedig 2> /dev/null)" ]; then
+if [ ! "$(command -v gamedig 2> /dev/null)" ] && [ ! -f "${lgsmdir}/node_modules/gamedig/bin/gamedig.js" ]; then
fn_print_failure_nl "gamedig not installed"
fi
if [ ! "$(command -v jq 2> /dev/null)" ]; then
diff --git a/lgsm/modules/command_fastdl.sh b/lgsm/modules/command_fastdl.sh
index acc3a1ba4..c1c667797 100644
--- a/lgsm/modules/command_fastdl.sh
+++ b/lgsm/modules/command_fastdl.sh
@@ -10,8 +10,6 @@ commandaction="Fastdl"
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_firstcommand_set
-check.sh
-
# Directories.
if [ -z "${webdir}" ]; then
webdir="${rootdir}/public_html"
@@ -209,7 +207,7 @@ fn_fastdl_preview() {
fi
if [ -f "${tmpdir}/fastdl_files_to_compress.txt" ]; then
echo -e "calculating total file size..."
- fn_sleep_time
+ fn_sleep_time_1
totalfiles=$(wc -l < "${tmpdir}/fastdl_files_to_compress.txt")
# Calculates total file size.
while read -r dufile; do
@@ -276,7 +274,7 @@ fn_fastdl_gmod() {
fi
# Clear addons directory in fastdl.
echo -en "clearing addons dir from fastdl dir..."
- fn_sleep_time
+ fn_sleep_time_1
rm -rf "${fastdldir:?}/addons"
exitcode=$?
if [ "${exitcode}" != 0 ]; then
@@ -291,7 +289,7 @@ fn_fastdl_gmod() {
# Correct content that may be into a lua directory by mistake like some darkrpmodification addons.
if [ -d "${fastdldir}/lua" ]; then
echo -en "correcting DarkRP files..."
- fn_sleep_time
+ fn_sleep_time_1
cp -Rf "${fastdldir}/lua/"* "${fastdldir}"
exitcode=$?
if [ "${exitcode}" != 0 ]; then
@@ -335,7 +333,7 @@ fn_fastdl_source() {
tput rc
tput el
echo -e "copying ${directory} ${allowed_extention} : ${fileswc}..."
- fn_sleep_time
+ fn_sleep_time_1
# get relative path of file in the dir
tmprelfilepath="${fastdlfile#"${systemdir}/"}"
copytodir="${tmprelfilepath%/*}"
@@ -427,6 +425,7 @@ fn_fastdl_bzip2() {
fn_print_ok_eol_nl
}
+check.sh
# Run functions.
fn_fastdl_preview
fn_clear_old_fastdl
diff --git a/lgsm/modules/command_install.sh b/lgsm/modules/command_install.sh
index e8cba7560..c3bf27c61 100644
--- a/lgsm/modules/command_install.sh
+++ b/lgsm/modules/command_install.sh
@@ -30,6 +30,9 @@ else
install_server_files.sh
fi
+ # Install gamedig
+ check_gamedig.sh
+
# Configuration.
install_config.sh
if [ -v gslt ]; then
diff --git a/lgsm/modules/command_mods_remove.sh b/lgsm/modules/command_mods_remove.sh
index db7763cd8..5f70ac389 100644
--- a/lgsm/modules/command_mods_remove.sh
+++ b/lgsm/modules/command_mods_remove.sh
@@ -59,7 +59,7 @@ fn_script_log_info "Removing ${modsfilelistsize} files from ${modprettyname}"
echo -e "removing ${modprettyname}"
echo -e "* ${modsfilelistsize} files to be removed"
echo -e "* location: ${modinstalldir}"
-fn_sleep_time
+fn_sleep_time_1
# Go through every file and remove it.
modfileline="1"
tput sc
@@ -99,7 +99,7 @@ fi
# Remove file list.
echo -en "removing ${modcommand}-files.txt..."
-fn_sleep_time
+fn_sleep_time_1
rm -rf "${modsdir:?}/${modcommand}-files.txt"
exitcode=$?
if [ "${exitcode}" != 0 ]; then
@@ -113,7 +113,7 @@ fi
# Remove mods from installed mods list.
echo -en "removing ${modcommand} from ${modsinstalledlist}..."
-fn_sleep_time
+fn_sleep_time_1
sed -i "/^${modcommand}$/d" "${modsinstalledlistfullpath}"
exitcode=$?
diff --git a/lgsm/modules/command_mods_update.sh b/lgsm/modules/command_mods_update.sh
index cfbafc80c..cd5c3b03f 100644
--- a/lgsm/modules/command_mods_update.sh
+++ b/lgsm/modules/command_mods_update.sh
@@ -18,7 +18,7 @@ mods_core.sh
fn_remove_cfg_files() {
if [ "${modkeepfiles}" != "OVERWRITE" ] && [ "${modkeepfiles}" != "NOUPDATE" ]; then
echo -e "the following files/directories will be preserved:"
- fn_sleep_time
+ fn_sleep_time_1
# Count how many files there are to remove.
filestopreserve=$(echo -e "${modkeepfiles}" | awk -F ';' '{ print NF }')
# Test all subvalues of "modkeepfiles" using the ";" separator.
diff --git a/lgsm/modules/command_monitor.sh b/lgsm/modules/command_monitor.sh
index 079ad334d..e9baf71e5 100644
--- a/lgsm/modules/command_monitor.sh
+++ b/lgsm/modules/command_monitor.sh
@@ -52,6 +52,17 @@ fn_monitor_check_debug() {
fi
}
+fn_monitor_check_details() {
+ if [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} details")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} dt")" != "0" ]; then
+ fn_print_dots "Checking details: "
+ fn_print_checking_eol
+ fn_print_info "Checking details: Details is running: "
+ fn_print_info_eol_nl
+ fn_script_log_pass "Checking details: Details is running"
+ core_exit.sh
+ fi
+}
+
fn_monitor_check_starting() {
# Remove stale lockfile.
if [ -f "${lockdir}/${selfname}-starting.lock" ]; then
@@ -153,10 +164,10 @@ fn_monitor_check_update_source() {
fn_script_log_info "Checking update: CHECKING"
fn_print_ok "Checking update: "
fn_print_ok_eol_nl
- fn_script_log_info "Checking update: Monitor is restarting ${selfname} to apply update"
- alert="update-restart"
+ fn_script_log_info "Checking update: ${selfname} has requested an update and needs to be restarted"
+ alert="update-request"
alert.sh
- command_restart.sh
+ command_update.sh
core_exit.sh
fi
fi
@@ -203,11 +214,15 @@ fn_monitor_check_session() {
fn_print_ok "Checking session: "
fn_print_ok_eol_nl
fn_script_log_pass "Checking session: OK"
+ # send LinuxGSM stats if monitor is OK.
+ if [ "${stats}" == "on" ] || [ "${stats}" == "y" ] && [ "${querymode}" == "1" ]; then
+ info_stats.sh
+ fi
else
fn_print_error "Checking session: "
fn_print_fail_eol_nl
fn_script_log_fail "Checking session: FAIL"
- alert="restart"
+ alert="monitor-session"
alert.sh
fn_script_log_info "Checking session: Monitor is restarting ${selfname}"
command_restart.sh
@@ -319,7 +334,7 @@ fn_monitor_query() {
fn_print_fail_eol_nl
fn_script_log_warn "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : FAIL"
# Send alert if enabled.
- alert="restartquery"
+ alert="monitor-query"
alert.sh
command_restart.sh
fn_firstcommand_reset
@@ -330,7 +345,7 @@ fn_monitor_query() {
# Second counter will wait for 15s before breaking loop.
for seconds in {1..15}; do
fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt} : ${cyan}WAIT${default}"
- sleep 0.5
+ fn_sleep_time_1
totalseconds=$((totalseconds + 1))
if [ "${seconds}" == "15" ]; then
break
@@ -354,7 +369,7 @@ fn_monitor_loop() {
for querymethod in "${query_methods_array[@]}"; do
# Will check if gamedig is installed and bypass if not.
if [ "${querymethod}" == "gamedig" ]; then
- if [ "$(command -v gamedig 2> /dev/null)" ] && [ "$(command -v jq 2> /dev/null)" ]; then
+ if [ "$(command -v gamedig 2> /dev/null)" ] || [ -f "${lgsmdir}/node_modules/gamedig/bin/gamedig.js" ] && [ "$(command -v jq 2> /dev/null)" ]; then
if [ -z "${monitorpass}" ]; then
fn_monitor_query
fi
@@ -371,6 +386,7 @@ fn_monitor_loop() {
done
}
+fn_print_dots ""
monitorflag=1
# Dont do any monitoring or checks if installer is running.
fn_monitor_check_install
@@ -379,10 +395,11 @@ core_logs.sh
info_game.sh
# query pre-checks
-fn_monitor_check_update_source
-fn_monitor_check_update
+fn_monitor_check_details
fn_monitor_check_backup
fn_monitor_check_debug
+fn_monitor_check_update_source
+fn_monitor_check_update
fn_monitor_check_monitoring
fn_monitor_check_starting
fn_monitor_check_stopping
diff --git a/lgsm/modules/command_postdetails.sh b/lgsm/modules/command_postdetails.sh
index 736c9ec27..3bfed78ed 100644
--- a/lgsm/modules/command_postdetails.sh
+++ b/lgsm/modules/command_postdetails.sh
@@ -42,20 +42,20 @@ else
done
touch "${postdetailslog}" || fn_bad_postdetailslog
{
- fn_info_message_distro
- fn_info_message_server_resource
- fn_info_message_gameserver_resource
- fn_info_message_gameserver
- fn_info_message_script
- fn_info_message_backup
+ fn_info_messages_distro
+ fn_info_messages_server_resource
+ fn_info_messages_gameserver_resource
+ fn_info_messages_gameserver
+ fn_info_messages_script
+ fn_info_messages_backup
# Some game servers do not have parms.
if [ "${shortname}" != "jc2" ] && [ "${shortname}" != "jc3" ] && [ "${shortname}" != "dst" ] && [ "${shortname}" != "pz" ] && [ "${engine}" != "renderware" ]; then
- fn_info_message_commandlineparms
+ fn_info_messages_commandlineparms
fi
- fn_info_message_ports_edit
- fn_info_message_ports
- fn_info_message_select_engine
- fn_info_message_statusbottom
+ fn_info_messages_ports_edit
+ fn_info_messages_ports
+ fn_info_messages_select_engine
+ fn_info_messages_statusbottom
} | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | tee -a "${postdetailslog}" > /dev/null 2>&1
fi
diff --git a/lgsm/modules/command_send.sh b/lgsm/modules/command_send.sh
index e3dafd693..cf6a9f08a 100644
--- a/lgsm/modules/command_send.sh
+++ b/lgsm/modules/command_send.sh
@@ -26,7 +26,7 @@ if [ "${status}" != "0" ]; then
fi
echo ""
fn_print_dots "Sending command to console: \"${commandtosend}\""
- tmux -L "${socketname}" send-keys -t "${servicename}" "${commandtosend}" ENTER
+ tmux -L "${socketname}" send-keys -t "${sessionname}" "${commandtosend}" ENTER
fn_print_ok_nl "Sending command to console: \"${commandtosend}\""
fn_script_log_pass "Command \"${commandtosend}\" sent to console"
else
diff --git a/lgsm/modules/command_start.sh b/lgsm/modules/command_start.sh
index 4b45f0bc3..cca044518 100644
--- a/lgsm/modules/command_start.sh
+++ b/lgsm/modules/command_start.sh
@@ -73,48 +73,25 @@ fn_start_tmux() {
touch "${consolelog}"
# tmux compiled from source will return "master", therefore ignore it.
- if [ "${tmuxv}" == "master" ]; then
+ if [ "${tmuxversion}" == "master" ]; then
fn_script_log "tmux version: master (user compiled)"
echo -e "tmux version: master (user compiled)" >> "${consolelog}"
- if [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
- if [ "${logtimestamp}" == "on" ]; then
- tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
- else
- tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
- fi
- fi
+ fi
- elif [ -n "${tmuxv}" ]; then
- # tmux pipe-pane not supported in tmux versions < 1.6.
- 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 [ "${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}"
- # Console logging enable or not set.
- elif [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
- if [ "${logtimestamp}" == "on" ]; then
- tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
- else
- tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
- fi
+ # Enable console logging.
+ if [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
+ # timestamp will break mcb update check.
+ if [ "${logtimestamp}" == "on" ] && [ "${shortname}" != "mcb" ]; then
+ tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
+ else
+ tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
fi
else
- echo -e "Unable to detect tmux version" >> "${consolelog}"
- fn_script_log_warn "Unable to detect tmux version"
- fi
-
- # Console logging disabled.
- if [ "${consolelogging}" == "off" ]; then
echo -e "Console logging disabled in settings" >> "${consolelog}"
- fn_script_log_info "Console logging disabled by user"
+ fn_script_log_info "Console logging disabled in settings"
fi
- fn_sleep_time
+
+ fn_sleep_time_1
# If the server fails to start.
check_status.sh
@@ -123,7 +100,7 @@ fn_start_tmux() {
fn_script_log_fail "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_fail "Unable to start ${servername}: tmux error:"
+ fn_script_log_fail "Unable to start ${servername}: tmux error"
echo -e ""
echo -e "Command"
fn_messages_separator
@@ -176,6 +153,13 @@ fn_start_tmux() {
fn_print_ok "${servername}"
fn_script_log_pass "Started ${servername}"
+ if [ "${statusalert}" == "on" ] && [ "${firstcommandname}" == "START" ]; then
+ alert="started"
+ alert.sh
+ elif [ "${statusalert}" == "on" ] && [ "${firstcommandname}" == "RESTART" ]; then
+ alert="restarted"
+ alert.sh
+ fi
fi
rm -f "${lgsmlogdir:?}/.${selfname}-tmux-error.tmp" 2> /dev/null
echo -en "\n"
@@ -186,6 +170,7 @@ if [ "${firstcommandname}" == "START" ] || [ "${firstcommandname}" == "RESTART"
date '+%s' > "${lockdir:?}/${selfname}-monitoring.lock"
fi
+fn_print_dots ""
check.sh
# If the server already started dont start again.
diff --git a/lgsm/modules/command_stop.sh b/lgsm/modules/command_stop.sh
index ee9152862..7783cc94f 100644
--- a/lgsm/modules/command_stop.sh
+++ b/lgsm/modules/command_stop.sh
@@ -14,7 +14,7 @@ fn_firstcommand_set
fn_stop_graceful_ctrlc() {
fn_print_dots "Graceful: CTRL+c"
fn_script_log_info "Graceful: CTRL+c"
- # Sends quit.
+ # Sends CTRL+c.
tmux -L "${socketname}" send-keys -t "${sessionname}" C-c > /dev/null 2>&1
# Waits up to 30 seconds giving the server time to shutdown gracefuly.
for seconds in {1..30}; do
@@ -23,9 +23,13 @@ fn_stop_graceful_ctrlc() {
fn_print_ok "Graceful: CTRL+c: ${seconds}: "
fn_print_ok_eol_nl
fn_script_log_pass "Graceful: CTRL+c: OK: ${seconds} seconds"
+ if [ "${statusalert}" == "on" ] && [ "${firstcommandname}" == "STOP" ]; then
+ alert="stopped"
+ alert.sh
+ fi
break
fi
- sleep 1
+ fn_sleep_time_1
fn_print_dots "Graceful: CTRL+c: ${seconds}"
done
check_status.sh
@@ -51,9 +55,13 @@ fn_stop_graceful_cmd() {
fn_print_ok "Graceful: sending \"${1}\": ${seconds}: "
fn_print_ok_eol_nl
fn_script_log_pass "Graceful: sending \"${1}\": OK: ${seconds} seconds"
+ if [ "${statusalert}" == "on" ] && [ "${firstcommandname}" == "STOP" ]; then
+ alert="stopped"
+ alert.sh
+ fi
break
fi
- sleep 1
+ fn_sleep_time_1
fn_print_dots "Graceful: sending \"${1}\": ${seconds}"
done
check_status.sh
@@ -74,18 +82,22 @@ fn_stop_graceful_goldsrc() {
tmux -L "${socketname}" send -t "${sessionname}" quit ENTER > /dev/null 2>&1
# Waits 3 seconds as goldsrc servers restart with the quit command.
for seconds in {1..3}; do
- sleep 1
+ fn_sleep_time_1
fn_print_dots "Graceful: sending \"quit\": ${seconds}"
done
fn_print_ok "Graceful: sending \"quit\": ${seconds}: "
fn_print_ok_eol_nl
fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds"
+ if [ "${statusalert}" == "on" ] && [ "${firstcommandname}" == "STOP" ]; then
+ alert="stopped"
+ alert.sh
+ fi
}
# telnet command for sdtd graceful shutdown.
fn_stop_graceful_sdtd_telnet() {
- if [ -z "${telnetpass}" ] || [ "${telnetpass}" == "NOT SET" ]; then
- sdtd_telnet_shutdown=$(expect -c '
+ if [ -z "${telnetpassword}" ] || [ "${telnetpassword}" == "NOT SET" ]; then
+ sdtdtelnetshutdown=$(expect -c '
proc abort {} {
puts "Timeout or EOF\n"
exit 1
@@ -99,14 +111,14 @@ fn_stop_graceful_sdtd_telnet() {
puts "Completed.\n"
')
else
- sdtd_telnet_shutdown=$(expect -c '
+ sdtdtelnetshutdown=$(expect -c '
proc abort {} {
puts "Timeout or EOF\n"
exit 1
}
spawn telnet '"${telnetip}"' '"${telnetport}"'
expect {
- "password:" { send "'"${telnetpass}"'\r" }
+ "password:" { send "'"${telnetpassword}"'\r" }
default abort
}
expect {
@@ -131,8 +143,8 @@ fn_stop_graceful_sdtd() {
fn_print_dots "Graceful: telnet: ${telnetip}:${telnetport}"
fn_script_log_info "Graceful: telnet: ${telnetip}:${telnetport}"
fn_stop_graceful_sdtd_telnet
- completed=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Completed.")
- refused=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Timeout or EOF")
+ completed=$(echo -en "\n ${sdtdtelnetshutdown}" | grep "Completed.")
+ refused=$(echo -en "\n ${sdtdtelnetshutdown}" | grep "Timeout or EOF")
if [ "${refused}" ]; then
fn_print_error "Graceful: telnet: ${telnetip}:${telnetport} : "
fn_print_fail_eol_nl
@@ -147,14 +159,18 @@ fn_stop_graceful_sdtd() {
if [ "${completed}" ]; then
for seconds in {1..30}; do
fn_stop_graceful_sdtd_telnet
- refused=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Timeout or EOF")
+ refused=$(echo -en "\n ${sdtdtelnetshutdown}" | grep "Timeout or EOF")
if [ "${refused}" ]; then
fn_print_ok "Graceful: telnet: ${telnetip}:${telnetport} : "
fn_print_ok_eol_nl
fn_script_log_pass "Graceful: telnet: ${telnetip}:${telnetport} : ${seconds} seconds"
+ if [ "${statusalert}" == "on" ] && [ "${firstcommandname}" == "STOP" ]; then
+ alert="stopped"
+ alert.sh
+ fi
break
fi
- sleep 1
+ fn_sleep_time_1
fn_print_dots "Graceful: telnet: ${seconds}"
done
# If telnet shutdown fails tmux shutdown will be used, this risks loss of world save.
@@ -169,7 +185,71 @@ fn_stop_graceful_sdtd() {
fi
echo -en "\n" | tee -a "${lgsmlog}"
echo -en "Telnet output:" | tee -a "${lgsmlog}"
- echo -en "\n ${sdtd_telnet_shutdown}" | tee -a "${lgsmlog}"
+ echo -en "\n ${sdtdtelnetshutdown}" | tee -a "${lgsmlog}"
+ echo -en "\n\n" | tee -a "${lgsmlog}"
+ fi
+ else
+ fn_print_warn "Graceful: telnet: expect not installed: "
+ fn_print_fail_eol_nl
+ fn_script_log_warn "Graceful: telnet: expect not installed: FAIL"
+ fi
+}
+
+# Attempts graceful shutdown of Soulmask using telnet.
+fn_stop_graceful_sm() {
+ fn_print_dots "Graceful: telnet"
+ fn_script_log_info "Graceful: telnet"
+ if [ "${telnetenabled}" == "false" ]; then
+ fn_print_info_nl "Graceful: telnet: DISABLED: Enable in ${servercfg}"
+ elif [ "$(command -v expect 2> /dev/null)" ]; then
+ # Tries to shutdown with both localhost and server IP.
+ for telnetip in 127.0.0.1 ${ip}; do
+ fn_print_dots "Graceful: telnet: ${telnetip}:${telnetport}"
+ fn_script_log_info "Graceful: telnet: ${telnetip}:${telnetport}"
+ fn_stop_graceful_sm_telnet
+ completed=$(echo -en "\n ${smtelnetshutdown}" | grep "Completed.")
+ refused=$(echo -en "\n ${smtelnetshutdown}" | grep "Timeout or EOF")
+ if [ "${refused}" ]; then
+ fn_print_error "Graceful: telnet: ${telnetip}:${telnetport} : "
+ fn_print_fail_eol_nl
+ fn_script_log_error "Graceful: telnet: ${telnetip}:${telnetport} : FAIL"
+ elif [ "${completed}" ]; then
+ break
+ fi
+ done
+
+ # If telnet shutdown was successful will use telnet again to check
+ # the connection has closed, confirming that the tmux session can now be killed.
+ if [ "${completed}" ]; then
+ for seconds in {1..30}; do
+ fn_stop_graceful_sm_telnet
+ refused=$(echo -en "\n ${smtelnetshutdown}" | grep "Timeout or EOF")
+ if [ "${refused}" ]; then
+ fn_print_ok "Graceful: telnet: ${telnetip}:${telnetport} : "
+ fn_print_ok_eol_nl
+ fn_script_log_pass "Graceful: telnet: ${telnetip}:${telnetport} : ${seconds} seconds"
+ if [ "${statusalert}" == "on" ] && [ "${firstcommandname}" == "STOP" ]; then
+ alert="stopped"
+ alert.sh
+ fi
+ break
+ fi
+ fn_sleep_time_1
+ fn_print_dots "Graceful: telnet: ${seconds}"
+ done
+ # If telnet shutdown fails, show it and stop
+ else
+ if [ "${refused}" ]; then
+ fn_print_error "Graceful: telnet: "
+ fn_print_fail_eol_nl
+ fn_script_log_error "Graceful: telnet: ${telnetip}:${telnetport} : FAIL"
+ else
+ fn_print_error_nl "Graceful: telnet: Unknown error"
+ fn_script_log_error "Graceful: telnet: Unknown error"
+ fi
+ echo -en "\n" | tee -a "${lgsmlog}"
+ echo -en "Telnet output:" | tee -a "${lgsmlog}"
+ echo -en "\n ${smtelnetshutdown}" | tee -a "${lgsmlog}"
echo -en "\n\n" | tee -a "${lgsmlog}"
fi
else
@@ -179,13 +259,38 @@ fn_stop_graceful_sdtd() {
fi
}
+# telnet command for soulmask graceful shutdown.
+fn_stop_graceful_sm_telnet() {
+ smtelnetshutdown=$(expect -c '
+ proc abort {} {
+ puts "Timeout or EOF\n"
+ exit 1
+ }
+ spawn telnet '"${telnetip}"' '"${telnetport}"'
+ expect {
+ "Hello:" { send "saveworld 1\r" }
+ default abort
+ }
+ expect {
+ "the world is saved." { send "quit 1\r" }
+ default abort
+ }
+ expect {
+ "World is closing..." {}
+ default abort
+ }
+ expect { eof }
+ puts "Completed.\n"
+ ')
+}
+
# Attempts graceful shutdown by sending /save /stop.
fn_stop_graceful_avorion() {
fn_print_dots "Graceful: /save /stop"
fn_script_log_info "Graceful: /save /stop"
# Sends /save.
tmux -L "${socketname}" send-keys -t "${sessionname}" /save ENTER > /dev/null 2>&1
- sleep 5
+ fn_sleep_time_5
# Sends /quit.
tmux -L "${socketname}" send-keys -t "${sessionname}" /stop ENTER > /dev/null 2>&1
# Waits up to 30 seconds giving the server time to shutdown gracefuly.
@@ -195,9 +300,13 @@ fn_stop_graceful_avorion() {
fn_print_ok "Graceful: /save /stop: ${seconds}: "
fn_print_ok_eol_nl
fn_script_log_pass "Graceful: /save /stop: OK: ${seconds} seconds"
+ if [ "${statusalert}" == "on" ] && [ "${firstcommandname}" == "STOP" ]; then
+ alert="stopped"
+ alert.sh
+ fi
break
fi
- sleep 1
+ fn_sleep_time_1
fn_print_dots "Graceful: /save /stop: ${seconds}"
done
check_status.sh
@@ -233,6 +342,8 @@ fn_stop_graceful_select() {
fn_stop_graceful_cmd "end" 30
elif [ "${stopmode}" == "12" ]; then
fn_stop_graceful_cmd "shutdown" 30
+ elif [ "${stopmode}" == "13" ]; then
+ fn_stop_graceful_sm
fi
}
@@ -241,11 +352,15 @@ fn_stop_tmux() {
fn_script_log_info "tmux kill-session: ${sessionname}: ${servername}"
# Kill tmux session.
tmux -L "${socketname}" kill-session -t "${sessionname}" > /dev/null 2>&1
- sleep 0.5
+ fn_sleep_time_1
check_status.sh
if [ "${status}" == "0" ]; then
fn_print_ok_nl "${servername}"
fn_script_log_pass "Stopped ${servername}"
+ if [ "${statusalert}" == "on" ] && [ "${firstcommandname}" == "STOP" ]; then
+ alert="stopped"
+ alert.sh
+ fi
else
fn_print_fail_nl "Unable to stop ${servername}"
fn_script_log_fail "Unable to stop ${servername}"
@@ -268,6 +383,7 @@ fn_stop_pre_check() {
fi
}
+fn_print_dots ""
check.sh
# Create a stopping lockfile that only exists while the stop command is running.
diff --git a/lgsm/modules/command_update_linuxgsm.sh b/lgsm/modules/command_update_linuxgsm.sh
index 65b72bcbb..4358b626c 100644
--- a/lgsm/modules/command_update_linuxgsm.sh
+++ b/lgsm/modules/command_update_linuxgsm.sh
@@ -10,18 +10,26 @@ commandaction="Updating LinuxGSM"
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_firstcommand_set
+fn_print_dots ""
check.sh
info_distro.sh
+info_game.sh
+
+# Prevent github from using a cached version of the file if dev-debug is enabled.
+if [ -f "${rootdir}/.dev-debug" ]; then
+ nocache="-H \"Cache-Control: no-cache\" -H \"Pragma: no-cache\""
+fi
-fn_print_dots ""
fn_script_log_info "Updating LinuxGSM"
fn_print_dots "Selecting repo"
fn_script_log_info "Selecting repo"
# Select remotereponame
-curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1> /dev/null
+
+curl ${nocache} --connect-timeout 3 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1> /dev/null
+
if [ $? != "0" ]; then
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1> /dev/null
+ curl curl ${nocache} --connect-timeout 3 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1> /dev/null
if [ $? != "0" ]; then
fn_print_fail_nl "Selecting repo: Unable to to access GitHub or Bitbucket repositories"
fn_script_log_fail "Selecting repo: Unable to to access GitHub or Bitbucket repositories"
@@ -38,9 +46,9 @@ fi
# Check linuxsm.sh
echo -en "checking ${remotereponame} linuxgsm.sh...\c"
if [ "${remotereponame}" == "GitHub" ]; then
- curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1> /dev/null
+ curl ${nocache} --connect-timeout 3 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1> /dev/null
else
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1> /dev/null
+ curl ${nocache} --connect-timeout 3 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1> /dev/null
fi
if [ $? != "0" ]; then
fn_print_fail_eol_nl
@@ -50,9 +58,9 @@ if [ $? != "0" ]; then
fi
if [ "${remotereponame}" == "GitHub" ]; then
- tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh"))
+ tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl ${nocache} --connect-timeout 3 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh"))
else
- tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh"))
+ tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl ${nocache} --connect-timeout 3 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh"))
fi
if [ "${tmp_script_diff}" != "" ]; then
@@ -92,7 +100,7 @@ if [ "${script_diff}" != "" ]; then
fi
echo -en "copying ${selfname}...\c"
- fn_script_log_info "copying ${selfname}"
+ fn_script_log_info "Copying ${selfname}"
cp "${tmpdir}/linuxgsm.sh" "${rootdir}/${selfname}"
sed -i "s+shortname=\"core\"+shortname=\"${shortname}\"+g" "${rootdir}/${selfname}"
sed -i "s+gameservername=\"core\"+gameservername=\"${gameservername}\"+g" "${rootdir}/${selfname}"
@@ -118,9 +126,9 @@ fi
echo -en "checking ${remotereponame} config _default.cfg...\c"
fn_script_log_info "Checking ${remotereponame} config _default.cfg"
if [ "${remotereponame}" == "GitHub" ]; then
- curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1> /dev/null
+ curl ${nocache} --connect-timeout 3 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1> /dev/null
else
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1> /dev/null
+ curl ${nocache} --connect-timeout 3 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1> /dev/null
fi
if [ $? != "0" ]; then
fn_print_fail_eol_nl
@@ -130,9 +138,9 @@ if [ $? != "0" ]; then
fi
if [ "${remotereponame}" == "GitHub" ]; then
- config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg"))
+ config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl ${nocache} --connect-timeout 3 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg"))
else
- config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg"))
+ config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl ${nocache} --connect-timeout 3 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg"))
fi
if [ "${config_file_diff}" != "" ]; then
@@ -152,9 +160,9 @@ if [ -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then
echo -en "checking ${remotereponame} config ${distroid}-${distroversioncsv}.csv...\c"
fn_script_log_info "Checking ${remotereponame} ${distroid}-${distroversioncsv}.csv"
if [ "${remotereponame}" == "GitHub" ]; then
- curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv" 1> /dev/null
+ curl ${nocache} --connect-timeout 3 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv" 1> /dev/null
else
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv" 1> /dev/null
+ curl ${nocache} --connect-timeout 3 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv" 1> /dev/null
fi
if [ $? != "0" ]; then
fn_print_fail_eol_nl
@@ -164,9 +172,9 @@ if [ -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then
fi
if [ "${remotereponame}" == "GitHub" ]; then
- config_file_diff=$(diff "${datadir}/${distroid}-${distroversioncsv}.csv" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv"))
+ config_file_diff=$(diff "${datadir}/${distroid}-${distroversioncsv}.csv" <(curl ${nocache} --connect-timeout 3 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv"))
else
- config_file_diff=$(diff "${datadir}/${distroid}-${distroversioncsv}.csv" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv"))
+ config_file_diff=$(diff "${datadir}/${distroid}-${distroversioncsv}.csv" <(curl ${nocache} --connect-timeout 3 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv"))
fi
if [ "${config_file_diff}" != "" ]; then
@@ -190,9 +198,9 @@ if [ -n "${modulesdir}" ]; then
echo -en "checking ${remotereponame} module ${modulefile}...\c"
github_file_url_dir="lgsm/modules"
if [ "${remotereponame}" == "GitHub" ]; then
- curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${modulefile}" 1> /dev/null
+ curl ${nocache} --connect-timeout 3 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${modulefile}" 1> /dev/null
else
- curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${modulefile}" 1> /dev/null
+ curl ${nocache} --connect-timeout 3 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${modulefile}" 1> /dev/null
fi
if [ $? != 0 ]; then
fn_print_error_eol_nl
@@ -209,9 +217,9 @@ if [ -n "${modulesdir}" ]; then
else
# compare file
if [ "${remotereponame}" == "GitHub" ]; then
- module_file_diff=$(diff "${modulesdir}/${modulefile}" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${modulefile}"))
+ module_file_diff=$(diff "${modulesdir}/${modulefile}" <(curl ${nocache} --connect-timeout 3 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${modulefile}"))
else
- module_file_diff=$(diff "${modulesdir}/${modulefile}" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${modulefile}"))
+ module_file_diff=$(diff "${modulesdir}/${modulefile}" <(curl ${nocache} --connect-timeout 3 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${modulefile}"))
fi
# results
diff --git a/lgsm/modules/command_validate.sh b/lgsm/modules/command_validate.sh
index f4a6250f3..d3511d7bb 100644
--- a/lgsm/modules/command_validate.sh
+++ b/lgsm/modules/command_validate.sh
@@ -17,7 +17,7 @@ fn_validate() {
for seconds in {3..1}; do
fn_print_warn "Validate might overwrite some customised files: ${totalseconds}"
totalseconds=$((totalseconds - 1))
- sleep 1
+ fn_sleep_time_1
if [ "${seconds}" == "0" ]; then
break
fi
@@ -27,11 +27,11 @@ fn_validate() {
fn_dl_steamcmd
}
-# The location where the builds are checked and downloaded.
-remotelocation="SteamCMD"
+fn_print_dots ""
check.sh
+core_logs.sh
-fn_print_dots "${remotelocation}"
+fn_print_dots "SteamCMD"
if [ "${status}" != "0" ]; then
fn_print_restart_warning
diff --git a/lgsm/modules/command_wipe.sh b/lgsm/modules/command_wipe.sh
index 193d2cd2d..378dae0ec 100644
--- a/lgsm/modules/command_wipe.sh
+++ b/lgsm/modules/command_wipe.sh
@@ -30,7 +30,7 @@ fn_wipe_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_script_log_info "Removing *.map file(s)"
fn_sleep_time
find "${serveridentitydir:?}" -type f -name "*.map" -printf "%f\n" >> "${lgsmlog}"
find "${serveridentitydir:?}" -type f -name "*.map" -delete | tee -a "${lgsmlog}"
@@ -45,7 +45,7 @@ fn_wipe_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_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
@@ -61,7 +61,7 @@ fn_wipe_files() {
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_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
@@ -79,9 +79,9 @@ fn_map_wipe_warning() {
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 "Map wipe will reset the map data and keep blueprint data: ${totalseconds}"
+ fn_print_warn "map wipe will reset the map data and keep blueprint data: ${totalseconds}"
totalseconds=$((totalseconds - 1))
- sleep 1
+ fn_sleep_time_1
if [ "${seconds}" == "0" ]; then
break
fi
@@ -94,9 +94,9 @@ fn_full_wipe_warning() {
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 "Server wipe will reset the map data and remove blueprint data: ${totalseconds}"
+ fn_print_warn "server wipe will reset the map data and remove blueprint data: ${totalseconds}"
totalseconds=$((totalseconds - 1))
- sleep 1
+ fn_sleep_time_1
if [ "${seconds}" == "0" ]; then
break
fi
@@ -167,6 +167,8 @@ if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ] || [ -n "$(find
fn_wipe_random_seed
fn_print_complete_nl "${wipetype}"
fn_script_log_pass "${wipetype}"
+ alert="wipe"
+ alert.sh
exitbypass=1
command_start.sh
fn_firstcommand_reset
@@ -175,6 +177,8 @@ if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ] || [ -n "$(find
fn_wipe_random_seed
fn_print_complete_nl "${wipetype}"
fn_script_log_pass "${wipetype}"
+ alert="wipe"
+ alert.sh
fi
else
fn_print_ok_nl "Wipe not required"
diff --git a/lgsm/modules/core_dl.sh b/lgsm/modules/core_dl.sh
index 3b2e7f117..89a63eb8b 100644
--- a/lgsm/modules/core_dl.sh
+++ b/lgsm/modules/core_dl.sh
@@ -390,7 +390,7 @@ fn_fetch_file() {
fi
# Trap will remove part downloaded files if canceled.
trap fn_fetch_trap INT
- curlcmd=(curl --connect-timeout 10 --fail -L -o "${local_filedir}/${local_filename}" --retry 2)
+ curlcmd=(curl --connect-timeout 3 --fail -L -o "${local_filedir}/${local_filename}" --retry 2)
# if is large file show progress, else be silent
local exitcode=""
@@ -481,12 +481,8 @@ fn_fetch_file() {
fn_fetch_file_github() {
github_file_url_dir="${1}"
github_file_url_name="${2}"
- # For legacy versions - code can be removed at a future date
- if [ "${legacymode}" == "1" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
# If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork.
- elif [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
+ if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
else
diff --git a/lgsm/modules/core_exit.sh b/lgsm/modules/core_exit.sh
index 496cde422..989a4c543 100644
--- a/lgsm/modules/core_exit.sh
+++ b/lgsm/modules/core_exit.sh
@@ -13,6 +13,8 @@ fn_exit_dev_debug() {
echo -e "${moduleselfname} exiting with code: ${exitcode}"
if [ -f "${rootdir}/dev-debug.log" ]; then
grep -a "modulefile=" "${rootdir}/dev-debug.log" | sed 's/modulefile=//g' > "${rootdir}/dev-debug-module-order.log"
+ elif [ -f "${lgsmlogdir}/dev-debug.log" ]; then
+ grep -a "modulefile=" "${lgsmlogdir}/dev-debug.log" | sed 's/modulefile=//g' > "${rootdir}/dev-debug-module-order.log"
fi
fi
}
diff --git a/lgsm/modules/core_functions.sh b/lgsm/modules/core_functions.sh
deleted file mode 100644
index 09eedeb7b..000000000
--- a/lgsm/modules/core_functions.sh
+++ /dev/null
@@ -1,811 +0,0 @@
-#!/bin/bash
-# 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.
-
-module_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-modulesversion="v23.5.3"
-
-# Core
-
-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" "nohash"
- else
- 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" "nohash"
- else
- 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" "nohash"
- else
- fn_bootstrap_fetch_file_github "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash"
- fi
-}
-
-core_exit.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-core_getopt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-core_trap.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-core_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-core_github.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Commands
-
-command_backup.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_console.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_debug.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_details.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_sponsor.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_postdetails.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_test_alert.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_monitor.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_start.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_stop.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_validate.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_install.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_install_resources_mta.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_squad_license.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_mods_install.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_mods_update.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_mods_remove.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_fastdl.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_ts3_server_pass.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_restart.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_skeleton.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_wipe.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_send.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Checks
-
-check.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_config.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_deps.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_executable.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_glibc.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_ip.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_last_update.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_logs.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_permissions.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_root.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_status.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_system_dir.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_system_requirements.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_tmuxception.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-check_version.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Compress
-
-compress_unreal2_maps.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-compress_ut99_maps.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Mods
-
-mods_list.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-mods_core.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Dev
-
-command_dev_clear_functions.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_debug.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_detect_deps.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_detect_glibc.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_detect_ldd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_dev_query_raw.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Fix
-
-fix.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ark.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_av.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_arma3.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_armar.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_bt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_bo.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_cmw.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_csgo.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_dst.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_hw.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ins.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_kf.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_kf2.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_lo.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_mcb.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_mta.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_nmrih.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_onset.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ro.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_rust.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_rw.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_sfc.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_st.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_terraria.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_tf2.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ut3.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_rust.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_samp.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_sdtd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_sof2.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_squad.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ts3.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ut2k4.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_ut.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_unt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_vh.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_wurm.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fix_zmr.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Info
-
-info_distro.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-info_game.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-info_messages.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-info_stats.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Alert
-
-alert.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_discord.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_email.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_ifttt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_pushbullet.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_pushover.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_gotify.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_telegram.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_rocketchat.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-alert_slack.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-# Logs
-
-core_logs.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Query
-
-query_gamedig.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Update
-
-command_update_functions.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_update_linuxgsm.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-command_update.sh() {
- 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
-}
-
-update_mc.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_mcb.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_pmc.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_mta.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_fctr.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_jk2.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_vints.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-update_ut99.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-fn_update_functions.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-#
-## Installer functions
-#
-
-fn_autoinstall() {
- autoinstall=1
- command_install.sh
-}
-
-install_complete.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_config.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_factorio_save.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_dst_token.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_eula.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_gsquery.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_gslt.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_header.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_logs.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_retry.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_server_dir.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-install_server_files.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_stats.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_steamcmd.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_ts3.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_ts3db.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_ut2k4.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_dl_ut2k4.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-install_ut2k4_key.sh() {
- functionfile="${FUNCNAME[0]}"
- fn_fetch_function
-}
-
-# Calls code required for legacy servers
-core_legacy.sh
-
-# Creates tmp dir if missing
-if [ ! -d "${tmpdir}" ]; then
- mkdir -p "${tmpdir}"
-fi
-
-# Creates lock dir if missing
-if [ ! -d "${lockdir}" ]; then
- mkdir -p "${lockdir}"
-fi
-
-# Calls on-screen messages (bootstrap)
-core_messages.sh
-
-#Calls file downloader (bootstrap)
-core_dl.sh
-
-# Calls the global Ctrl-C trap
-core_trap.sh
diff --git a/lgsm/modules/core_getopt.sh b/lgsm/modules/core_getopt.sh
index 1003839ea..cd3e57cb5 100644
--- a/lgsm/modules/core_getopt.sh
+++ b/lgsm/modules/core_getopt.sh
@@ -22,7 +22,7 @@ cmd_update_linuxgsm=("ul;update-lgsm;uf;update-modules" "command_update_linuxgsm
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_sponsor=("s;sponsor" "command_sponsor.sh" "Donation options.")
+cmd_sponsor=("s;sponsor" "command_sponsor.sh" "Sponsorship 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.")
@@ -50,7 +50,8 @@ cmd_install_squad_license=("li;license" "install_squad_license.sh" "Add your Squ
cmd_fastdl=("fd;fastdl" "command_fastdl.sh" "Build a FastDL directory.")
# Dev commands.
cmd_dev_debug=("dev;developer" "command_dev_debug.sh" "Enable developer Mode.")
-cmd_dev_details=("ddt;detect-details" "command_dev_details.sh" "Display parsed details.")
+cmd_dev_parse_game_details=("pgd;parse-game-details" "command_dev_parse_game_details.sh" "Display parsed gameserver details.")
+cmd_dev_parse_distro_details=("pdd;parse-distro-details" "command_dev_parse_distro_details.sh" "Display parsed distro details.")
cmd_dev_detect_deps=("dd;detect-deps" "command_dev_detect_deps.sh" "Detect required dependencies.")
cmd_dev_detect_glibc=("dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect required glibc.")
cmd_dev_detect_ldd=("dl;detect-ldd" "command_dev_detect_ldd.sh" "Detect required dynamic dependencies.")
@@ -146,7 +147,7 @@ currentopt+=("${cmd_install[@]}" "${cmd_auto_install[@]}")
## Developer commands.
currentopt+=("${cmd_dev_debug[@]}")
if [ -f ".dev-debug" ]; then
- currentopt+=("${cmd_dev_details[@]}" "${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" "${cmd_dev_query_raw[@]}" "${cmd_dev_clear_modules[@]}")
+ currentopt+=("${cmd_dev_parse_game_details[@]}" "${cmd_dev_parse_distro_details[@]}" "${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" "${cmd_dev_query_raw[@]}" "${cmd_dev_clear_modules[@]}")
fi
## Sponsor.
diff --git a/lgsm/modules/core_github.sh b/lgsm/modules/core_github.sh
index 7290f9bdf..402ee078c 100644
--- a/lgsm/modules/core_github.sh
+++ b/lgsm/modules/core_github.sh
@@ -23,7 +23,7 @@ fn_github_get_latest_release_version() {
local githubreleaserepo="${2}"
local githublatestreleaseurl="${github_api}/repos/${githubreleaseuser}/${githubreleaserepo}/releases/latest"
- githubreleaseversion=$(curl -s --connect-timeout 10 "${githublatestreleaseurl}" | jq '.tag_name')
+ githubreleaseversion=$(curl -s --connect-timeout 3 "${githublatestreleaseurl}" | jq '.tag_name')
# error if no version is there
if [ -z "${githubreleaseversion}" ]; then
diff --git a/lgsm/modules/core_legacy.sh b/lgsm/modules/core_legacy.sh
index 7a7e554ed..cf11e3a54 100644
--- a/lgsm/modules/core_legacy.sh
+++ b/lgsm/modules/core_legacy.sh
@@ -7,14 +7,6 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-# This is to help the transition to v20.3.0 and above
-legacy_versions_array=(v20.2.1 v20.2.0 v20.1.5 v20.1.4 v20.1.3 v20.1.2 v20.1.1 v20.1.0 v19.12.5 v19.12.4 v19.12.3 v19.12.2 v19.12.1 v19.12.0)
-for legacy_version in "${legacy_versions_array[@]}"; do
- if [ "${version}" == "${legacy_version}" ]; then
- legacymode=1
- fi
-done
-
if [ -z "${socketname}" ]; then
socketname="${sessionname}"
fi
@@ -43,69 +35,6 @@ if [ -n "${autosaveinterval}" ]; then
saveinterval="${autosaveinterval}"
fi
-if [ -z "${serverfiles}" ]; then
- serverfiles="${filesdir}"
-fi
-
-if [ -z "${logdir}" ]; then
- [ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || logdir="${rootdir}/log"
-fi
-
-if [ -z "${lgsmlogdir}" ]; then
- lgsmlogdir="${scriptlogdir}"
-fi
-
-if [ -z "${lgsmlog}" ]; then
- lgsmlog="${scriptlog}"
-fi
-
-if [ -z "${lgsmlogdate}" ]; then
- lgsmlogdate="${scriptlogdate}"
-fi
-
-if [ -z "${steamcmddir}" ]; then
- steamcmddir="${HOME}/.steam/steamcmd"
-fi
-
-if [ -z "${lgsmdir}" ]; then
- lgsmdir="${rootdir}/lgsm"
-fi
-
-if [ -z "${tmpdir}" ]; then
- tmpdir="${lgsmdir}/tmp"
-fi
-
-if [ -z "${alertlog}" ]; then
- alertlog="${emaillog}"
-fi
-
-if [ -z "${servicename}" ]; then
- servicename="${selfname}"
-fi
-
-# Alternations to workshop variables.
-if [ -z "${wsapikey}" ]; then
- if [ "${workshopauth}" ]; then
- wsapikey="${workshopauth}"
- elif [ "${authkey}" ]; then
- wsapikey="${authkey}"
- fi
-fi
-
-if [ -z "${wscollectionid}" ]; then
- if [ "${workshopauth}" ]; then
- wscollectionid="${ws_collection_id}"
- elif [ "${authkey}" ]; then
- wscollectionid="${workshopcollectionid}"
- fi
-fi
-
-if [ -z "${wsstartmap}" ]; then
- if [ "${ws_start_map}" ]; then
- wscollectionid="${ws_start_map}"
- fi
-fi
-
# Added as part of migrating functions dir to modules dir.
# Will remove functions dir if files in modules dir older than 14 days
functionsdir="${lgsmdir}/modules"
diff --git a/lgsm/modules/core_messages.sh b/lgsm/modules/core_messages.sh
index 5af4c5639..6488c02bc 100644
--- a/lgsm/modules/core_messages.sh
+++ b/lgsm/modules/core_messages.sh
@@ -10,6 +10,8 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# nl: new line: message is following by a new line.
# eol: end of line: message is placed at the end of the current line.
fn_ansi_loader() {
+ # carriage return.
+ creeol="\r"
if [ "${ansi}" != "off" ]; then
# echo colors
default="\e[0m"
@@ -29,18 +31,29 @@ fn_ansi_loader() {
darkgrey="\e[90m"
lightgrey="\e[37m"
white="\e[97m"
+ # erase to end of line.
+ creeol+="\033[K"
fi
- # carriage return & erase to end of line.
- creeol="\r\033[K"
}
fn_sleep_time() {
- if [ "${sleeptime}" != "0" ] || [ "${travistest}" != "1" ]; then
- if [ -z "${sleeptime}" ]; then
- sleeptime=0.5
- fi
- sleep "${sleeptime}"
- fi
+ sleep "0.1"
+}
+
+fn_sleep_time_05() {
+ sleep "0.5"
+}
+
+fn_sleep_time_1() {
+ sleep "1"
+}
+
+fn_sleep_time_5() {
+ sleep "5"
+}
+
+fn_sleep_time_10() {
+ sleep "10"
}
# Log display
@@ -137,7 +150,7 @@ fn_print_dots() {
else
echo -en "${creeol}[ .... ] $*"
fi
- fn_sleep_time
+ fn_sleep_time_05
}
fn_print_dots_nl() {
@@ -146,7 +159,7 @@ fn_print_dots_nl() {
else
echo -e "${creeol}[ .... ] $*"
fi
- fn_sleep_time
+ fn_sleep_time_05
echo -en "\n"
}
@@ -476,56 +489,56 @@ fn_print_info_eol_nl() {
# QUERYING
fn_print_querying_eol() {
echo -en "${cyan}QUERYING${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
fn_print_querying_eol_nl() {
echo -e "${cyan}QUERYING${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
# CHECKING
fn_print_checking_eol() {
echo -en "${cyan}CHECKING${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
fn_print_checking_eol_nl() {
echo -e "${cyan}CHECKING${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
# DELAY
fn_print_delay_eol() {
echo -en "${green}DELAY${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
fn_print_delay_eol_nl() {
echo -e "${green}DELAY${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
# CANCELED
fn_print_canceled_eol() {
echo -en "${lightyellow}CANCELED${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
fn_print_canceled_eol_nl() {
echo -e "${lightyellow}CANCELED${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
# REMOVED
fn_print_removed_eol() {
echo -en "${red}REMOVED${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
fn_print_removed_eol_nl() {
echo -e "${red}REMOVED${default}"
- fn_sleep_time
+ fn_sleep_time_1
}
# UPDATE
@@ -582,7 +595,7 @@ fn_print_restart_warning() {
for seconds in {3..1}; do
fn_print_warn "${selfname} will be restarted: ${totalseconds}"
totalseconds=$((totalseconds - 1))
- sleep 1
+ fn_sleep_time_1
if [ "${seconds}" == "0" ]; then
break
fi
diff --git a/lgsm/modules/core_modules.sh b/lgsm/modules/core_modules.sh
index c2b529741..3cf0cd8e6 100644
--- a/lgsm/modules/core_modules.sh
+++ b/lgsm/modules/core_modules.sh
@@ -8,7 +8,7 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-modulesversion="v23.5.3"
+modulesversion="v24.2.3"
# Core
@@ -299,7 +299,12 @@ command_dev_debug.sh() {
fn_fetch_module
}
-command_dev_details.sh() {
+command_dev_parse_game_details.sh() {
+ modulefile="${FUNCNAME[0]}"
+ fn_fetch_module
+}
+
+command_dev_parse_distro_details.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
}
@@ -396,11 +401,6 @@ fix_kf2.sh() {
fn_fetch_module
}
-fix_lo.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_fetch_module
-}
-
fix_mcb.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
@@ -446,6 +446,11 @@ fix_sfc.sh() {
fn_fetch_module
}
+fix_sm.sh() {
+ modulefile="${FUNCNAME[0]}"
+ fn_fetch_module
+}
+
fix_st.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
@@ -719,6 +724,11 @@ install_factorio_save.sh() {
fn_fetch_module
}
+check_gamedig.sh() {
+ modulefile="${FUNCNAME[0]}"
+ fn_fetch_module
+}
+
install_dst_token.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
diff --git a/lgsm/modules/core_steamcmd.sh b/lgsm/modules/core_steamcmd.sh
index e628e44b9..326fecf70 100644
--- a/lgsm/modules/core_steamcmd.sh
+++ b/lgsm/modules/core_steamcmd.sh
@@ -179,7 +179,9 @@ fn_update_steamcmd_remotebuild() {
fi
# added as was failing GitHub Actions test. Running SteamCMD twice seems to fix it.
- ${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +quit > /dev/null 2>&1
+ if [ "${CI}" ]; then
+ ${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +quit > /dev/null 2>&1
+ fi
# password for branch not needed to check the buildid
remotebuildversion=$(${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:]')
diff --git a/lgsm/modules/fix.sh b/lgsm/modules/fix.sh
index 9a4f5b779..e6e00465d 100644
--- a/lgsm/modules/fix.sh
+++ b/lgsm/modules/fix.sh
@@ -52,13 +52,13 @@ fn_apply_fix() {
fi
}
-apply_pre_start_fix=(arma3 armar ark av bt bo csgo cmw dst hw ins nmrih onset pvr rust rw sdtd sfc sof2 squad st tf2 terraria ts3 mcb mta unt vh wurm zmr)
-apply_post_install_fix=(av kf kf2 lo ro samp ut2k4 ut ut3)
+apply_pre_start_fix=(arma3 armar ark av bt bo csgo cmw dst hw ins kf nmrih onset pvr ro rust rw samp sdtd sfc sm sof2 squad st tf2 terraria ts3 mcb mta unt vh wurm zmr)
+apply_post_install_fix=(av kf kf2 ro ut2k4 ut ut3)
# validate registered fixes for safe development
for fix in "${apply_pre_start_fix[@]}" "${apply_post_install_fix[@]}"; do
if ! fn_exists_fix "${fix}"; then
- fn_print_fail_nl "fix_${fix}.sh is registered but doesn't exist. Typo or did you miss to modify core_functions.sh?"
+ fn_print_fail_nl "fix_${fix}.sh is registered but doesn't exist. Typo or did you miss to modify core_modules.sh?"
exitcode=1
core_exit.sh
fi
diff --git a/lgsm/modules/fix_armar.sh b/lgsm/modules/fix_armar.sh
index 6b68c2a63..ae2c08f33 100755
--- a/lgsm/modules/fix_armar.sh
+++ b/lgsm/modules/fix_armar.sh
@@ -5,7 +5,7 @@
# Website: https://linuxgsm.com
# Description: Resolves issues with Arma Reforger.
-module_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
+moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Fixes: Profile directory doesn't exist.
# Issue Link: https://feedback.bistudio.com/T164845
diff --git a/lgsm/modules/fix_kf.sh b/lgsm/modules/fix_kf.sh
index fe8b574aa..e38b5883a 100644
--- a/lgsm/modules/fix_kf.sh
+++ b/lgsm/modules/fix_kf.sh
@@ -7,30 +7,111 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-echo -e "Applying WebAdmin ROOst.css fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
+# echo -e "applying WebAdmin ROOst.css fix."
+# echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
-fn_sleep_time
-echo -e "Applying WebAdmin CharSet fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
+# echo -e "applying WebAdmin CharSet fix."
+# echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int"
-fn_sleep_time
-echo -e "applying server name fix."
-fn_sleep_time
-echo -e "forcing server restart..."
-fn_sleep_time
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
+
+# get md5sum of steamclient.so
+if [ -f "${serverfiles}/System/steamclient.so" ]; then
+ steamclientmd5=$(md5sum "${serverfiles}/System/steamclient.so" | awk '{print $1;}')
+fi
+#get md5sum of libtier0_s.so
+if [ -f "${serverfiles}/System/libtier0_s.so" ]; then
+ libtier0_smd5=$(md5sum "${serverfiles}/System/libtier0_s.so" | awk '{print $1;}')
+fi
+#get md5sum of libvstdlib_s.so
+if [ -f "${serverfiles}/System/libvstdlib_s.so" ]; then
+ libvstdlib_smd5=$(md5sum "${serverfiles}/System/libvstdlib_s.so" | awk '{print $1;}')
+fi
+
+# get md5sum of steamclient.so from steamcmd
+if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
+ steamcmdsteamclientmd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/steamclient.so" | awk '{print $1;}')
+elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
+ steamcmdsteamclientmd5=$(md5sum "${steamcmddir}/linux32/steamclient.so" | awk '{print $1;}')
+elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
+ steamcmdsteamclientmd5=$(md5sum "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" | awk '{print $1;}')
+fi
+
+# get md5sum of libtier0_s.so from steamcmd
+if [ -f "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" ]; then
+ steamcmdlibtier0_smd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" | awk '{print $1;}')
+elif [ -f "${steamcmddir}/linux32/libtier0_s.so" ]; then
+ steamcmdlibtier0_smd5=$(md5sum "${steamcmddir}/linux32/libtier0_s.so" | awk '{print $1;}')
+elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" ]; then
+ steamcmdlibtier0_smd5=$(md5sum "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" | awk '{print $1;}')
+fi
+
+# get md5sum of libvstdlib_s.so from steamcmd
+if [ -f "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+ steamcmdlibvstdlib_smd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" | awk '{print $1;}')
+elif [ -f "${steamcmddir}/linux32/libvstdlib_s.so" ]; then
+ steamcmdlibvstdlib_smd5=$(md5sum "${steamcmddir}/linux32/libvstdlib_s.so" | awk '{print $1;}')
+elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+ steamcmdlibvstdlib_smd5=$(md5sum "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" | awk '{print $1;}')
+fi
+
+if [ ! -f "${serverfiles}/System/steamclient.so" ] || [ "${steamcmdsteamclientmd5}" != "${steamclientmd5}" ]; then
+ fixname="steamclient.so x86"
+ fn_fix_msg_start
+ if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
+ cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/System/steamclient.so"
+ elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
+ cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/System/steamclient.so"
+ elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
+ cp "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" "${serverfiles}/System/steamclient.so"
+ fi
+ fn_fix_msg_end
+fi
+
+if [ ! -f "${serverfiles}/System/libtier0_s.so" ] || [ "${steamcmdlibtier0_smd5}" != "${libtier0_smd5}" ]; then
+ fixname="libtier0_s.so"
+ fn_fix_msg_start
+ if [ -f "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" ]; then
+ cp "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" "${serverfiles}/System/libtier0_s.so"
+ elif [ -f "${steamcmddir}/linux32/libtier0_s.so" ]; then
+ cp "${steamcmddir}/linux32/libtier0_s.so" "${serverfiles}/System/libtier0_s.so"
+ elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" ]; then
+ cp "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" "${serverfiles}/System/libtier0_s.so"
+ fi
+ fn_fix_msg_end
+fi
+
+if [ ! -f "${serverfiles}/System/libvstdlib_s.so" ] || [ "${steamcmdlibvstdlib_smd5}" != "${libvstdlib_smd5}" ]; then
+ fixname="libvstdlib_s.so"
+ fn_fix_msg_start
+ if [ -f "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+ cp "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" "${serverfiles}/System/libvstdlib_s.so"
+ elif [ -f "${steamcmddir}/linux32/libvstdlib_s.so" ]; then
+ cp "${steamcmddir}/linux32/libvstdlib_s.so" "${serverfiles}/System/libvstdlib_s.so"
+ elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+ cp "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" "${serverfiles}/System/libvstdlib_s.so"
+ fi
+ fn_fix_msg_end
+fi
+
+# if running install command
+if [ "${commandname}" == "INSTALL" ]; then
+ echo -e "applying server name fix."
+ fn_sleep_time
+ echo -e "forcing server restart..."
+ fn_sleep_time
+ exitbypass=1
+ command_start.sh
+ fn_firstcommand_reset
+ fn_sleep_time_5
+ exitbypass=1
+ command_stop.sh
+ fn_firstcommand_reset
+ exitbypass=1
+ command_start.sh
+ fn_firstcommand_reset
+ fn_sleep_time_5
+ exitbypass=1
+ command_stop.sh
+ fn_firstcommand_reset
+fi
diff --git a/lgsm/modules/fix_kf2.sh b/lgsm/modules/fix_kf2.sh
index 13176d448..cb4707414 100644
--- a/lgsm/modules/fix_kf2.sh
+++ b/lgsm/modules/fix_kf2.sh
@@ -13,7 +13,7 @@ fn_print_information "starting ${gamename} server to generate configs."
exitbypass=1
command_start.sh
fn_firstcommand_reset
-sleep 10
+fn_sleep_time_10
exitbypass=1
command_stop.sh
fn_firstcommand_reset
diff --git a/lgsm/modules/fix_lo.sh b/lgsm/modules/fix_lo.sh
deleted file mode 100644
index 4966afd57..000000000
--- a/lgsm/modules/fix_lo.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-# LinuxGSM fix_lo.sh module
-# Author: Daniel Gibbs
-# Website: https://linuxgsm.com
-# Description: Resolves various issues with Last Oasis.
-
-moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-appidfile=${executabledir}/steam_appid.txt
-if [ ! -f "${appidfile}" ]; then
- fn_print_information "adding ${appidfile} to ${gamename} server."
- echo "903950" > "${appidfile}"
-else
- fn_print_information "${appidfile} already exists. No action to be taken."
-fi
diff --git a/lgsm/modules/fix_nmrih.sh b/lgsm/modules/fix_nmrih.sh
index 83a5ad412..dfbb76d92 100644
--- a/lgsm/modules/fix_nmrih.sh
+++ b/lgsm/modules/fix_nmrih.sh
@@ -8,10 +8,24 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so"
-ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so"
-ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so"
-ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so"
-ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so"
-ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so"
-ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so"
+if [ ! -f "${serverfiles}/bin/vphysics.so" ]; then
+ ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so"
+fi
+if [ ! -f "${serverfiles}/bin/studiorender.so" ]; then
+ ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so"
+fi
+if [ ! -f "${serverfiles}/bin/soundemittersystem.so" ]; then
+ ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so"
+fi
+if [ ! -f "${serverfiles}/bin/shaderapiempty.so" ]; then
+ ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so"
+fi
+if [ ! -f "${serverfiles}/bin/scenefilecache.so" ]; then
+ ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so"
+fi
+if [ ! -f "${serverfiles}/bin/replay.so" ]; then
+ ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so"
+fi
+if [ ! -f "${serverfiles}/bin/materialsystem.so" ]; then
+ ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so"
+fi
diff --git a/lgsm/modules/fix_ro.sh b/lgsm/modules/fix_ro.sh
index 6ae485dbe..21663a9ea 100644
--- a/lgsm/modules/fix_ro.sh
+++ b/lgsm/modules/fix_ro.sh
@@ -3,37 +3,115 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
-# Description: Resolves issues with Red Orchestra.
+# Description: Resolves issues with Red Orchestra: Ostfront 41-45.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-echo -e "Applying webinterface ROOst.css fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
+# echo -e "applying WebAdmin ROOst.css fix."
+# echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
-fn_sleep_time
-echo -e "Applying webinterface CharSet fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
+# echo -e "applying WebAdmin CharSet fix."
+# echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/uweb.int"
-fn_sleep_time
-echo -e "Applying Steam AppID fix."
-sed -i 's/1210/1200/g' "${systemdir}/steam_appid.txt"
-fn_sleep_time
-echo -e "applying server name fix."
-fn_sleep_time
-echo -e "forcing server restart..."
-fn_sleep_time
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-sleep 5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
+
+# get md5sum of steamclient.so
+if [ -f "${serverfiles}/system/steamclient.so" ]; then
+ steamclientmd5=$(md5sum "${serverfiles}/system/steamclient.so" | awk '{print $1;}')
+fi
+#get md5sum of libtier0_s.so
+if [ -f "${serverfiles}/system/libtier0_s.so" ]; then
+ libtier0_smd5=$(md5sum "${serverfiles}/system/libtier0_s.so" | awk '{print $1;}')
+fi
+#get md5sum of libvstdlib_s.so
+if [ -f "${serverfiles}/system/libvstdlib_s.so" ]; then
+ libvstdlib_smd5=$(md5sum "${serverfiles}/system/libvstdlib_s.so" | awk '{print $1;}')
+fi
+
+# get md5sum of steamclient.so from steamcmd
+if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
+ steamcmdsteamclientmd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/steamclient.so" | awk '{print $1;}')
+elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
+ steamcmdsteamclientmd5=$(md5sum "${steamcmddir}/linux32/steamclient.so" | awk '{print $1;}')
+elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
+ steamcmdsteamclientmd5=$(md5sum "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" | awk '{print $1;}')
+fi
+
+# get md5sum of libtier0_s.so from steamcmd
+if [ -f "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" ]; then
+ steamcmdlibtier0_smd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" | awk '{print $1;}')
+elif [ -f "${steamcmddir}/linux32/libtier0_s.so" ]; then
+ steamcmdlibtier0_smd5=$(md5sum "${steamcmddir}/linux32/libtier0_s.so" | awk '{print $1;}')
+elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" ]; then
+ steamcmdlibtier0_smd5=$(md5sum "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" | awk '{print $1;}')
+fi
+
+# get md5sum of libvstdlib_s.so from steamcmd
+if [ -f "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+ steamcmdlibvstdlib_smd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" | awk '{print $1;}')
+elif [ -f "${steamcmddir}/linux32/libvstdlib_s.so" ]; then
+ steamcmdlibvstdlib_smd5=$(md5sum "${steamcmddir}/linux32/libvstdlib_s.so" | awk '{print $1;}')
+elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+ steamcmdlibvstdlib_smd5=$(md5sum "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" | awk '{print $1;}')
+fi
+
+if [ ! -f "${serverfiles}/system/steamclient.so" ] || [ "${steamcmdsteamclientmd5}" != "${steamclientmd5}" ]; then
+ fixname="steamclient.so x86"
+ fn_fix_msg_start
+ if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
+ cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/system/steamclient.so"
+ elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
+ cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/system/steamclient.so"
+ elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
+ cp "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" "${serverfiles}/system/steamclient.so"
+ fi
+ fn_fix_msg_end
+fi
+
+if [ ! -f "${serverfiles}/system/libtier0_s.so" ] || [ "${steamcmdlibtier0_smd5}" != "${libtier0_smd5}" ]; then
+ fixname="libtier0_s.so"
+ fn_fix_msg_start
+ if [ -f "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" ]; then
+ cp "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" "${serverfiles}/system/libtier0_s.so"
+ elif [ -f "${steamcmddir}/linux32/libtier0_s.so" ]; then
+ cp "${steamcmddir}/linux32/libtier0_s.so" "${serverfiles}/system/libtier0_s.so"
+ elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" ]; then
+ cp "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" "${serverfiles}/system/libtier0_s.so"
+ fi
+ fn_fix_msg_end
+fi
+
+if [ ! -f "${serverfiles}/system/libvstdlib_s.so" ] || [ "${steamcmdlibvstdlib_smd5}" != "${libvstdlib_smd5}" ]; then
+ fixname="libvstdlib_s.so"
+ fn_fix_msg_start
+ if [ -f "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+ cp "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" "${serverfiles}/system/libvstdlib_s.so"
+ elif [ -f "${steamcmddir}/linux32/libvstdlib_s.so" ]; then
+ cp "${steamcmddir}/linux32/libvstdlib_s.so" "${serverfiles}/system/libvstdlib_s.so"
+ elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+ cp "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" "${serverfiles}/system/libvstdlib_s.so"
+ fi
+ fn_fix_msg_end
+fi
+
+# if running install command
+if [ "${commandname}" == "INSTALL" ]; then
+ echo -e "applying server name fix."
+ fn_sleep_time
+ echo -e "forcing server restart..."
+ fn_sleep_time
+ exitbypass=1
+ command_start.sh
+ fn_firstcommand_reset
+ fn_sleep_time_5
+ exitbypass=1
+ command_stop.sh
+ fn_firstcommand_reset
+ exitbypass=1
+ command_start.sh
+ fn_firstcommand_reset
+ fn_sleep_time_5
+ exitbypass=1
+ command_stop.sh
+ fn_firstcommand_reset
+fi
diff --git a/lgsm/modules/fix_rust.sh b/lgsm/modules/fix_rust.sh
index 6d4cebc01..809b5b1df 100644
--- a/lgsm/modules/fix_rust.sh
+++ b/lgsm/modules/fix_rust.sh
@@ -30,3 +30,21 @@ if [ -f "${serverfiles}/carbon/tools/environment.sh" ]; then
# shellcheck source=/dev/null
source "${serverfiles}/carbon/tools/environment.sh"
fi
+
+# fix for #4268
+# insert set -g default-terminal "screen-256color" into ~/.tmux.conf
+if [ -f "${serverfiles}/RustDedicated_Data/Managed/Oxide.Rust.dll" ]; then
+ # tmux version is 3.3 or higher
+ tmuxvdigit="$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')"
+ if [ "${tmuxvdigit}" -ge "33" ]; then
+ if [ ! -f "${HOME}/.tmux.conf" ]; then
+ touch "${HOME}/.tmux.conf"
+ fi
+ if ! grep -q "set -g default-terminal \"screen-256color\"" "${HOME}/.tmux.conf"; then
+ fixname="tmux screen-256color"
+ fn_fix_msg_start
+ echo "set -g default-terminal \"screen-256color\"" >> "${HOME}/.tmux.conf"
+ fn_fix_msg_end
+ fi
+ fi
+fi
diff --git a/lgsm/modules/fix_samp.sh b/lgsm/modules/fix_samp.sh
index 24882f915..0b5d0ab22 100644
--- a/lgsm/modules/fix_samp.sh
+++ b/lgsm/modules/fix_samp.sh
@@ -15,7 +15,7 @@ if [ -f "${servercfgfullpath}" ]; then
if [ "${currentpass}" == "${defaultpass}" ]; then
fixname="change default rcon password"
fn_fix_msg_start
- fn_script_log_info "changing rcon/admin password."
+ fn_script_log_info "Changing rcon/admin password."
randomstring=$(tr -dc 'A-Za-z0-9_' < /dev/urandom 2> /dev/null | head -c 8 | xargs)
rconpass="admin${randomstring}"
sed -i "s/rcon_password changeme/rcon_password ${rconpass}/g" "${servercfgfullpath}"
@@ -27,7 +27,7 @@ if [ -f "${servercfgfullpath}" ]; then
if [ "${currenthostname}" == "${defaulthostname}" ]; then
fixname="change default hostname"
fn_fix_msg_start
- fn_script_log_info "changing default hostname to LinuxGSM"
+ fn_script_log_info "Changing default hostname to LinuxGSM"
sed -i "s/hostname ${defaulthostname}/hostname LinuxGSM/g" "${servercfgfullpath}"
fn_fix_msg_end
fi
diff --git a/lgsm/functions/fix_rw.sh b/lgsm/modules/fix_sm.sh
similarity index 55%
rename from lgsm/functions/fix_rw.sh
rename to lgsm/modules/fix_sm.sh
index aef41a703..1d72a48bf 100644
--- a/lgsm/functions/fix_rw.sh
+++ b/lgsm/modules/fix_sm.sh
@@ -1,10 +1,10 @@
#!/bin/bash
-# LinuxGSM fix_rw.sh module
+# LinuxGSM fix_sm.sh module
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
-# Description: Resolves various issues with Rising World.
+# Description: Resolves issues with Unturned.
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
+moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64"
diff --git a/lgsm/modules/fix_ut2k4.sh b/lgsm/modules/fix_ut2k4.sh
index 2f7fc0d4d..5da1eee12 100644
--- a/lgsm/modules/fix_ut2k4.sh
+++ b/lgsm/modules/fix_ut2k4.sh
@@ -23,14 +23,14 @@ fn_sleep_time
exitbypass=1
command_start.sh
fn_firstcommand_reset
-sleep 5
+fn_sleep_time_5
exitbypass=1
command_stop.sh
fn_firstcommand_reset
exitbypass=1
command_start.sh
fn_firstcommand_reset
-sleep 5
+fn_sleep_time_5
exitbypass=1
command_stop.sh
fn_firstcommand_reset
diff --git a/lgsm/modules/fix_ut3.sh b/lgsm/modules/fix_ut3.sh
index d725de4a2..386833efc 100644
--- a/lgsm/modules/fix_ut3.sh
+++ b/lgsm/modules/fix_ut3.sh
@@ -13,7 +13,7 @@ fn_print_information "starting ${gamename} server to generate configs."
exitbypass=1
command_start.sh
fn_firstcommand_reset
-sleep 10
+fn_sleep_time_10
exitbypass=1
command_stop.sh
fn_firstcommand_reset
diff --git a/lgsm/modules/fix_vh.sh b/lgsm/modules/fix_vh.sh
index c642a1a57..7c1455443 100644
--- a/lgsm/modules/fix_vh.sh
+++ b/lgsm/modules/fix_vh.sh
@@ -17,6 +17,12 @@ if [ -f "${modsinstalledlistfullpath}" ]; then
echo 'executable="./start_server_bepinex.sh"' >> "${configdirserver}/${selfname}.cfg"
executable="./start_server_bepinex.sh"
fi
+ if [ -d "${serverfiles}/unstripped_corlib" ]; then
+ rm -rf "${serverfiles}/unstripped_corlib"
+ fi
+ sed -i "s/^dllSearchPathOverride=unstripped_corlib/# &/" "${serverfiles}/doorstop_config.ini"
+ sed -i "s/^export DOORSTOP_CORLIB_OVERRIDE_PATH="$BASEDIR\/unstripped_corlib"/# &/" "${serverfiles}/start_game_bepinex.sh"
+ sed -i "s/^export DOORSTOP_CORLIB_OVERRIDE_PATH="${VALHEIM_PLUS_PATH}\/unstripped_corlib"/# &/" "${serverfiles}/start_server_bepinex.sh"
fi
# special exports for BepInEx if installed
if grep -qE "^bepinexvh" "${modsinstalledlistfullpath}"; then
diff --git a/lgsm/modules/info_distro.sh b/lgsm/modules/info_distro.sh
index a5607ef45..adcdb759b 100644
--- a/lgsm/modules/info_distro.sh
+++ b/lgsm/modules/info_distro.sh
@@ -5,6 +5,7 @@
# 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.
+# !Note: When adding variables to this script, ensure that they are also added to the command_dev_parse_distro_details.sh script.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
@@ -21,114 +22,107 @@ fi
## Distro
# Returns architecture, kernel and distro/os.
-arch="$(uname -m)"
-kernel="$(uname -r)"
-
-# Distro Name - Ubuntu 16.04 LTS
-# Distro Version - 16.04
-# Distro ID - ubuntu
-# Distro Codename - xenial
+arch="$(uname -m)" # Architecture e.g. x86_64
+kernel="$(uname -r)" # Kernel e.g. 2.6.32-042stab120.16
# Gathers distro info from various sources filling in missing gaps.
distro_info_array=(os-release lsb_release hostnamectl debian_version redhat-release)
for distro_info in "${distro_info_array[@]}"; do
if [ -f "/etc/os-release" ] && [ "${distro_info}" == "os-release" ]; then
- distroname="$(grep "PRETTY_NAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
- distroversion="$(grep "VERSION_ID" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
- # Special var for rhel like distros to removed point in number e.g 8.4 to just 8.
- distroversionrh="$(sed -nr 's/^VERSION_ID="([0-9]*).+?"/\1/p' /etc/os-release)"
- distroid="$(grep "ID=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')"
- distroidlike="$(grep "ID_LIKE=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')"
- distrocodename="$(grep "VERSION_CODENAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
+ distroname="$(grep "PRETTY_NAME" /etc/os-release | awk -F= '{gsub(/"/,"",$2);print $2}')" # e.g. Ubuntu 22.04.3 LTS
+ distroversion="$(grep "VERSION_ID" /etc/os-release | awk -F= '{gsub(/"/,"",$2);print $2}')" # e.g. 22.04
+ distroid="$(grep "ID=" /etc/os-release | grep -v _ID | awk -F= '{gsub(/"/,"",$2);print $2}')" # e.g. ubuntu
+ distroidlike="$(grep "ID_LIKE=" /etc/os-release | grep -v _ID | awk -F= '{gsub(/"/,"",$2);print $2}')" # e.g. debian
+ distrocodename="$(grep "VERSION_CODENAME" /etc/os-release | awk -F= '{gsub(/"/,"",$2);print $2}')" # e.g. jammy
+ # Special var for rhel like distros to remove point in number e.g 8.4 to just 8.
+ if [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then
+ distroversionrh="$(sed -nr 's/^VERSION_ID="([0-9]*).+?"/\1/p' /etc/os-release)" # e.g. 8
+ fi
elif [ "$(command -v lsb_release 2> /dev/null)" ] && [ "${distro_info}" == "lsb_release" ]; then
if [ -z "${distroname}" ]; then
- distroname="$(lsb_release -sd)"
+ distroname="$(lsb_release -sd)" # e.g. Ubuntu 22.04.3 LTS
elif [ -z "${distroversion}" ]; then
- distroversion="$(lsb_release -sr)"
+ distroversion="$(lsb_release -sr)" # e.g. 22.04
elif [ -z "${distroid}" ]; then
- distroid="$(lsb_release -si)"
+ distroid="$(lsb_release -si)" # e.g. Ubuntu
elif [ -z "${distrocodename}" ]; then
- distrocodename="$(lsb_release -sc)"
+ distrocodename="$(lsb_release -sc)" # e.g. jammy
fi
elif [ "$(command -v hostnamectl 2> /dev/null)" ] && [ "${distro_info}" == "hostnamectl" ]; then
if [ -z "${distroname}" ]; then
- distroname="$(hostnamectl | grep "Operating System" | sed 's/Operating System: //g')"
+ distroname="$(hostnamectl | grep "Operating System" | sed 's/Operating System: //g')" # e.g. Ubuntu 22.04.3 LTS
fi
elif [ -f "/etc/debian_version" ] && [ "${distro_info}" == "debian_version" ]; then
if [ -z "${distroname}" ]; then
- distroname="Debian $(cat /etc/debian_version)"
+ distroname="Debian $(cat /etc/debian_version)" # e.g. Debian bookworm/sid
elif [ -z "${distroversion}" ]; then
- distroversion="$(cat /etc/debian_version)"
+ distroversion="$(cat /etc/debian_version)" # e.g. bookworm/sid
elif [ -z "${distroid}" ]; then
distroid="debian"
fi
elif [ -f "/etc/redhat-release" ] && [ "${distro_info}" == "redhat-release" ]; then
if [ -z "${distroname}" ]; then
- distroname="$(cat /etc/redhat-release)"
+ distroname="$(cat /etc/redhat-release)" # e.g. Rocky Linux release 9.2 (Blue Onyx)
elif [ -z "${distroversion}" ]; then
- distroversion="$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora" | cut -d"-" -f3)"
+ distroversion="$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora|rocky|alma" | cut -d"-" -f3)" # e.g. 9.2
elif [ -z "${distroid}" ]; then
- distroid="$(awk '{print $1}' /etc/redhat-release)"
+ distroid="$(awk '{print $1}' /etc/redhat-release)" # e.g. Rocky
fi
fi
done
# Get virtual environment type.
if [ "$(command -v systemd-detect-virt 2> /dev/null)" ]; then
- virtualenvironment="$(systemd-detect-virt)"
+ virtualenvironment="$(systemd-detect-virt)" # e.g. kvm
fi
-# Some RHEL based distros use 8.4 instead of just 8.
-if [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then
- distroversioncsv="${distroversionrh}"
+# distroversioncsv is used for selecting the correct distro csv in data directory
+if [ -n "${distroversionrh}" ]; then
+ distroversioncsv="${distroversionrh}" # e.g. 8
else
- distroversioncsv="${distroversion}"
+ distroversioncsv="${distroversion}" # e.g. 22.04
fi
# Check if distro supported by distro vendor.
+# distro-info available in debian based distros.
if [ "$(command -v distro-info 2> /dev/null)" ]; then
distrosunsupported="$(distro-info --unsupported)"
distrosunsupported_array=("${distrosunsupported}")
for distrounsupported in "${distrosunsupported_array[@]}"; do
if [ "${distrounsupported}" == "${distrocodename}" ]; then
- distrosupport=unsupported
+ distrosupport="unsupported"
break
else
- distrosupport=supported
+ distrosupport="supported"
fi
done
-else
- distrosupport=unknown
+elif [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then
+ # RHEL/CentOS 7 EOL 2024-06-30. Will be unsupported after this date.
+ if [ "${distroversionrh}" -lt "8" ] && [ "$(date +%s)" -lt "1719705600" ]; then
+ distrosupport="unsupported"
+ else
+ distrosupport="supported"
+ fi
fi
## Glibc version
-# e.g: 1.17
-glibcversion="$(ldd --version | sed -n '1s/.* //p')"
+glibcversion="$(ldd --version | sed -n '1s/.* //p')" # e.g: 2.17
## tmux version
-# e.g: tmux 1.6
-if [ ! "$(command -V tmux 2> /dev/null)" ]; then
- tmuxv="${red}NOT INSTALLED!${default}"
- tmuxvdigit="0"
-else
- 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)"
- fi
+if [ "$(command -V tmux 2> /dev/null)" ]; then
+ tmuxversion="$(tmux -V | awk '{print $2}')" # e.g: tmux 3.3
fi
if [ "$(command -V java 2> /dev/null)" ]; then
- javaversion="$(java -version 2>&1 | grep "version")"
+ javaversion="$(java -version 2>&1 | grep "version")" # e.g: openjdk version "17.0.8.1" 2023-08-24
fi
if [ "$(command -v mono 2> /dev/null)" ]; then
- monoversion="$(mono --version 2>&1 | grep -Po '(?<=version )\d')"
+ monoversion="$(mono --version 2>&1 | grep -Po '(?<=version )\d')" # e.g: 6
fi
if [ "$(command -v dotnet 2> /dev/null)" ]; then
- dotnetversion="$(dotnet --list-runtimes | grep -E 'Microsoft\.NETCore\.App' | awk '{print $2}')"
+ dotnetversion="$(dotnet --list-runtimes | grep -E 'Microsoft\.NETCore\.App' | awk '{print $2}')" # e.g: 6.0.0
fi
## Uptime
@@ -141,16 +135,16 @@ days="$((uptime / 60 / 60 / 24))"
### Performance information
## Average server load
-load="$(uptime | awk -F 'load average: ' '{ print $2 }')"
+load="$(uptime | awk -F 'load average: ' '{ print $2 }')" # e.g 0.01, 0.05, 0.11
## CPU information
-cpumodel="$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')"
+cpumodel="$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')" # e.g Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
cpucores="$(awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo)"
-cpufreqency="$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')"
+cpufreqency="$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')" # e.g 2394.503
# CPU usage of the game server pid
if [ -n "${gameserverpid}" ]; then
- cpuused="$(ps --forest -o pcpu -g "${gameserverpid}" | awk '{s+=$1} END {print s}')"
- cpuusedmhz="$(echo "${cpufreqency} * ${cpuused} / 100" | bc)"
+ cpuused="$(ps --forest -o pcpu -g "${gameserverpid}" | awk '{s+=$1} END {print s}')" # integer
+ cpuusedmhz="$(echo "${cpufreqency} * ${cpuused} / 100" | bc)" # integer
fi
## Memory information
@@ -161,36 +155,35 @@ if [ "$(command -v numfmt 2> /dev/null)" ]; then
# Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated.
# get the raw KB values of these fields.
- physmemtotalkb="$(grep MemTotal /proc/meminfo | awk '{print $2}')"
- physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')"
- physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')"
- physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')"
- physmemreclaimablekb="$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')"
+ physmemtotalkb="$(grep MemTotal /proc/meminfo | awk '{print $2}')" # integer
+ physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')" # integer
+ physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')" # integer
+ physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')" # integer
+ physmemreclaimablekb="$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')" # integer
# check if MemAvailable Exists.
if grep -q ^MemAvailable /proc/meminfo; then
- physmemactualfreekb="$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')"
+ physmemactualfreekb="$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')" # integer
else
- physmemactualfreekb="$((physmemfreekb + physmembufferskb + physmemcachedkb))"
+ physmemactualfreekb="$((physmemfreekb + physmembufferskb + physmemcachedkb))" # integer
fi
# Available RAM and swap.
- physmemtotalmb="$((physmemtotalkb / 1024))"
- physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")"
- physmemfree="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"
- physmemused="$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb - physmemfreekb - physmembufferskb - physmemcachedkb - physmemreclaimablekb))K")"
- physmemavailable="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"
- physmemcached="$(numfmt --to=iec --from=iec --suffix=B "$((physmemcachedkb + physmemreclaimablekb))K")"
-
- swaptotal="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K")"
- swapfree="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")"
- swapused="$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^SwapTotal /proc/meminfo | awk '{print $2}') - $(grep ^SwapFree /proc/meminfo | awk '{print $2}')))K")"
+ physmemtotalmb="$(((physmemtotalkb + 512) / 1024))" # integer # integer
+ physmemtotalgb="$(((physmemtotalmb + 512) / 1024))" # integer # integer
+ physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")" # string
+ physmemfree="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")" # string
+ physmemused="$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb - physmemfreekb - physmembufferskb - physmemcachedkb - physmemreclaimablekb))K")" # string
+ physmemavailable="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")" # string
+ physmemcached="$(numfmt --to=iec --from=iec --suffix=B "$((physmemcachedkb + physmemreclaimablekb))K")" # string
+
+ swaptotal="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K")" # string
+ swapfree="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")" # string
+ swapused="$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^SwapTotal /proc/meminfo | awk '{print $2}') - $(grep ^SwapFree /proc/meminfo | awk '{print $2}')))K")" # string
# RAM usage of the game server pid
- # MB
if [ "${gameserverpid}" ]; then
- memused="$(ps --forest -o rss -g "${gameserverpid}" | awk '{s+=$1} END {print s}' | awk '{$1/=1024;printf "%.0f",$1}{print $2}')"
- # %
- pmemused="$(ps --forest -o %mem -g "${gameserverpid}" | awk '{s+=$1} END {print s}')"
+ memusedmb="$(ps --forest -o rss -g "${gameserverpid}" | awk '{s+=$1} END {print s}' | awk '{$1/=1024;printf "%.0f",$1}{print $2}')" # integer
+ memusedpct="$(ps --forest -o %mem -g "${gameserverpid}" | awk '{s+=$1} END {print s}')" # integer
fi
else
# Older distros will need to use free.
@@ -203,32 +196,33 @@ else
else
humanreadable="-h"
fi
- physmemtotalmb="$(free -m | awk '/Mem:/ {print $2}')"
- physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')"
- physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')"
- physmemused="$(free ${humanreadable} | awk '/Mem:/ {print $3}')"
+ physmemtotalmb="$(free -m | awk '/Mem:/ {print $2}')" # integer
+ physmemtotalgb="$(free -m | awk '/Mem:/ {print $2}')" # integer
+ physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')" # string
+ physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')" # string
+ physmemused="$(free ${humanreadable} | awk '/Mem:/ {print $3}')" # string
oldfree="$(free ${humanreadable} | awk '/cache:/')"
if [ "${oldfree}" ]; then
- physmemavailable="n/a"
- physmemcached="n/a"
+ physmemavailable="n/a" # string
+ physmemcached="n/a" # string
else
- physmemavailable="$(free ${humanreadable} | awk '/Mem:/ {print $7}')"
- physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')"
+ physmemavailable="$(free ${humanreadable} | awk '/Mem:/ {print $7}')" # string
+ physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')" # string
fi
- swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')"
- swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')"
- swapfree="$(free ${humanreadable} | awk '/Swap:/ {print $4}')"
+ swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')" # string
+ swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')" # string
+ swapfree="$(free ${humanreadable} | awk '/Swap:/ {print $4}')" # string
fi
### Disk information
## Available disk space on the partition.
-filesystem="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $1}')"
-totalspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $2}')"
-usedspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $3}')"
-availspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $4}')"
+filesystem="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $1}')" # string e.g /dev/sda
+totalspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $2}')" # string e.g 20G
+usedspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $3}')" # string e.g 15G
+availspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $4}')" # string e.g 5G
## LinuxGSM used space total.
rootdirdu="$(du -sh "${rootdir}" 2> /dev/null | awk '{print $1}')"
@@ -263,21 +257,21 @@ if [ -d "${backupdir}" ]; then
# If there are backups in backup dir.
if [ "$(find "${backupdir}" -name "*.tar.gz" | wc -l)" -ne "0" ]; then
# number of backups.
- backupcount="$(find "${backupdir}"/*.tar.gz | wc -l)"
+ backupcount="$(find "${backupdir}"/*.tar.gz | wc -l)" # integer
# most recent backup.
- lastbackup="$(ls -1t "${backupdir}"/*.tar.gz | head -1)"
+ lastbackup="$(ls -1t "${backupdir}"/*.tar.gz | head -1)" # string
# date of most recent backup.
- lastbackupdate="$(date -r "${lastbackup}")"
+ lastbackupdate="$(date -r "${lastbackup}")" # string
# no of days since last backup.
- lastbackupdaysago="$((($(date +'%s') - $(date -r "${lastbackup}" +'%s')) / 60 / 60 / 24))"
+ lastbackupdaysago="$((($(date +'%s') - $(date -r "${lastbackup}" +'%s')) / 60 / 60 / 24))" # integer
# size of most recent backup.
- lastbackupsize="$(du -h "${lastbackup}" | awk '{print $1}')"
+ lastbackupsize="$(du -h "${lastbackup}" | awk '{print $1}')" # string
fi
fi
# Network Interface name
-netint=$(${ipcommand} -o addr | grep "${ip}" | awk '{print $2}')
-netlink=$(${ethtoolcommand} "${netint}" 2> /dev/null | grep Speed | awk '{print $2}')
+netint=$(${ipcommand} -o addr | grep "${ip}" | awk '{print $2}') # e.g eth0
+netlink=$(${ethtoolcommand} "${netint}" 2> /dev/null | grep Speed | awk '{print $2}') # e.g 1000Mb/s
# Sets the SteamCMD glibc requirement if the game server requirement is less or not required.
if [ "${appid}" ]; then
@@ -286,5 +280,5 @@ if [ "${appid}" ]; then
fi
fi
-# Gather Port Info using ss
+# Gather Port Info using ss.
ssinfo="$(ss -tuplwn)"
diff --git a/lgsm/modules/info_game.sh b/lgsm/modules/info_game.sh
index 2d172cdd5..0f38ea250 100644
--- a/lgsm/modules/info_game.sh
+++ b/lgsm/modules/info_game.sh
@@ -4,6 +4,7 @@
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Gathers various game server information.
+# !Note: When adding variables to this script, ensure that they are also added to the command_dev_parse_game_details.sh script.
# shellcheck disable=SC2317
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
@@ -287,6 +288,8 @@ fn_info_game_ac() {
fn_info_game_ark() {
if [ -f "${servercfgfullpath}" ]; then
fn_info_game_ini "adminpassword" "ServerAdminPassword"
+ fn_info_game_ini "maxplayers" "MaxPlayers"
+ fn_info_game_ini "rconport" "RCONPort"
fn_info_game_ini "servername" "SessionName"
fn_info_game_ini "serverpassword" "ServerPassword"
fi
@@ -487,7 +490,7 @@ fn_info_game_kf() {
if [ -f "${servercfgfullpath}" ]; then
fn_info_game_ini "adminpassword" "AdminPassword"
fn_info_game_ini "httpenabled" "bEnabled"
- fn_info_game_ini "httppassword" "httppasswordword"
+ fn_info_game_ini "httppassword" "AdminPassword"
fn_info_game_ini "httpport" "ListenPort"
fn_info_game_ini "httpuser" "AdminName"
fn_info_game_ini "lanport" "LANServerPort"
@@ -523,11 +526,11 @@ fn_info_game_kf2() {
if [ -f "${servercfgfullpath}" ]; then
fn_info_game_ini "adminpassword" "AdminPassword"
fn_info_game_ini "httpport" "ListenPort" "${servercfgdir}/KFWeb.ini"
- fn_info_game_ini "port" "Port"
+ fn_info_game_ini "port" "Port" "${servercfgdir}/LinuxServer-KFEngine.ini"
fn_info_game_ini "servername" "ServerName"
fn_info_game_ini "serverpassword" "GamePassword"
- fn_info_game_ini "httpenabled" "bEnabled"
- fn_info_game_ini "httppassword" "httppasswordword"
+ fn_info_game_ini "httpenabled" "bEnabled" "${servercfgdir}/KFWeb.ini"
+ fn_info_game_ini "httppassword" "AdminPassword"
fi
adminpassword="${adminpassword:-"NOT SET"}"
defaultmap="${defaultmap:-"NOT SET"}"
@@ -611,6 +614,19 @@ fn_info_game_pvr() {
servername="${servername:-"NOT SET"}"
}
+# Config Type: ini
+# Parameters: false
+# Comment: ; or #
+# Example: ServerName=SERVERNAME
+# Filetype: cfg
+fn_info_game_pw() {
+ servername="${servername:-"NOT SET"}"
+ port="${port:-"0"}"
+ queryport="${port:-"0"}"
+ steamport="${steamport:-"0"}"
+ unknownport="1985"
+}
+
# Config Type: ini
# Parameters: true
# Comment: ; or #
@@ -681,6 +697,24 @@ fn_info_game_stn() {
serverpassword="${serverpassword:-"NOT SET"}"
}
+# Config Type: parameters
+# Parameters: true
+# Comment:
+# Example: -ServerName="SERVERNAME"
+# Filetype: parameters
+fn_info_game_tf() {
+ beaconport="${beaconport:-"0"}"
+ gamemode="${gamemode:-"NOT SET"}"
+ maxplayers="${maxplayers:-"0"}"
+ port="${port:-"0"}"
+ queryport="${queryport:-"0"}"
+ saveinterval="${saveinterval:-"0"}"
+ servername="${servername:-"NOT SET"}"
+ serverpassword="${serverpassword:-"NOT SET"}"
+ shutdownport="${shutdownport:-"0"}"
+
+}
+
# Config Type: ini
# Parameters: true
# Comment: ; or #
@@ -1126,12 +1160,30 @@ fn_info_game_col() {
maxplayers="${maxplayers:-"0"}"
port="${port:-"0"}"
queryport="${port:-"0"}"
- rcpassword="${rconpassword:-"NOT SET"}"
+ rconpassword="${rconpassword:-"NOT SET"}"
servername="${servername:-"NOT SET"}"
serverpassword="${serverpassword:-"NOT SET"}"
steamport="${steamport:-"0"}"
}
+# Config Type: Valve KeyValues
+# Comment: //
+# Example: hostname "SERVERNAME"
+# Filetype: cfg
+fn_info_game_cs2() {
+ if [ -f "${servercfgfullpath}" ]; then
+ fn_info_game_valve_keyvalues "servername" "hostname"
+ fn_info_game_valve_keyvalues "defaultmap" "map"
+ fn_info_game_valve_keyvalues "serverpassword" "sv_password"
+ fi
+ defaultmap="${defaultmap:-"NOT SET"}"
+ maxplayers="${maxplayers:-"0"}"
+ serverpassword="${serverpassword:-"NOT SET"}"
+ port="${port:-"0"}"
+ queryport="${port:-"0"}"
+ servername="${servername:-"NOT SET"}"
+}
+
# Config Type: ini
# Parameters: true
# Comment: ; or #
@@ -1192,6 +1244,7 @@ fn_info_game_eco() {
fn_info_game_json "httpport" ".WebServerPort"
fn_info_game_json "maxplayers" ".MaxConnections"
fn_info_game_json "port" ".GameServerPort"
+ fn_info_game_json "rconport" ".RconServerPort"
fn_info_game_json "servername" ".Description"
fn_info_game_json "serverpassword" ".Password"
fn_info_game_json "tickrate" ".Rate"
@@ -1200,6 +1253,8 @@ fn_info_game_eco() {
httpport="${httpport:-"0"}"
maxplayers="${maxplayers:-"0"}"
port="${port:-"0"}"
+ queryport="${port:-"0"}"
+ rconport="${rconport:-"0"}"
servername="${servername:-"NOT SET"}"
serverpassword="${serverpassword:-"NOT SET"}"
tickrate="${tickrate:-"0"}"
@@ -1274,6 +1329,23 @@ fn_info_game_hw() {
creativemode="${creativemode:-"NOT SET"}"
}
+# Config Type: ini
+# Parameters: true
+# Comment: ; or #
+# Example: ServerName=SERVERNAME
+# Filetype: ini
+fn_info_game_hz() {
+ if [ -f "${servercfgfullpath}" ]; then
+ fn_info_game_ini "adminpassword" "AdminPassword"
+ fn_info_game_ini "servername" "ServerName"
+ fi
+ adminpass="${adminpassword:-"NOT SET"}"
+ port="${port:-"0"}"
+ queryport="${queryport:-"0"}"
+ rconport="$((port + 2))"
+ servername="${servername:-"NOT SET"}"
+}
+
# Config Type: parameters
# Parameters: true
# Comment:
@@ -1366,14 +1438,6 @@ fn_info_game_jk2() {
serverversion="${serverversion:-"NOT SET"}"
}
-# Config Type: unknown
-fn_info_game_lo() {
- servername="${servername:-"NOT SET"}"
- port="${port:-"0"}"
- queryport="${queryport:-"0"}"
- maxplayers="${slots:-"0"}"
-}
-
# Config Type: Java properties
# Comment: # or !
# Example: motd=SERVERNAME
@@ -1446,24 +1510,6 @@ fn_info_game_mohaa() {
serverpassword="${serverpassword:-"NOT SET"}"
}
-# Config Type: json
-# Parameters: true
-# Comment: // or /* */
-fn_info_game_mom() {
- if [ -f "${servercfgfullpath}" ]; then
- fn_info_game_json "defaultmap" ".MapName"
- fn_info_game_json "maxplayers" ".MaxPlayers"
- fn_info_game_json "servername" ".ServerName"
- fn_info_game_json "serverpassword" ".ServerPassword"
- fi
- beaconport="${beaconport:-"0"}"
- defaultmap="${defaultmap:-"NOT SET"}"
- maxplayers="${maxplayers:-"0"}"
- port="${port:-"0"}"
- servername="${servername:-"NOT SET"}"
- serverpassword="${serverpassword:-"NOT SET"}"
-}
-
# Config Type: xml
# Comment:
# Example: Default MTA Server
@@ -1653,6 +1699,25 @@ fn_info_game_q3() {
defaultmap="${defaultmap:-"NOT SET"}"
}
+# Config Type: QuakeC
+# Comment: // or /* */
+# fn_info_game_quakec "SERVERNAME"
+# Filetype: cfg
+fn_info_game_q4() {
+ if [ -f "${servercfgfullpath}" ]; then
+ fn_info_game_quakec "maxplayers" "sv_maxclients"
+ fn_info_game_quakec "rconpassword" "net_serverRemoteConsolePassword"
+ fn_info_game_quakec "servername" "si_name"
+ fn_info_game_quakec "serverpassword" "g_password"
+ fi
+ maxplayers="${maxplayers:-"0"}"
+ rconpassword="${rconpassword:-"NOT SET"}"
+ servername="${servername:-"NOT SET"}"
+ port="${port:-"0"}"
+ queryport="${port}"
+ defaultmap="${defaultmap:-"NOT SET"}"
+}
+
# Config Type: QuakeC
# Comment: // or /* */
# Example: set sv_hostname "SERVERNAME"
@@ -1700,7 +1765,7 @@ fn_info_game_ro() {
if [ -f "${servercfgfullpath}" ]; then
fn_info_game_ini "adminpassword" "AdminPassword"
fn_info_game_ini "httpenabled" "bEnabled"
- fn_info_game_ini "httppassword" "httppasswordword"
+ fn_info_game_ini "httppassword" "AdminPassword"
fn_info_game_ini "httpport" "ListenPort"
fn_info_game_ini "httpuser" "AdminName"
fn_info_game_ini "lanport" "LANServerPort"
@@ -1800,14 +1865,7 @@ fn_info_game_rw() {
# example: hostname "SERVERNAME"
# filetypes: cfg
fn_info_game_samp() {
- # Config
- if [ ! -f "${servercfgfullpath}" ]; then
- servername="unnamed server"
- rconpassword="${unavailable}"
- port="7777"
- rconport="${port}"
- maxplayers="50"
- else
+ if [ -f "${servercfgfullpath}" ]; then
servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
port=$(grep "port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
@@ -1912,7 +1970,7 @@ fn_info_game_sdtd() {
telnetenabled="${telnetenabled:-"NOT SET"}"
# Telnet IP will be localhost if no password is set
# check_ip will set the IP first. This will overwrite it.
- if [ -z "${telnetpass}" ]; then
+ if [ -z "${telnetpassword}" ]; then
telnetip="127.0.0.1"
fi
telnetpass="${telnetpass:-"NOT SET"}"
@@ -1924,12 +1982,25 @@ fn_info_game_sdtd() {
# Config Type: Parameters (with an ini)
fn_info_game_sf() {
# Parameters
- servername="${selfname:-"NOT SET"}"
+ servername="${servername:-"NOT SET"}"
port="${port:-"0"}"
queryport="${queryport:-"0"}"
beaconport="${beaconport:-"0"}"
}
+# Config Type: Parameters (with an ini)
+fn_info_game_sm() {
+ servername="${servername:-"NOT SET"}"
+ adminpassword="${adminpassword:-"NOT SET"}"
+ port="${port:-"0"}"
+ queryport="${queryport:-"0"}"
+ maxplayers="${maxplayers:-"0"}"
+ # telnet config
+ telnetenabled=true
+ telnetip="127.0.0.1"
+ telnetport="${telnetport:-"0"}"
+}
+
# Config Type: QuakeC
# Comment: // or /* */
# Example: set sv_hostname "SERVERNAME"
@@ -2001,14 +2072,15 @@ fn_info_game_source() {
fn_info_game_spark() {
defaultmap="${defaultmap:-"NOT SET"}"
+ httppassword="${httppassword:-"NOT SET"}"
+ httpport="${httpport:-"0"}"
+ httpuser="${httpuser:-"NOT SET"}"
maxplayers="${maxplayers:-"0"}"
+ modserverport=${modserverport:-"0"}
port="${port:-"0"}"
queryport="$((port + 1))"
servername="${servername:-"NOT SET"}"
serverpassword="${serverpassword:-"NOT SET"}"
- httpuser="${httpuser:-"NOT SET"}"
- httppassword="${httppassword:-"NOT SET"}"
- httpport="${httpport:-"0"}"
}
# Config Type: Custom (key-value pairs)
@@ -2076,7 +2148,7 @@ fn_info_game_tw() {
# Config Type: Parameters
fn_info_game_unt() {
- servername="${selfname:-"NOT SET"}"
+ servername="${servername:-"NOT SET"}"
port="${port:-"0"}"
queryport="${port}"
steamport="$((port + 1))"
@@ -2242,8 +2314,6 @@ elif [ "${shortname}" == "bt" ]; then
fn_info_game_bt
elif [ "${shortname}" == "btl" ]; then
fn_info_game_btl
-elif [ "${shortname}" == "cd" ]; then
- fn_info_game_cd
elif [ "${shortname}" == "ck" ]; then
fn_info_game_ck
elif [ "${shortname}" == "cmw" ]; then
@@ -2260,6 +2330,8 @@ elif [ "${shortname}" == "codwaw" ]; then
fn_info_game_codwaw
elif [ "${shortname}" == "col" ]; then
fn_info_game_col
+elif [ "${shortname}" == "cs2" ]; then
+ fn_info_game_cs2
elif [ "${shortname}" == "ct" ]; then
fn_info_game_ct
elif [ "${shortname}" == "dayz" ]; then
@@ -2276,6 +2348,8 @@ elif [ "${shortname}" == "fctr" ]; then
fn_info_game_fctr
elif [ "${shortname}" == "hw" ]; then
fn_info_game_hw
+elif [ "${shortname}" == "hz" ]; then
+ fn_info_game_hz
elif [ "${shortname}" == "inss" ]; then
fn_info_game_inss
elif [ "${shortname}" == "jc2" ]; then
@@ -2288,8 +2362,6 @@ elif [ "${shortname}" == "kf" ]; then
fn_info_game_kf
elif [ "${shortname}" == "kf2" ]; then
fn_info_game_kf2
-elif [ "${shortname}" == "lo" ]; then
- fn_info_game_lo
elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ]; then
fn_info_game_mc
elif [ "${shortname}" == "mcb" ]; then
@@ -2298,8 +2370,6 @@ elif [ "${shortname}" == "mh" ]; then
fn_info_game_mh
elif [ "${shortname}" == "mohaa" ]; then
fn_info_game_mohaa
-elif [ "${shortname}" == "mom" ]; then
- fn_info_game_mom
elif [ "${shortname}" == "mta" ]; then
fn_info_game_mta
elif [ "${shortname}" == "nec" ]; then
@@ -2316,12 +2386,16 @@ elif [ "${shortname}" == "ps" ]; then
fn_info_game_ps
elif [ "${shortname}" == "pvr" ]; then
fn_info_game_pvr
+elif [ "${shortname}" == "pw" ]; then
+ fn_info_game_pw
elif [ "${shortname}" == "pz" ]; then
fn_info_game_pz
elif [ "${shortname}" == "q2" ]; then
fn_info_game_q2
elif [ "${shortname}" == "q3" ]; then
fn_info_game_q3
+elif [ "${shortname}" == "q4" ]; then
+ fn_info_game_q4
elif [ "${shortname}" == "ql" ]; then
fn_info_game_ql
elif [ "${shortname}" == "qw" ]; then
@@ -2346,6 +2420,8 @@ elif [ "${shortname}" == "sdtd" ]; then
fn_info_game_sdtd
elif [ "${shortname}" == "sf" ]; then
fn_info_game_sf
+elif [ "${shortname}" == "sm" ]; then
+ fn_info_game_sm
elif [ "${shortname}" == "sof2" ]; then
fn_info_game_sof2
elif [ "${shortname}" == "sol" ]; then
@@ -2360,6 +2436,8 @@ elif [ "${shortname}" == "stn" ]; then
fn_info_game_stn
elif [ "${shortname}" == "terraria" ]; then
fn_info_game_terraria
+elif [ "${shortname}" == "tf" ]; then
+ fn_info_game_tf
elif [ "${shortname}" == "ti" ]; then
fn_info_game_ti
elif [ "${shortname}" == "ts3" ]; then
@@ -2404,23 +2482,50 @@ fi
# Cache public IP address for 24 hours
if [ ! -f "${tmpdir}/publicip.json" ] || [ "$(find "${tmpdir}/publicip.json" -mmin +1440)" ]; then
apiurl="http://ip-api.com/json"
- publicipresponse=$(curl -s "${apiurl}")
+ fn_script_log_info "Querying ${apiurl} for public IP address"
+
+ ipresponse=$(curl -s --max-time 3 "${apiurl}") # Attempt to query ip-api.com with a 3 second timeout
exitcode=$?
- # if curl passes add publicip to publicip.json
- if [ "${exitcode}" == "0" ]; then
- fn_script_log_pass "Getting public IP address"
- echo "${publicipresponse}" > "${tmpdir}/publicip.json"
- publicip="$(jq -r '.query' "${tmpdir}/publicip.json")"
- country="$(jq -r '.country' "${tmpdir}/publicip.json")"
- countrycode="$(jq -r '.countryCode' "${tmpdir}/publicip.json")"
+
+ # Check if the first request was successfull
+ if [ "${exitcode}" -eq 0 ]; then
+ fn_script_log_pass "Queried ${apiurl} for public IP address"
+
+ # Parse and reformat the response
+ publicip="$(echo "${ipresponse}" | jq -r '.query')"
+ country="$(echo "${ipresponse}" | jq -r '.country')"
+ countrycode="$(echo "${ipresponse}" | jq -r '.countryCode')"
+ # Construct a universal JSON format
+ echo "{\"ip\":\"${publicip}\",\"country\":\"${country}\",\"countryCode\":\"${countrycode}\",\"apiurl\":\"${apiurl}\"}" > "${tmpdir}/publicip.json"
else
- fn_script_log_warn "Unable to get public IP address"
- publicip="NOT SET"
- country="NOT SET"
- countrycode="NOT SET"
+ # Fallback to myip.wtf if the initial request failed or timed out
+ apiurl="https://myip.wtf/json"
+ fn_script_log_pass "Querying ${apiurl} for public IP address"
+
+ ipresponse=$(curl -s --max-time 3 "${apiurl}") # Attempt to query myip.wtf with a 3 second timeout as a backup
+ exitcode=$?
+
+ # Check if the backup request was successfull
+ if [ "${exitcode}" -eq 0 ]; then
+ fn_script_log_pass "Queried ${apiurl} for public IP address"
+
+ # Parse and reformat the response from myip.wtf
+ publicip="$(echo "${ipresponse}" | jq -r '.YourFuckingIPAddress')"
+ country="$(echo "${ipresponse}" | jq -r '.YourFuckingCountry')"
+ countrycode="$(echo "${ipresponse}" | jq -r '.YourFuckingCountryCode')"
+ # Construct a universal JSON format
+ echo "{\"ip\":\"${publicip}\",\"country\":\"${country}\",\"countryCode\":\"${countrycode}\",\"apiurl\":\"${apiurl}\"}" > "${tmpdir}/publicip.json"
+ else
+ fn_script_log_error "Unable to get public IP address"
+ publicip="NOT SET"
+ country="NOT SET"
+ countrycode="NOT SET"
+ fi
fi
else
- publicip="$(jq -r '.query' "${tmpdir}/publicip.json")"
+ # Cached IP is still valid
+ fn_script_log_pass "Using cached IP as public IP address"
+ publicip="$(jq -r '.ip' "${tmpdir}/publicip.json")"
country="$(jq -r '.country' "${tmpdir}/publicip.json")"
countrycode="$(jq -r '.countryCode' "${tmpdir}/publicip.json")"
fi
@@ -2449,11 +2554,11 @@ if [ -z "${displaymasterserver}" ]; then
if [ -n "${ip}" ] && [ -n "${port}" ]; then
if [ "${steammaster}" == "true" ] || [ "${commandname}" == "DEV-QUERY-RAW" ]; then
# Query external IP first as most liky to succeed.
- masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${publicip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" --arg port3 "${port3}" 'if .response.servers != null then .response.servers[] | select((.gameport == ($port|tonumber) or .gameport == ($queryport|tonumber) or .gameport == ($port3|tonumber))) | .addr else empty end' | wc -l 2> /dev/null)"
+ masterserver="$(curl --connect-timeout 3 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${publicip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" --arg port3 "${port3}" 'if .response.servers != null then .response.servers[] | select((.gameport == ($port|tonumber) or .gameport == ($queryport|tonumber) or .gameport == ($port3|tonumber))) | .addr else empty end' | wc -l 2> /dev/null)"
if [ "${masterserver}" == "0" ]; then
# Loop though server IP addresses if external IP fails.
for queryip in "${queryips[@]}"; do
- masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${queryip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" --arg port3 "${port3}" 'if .response.servers != null then .response.servers[] | select((.gameport == ($port|tonumber) or .gameport == ($queryport|tonumber) or .gameport == ($port3|tonumber))) | .addr else empty end' | wc -l 2> /dev/null)"
+ masterserver="$(curl --connect-timeout 3 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${queryip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" --arg port3 "${port3}" 'if .response.servers != null then .response.servers[] | select((.gameport == ($port|tonumber) or .gameport == ($queryport|tonumber) or .gameport == ($port3|tonumber))) | .addr else empty end' | wc -l 2> /dev/null)"
done
fi
if [ "${masterserver}" == "0" ]; then
diff --git a/lgsm/modules/info_messages.sh b/lgsm/modules/info_messages.sh
index 3f0c6d235..9bab0cbb7 100644
--- a/lgsm/modules/info_messages.sh
+++ b/lgsm/modules/info_messages.sh
@@ -8,7 +8,7 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Removes the passwords form all but details.
-fn_info_message_password_strip() {
+fn_info_messages_password_strip() {
if [ "${commandname}" != "DETAILS" ]; then
if [ "${serverpassword}" ]; then
serverpassword="********"
@@ -30,8 +30,8 @@ fn_info_message_password_strip() {
httppassword="********"
fi
- if [ "${telnetpass}" ]; then
- telnetpass="********"
+ if [ "${telnetpassword}" ]; then
+ telnetpassword="********"
fi
if [ "${wsapikey}" ]; then
@@ -46,27 +46,31 @@ fn_info_message_password_strip() {
# Alert Summary
# used with alertlog
-fn_info_message_head() {
+fn_info_messages_head() {
echo -e ""
- echo -e "${bold}${lightyellow}Alert Summary${default}"
+ echo -e "LinuxGSM Alert Summary"
fn_messages_separator
- echo -e "Message"
- echo -e "${alertbody}"
+ echo -e ""
+ echo -e "Server name"
+ echo -e "${servername}"
+ echo -e ""
+ echo -e "Information"
+ echo -e "${alertmessage}"
echo -e ""
echo -e "Game"
echo -e "${gamename}"
echo -e ""
- echo -e "Server name"
- echo -e "${servername}"
+ echo -e "Server IP"
+ echo -e "${alertip}:${port}"
echo -e ""
echo -e "Hostname"
echo -e "${HOSTNAME}"
echo -e ""
- echo -e "Server IP"
- echo -e "${ip}:${port}"
+ echo -e "Server Time"
+ echo -e "$(date)"
}
-fn_info_message_distro() {
+fn_info_messages_distro() {
#
# Distro Details
# =================================
@@ -75,6 +79,7 @@ fn_info_message_distro() {
# Arch: x86_64
# Kernel: 5.4.0-65-generic
# Hostname: server
+ # Environment: kvm
# Uptime: 16d, 5h, 18m
# tmux: tmux 3.0a
# glibc: 2.31
@@ -88,8 +93,9 @@ fn_info_message_distro() {
echo -e "${lightblue}Arch:\t${default}${arch}"
echo -e "${lightblue}Kernel:\t${default}${kernel}"
echo -e "${lightblue}Hostname:\t${default}${HOSTNAME}"
+ echo -e "${lightblue}Environment:\t${default}${virtualenvironment}"
echo -e "${lightblue}Uptime:\t${default}${days}d, ${hours}h, ${minutes}m"
- echo -e "${lightblue}tmux:\t${default}${tmuxv}"
+ echo -e "${lightblue}tmux:\t${default}${tmuxversion}"
echo -e "${lightblue}glibc:\t${default}${glibcversion}"
if [ -n "${javaram}" ]; then
echo -e "${lightblue}Java:\t${default}${javaversion}"
@@ -97,7 +103,7 @@ fn_info_message_distro() {
} | column -s $'\t' -t
}
-fn_info_message_server_resource() {
+fn_info_messages_server_resource() {
#
# Server Resource
# =================================
@@ -143,8 +149,8 @@ fn_info_message_server_resource() {
{
echo -e "${lightyellow}Storage${default}"
echo -e "${lightblue}Filesystem:\t${default}${filesystem}"
- echo -e "${lightblue}Total:\t\t${default}${totalspace}"
- echo -e "${lightblue}Used:\t\t${default}${usedspace}"
+ echo -e "${lightblue}Total:\t${default}${totalspace}"
+ echo -e "${lightblue}Used:\t${default}${usedspace}"
echo -e "${lightblue}Available:\t${default}${availspace}"
} | column -s $'\t' -t
echo -e ""
@@ -163,7 +169,7 @@ fn_info_message_server_resource() {
} | column -s $'\t' -t
}
-fn_info_message_gameserver_resource() {
+fn_info_messages_gameserver_resource() {
#
# Game Server Resource Usage
# =================================
@@ -185,10 +191,10 @@ fn_info_message_gameserver_resource() {
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}"
+ if [ -n "${memusedmb}" ]; then
+ echo -e "${lightblue}Mem Used:\t${default}${memusedpct}%\t${memusedmb}MB${default}"
else
- echo -e "${lightblue}Mem Used:\t${default}${pmemused}\t${red}unknown${default}"
+ echo -e "${lightblue}Mem Used:\t${default}${memusedpct}\t${red}unknown${default}"
fi
else
echo -e "${lightblue}CPU Used:\t${default}0%${default}"
@@ -206,7 +212,7 @@ fn_info_message_gameserver_resource() {
} | column -s $'\t' -t
}
-fn_info_message_gameserver() {
+fn_info_messages_gameserver() {
#
# Counter-Strike: Global Offensive Server Details
# =================================
@@ -226,7 +232,7 @@ fn_info_message_gameserver() {
echo -e ""
echo -e "${bold}${lightgreen}${gamename} Server Details${default}"
- fn_info_message_password_strip
+ fn_info_messages_password_strip
fn_messages_separator
{
# Server name
@@ -477,6 +483,11 @@ fn_info_message_gameserver() {
echo -e "${lightblue}Version Count:\t${default}${versioncount}"
fi
+ # backupinterval (Soulmask)
+ if [ -n "${backupinterval}" ]; then
+ echo -e "${lightblue}Backup Interval:\t${default}${backupinterval}"
+ fi
+
# Listed on Master server
if [ -n "${displaymasterserver}" ]; then
if [ "${displaymasterserver}" == "true" ]; then
@@ -496,7 +507,7 @@ fn_info_message_gameserver() {
echo -e ""
}
-fn_info_message_script() {
+fn_info_messages_script() {
# csgoserver Script Details
# =================================
# Script name: csgoserver
@@ -595,7 +606,7 @@ fn_info_message_script() {
} | column -s $'\t' -t
}
-fn_info_message_backup() {
+fn_info_messages_backup() {
#
# Backups
# =================================
@@ -627,7 +638,7 @@ fn_info_message_backup() {
fi
}
-fn_info_message_commandlineparms() {
+fn_info_messages_commandlineparms() {
#
# Command-line Parameters
# =================================
@@ -635,7 +646,7 @@ fn_info_message_commandlineparms() {
echo -e ""
echo -e "${bold}${lightgreen}Command-line Parameters${default}"
- fn_info_message_password_strip
+ fn_info_messages_password_strip
fn_messages_separator
if [ "${serverpassword}" == "NOT SET" ]; then
unset serverpassword
@@ -644,7 +655,7 @@ fn_info_message_commandlineparms() {
echo -e "${preexecutable} ${executable} ${startparameters}"
}
-fn_info_message_ports_edit() {
+fn_info_messages_ports_edit() {
#
# Ports
# =================================
@@ -657,7 +668,7 @@ fn_info_message_ports_edit() {
startparameterslocation="${red}UNKNOWN${default}"
# engines/games that require editing in the config file.
- local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "cd" "ct" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "nec" "pc" "pc2" "prism3d" "pz" "qw" "refractor" "renderware" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "wurm")
+ local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "ct" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "nec" "pc" "pc2" "prism3d" "pz" "qw" "refractor" "renderware" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "wurm")
for port_edit in "${ports_edit_array[@]}"; do
if [ "${shortname}" == "ut3" ]; then
startparameterslocation="${servercfgdir}/UTWeb.ini"
@@ -668,7 +679,7 @@ fn_info_message_ports_edit() {
fi
done
# engines/games that require editing the start parameters.
- local ports_edit_array=("av" "ck" "col" "fctr" "goldsrc" "hcu" "hw" "iw3.0" "ioquake3" "qfusion" "rust" "scpsl" "scpslsm" "sol" "spark" "source" "unreal4" "arma3" "dayz" "unt" "vh")
+ local ports_edit_array=("av" "ck" "col" "cs2" "fctr" "goldsrc" "hcu" "hw" "iw3.0" "ioquake3" "pw" "qfusion" "rust" "scpsl" "scpslsm" "sf" "sol" "spark" "source" "unreal4" "arma3" "dayz" "unt" "vh")
for port_edit in "${ports_edit_array[@]}"; do
if [ "${engine}" == "${port_edit}" ] || [ "${gamename}" == "${port_edit}" ] || [ "${shortname}" == "${port_edit}" ]; then
startparameterslocation="${configdirserver}"
@@ -678,7 +689,7 @@ fn_info_message_ports_edit() {
echo -e ""
}
-fn_info_message_ports() {
+fn_info_messages_ports() {
echo -e "${lightblue}Useful port diagnostic command:${default}"
if [ "${shortname}" == "armar" ]; then
portcommand="ss -tuplwn | grep enfMain"
@@ -686,10 +697,18 @@ fn_info_message_ports() {
portcommand="ss -tuplwn | grep AvorionServer"
elif [ "${shortname}" == "bf1942" ]; then
portcommand="ss -tuplwn | grep bf1942_lnxded"
+ elif [ "${shortname}" == "bfv" ]; then
+ portcommand="ss -tuplwn | grep bfv_linded"
+ elif [ "${shortname}" == "dayz" ]; then
+ portcommand="ss -tuplwn | grep enfMain"
+ elif [ "${shortname}" == "q4" ]; then
+ portcommand="ss -tuplwn | grep q4ded.x86"
elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "nec" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then
portcommand="ss -tuplwn | grep java"
elif [ "${shortname}" == "terraria" ]; then
portcommand="ss -tuplwn | grep Main"
+ elif [ "${shortname}" == "sm" ]; then
+ portcommand="ss -tuplwn | grep WSServer-Linux"
elif [ "${engine}" == "source" ]; then
portcommand="ss -tuplwn | grep srcds_linux"
elif [ "${engine}" == "goldsrc" ]; then
@@ -702,7 +721,7 @@ fn_info_message_ports() {
echo -e ""
}
-fn_info_message_statusbottom() {
+fn_info_messages_statusbottom() {
echo -e ""
if [ "${status}" == "0" ]; then
echo -e "${lightblue}Status:\t${red}STOPPED${default}"
@@ -777,7 +796,7 @@ fn_port() {
fi
}
-fn_info_message_ac() {
+fn_info_messages_ac() {
{
fn_port "header"
fn_port "Game" port udp
@@ -787,7 +806,7 @@ fn_info_message_ac() {
} | column -s $'\t' -t
}
-fn_info_message_ark() {
+fn_info_messages_ark() {
{
fn_port "header"
fn_port "Game" port udp
@@ -797,7 +816,7 @@ fn_info_message_ark() {
} | column -s $'\t' -t
}
-fn_info_message_arma3() {
+fn_info_messages_arma3() {
{
fn_port "header"
fn_port "Game" port udp
@@ -809,7 +828,7 @@ fn_info_message_arma3() {
} | column -s $'\t' -t
}
-fn_info_message_armar() {
+fn_info_messages_armar() {
{
fn_port "header"
fn_port "Game" port udp
@@ -818,7 +837,7 @@ fn_info_message_armar() {
} | column -s $'\t' -t
}
-fn_info_message_av() {
+fn_info_messages_av() {
{
fn_port "header"
fn_port "Game" port udp
@@ -829,7 +848,7 @@ fn_info_message_av() {
} | column -s $'\t' -t
}
-fn_info_message_bf1942() {
+fn_info_messages_bf1942() {
{
fn_port "header"
fn_port "Game" port udp
@@ -837,7 +856,7 @@ fn_info_message_bf1942() {
} | column -s $'\t' -t
}
-fn_info_message_bfv() {
+fn_info_messages_bfv() {
{
fn_port "header"
fn_port "Game" port udp
@@ -845,7 +864,7 @@ fn_info_message_bfv() {
} | column -s $'\t' -t
}
-fn_info_message_bo() {
+fn_info_messages_bo() {
{
fn_port "header"
fn_port "Game" port udp
@@ -853,7 +872,7 @@ fn_info_message_bo() {
} | column -s $'\t' -t
}
-fn_info_message_bt() {
+fn_info_messages_bt() {
{
fn_port "header"
fn_port "Game" port udp
@@ -861,7 +880,7 @@ fn_info_message_bt() {
} | column -s $'\t' -t
}
-fn_info_message_btl() {
+fn_info_messages_btl() {
{
fn_port "header"
fn_port "Game" port udp
@@ -887,8 +906,8 @@ fn_info_messages_ck() {
} | column -s $'\t' -t
}
-fn_info_message_cmw() {
- fn_info_message_password_strip
+fn_info_messages_cmw() {
+ fn_info_messages_password_strip
{
fn_port "header"
fn_port "Game" port udp
@@ -897,7 +916,7 @@ fn_info_message_cmw() {
} | column -s $'\t' -t
}
-fn_info_message_cod() {
+fn_info_messages_cod() {
{
fn_port "header"
fn_port "Game" port udp
@@ -905,7 +924,7 @@ fn_info_message_cod() {
} | column -s $'\t' -t
}
-fn_info_message_coduo() {
+fn_info_messages_coduo() {
{
fn_port "header"
fn_port "Game" port udp
@@ -913,7 +932,7 @@ fn_info_message_coduo() {
} | column -s $'\t' -t
}
-fn_info_message_cod2() {
+fn_info_messages_cod2() {
{
fn_port "header"
fn_port "Game" port udp
@@ -921,7 +940,7 @@ fn_info_message_cod2() {
} | column -s $'\t' -t
}
-fn_info_message_cod4() {
+fn_info_messages_cod4() {
{
fn_port "header"
fn_port "Game" port udp
@@ -929,7 +948,7 @@ fn_info_message_cod4() {
} | column -s $'\t' -t
}
-fn_info_message_codwaw() {
+fn_info_messages_codwaw() {
{
fn_port "header"
fn_port "Game" port udp
@@ -937,7 +956,7 @@ fn_info_message_codwaw() {
} | column -s $'\t' -t
}
-fn_info_message_col() {
+fn_info_messages_col() {
{
fn_port "header"
fn_port "Game" port udp
@@ -946,7 +965,15 @@ fn_info_message_col() {
} | column -s $'\t' -t
}
-fn_info_message_csgo() {
+fn_info_messages_cs2() {
+ {
+ fn_port "header"
+ fn_port "Game" port udp
+ fn_port "Query" queryport tcp
+ } | column -s $'\t' -t
+}
+
+fn_info_messages_csgo() {
{
fn_port "header"
fn_port "Game" port udp
@@ -957,15 +984,15 @@ fn_info_message_csgo() {
} | column -s $'\t' -t
}
-fn_info_message_ct() {
- fn_info_message_password_strip
+fn_info_messages_ct() {
+ fn_info_messages_password_strip
{
fn_port "header"
fn_port "Game" port udp
} | column -s $'\t' -t
}
-fn_info_message_dayz() {
+fn_info_messages_dayz() {
{
fn_port "header"
fn_port "Game" port udp
@@ -975,7 +1002,7 @@ fn_info_message_dayz() {
} | column -s $'\t' -t
}
-fn_info_message_dodr() {
+fn_info_messages_dodr() {
{
fn_port "header"
fn_port "Game" port udp
@@ -983,7 +1010,7 @@ fn_info_message_dodr() {
} | column -s $'\t' -t
}
-fn_info_message_dst() {
+fn_info_messages_dst() {
{
fn_port "header"
fn_port "Game: Server" port udp
@@ -993,15 +1020,17 @@ fn_info_message_dst() {
} | column -s $'\t' -t
}
-fn_info_message_eco() {
+fn_info_messages_eco() {
{
fn_port "header"
fn_port "Game" port udp
+ fn_port "Query" queryport udp
fn_port "Web Interface" httpport tcp
+ fn_port "RCON" rconport tcp
} | column -s $'\t' -t
}
-fn_info_message_etl() {
+fn_info_messages_etl() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1009,7 +1038,7 @@ fn_info_message_etl() {
} | column -s $'\t' -t
}
-fn_info_message_fctr() {
+fn_info_messages_fctr() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1017,7 +1046,7 @@ fn_info_message_fctr() {
} | column -s $'\t' -t
}
-fn_info_message_goldsrc() {
+fn_info_messages_goldsrc() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1026,7 +1055,7 @@ fn_info_message_goldsrc() {
} | column -s $'\t' -t
}
-fn_info_message_hcu() {
+fn_info_messages_hcu() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1034,7 +1063,7 @@ fn_info_message_hcu() {
} | column -s $'\t' -t
}
-fn_info_message_hw() {
+fn_info_messages_hw() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1042,7 +1071,16 @@ fn_info_message_hw() {
} | column -s $'\t' -t
}
-fn_info_message_ins() {
+fn_info_messages_hz() {
+ {
+ fn_port "header"
+ fn_port "Game" port udp
+ fn_port "Query" queryport udp
+ fn_port "RCON" rconport tcp
+ } | column -s $'\t' -t
+}
+
+fn_info_messages_ins() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1053,7 +1091,7 @@ fn_info_message_ins() {
} | column -s $'\t' -t
}
-fn_info_message_inss() {
+fn_info_messages_inss() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1062,7 +1100,7 @@ fn_info_message_inss() {
} | column -s $'\t' -t
}
-fn_info_message_jc2() {
+fn_info_messages_jc2() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1070,7 +1108,7 @@ fn_info_message_jc2() {
} | column -s $'\t' -t
}
-fn_info_message_jc3() {
+fn_info_messages_jc3() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1080,14 +1118,14 @@ fn_info_message_jc3() {
} | column -s $'\t' -t
}
-fn_info_message_jk2() {
+fn_info_messages_jk2() {
{
fn_port "header"
fn_port "Game" port udp
} | column -s $'\t' -t
}
-fn_info_message_kf() {
+fn_info_messages_kf() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1109,8 +1147,8 @@ fn_info_message_kf() {
} | column -s $'\t' -t
}
-fn_info_message_kf2() {
- fn_info_message_password_strip
+fn_info_messages_kf2() {
+ fn_info_messages_password_strip
{
fn_port "header"
fn_port "Game" port udp
@@ -1128,15 +1166,7 @@ fn_info_message_kf2() {
} | column -s $'\t' -t
}
-fn_info_message_lo() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Query" queryport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_mc() {
+fn_info_messages_mc() {
{
fn_port "header"
fn_port "Game" port tcp
@@ -1145,7 +1175,7 @@ fn_info_message_mc() {
} | column -s $'\t' -t
}
-fn_info_message_mcb() {
+fn_info_messages_mcb() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1153,7 +1183,7 @@ fn_info_message_mcb() {
} | column -s $'\t' -t
}
-fn_info_message_mh() {
+fn_info_messages_mh() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1162,22 +1192,14 @@ fn_info_message_mh() {
} | column -s $'\t' -t
}
-fn_info_message_mohaa() {
+fn_info_messages_mohaa() {
{
fn_port "header"
fn_port "Game" port udp
} | column -s $'\t' -t
}
-fn_info_message_mom() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Beacon" beaconport udp
- } | column -s $'\t' -t
-}
-
-fn_info_message_mta() {
+fn_info_messages_mta() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1188,14 +1210,14 @@ fn_info_message_mta() {
} | column -s $'\t' -t
}
-fn_info_message_nec() {
+fn_info_messages_nec() {
{
fn_port "header"
fn_port "Game" port udp
} | column -s $'\t' -t
}
-fn_info_message_ohd() {
+fn_info_messages_ohd() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1204,7 +1226,7 @@ fn_info_message_ohd() {
} | column -s $'\t' -t
}
-fn_info_message_onset() {
+fn_info_messages_onset() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1213,7 +1235,7 @@ fn_info_message_onset() {
} | column -s $'\t' -t
}
-fn_info_message_pc() {
+fn_info_messages_pc() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1231,7 +1253,7 @@ fn_info_message_pc() {
} | column -s $'\t' -t
}
-fn_info_message_pc2() {
+fn_info_messages_pc2() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1240,7 +1262,7 @@ fn_info_message_pc2() {
} | column -s $'\t' -t
}
-fn_info_message_ps() {
+fn_info_messages_ps() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1249,7 +1271,7 @@ fn_info_message_ps() {
} | column -s $'\t' -t
}
-fn_info_message_pvr() {
+fn_info_messages_pvr() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1259,7 +1281,16 @@ fn_info_message_pvr() {
} | column -s $'\t' -t
}
-fn_info_message_pz() {
+fn_info_messages_pw() {
+ {
+ fn_port "header"
+ fn_port "Game" port udp
+ fn_port "Steam" steamport udp
+ fn_port "Unknown" unknownport tcp
+ } | column -s $'\t' -t
+}
+
+fn_info_messages_pz() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1267,28 +1298,38 @@ fn_info_message_pz() {
} | column -s $'\t' -t
}
-fn_info_message_qw() {
+fn_info_messages_qw() {
{
fn_port "header"
fn_port "Game" port udp
} | column -s $'\t' -t
}
-fn_info_message_q2() {
+fn_info_messages_q2() {
{
fn_port "header"
fn_port "Game" port udp
+ fn_port "Query" queryport udp
} | column -s $'\t' -t
}
-fn_info_message_q3() {
+fn_info_messages_q3() {
{
fn_port "header"
fn_port "Game" port udp
+ fn_port "Query" queryport udp
} | column -s $'\t' -t
}
-fn_info_message_ql() {
+fn_info_messages_q4() {
+ {
+ fn_port "header"
+ fn_port "Game" port udp
+ fn_port "Query" queryport udp
+ } | column -s $'\t' -t
+}
+
+fn_info_messages_ql() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1298,7 +1339,7 @@ fn_info_message_ql() {
} | column -s $'\t' -t
}
-fn_info_message_ro() {
+fn_info_messages_ro() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1319,14 +1360,14 @@ fn_info_message_ro() {
} | column -s $'\t' -t
}
-fn_info_message_rtcw() {
+fn_info_messages_rtcw() {
{
fn_port "header"
fn_port "Game" port udp
} | column -s $'\t' -t
}
-fn_info_message_rust() {
+fn_info_messages_rust() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1336,7 +1377,7 @@ fn_info_message_rust() {
} | column -s $'\t' -t
}
-fn_info_message_rw() {
+fn_info_messages_rw() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1345,7 +1386,7 @@ fn_info_message_rw() {
} | column -s $'\t' -t
}
-fn_info_message_samp() {
+fn_info_messages_samp() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1353,7 +1394,7 @@ fn_info_message_samp() {
} | column -s $'\t' -t
}
-fn_info_message_sb() {
+fn_info_messages_sb() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1362,7 +1403,7 @@ fn_info_message_sb() {
} | column -s $'\t' -t
}
-fn_info_message_sbots() {
+fn_info_messages_sbots() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1370,15 +1411,15 @@ fn_info_message_sbots() {
} | column -s $'\t' -t
}
-fn_info_message_scpsl() {
+fn_info_messages_scpsl() {
{
fn_port "header"
fn_port "Game" port tcp
} | column -s $'\t' -t
}
-fn_info_message_sdtd() {
- fn_info_message_password_strip
+fn_info_messages_sdtd() {
+ fn_info_messages_password_strip
{
fn_port "header"
fn_port "Game" port udp
@@ -1401,11 +1442,11 @@ fn_info_message_sdtd() {
{
echo -e "${lightblue}Telnet enabled:\t${default}${telnetenabled}"
echo -e "${lightblue}Telnet address:\t${default}${telnetip} ${telnetport}"
- echo -e "${lightblue}Telnet password:\t${default}${telnetpass}"
+ echo -e "${lightblue}Telnet password:\t${default}${telnetpassword}"
} | column -s $'\t' -t
}
-fn_info_message_sf() {
+fn_info_messages_sf() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1414,7 +1455,24 @@ fn_info_message_sf() {
} | column -s $'\t' -t
}
-fn_info_message_sof2() {
+fn_info_messages_sm() {
+ fn_info_messages_password_strip
+ {
+ fn_port "header"
+ fn_port "Game" port udp
+ fn_port "Query" queryport udp
+ fn_port "Telnet" telnetport tcp
+ } | column -s $'\t' -t
+ echo -e ""
+ echo -e "${bold}${lightgreen}${gamename} Telnet${default}"
+ fn_messages_separator
+ {
+ echo -e "${lightblue}Telnet enabled:\t${default}${telnetenabled}"
+ echo -e "${lightblue}Telnet address:\t${default}${telnetip} ${telnetport}"
+ } | column -s $'\t' -t
+}
+
+fn_info_messages_sof2() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1422,7 +1480,7 @@ fn_info_message_sof2() {
} | column -s $'\t' -t
}
-fn_info_message_sol() {
+fn_info_messages_sol() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1431,7 +1489,7 @@ fn_info_message_sol() {
} | column -s $'\t' -t
}
-fn_info_message_prism3d() {
+fn_info_messages_prism3d() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1439,7 +1497,7 @@ fn_info_message_prism3d() {
} | column -s $'\t' -t
}
-fn_info_message_source() {
+fn_info_messages_source() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1454,12 +1512,13 @@ fn_info_message_source() {
} | column -s $'\t' -t
}
-fn_info_message_spark() {
- fn_info_message_password_strip
+fn_info_messages_spark() {
+ fn_info_messages_password_strip
{
fn_port "header"
fn_port "Game" port udp
fn_port "Query" queryport udp
+ fn_port "Mod Server" modserverport tcp
fn_port "Web Interface" httpport tcp
} | column -s $'\t' -t
echo -e ""
@@ -1472,7 +1531,7 @@ fn_info_message_spark() {
} | column -s $'\t' -t
}
-fn_info_message_squad() {
+fn_info_messages_squad() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1481,7 +1540,7 @@ fn_info_message_squad() {
} | column -s $'\t' -t
}
-fn_info_message_st() {
+fn_info_messages_st() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1489,7 +1548,7 @@ fn_info_message_st() {
} | column -s $'\t' -t
}
-fn_info_message_ti() {
+fn_info_messages_ti() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1498,7 +1557,7 @@ fn_info_message_ti() {
} | column -s $'\t' -t
}
-fn_info_message_ts3() {
+fn_info_messages_ts3() {
{
fn_port "header"
fn_port "Voice" port udp
@@ -1511,7 +1570,7 @@ fn_info_message_ts3() {
} | column -s $'\t' -t
}
-fn_info_message_tw() {
+fn_info_messages_tw() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1519,7 +1578,7 @@ fn_info_message_tw() {
} | column -s $'\t' -t
}
-fn_info_message_terraria() {
+fn_info_messages_terraria() {
{
fn_port "header"
fn_port "Game" port tcp
@@ -1527,7 +1586,7 @@ fn_info_message_terraria() {
} | column -s $'\t' -t
}
-fn_info_message_tu() {
+fn_info_messages_tu() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1536,7 +1595,17 @@ fn_info_message_tu() {
} | column -s $'\t' -t
}
-fn_info_message_ut2k4() {
+fn_info_messages_tf() {
+ {
+ fn_port "header"
+ fn_port "Game" port udp
+ fn_port "Query" queryport tcp
+ fn_port "Beacon" beaconport udp
+ fn_port "Shutdown" shutdownport tcp
+ } | column -s $'\t' -t
+}
+
+fn_info_messages_ut2k4() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1556,7 +1625,7 @@ fn_info_message_ut2k4() {
} | column -s $'\t' -t
}
-fn_info_message_unreal() {
+fn_info_messages_unreal() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1575,7 +1644,7 @@ fn_info_message_unreal() {
} | column -s $'\t' -t
}
-fn_info_message_unt() {
+fn_info_messages_unt() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1584,7 +1653,7 @@ fn_info_message_unt() {
} | column -s $'\t' -t
}
-fn_info_message_ut() {
+fn_info_messages_ut() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1592,8 +1661,8 @@ fn_info_message_ut() {
} | column -s $'\t' -t
}
-fn_info_message_ut3() {
- fn_info_message_password_strip
+fn_info_messages_ut3() {
+ fn_info_messages_password_strip
{
fn_port "header"
fn_port "Game" port udp
@@ -1611,7 +1680,7 @@ fn_info_message_ut3() {
} | column -s $'\t' -t
}
-fn_info_message_vh() {
+fn_info_messages_vh() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1619,21 +1688,21 @@ fn_info_message_vh() {
} | column -s $'\t' -t
}
-fn_info_message_vints() {
+fn_info_messages_vints() {
{
fn_port "header"
fn_port "Game" port tcp
} | column -s $'\t' -t
}
-fn_info_message_vpmc() {
+fn_info_messages_vpmc() {
{
fn_port "header"
fn_port "Game" port tcp
} | column -s $'\t' -t
}
-fn_info_message_wet() {
+fn_info_messages_wet() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1641,7 +1710,7 @@ fn_info_message_wet() {
} | column -s $'\t' -t
}
-fn_info_message_wf() {
+fn_info_messages_wf() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1649,7 +1718,7 @@ fn_info_message_wf() {
} | column -s $'\t' -t
}
-fn_info_message_wurm() {
+fn_info_messages_wurm() {
{
fn_port "header"
fn_port "Game" port tcp
@@ -1659,7 +1728,7 @@ fn_info_message_wurm() {
} | column -s $'\t' -t
}
-fn_info_message_stn() {
+fn_info_messages_stn() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1667,188 +1736,194 @@ fn_info_message_stn() {
} | column -s $'\t' -t
}
-fn_info_message_select_engine() {
+fn_info_messages_select_engine() {
# Display details depending on game or engine.
if [ "${shortname}" == "ac" ]; then
- fn_info_message_ac
+ fn_info_messages_ac
elif [ "${shortname}" == "ark" ]; then
- fn_info_message_ark
+ fn_info_messages_ark
elif [ "${shortname}" == "arma3" ]; then
- fn_info_message_arma3
+ fn_info_messages_arma3
elif [ "${shortname}" == "armar" ]; then
- fn_info_message_armar
+ fn_info_messages_armar
elif [ "${shortname}" == "av" ]; then
- fn_info_message_av
+ fn_info_messages_av
elif [ "${shortname}" == "bf1942" ]; then
- fn_info_message_bf1942
+ fn_info_messages_bf1942
elif [ "${shortname}" == "bfv" ]; then
- fn_info_message_bfv
+ fn_info_messages_bfv
elif [ "${shortname}" == "bo" ]; then
- fn_info_message_bo
+ fn_info_messages_bo
elif [ "${shortname}" == "bt" ]; then
- fn_info_message_bt
+ fn_info_messages_bt
elif [ "${shortname}" == "btl" ]; then
- fn_info_message_btl
- elif [ "${shortname}" == "cd" ]; then
- fn_info_messages_cd
+ fn_info_messages_btl
elif [ "${shortname}" == "ck" ]; then
fn_info_messages_ck
+ elif [ "${shortname}" == "cs2" ]; then
+ fn_info_messages_cs2
elif [ "${shortname}" == "csgo" ]; then
- fn_info_message_csgo
+ fn_info_messages_csgo
elif [ "${shortname}" == "cmw" ]; then
- fn_info_message_cmw
+ fn_info_messages_cmw
elif [ "${shortname}" == "cod" ]; then
- fn_info_message_cod
+ fn_info_messages_cod
elif [ "${shortname}" == "coduo" ]; then
- fn_info_message_coduo
+ fn_info_messages_coduo
elif [ "${shortname}" == "cod2" ]; then
- fn_info_message_cod2
+ fn_info_messages_cod2
elif [ "${shortname}" == "cod4" ]; then
- fn_info_message_cod4
+ fn_info_messages_cod4
elif [ "${shortname}" == "codwaw" ]; then
- fn_info_message_codwaw
+ fn_info_messages_codwaw
elif [ "${shortname}" == "col" ]; then
- fn_info_message_col
+ fn_info_messages_col
elif [ "${shortname}" == "ct" ]; then
- fn_info_message_ct
+ fn_info_messages_ct
elif [ "${shortname}" == "dayz" ]; then
- fn_info_message_dayz
+ fn_info_messages_dayz
elif [ "${shortname}" == "dodr" ]; then
- fn_info_message_dodr
+ fn_info_messages_dodr
elif [ "${shortname}" == "dst" ]; then
- fn_info_message_dst
+ fn_info_messages_dst
elif [ "${shortname}" == "eco" ]; then
- fn_info_message_eco
+ fn_info_messages_eco
elif [ "${shortname}" == "etl" ]; then
- fn_info_message_etl
+ fn_info_messages_etl
elif [ "${shortname}" == "fctr" ]; then
- fn_info_message_fctr
+ fn_info_messages_fctr
elif [ "${shortname}" == "hcu" ]; then
- fn_info_message_hcu
+ fn_info_messages_hcu
elif [ "${shortname}" == "hw" ]; then
- fn_info_message_hw
+ fn_info_messages_hw
+ elif [ "${shortname}" == "hz" ]; then
+ fn_info_messages_hz
elif [ "${shortname}" == "ins" ]; then
- fn_info_message_ins
+ fn_info_messages_ins
elif [ "${shortname}" == "inss" ]; then
- fn_info_message_inss
+ fn_info_messages_inss
elif [ "${shortname}" == "jc2" ]; then
- fn_info_message_jc2
+ fn_info_messages_jc2
elif [ "${shortname}" == "jc3" ]; then
- fn_info_message_jc3
+ fn_info_messages_jc3
elif [ "${shortname}" == "jk2" ]; then
- fn_info_message_jk2
+ fn_info_messages_jk2
elif [ "${shortname}" == "kf" ]; then
- fn_info_message_kf
+ fn_info_messages_kf
elif [ "${shortname}" == "kf2" ]; then
- fn_info_message_kf2
- elif [ "${shortname}" == "lo" ]; then
- fn_info_message_lo
+ fn_info_messages_kf2
elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "wmc" ]; then
- fn_info_message_mc
+ fn_info_messages_mc
elif [ "${shortname}" == "mcb" ]; then
- fn_info_message_mcb
+ fn_info_messages_mcb
elif [ "${shortname}" == "mh" ]; then
- fn_info_message_mh
+ fn_info_messages_mh
elif [ "${shortname}" == "mohaa" ]; then
- fn_info_message_mohaa
- elif [ "${shortname}" == "mom" ]; then
- fn_info_message_mom
+ fn_info_messages_mohaa
elif [ "${shortname}" == "mta" ]; then
- fn_info_message_mta
+ fn_info_messages_mta
elif [ "${shortname}" == "nec" ]; then
- fn_info_message_nec
+ fn_info_messages_nec
elif [ "${shortname}" == "ohd" ]; then
- fn_info_message_ohd
+ fn_info_messages_ohd
elif [ "${shortname}" == "onset" ]; then
- fn_info_message_onset
+ fn_info_messages_onset
elif [ "${shortname}" == "pc" ]; then
- fn_info_message_pc
+ fn_info_messages_pc
elif [ "${shortname}" == "pc2" ]; then
- fn_info_message_pc2
+ fn_info_messages_pc2
elif [ "${shortname}" == "ps" ]; then
- fn_info_message_ps
+ fn_info_messages_ps
elif [ "${shortname}" == "pvr" ]; then
- fn_info_message_pvr
+ fn_info_messages_pvr
+ elif [ "${shortname}" == "pw" ]; then
+ fn_info_messages_pw
elif [ "${shortname}" == "pz" ]; then
- fn_info_message_pz
+ fn_info_messages_pz
elif [ "${shortname}" == "q2" ]; then
- fn_info_message_q2
+ fn_info_messages_q2
elif [ "${shortname}" == "q3" ]; then
- fn_info_message_q3
+ fn_info_messages_q3
+ elif [ "${shortname}" == "q4" ]; then
+ fn_info_messages_q3
elif [ "${shortname}" == "ql" ]; then
- fn_info_message_ql
+ fn_info_messages_ql
elif [ "${shortname}" == "qw" ]; then
- fn_info_message_qw
+ fn_info_messages_qw
elif [ "${shortname}" == "ro" ]; then
- fn_info_message_ro
+ fn_info_messages_ro
elif [ "${shortname}" == "rtcw" ]; then
- fn_info_message_rtcw
+ fn_info_messages_rtcw
elif [ "${shortname}" == "samp" ]; then
- fn_info_message_samp
+ fn_info_messages_samp
elif [ "${shortname}" == "sb" ]; then
- fn_info_message_sb
+ fn_info_messages_sb
elif [ "${shortname}" == "sbots" ]; then
- fn_info_message_sbots
+ fn_info_messages_sbots
elif [ "${shortname}" == "scpsl" ] || [ "${shortname}" == "scpslsm" ]; then
- fn_info_message_scpsl
+ fn_info_messages_scpsl
elif [ "${shortname}" == "sdtd" ]; then
- fn_info_message_sdtd
+ fn_info_messages_sdtd
elif [ "${shortname}" == "sf" ]; then
- fn_info_message_sf
+ fn_info_messages_sf
+ elif [ "${shortname}" == "sm" ]; then
+ fn_info_messages_sm
elif [ "${shortname}" == "sof2" ]; then
- fn_info_message_sof2
+ fn_info_messages_sof2
elif [ "${shortname}" == "sol" ]; then
- fn_info_message_sol
+ fn_info_messages_sol
elif [ "${shortname}" == "squad" ]; then
- fn_info_message_squad
+ fn_info_messages_squad
elif [ "${shortname}" == "st" ]; then
- fn_info_message_st
+ fn_info_messages_st
elif [ "${shortname}" == "stn" ]; then
- fn_info_message_stn
+ fn_info_messages_stn
elif [ "${shortname}" == "terraria" ]; then
- fn_info_message_terraria
+ fn_info_messages_terraria
+ elif [ "${shortname}" == "tf" ]; then
+ fn_info_messages_tf
elif [ "${shortname}" == "ti" ]; then
- fn_info_message_ti
+ fn_info_messages_ti
elif [ "${shortname}" == "ts3" ]; then
- fn_info_message_ts3
+ fn_info_messages_ts3
elif [ "${shortname}" == "tu" ]; then
- fn_info_message_tu
+ fn_info_messages_tu
elif [ "${shortname}" == "tw" ]; then
- fn_info_message_tw
+ fn_info_messages_tw
elif [ "${shortname}" == "unt" ]; then
- fn_info_message_unt
+ fn_info_messages_unt
elif [ "${shortname}" == "vh" ]; then
- fn_info_message_vh
+ fn_info_messages_vh
elif [ "${shortname}" == "vints" ]; then
- fn_info_message_vints
+ fn_info_messages_vints
elif [ "${shortname}" == "rust" ]; then
- fn_info_message_rust
+ fn_info_messages_rust
elif [ "${shortname}" == "rw" ]; then
- fn_info_message_rw
+ fn_info_messages_rw
elif [ "${shortname}" == "ut" ]; then
- fn_info_message_ut
+ fn_info_messages_ut
elif [ "${shortname}" == "ut2k4" ]; then
- fn_info_message_ut2k4
+ fn_info_messages_ut2k4
elif [ "${shortname}" == "ut3" ]; then
- fn_info_message_ut3
+ fn_info_messages_ut3
elif [ "${shortname}" == "vpmc" ]; then
- fn_info_message_vpmc
+ fn_info_messages_vpmc
elif [ "${shortname}" == "wet" ]; then
- fn_info_message_wet
+ fn_info_messages_wet
elif [ "${shortname}" == "wf" ]; then
- fn_info_message_wf
+ fn_info_messages_wf
elif [ "${shortname}" == "wurm" ]; then
- fn_info_message_wurm
+ fn_info_messages_wurm
elif [ "${engine}" == "goldsrc" ]; then
- fn_info_message_goldsrc
+ fn_info_messages_goldsrc
elif [ "${engine}" == "prism3d" ]; then
- fn_info_message_prism3d
+ fn_info_messages_prism3d
elif [ "${engine}" == "source" ]; then
- fn_info_message_source
+ fn_info_messages_source
elif [ "${engine}" == "spark" ]; then
- fn_info_message_spark
+ fn_info_messages_spark
elif [ "${engine}" == "unreal" ]; then
- fn_info_message_unreal
+ fn_info_messages_unreal
else
fn_print_error_nl "Unable to detect game server."
fi
diff --git a/lgsm/modules/info_stats.sh b/lgsm/modules/info_stats.sh
index 8f0119532..dcc247b59 100644
--- a/lgsm/modules/info_stats.sh
+++ b/lgsm/modules/info_stats.sh
@@ -54,7 +54,10 @@ uuidhardware=$(cat "/etc/machine-id")
# nearest 100Mhz.
cpuusedmhzroundup="$(((cpuusedmhz + 99) / 100 * 100))"
# nearest 100MB
-memusedroundup="$(((memused + 99) / 100 * 100))"
+memusedmbroundup="$(((memusedmb + 99) / 100 * 100))"
+
+# Convert any commas to dots.
+physmemtotal="${physmemtotal//,/.}"
apisecret="A-OzP02TSMWt4_vHi6ZpUw"
measurementid="G-0CR8V7EMT5"
@@ -66,22 +69,25 @@ payload="{
{
\"name\": \"LinuxGSM\",
\"params\": {
- \"cpuusedmhzroundup\": \"${cpuusedmhzroundup}MHz\",
+ \"cpuusedmhzroundup\": \"${cpuusedmhzroundup}\",
\"diskused\": \"${serverfilesdu}\",
\"distro\": \"${distroname}\",
\"game\": \"${gamename}\",
- \"memusedroundup\": \"${memusedroundup}MB\",
- \"ramused\": \"${memusedroundup}MB\",
+ \"memusedmbroundup\": \"${memusedmbroundup}\",
+ \"ramused\": \"${memusedmbroundup}\",
\"servercpu\": \"${cpumodel} ${cpucores} cores\",
\"servercpufreq\": \"${cpufreqency} x${cpucores}\",
\"serverdisk\": \"${totalspace}\",
\"serverfilesdu\": \"${serverfilesdu}\",
\"serverram\": \"${physmemtotal}\",
+ \"serverramgb\": \"${physmemtotalgb}\",
\"uuidhardware\": \"${uuidhardware}\",
\"uuidinstall\": \"${uuidinstall}\",
\"uuidinstance\": \"${uuidinstance}\",
\"version\": \"${version}\",
- \"virtualenvironment\": \"${virtualenvironment}\"
+ \"virtualenvironment\": \"${virtualenvironment}\",
+ \"tmuxversion\": \"${tmuxversion}\",
+ \"java\": \"${javaversion}\"
}
}
]
@@ -156,7 +162,7 @@ fn_script_log_info "* uuid-hardware: ${uuidhardware}"
fn_script_log_info "* Game Name: ${gamename}"
fn_script_log_info "* Distro Name: ${distroname}"
fn_script_log_info "* Game Server CPU Used: ${cpuusedmhzroundup}MHz"
-fn_script_log_info "* Game Server RAM Used: ${memusedroundup}MB"
+fn_script_log_info "* Game Server RAM Used: ${memusedmbroundup}MB"
fn_script_log_info "* Game Server Disk Used: ${serverfilesdu}"
fn_script_log_info "* Server CPU Model: ${cpumodel}"
fn_script_log_info "* Server CPU Frequency: ${cpufreqency}"
diff --git a/lgsm/modules/install_complete.sh b/lgsm/modules/install_complete.sh
index 2c3cb2493..5a9873067 100644
--- a/lgsm/modules/install_complete.sh
+++ b/lgsm/modules/install_complete.sh
@@ -12,7 +12,7 @@ fn_messages_separator
if [ "${exitcode}" == "1" ]; then
echo -e "${bold}${red}Install Failed!${default}"
- fn_script_log_fatal "Install Failed!"
+ fn_script_log_fail "Install Failed!"
elif [ "${exitcode}" == "2" ]; then
echo -e "${bold}${red}Install Completed with Errors!${default}}"
fn_script_log_error "Install Completed with Errors!"
diff --git a/lgsm/modules/install_config.sh b/lgsm/modules/install_config.sh
index 1e3c243ab..22843c7b0 100644
--- a/lgsm/modules/install_config.sh
+++ b/lgsm/modules/install_config.sh
@@ -11,7 +11,7 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_check_cfgdir() {
if [ ! -d "${servercfgdir}" ]; then
echo -e "creating ${servercfgdir} config directory."
- fn_script_log_info "creating ${servercfgdir} config directory."
+ fn_script_log_info "Creating ${servercfgdir} config directory."
mkdir -pv "${servercfgdir}"
fi
}
@@ -25,7 +25,7 @@ fn_fetch_default_config() {
echo -e ""
echo -e "${italic}https://github.com/GameServerManagers/Game-Server-Configs${default}"
echo -e ""
- fn_sleep_time
+ fn_sleep_time_1
mkdir -p "${lgsmdir}/config-default/config-game"
githuburl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/main"
for config in "${array_configs[@]}"; do
@@ -38,7 +38,7 @@ fn_default_config_remote() {
for config in "${array_configs[@]}"; do
# every config is copied
echo -e "copying ${config} config file."
- fn_script_log_info "copying ${servercfg} config file."
+ fn_script_log_info "Copying ${servercfg} config file."
if [ "${config}" == "${servercfgdefault}" ]; then
mkdir -p "${servercfgdir}"
cp -nv "${lgsmdir}/config-default/config-game/${config}" "${servercfgfullpath}"
@@ -66,7 +66,7 @@ fn_default_config_local() {
cp -n "${servercfgdir}/${servercfgdefault}" "${servercfgfullpath}"
if [ "${exitcode}" != 0 ]; then
fn_print_fail_eol
- fn_script_log_fatal "copying config file [ ${servercfgdefault} ]"
+ fn_script_log_fail "copying config file [ ${servercfgdefault} ]"
else
fn_print_ok_eol
fn_script_log_pass "copying config file [ ${servercfgdefault} ]"
@@ -82,7 +82,7 @@ fn_set_config_vars() {
servername="LinuxGSM"
rconpass="admin${randomstring}"
echo -e "changing hostname."
- fn_script_log_info "changing hostname."
+ fn_script_log_info "Changing hostname."
fn_sleep_time
# prevents var from being overwritten with the servername.
if grep -q "SERVERNAME=SERVERNAME" "${lgsmdir}/config-default/config-game/${config}" 2> /dev/null; then
@@ -93,7 +93,7 @@ fn_set_config_vars() {
sed -i "s/SERVERNAME/${servername}/g" "${servercfgfullpath}"
fi
echo -e "changing rcon/admin password."
- fn_script_log_info "changing rcon/admin password."
+ fn_script_log_info "Changing rcon/admin password."
if [ "${shortname}" == "squad" ]; then
sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgdir}/Rcon.cfg"
else
@@ -112,15 +112,15 @@ fn_set_dst_config_vars() {
## cluster.ini
if grep -Fq "SERVERNAME" "${clustercfgfullpath}"; then
echo -e "changing server name."
- fn_script_log_info "changing server name."
+ fn_script_log_info "Changing server name."
sed -i "s/SERVERNAME/LinuxGSM/g" "${clustercfgfullpath}"
fn_sleep_time
echo -e "changing shard mode."
- fn_script_log_info "changing shard mode."
+ fn_script_log_info "Changing shard mode."
sed -i "s/USESHARDING/${sharding}/g" "${clustercfgfullpath}"
fn_sleep_time
echo -e "randomizing cluster key."
- fn_script_log_info "randomizing cluster key."
+ fn_script_log_info "Randomizing cluster key."
randomstring=$(tr -dc 'A-Za-z0-9_' < /dev/urandom 2> /dev/null | head -c 8 | xargs)
sed -i "s/CLUSTERKEY/${randomstring}/g" "${clustercfgfullpath}"
fn_sleep_time
@@ -139,18 +139,18 @@ fn_set_dst_config_vars() {
fi
echo -e "changing shard name."
- fn_script_log_info "changing shard name."
+ fn_script_log_info "Changing shard name."
sed -i "s/SHARDNAME/${shard}/g" "${servercfgfullpath}"
fn_sleep_time
echo -e "changing master setting."
- fn_script_log_info "changing master setting."
+ fn_script_log_info "Changing master setting."
sed -i "s/ISMASTER/${master}/g" "${servercfgfullpath}"
fn_sleep_time
## worldgenoverride.lua
if [ "${cave}" == "true" ]; then
echo -e "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua."
- fn_script_log_info "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua."
+ fn_script_log_info "Defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua."
echo 'return { override_enabled = true, preset = "DST_CAVE", }' > "${servercfgdir}/worldgenoverride.lua"
fi
fn_sleep_time
@@ -245,7 +245,7 @@ elif [ "${shortname}" == "bt" ]; then
fn_list_config_locations
elif [ "${shortname}" == "btl" ]; then
fn_check_cfgdir
- array_configs+=(DefaultGame.ini)
+ array_configs+=(Game.ini)
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
@@ -286,12 +286,6 @@ elif [ "${shortname}" == "bmdm" ]; then
fn_default_config_remote
fn_set_config_vars
fn_list_config_locations
-elif [ "${shortname}" == "cd" ]; then
- array_configs+=(properties.json)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
elif [ "${shortname}" == "ck" ]; then
array_configs+=(ServerConfig.json)
fn_fetch_default_config
@@ -346,6 +340,12 @@ elif [ "${shortname}" == "cs" ]; then
fn_default_config_remote
fn_set_config_vars
fn_list_config_locations
+elif [ "${shortname}" == "cs2" ]; then
+ array_configs+=(server.cfg)
+ fn_fetch_default_config
+ fn_default_config_remote
+ fn_set_config_vars
+ fn_list_config_locations
elif [ "${shortname}" == "cscz" ]; then
array_configs+=(server.cfg)
fn_fetch_default_config
@@ -478,7 +478,7 @@ elif [ "${shortname}" == "hldms" ]; then
fn_set_config_vars
fn_list_config_locations
elif [ "${shortname}" == "ohd" ]; then
- array_configs+=(Game.ini)
+ array_configs+=(Admins.cfg Engine.ini Game.ini MapCycle.cfg)
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
@@ -495,6 +495,9 @@ elif [ "${shortname}" == "hl2dm" ]; then
fn_default_config_remote
fn_set_config_vars
fn_list_config_locations
+elif [ "${shortname}" == "hz" ]; then
+ # Config is generated on first run
+ :
elif [ "${shortname}" == "ins" ]; then
array_configs+=(server.cfg)
fn_fetch_default_config
@@ -586,12 +589,6 @@ elif [ "${shortname}" == "mta" ]; then
fn_fetch_default_config
fn_default_config_remote
fn_list_config_locations
-elif [ "${shotname}" == "mom" ]; then
- array_configs+=(DedicatedServerConfig.cfg)
- fn_fetch_default_config
- fn_default_config_remote
- fn_set_config_vars
- fn_list_config_locations
elif [ "${shortname}" == "pvr" ]; then
fn_check_cfgdir
array_configs+=(Game.ini)
@@ -604,6 +601,12 @@ elif [ "${shortname}" == "pvkii" ]; then
fn_default_config_remote
fn_set_config_vars
fn_list_config_locations
+elif [ "${shortname}" == "pw" ]; then
+ array_configs+=(PalWorldSettings.ini)
+ fn_fetch_default_config
+ fn_default_config_remote
+ fn_set_config_vars
+ fn_list_config_locations
elif [ "${shortname}" == "pz" ]; then
fn_check_cfgdir
array_configs+=(server.ini)
@@ -634,6 +637,12 @@ elif [ "${shortname}" == "q2" ]; then
fn_set_config_vars
fn_list_config_locations
elif [ "${shortname}" == "q3" ]; then
+ array_configs+=(server.cfg)
+ fn_fetch_default_configs
+ fn_default_config_remote
+ fn_set_config_vars
+ fn_list_config_locations
+elif [ "${shortname}" == "q4" ]; then
array_configs+=(server.cfg)
fn_fetch_default_config
fn_default_config_remote
@@ -686,6 +695,9 @@ elif [ "${shortname}" == "sf" ]; then
fn_default_config_remote
fn_set_config_vars
fn_list_config_locations
+elif [ "${shortname}" == "sm" ]; then
+ fn_default_config_local
+ fn_list_config_locations
elif [ "${shortname}" == "sol" ]; then
array_configs+=(soldat.ini)
fn_fetch_default_config
diff --git a/lgsm/modules/install_eula.sh b/lgsm/modules/install_eula.sh
index 7f0229bfa..7f7f95f35 100644
--- a/lgsm/modules/install_eula.sh
+++ b/lgsm/modules/install_eula.sh
@@ -30,10 +30,10 @@ if [ -z "${autoinstall}" ]; then
fi
elif [ "${commandname}" == "START" ]; then
fn_print_info "By continuing you are indicating your agreement to the EULA."
- sleep 5
+ fn_sleep_time_5
else
echo -e "By using auto-install you are indicating your agreement to the EULA."
- sleep 5
+ fn_sleep_time_5
fi
if [ "${shortname}" == "ts3" ]; then
diff --git a/lgsm/modules/install_gslt.sh b/lgsm/modules/install_gslt.sh
index 772885d64..aa8d89d33 100644
--- a/lgsm/modules/install_gslt.sh
+++ b/lgsm/modules/install_gslt.sh
@@ -10,7 +10,6 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo -e ""
echo -e "${bold}${lightyellow}Game Server Login Token${default}"
fn_messages_separator
-fn_sleep_time
if [ "${shortname}" == "csgo" ] || [ "${shortname}" == "css" ] || [ "${shortname}" == "nmrih" ] || [ "${shortname}" == "bs" ]; then
echo -e "GSLT is required to run a public ${gamename} server"
fn_script_log_info "GSLT is required to run a public ${gamename} server"
@@ -36,7 +35,7 @@ if [ -z "${autoinstall}" ]; then
fi
fi
fi
-fn_sleep_time
+
if [ "${shortname}" == "tu" ]; then
echo -e "The GSLT can be changed by editing ${servercfgdir}/${servercfg}."
fn_script_log_info "The GSLT can be changed by editing ${servercfgdir}/${servercfg}."
@@ -44,4 +43,5 @@ else
echo -e "The GSLT can be changed by editing ${configdirserver}/${selfname}.cfg."
fn_script_log_info "The GSLT can be changed by editing ${configdirserver}/${selfname}.cfg."
fi
+fn_sleep_time_1
echo -e ""
diff --git a/lgsm/modules/install_logs.sh b/lgsm/modules/install_logs.sh
index 5b12dd3e1..294bc1e46 100644
--- a/lgsm/modules/install_logs.sh
+++ b/lgsm/modules/install_logs.sh
@@ -11,9 +11,7 @@ if [ "${checklogs}" != "1" ]; then
echo -e ""
echo -e "${bold}${lightyellow}Creating Log Directories${default}"
fn_messages_separator
- fn_sleep_time
fi
-fn_sleep_time
# Create LinuxGSM logs.
echo -en "installing log dir: ${logdir}..."
mkdir -p "${logdir}"
diff --git a/lgsm/modules/install_server_dir.sh b/lgsm/modules/install_server_dir.sh
index 0136e52fc..0703e0c54 100644
--- a/lgsm/modules/install_server_dir.sh
+++ b/lgsm/modules/install_server_dir.sh
@@ -10,7 +10,6 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo -e ""
echo -e "${bold}${lightyellow}Server Directory${default}"
fn_messages_separator
-fn_sleep_time
if [ -d "${serverfiles}" ]; then
fn_print_warning_nl "A server is already installed here."
fi
diff --git a/lgsm/modules/install_server_files.sh b/lgsm/modules/install_server_files.sh
index 2763f470b..7ebac259f 100644
--- a/lgsm/modules/install_server_files.sh
+++ b/lgsm/modules/install_server_files.sh
@@ -106,6 +106,13 @@ fn_install_server_files() {
chmodx="nochmodx" run="norun"
force="noforce"
md5="b0e26d8919fe9313fb9d8ded2360f3db"
+ elif [ "${shortname}" == "q4" ]; then
+ remote_fileurl="http://linuxgsm.download/Quake4/quake4-1.4.2-x86-linuxded.tar.xz"
+ local_filedir="${tmpdir}"
+ local_filename="quake4-1.4.2-x86-linuxded.tar.xz"
+ chmodx="nochmodx" run="norun"
+ force="noforce"
+ md5="afe30b44f23c8ae2ce6f0f464473d8ba"
elif [ "${shortname}" == "qw" ]; then
remote_fileurl="http://linuxgsm.download/QuakeWorld/nquake.server.linux.190506.full.tar.xz"
local_filedir="${tmpdir}"
@@ -184,7 +191,7 @@ fn_install_server_files() {
force="noforce"
md5="581a333cc7eacda2f56d5a00fe11eafa"
elif [ "${shortname}" == "samp" ]; then
- remote_fileurl="https://files.sa-mp.com/samp037svr_R2-1.tar.gz"
+ remote_fileurl="https://files.samp-sc.com/samp037svr_R2-1.tar.gz"
local_filedir="${tmpdir}"
local_filename="samp037svr_R2-1.tar.gz"
chmodx="nochmodx" run="norun"
@@ -240,7 +247,7 @@ elif [ "${shortname}" == "vints" ]; then
elif [ "${shortname}" == "ut99" ]; then
fn_install_server_files
update_ut99.sh
-elif [ -z "${appid}" ] || [ "${shortname}" == "ahl" ] || [ "${shortname}" == "bb" ] || [ "${shortname}" == "ns" ] || [ "${shortname}" == "sfc" ] || [ "${shortname}" == "ts" ] || [ "${shortname}" == "vs" ] || [ "${shortname}" == "zmr" ]; then
+elif [ -z "${appid}" ] || [ "${shortname}" == "ahl" ] || [ "${shortname}" == "bb" ] || [ "${shortname}" == "q4" ] || [ "${shortname}" == "ns" ] || [ "${shortname}" == "sfc" ] || [ "${shortname}" == "ts" ] || [ "${shortname}" == "vs" ] || [ "${shortname}" == "zmr" ]; then
if [ "${shortname}" == "ut" ]; then
install_eula.sh
fi
diff --git a/lgsm/modules/install_squad_license.sh b/lgsm/modules/install_squad_license.sh
index 604b3bcad..28f4456a5 100644
--- a/lgsm/modules/install_squad_license.sh
+++ b/lgsm/modules/install_squad_license.sh
@@ -18,7 +18,7 @@ echo -e "https://squad.fandom.com/wiki/Server_licensing"
fn_script_log_info "Get more info and a server license here:"
fn_script_log_info "https://squad.fandom.com/wiki/Server_licensing"
echo -e ""
-fn_sleep_time
+fn_sleep_time_1
echo -e "The Squad server license can be changed by editing ${servercfgdir}/License.cfg."
fn_script_log_info "The Squad server license can be changed by editing ${selfname}."
echo -e ""
diff --git a/lgsm/modules/install_stats.sh b/lgsm/modules/install_stats.sh
index c3e92323d..40a13434d 100644
--- a/lgsm/modules/install_stats.sh
+++ b/lgsm/modules/install_stats.sh
@@ -10,7 +10,6 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo -e ""
echo -e "${bold}${lightyellow}LinuxGSM Stats${default}"
fn_messages_separator
-fn_sleep_time
echo -e "Assist LinuxGSM development by sending anonymous stats to developers."
echo -e "Collected data is publicly available: ${italic}https://linuxgsm.com/data/usage${default}"
echo -e "More info: ${italic}https://docs.linuxgsm.com/configuration/linuxgsm-stats${default}"
diff --git a/lgsm/modules/install_ts3db.sh b/lgsm/modules/install_ts3db.sh
index e5776c30f..464bd686a 100644
--- a/lgsm/modules/install_ts3db.sh
+++ b/lgsm/modules/install_ts3db.sh
@@ -45,7 +45,7 @@ fn_install_ts3db_mariadb() {
sed -i "s/dbpluginparameter=/dbpluginparameter=ts3db_mariadb.ini/g" "${servercfgfullpath}"
sed -i "s/dbsqlcreatepath=create_sqlite\//dbsqlcreatepath=create_mariadb\//g" "${servercfgfullpath}"
echo -e "updating ts3db_mariadb.ini."
- fn_sleep_time
+ fn_sleep_time_1
}
echo -e ""
@@ -69,5 +69,5 @@ fn_print_information_nl "Key also saved in:"
echo -e "${serverfiles}/privilege_key.txt"
cd "${executabledir}" || exit
./ts3server_startscript.sh start inifile=ts3-server.ini 2>&1 | tee "${serverfiles}/privilege_key.txt"
-sleep 5
+fn_sleep_time_5
./ts3server_startscript.sh stop
diff --git a/lgsm/modules/mods_list.sh b/lgsm/modules/mods_list.sh
index e093124e9..ca320e468 100644
--- a/lgsm/modules/mods_list.sh
+++ b/lgsm/modules/mods_list.sh
@@ -68,38 +68,44 @@ sourcemoddownloadurl="https://www.sourcemod.net/latest.php?os=linux&version=${so
sourcemodurl="${sourcemoddownloadurl}"
# Steamworks
steamworksscrapeurl="https://users.alliedmods.net/~kyles/builds/SteamWorks"
-steamworkslatestfile=$(curl --connect-timeout 10 -sL ${steamworksscrapeurl} | grep -m 1 linux | cut -d '"' -f 4)
+steamworkslatestfile=$(curl --connect-timeout 3 -sL ${steamworksscrapeurl} | grep -m 1 linux | cut -d '"' -f 4)
steamworksdownloadurl="${steamworksscrapeurl}/${steamworkslatestfile}"
steamworksurl="${steamworksdownloadurl}"
+# Stripper:Source
+stripperversion="1.2.2-git141"
+stripperlatestfile="stripper-${stripperversion}-linux.tar.gz"
+stripperdownloadurl="http://www.bailopan.net/stripper/snapshots/1.2/${stripperlatestfile}"
+stripperurl="${stripperdownloadurl}"
+
# CS:GO Mods
-get5lastbuild=$(curl --connect-timeout 10 -sL https://api.github.com/repos/splewis/get5/releases/latest | jq '.assets[] |select(.browser_download_url | endswith(".tar.gz"))')
+get5lastbuild=$(curl --connect-timeout 3 -sL https://api.github.com/repos/splewis/get5/releases/latest | jq '.assets[] |select(.browser_download_url | endswith(".tar.gz"))')
get5latestfile=$(echo -e "${get5lastbuild}" | jq -r '.name')
get5latestfilelink=$(echo -e "${get5lastbuild}" | jq -r '.browser_download_url')
-csgopracticelatest=$(curl --connect-timeout 10 -sL https://api.github.com/repos/splewis/csgo-practice-mode/releases/latest | jq '.assets[]')
+csgopracticelatest=$(curl --connect-timeout 3 -sL https://api.github.com/repos/splewis/csgo-practice-mode/releases/latest | jq '.assets[]')
csgopracticelatestfile=$(echo -e "${csgopracticelatest}" | jq -r '.name')
csgopracticelatestlink=$(echo -e "${csgopracticelatest}" | jq -r '.browser_download_url')
-csgopuglatest=$(curl --connect-timeout 10 -sL https://api.github.com/repos/splewis/csgo-pug-setup/releases/latest | jq '.assets[]')
+csgopuglatest=$(curl --connect-timeout 3 -sL https://api.github.com/repos/splewis/csgo-pug-setup/releases/latest | jq '.assets[]')
csgopuglatestfile=$(echo -e "${csgopuglatest}" | jq -r '.name')
csgopuglatestlink=$(echo -e "${csgopuglatest}" | jq -r '.browser_download_url')
-gokzlatestversion=$(curl --connect-timeout 10 -s https://api.github.com/repos/KZGlobalTeam/gokz/releases/latest | grep "tag_name" | cut -d : -f 2,3 | sed -E 's/.*"([^"]+)".*/\1/')
+gokzlatestversion=$(curl --connect-timeout 3 -s https://api.github.com/repos/KZGlobalTeam/gokz/releases/latest | grep "tag_name" | cut -d : -f 2,3 | sed -E 's/.*"([^"]+)".*/\1/')
gokzlatestfile="GOKZ-v${gokzlatestversion}.zip"
gokzlatestlink="https://github.com/KZGlobalTeam/gokz/releases/download/${gokzlatestversion}/${gokzlatestfile}"
-movementapilatestversion=$(curl --connect-timeout 10 -s https://api.github.com/repos/danzayau/MovementAPI/releases/latest | grep "tag_name" | cut -d : -f 2,3 | sed -E 's/.*"([^"]+)".*/\1/')
+movementapilatestversion=$(curl --connect-timeout 3 -s https://api.github.com/repos/danzayau/MovementAPI/releases/latest | grep "tag_name" | cut -d : -f 2,3 | sed -E 's/.*"([^"]+)".*/\1/')
movementapilatestfile="MovementAPI-v${movementapilatestversion}.zip"
movementapilatestlink="https://github.com/danzayau/MovementAPI/releases/download/${movementapilatestversion}/${movementapilatestfile}"
# Rust
carbonrustapilatestfile="Carbon.Linux.Release.tar.gz"
-carbonrustlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/CarbonCommunity/Carbon.Core/releases/tags/production_build | jq -r '.assets[]|select(.name == "Carbon.Linux.Release.tar.gz") | .browser_download_url')
+carbonrustlatestlink=$(curl --connect-timeout 3 -sL https://api.github.com/repos/CarbonCommunity/Carbon.Core/releases/tags/production_build | jq -r '.assets[]|select(.name == "Carbon.Linux.Release.tar.gz") | .browser_download_url')
# Oxide
-oxiderustlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.Rust/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url')
-oxidehurtworldlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.Hurtworld/releases/latest | jq -r '.assets[].browser_download_url')
-oxidesdtdlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.SevenDaysToDie/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url')
+oxiderustlatestlink=$(curl --connect-timeout 3 -sL https://api.github.com/repos/OxideMod/Oxide.Rust/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url')
+oxidehurtworldlatestlink=$(curl --connect-timeout 3 -sL https://api.github.com/repos/OxideMod/Oxide.Hurtworld/releases/latest | jq -r '.assets[].browser_download_url')
+oxidesdtdlatestlink=$(curl --connect-timeout 3 -sL https://api.github.com/repos/OxideMod/Oxide.SevenDaysToDie/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url')
# Valheim Plus
-valeimpluslatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/valheimPlus/ValheimPlus/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("UnixServer.tar.gz")) | .browser_download_url')
+valheimpluslatestlink=$(curl --connect-timeout 3 -sL https://api.github.com/repos/Grantapher/ValheimPlus/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("UnixServer.tar.gz")) | .browser_download_url')
# Valheim BepInEx
-bepinexvhlatestlink=$(curl --connect-timeout 10 -sL "https://valheim.thunderstore.io/api/experimental/package/denikson/BepInExPack_Valheim/" -H "accept: application/json" | jq -r '.latest.download_url')
+bepinexvhlatestlink=$(curl --connect-timeout 3 -sL "https://thunderstore.io/api/experimental/package/denikson/BepInExPack_Valheim/" -H "accept: application/json" | jq -r '.latest.download_url')
# Define mods information (required)
@@ -149,7 +155,7 @@ mod_info_ts_amxx=(MOD "amxmodxts" "AMX Mod X: The Specialists" "${amxxtsurl}" "$
mod_info_metamodsource=(MOD "metamodsource" "Metamod: Source" "${metamodsourceurl}" "${metamodsourcelatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/metaplugins.ini;" "source;" "GAMES" "NOTGAMES" "https://www.sourcemm.net" "Plugins Framework")
mod_info_sourcemod=(MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "source;" "GAMES" "NOTGAMES" "http://www.sourcemod.net" "Admin Features (requires Metamod: Source)")
mod_info_steamworks=(MOD "steamworks" "SteamWorks" "${steamworksurl}" "${steamworkslatestfile}" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/KyleSanderson/SteamWorks" "Exposing SteamWorks functions to SourcePawn")
-mod_info_stripper=(MOD "stripper" "Stripper Source" "http://www.bailopan.net/stripper/snapshots/1.2/stripper-1.2.2-git129-linux.tar.gz" "stripper-1.2.2-git129-linux.tar.gz" "0" "LowercaseOff" "${systemdir}" "addons/stripper/maps;" "ENGINES" "Counter-Strike: Global Offensive;Counter-Strike: Source;Day of Defeat: Source;Half Life: Deathmatch;Half Life 2: Deathmatch;Insurgency;Left 4 Dead;Left 4 Dead 2;Nuclear Dawn;Team Fortress 2;" "NOTGAMES" "http://www.bailopan.net/stripper/" "Add or remove objects from map (requires MetaMod)")
+mod_info_stripper=(MOD "stripper" "Stripper Source" "${stripperurl}" "${stripperlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/stripper/maps;" "ENGINES" "Counter-Strike: Global Offensive;Counter-Strike: Source;Day of Defeat: Source;Half Life: Deathmatch;Half Life 2: Deathmatch;Insurgency;Left 4 Dead;Left 4 Dead 2;Nuclear Dawn;Team Fortress 2;" "NOTGAMES" "http://www.bailopan.net/stripper/" "Add or remove objects from map (requires MetaMod)")
# CS:GO Mods
mod_info_gokz=(MOD "gokz" "GOKZ" "${gokzlatestlink}" "${gokzlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/KZGlobalTeam/gokz" "GOKZ ${gokzlatestversion} - Implements the KZ game mode (requires SourceMod and MetaMod)")
@@ -200,7 +206,7 @@ mod_info_hwoxide=(MOD "hwoxide" "Oxide for Hurtworld" "${oxidehurtworldlatestlin
mod_info_sdtdoxide=(MOD "sdtdoxide" "Oxide for 7 Days To Die" "${oxidesdtdlatestlink}" "Oxide.SevenDaysToDie.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "https://umod.org/games/7-days-to-die" "Allows for the use of plugins")
# ValheimPlus
-mod_info_valheimplus=(MOD "valheimplus" "Valheim PLUS" "${valeimpluslatestlink}" "ValheimPlus.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://github.com/valheimPlus/ValheimPlus" "Mod to improve Valheim gameplay")
+mod_info_valheimplus=(MOD "valheimplus" "Valheim PLUS" "${valheimpluslatestlink}" "ValheimPlus.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://github.com/Grantapher/ValheimPlus.git" "Mod to improve Valheim gameplay")
# BepInEx Valheim
mod_info_bepinexvh=(MOD "bepinexvh" "BepInEx Valheim" "${bepinexvhlatestlink}" "denikson-BepInExPack_Valheim.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://valheim.thunderstore.io/package/denikson/BepInExPack_Valheim/" "Unity / XNA game patcher and plugin framework")
diff --git a/lgsm/modules/query_gamedig.sh b/lgsm/modules/query_gamedig.sh
index 138e014a0..efac18d45 100644
--- a/lgsm/modules/query_gamedig.sh
+++ b/lgsm/modules/query_gamedig.sh
@@ -4,13 +4,20 @@
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Querys a gameserver using node-gamedig.
-# https://github.com/sonicsnes/node-gamedig
+# https://github.com/gamedig/node-gamedig
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Default query status to failure. Will be changed to 0 if query is successful.
querystatus="2"
# Check if gamedig and jq are installed.
-if [ "$(command -v gamedig 2> /dev/null)" ] && [ "$(command -v jq 2> /dev/null)" ]; then
+
+if [ -f "${lgsmdir}/node_modules/gamedig/bin/gamedig.js" ]; then
+ gamedigbinary="${lgsmdir}/node_modules/gamedig/bin/gamedig.js"
+else
+ gamedigbinary="gamedig"
+fi
+
+if [ "$(command -v "${gamedigbinary}" 2> /dev/null)" ] && [ "$(command -v jq 2> /dev/null)" ]; then
# will bypass query if server offline.
check_status.sh
@@ -20,8 +27,8 @@ if [ "$(command -v gamedig 2> /dev/null)" ] && [ "$(command -v jq 2> /dev/null)"
queryport="${port}"
fi
# checks if query is working null = pass.
- gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" \"${queryip}:${queryport}\"|jq")
- gamedigraw=$(gamedig --type "${querytype}" "${queryip}:${queryport}")
+ gamedigcmd=$(echo -e "${gamedigbinary} --type \"${querytype}\" \"${queryip}:${queryport}\"|jq")
+ gamedigraw=$(${gamedigbinary} --type "${querytype}" "${queryip}:${queryport}")
querystatus=$(echo "${gamedigraw}" | jq '.error|length')
if [ "${querytype}" == "teamspeak3" ]; then
diff --git a/lgsm/modules/query_gsquery.py b/lgsm/modules/query_gsquery.py
index 9fbb6a254..788789f0a 100644
--- a/lgsm/modules/query_gsquery.py
+++ b/lgsm/modules/query_gsquery.py
@@ -10,23 +10,26 @@ import argparse
import socket
import sys
-engine_types=('protocol-valve','protocol-quake3','protocol-quake3','protocol-gamespy1','protocol-unreal2','ut3','minecraft','minecraftbe','jc2mp','mumbleping','soldat','teeworlds')
+engine_types = ('protocol-valve', 'protocol-quake2', 'protocol-quake3', 'protocol-gamespy1',
+ 'protocol-unreal2', 'ut3', 'minecraft', 'minecraftbe', 'jc2m', 'mumbleping', 'soldat', 'teeworlds')
+
class gsquery:
server_response_timeout = 2
default_buffer_length = 1024
- sourcequery=('protocol-valve','avalanche3.0','barotrauma','madness','quakelive','realvirtuality','refractor','source','goldsrc','spark','starbound','unity3d','unreal4','wurm')
- idtech2query=('protocol-quake3','idtech2','quake','iw2.0')
- idtech3query=('protocol-quake3','iw3.0','ioquake3','qfusion')
- minecraftquery=('minecraft','lwjgl2')
- minecraftbequery=('minecraftbe',)
- jc2mpquery=('jc2mp',)
- mumblequery=('mumbleping',)
- soldatquery=('soldat',)
- twquery=('teeworlds',)
- unrealquery=('protocol-gamespy1','unreal')
- unreal2query=('protocol-unreal2','unreal2')
- unreal3query=('ut3','unreal3')
+ sourcequery = ('protocol-valve', 'avalanche3.0', 'barotrauma', 'madness', 'quakelive', 'realvirtuality',
+ 'refractor', 'source', 'goldsrc', 'spark', 'starbound', 'unity3d', 'unreal4', 'wurm')
+ idtech2query = ('protocol-quake2', 'idtech2', 'quake', 'iw2.0')
+ idtech3query = ('protocol-quake3', 'iw3.0', 'ioquake3', 'qfusion')
+ minecraftquery = ('minecraft', 'lwjgl2')
+ minecraftbequery = ('minecraftbe',)
+ jc2mquery = ('jc2m',)
+ mumblequery = ('mumbleping',)
+ soldatquery = ('soldat',)
+ twquery = ('teeworlds',)
+ unrealquery = ('protocol-gamespy1', 'unreal')
+ unreal2query = ('protocol-unreal2', 'unreal2')
+ unreal3query = ('ut3', 'unreal3')
def __init__(self, arguments):
self.argument = arguments
@@ -37,7 +40,7 @@ class gsquery:
self.query_prompt_string = b'\xff\xff\xff\xffstatus\x00'
elif self.argument.engine in self.idtech3query:
self.query_prompt_string = b'\xff\xff\xff\xffgetstatus'
- elif self.argument.engine in self.jc2mpquery:
+ elif self.argument.engine in self.jc2mquery:
self.query_prompt_string = b'\xFE\xFD\x09\x10\x20\x30\x40'
elif self.argument.engine in self.minecraftquery:
self.query_prompt_string = b'\xFE\xFD\x09\x3d\x54\x1f\x93'
@@ -48,7 +51,8 @@ class gsquery:
elif self.argument.engine in self.soldatquery:
self.query_prompt_string = b'\x69\x00'
elif self.argument.engine in self.twquery:
- self.query_prompt_string = b'\x04\x00\x00\xff\xff\xff\xff\x05' + bytearray(511)
+ self.query_prompt_string = b'\x04\x00\x00\xff\xff\xff\xff\x05' + \
+ bytearray(511)
elif self.argument.engine in self.unrealquery:
self.query_prompt_string = b'\x5C\x69\x6E\x66\x6F\x5C'
elif self.argument.engine in self.unreal2query:
@@ -74,7 +78,8 @@ class gsquery:
connection = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
connection.settimeout(self.server_response_timeout)
try:
- self.connected = connection.connect((self.argument.address, int(self.argument.port)))
+ self.connected = connection.connect(
+ (self.argument.address, int(self.argument.port)))
except socket.timeout:
self.fatal_error('Request timed out', 1)
except Exception:
@@ -95,6 +100,7 @@ class gsquery:
else:
self.exit_success(str(self.response))
+
def parse_args():
parser = argparse.ArgumentParser(
description='Allows querying of various game servers.',
@@ -142,10 +148,12 @@ def parse_args():
)
return parser.parse_args()
+
def main():
arguments = parse_args()
server = gsquery(arguments)
server.responding()
+
if __name__ == '__main__':
main()
diff --git a/lgsm/modules/update_fctr.sh b/lgsm/modules/update_fctr.sh
index 2eef0d4cd..8fb78ede3 100644
--- a/lgsm/modules/update_fctr.sh
+++ b/lgsm/modules/update_fctr.sh
@@ -104,7 +104,7 @@ fn_update_compare() {
command_start.sh
fn_firstcommand_reset
exitbypass=1
- sleep 5
+ fn_sleep_time_5
command_stop.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/update_jk2.sh b/lgsm/modules/update_jk2.sh
index f685fd4cb..e2715c01c 100644
--- a/lgsm/modules/update_jk2.sh
+++ b/lgsm/modules/update_jk2.sh
@@ -100,7 +100,7 @@ fn_update_compare() {
command_start.sh
fn_firstcommand_reset
exitbypass=1
- sleep 5
+ fn_sleep_time_5
command_stop.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/update_mc.sh b/lgsm/modules/update_mc.sh
index c4aa1b425..40038ddeb 100644
--- a/lgsm/modules/update_mc.sh
+++ b/lgsm/modules/update_mc.sh
@@ -10,7 +10,7 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_update_dl() {
# Download and extract files to serverfiles.
fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "chmodx" "norun" "noforce" "nohash"
- cp -f "${tmpdir}/${remotebuildfilename}" "${serverfiles}/${executable#./}"
+ cp -f "${tmpdir}/${remotebuildfilename}" "${serverfiles}/minecraft_server.jar"
fn_clear_tmp
}
@@ -116,7 +116,7 @@ fn_update_compare() {
command_start.sh
fn_firstcommand_reset
exitbypass=1
- sleep 5
+ fn_sleep_time_5
command_stop.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/update_mcb.sh b/lgsm/modules/update_mcb.sh
index eb8adfd12..7bd273d66 100644
--- a/lgsm/modules/update_mcb.sh
+++ b/lgsm/modules/update_mcb.sh
@@ -122,7 +122,7 @@ fn_update_compare() {
command_start.sh
fn_firstcommand_reset
exitbypass=1
- sleep 5
+ fn_sleep_time_5
command_stop.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/update_mta.sh b/lgsm/modules/update_mta.sh
index cd1195563..c6f7dfcb0 100644
--- a/lgsm/modules/update_mta.sh
+++ b/lgsm/modules/update_mta.sh
@@ -108,7 +108,7 @@ fn_update_compare() {
command_start.sh
fn_firstcommand_reset
exitbypass=1
- sleep 5
+ fn_sleep_time_5
command_stop.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/update_pmc.sh b/lgsm/modules/update_pmc.sh
index 9bfa82101..5d44bee21 100644
--- a/lgsm/modules/update_pmc.sh
+++ b/lgsm/modules/update_pmc.sh
@@ -126,7 +126,7 @@ fn_update_compare() {
command_start.sh
fn_firstcommand_reset
exitbypass=1
- sleep 5
+ fn_sleep_time_5
command_stop.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/update_ts3.sh b/lgsm/modules/update_ts3.sh
index c00ae75cb..1fa77f428 100644
--- a/lgsm/modules/update_ts3.sh
+++ b/lgsm/modules/update_ts3.sh
@@ -108,7 +108,7 @@ fn_update_compare() {
command_start.sh
fn_firstcommand_reset
exitbypass=1
- sleep 5
+ fn_sleep_time_5
command_stop.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/update_ut99.sh b/lgsm/modules/update_ut99.sh
index bdd3631f3..6d0be1941 100644
--- a/lgsm/modules/update_ut99.sh
+++ b/lgsm/modules/update_ut99.sh
@@ -102,7 +102,7 @@ fn_update_compare() {
command_start.sh
fn_firstcommand_reset
exitbypass=1
- sleep 5
+ fn_sleep_time_5
command_stop.sh
fn_firstcommand_reset
fi
diff --git a/lgsm/modules/update_vints.sh b/lgsm/modules/update_vints.sh
index b38372058..403917e0c 100644
--- a/lgsm/modules/update_vints.sh
+++ b/lgsm/modules/update_vints.sh
@@ -109,7 +109,7 @@ fn_update_compare() {
command_start.sh
fn_firstcommand_reset
exitbypass=1
- sleep 5
+ fn_sleep_time_5
command_stop.sh
fn_firstcommand_reset
fi
diff --git a/linuxgsm.sh b/linuxgsm.sh
index 520373d48..f3315ce5c 100755
--- a/linuxgsm.sh
+++ b/linuxgsm.sh
@@ -15,12 +15,16 @@
# Debugging
if [ -f ".dev-debug" ]; then
- exec 5> dev-debug.log
+ if [ -f /.dockerenv ]; then
+ exec 5> /data/log/dev-debug.log
+ else
+ exec 5> dev-debug.log
+ fi
BASH_XTRACEFD="5"
set -x
fi
-version="v23.5.3"
+version="v24.2.3"
shortname="core"
gameservername="core"
commandname="CORE"
@@ -107,7 +111,7 @@ fn_bootstrap_fetch_file() {
# Larger files show a progress bar.
echo -en "fetching ${fileurl_name} ${local_filename}...\c"
- curlcmd=$(curl --connect-timeout 10 -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1)
+ curlcmd=$(curl --connect-timeout 3 -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1)
local exitcode=$?
@@ -323,17 +327,18 @@ fn_install_file() {
# Prevent LinuxGSM from running as root. Except if doing a dependency install.
if [ "$(whoami)" == "root" ]; then
- if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then
- if [ "${shortname}" == "core" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
+ if [ -f "${modulesdir}/core_modules.sh" ] || [ -f "${modulesdir}/check_root.sh" ] || [ -f "${modulesdir}/core_messages.sh" ]; then
+ if [ "${userinput}" != "install" ] && [ "${userinput}" != "auto-install" ] && [ "${userinput}" != "i" ] && [ "${userinput}" != "ai" ]; then
+ core_modules.sh
+ core_messages.sh
+ fn_ansi_loader
+ check_root.sh
fi
- elif [ ! -f "${modulesdir}/core_modules.sh" ] || [ ! -f "${modulesdir}/check_root.sh" ] || [ ! -f "${modulesdir}/core_messages.sh" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
else
- core_modules.sh
- check_root.sh
+ if [ "${userinput}" != "install" ] && [ "${userinput}" != "auto-install" ] && [ "${userinput}" != "i" ] && [ "${userinput}" != "ai" ]; then
+ echo -e "[ FAIL ] Do NOT run as root!"
+ exit 1
+ fi
fi
fi
@@ -489,23 +494,6 @@ 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")"
- 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
}
# Load the linuxgsm.sh in to tmpdir. If missing download it.
diff --git a/package-lock.json b/package-lock.json
index 669e4f59d..076a14533 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,17 +6,503 @@
"": {
"name": "linuxgsm",
"license": "MIT",
+ "dependencies": {
+ "gamedig": "^5.0.0-beta.2"
+ },
"devDependencies": {
"prettier": "^3.0.3",
"prettier-plugin-sh": "^0.13.1"
}
},
+ "node_modules/@sindresorhus/is": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz",
+ "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
+ "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
+ "dependencies": {
+ "defer-to-connect": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA=="
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+ },
+ "node_modules/barse": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/barse/-/barse-0.4.3.tgz",
+ "integrity": "sha512-UEpvriJqAn8zuVinYICuKoPttZy3XxXEoqX/V2uYAL4zzJRuNzCK3+20nAu3YUIa2U7G53kf90wfBIp9/A+Odw==",
+ "dependencies": {
+ "readable-stream": "~1.0.2"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
+ "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "10.2.14",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz",
+ "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==",
+ "dependencies": {
+ "@types/http-cache-semantics": "^4.0.2",
+ "get-stream": "^6.0.1",
+ "http-cache-semantics": "^4.1.1",
+ "keyv": "^4.5.3",
+ "mimic-response": "^4.0.0",
+ "normalize-url": "^8.0.0",
+ "responselike": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/cheerio": {
+ "version": "1.0.0-rc.12",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
+ "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+ "dependencies": {
+ "cheerio-select": "^2.1.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "htmlparser2": "^8.0.1",
+ "parse5": "^7.0.0",
+ "parse5-htmlparser2-tree-adapter": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
+ },
+ "node_modules/cheerio-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+ "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-select": "^5.1.0",
+ "css-what": "^6.1.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/event-to-promise": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.7.0.tgz",
+ "integrity": "sha512-VOBBfyaADfe378ZzG0tgkzmsvzUyeU5arehrFzNRt5yaASUDshgctTwSrPI17ocAwR3+YftsxRClHF+GBKFByQ==",
+ "deprecated": "Use promise-toolbox/fromEvent instead"
+ },
+ "node_modules/form-data-encoder": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
+ "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
+ "engines": {
+ "node": ">= 14.17"
+ }
+ },
+ "node_modules/gamedig": {
+ "version": "5.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-5.0.0-beta.2.tgz",
+ "integrity": "sha512-YsHoGdb6rXyzdErakd9eSJvUAZCa8Hy+nQpiWZMps158wOovsH35Yrr/Y9wCvn1FDm6NJnHhQYkvtk3zhlmKWQ==",
+ "dependencies": {
+ "cheerio": "^1.0.0-rc.12",
+ "gbxremote": "^0.2.1",
+ "got": "^13.0.0",
+ "iconv-lite": "^0.6.3",
+ "long": "^5.2.3",
+ "minimist": "^1.2.8",
+ "punycode": "^2.3.0",
+ "seek-bzip": "^2.0.0",
+ "varint": "^6.0.0"
+ },
+ "bin": {
+ "gamedig": "bin/gamedig.js"
+ },
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/gbxremote": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/gbxremote/-/gbxremote-0.2.1.tgz",
+ "integrity": "sha512-SMehu6Y6ndq2Qgp9VxAb8Np3f+UUD+RWoW2SAMaxzGS96rWXyr4T1GGkecO0HHtxeH1m7pEh4FJWB8a/6aM2XQ==",
+ "dependencies": {
+ "any-promise": "^1.1.0",
+ "barse": "~0.4.2",
+ "event-to-promise": "^0.7.0",
+ "string-to-stream": "^1.0.1",
+ "xmlrpc": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/got": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
+ "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
+ "dependencies": {
+ "@sindresorhus/is": "^5.2.0",
+ "@szmarczak/http-timer": "^5.0.1",
+ "cacheable-lookup": "^7.0.0",
+ "cacheable-request": "^10.2.8",
+ "decompress-response": "^6.0.0",
+ "form-data-encoder": "^2.1.2",
+ "get-stream": "^6.0.1",
+ "http2-wrapper": "^2.1.10",
+ "lowercase-keys": "^3.0.0",
+ "p-cancelable": "^3.0.0",
+ "responselike": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "entities": "^4.4.0"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
+ },
+ "node_modules/http2-wrapper": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
+ "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/long": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
+ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
+ },
+ "node_modules/lowercase-keys": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
+ "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
+ "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/mvdan-sh": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/mvdan-sh/-/mvdan-sh-0.10.1.tgz",
"integrity": "sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==",
"dev": true
},
+ "node_modules/normalize-url": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
+ "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
+ "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "dependencies": {
+ "entities": "^4.4.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
+ "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+ "dependencies": {
+ "domhandler": "^5.0.2",
+ "parse5": "^7.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
"node_modules/prettier": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
@@ -51,6 +537,87 @@
"prettier": "^3.0.0"
}
},
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="
+ },
+ "node_modules/responselike": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
+ "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
+ "dependencies": {
+ "lowercase-keys": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "node_modules/seek-bzip": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-2.0.0.tgz",
+ "integrity": "sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==",
+ "dependencies": {
+ "commander": "^6.0.0"
+ },
+ "bin": {
+ "seek-bunzip": "bin/seek-bunzip",
+ "seek-table": "bin/seek-bzip-table"
+ }
+ },
"node_modules/sh-syntax": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.4.1.tgz",
@@ -66,11 +633,83 @@
"url": "https://opencollective.com/unts"
}
},
+ "node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ },
+ "node_modules/string-to-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz",
+ "integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.1.0"
+ }
+ },
+ "node_modules/string-to-stream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/string-to-stream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/string-to-stream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
"dev": true
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/varint": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
+ "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="
+ },
+ "node_modules/xmlbuilder": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
+ "integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlrpc": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz",
+ "integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==",
+ "dependencies": {
+ "sax": "1.2.x",
+ "xmlbuilder": "8.2.x"
+ },
+ "engines": {
+ "node": ">=0.8",
+ "npm": ">=1.0.0"
+ }
}
}
}
diff --git a/package.json b/package.json
index 89bb70244..e40e99e55 100644
--- a/package.json
+++ b/package.json
@@ -20,5 +20,8 @@
"bugs": {
"url": "https://github.com/GameServerManagers/LinuxGSM/issues"
},
- "homepage": "https://github.com/GameServerManagers/LinuxGSM#readme"
+ "homepage": "https://github.com/GameServerManagers/LinuxGSM#readme",
+ "dependencies": {
+ "gamedig": "^5.1.1"
+ }
}
diff --git a/tests/tests_defaultcfg/defaultcfg_0.txt b/tests/tests_defaultcfg/defaultcfg_0.txt
deleted file mode 100644
index bcaa9f1dd..000000000
--- a/tests/tests_defaultcfg/defaultcfg_0.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-stats
-displayip
-postalert
-discordalert
-discordwebhook
-emailalert
-email
-emailfrom
-iftttalert
-ifttttoken
-iftttevent
-mailgunalert
-mailguntoken
-mailgundomain
-mailgunemailfrom
-mailgunemail
-pushbulletalert
-pushbullettoken
-channeltag
-rocketchatalert
-rocketchatwebhook
-rocketchattoken
-slackalert
-slackwebhook
-pushoveralert
-pushovertoken
-telegramalert
-telegramtoken
-telegramchatid
-curlcustomstring
-maxbackups
-maxbackupdays
-stoponbackup
-consolelogging
-logdays
-querydelay
-ansi
-sleeptime
-stopmode
-querymode
-querytype
-consoleverbose
-consoleinteract
-gamename
-engine
-glibc
-systemdir
-executabledir
-executable
-servercfgdir
-servercfg
-servercfgdefault
-servercfgfullpath
-backupdir
-logdir
-lgsmlogdir
-consolelogdir
-lgsmlog
-consolelog
-alertlog
-postdetailslog
-lgsmlogdate
-consolelogdate
diff --git a/tests/tests_defaultcfg/defaultcfg_1.txt b/tests/tests_defaultcfg/defaultcfg_1.txt
deleted file mode 100644
index 63b888f9d..000000000
--- a/tests/tests_defaultcfg/defaultcfg_1.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-##################################
-######## 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
-#### LinuxGSM Settings ####
-## Notification Alerts
-# (on|off)
-# Display IP | https://docs.linuxgsm.com/alerts#display-ip
-# More info | https://docs.linuxgsm.com/alerts#more-info
-# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
-# Email Alerts | https://docs.linuxgsm.com/alerts/email
-# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
-# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet
-# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover
-# Slack Alerts | https://docs.linuxgsm.com/alerts/slack
-# 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".
-## Backup | https://docs.linuxgsm.com/commands/backup
-## Logging | https://docs.linuxgsm.com/features/logging
-## Monitor | https://docs.linuxgsm.com/commands/monitor
-# Query delay time
-## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
-#### Advanced Settings ####
-## Message Display Time | https://docs.linuxgsm.com/features/message-display-time
-## 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
-## Console type
-consoleverbose=""
-consoleinteract=""
-## Game Server Details
-# Do not edit
-#### Directories ####
-# Edit with care
-## Game Server Directories
-## Backup Directory
-## Logging Directories
-## Logs Naming
diff --git a/tests/tests_defaultcfg/tests_defaultcfg.sh b/tests/tests_defaultcfg/tests_defaultcfg.sh
deleted file mode 100644
index 5f97f9a33..000000000
--- a/tests/tests_defaultcfg/tests_defaultcfg.sh
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-echo -e ""
-echo -e "0.1 - Full comparison Output"
-echo -e "=================================================================="
-echo -e "Description:"
-echo -e "test checks that vars present in ALL _default.cfg files are correct."
-echo -e ""
-echo -e "In master config < | > In game config"
-find "lgsm/config-default/config-lgsm/" ! -name '*template.cfg' -name "*.cfg" -type f -print0 \
- | while IFS= read -r -d $'\0' line; do
- grep "=" "${line}" | cut -f1 -d"=" > defaultcfgtemp.txt
- diffoutput=$(diff tests/tests_defaultcfg/defaultcfg_0.txt defaultcfgtemp.txt)
- if [ "${diffoutput}" ]; then
- echo "File with errors:"
- echo "${line}"
- echo -e "================================="
- echo -e "In master config < | > In game config"
- echo "${diffoutput}"
- echo ""
- fi
- rm -f defaultcfgtemp.txt
- done
-
-echo -e ""
-echo -e "1.0 - Master Comparison"
-echo -e "=================================================================="
-echo -e "Description:"
-echo -e "test checks that vars present in ALL _default.cfg files are correct."
-echo -e ""
-echo -e "In master config < | > In game config"
-find lgsm/config-default/config-lgsm/ ! -name '*template.cfg' -name "*.cfg" -type f -print0 \
- | while IFS= read -r -d $'\0' line; do
- grep "=" "${line}" | cut -f1 -d"=" > defaultcfgtemp.txt
- diffoutput=$(diff tests/tests_defaultcfg/defaultcfg_0.txt defaultcfgtemp.txt | grep '^<')
- if [ "${diffoutput}" ]; then
- echo "File with errors:"
- echo "${line}"
- echo -e "================================="
- echo -e "In master config < | > In game config"
- echo "${diffoutput}"
- echo ""
- fi
- rm -f defaultcfgtemp.txt
- done
-
-echo -e ""
-echo -e "2.0 - Check Comment"
-echo -e "=================================================================="
-echo -e "Description:"
-echo -e "test checks that comments in ALL _default.cfg files are correct."
-echo -e ""
-echo -e "In master config < | > In game config"
-find lgsm/config-default/config-lgsm/ ! -name '*template.cfg' -name "*.cfg" -type f -print0 \
- | while IFS= read -r -d $'\0' line; do
- grep "#" "${line}" > defaultcfgtemp.txt
- diffoutput=$(diff tests/tests_defaultcfg/defaultcfg_1.txt defaultcfgtemp.txt | grep '^<')
- if [ "${diffoutput}" ]; then
- echo "File with errors:"
- echo "${line}"
- echo -e "================================="
- echo "${diffoutput}"
- echo ""
- fi
- rm -f defaultcfgtemp.txt
- done
diff --git a/tests/tests_fctrserver.sh b/tests/tests_fctrserver.sh
deleted file mode 100644
index 0b4530d87..000000000
--- a/tests/tests_fctrserver.sh
+++ /dev/null
@@ -1,1186 +0,0 @@
-#!/bin/bash
-# Project: Game Server Managers - LinuxGSM
-# Author: Daniel Gibbs
-# License: MIT License, Copyright (c) 2020 Daniel Gibbs
-# Purpose: Travis CI Tests: Factorio | Linux Game Server Management Script
-# Contributors: https://linuxgsm.com/contrib
-# Documentation: https://docs.linuxgsm.com
-# Website: https://linuxgsm.com
-
-# DO NOT EDIT THIS FILE
-# LinuxGSM configuration is no longer edited here
-# To update your LinuxGSM config go to:
-# lgsm/config-lgsm
-# https://docs.linuxgsm.com/configuration/linuxgsm-config
-
-# Debugging
-if [ -f ".dev-debug" ]; then
- exec 5> dev-debug.log
- BASH_XTRACEFD="5"
- set -x
-fi
-
-version="v23.5.3"
-shortname="fctr"
-gameservername="fctrserver"
-commandname="CORE"
-rootdir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
-selfname=$(basename "$(readlink -f "${BASH_SOURCE[0]}")")
-sessionname=$(echo "${selfname}" | cut -f1 -d".")
-lgsmdir="${rootdir}/lgsm"
-logdir="${rootdir}/log"
-lgsmlogdir="${logdir}/lgsm"
-steamcmddir="${HOME}/.steam/steamcmd"
-serverfiles="${rootdir}/serverfiles"
-modulesdir="${lgsmdir}/modules"
-tmpdir="${lgsmdir}/tmp"
-datadir="${lgsmdir}/data"
-lockdir="${lgsmdir}/lock"
-serverlist="${datadir}/serverlist.csv"
-serverlistmenu="${datadir}/serverlistmenu.csv"
-configdir="${lgsmdir}/config-lgsm"
-configdirserver="${configdir}/${gameservername}"
-configdirdefault="${lgsmdir}/config-default"
-userinput="${1}"
-
-# Allows for testing not on Travis CI.
-# if using travis for tests
-if [ -z "${TRAVIS}" ]; then
- TRAVIS_BRANCH="develop"
- TRAVIS_BUILD_DIR="${rootdir}"
-fi
-travistest="1"
-## GitHub Branch Select
-# Allows for the use of different module files
-# from a different repo and/or branch.
-githubuser="GameServerManagers"
-githubrepo="LinuxGSM"
-githubbranch="${TRAVIS_BRANCH}"
-
-# Core module that is required first.
-core_modules.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_bootstrap_fetch_file_github "lgsm/modules" "core_modules.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
-}
-
-# Bootstrap
-# Fetches the core modules required before passed off to core_dl.sh.
-fn_bootstrap_fetch_file() {
- 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}"
- # Download file if missing or download forced.
- if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then
- # If backup fileurl exists include it.
- if [ -n "${remote_fileurl_backup}" ]; then
- # counter set to 0 to allow second try
- counter=0
- remote_fileurls_array=(remote_fileurl remote_fileurl_backup)
- else
- # counter set to 1 to not allow second try
- counter=1
- remote_fileurls_array=(remote_fileurl)
- fi
-
- for remote_fileurl_array in "${remote_fileurls_array[@]}"; do
- if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then
- fileurl="${remote_fileurl}"
- fileurl_name="${remote_fileurl_name}"
- elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then
- fileurl="${remote_fileurl_backup}"
- fileurl_name="${remote_fileurl_backup_name}"
- fi
- counter=$((counter + 1))
- if [ ! -d "${local_filedir}" ]; then
- mkdir -p "${local_filedir}"
- fi
- # Trap will remove part downloaded files if canceled.
- trap fn_fetch_trap INT
- # Larger files show a progress bar.
-
- echo -en "fetching ${fileurl_name} ${local_filename}...\c"
- curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1)
-
- local exitcode=$?
- # Download will fail if downloads a html file.
- if [ -f "${local_filedir}/${local_filename}" ]; then
- if [ -n "$(head "${local_filedir}/${local_filename}" | grep "DOCTYPE")" ]; then
- rm -f "${local_filedir:?}/${local_filename:?}"
- local exitcode=2
- fi
- fi
-
- # On first try will error. On second try will fail.
- if [ "${exitcode}" != 0 ]; then
- if [ ${counter} -ge 2 ]; then
- echo -e "FAIL"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_fail "Downloading ${local_filename}"
- fn_script_log_fail "${fileurl}"
- fi
- core_exit.sh
- else
- echo -e "ERROR"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_error "Downloading ${local_filename}"
- fn_script_log_error "${fileurl}"
- fi
- fi
-
- else
- echo -en "OK"
- sleep 0.3
- echo -en "\033[2K\\r"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_pass "Downloading ${local_filename}"
- fi
-
- # Make file executable if chmodx is set.
- if [ "${chmodx}" == "chmodx" ]; then
- chmod +x "${local_filedir}/${local_filename}"
- fi
-
- # Remove trap.
- trap - INT
-
- break
- fi
- done
- fi
-
- if [ -f "${local_filedir}/${local_filename}" ]; then
- # Execute file if run is set.
- if [ "${run}" == "run" ]; then
- # shellcheck source=/dev/null
- source "${local_filedir}/${local_filename}"
- fi
- fi
-}
-
-fn_bootstrap_fetch_file_github() {
- github_file_url_dir="${1}"
- github_file_url_name="${2}"
- # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork.
- if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
- else
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
- fi
- remote_fileurl_name="GitHub"
- remote_fileurl_backup_name="Bitbucket"
- local_filedir="${3}"
- local_filename="${github_file_url_name}"
- chmodx="${4:-0}"
- run="${5:-0}"
- forcedl="${6:-0}"
- md5="${7:-0}"
- # Passes vars to the file download module.
- fn_bootstrap_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
-}
-
-# Installer menu.
-
-fn_print_center() {
- columns=$(tput cols)
- line="$*"
- printf "%*s\n" $(((${#line} + columns) / 2)) "${line}"
-}
-
-fn_print_horizontal() {
- printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "="
-}
-
-# Bash menu.
-fn_install_menu_bash() {
- local resultvar=$1
- title=$2
- caption=$3
- options=$4
- fn_print_horizontal
- fn_print_center "${title}"
- fn_print_center "${caption}"
- fn_print_horizontal
- menu_options=()
- while read -r line || [[ -n "${line}" ]]; do
- var=$(echo -e "${line}" | awk -F "," '{print $2 " - " $3}')
- menu_options+=("${var}")
- done < "${options}"
- menu_options+=("Cancel")
- select option in "${menu_options[@]}"; do
- if [ "${option}" ] && [ "${option}" != "Cancel" ]; then
- eval "$resultvar=\"${option/%\ */}\""
- fi
- break
- done
-}
-
-# Whiptail/Dialog menu.
-fn_install_menu_whiptail() {
- local menucmd=$1
- local resultvar=$2
- title=$3
- caption=$4
- options=$5
- height=${6:-40}
- width=${7:-80}
- menuheight=${8:-30}
- IFS=","
- menu_options=()
- while read -r line; do
- key=$(echo -e "${line}" | awk -F "," '{print $3}')
- val=$(echo -e "${line}" | awk -F "," '{print $2}')
- menu_options+=("${val//\"/}" "${key//\"/}")
- done < "${options}"
- OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3)
- if [ $? == 0 ]; then
- eval "$resultvar=\"${OPTION}\""
- else
- eval "$resultvar="
- fi
-}
-
-# Menu selector.
-fn_install_menu() {
- local resultvar=$1
- local selection=""
- title=$2
- caption=$3
- options=$4
- # Get menu command.
- for menucmd in whiptail dialog bash; do
- if [ "$(command -v "${menucmd}")" ]; then
- menucmd=$(command -v "${menucmd}")
- break
- fi
- done
- case "$(basename "${menucmd}")" in
- whiptail | dialog)
- fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30
- ;;
- *)
- fn_install_menu_bash selection "${title}" "${caption}" "${options}"
- ;;
- esac
- eval "$resultvar=\"${selection}\""
-}
-
-# Gets server info from serverlist.csv and puts in to array.
-fn_server_info() {
- IFS=","
- server_info_array=($(grep -aw "${userinput}" "${serverlist}"))
- shortname="${server_info_array[0]}" # csgo
- gameservername="${server_info_array[1]}" # csgoserver
- gamename="${server_info_array[2]}" # Counter Strike: Global Offensive
-}
-
-fn_install_getopt() {
- userinput="empty"
- echo -e "Usage: $0 [option]"
- echo -e ""
- echo -e "Installer - Linux Game Server Managers - Version ${version}"
- echo -e "https://linuxgsm.com"
- echo -e ""
- echo -e "Commands"
- echo -e "install\t\t| Select server to install."
- echo -e "servername\t| Enter name of game server to install. e.g $0 csgoserver."
- echo -e "list\t\t| List all servers available for install."
- exit
-}
-
-fn_install_file() {
- local_filename="${gameservername}"
- if [ -e "${local_filename}" ]; then
- i=2
- while [ -e "${local_filename}-${i}" ]; do
- ((i++))
- done
- local_filename="${local_filename}-${i}"
- fi
- cp -R "${selfname}" "${local_filename}"
- sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${local_filename}"
- sed -i -e "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${local_filename}"
- echo -e "Installed ${gamename} server as ${local_filename}"
- echo -e ""
- if [ ! -d "${serverfiles}" ]; then
- echo -e "./${local_filename} install"
- else
- echo -e "Remember to check server ports"
- echo -e "./${local_filename} details"
- fi
- echo -e ""
- exit
-}
-
-# Prevent LinuxGSM from running as root. Except if doing a dependency install.
-if [ "$(whoami)" == "root" ]; then
- if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then
- if [ "${shortname}" == "core" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
- fi
- elif [ ! -f "${modulesdir}/core_modules.sh" ] || [ ! -f "${modulesdir}/check_root.sh" ] || [ ! -f "${modulesdir}/core_messages.sh" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
- else
- core_modules.sh
- check_root.sh
- fi
-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"
- if [ ! -f "${serverlist}" ]; then
- echo -e "[ FAIL ] serverlist.csv could not be loaded."
- exit 1
- fi
-
- if [ "${userinput}" == "list" ] || [ "${userinput}" == "l" ]; then
- {
- tail -n +2 "${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}"
- fn_install_menu result "LinuxGSM" "Select game server to install." "${serverlistmenu}"
- userinput="${result}"
- fn_server_info
- if [ "${result}" == "${gameservername}" ]; then
- fn_install_file
- elif [ "${result}" == "" ]; then
- echo -e "Install canceled"
- else
- echo -e "[ FAIL ] menu result does not match gameservername"
- echo -e "result: ${result}"
- echo -e "gameservername: ${gameservername}"
- fi
- elif [ "${userinput}" ]; then
- fn_server_info
- if [ "${userinput}" == "${gameservername}" ] || [ "${userinput}" == "${gamename}" ] || [ "${userinput}" == "${shortname}" ]; then
- fn_install_file
- else
- echo -e "[ FAIL ] Unknown game server"
- fi
- else
- fn_install_getopt
- fi
-
-# LinuxGSM server mode.
-else
- core_modules.sh
- if [ "${shortname}" != "core-dep" ]; then
- # Load LinuxGSM configs.
- # These are required to get all the default variables for the specific server.
- # 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"
- fi
- if [ ! -f "${configdirserver}/_default.cfg" ]; then
- mkdir -p "${configdirserver}"
- echo -en "copying _default.cfg...\c"
- cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- echo -e "FAIL"
- exit 1
- else
- echo -e "OK"
- fi
- else
- module_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg")
- if [ "${module_file_diff}" != "" ]; then
- fn_print_warn_nl "_default.cfg has been altered. reloading config."
- echo -en "copying _default.cfg...\c"
- cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- echo -e "FAIL"
- exit 1
- else
- echo -e "OK"
- fi
- fi
- fi
- # 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" "nohash"
- # 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" "nohash"
- # 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" "nohash"
- # 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" "nohash"
- # 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
- 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.
- fn_ansi_loader
- # Prevents running of core_exit.sh for Travis-CI.
- if [ "${travistest}" != "1" ]; then
- getopt=$1
- core_getopt.sh
- fi
-fi
-
-fn_currentstatus_tmux() {
- check_status.sh
- if [ "${status}" != "0" ]; then
- currentstatus="STARTED"
- else
- currentstatus="STOPPED"
- fi
-}
-
-fn_setstatus() {
- fn_currentstatus_tmux
- echo""
- echo -e "Required status: ${requiredstatus}"
- counter=0
- echo -e "Current status: ${currentstatus}"
- while [ "${requiredstatus}" != "${currentstatus}" ]; do
- counter=$((counter + 1))
- fn_currentstatus_tmux
- echo -en "New status: ${currentstatus}\\r"
-
- if [ "${requiredstatus}" == "STARTED" ]; then
- (command_start.sh > /dev/null 2>&1)
- else
- (command_stop.sh > /dev/null 2>&1)
- fi
- if [ "${counter}" -gt "5" ]; then
- currentstatus="FAIL"
- echo -e "Current status: ${currentstatus}"
- echo -e ""
- echo -e "Unable to start or stop server."
- exit 1
- fi
- done
- echo -en "New status: ${currentstatus}\\r"
- echo -e "\n"
- echo -e "Test starting:"
- echo -e ""
-}
-
-# End of every test will expect the result to either pass or fail
-# If the script does not do as intended the whole test will fail
-# if expecting a pass
-fn_test_result_pass() {
- if [ $? != 0 ]; then
- echo -e "================================="
- echo -e "Expected result: PASS"
- echo -e "Actual result: FAIL"
- fn_print_fail_nl "TEST FAILED"
- exitcode=1
- core_exit.sh
- else
- echo -e "================================="
- echo -e "Expected result: PASS"
- echo -e "Actual result: PASS"
- fn_print_ok_nl "TEST PASSED"
- echo -e ""
- fi
-}
-
-# if expecting a fail
-fn_test_result_fail() {
- if [ $? == 0 ]; then
- echo -e "================================="
- echo -e "Expected result: FAIL"
- echo -e "Actual result: PASS"
- fn_print_fail_nl "TEST FAILED"
- exitcode=1
- core_exit.sh
- else
- echo -e "================================="
- echo -e "Expected result: FAIL"
- echo -e "Actual result: FAIL"
- fn_print_ok_nl "TEST PASSED"
- echo -e ""
- fi
-}
-
-# test result n/a
-fn_test_result_na() {
- echo -e "================================="
- echo -e "Expected result: N/A"
- echo -e "Actual result: N/A"
- fn_print_fail_nl "TEST N/A"
-}
-
-sleeptime="0"
-
-echo -e "================================="
-echo -e "Travis CI Tests"
-echo -e "Linux Game Server Manager"
-echo -e "by Daniel Gibbs"
-echo -e "Contributors: http://goo.gl/qLmitD"
-echo -e "https://linuxgsm.com"
-echo -e "================================="
-echo -e ""
-echo -e "================================="
-echo -e "Server Tests"
-echo -e "Using: ${gamename}"
-echo -e "Testing Branch: ${TRAVIS_BRANCH}"
-echo -e "================================="
-
-echo -e ""
-echo -e "Tests Summary"
-echo -e "================================="
-echo -e "0.0 - Pre-test Tasks"
-echo -e "0.1 - Create log dir's"
-echo -e "0.2 - Enable dev-debug"
-echo -e ""
-echo -e "1.0 - Pre-install tests"
-echo -e "1.1 - start - no files"
-echo -e "1.2 - getopt"
-echo -e "1.3 - getopt with incorrect args"
-echo -e ""
-echo -e "2.0 - Installation"
-echo -e "2.1 - install"
-echo -e ""
-echo -e "3.0 - Start/Stop/Restart Tests"
-echo -e "3.1 - start"
-echo -e "3.2 - start - online"
-echo -e "3.3 - start - updateonstart"
-echo -e "3.4 - stop"
-echo -e "3.5 - stop - offline"
-echo -e "3.6 - restart"
-echo -e "3.7 - restart - offline"
-echo -e ""
-echo -e "4.0 - Update Tests"
-echo -e "4.1 - update"
-echo -e "4.2 - update-lgsm"
-echo -e ""
-echo -e "5.0 - Monitor Tests"
-echo -e "5.1 - monitor - online"
-echo -e "5.2 - monitor - offline - with lockfile"
-echo -e "5.3 - monitor - offline - no lockfile"
-echo -e "5.4 - test-alert"
-echo -e ""
-echo -e "6.0 - Details Tests"
-echo -e "6.1 - details"
-echo -e "6.2 - postdetails"
-echo -e ""
-echo -e "7.0 - Backup Tests"
-echo -e "7.1 - backup"
-echo -e ""
-echo -e "8.0 - Development Tools Tests"
-echo -e "8.1 - dev - detect glibc"
-echo -e "8.2 - dev - detect ldd"
-echo -e "8.3 - dev - detect deps"
-echo -e "8.4 - dev - query-raw"
-
-echo -e ""
-echo -e "9.0 - Sponsor"
-echo -e "9.1 - sponsor"
-echo -e ""
-
-echo -e "0.0 - Pre-test Tasks"
-echo -e "=================================================================="
-echo -e "Description:"
-echo -e "Create log dir's"
-echo -e ""
-
-echo -e ""
-echo -e "0.1 - Create log dir's"
-echo -e "================================="
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- install_logs.sh
-)
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "0.2 - Enable dev-debug"
-echo -e "================================="
-echo -e "Description:"
-echo -e "Enable dev-debug"
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_debug.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.0 - Pre-install tests"
-echo -e "=================================================================="
-echo -e ""
-
-echo -e "1.1 - start - no files"
-echo -e "================================="
-echo -e "Description:"
-echo -e "test script reaction to missing server files."
-echo -e "Command: ./${gameservername} start"
-echo -e ""
-# Allows for testing not on Travis CI
-if [ -z "${TRAVIS}" ]; then
- (
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
- )
- fn_test_result_fail
-else
- echo -e "Test bypassed"
-fi
-
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.2 - getopt"
-echo -e "================================="
-echo -e "Description:"
-echo -e "displaying options messages."
-echo -e "Command: ./${gameservername}"
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- core_getopt.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.3 - getopt with incorrect args"
-echo -e "================================="
-echo -e "Description:"
-echo -e "displaying options messages."
-echo -e "Command: ./${gameservername} abc123"
-echo -e ""
-getopt="abc123"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- core_getopt.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "2.0 - Installation"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "2.1 - install"
-echo -e "================================="
-echo -e "Description:"
-echo -e "install ${gamename} server."
-echo -e "Command: ./${gameservername} auto-install"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- fn_autoinstall
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.0 - Start/Stop/Restart Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "3.1 - start"
-echo -e "================================="
-echo -e "Description:"
-echo -e "start ${gamename} server."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.2 - start - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "start ${gamename} server while already running."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.3 - start - updateonstart"
-echo -e "================================="
-echo -e "Description:"
-echo -e "will update server on start."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- updateonstart="on"
- command_start.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.4 - stop"
-echo -e "================================="
-echo -e "Description:"
-echo -e "stop ${gamename} server."
-echo -e "Command: ./${gameservername} stop"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_stop.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.5 - stop - offline"
-echo -e "================================="
-echo -e "Description:"
-echo -e "stop ${gamename} server while already stopped."
-echo -e "Command: ./${gameservername} stop"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_stop.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.6 - restart"
-echo -e "================================="
-echo -e "Description:"
-echo -e "restart ${gamename}."
-echo -e "Command: ./${gameservername} restart"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_restart.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.7 - restart - offline"
-echo -e "================================="
-echo -e "Description:"
-echo -e "restart ${gamename} while already stopped."
-echo -e "Command: ./${gameservername} restart"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_restart.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.0 - Update Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "4.1 - update"
-echo -e "================================="
-echo -e "Description:"
-echo -e "check for updates."
-echo -e "Command: ./${gameservername} update"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.2 - update-lgsm"
-echo -e "================================="
-echo -e "Description:"
-echo -e "update LinuxGSM."
-echo -e ""
-echo -e "Command: ./jc2server update-lgam"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update_linuxgsm.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.0 - Monitor Tests"
-echo -e "=================================================================="
-echo -e ""
-info_game.sh
-echo -e "Server IP - Port: ${ip}:${port}"
-echo -e "Server IP - Query Port: ${ip}:${queryport}"
-
-echo -e ""
-echo -e "5.1 - monitor - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor server while already running."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.2 - monitor - offline - with lockfile"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with lockfile."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STOPPED"
-fn_setstatus
-fn_print_info_nl "creating lockfile."
-date '+%s' > "${lockdir}/${selfname}.lock"
-echo "${version}" >> "${lockdir}/${selfname}.lock"
-echo "${port}" >> "${lockdir}/${selfname}.lock"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.3 - monitor - offline - no lockfile"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with no lockfile."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.4 - test-alert"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with no lockfile."
-echo -e "Command: ./${gameservername} test-alert"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_test_alert.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "6.0 - Details Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "6.1 - details"
-echo -e "================================="
-echo -e "Description:"
-echo -e "display details."
-echo -e "Command: ./${gameservername} details"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_details.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "6.2 - postdetails"
-echo -e "================================="
-echo -e "Description:"
-echo -e "post details."
-echo -e "Command: ./${gameservername} postdetails"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_postdetails.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "7.0 - Backup Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "7.1 - backup"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run a backup."
-echo -e "Command: ./${gameservername} backup"
-requiredstatus="STARTED"
-fn_setstatus
-echo -e "test de-activated until issue #1839 fixed"
-#(command_backup.sh)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.0 - Development Tools Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "8.1 - dev - detect glibc"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect glibc."
-echo -e "Command: ./${gameservername} detect-glibc"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_glibc.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.2 - dev - detect ldd"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect ldd."
-echo -e "Command: ./${gameservername} detect-ldd"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_ldd.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.3 - dev - detect deps"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect dependencies."
-echo -e "Command: ./${gameservername} detect-deps"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_deps.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.4 - dev - query-raw"
-echo -e "================================="
-echo -e "Description:"
-echo -e "raw query output."
-echo -e "Command: ./${gameservername} query-raw"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_query_raw.sh
-)
-fn_test_result_na
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-
-echo -e "9.0 - Sponsor"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "9.1 - sponsor"
-echo -e "================================="
-echo -e "Description:"
-echo -e "sponsor."
-echo -e "Command: ./${gameservername} sponsor"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_sponsor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "================================="
-echo -e "Server Tests - Complete!"
-echo -e "Using: ${gamename}"
-echo -e "================================="
-requiredstatus="STOPPED"
-fn_setstatus
-
-core_exit.sh
diff --git a/tests/tests_jc2server.sh b/tests/tests_jc2server.sh
deleted file mode 100644
index adf59ab92..000000000
--- a/tests/tests_jc2server.sh
+++ /dev/null
@@ -1,1352 +0,0 @@
-#!/bin/bash
-# Project: Game Server Managers - LinuxGSM
-# Author: Daniel Gibbs
-# License: MIT License, Copyright (c) 2020 Daniel Gibbs
-# Purpose: Travis CI Tests: Just Cause 2 | Linux Game Server Management Script
-# Contributors: https://linuxgsm.com/contrib
-# Documentation: https://docs.linuxgsm.com
-# Website: https://linuxgsm.com
-
-# DO NOT EDIT THIS FILE
-# LinuxGSM configuration is no longer edited here
-# To update your LinuxGSM config go to:
-# lgsm/config-lgsm
-# https://docs.linuxgsm.com/configuration/linuxgsm-config
-
-# Debugging
-if [ -f ".dev-debug" ]; then
- exec 5> dev-debug.log
- BASH_XTRACEFD="5"
- set -x
-fi
-
-version="v23.5.3"
-shortname="jc2"
-gameservername="jc2server"
-commandname="CORE"
-rootdir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
-selfname=$(basename "$(readlink -f "${BASH_SOURCE[0]}")")
-sessionname=$(echo "${selfname}" | cut -f1 -d".")
-lgsmdir="${rootdir}/lgsm"
-logdir="${rootdir}/log"
-lgsmlogdir="${logdir}/lgsm"
-steamcmddir="${HOME}/.steam/steamcmd"
-serverfiles="${rootdir}/serverfiles"
-modulesdir="${lgsmdir}/modules"
-tmpdir="${lgsmdir}/tmp"
-datadir="${lgsmdir}/data"
-lockdir="${lgsmdir}/lock"
-serverlist="${datadir}/serverlist.csv"
-serverlistmenu="${datadir}/serverlistmenu.csv"
-configdir="${lgsmdir}/config-lgsm"
-configdirserver="${configdir}/${gameservername}"
-configdirdefault="${lgsmdir}/config-default"
-userinput="${1}"
-
-# Allows for testing not on Travis CI.
-# if using travis for tests
-if [ -z "${TRAVIS}" ]; then
- TRAVIS_BRANCH="develop"
- TRAVIS_BUILD_DIR="${rootdir}"
-fi
-travistest="1"
-
-## GitHub Branch Select
-# Allows for the use of different module files
-# from a different repo and/or branch.
-githubuser="GameServerManagers"
-githubrepo="LinuxGSM"
-githubbranch="${TRAVIS_BRANCH}"
-
-# Core module that is required first.
-core_modules.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_bootstrap_fetch_file_github "lgsm/modules" "core_modules.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
-}
-
-# Bootstrap
-# Fetches the core modules required before passed off to core_dl.sh.
-fn_bootstrap_fetch_file() {
- 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}"
- # Download file if missing or download forced.
- if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then
- # If backup fileurl exists include it.
- if [ -n "${remote_fileurl_backup}" ]; then
- # counter set to 0 to allow second try
- counter=0
- remote_fileurls_array=(remote_fileurl remote_fileurl_backup)
- else
- # counter set to 1 to not allow second try
- counter=1
- remote_fileurls_array=(remote_fileurl)
- fi
-
- for remote_fileurl_array in "${remote_fileurls_array[@]}"; do
- if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then
- fileurl="${remote_fileurl}"
- fileurl_name="${remote_fileurl_name}"
- elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then
- fileurl="${remote_fileurl_backup}"
- fileurl_name="${remote_fileurl_backup_name}"
- fi
- counter=$((counter + 1))
- if [ ! -d "${local_filedir}" ]; then
- mkdir -p "${local_filedir}"
- fi
- # Trap will remove part downloaded files if canceled.
- trap fn_fetch_trap INT
- # Larger files show a progress bar.
-
- echo -en "fetching ${fileurl_name} ${local_filename}...\c"
- curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1)
-
- local exitcode=$?
- # Download will fail if downloads a html file.
- if [ -f "${local_filedir}/${local_filename}" ]; then
- if [ -n "$(head "${local_filedir}/${local_filename}" | grep "DOCTYPE")" ]; then
- rm -f "${local_filedir:?}/${local_filename:?}"
- local exitcode=2
- fi
- fi
-
- # On first try will error. On second try will fail.
- if [ "${exitcode}" != 0 ]; then
- if [ ${counter} -ge 2 ]; then
- echo -e "FAIL"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_fail "Downloading ${local_filename}"
- fn_script_log_fail "${fileurl}"
- fi
- core_exit.sh
- else
- echo -e "ERROR"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_error "Downloading ${local_filename}"
- fn_script_log_error "${fileurl}"
- fi
- fi
-
- else
- echo -en "OK"
- sleep 0.3
- echo -en "\033[2K\\r"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_pass "Downloading ${local_filename}"
- fi
-
- # Make file executable if chmodx is set.
- if [ "${chmodx}" == "chmodx" ]; then
- chmod +x "${local_filedir}/${local_filename}"
- fi
-
- # Remove trap.
- trap - INT
-
- break
- fi
- done
- fi
-
- if [ -f "${local_filedir}/${local_filename}" ]; then
- # Execute file if run is set.
- if [ "${run}" == "run" ]; then
- # shellcheck source=/dev/null
- source "${local_filedir}/${local_filename}"
- fi
- fi
-}
-
-fn_bootstrap_fetch_file_github() {
- github_file_url_dir="${1}"
- github_file_url_name="${2}"
- # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork.
- if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
- else
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
- fi
- remote_fileurl_name="GitHub"
- remote_fileurl_backup_name="Bitbucket"
- local_filedir="${3}"
- local_filename="${github_file_url_name}"
- chmodx="${4:-0}"
- run="${5:-0}"
- forcedl="${6:-0}"
- md5="${7:-0}"
- # Passes vars to the file download module.
- fn_bootstrap_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
-}
-
-# Installer menu.
-
-fn_print_center() {
- columns=$(tput cols)
- line="$*"
- printf "%*s\n" $(((${#line} + columns) / 2)) "${line}"
-}
-
-fn_print_horizontal() {
- printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "="
-}
-
-# Bash menu.
-fn_install_menu_bash() {
- local resultvar=$1
- title=$2
- caption=$3
- options=$4
- fn_print_horizontal
- fn_print_center "${title}"
- fn_print_center "${caption}"
- fn_print_horizontal
- menu_options=()
- while read -r line || [[ -n "${line}" ]]; do
- var=$(echo -e "${line}" | awk -F "," '{print $2 " - " $3}')
- menu_options+=("${var}")
- done < "${options}"
- menu_options+=("Cancel")
- select option in "${menu_options[@]}"; do
- if [ "${option}" ] && [ "${option}" != "Cancel" ]; then
- eval "$resultvar=\"${option/%\ */}\""
- fi
- break
- done
-}
-
-# Whiptail/Dialog menu.
-fn_install_menu_whiptail() {
- local menucmd=$1
- local resultvar=$2
- title=$3
- caption=$4
- options=$5
- height=${6:-40}
- width=${7:-80}
- menuheight=${8:-30}
- IFS=","
- menu_options=()
- while read -r line; do
- key=$(echo -e "${line}" | awk -F "," '{print $3}')
- val=$(echo -e "${line}" | awk -F "," '{print $2}')
- menu_options+=("${val//\"/}" "${key//\"/}")
- done < "${options}"
- OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3)
- if [ $? == 0 ]; then
- eval "$resultvar=\"${OPTION}\""
- else
- eval "$resultvar="
- fi
-}
-
-# Menu selector.
-fn_install_menu() {
- local resultvar=$1
- local selection=""
- title=$2
- caption=$3
- options=$4
- # Get menu command.
- for menucmd in whiptail dialog bash; do
- if [ "$(command -v "${menucmd}")" ]; then
- menucmd=$(command -v "${menucmd}")
- break
- fi
- done
- case "$(basename "${menucmd}")" in
- whiptail | dialog)
- fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30
- ;;
- *)
- fn_install_menu_bash selection "${title}" "${caption}" "${options}"
- ;;
- esac
- eval "$resultvar=\"${selection}\""
-}
-
-# Gets server info from serverlist.csv and puts in to array.
-fn_server_info() {
- IFS=","
- server_info_array=($(grep -aw "${userinput}" "${serverlist}"))
- shortname="${server_info_array[0]}" # csgo
- gameservername="${server_info_array[1]}" # csgoserver
- gamename="${server_info_array[2]}" # Counter Strike: Global Offensive
-}
-
-fn_install_getopt() {
- userinput="empty"
- echo -e "Usage: $0 [option]"
- echo -e ""
- echo -e "Installer - Linux Game Server Managers - Version ${version}"
- echo -e "https://linuxgsm.com"
- echo -e ""
- echo -e "Commands"
- echo -e "install\t\t| Select server to install."
- echo -e "servername\t| Enter name of game server to install. e.g $0 csgoserver."
- echo -e "list\t\t| List all servers available for install."
- exit
-}
-
-fn_install_file() {
- local_filename="${gameservername}"
- if [ -e "${local_filename}" ]; then
- i=2
- while [ -e "${local_filename}-${i}" ]; do
- ((i++))
- done
- local_filename="${local_filename}-${i}"
- fi
- cp -R "${selfname}" "${local_filename}"
- sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${local_filename}"
- sed -i -e "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${local_filename}"
- echo -e "Installed ${gamename} server as ${local_filename}"
- echo -e ""
- if [ ! -d "${serverfiles}" ]; then
- echo -e "./${local_filename} install"
- else
- echo -e "Remember to check server ports"
- echo -e "./${local_filename} details"
- fi
- echo -e ""
- exit
-}
-
-# Prevent LinuxGSM from running as root. Except if doing a dependency install.
-if [ "$(whoami)" == "root" ]; then
- if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then
- if [ "${shortname}" == "core" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
- fi
- elif [ ! -f "${modulesdir}/core_modules.sh" ] || [ ! -f "${modulesdir}/check_root.sh" ] || [ ! -f "${modulesdir}/core_messages.sh" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
- else
- core_modules.sh
- check_root.sh
- fi
-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"
- if [ ! -f "${serverlist}" ]; then
- echo -e "[ FAIL ] serverlist.csv could not be loaded."
- exit 1
- fi
-
- if [ "${userinput}" == "list" ] || [ "${userinput}" == "l" ]; then
- {
- tail -n +2 "${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}"
- fn_install_menu result "LinuxGSM" "Select game server to install." "${serverlistmenu}"
- userinput="${result}"
- fn_server_info
- if [ "${result}" == "${gameservername}" ]; then
- fn_install_file
- elif [ "${result}" == "" ]; then
- echo -e "Install canceled"
- else
- echo -e "[ FAIL ] menu result does not match gameservername"
- echo -e "result: ${result}"
- echo -e "gameservername: ${gameservername}"
- fi
- elif [ "${userinput}" ]; then
- fn_server_info
- if [ "${userinput}" == "${gameservername}" ] || [ "${userinput}" == "${gamename}" ] || [ "${userinput}" == "${shortname}" ]; then
- fn_install_file
- else
- echo -e "[ FAIL ] Unknown game server"
- fi
- else
- fn_install_getopt
- fi
-
-# LinuxGSM server mode.
-else
- core_modules.sh
- if [ "${shortname}" != "core-dep" ]; then
- # Load LinuxGSM configs.
- # These are required to get all the default variables for the specific server.
- # 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"
- fi
- if [ ! -f "${configdirserver}/_default.cfg" ]; then
- mkdir -p "${configdirserver}"
- echo -en "copying _default.cfg...\c"
- cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- echo -e "FAIL"
- exit 1
- else
- echo -e "OK"
- fi
- else
- module_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg")
- if [ "${module_file_diff}" != "" ]; then
- fn_print_warn_nl "_default.cfg has been altered. reloading config."
- echo -en "copying _default.cfg...\c"
- cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- echo -e "FAIL"
- exit 1
- else
- echo -e "OK"
- fi
- fi
- fi
- # 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" "nohash"
- # 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" "nohash"
- # 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" "nohash"
- # 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" "nohash"
- # 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
- 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.
- fn_ansi_loader
- # Prevents running of core_exit.sh for Travis-CI.
- if [ "${travistest}" != "1" ]; then
- getopt=$1
- core_getopt.sh
- fi
-fi
-
-fn_currentstatus_tmux() {
- check_status.sh
- if [ "${status}" != "0" ]; then
- currentstatus="STARTED"
- else
- currentstatus="STOPPED"
- fi
-}
-
-fn_setstatus() {
- fn_currentstatus_tmux
- echo""
- echo -e "Required status: ${requiredstatus}"
- counter=0
- echo -e "Current status: ${currentstatus}"
- while [ "${requiredstatus}" != "${currentstatus}" ]; do
- counter=$((counter + 1))
- fn_currentstatus_tmux
- echo -en "New status: ${currentstatus}\\r"
-
- if [ "${requiredstatus}" == "STARTED" ]; then
- (command_start.sh > /dev/null 2>&1)
- else
- (command_stop.sh > /dev/null 2>&1)
- fi
- if [ "${counter}" -gt "5" ]; then
- currentstatus="FAIL"
- echo -e "Current status: ${currentstatus}"
- echo -e ""
- echo -e "Unable to start or stop server."
- exit 1
- fi
- done
- echo -en "New status: ${currentstatus}\\r"
- echo -e "\n"
- echo -e "Test starting:"
- echo -e ""
-}
-
-# End of every test will expect the result to either pass or fail
-# If the script does not do as intended the whole test will fail
-# if expecting a pass
-fn_test_result_pass() {
- if [ $? != 0 ]; then
- echo -e "================================="
- echo -e "Expected result: PASS"
- echo -e "Actual result: FAIL"
- fn_print_fail_nl "TEST FAILED"
- exitcode=1
- core_exit.sh
- else
- echo -e "================================="
- echo -e "Expected result: PASS"
- echo -e "Actual result: PASS"
- fn_print_ok_nl "TEST PASSED"
- echo -e ""
- fi
-}
-
-# if expecting a fail
-fn_test_result_fail() {
- if [ $? == 0 ]; then
- echo -e "================================="
- echo -e "Expected result: FAIL"
- echo -e "Actual result: PASS"
- fn_print_fail_nl "TEST FAILED"
- exitcode=1
- core_exit.sh
- else
- echo -e "================================="
- echo -e "Expected result: FAIL"
- echo -e "Actual result: FAIL"
- fn_print_ok_nl "TEST PASSED"
- echo -e ""
- fi
-}
-
-# test result n/a
-fn_test_result_na() {
- echo -e "================================="
- echo -e "Expected result: N/A"
- echo -e "Actual result: N/A"
- fn_print_fail_nl "TEST N/A"
-}
-
-sleeptime="0"
-
-echo -e "================================="
-echo -e "Travis CI Tests"
-echo -e "Linux Game Server Manager"
-echo -e "by Daniel Gibbs"
-echo -e "Contributors: http://goo.gl/qLmitD"
-echo -e "https://linuxgsm.com"
-echo -e "================================="
-echo -e ""
-echo -e "================================="
-echo -e "Server Tests"
-echo -e "Using: ${gamename}"
-echo -e "Testing Branch: ${TRAVIS_BRANCH}"
-echo -e "================================="
-echo -e ""
-echo -e "Tests Summary"
-echo -e "================================="
-echo -e "0.0 - Pre-test Tasks"
-echo -e "0.1 - Create log dir's"
-echo -e "0.2 - Enable dev-debug"
-echo -e ""
-echo -e "1.0 - Pre-install tests"
-echo -e "1.1 - start - no files"
-echo -e "1.2 - getopt"
-echo -e "1.3 - getopt with incorrect args"
-echo -e ""
-echo -e "2.0 - Installation"
-echo -e "2.1 - install"
-echo -e ""
-echo -e "3.0 - Start/Stop/Restart Tests"
-echo -e "3.1 - start"
-echo -e "3.2 - start - online"
-echo -e "3.3 - start - updateonstart"
-echo -e "3.4 - stop"
-echo -e "3.5 - stop - offline"
-echo -e "3.6 - restart"
-echo -e "3.7 - restart - offline"
-echo -e ""
-echo -e "4.0 - Update Tests"
-echo -e "4.1 - update"
-echo -e "4.2 - update - change buildid"
-echo -e "4.3 - update - change buildid - online"
-echo -e "4.4 - update - remove appmanifest file"
-echo -e "4.5 - force-update"
-echo -e "4.6 - force-update - online"
-echo -e "4.7 - validate"
-echo -e "4.8 - validate - online"
-echo -e "4.9 - update-lgsm"
-echo -e ""
-echo -e "5.0 - Monitor Tests"
-echo -e "5.1 - monitor - online"
-echo -e "5.2 - monitor - offline - with lockfile"
-echo -e "5.3 - monitor - offline - no lockfile"
-echo -e "5.4 - test-alert"
-echo -e ""
-echo -e "6.0 - Details Tests"
-echo -e "6.1 - details"
-echo -e "6.2 - postdetails"
-echo -e ""
-echo -e "7.0 - Backup Tests"
-echo -e "7.1 - backup"
-echo -e ""
-echo -e "8.0 - Development Tools Tests"
-echo -e "8.1 - dev - detect glibc"
-echo -e "8.2 - dev - detect ldd"
-echo -e "8.3 - dev - detect deps"
-echo -e "8.4 - dev - query-raw"
-echo -e ""
-echo -e "9.0 - Sponsor"
-echo -e "9.1 - sponsor"
-echo -e ""
-echo -e "0.0 - Pre-test Tasks"
-echo -e "=================================================================="
-echo -e "Description:"
-echo -e "Create log dir's"
-echo -e ""
-
-echo -e ""
-echo -e "0.1 - Create log dir's"
-echo -e "================================="
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- install_logs.sh
-)
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "0.2 - Enable dev-debug"
-echo -e "================================="
-echo -e "Description:"
-echo -e "Enable dev-debug"
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_debug.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.0 - Pre-install tests"
-echo -e "=================================================================="
-echo -e ""
-
-echo -e "1.1 - start - no files"
-echo -e "================================="
-echo -e "Description:"
-echo -e "test script reaction to missing server files."
-echo -e "Command: ./${gameservername} start"
-echo -e ""
-# Allows for testing not on Travis CI
-if [ -z "${TRAVIS}" ]; then
- (
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
- )
- fn_test_result_fail
-else
- echo -e "Test bypassed"
-fi
-
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.2 - getopt"
-echo -e "================================="
-echo -e "Description:"
-echo -e "displaying options messages."
-echo -e "Command: ./${gameservername}"
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- core_getopt.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.3 - getopt with incorrect args"
-echo -e "================================="
-echo -e "Description:"
-echo -e "displaying options messages."
-echo -e "Command: ./${gameservername} abc123"
-echo -e ""
-getopt="abc123"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- core_getopt.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "2.0 - Installation"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "2.1 - install"
-echo -e "================================="
-echo -e "Description:"
-echo -e "install ${gamename} server."
-echo -e "Command: ./${gameservername} auto-install"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- fn_autoinstall
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.0 - Start/Stop/Restart Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "3.1 - start"
-echo -e "================================="
-echo -e "Description:"
-echo -e "start ${gamename} server."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.2 - start - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "start ${gamename} server while already running."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.3 - start - updateonstart"
-echo -e "================================="
-echo -e "Description:"
-echo -e "will update server on start."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- updateonstart="on"
- command_start.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.4 - stop"
-echo -e "================================="
-echo -e "Description:"
-echo -e "stop ${gamename} server."
-echo -e "Command: ./${gameservername} stop"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_stop.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.5 - stop - offline"
-echo -e "================================="
-echo -e "Description:"
-echo -e "stop ${gamename} server while already stopped."
-echo -e "Command: ./${gameservername} stop"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_stop.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.6 - restart"
-echo -e "================================="
-echo -e "Description:"
-echo -e "restart ${gamename}."
-echo -e "Command: ./${gameservername} restart"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_restart.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.7 - restart - offline"
-echo -e "================================="
-echo -e "Description:"
-echo -e "restart ${gamename} while already stopped."
-echo -e "Command: ./${gameservername} restart"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_restart.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.0 - Update Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "4.1 - update"
-echo -e "================================="
-echo -e "Description:"
-echo -e "check for updates."
-echo -e "Command: ./${gameservername} update"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.2 - update - change buildid"
-echo -e "================================="
-echo -e "Description:"
-echo -e "change the buildid tricking SteamCMD to update."
-echo -e "Command: ./jc2server update"
-requiredstatus="STOPPED"
-fn_setstatus
-fn_print_info_nl "changed buildid to 0."
-sed -i 's/[0-9]\+/0/' "${serverfiles}/steamapps/appmanifest_${appid}.acf"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.3 - update - change buildid - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "change the buildid tricking SteamCMD to update server while already running."
-echo -e "Command: ./jc2server update"
-requiredstatus="STARTED"
-fn_setstatus
-fn_print_info_nl "changed buildid to 0."
-sed -i 's/[0-9]\+/0/' "${serverfiles}/steamapps/appmanifest_${appid}.acf"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.4 - update - remove appmanifest file"
-echo -e "================================="
-echo -e "Description:"
-echo -e "removing appmanifest file will cause script to repair."
-echo -e "Command: ./jc2server update"
-requiredstatus="STOPPED"
-fn_setstatus
-fn_print_info_nl "removed appmanifest_${appid}.acf."
-rm --verbose "${serverfiles:?}/steamapps/appmanifest_${appid}.acf"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.5 - force-update"
-echo -e "================================="
-echo -e "Description:"
-echo -e "force-update bypassing update check."
-echo -e "Command: ./jc2server force-update"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- forceupdate=1
- command_update.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.6 - force-update - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "force-update bypassing update check server while already running."
-echo -e "Command: ./jc2server force-update"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- forceupdate=1
- command_update.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.7 - validate"
-echo -e "================================="
-echo -e "Description:"
-echo -e "validate server files."
-echo -e "Command: ./jc2server validate"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_validate.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.8 - validate - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "validate server files while server already running."
-echo -e ""
-echo -e "Command: ./jc2server validate"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_validate.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.9 - update-lgsm"
-echo -e "================================="
-echo -e "Description:"
-echo -e "update LinuxGSM."
-echo -e ""
-echo -e "Command: ./jc2server update-lgam"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update_linuxgsm.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "Inserting IP address"
-echo -e "================================="
-echo -e "Description:"
-echo -e "Inserting Travis IP in to config."
-echo -e "Allows monitor to work"
-if [ "$(${ipcommand}-o -4 addr | grep eth0)" ]; then
- travisip=$(${ipcommand}-o -4 addr | grep eth0 | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | grep -v 127.0.0)
-else
- travisip=$(${ipcommand}-o -4 addr | grep ens | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | sort -u | grep -v 127.0.0)
-fi
-sed -i "/BindIP/c\BindIP = \"${travisip}\"," "${serverfiles}/config.lua"
-echo -e "IP: ${travisip}"
-
-echo -e ""
-echo -e "5.0 - Monitor Tests"
-echo -e "=================================================================="
-echo -e ""
-info_game.sh
-echo -e "Server IP - Port: ${ip}:${port}"
-echo -e "Server IP - Query Port: ${ip}:${queryport}"
-
-echo -e ""
-echo -e "5.1 - monitor - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor server while already running."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.2 - monitor - offline - with lockfile"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with lockfile."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STOPPED"
-fn_setstatus
-fn_print_info_nl "creating lockfile."
-date '+%s' > "${lockdir}/${selfname}.lock"
-echo "${version}" >> "${lockdir}/${selfname}.lock"
-echo "${port}" >> "${lockdir}/${selfname}.lock"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.3 - monitor - offline - no lockfile"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with no lockfile."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.4 - test-alert"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with no lockfile."
-echo -e "Command: ./${gameservername} test-alert"
-requiredstatus="STOPPED"
-fn_setstatus
-cp "${servercfgfullpath}" "config.lua"
-sed -i 's/[0-9]\+/0/' "${servercfgfullpath}"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_test_alert.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-fn_print_info_nl "Re-generating ${servercfg}."
-cp -v "config.lua" "${servercfgfullpath}"
-echo -e "================================="
-
-echo -e ""
-echo -e "6.0 - Details Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "6.1 - details"
-echo -e "================================="
-echo -e "Description:"
-echo -e "display details."
-echo -e "Command: ./${gameservername} details"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_details.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "6.2 - postdetails"
-echo -e "================================="
-echo -e "Description:"
-echo -e "post details."
-echo -e "Command: ./${gameservername} postdetails"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_postdetails.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "7.0 - Backup Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "7.1 - backup"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run a backup."
-echo -e "Command: ./${gameservername} backup"
-requiredstatus="STARTED"
-fn_setstatus
-echo -e "test de-activated until issue #1839 fixed"
-#(command_backup.sh)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.0 - Development Tools Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "8.1 - dev - detect glibc"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect glibc."
-echo -e "Command: ./${gameservername} detect-glibc"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_glibc.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.2 - dev - detect ldd"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect ldd."
-echo -e "Command: ./${gameservername} detect-ldd"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_ldd.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.3 - dev - detect deps"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect dependencies."
-echo -e "Command: ./${gameservername} detect-deps"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_deps.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.4 - dev - query-raw"
-echo -e "================================="
-echo -e "Description:"
-echo -e "raw query output."
-echo -e "Command: ./${gameservername} query-raw"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_query_raw.sh
-)
-fn_test_result_na
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "9.0 - Sponsor"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "9.1 - sponsor"
-echo -e "================================="
-echo -e "Description:"
-echo -e "sponsor."
-echo -e "Command: ./${gameservername} sponsor"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_sponsor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "================================="
-echo -e "Server Tests - Complete!"
-echo -e "Using: ${gamename}"
-echo -e "================================="
-requiredstatus="STOPPED"
-fn_setstatus
-core_exit.sh
diff --git a/tests/tests_mcserver.sh b/tests/tests_mcserver.sh
deleted file mode 100644
index 3a40e9aa5..000000000
--- a/tests/tests_mcserver.sh
+++ /dev/null
@@ -1,1231 +0,0 @@
-#!/bin/bash
-# Project: Game Server Managers - LinuxGSM
-# Author: Daniel Gibbs
-# License: MIT License, Copyright (c) 2020 Daniel Gibbs
-# Purpose: Travis CI Tests: Minecraft | Linux Game Server Management Script
-# Contributors: https://linuxgsm.com/contrib
-# Documentation: https://docs.linuxgsm.com
-# Website: https://linuxgsm.com
-
-# DO NOT EDIT THIS FILE
-# LinuxGSM configuration is no longer edited here
-# To update your LinuxGSM config go to:
-# lgsm/config-lgsm
-# https://docs.linuxgsm.com/configuration/linuxgsm-config
-
-# Debugging
-if [ -f ".dev-debug" ]; then
- exec 5> dev-debug.log
- BASH_XTRACEFD="5"
- set -x
-fi
-
-version="v23.5.3"
-shortname="mc"
-gameservername="mcserver"
-commandname="CORE"
-rootdir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
-selfname=$(basename "$(readlink -f "${BASH_SOURCE[0]}")")
-sessionname=$(echo "${selfname}" | cut -f1 -d".")
-lgsmdir="${rootdir}/lgsm"
-logdir="${rootdir}/log"
-lgsmlogdir="${logdir}/lgsm"
-steamcmddir="${HOME}/.steam/steamcmd"
-serverfiles="${rootdir}/serverfiles"
-modulesdir="${lgsmdir}/modules"
-tmpdir="${lgsmdir}/tmp"
-datadir="${lgsmdir}/data"
-lockdir="${lgsmdir}/lock"
-serverlist="${datadir}/serverlist.csv"
-serverlistmenu="${datadir}/serverlistmenu.csv"
-configdir="${lgsmdir}/config-lgsm"
-configdirserver="${configdir}/${gameservername}"
-configdirdefault="${lgsmdir}/config-default"
-userinput="${1}"
-
-# Allows for testing not on Travis CI.
-# if using travis for tests
-if [ -z "${TRAVIS}" ]; then
- TRAVIS_BRANCH="develop"
- TRAVIS_BUILD_DIR="${rootdir}"
-fi
-travistest="1"
-
-## GitHub Branch Select
-# Allows for the use of different module files
-# from a different repo and/or branch.
-githubuser="GameServerManagers"
-githubrepo="LinuxGSM"
-githubbranch="${TRAVIS_BRANCH}"
-
-# Core module that is required first.
-core_modules.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_bootstrap_fetch_file_github "lgsm/modules" "core_modules.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
-}
-
-# Bootstrap
-# Fetches the core modules required before passed off to core_dl.sh.
-fn_bootstrap_fetch_file() {
- 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}"
- # Download file if missing or download forced.
- if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then
- # If backup fileurl exists include it.
- if [ -n "${remote_fileurl_backup}" ]; then
- # counter set to 0 to allow second try
- counter=0
- remote_fileurls_array=(remote_fileurl remote_fileurl_backup)
- else
- # counter set to 1 to not allow second try
- counter=1
- remote_fileurls_array=(remote_fileurl)
- fi
-
- for remote_fileurl_array in "${remote_fileurls_array[@]}"; do
- if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then
- fileurl="${remote_fileurl}"
- fileurl_name="${remote_fileurl_name}"
- elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then
- fileurl="${remote_fileurl_backup}"
- fileurl_name="${remote_fileurl_backup_name}"
- fi
- counter=$((counter + 1))
- if [ ! -d "${local_filedir}" ]; then
- mkdir -p "${local_filedir}"
- fi
- # Trap will remove part downloaded files if canceled.
- trap fn_fetch_trap INT
- # Larger files show a progress bar.
-
- echo -en "fetching ${fileurl_name} ${local_filename}...\c"
- curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1)
-
- local exitcode=$?
- # Download will fail if downloads a html file.
- if [ -f "${local_filedir}/${local_filename}" ]; then
- if [ -n "$(head "${local_filedir}/${local_filename}" | grep "DOCTYPE")" ]; then
- rm -f "${local_filedir:?}/${local_filename:?}"
- local exitcode=2
- fi
- fi
-
- # On first try will error. On second try will fail.
- if [ "${exitcode}" != 0 ]; then
- if [ ${counter} -ge 2 ]; then
- echo -e "FAIL"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_fail "Downloading ${local_filename}"
- fn_script_log_fail "${fileurl}"
- fi
- core_exit.sh
- else
- echo -e "ERROR"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_error "Downloading ${local_filename}"
- fn_script_log_error "${fileurl}"
- fi
- fi
-
- else
- echo -en "OK"
- sleep 0.3
- echo -en "\033[2K\\r"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_pass "Downloading ${local_filename}"
- fi
-
- # Make file executable if chmodx is set.
- if [ "${chmodx}" == "chmodx" ]; then
- chmod +x "${local_filedir}/${local_filename}"
- fi
-
- # Remove trap.
- trap - INT
-
- break
- fi
- done
- fi
-
- if [ -f "${local_filedir}/${local_filename}" ]; then
- # Execute file if run is set.
- if [ "${run}" == "run" ]; then
- # shellcheck source=/dev/null
- source "${local_filedir}/${local_filename}"
- fi
- fi
-}
-
-fn_bootstrap_fetch_file_github() {
- github_file_url_dir="${1}"
- github_file_url_name="${2}"
- # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork.
- if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
- else
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
- fi
- remote_fileurl_name="GitHub"
- remote_fileurl_backup_name="Bitbucket"
- local_filedir="${3}"
- local_filename="${github_file_url_name}"
- chmodx="${4:-0}"
- run="${5:-0}"
- forcedl="${6:-0}"
- md5="${7:-0}"
- # Passes vars to the file download module.
- fn_bootstrap_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
-}
-
-# Installer menu.
-
-fn_print_center() {
- columns=$(tput cols)
- line="$*"
- printf "%*s\n" $(((${#line} + columns) / 2)) "${line}"
-}
-
-fn_print_horizontal() {
- printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "="
-}
-
-# Bash menu.
-fn_install_menu_bash() {
- local resultvar=$1
- title=$2
- caption=$3
- options=$4
- fn_print_horizontal
- fn_print_center "${title}"
- fn_print_center "${caption}"
- fn_print_horizontal
- menu_options=()
- while read -r line || [[ -n "${line}" ]]; do
- var=$(echo -e "${line}" | awk -F "," '{print $2 " - " $3}')
- menu_options+=("${var}")
- done < "${options}"
- menu_options+=("Cancel")
- select option in "${menu_options[@]}"; do
- if [ "${option}" ] && [ "${option}" != "Cancel" ]; then
- eval "$resultvar=\"${option/%\ */}\""
- fi
- break
- done
-}
-
-# Whiptail/Dialog menu.
-fn_install_menu_whiptail() {
- local menucmd=$1
- local resultvar=$2
- title=$3
- caption=$4
- options=$5
- height=${6:-40}
- width=${7:-80}
- menuheight=${8:-30}
- IFS=","
- menu_options=()
- while read -r line; do
- key=$(echo -e "${line}" | awk -F "," '{print $3}')
- val=$(echo -e "${line}" | awk -F "," '{print $2}')
- menu_options+=("${val//\"/}" "${key//\"/}")
- done < "${options}"
- OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3)
- if [ $? == 0 ]; then
- eval "$resultvar=\"${OPTION}\""
- else
- eval "$resultvar="
- fi
-}
-
-# Menu selector.
-fn_install_menu() {
- local resultvar=$1
- local selection=""
- title=$2
- caption=$3
- options=$4
- # Get menu command.
- for menucmd in whiptail dialog bash; do
- if [ "$(command -v "${menucmd}")" ]; then
- menucmd=$(command -v "${menucmd}")
- break
- fi
- done
- case "$(basename "${menucmd}")" in
- whiptail | dialog)
- fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30
- ;;
- *)
- fn_install_menu_bash selection "${title}" "${caption}" "${options}"
- ;;
- esac
- eval "$resultvar=\"${selection}\""
-}
-
-# Gets server info from serverlist.csv and puts in to array.
-fn_server_info() {
- IFS=","
- server_info_array=($(grep -aw "${userinput}" "${serverlist}"))
- shortname="${server_info_array[0]}" # csgo
- gameservername="${server_info_array[1]}" # csgoserver
- gamename="${server_info_array[2]}" # Counter Strike: Global Offensive
-}
-
-fn_install_getopt() {
- userinput="empty"
- echo -e "Usage: $0 [option]"
- echo -e ""
- echo -e "Installer - Linux Game Server Managers - Version ${version}"
- echo -e "https://linuxgsm.com"
- echo -e ""
- echo -e "Commands"
- echo -e "install\t\t| Select server to install."
- echo -e "servername\t| Enter name of game server to install. e.g $0 csgoserver."
- echo -e "list\t\t| List all servers available for install."
- exit
-}
-
-fn_install_file() {
- local_filename="${gameservername}"
- if [ -e "${local_filename}" ]; then
- i=2
- while [ -e "${local_filename}-${i}" ]; do
- ((i++))
- done
- local_filename="${local_filename}-${i}"
- fi
- cp -R "${selfname}" "${local_filename}"
- sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${local_filename}"
- sed -i -e "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${local_filename}"
- echo -e "Installed ${gamename} server as ${local_filename}"
- echo -e ""
- if [ ! -d "${serverfiles}" ]; then
- echo -e "./${local_filename} install"
- else
- echo -e "Remember to check server ports"
- echo -e "./${local_filename} details"
- fi
- echo -e ""
- exit
-}
-
-# Prevent LinuxGSM from running as root. Except if doing a dependency install.
-if [ "$(whoami)" == "root" ]; then
- if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then
- if [ "${shortname}" == "core" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
- fi
- elif [ ! -f "${modulesdir}/core_modules.sh" ] || [ ! -f "${modulesdir}/check_root.sh" ] || [ ! -f "${modulesdir}/core_messages.sh" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
- else
- core_modules.sh
- check_root.sh
- fi
-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"
- if [ ! -f "${serverlist}" ]; then
- echo -e "[ FAIL ] serverlist.csv could not be loaded."
- exit 1
- fi
-
- if [ "${userinput}" == "list" ] || [ "${userinput}" == "l" ]; then
- {
- tail -n +2 "${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}"
- fn_install_menu result "LinuxGSM" "Select game server to install." "${serverlistmenu}"
- userinput="${result}"
- fn_server_info
- if [ "${result}" == "${gameservername}" ]; then
- fn_install_file
- elif [ "${result}" == "" ]; then
- echo -e "Install canceled"
- else
- echo -e "[ FAIL ] menu result does not match gameservername"
- echo -e "result: ${result}"
- echo -e "gameservername: ${gameservername}"
- fi
- elif [ "${userinput}" ]; then
- fn_server_info
- if [ "${userinput}" == "${gameservername}" ] || [ "${userinput}" == "${gamename}" ] || [ "${userinput}" == "${shortname}" ]; then
- fn_install_file
- else
- echo -e "[ FAIL ] Unknown game server"
- fi
- else
- fn_install_getopt
- fi
-
-# LinuxGSM server mode.
-else
- core_modules.sh
- if [ "${shortname}" != "core-dep" ]; then
- # Load LinuxGSM configs.
- # These are required to get all the default variables for the specific server.
- # 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"
- fi
- if [ ! -f "${configdirserver}/_default.cfg" ]; then
- mkdir -p "${configdirserver}"
- echo -en "copying _default.cfg...\c"
- cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- echo -e "FAIL"
- exit 1
- else
- echo -e "OK"
- fi
- else
- module_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg")
- if [ "${module_file_diff}" != "" ]; then
- fn_print_warn_nl "_default.cfg has been altered. reloading config."
- echo -en "copying _default.cfg...\c"
- cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- echo -e "FAIL"
- exit 1
- else
- echo -e "OK"
- fi
- fi
- fi
- # 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" "nohash"
- # 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.cfg" "${configdirserver}" "secrets-common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nohash"
- # 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" "nohash"
- # 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" "nohash"
- # 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
- 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.
- fn_ansi_loader
- # Prevents running of core_exit.sh for Travis-CI.
- if [ "${travistest}" != "1" ]; then
- getopt=$1
- core_getopt.sh
- fi
-fi
-
-fn_currentstatus_tmux() {
- check_status.sh
- if [ "${status}" != "0" ]; then
- currentstatus="STARTED"
- else
- currentstatus="STOPPED"
- fi
-}
-
-fn_setstatus() {
- fn_currentstatus_tmux
- echo""
- echo -e "Required status: ${requiredstatus}"
- counter=0
- echo -e "Current status: ${currentstatus}"
- while [ "${requiredstatus}" != "${currentstatus}" ]; do
- counter=$((counter + 1))
- fn_currentstatus_tmux
- echo -en "New status: ${currentstatus}\\r"
-
- if [ "${requiredstatus}" == "STARTED" ]; then
- (command_start.sh > /dev/null 2>&1)
- else
- (command_stop.sh > /dev/null 2>&1)
- fi
- if [ "${counter}" -gt "5" ]; then
- currentstatus="FAIL"
- echo -e "Current status: ${currentstatus}"
- echo -e ""
- echo -e "Unable to start or stop server."
- exit 1
- fi
- done
- echo -en "New status: ${currentstatus}\\r"
- echo -e "\n"
- echo -e "Test starting:"
- echo -e ""
-}
-
-# End of every test will expect the result to either pass or fail
-# If the script does not do as intended the whole test will fail
-# if expecting a pass
-fn_test_result_pass() {
- if [ $? != 0 ]; then
- echo -e "================================="
- echo -e "Expected result: PASS"
- echo -e "Actual result: FAIL"
- fn_print_fail_nl "TEST FAILED"
- exitcode=1
- core_exit.sh
- else
- echo -e "================================="
- echo -e "Expected result: PASS"
- echo -e "Actual result: PASS"
- fn_print_ok_nl "TEST PASSED"
- echo -e ""
- fi
-}
-
-# if expecting a fail
-fn_test_result_fail() {
- if [ $? == 0 ]; then
- echo -e "================================="
- echo -e "Expected result: FAIL"
- echo -e "Actual result: PASS"
- fn_print_fail_nl "TEST FAILED"
- exitcode=1
- core_exit.sh
- else
- echo -e "================================="
- echo -e "Expected result: FAIL"
- echo -e "Actual result: FAIL"
- fn_print_ok_nl "TEST PASSED"
- echo -e ""
- fi
-}
-
-# test result n/a
-fn_test_result_na() {
- echo -e "================================="
- echo -e "Expected result: N/A"
- echo -e "Actual result: N/A"
- fn_print_fail_nl "TEST N/A"
-}
-
-sleeptime="0"
-
-echo -e "================================="
-echo -e "Travis CI Tests"
-echo -e "Linux Game Server Manager"
-echo -e "by Daniel Gibbs"
-echo -e "Contributors: http://goo.gl/qLmitD"
-echo -e "https://linuxgsm.com"
-echo -e "================================="
-echo -e ""
-echo -e "================================="
-echo -e "Server Tests"
-echo -e "Using: ${gamename}"
-echo -e "Testing Branch: ${TRAVIS_BRANCH}"
-echo -e "================================="
-echo -e ""
-echo -e "Tests Summary"
-echo -e "================================="
-echo -e "0.0 - Pre-test Tasks"
-echo -e "0.1 - Create log dir's"
-echo -e "0.2 - Enable dev-debug"
-echo -e ""
-echo -e "1.0 - Pre-install tests"
-echo -e "1.1 - start - no files"
-echo -e "1.2 - getopt"
-echo -e "1.3 - getopt with incorrect args"
-echo -e ""
-echo -e "2.0 - Installation"
-echo -e "2.1 - install"
-echo -e ""
-echo -e "3.0 - Start/Stop/Restart Tests"
-echo -e "3.1 - start"
-echo -e "3.2 - start - online"
-echo -e "3.3 - start - updateonstart"
-echo -e "3.4 - stop"
-echo -e "3.5 - stop - offline"
-echo -e "3.6 - restart"
-echo -e "3.7 - restart - offline"
-echo -e ""
-echo -e "4.0 - Update Tests"
-echo -e "4.1 - update"
-echo -e "4.2 - update-lgsm"
-echo -e ""
-echo -e "5.0 - Monitor Tests"
-echo -e "5.1 - monitor - online"
-echo -e "5.2 - monitor - offline - with lockfile"
-echo -e "5.3 - monitor - offline - no lockfile"
-echo -e "5.4 - test-alert"
-echo -e ""
-echo -e "6.0 - Details Tests"
-echo -e "6.1 - details"
-echo -e "6.2 - postdetails"
-echo -e ""
-echo -e "7.0 - Backup Tests"
-echo -e "7.1 - backup"
-echo -e ""
-echo -e "8.0 - Development Tools Tests"
-echo -e "8.1 - dev - detect glibc"
-echo -e "8.2 - dev - detect ldd"
-echo -e "8.3 - dev - detect deps"
-echo -e "8.4 - dev - query-raw"
-echo -e ""
-echo -e "9.0 - Sponsor"
-echo -e "9.1 - sponsor"
-
-echo -e ""
-echo -e "0.0 - Pre-test Tasks"
-echo -e "=================================================================="
-echo -e "Description:"
-echo -e "Create log dir's"
-echo -e ""
-
-echo -e ""
-echo -e "0.1 - Create log dir's"
-echo -e "================================="
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- install_logs.sh
-)
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "0.2 - Enable dev-debug"
-echo -e "================================="
-echo -e "Description:"
-echo -e "Enable dev-debug"
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_debug.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.0 - Pre-install tests"
-echo -e "=================================================================="
-echo -e ""
-
-echo -e "1.1 - start - no files"
-echo -e "================================="
-echo -e "Description:"
-echo -e "test script reaction to missing server files."
-echo -e "Command: ./${gameservername} start"
-echo -e ""
-# Allows for testing not on Travis CI
-if [ -z "${TRAVIS}" ]; then
- (
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
- )
- fn_test_result_fail
-else
- echo -e "Test bypassed"
-fi
-
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.2 - getopt"
-echo -e "================================="
-echo -e "Description:"
-echo -e "displaying options messages."
-echo -e "Command: ./${gameservername}"
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- core_getopt.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.3 - getopt with incorrect args"
-echo -e "================================="
-echo -e "Description:"
-echo -e "displaying options messages."
-echo -e "Command: ./${gameservername} abc123"
-echo -e ""
-getopt="abc123"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- core_getopt.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "2.0 - Installation"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "2.1 - install"
-echo -e "================================="
-echo -e "Description:"
-echo -e "install ${gamename} server."
-echo -e "Command: ./${gameservername} auto-install"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- fn_autoinstall
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.0 - Start/Stop/Restart Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "3.1 - start"
-echo -e "================================="
-echo -e "Description:"
-echo -e "start ${gamename} server."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.2 - start - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "start ${gamename} server while already running."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.3 - start - updateonstart"
-echo -e "================================="
-echo -e "Description:"
-echo -e "will update server on start."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- updateonstart="on"
- command_start.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-echo -e ""
-echo -e "30s Pause"
-echo -e "================================="
-echo -e "Description:"
-echo -e "give time for server to fully start."
-echo -e "Command: sleep 30"
-requiredstatus="STARTED"
-fn_setstatus
-sleep 30
-
-echo -e ""
-echo -e "3.4 - stop"
-echo -e "================================="
-echo -e "Description:"
-echo -e "stop ${gamename} server."
-echo -e "Command: ./${gameservername} stop"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_stop.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.5 - stop - offline"
-echo -e "================================="
-echo -e "Description:"
-echo -e "stop ${gamename} server while already stopped."
-echo -e "Command: ./${gameservername} stop"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_stop.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.6 - restart"
-echo -e "================================="
-echo -e "Description:"
-echo -e "restart ${gamename}."
-echo -e "Command: ./${gameservername} restart"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_restart.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.7 - restart - offline"
-echo -e "================================="
-echo -e "Description:"
-echo -e "restart ${gamename} while already stopped."
-echo -e "Command: ./${gameservername} restart"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_restart.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.0 - Update Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "4.1 - update"
-echo -e "================================="
-echo -e "Description:"
-echo -e "check for updates."
-echo -e "Command: ./${gameservername} update"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.2 - update-lgsm"
-echo -e "================================="
-echo -e "Description:"
-echo -e "update LinuxGSM."
-echo -e ""
-echo -e "Command: ./jc2server update-lgam"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update_linuxgsm.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "Inserting IP address"
-echo -e "================================="
-echo -e "Description:"
-echo -e "Inserting Travis IP in to config."
-echo -e "Allows monitor to work"
-if [ "$(${ipcommand}-o -4 addr | grep eth0)" ]; then
- travisip=$(${ipcommand}-o -4 addr | grep eth0 | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | grep -v 127.0.0)
-else
- travisip=$(${ipcommand}-o -4 addr | grep ens | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | sort -u | grep -v 127.0.0)
-fi
-sed -i "/server-ip=/c\server-ip=${travisip}" "${serverfiles}/server.properties"
-echo -e "IP: ${travisip}"
-
-echo -e ""
-echo -e "5.0 - Monitor Tests"
-echo -e "=================================================================="
-echo -e ""
-info_game.sh
-echo -e "Server IP - Port: ${ip}:${port}"
-echo -e "Server IP - Query Port: ${ip}:${queryport}"
-
-echo -e ""
-echo -e "30s Pause"
-echo -e "================================="
-echo -e "Description:"
-echo -e "give time for server to fully start."
-echo -e "Command: sleep 30"
-requiredstatus="STARTED"
-fn_setstatus
-sleep 30
-
-echo -e ""
-echo -e "5.1 - monitor - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor server while already running."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.2 - monitor - offline - with lockfile"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with lockfile."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STOPPED"
-fn_setstatus
-fn_print_info_nl "creating lockfile."
-date '+%s' > "${lockdir}/${selfname}.lock"
-echo "${version}" >> "${lockdir}/${selfname}.lock"
-echo "${port}" >> "${lockdir}/${selfname}.lock"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.3 - monitor - offline - no lockfile"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with no lockfile."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.4 - test-alert"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with no lockfile."
-echo -e "Command: ./${gameservername} test-alert"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_test_alert.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "6.0 - Details Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "6.1 - details"
-echo -e "================================="
-echo -e "Description:"
-echo -e "display details."
-echo -e "Command: ./${gameservername} details"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_details.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "6.2 - postdetails"
-echo -e "================================="
-echo -e "Description:"
-echo -e "post details."
-echo -e "Command: ./${gameservername} postdetails"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_postdetails.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "7.0 - Backup Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "7.1 - backup"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run a backup."
-echo -e "Command: ./${gameservername} backup"
-requiredstatus="STARTED"
-fn_setstatus
-echo -e "test de-activated until issue #1839 fixed"
-#(command_backup.sh)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.0 - Development Tools Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "8.1 - dev - detect glibc"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect glibc."
-echo -e "Command: ./${gameservername} detect-glibc"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_glibc.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.2 - dev - detect ldd"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect ldd."
-echo -e "Command: ./${gameservername} detect-ldd"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_ldd.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.3 - dev - detect deps"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect dependencies."
-echo -e "Command: ./${gameservername} detect-deps"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_deps.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "Inserting IP address"
-echo -e "================================="
-echo -e "Description:"
-echo -e "Inserting Travis IP in to config."
-echo -e "Allows monitor to work"
-if [ "$(${ipcommand}-o -4 addr | grep eth0)" ]; then
- travisip=$(${ipcommand}-o -4 addr | grep eth0 | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | grep -v 127.0.0)
-else
- travisip=$(${ipcommand}-o -4 addr | grep ens | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | sort -u | grep -v 127.0.0)
-fi
-sed -i "/server-ip=/c\server-ip=${travisip}" "${serverfiles}/server.properties"
-echo -e "IP: ${travisip}"
-
-echo -e ""
-echo -e "8.4 - dev - query-raw"
-echo -e "================================="
-echo -e "Description:"
-echo -e "raw query output."
-echo -e "Command: ./${gameservername} query-raw"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_query_raw.sh
-)
-fn_test_result_na
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "9.0 - Sponsor"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "9.1 - sponsor"
-echo -e "================================="
-echo -e "Description:"
-echo -e "sponsor."
-echo -e "Command: ./${gameservername} sponsor"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_sponsor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "================================="
-echo -e "Server Tests - Complete!"
-echo -e "Using: ${gamename}"
-echo -e "================================="
-requiredstatus="STOPPED"
-fn_setstatus
-
-core_exit.sh
diff --git a/tests/tests_ts3server.sh b/tests/tests_ts3server.sh
deleted file mode 100644
index 3fcb8ae24..000000000
--- a/tests/tests_ts3server.sh
+++ /dev/null
@@ -1,1184 +0,0 @@
-#!/bin/bash
-# Project: Game Server Managers - LinuxGSM
-# Author: Daniel Gibbs
-# License: MIT License, Copyright (c) 2020 Daniel Gibbs
-# Purpose: Travis CI Tests: Teamspeak 3 | Linux Game Server Management Script
-# Contributors: https://linuxgsm.com/contrib
-# Documentation: https://docs.linuxgsm.com
-# Website: https://linuxgsm.com
-
-# DO NOT EDIT THIS FILE
-# LinuxGSM configuration is no longer edited here
-# To update your LinuxGSM config go to:
-# lgsm/config-lgsm
-# https://docs.linuxgsm.com/configuration/linuxgsm-config
-
-# Debugging
-if [ -f ".dev-debug" ]; then
- exec 5> dev-debug.log
- BASH_XTRACEFD="5"
- set -x
-fi
-
-version="v23.5.3"
-shortname="ts3"
-gameservername="ts3server"
-commandname="CORE"
-rootdir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
-selfname=$(basename "$(readlink -f "${BASH_SOURCE[0]}")")
-sessionname=$(echo "${selfname}" | cut -f1 -d".")
-lgsmdir="${rootdir}/lgsm"
-logdir="${rootdir}/log"
-lgsmlogdir="${logdir}/lgsm"
-steamcmddir="${HOME}/.steam/steamcmd"
-serverfiles="${rootdir}/serverfiles"
-modulesdir="${lgsmdir}/modules"
-tmpdir="${lgsmdir}/tmp"
-datadir="${lgsmdir}/data"
-lockdir="${lgsmdir}/lock"
-serverlist="${datadir}/serverlist.csv"
-serverlistmenu="${datadir}/serverlistmenu.csv"
-configdir="${lgsmdir}/config-lgsm"
-configdirserver="${configdir}/${gameservername}"
-configdirdefault="${lgsmdir}/config-default"
-userinput="${1}"
-
-# Allows for testing not on Travis CI.
-# if using travis for tests
-if [ -z "${TRAVIS}" ]; then
- TRAVIS_BRANCH="develop"
- TRAVIS_BUILD_DIR="${rootdir}"
-fi
-travistest="1"
-
-## GitHub Branch Select
-# Allows for the use of different module files
-# from a different repo and/or branch.
-githubuser="GameServerManagers"
-githubrepo="LinuxGSM"
-githubbranch="${TRAVIS_BRANCH}"
-
-# Core module that is required first.
-core_modules.sh() {
- modulefile="${FUNCNAME[0]}"
- fn_bootstrap_fetch_file_github "lgsm/modules" "core_modules.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash"
-}
-
-# Bootstrap
-# Fetches the core modules required before passed off to core_dl.sh.
-fn_bootstrap_fetch_file() {
- 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}"
- # Download file if missing or download forced.
- if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then
- # If backup fileurl exists include it.
- if [ -n "${remote_fileurl_backup}" ]; then
- # counter set to 0 to allow second try
- counter=0
- remote_fileurls_array=(remote_fileurl remote_fileurl_backup)
- else
- # counter set to 1 to not allow second try
- counter=1
- remote_fileurls_array=(remote_fileurl)
- fi
-
- for remote_fileurl_array in "${remote_fileurls_array[@]}"; do
- if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then
- fileurl="${remote_fileurl}"
- fileurl_name="${remote_fileurl_name}"
- elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then
- fileurl="${remote_fileurl_backup}"
- fileurl_name="${remote_fileurl_backup_name}"
- fi
- counter=$((counter + 1))
- if [ ! -d "${local_filedir}" ]; then
- mkdir -p "${local_filedir}"
- fi
- # Trap will remove part downloaded files if canceled.
- trap fn_fetch_trap INT
- # Larger files show a progress bar.
-
- echo -en "fetching ${fileurl_name} ${local_filename}...\c"
- curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1)
-
- local exitcode=$?
- # Download will fail if downloads a html file.
- if [ -f "${local_filedir}/${local_filename}" ]; then
- if [ -n "$(head "${local_filedir}/${local_filename}" | grep "DOCTYPE")" ]; then
- rm -f "${local_filedir:?}/${local_filename:?}"
- local exitcode=2
- fi
- fi
-
- # On first try will error. On second try will fail.
- if [ "${exitcode}" != 0 ]; then
- if [ ${counter} -ge 2 ]; then
- echo -e "FAIL"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_fail "Downloading ${local_filename}"
- fn_script_log_fail "${fileurl}"
- fi
- core_exit.sh
- else
- echo -e "ERROR"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_error "Downloading ${local_filename}"
- fn_script_log_error "${fileurl}"
- fi
- fi
-
- else
- echo -en "OK"
- sleep 0.3
- echo -en "\033[2K\\r"
- if [ -f "${lgsmlog}" ]; then
- fn_script_log_pass "Downloading ${local_filename}"
- fi
-
- # Make file executable if chmodx is set.
- if [ "${chmodx}" == "chmodx" ]; then
- chmod +x "${local_filedir}/${local_filename}"
- fi
-
- # Remove trap.
- trap - INT
-
- break
- fi
- done
- fi
-
- if [ -f "${local_filedir}/${local_filename}" ]; then
- # Execute file if run is set.
- if [ "${run}" == "run" ]; then
- # shellcheck source=/dev/null
- source "${local_filedir}/${local_filename}"
- fi
- fi
-}
-
-fn_bootstrap_fetch_file_github() {
- github_file_url_dir="${1}"
- github_file_url_name="${2}"
- # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork.
- if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
- else
- remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
- remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
- fi
- remote_fileurl_name="GitHub"
- remote_fileurl_backup_name="Bitbucket"
- local_filedir="${3}"
- local_filename="${github_file_url_name}"
- chmodx="${4:-0}"
- run="${5:-0}"
- forcedl="${6:-0}"
- md5="${7:-0}"
- # Passes vars to the file download module.
- fn_bootstrap_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
-}
-
-# Installer menu.
-
-fn_print_center() {
- columns=$(tput cols)
- line="$*"
- printf "%*s\n" $(((${#line} + columns) / 2)) "${line}"
-}
-
-fn_print_horizontal() {
- printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "="
-}
-
-# Bash menu.
-fn_install_menu_bash() {
- local resultvar=$1
- title=$2
- caption=$3
- options=$4
- fn_print_horizontal
- fn_print_center "${title}"
- fn_print_center "${caption}"
- fn_print_horizontal
- menu_options=()
- while read -r line || [[ -n "${line}" ]]; do
- var=$(echo -e "${line}" | awk -F "," '{print $2 " - " $3}')
- menu_options+=("${var}")
- done < "${options}"
- menu_options+=("Cancel")
- select option in "${menu_options[@]}"; do
- if [ "${option}" ] && [ "${option}" != "Cancel" ]; then
- eval "$resultvar=\"${option/%\ */}\""
- fi
- break
- done
-}
-
-# Whiptail/Dialog menu.
-fn_install_menu_whiptail() {
- local menucmd=$1
- local resultvar=$2
- title=$3
- caption=$4
- options=$5
- height=${6:-40}
- width=${7:-80}
- menuheight=${8:-30}
- IFS=","
- menu_options=()
- while read -r line; do
- key=$(echo -e "${line}" | awk -F "," '{print $3}')
- val=$(echo -e "${line}" | awk -F "," '{print $2}')
- menu_options+=("${val//\"/}" "${key//\"/}")
- done < "${options}"
- OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3)
- if [ $? == 0 ]; then
- eval "$resultvar=\"${OPTION}\""
- else
- eval "$resultvar="
- fi
-}
-
-# Menu selector.
-fn_install_menu() {
- local resultvar=$1
- local selection=""
- title=$2
- caption=$3
- options=$4
- # Get menu command.
- for menucmd in whiptail dialog bash; do
- if [ "$(command -v "${menucmd}")" ]; then
- menucmd=$(command -v "${menucmd}")
- break
- fi
- done
- case "$(basename "${menucmd}")" in
- whiptail | dialog)
- fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30
- ;;
- *)
- fn_install_menu_bash selection "${title}" "${caption}" "${options}"
- ;;
- esac
- eval "$resultvar=\"${selection}\""
-}
-
-# Gets server info from serverlist.csv and puts in to array.
-fn_server_info() {
- IFS=","
- server_info_array=($(grep -aw "${userinput}" "${serverlist}"))
- shortname="${server_info_array[0]}" # csgo
- gameservername="${server_info_array[1]}" # csgoserver
- gamename="${server_info_array[2]}" # Counter Strike: Global Offensive
-}
-
-fn_install_getopt() {
- userinput="empty"
- echo -e "Usage: $0 [option]"
- echo -e ""
- echo -e "Installer - Linux Game Server Managers - Version ${version}"
- echo -e "https://linuxgsm.com"
- echo -e ""
- echo -e "Commands"
- echo -e "install\t\t| Select server to install."
- echo -e "servername\t| Enter name of game server to install. e.g $0 csgoserver."
- echo -e "list\t\t| List all servers available for install."
- exit
-}
-
-fn_install_file() {
- local_filename="${gameservername}"
- if [ -e "${local_filename}" ]; then
- i=2
- while [ -e "${local_filename}-${i}" ]; do
- ((i++))
- done
- local_filename="${local_filename}-${i}"
- fi
- cp -R "${selfname}" "${local_filename}"
- sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${local_filename}"
- sed -i -e "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${local_filename}"
- echo -e "Installed ${gamename} server as ${local_filename}"
- echo -e ""
- if [ ! -d "${serverfiles}" ]; then
- echo -e "./${local_filename} install"
- else
- echo -e "Remember to check server ports"
- echo -e "./${local_filename} details"
- fi
- echo -e ""
- exit
-}
-
-# Prevent LinuxGSM from running as root. Except if doing a dependency install.
-if [ "$(whoami)" == "root" ]; then
- if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then
- if [ "${shortname}" == "core" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
- fi
- elif [ ! -f "${modulesdir}/core_modules.sh" ] || [ ! -f "${modulesdir}/check_root.sh" ] || [ ! -f "${modulesdir}/core_messages.sh" ]; then
- echo -e "[ FAIL ] Do NOT run this script as root!"
- exit 1
- else
- core_modules.sh
- check_root.sh
- fi
-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"
- if [ ! -f "${serverlist}" ]; then
- echo -e "[ FAIL ] serverlist.csv could not be loaded."
- exit 1
- fi
-
- if [ "${userinput}" == "list" ] || [ "${userinput}" == "l" ]; then
- {
- tail -n +2 "${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}"
- fn_install_menu result "LinuxGSM" "Select game server to install." "${serverlistmenu}"
- userinput="${result}"
- fn_server_info
- if [ "${result}" == "${gameservername}" ]; then
- fn_install_file
- elif [ "${result}" == "" ]; then
- echo -e "Install canceled"
- else
- echo -e "[ FAIL ] menu result does not match gameservername"
- echo -e "result: ${result}"
- echo -e "gameservername: ${gameservername}"
- fi
- elif [ "${userinput}" ]; then
- fn_server_info
- if [ "${userinput}" == "${gameservername}" ] || [ "${userinput}" == "${gamename}" ] || [ "${userinput}" == "${shortname}" ]; then
- fn_install_file
- else
- echo -e "[ FAIL ] Unknown game server"
- fi
- else
- fn_install_getopt
- fi
-
-# LinuxGSM server mode.
-else
- core_modules.sh
- if [ "${shortname}" != "core-dep" ]; then
- # Load LinuxGSM configs.
- # These are required to get all the default variables for the specific server.
- # 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"
- fi
- if [ ! -f "${configdirserver}/_default.cfg" ]; then
- mkdir -p "${configdirserver}"
- echo -en "copying _default.cfg...\c"
- cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- echo -e "FAIL"
- exit 1
- else
- echo -e "OK"
- fi
- else
- module_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg")
- if [ "${module_file_diff}" != "" ]; then
- fn_print_warn_nl "_default.cfg has been altered. reloading config."
- echo -en "copying _default.cfg...\c"
- cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
- exitcode=$?
- if [ "${exitcode}" != 0 ]; then
- echo -e "FAIL"
- exit 1
- else
- echo -e "OK"
- fi
- fi
- fi
- # 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" "nohash"
- # 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" "nohash"
- # 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" "nohash"
- # 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" "nohash"
- # 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
- 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.
- fn_ansi_loader
- # Prevents running of core_exit.sh for Travis-CI.
- if [ "${travistest}" != "1" ]; then
- getopt=$1
- core_getopt.sh
- fi
-fi
-
-fn_currentstatus_tmux() {
- check_status.sh
- if [ "${status}" != "0" ]; then
- currentstatus="STARTED"
- else
- currentstatus="STOPPED"
- fi
-}
-
-fn_setstatus() {
- fn_currentstatus_tmux
- echo""
- echo -e "Required status: ${requiredstatus}"
- counter=0
- echo -e "Current status: ${currentstatus}"
- while [ "${requiredstatus}" != "${currentstatus}" ]; do
- counter=$((counter + 1))
- fn_currentstatus_tmux
- echo -en "New status: ${currentstatus}\\r"
-
- if [ "${requiredstatus}" == "STARTED" ]; then
- (command_start.sh > /dev/null 2>&1)
- else
- (command_stop.sh > /dev/null 2>&1)
- fi
- if [ "${counter}" -gt "5" ]; then
- currentstatus="FAIL"
- echo -e "Current status: ${currentstatus}"
- echo -e ""
- echo -e "Unable to start or stop server."
- exit 1
- fi
- done
- echo -en "New status: ${currentstatus}\\r"
- echo -e "\n"
- echo -e "Test starting:"
- echo -e ""
-}
-
-# End of every test will expect the result to either pass or fail
-# If the script does not do as intended the whole test will fail
-# if expecting a pass
-fn_test_result_pass() {
- if [ $? != 0 ]; then
- echo -e "================================="
- echo -e "Expected result: PASS"
- echo -e "Actual result: FAIL"
- fn_print_fail_nl "TEST FAILED"
- exitcode=1
- core_exit.sh
- else
- echo -e "================================="
- echo -e "Expected result: PASS"
- echo -e "Actual result: PASS"
- fn_print_ok_nl "TEST PASSED"
- echo -e ""
- fi
-}
-
-# if expecting a fail
-fn_test_result_fail() {
- if [ $? == 0 ]; then
- echo -e "================================="
- echo -e "Expected result: FAIL"
- echo -e "Actual result: PASS"
- fn_print_fail_nl "TEST FAILED"
- exitcode=1
- core_exit.sh
- else
- echo -e "================================="
- echo -e "Expected result: FAIL"
- echo -e "Actual result: FAIL"
- fn_print_ok_nl "TEST PASSED"
- echo -e ""
- fi
-}
-
-# test result n/a
-fn_test_result_na() {
- echo -e "================================="
- echo -e "Expected result: N/A"
- echo -e "Actual result: N/A"
- fn_print_fail_nl "TEST N/A"
-}
-
-sleeptime="0"
-
-echo -e "================================="
-echo -e "Travis CI Tests"
-echo -e "Linux Game Server Manager"
-echo -e "by Daniel Gibbs"
-echo -e "Contributors: http://goo.gl/qLmitD"
-echo -e "https://linuxgsm.com"
-echo -e "================================="
-echo -e ""
-echo -e "================================="
-echo -e "Server Tests"
-echo -e "Using: ${gamename}"
-echo -e "Testing Branch: ${TRAVIS_BRANCH}"
-echo -e "================================="
-
-echo -e ""
-echo -e "Tests Summary"
-echo -e "================================="
-echo -e "0.0 - Pre-test Tasks"
-echo -e "0.1 - Create log dir's"
-echo -e "0.2 - Enable dev-debug"
-echo -e ""
-echo -e "1.0 - Pre-install tests"
-echo -e "1.1 - start - no files"
-echo -e "1.2 - getopt"
-echo -e "1.3 - getopt with incorrect args"
-echo -e ""
-echo -e "2.0 - Installation"
-echo -e "2.1 - install"
-echo -e ""
-echo -e "3.0 - Start/Stop/Restart Tests"
-echo -e "3.1 - start"
-echo -e "3.2 - start - online"
-echo -e "3.3 - start - updateonstart"
-echo -e "3.4 - stop"
-echo -e "3.5 - stop - offline"
-echo -e "3.6 - restart"
-echo -e "3.7 - restart - offline"
-echo -e ""
-echo -e "4.0 - Update Tests"
-echo -e "4.1 - update"
-echo -e "4.2 - update-lgsm"
-echo -e ""
-echo -e "5.0 - Monitor Tests"
-echo -e "5.1 - monitor - online"
-echo -e "5.2 - monitor - offline - with lockfile"
-echo -e "5.3 - monitor - offline - no lockfile"
-echo -e "5.4 - test-alert"
-echo -e ""
-echo -e "6.0 - Details Tests"
-echo -e "6.1 - details"
-echo -e "6.2 - postdetails"
-echo -e ""
-echo -e "7.0 - Backup Tests"
-echo -e "7.1 - backup"
-echo -e ""
-echo -e "8.0 - Development Tools Tests"
-echo -e "8.1 - dev - detect glibc"
-echo -e "8.2 - dev - detect ldd"
-echo -e "8.3 - dev - detect deps"
-echo -e "8.4 - dev - query-raw"
-echo -e ""
-echo -e "9.0 - Sponsor"
-echo -e "9.1 - sponsor"
-echo -e ""
-echo -e "0.0 - Pre-test Tasks"
-echo -e "=================================================================="
-echo -e "Description:"
-echo -e "Create log dir's"
-echo -e ""
-
-echo -e ""
-echo -e "0.1 - Create log dir's"
-echo -e "================================="
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- install_logs.sh
-)
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "0.2 - Enable dev-debug"
-echo -e "================================="
-echo -e "Description:"
-echo -e "Enable dev-debug"
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_debug.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.0 - Pre-install tests"
-echo -e "=================================================================="
-echo -e ""
-
-echo -e "1.1 - start - no files"
-echo -e "================================="
-echo -e "Description:"
-echo -e "test script reaction to missing server files."
-echo -e "Command: ./${gameservername} start"
-echo -e ""
-# Allows for testing not on Travis CI
-if [ -z "${TRAVIS}" ]; then
- (
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
- )
- fn_test_result_fail
-else
- echo -e "Test bypassed"
-fi
-
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.2 - getopt"
-echo -e "================================="
-echo -e "Description:"
-echo -e "displaying options messages."
-echo -e "Command: ./${gameservername}"
-echo -e ""
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- core_getopt.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "1.3 - getopt with incorrect args"
-echo -e "================================="
-echo -e "Description:"
-echo -e "displaying options messages."
-echo -e "Command: ./${gameservername} abc123"
-echo -e ""
-getopt="abc123"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- core_getopt.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "2.0 - Installation"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "2.1 - install"
-echo -e "================================="
-echo -e "Description:"
-echo -e "install ${gamename} server."
-echo -e "Command: ./${gameservername} auto-install"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- fn_autoinstall
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.0 - Start/Stop/Restart Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "3.1 - start"
-echo -e "================================="
-echo -e "Description:"
-echo -e "start ${gamename} server."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.2 - start - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "start ${gamename} server while already running."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_start.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.3 - start - updateonstart"
-echo -e "================================="
-echo -e "Description:"
-echo -e "will update server on start."
-echo -e "Command: ./${gameservername} start"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- updateonstart="on"
- command_start.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.4 - stop"
-echo -e "================================="
-echo -e "Description:"
-echo -e "stop ${gamename} server."
-echo -e "Command: ./${gameservername} stop"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_stop.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.5 - stop - offline"
-echo -e "================================="
-echo -e "Description:"
-echo -e "stop ${gamename} server while already stopped."
-echo -e "Command: ./${gameservername} stop"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_stop.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.6 - restart"
-echo -e "================================="
-echo -e "Description:"
-echo -e "restart ${gamename}."
-echo -e "Command: ./${gameservername} restart"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_restart.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "3.7 - restart - offline"
-echo -e "================================="
-echo -e "Description:"
-echo -e "restart ${gamename} while already stopped."
-echo -e "Command: ./${gameservername} restart"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_restart.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.0 - Update Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "4.1 - update"
-echo -e "================================="
-echo -e "Description:"
-echo -e "check for updates."
-echo -e "Command: ./${gameservername} update"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "4.2 - update-lgsm"
-echo -e "================================="
-echo -e "Description:"
-echo -e "update LinuxGSM."
-echo -e ""
-echo -e "Command: ./jc2server update-lgam"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_update_linuxgsm.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.0 - Monitor Tests"
-echo -e "=================================================================="
-echo -e ""
-info_game.sh
-echo -e "Server IP - Port: ${ip}:${port}"
-echo -e "Server IP - Query Port: ${ip}:${queryport}"
-
-echo -e ""
-echo -e "5.1 - monitor - online"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor server while already running."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.2 - monitor - offline - with lockfile"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with lockfile."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STOPPED"
-fn_setstatus
-fn_print_info_nl "creating lockfile."
-date '+%s' > "${lockdir}/${selfname}.lock"
-echo "${version}" >> "${lockdir}/${selfname}.lock"
-echo "${port}" >> "${lockdir}/${selfname}.lock"
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.3 - monitor - offline - no lockfile"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with no lockfile."
-echo -e "Command: ./${gameservername} monitor"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_monitor.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "5.4 - test-alert"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run monitor while server is offline with no lockfile."
-echo -e "Command: ./${gameservername} test-alert"
-requiredstatus="STOPPED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_test_alert.sh
-)
-fn_test_result_fail
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "6.0 - Details Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "6.1 - details"
-echo -e "================================="
-echo -e "Description:"
-echo -e "display details."
-echo -e "Command: ./${gameservername} details"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_details.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "6.2 - postdetails"
-echo -e "================================="
-echo -e "Description:"
-echo -e "post details."
-echo -e "Command: ./${gameservername} postdetails"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_postdetails.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "7.0 - Backup Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "7.1 - backup"
-echo -e "================================="
-echo -e "Description:"
-echo -e "run a backup."
-echo -e "Command: ./${gameservername} backup"
-requiredstatus="STARTED"
-fn_setstatus
-echo -e "test de-activated until issue #1839 fixed"
-#(command_backup.sh)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.0 - Development Tools Tests"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "8.1 - dev - detect glibc"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect glibc."
-echo -e "Command: ./${gameservername} detect-glibc"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_glibc.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.2 - dev - detect ldd"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect ldd."
-echo -e "Command: ./${gameservername} detect-ldd"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_ldd.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.3 - dev - detect deps"
-echo -e "================================="
-echo -e "Description:"
-echo -e "detect dependencies."
-echo -e "Command: ./${gameservername} detect-deps"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_detect_deps.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "8.4 - dev - query-raw"
-echo -e "================================="
-echo -e "Description:"
-echo -e "raw query output."
-echo -e "Command: ./${gameservername} query-raw"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_dev_query_raw.sh
-)
-fn_test_result_na
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "9.0 - Sponsor"
-echo -e "=================================================================="
-
-echo -e ""
-echo -e "9.1 - sponsor"
-echo -e "================================="
-echo -e "Description:"
-echo -e "sponsor."
-echo -e "Command: ./${gameservername} sponsor"
-requiredstatus="STARTED"
-fn_setstatus
-(
- exec 5> "${TRAVIS_BUILD_DIR}/dev-debug.log"
- BASH_XTRACEFD="5"
- set -x
- command_sponsor.sh
-)
-fn_test_result_pass
-echo -e "run order"
-echo -e "================="
-grep modulefile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/modulefile=//g'
-
-echo -e ""
-echo -e "================================="
-echo -e "Server Tests - Complete!"
-echo -e "Using: ${gamename}"
-echo -e "================================="
-requiredstatus="STOPPED"
-fn_setstatus
-
-core_exit.sh