diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 2b339d122..e9f2d000b 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -30,17 +30,13 @@ body:
label: Linux distro
multiple: true
options:
+ - Ubuntu 24.04
- Ubuntu 22.04
- Ubuntu 20.04
- - Ubuntu 18.04
- - Ubuntu 16.04
- Debian 12
- Debian 11
- - Debian 10
- - Debian 9
- RedHat 9
- RedHat 8
- - RedHat 7
- Other
validations:
required: true
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
index 45aced3d1..f1a8ccaf6 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.yml
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -30,17 +30,13 @@ body:
label: Linux distro
multiple: true
options:
+ - Ubuntu 24.04
- Ubuntu 22.04
- Ubuntu 20.04
- - Ubuntu 18.04
- - Ubuntu 16.04
- Debian 12
- Debian 11
- - Debian 10
- - Debian 9
- RedHat 9
- RedHat 8
- - RedHat 7
- Other
validations:
required: false
diff --git a/.github/workflows/add-to-project.yml b/.github/workflows/add-to-project.yml
index fb092b649..e0b06990f 100644
--- a/.github/workflows/add-to-project.yml
+++ b/.github/workflows/add-to-project.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Add to Project
- uses: actions/add-to-project@v1.0.1
+ uses: actions/add-to-project@v1.0.2
with:
project-url: https://github.com/orgs/GameServerManagers/projects/11
github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
diff --git a/lgsm/config-default/config-lgsm/kfserver/_default.cfg b/lgsm/config-default/config-lgsm/kfserver/_default.cfg
index d9df57d3e..222ba9979 100644
--- a/lgsm/config-default/config-lgsm/kfserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/kfserver/_default.cfg
@@ -146,7 +146,7 @@ stopmode="2"
# 4: gsquery
# 5: tcp
querymode="2"
-querytype="protocol-unreal2"
+querytype="protocol-valve"
## Console type
consoleverbose="yes"
diff --git a/lgsm/config-default/config-lgsm/roserver/_default.cfg b/lgsm/config-default/config-lgsm/roserver/_default.cfg
index c000f6181..0af49a0d4 100644
--- a/lgsm/config-default/config-lgsm/roserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/roserver/_default.cfg
@@ -142,7 +142,7 @@ stopmode="2"
# 4: gsquery
# 5: tcp
querymode="2"
-querytype="protocol-unreal2"
+querytype="protocol-valve"
## Console type
consoleverbose="yes"
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/tfserver/_default.cfg b/lgsm/config-default/config-lgsm/tfserver/_default.cfg
index c6d9842b3..fbce96a44 100644
--- a/lgsm/config-default/config-lgsm/tfserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/tfserver/_default.cfg
@@ -25,7 +25,7 @@ greenhand="true"
maxplayers="40"
maxqueuesize="50"
queuevalidtime="120"
-saveinterval="300"
+saveinterval="300" # Auto-save in seconds.
serveradmins="" # Use 17-digit Steam IDs separated by commas to grant admin privileges to players.
servername="LinuxGSM"
serverpassword=""
diff --git a/lgsm/config-default/config-lgsm/ut3server/_default.cfg b/lgsm/config-default/config-lgsm/ut3server/_default.cfg
index 1088d1f0c..22817e40c 100644
--- a/lgsm/config-default/config-lgsm/ut3server/_default.cfg
+++ b/lgsm/config-default/config-lgsm/ut3server/_default.cfg
@@ -22,8 +22,8 @@ usesstats="false"
shouldadvertise="true"
pureserver="1"
allowjoininprogress="true"
-# Required: GameSpy Username and password
-# https://docs.linuxgsm.com/game-servers/unreal-tournament-3#server-gamespy-login
+# Required: OpenSpy Username and password
+# https://docs.linuxgsm.com/game-servers/unreal-tournament-3#server-openspy-login
gsusername=""
gspassword=""
diff --git a/lgsm/config-default/config-lgsm/vhserver/_default.cfg b/lgsm/config-default/config-lgsm/vhserver/_default.cfg
index 355c70824..b027d0fca 100644
--- a/lgsm/config-default/config-lgsm/vhserver/_default.cfg
+++ b/lgsm/config-default/config-lgsm/vhserver/_default.cfg
@@ -10,20 +10,17 @@
## 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 (empty)
-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
@@ -53,7 +50,7 @@ crossplay=""
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}' -saveinterval ${saveinterval} -backups ${backups} -backupshort ${backupshort} -backuplong ${backuplong}${logFile:+ -logFile '${logFile}'}${crossplay:+ -crossplay}${worldmodifiers:+ ${worldmodifiers}}"
+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 ####
diff --git a/lgsm/config-default/config-lgsm/xntserver/_default.cfg b/lgsm/config-default/config-lgsm/xntserver/_default.cfg
new file mode 100644
index 000000000..402e6188f
--- /dev/null
+++ b/lgsm/config-default/config-lgsm/xntserver/_default.cfg
@@ -0,0 +1,171 @@
+##################################
+######## Default Settings ########
+##################################
+# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN!
+# Copy settings from here and use them in either:
+# common.cfg - applies settings to every instance.
+# [instance].cfg - applies settings to a specific instance.
+
+#### Game Server Settings ####
+
+## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
+
+## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+startparameters="-userdir ${systemdir}/${selfname}"
+
+#### 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=""
+
+## Backup | https://docs.linuxgsm.com/commands/backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
+
+## Logging | https://docs.linuxgsm.com/features/logging
+consolelogging="on"
+logdays="7"
+
+## Monitor | https://docs.linuxgsm.com/commands/monitor
+# Query delay time
+querydelay="1"
+
+## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
+ansi="on"
+
+#### Advanced Settings ####
+
+## Message Display Time | https://docs.linuxgsm.com/features/message-display-time
+sleeptime="0.5"
+
+## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
+# 1: tmux kill
+# 2: CTRL+c
+# 3: quit
+# 4: quit 120s
+# 5: stop
+# 6: q
+# 7: exit
+# 8: 7 Days to Die
+# 9: GoldSrc
+# 10: Avorion
+# 11: end
+stopmode="2"
+
+## Query mode
+# 1: session only
+# 2: gamedig (gsquery fallback)
+# 3: gamedig
+# 4: gsquery
+# 5: tcp
+querymode="3"
+querytype="xonotic"
+
+## Console type
+consoleverbose="yes"
+consoleinteract="yes"
+
+## Game Server Details
+# Do not edit
+gamename="Xonotic"
+engine="unreal3"
+glibc="2.29"
+
+#### Directories ####
+# Edit with care
+
+## Game Server Directories
+systemdir="${serverfiles}"
+executabledir="${systemdir}"
+executable="./xonotic-linux64-dedicated"
+servercfgdir="${systemdir}/${selfname}/data"
+servercfg="server.cfg"
+servercfgdefault="${systemdir}/server.cfg"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+
+## Backup Directory
+backupdir="${lgsmdir}/backup"
+
+## Logging Directories
+[ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || logdir="${rootdir}/log"
+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"
+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"
+gamelogdate="${gamelogdir}/${selfname}-game-$(date '+%Y-%m-%d-%H:%M:%S').log"
+
+## Log Parameters
+logtimestamp="off"
+logtimestampformat="%Y-%m-%d %H:%M:%S"
diff --git a/lgsm/data/almalinux-8.csv b/lgsm/data/almalinux-8.csv
index 4d6c05ca5..d4d2456bd 100644
--- a/lgsm/data/almalinux-8.csv
+++ b/lgsm/data/almalinux-8.csv
@@ -69,7 +69,6 @@ mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-21-openjdk
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/almalinux-9.csv b/lgsm/data/almalinux-9.csv
index 2cdd36575..7dae6338e 100644
--- a/lgsm/data/almalinux-9.csv
+++ b/lgsm/data/almalinux-9.csv
@@ -69,7 +69,6 @@ mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-21-openjdk
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/centos-7.csv b/lgsm/data/centos-7.csv
index df7422526..266b358ba 100644
--- a/lgsm/data/centos-7.csv
+++ b/lgsm/data/centos-7.csv
@@ -69,7 +69,6 @@ mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,java-11-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/centos-8.csv b/lgsm/data/centos-8.csv
index 831bc38e9..bd5b72c33 100644
--- a/lgsm/data/centos-8.csv
+++ b/lgsm/data/centos-8.csv
@@ -69,7 +69,6 @@ mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,java-17-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/centos-9.csv b/lgsm/data/centos-9.csv
index 4d49ee66e..893f3698c 100644
--- a/lgsm/data/centos-9.csv
+++ b/lgsm/data/centos-9.csv
@@ -69,7 +69,6 @@ mc,java-17-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,java-17-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/debian-10.csv b/lgsm/data/debian-10.csv
index f5d63b026..6bfa1dae4 100644
--- a/lgsm/data/debian-10.csv
+++ b/lgsm/data/debian-10.csv
@@ -68,7 +68,6 @@ mc,openjdk-11-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -105,6 +104,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-11-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/debian-11.csv b/lgsm/data/debian-11.csv
index 97f5b978d..5441a69b4 100644
--- a/lgsm/data/debian-11.csv
+++ b/lgsm/data/debian-11.csv
@@ -69,7 +69,6 @@ mc,openjdk-17-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-17-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/debian-12.csv b/lgsm/data/debian-12.csv
index e54d9b12b..1c0a39930 100644
--- a/lgsm/data/debian-12.csv
+++ b/lgsm/data/debian-12.csv
@@ -69,7 +69,6 @@ mc,openjdk-17-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-17-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/debian-13.csv b/lgsm/data/debian-13.csv
new file mode 100644
index 000000000..5ddb19405
--- /dev/null
+++ b/lgsm/data/debian-13.csv
@@ -0,0 +1,139 @@
+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
+sm,telnet,expect
+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
+xnt
+zmr,libtinfo5:i386
+zps,libtinfo5:i386
diff --git a/lgsm/data/debian-9.csv b/lgsm/data/debian-9.csv
index 87b6dad91..4e54ac241 100644
--- a/lgsm/data/debian-9.csv
+++ b/lgsm/data/debian-9.csv
@@ -69,7 +69,6 @@ mc,openjdk-8-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-8-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/gameicons/mom-icon.png b/lgsm/data/gameicons/mom-icon.png
deleted file mode 100644
index 317b6010a..000000000
Binary files a/lgsm/data/gameicons/mom-icon.png and /dev/null differ
diff --git a/lgsm/data/gameicons/sm-icon.png b/lgsm/data/gameicons/sm-icon.png
new file mode 100644
index 000000000..7948e002d
Binary files /dev/null and b/lgsm/data/gameicons/sm-icon.png differ
diff --git a/lgsm/data/gameicons/xnt-icon.png b/lgsm/data/gameicons/xnt-icon.png
new file mode 100644
index 000000000..f230eb407
Binary files /dev/null and b/lgsm/data/gameicons/xnt-icon.png differ
diff --git a/lgsm/data/rhel-7.csv b/lgsm/data/rhel-7.csv
index 3ecff6183..7800136bb 100644
--- a/lgsm/data/rhel-7.csv
+++ b/lgsm/data/rhel-7.csv
@@ -70,7 +70,6 @@ mc,java-11-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,java-11-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/rhel-8.csv b/lgsm/data/rhel-8.csv
index a378694b2..f8bb1d492 100644
--- a/lgsm/data/rhel-8.csv
+++ b/lgsm/data/rhel-8.csv
@@ -69,7 +69,6 @@ mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-21-openjdk
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/rhel-9.csv b/lgsm/data/rhel-9.csv
index 2cdd36575..7dae6338e 100644
--- a/lgsm/data/rhel-9.csv
+++ b/lgsm/data/rhel-9.csv
@@ -69,7 +69,6 @@ mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-21-openjdk
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/rocky-8.csv b/lgsm/data/rocky-8.csv
index a378694b2..f8bb1d492 100644
--- a/lgsm/data/rocky-8.csv
+++ b/lgsm/data/rocky-8.csv
@@ -69,7 +69,6 @@ mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-21-openjdk
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/rocky-9.csv b/lgsm/data/rocky-9.csv
index 2cdd36575..7dae6338e 100644
--- a/lgsm/data/rocky-9.csv
+++ b/lgsm/data/rocky-9.csv
@@ -69,7 +69,6 @@ mc,java-21-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
-mom
mta,ncurses-compat-libs,libxml2
nd
nec
@@ -106,6 +105,7 @@ scpslsm
sdtd,telnet,expect,libxml2
sf
sfc,ncurses-libs.i686
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,glibc-devel
+vh,glibc-devel,libatomic,pulseaudio-libs-devel
vints,aspnetcore-runtime-7.0
vpmc,java-21-openjdk
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,java-21-openjdk
wurm,xorg-x11-server-Xvfb
+xnt
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
diff --git a/lgsm/data/serverlist.csv b/lgsm/data/serverlist.csv
index ae270f965..8b408f84f 100644
--- a/lgsm/data/serverlist.csv
+++ b/lgsm/data/serverlist.csv
@@ -68,7 +68,6 @@ 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
@@ -105,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
@@ -133,5 +133,6 @@ wet,wetserver,Wolfenstein: Enemy Territory,ubuntu-22.04
wf,wfserver,Warfork,ubuntu-22.04
wmc,wmcserver,WaterfallMC,ubuntu-22.04
wurm,wurmserver,Wurm Unlimited,ubuntu-22.04
+xnt,xntserver,Xonotic,ubuntu-22.04
zmr,zmrserver,Zombie Master: Reborn,ubuntu-22.04
zps,zpsserver,Zombie Panic! Source,ubuntu-22.04
diff --git a/lgsm/data/ubuntu-16.04.csv b/lgsm/data/ubuntu-16.04.csv
index 41dbd0bc5..51f769c1a 100644
--- a/lgsm/data/ubuntu-16.04.csv
+++ b/lgsm/data/ubuntu-16.04.csv
@@ -70,7 +70,6 @@ mc,openjdk-8-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-8-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-18.04.csv b/lgsm/data/ubuntu-18.04.csv
index 469c66705..7ca2d86c6 100644
--- a/lgsm/data/ubuntu-18.04.csv
+++ b/lgsm/data/ubuntu-18.04.csv
@@ -70,7 +70,6 @@ mc,openjdk-11-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-11-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-20.04.csv b/lgsm/data/ubuntu-20.04.csv
index 8d4cc6e52..f16d8b3be 100644
--- a/lgsm/data/ubuntu-20.04.csv
+++ b/lgsm/data/ubuntu-20.04.csv
@@ -69,7 +69,6 @@ mc,openjdk-21-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,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
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-21-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-22.04.csv b/lgsm/data/ubuntu-22.04.csv
index 67d28b5e9..e84f4dddd 100644
--- a/lgsm/data/ubuntu-22.04.csv
+++ b/lgsm/data/ubuntu-22.04.csv
@@ -69,7 +69,6 @@ mc,openjdk-21-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-21-jre
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-21-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-23.04.csv b/lgsm/data/ubuntu-23.04.csv
index 1b50ed7ef..c0135abd7 100644
--- a/lgsm/data/ubuntu-23.04.csv
+++ b/lgsm/data/ubuntu-23.04.csv
@@ -69,7 +69,6 @@ mc,openjdk-21-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-21-jre
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-21-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-23.10.csv b/lgsm/data/ubuntu-23.10.csv
index 1b50ed7ef..c0135abd7 100644
--- a/lgsm/data/ubuntu-23.10.csv
+++ b/lgsm/data/ubuntu-23.10.csv
@@ -69,7 +69,6 @@ mc,openjdk-21-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-21-jre
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-21-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/data/ubuntu-24.04.csv b/lgsm/data/ubuntu-24.04.csv
index 1b50ed7ef..c0135abd7 100644
--- a/lgsm/data/ubuntu-24.04.csv
+++ b/lgsm/data/ubuntu-24.04.csv
@@ -69,7 +69,6 @@ mc,openjdk-21-jre
mcb
mh
mohaa,libstdc++5:i386
-mom
mta,libncursesw5,libxml2-utils
nd
nec
@@ -106,6 +105,7 @@ scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
+sm,telnet,expect
sof2
sol
squad
@@ -126,7 +126,7 @@ ut
ut2k4
ut3
ut99
-vh,libc6-dev
+vh,libc6-dev,libatomic1,libpulse-dev
vints,aspnetcore-runtime-7.0
vpmc,openjdk-21-jre
vs
@@ -134,5 +134,6 @@ wet
wf
wmc,openjdk-21-jre
wurm,xvfb
+xnt
zmr,libtinfo5:i386
zps,libtinfo5:i386
diff --git a/lgsm/modules/alert.sh b/lgsm/modules/alert.sh
index 40288d234..f2698e3b7 100644
--- a/lgsm/modules/alert.sh
+++ b/lgsm/modules/alert.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Overall module for managing alerts.
diff --git a/lgsm/modules/alert_discord.sh b/lgsm/modules/alert_discord.sh
index 54cf8a348..93eda8d5b 100644
--- a/lgsm/modules/alert_discord.sh
+++ b/lgsm/modules/alert_discord.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert_discord.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends Discord alert.
@@ -142,7 +142,7 @@ else
json="${jsoninfo}"
fi
-discordsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${discordwebhook}")
+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 6833d9670..ca9db1bc4 100644
--- a/lgsm/modules/alert_email.sh
+++ b/lgsm/modules/alert_email.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert_email.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends email alert.
diff --git a/lgsm/modules/alert_gotify.sh b/lgsm/modules/alert_gotify.sh
index 2ab6e9eb7..724ff1d79 100644
--- a/lgsm/modules/alert_gotify.sh
+++ b/lgsm/modules/alert_gotify.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert_gotify.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends Gotify alert.
@@ -34,7 +34,7 @@ else
fi
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 .)")
+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 77932569b..ca1c005d0 100644
--- a/lgsm/modules/alert_ifttt.sh
+++ b/lgsm/modules/alert_ifttt.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert_ifttt.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends IFTTT alert.
@@ -34,7 +34,7 @@ else
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 dedd43268..4b96a1f9f 100644
--- a/lgsm/modules/alert_pushbullet.sh
+++ b/lgsm/modules/alert_pushbullet.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert_pushbullet.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends Pushbullet Messenger alert.
@@ -36,7 +36,7 @@ else
fi
fn_print_dots "Sending Pushbullet alert"
-pushbulletsend=$(curl --connect-timeout 10 -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")
+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 c436a4a91..dc488026a 100644
--- a/lgsm/modules/alert_pushover.sh
+++ b/lgsm/modules/alert_pushover.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert_pushover.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends Pushover alert.
@@ -23,9 +23,9 @@ else
fi
if [ -z "${alerturl}" ]; then
- pushoversend=$(curl --connect-timeout 10 -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)
+ 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 10 -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)
+ 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
diff --git a/lgsm/modules/alert_rocketchat.sh b/lgsm/modules/alert_rocketchat.sh
index 329111494..bff2c6a0b 100644
--- a/lgsm/modules/alert_rocketchat.sh
+++ b/lgsm/modules/alert_rocketchat.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert_rocketchat.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends Rocketchat alert.
@@ -123,7 +123,7 @@ else
fi
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}")
+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 728a564e0..58dc54772 100644
--- a/lgsm/modules/alert_slack.sh
+++ b/lgsm/modules/alert_slack.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert_slack.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends Slack alert.
@@ -182,7 +182,7 @@ 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 6f6426cb1..2e719dba7 100644
--- a/lgsm/modules/alert_telegram.sh
+++ b/lgsm/modules/alert_telegram.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM alert_telegram.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends Telegram Messenger alert.
@@ -40,7 +40,7 @@ else
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 2a63df3f3..7601898a9 100644
--- a/lgsm/modules/check.sh
+++ b/lgsm/modules/check.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Overall module for managing checks.
# Runs checks that will either halt on or fix an issue.
diff --git a/lgsm/modules/check_config.sh b/lgsm/modules/check_config.sh
index d8bfb5008..24bc1c37f 100644
--- a/lgsm/modules/check_config.sh
+++ b/lgsm/modules/check_config.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_config.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks if the server config is missing and warns the user if needed.
diff --git a/lgsm/modules/check_deps.sh b/lgsm/modules/check_deps.sh
index df5cb9478..35145a11d 100644
--- a/lgsm/modules/check_deps.sh
+++ b/lgsm/modules/check_deps.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_deps.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks and installs missing dependencies.
diff --git a/lgsm/modules/check_executable.sh b/lgsm/modules/check_executable.sh
index e7214ac33..5959c61aa 100644
--- a/lgsm/modules/check_executable.sh
+++ b/lgsm/modules/check_executable.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_executable.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks if server executable exists.
diff --git a/lgsm/modules/check_gamedig.sh b/lgsm/modules/check_gamedig.sh
index 8abc0b759..70aeea41b 100644
--- a/lgsm/modules/check_gamedig.sh
+++ b/lgsm/modules/check_gamedig.sh
@@ -1,19 +1,19 @@
#!/bin/bash
# LinuxGSM check_gamedig.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://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
+if [ "$(command -v node)" ] && [ "$(command -v npm)" ] && [ "$(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"
+ curl -L -o package.json "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/package.json"
npm install
-elif [ "$(command -v node)" ] && [ "$(node -v | cut -d 'v' -f 2 | cut -d '.' -f 1)" -ge 16 ]; then
+elif [ "$(command -v node)" ] && [ "$(command -v npm)" ] && [ "$(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"
+ curl -s -L -o package.json "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${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 9da491bce..8b3d00658 100644
--- a/lgsm/modules/check_glibc.sh
+++ b/lgsm/modules/check_glibc.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_glibc.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks if the server has the correct Glibc version.
diff --git a/lgsm/modules/check_ip.sh b/lgsm/modules/check_ip.sh
index bf0418f74..8f943c568 100644
--- a/lgsm/modules/check_ip.sh
+++ b/lgsm/modules/check_ip.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_ip.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Automatically identifies the server interface IP.
# If multiple interfaces are detected the user will need to manually set using ip="0.0.0.0".
diff --git a/lgsm/modules/check_last_update.sh b/lgsm/modules/check_last_update.sh
index 166d80a17..2686c6507 100644
--- a/lgsm/modules/check_last_update.sh
+++ b/lgsm/modules/check_last_update.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_last_update.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks Lockfile to see when last update happened.
# Will reboot server if instance not rebooted since update.
diff --git a/lgsm/modules/check_logs.sh b/lgsm/modules/check_logs.sh
index 036eea5e4..5e2d66c35 100644
--- a/lgsm/modules/check_logs.sh
+++ b/lgsm/modules/check_logs.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_logs.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks if log files exist.
diff --git a/lgsm/modules/check_permissions.sh b/lgsm/modules/check_permissions.sh
index 31c64cd17..9ed1bb65e 100644
--- a/lgsm/modules/check_permissions.sh
+++ b/lgsm/modules/check_permissions.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_permissions.sh
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks ownership & permissions of scripts, files and directories.
@@ -13,6 +13,11 @@ fn_check_ownership() {
selfownissue=1
fi
fi
+ if [ -d "${lgsmdir}" ]; then
+ if [ "$(find "${lgsmdir}" -not -user "$(whoami)" | wc -l)" -ne "0" ]; then
+ lgsmownissue=1
+ fi
+ fi
if [ -d "${modulesdir}" ]; then
if [ "$(find "${modulesdir}" -not -name '*.swp' -not -user "$(whoami)" | wc -l)" -ne "0" ]; then
funcownissue=1
@@ -23,18 +28,18 @@ fn_check_ownership() {
filesownissue=1
fi
fi
- if [ "${selfownissue}" == "1" ] || [ "${funcownissue}" == "1" ] || [ "${filesownissue}" == "1" ]; then
+ if [ "${selfownissue}" == "1" ] || [ "${lgsmownissue}" == "1" ] || [ "${filesownissue}" == "1" ]; then
fn_print_fail_nl "Ownership issues found"
fn_script_log_fail "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"
+ echo -en "User\tGroup\tFile:"
if [ "${selfownissue}" == "1" ]; then
find "${rootdir}/${selfname}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n"
fi
- if [ "${funcownissue}" == "1" ]; then
- find "${modulesdir}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n"
+ if [ "${lgsmownissue}" == "1" ]; then
+ find "${lgsmdir}" -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"
@@ -53,27 +58,46 @@ fn_check_ownership() {
}
fn_check_permissions() {
+ # Check modules files are executable.
if [ -d "${modulesdir}" ]; then
- if [ "$(find "${modulesdir}" -type f -not -executable | wc -l)" -ne "0" ]; then
+ findnotexecutable="$(find "${modulesdir}" -type f -not -executable)"
+ findnotexecutablewc="$(find "${modulesdir}" -type f -not -executable | wc -l)"
+ if [ "${findnotexecutablewc}" -ne "0" ]; then
fn_print_fail_nl "Permissions issues found"
fn_script_log_fail "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 "${modulesdir}" -type f -not -executable -printf "%p\n"
+ echo -en "File:"
+ echo -en "${findnotexecutable}"
} | column -s $'\t' -t | tee -a "${lgsmlog}"
- if [ "${monitorflag}" == 1 ]; then
- alert="permissions"
- alert.sh
+
+ # Attempt to make the files executable
+ fn_print_information_nl "Attempting to fix permissions issues"
+ fn_script_log_info "Attempting to fix permissions issues"
+ echo "${findnotexecutable}" | xargs chmod +x
+
+ # Re-check if there are still non-executable files
+ findnotexecutable="$(find "${modulesdir}" -type f -not -executable)"
+ findnotexecutablewc="$(find "${modulesdir}" -type f -not -executable | wc -l)"
+ if [ "${findnotexecutablewc}" -ne "0" ]; then
+ fn_print_fail_nl "Failed to resolve permissions issues"
+ fn_script_log_fail "Failed to resolve permissions issues"
+ if [ "${monitorflag}" == 1 ]; then
+ alert="permissions"
+ alert.sh
+ fi
+ core_exit.sh
+ else
+ fn_print_ok_nl "Permissions issues resolved"
+ fn_script_log_pass "Permissions issues resolved"
fi
- core_exit.sh
fi
fi
# Check rootdir permissions.
- if [ "${rootdir}" ]; then
- # Get permission numbers on directory under the form 775.
+ if [ -d "${rootdir}" ]; then
+ # Get permission numbers on directory should return 775.
rootdirperm=$(stat -c %a "${rootdir}")
# Grab the first and second digit for user and group permission.
userrootdirperm="${rootdirperm:0:1}"
@@ -92,6 +116,7 @@ fn_check_permissions() {
core_exit.sh
fi
fi
+
# Check if executable is executable and attempt to fix it.
# First get executable name.
execname=$(basename "${executable}")
@@ -141,7 +166,7 @@ fn_check_permissions() {
fi
}
-## The following fn_sys_perm_* modules checks for permission errors in /sys directory.
+## The following fn_sys_perm_* function checks for permission errors in /sys directory.
# Checks for permission errors in /sys directory.
fn_sys_perm_errors_detect() {
diff --git a/lgsm/modules/check_root.sh b/lgsm/modules/check_root.sh
index 8fe20764c..47825ddc9 100644
--- a/lgsm/modules/check_root.sh
+++ b/lgsm/modules/check_root.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_root.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks if the user tried to run the script as root.
diff --git a/lgsm/modules/check_status.sh b/lgsm/modules/check_status.sh
index 906675e81..e017b89ec 100644
--- a/lgsm/modules/check_status.sh
+++ b/lgsm/modules/check_status.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_status.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks the process status of the server. Either online or offline.
diff --git a/lgsm/modules/check_steamcmd.sh b/lgsm/modules/check_steamcmd.sh
index 5d14bb21f..0e7f5ce6c 100644
--- a/lgsm/modules/check_steamcmd.sh
+++ b/lgsm/modules/check_steamcmd.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_steamcmd.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks if SteamCMD is installed correctly.
diff --git a/lgsm/modules/check_system_dir.sh b/lgsm/modules/check_system_dir.sh
index 2f57511fb..2b646835d 100644
--- a/lgsm/modules/check_system_dir.sh
+++ b/lgsm/modules/check_system_dir.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_system_dir.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks if systemdir/serverfiles is accessible.
diff --git a/lgsm/modules/check_system_requirements.sh b/lgsm/modules/check_system_requirements.sh
index 0214cdc1a..a7314a0d8 100644
--- a/lgsm/modules/check_system_requirements.sh
+++ b/lgsm/modules/check_system_requirements.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_system_requirements.sh
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks RAM requirements.
@@ -9,7 +9,7 @@ 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
ramrequirementgb="7"
@@ -49,6 +49,8 @@ elif [ "${shortname}" == "sf" ]; then
ramrequirementgb="12"
elif [ "${shortname}" == "squad" ]; then
ramrequirementgb="2"
+elif [ "${shortname}" == "sm" ]; then
+ ramrequirementgb="10"
elif [ "${shortname}" == "st" ]; then
ramrequirementgb="1"
elif [ "${shortname}" == "stn" ]; then
diff --git a/lgsm/modules/check_tmuxception.sh b/lgsm/modules/check_tmuxception.sh
index 8f1f94c73..fa0748c8b 100644
--- a/lgsm/modules/check_tmuxception.sh
+++ b/lgsm/modules/check_tmuxception.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM check_config.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks if run from tmux or screen.
diff --git a/lgsm/modules/check_version.sh b/lgsm/modules/check_version.sh
index 5369fd832..b1e7f5584 100644
--- a/lgsm/modules/check_version.sh
+++ b/lgsm/modules/check_version.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_version.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://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.
diff --git a/lgsm/modules/command_backup.sh b/lgsm/modules/command_backup.sh
index a3e1bbe7f..6bbc07f02 100644
--- a/lgsm/modules/command_backup.sh
+++ b/lgsm/modules/command_backup.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_backup.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Creates a .tar.gz file in the backup directory.
diff --git a/lgsm/modules/command_check_update.sh b/lgsm/modules/command_check_update.sh
index 2e6855f7c..ee4c8ccb3 100644
--- a/lgsm/modules/command_check_update.sh
+++ b/lgsm/modules/command_check_update.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_check_update.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of servers.
diff --git a/lgsm/modules/command_console.sh b/lgsm/modules/command_console.sh
index a5d49d7f2..aa17e839e 100644
--- a/lgsm/modules/command_console.sh
+++ b/lgsm/modules/command_console.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_console.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Gives access to the server tmux console.
diff --git a/lgsm/modules/command_debug.sh b/lgsm/modules/command_debug.sh
index 2e6c0e2e2..b5f2dabac 100644
--- a/lgsm/modules/command_debug.sh
+++ b/lgsm/modules/command_debug.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_debug.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Runs the server without tmux and directly from the terminal.
diff --git a/lgsm/modules/command_details.sh b/lgsm/modules/command_details.sh
index ad55b1241..2800e5123 100644
--- a/lgsm/modules/command_details.sh
+++ b/lgsm/modules/command_details.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_details.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Displays server information.
diff --git a/lgsm/modules/command_dev_clear_modules.sh b/lgsm/modules/command_dev_clear_modules.sh
index bf19b2578..e2e80164f 100644
--- a/lgsm/modules/command_dev_clear_modules.sh
+++ b/lgsm/modules/command_dev_clear_modules.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_dev_clear_modules.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Deletes the contents of the modules dir.
diff --git a/lgsm/modules/command_dev_debug.sh b/lgsm/modules/command_dev_debug.sh
index eb0356985..3226fc186 100644
--- a/lgsm/modules/command_dev_debug.sh
+++ b/lgsm/modules/command_dev_debug.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_dev_debug.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Dev only: Enables debugging log to be saved to dev-debug.log.
diff --git a/lgsm/modules/command_dev_detect_deps.sh b/lgsm/modules/command_dev_detect_deps.sh
index 6215fb897..fead2c285 100644
--- a/lgsm/modules/command_dev_detect_deps.sh
+++ b/lgsm/modules/command_dev_detect_deps.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_dev_detect_deps.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Detects dependencies the server binary requires.
diff --git a/lgsm/modules/command_dev_detect_glibc.sh b/lgsm/modules/command_dev_detect_glibc.sh
index 214adc88e..6326cf5cb 100644
--- a/lgsm/modules/command_dev_detect_glibc.sh
+++ b/lgsm/modules/command_dev_detect_glibc.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_dev_detect_glibc.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Automatically detects the version of GLIBC that is required.
# Can check a file or directory recursively.
diff --git a/lgsm/modules/command_dev_detect_ldd.sh b/lgsm/modules/command_dev_detect_ldd.sh
index af41bb522..9d0bf5148 100644
--- a/lgsm/modules/command_dev_detect_ldd.sh
+++ b/lgsm/modules/command_dev_detect_ldd.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_dev_detect_ldd.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Automatically detects required deps using ldd.
# Can check a file or directory recursively.
diff --git a/lgsm/modules/command_dev_parse_distro_details.sh b/lgsm/modules/command_dev_parse_distro_details.sh
index ca2bfd9ed..f80c909ad 100644
--- a/lgsm/modules/command_dev_parse_distro_details.sh
+++ b/lgsm/modules/command_dev_parse_distro_details.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_dev_parse_distro_details.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Display parsed distro details.
@@ -87,7 +87,7 @@ missing_details=""
# Loop through the distro details and store them.
for key in "${!server_details[@]}"; do
- value=${server_details[$key]}
+ value=${server_details[$key]}
if [ -n "$value" ]; then
available_details+="${lightblue}${key}: ${default}${value}\n"
else
@@ -97,18 +97,18 @@ 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
+ 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
+ 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
index 4dcf33c2a..87284904c 100644
--- a/lgsm/modules/command_dev_parse_game_details.sh
+++ b/lgsm/modules/command_dev_parse_game_details.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_dev_parse_game_details.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Display parsed gameserver details.
@@ -70,22 +70,20 @@ declare -A server_details=(
['Max Players']="${maxplayers}"
['Mod Server Port']="${modserverport}"
['OldQueryPortNumber']="${oldqueryportnumber}"
- ['Password']="${password}"
['Port 401']="${port401}"
['Port IPv6']="${portipv6}"
['Port']="${port}"
['Query Enabled']="${queryenabled}"
- ['Query HTTP Port']="${queryhttpport}"
- ['Query HTTPS Port']="${queryhttpsport}"
+ ['Query HTTP Port']="${httpqueryport}"
+ ['Query HTTPS Port']="${httpsqueryport}"
['Query Mode']="${querymode}"
- ['Query Port GS']="${queryportgs}"
+ ['Query Port GS']="${gamespyqueryport}"
['Query Port']="${queryport}"
- ['Query SSH Port']="${querysshport}"
+ ['Query SSH Port']="${sshqueryport}"
['Queue Enabled']="${queueenabled}"
['Queue Port']="${queueport}"
['Random Map']="${randommap}"
['Raw Port']="${rawport}"
- ['RC Password']="${rcpassword}"
['RCON Enabled']="${rconenabled}"
['RCON Password']="${rconpassword}"
['RCON Port']="${rconport}"
@@ -114,7 +112,6 @@ declare -A server_details=(
['Steamworks Port']="${steamworksport}"
['Telnet Enabled']="${telnetenabled}"
['Telnet IP']="${telnetip}"
- ['Telnet Password']="${telnetpass}"
['Telnet Password']="${telnetpassword}"
['Telnet Port']="${telnetport}"
['Tickrate']="${tickrate}"
@@ -133,7 +130,7 @@ missing_details=""
# Loop through the server details and store them.
for key in "${!server_details[@]}"; do
- value=${server_details[$key]}
+ value=${server_details[$key]}
if [ -n "$value" ]; then
available_details+="${lightblue}${key}: ${default}${value}\n"
else
@@ -144,9 +141,9 @@ 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
+ 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.
diff --git a/lgsm/modules/command_dev_query_raw.sh b/lgsm/modules/command_dev_query_raw.sh
index ae49a1b85..345298941 100644
--- a/lgsm/modules/command_dev_query_raw.sh
+++ b/lgsm/modules/command_dev_query_raw.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_dev_query_raw.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Raw gamedig output of the server.
@@ -207,7 +207,7 @@ echo -e ""
echo -e "${lightgreen}Gamedig Raw Output${default}"
fn_messages_separator
echo -e ""
-if [ ! "$(command -v gamedig 2> /dev/null)" ] || [ ! -f "${lgsmdir}/node_modules/gamedig/bin/gamedig.js" ]; 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 c1c667797..4e9378945 100644
--- a/lgsm/modules/command_fastdl.sh
+++ b/lgsm/modules/command_fastdl.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_fastdl.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Creates a FastDL directory.
diff --git a/lgsm/modules/command_install.sh b/lgsm/modules/command_install.sh
index c3bf27c61..8dc9a77df 100644
--- a/lgsm/modules/command_install.sh
+++ b/lgsm/modules/command_install.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_install.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Overall module for the installer.
diff --git a/lgsm/modules/command_install_resources_mta.sh b/lgsm/modules/command_install_resources_mta.sh
index 31a9165fd..aecda1452 100644
--- a/lgsm/modules/command_install_resources_mta.sh
+++ b/lgsm/modules/command_install_resources_mta.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_install_resources_mta.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Installs the default resources for Multi Theft Auto.
diff --git a/lgsm/modules/command_mods_install.sh b/lgsm/modules/command_mods_install.sh
index 19de72ab0..d1b3fb67a 100644
--- a/lgsm/modules/command_mods_install.sh
+++ b/lgsm/modules/command_mods_install.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_mods_install.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: List and installs available mods along with mods_list.sh and mods_core.sh.
diff --git a/lgsm/modules/command_mods_remove.sh b/lgsm/modules/command_mods_remove.sh
index 5f70ac389..412e07546 100644
--- a/lgsm/modules/command_mods_remove.sh
+++ b/lgsm/modules/command_mods_remove.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_mods_uninstall.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Uninstall mods along with mods_list.sh and mods_core.sh.
diff --git a/lgsm/modules/command_mods_update.sh b/lgsm/modules/command_mods_update.sh
index cd5c3b03f..ca81dd947 100644
--- a/lgsm/modules/command_mods_update.sh
+++ b/lgsm/modules/command_mods_update.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_mods_update.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Updates installed mods along with mods_list.sh and mods_core.sh.
diff --git a/lgsm/modules/command_monitor.sh b/lgsm/modules/command_monitor.sh
index e9baf71e5..a9691fb98 100644
--- a/lgsm/modules/command_monitor.sh
+++ b/lgsm/modules/command_monitor.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_monitor.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Monitors server by checking for running processes
# then passes to gamedig and gsquery.
diff --git a/lgsm/modules/command_postdetails.sh b/lgsm/modules/command_postdetails.sh
index 3bfed78ed..6626d51a7 100644
--- a/lgsm/modules/command_postdetails.sh
+++ b/lgsm/modules/command_postdetails.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_postdetails.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Strips sensitive information out of Details output.
diff --git a/lgsm/modules/command_restart.sh b/lgsm/modules/command_restart.sh
index ed60a5555..0a7f9b5f0 100644
--- a/lgsm/modules/command_restart.sh
+++ b/lgsm/modules/command_restart.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_restart.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Restarts the server.
@@ -10,6 +10,7 @@ commandaction="Restarting"
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_firstcommand_set
+check.sh
info_game.sh
exitbypass=1
command_stop.sh
diff --git a/lgsm/modules/command_send.sh b/lgsm/modules/command_send.sh
index cf6a9f08a..e31452707 100644
--- a/lgsm/modules/command_send.sh
+++ b/lgsm/modules/command_send.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_send.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Send command to the server tmux console.
diff --git a/lgsm/modules/command_skeleton.sh b/lgsm/modules/command_skeleton.sh
index 48a6bd187..ca32610e9 100644
--- a/lgsm/modules/command_skeleton.sh
+++ b/lgsm/modules/command_skeleton.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_skeleton.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Creates an copy of a game servers directorys.
diff --git a/lgsm/modules/command_sponsor.sh b/lgsm/modules/command_sponsor.sh
index ea49a3099..e7aeeda95 100755
--- a/lgsm/modules/command_sponsor.sh
+++ b/lgsm/modules/command_sponsor.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_sponsor.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Shows ways to sponsor.
diff --git a/lgsm/modules/command_start.sh b/lgsm/modules/command_start.sh
index f38125a5e..c2be7ed2f 100644
--- a/lgsm/modules/command_start.sh
+++ b/lgsm/modules/command_start.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_start.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Starts the server.
@@ -80,7 +80,8 @@ fn_start_tmux() {
# Enable console logging.
if [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
- if [ "${logtimestamp}" == "on" ]; 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}'"
diff --git a/lgsm/modules/command_stop.sh b/lgsm/modules/command_stop.sh
index 3d534317a..84f5998cd 100644
--- a/lgsm/modules/command_stop.sh
+++ b/lgsm/modules/command_stop.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_stop.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Stops the server.
@@ -96,8 +96,8 @@ fn_stop_graceful_goldsrc() {
# 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
@@ -111,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 {
@@ -143,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
@@ -159,7 +159,7 @@ 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
@@ -185,7 +185,7 @@ 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
@@ -195,6 +195,95 @@ fn_stop_graceful_sdtd() {
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
+ fn_print_warn "Graceful: telnet: expect not installed: "
+ fn_print_fail_eol_nl
+ fn_script_log_warn "Graceful: telnet: expect not installed: FAIL"
+ 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"
@@ -253,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
}
diff --git a/lgsm/modules/command_test_alert.sh b/lgsm/modules/command_test_alert.sh
index 15f481391..becb365a3 100644
--- a/lgsm/modules/command_test_alert.sh
+++ b/lgsm/modules/command_test_alert.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_test_alert.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Sends a test alert.
diff --git a/lgsm/modules/command_ts3_server_pass.sh b/lgsm/modules/command_ts3_server_pass.sh
index 0223a877c..807d025b7 100644
--- a/lgsm/modules/command_ts3_server_pass.sh
+++ b/lgsm/modules/command_ts3_server_pass.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_ts3_server_pass.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Changes TS3 serveradmin password.
diff --git a/lgsm/modules/command_update.sh b/lgsm/modules/command_update.sh
index e1fcec97f..6bb30a4c8 100644
--- a/lgsm/modules/command_update.sh
+++ b/lgsm/modules/command_update.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_update.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of servers.
@@ -33,6 +33,8 @@ elif [ "${shortname}" == "vints" ]; then
update_vints.sh
elif [ "${shortname}" == "ut99" ]; then
update_ut99.sh
+elif [ "${shortname}" == "xnt" ]; then
+ update_xnt.sh
else
update_steamcmd.sh
fi
diff --git a/lgsm/modules/command_update_linuxgsm.sh b/lgsm/modules/command_update_linuxgsm.sh
index d20204187..e6e5e711d 100644
--- a/lgsm/modules/command_update_linuxgsm.sh
+++ b/lgsm/modules/command_update_linuxgsm.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_update_linuxgsm.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Deletes the modules dir to allow re-downloading of modules from GitHub.
@@ -15,14 +15,21 @@ 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_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"
@@ -39,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
@@ -51,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
@@ -119,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
@@ -131,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
@@ -153,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
@@ -165,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
@@ -191,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
@@ -210,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 d3511d7bb..e35749924 100644
--- a/lgsm/modules/command_validate.sh
+++ b/lgsm/modules/command_validate.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_validate.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Runs a server validation.
diff --git a/lgsm/modules/command_wipe.sh b/lgsm/modules/command_wipe.sh
index 378dae0ec..daf9270e6 100644
--- a/lgsm/modules/command_wipe.sh
+++ b/lgsm/modules/command_wipe.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_backup.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Wipes server data, useful after updates for some games like Rust.
diff --git a/lgsm/modules/compress_unreal2_maps.sh b/lgsm/modules/compress_unreal2_maps.sh
index f67ac7010..4469aca40 100644
--- a/lgsm/modules/compress_unreal2_maps.sh
+++ b/lgsm/modules/compress_unreal2_maps.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM compress_unreal2_maps.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Compresses unreal maps.
diff --git a/lgsm/modules/compress_ut99_maps.sh b/lgsm/modules/compress_ut99_maps.sh
index 51bbd386a..23a93b3b7 100644
--- a/lgsm/modules/compress_ut99_maps.sh
+++ b/lgsm/modules/compress_ut99_maps.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM compress_ut99_maps.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Compresses unreal maps.
diff --git a/lgsm/modules/core_dl.sh b/lgsm/modules/core_dl.sh
index caca0fc58..dde24d9da 100644
--- a/lgsm/modules/core_dl.sh
+++ b/lgsm/modules/core_dl.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM core_dl.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Deals with all downloads for LinuxGSM.
@@ -251,7 +251,10 @@ fn_dl_extract() {
fi
elif [ "${mime}" == "application/zip" ]; then
if [ -n "${extractsrc}" ]; then
- extractcmd=$(unzip -qoj -d "${extractdest}" "${local_filedir}/${local_filename}" "${extractsrc}"/*)
+ temp_extractdir="${tmpdir}/Xonotic"
+ extractcmd=$(unzip -qo "${local_filedir}/${local_filename}" "${extractsrc}/*" -d "${temp_extractdir}")
+ find "${temp_extractdir}/${extractsrc}" -mindepth 1 -maxdepth 1 -exec mv -t "${extractdest}" {} +
+ rm -rf "${temp_extractdir}"
else
extractcmd=$(unzip -qo -d "${extractdest}" "${local_filedir}/${local_filename}")
fi
@@ -390,7 +393,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=""
diff --git a/lgsm/modules/core_exit.sh b/lgsm/modules/core_exit.sh
index 989a4c543..fd7645462 100644
--- a/lgsm/modules/core_exit.sh
+++ b/lgsm/modules/core_exit.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM core_exit.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles exiting of LinuxGSM by running and reporting an exit code.
diff --git a/lgsm/modules/core_getopt.sh b/lgsm/modules/core_getopt.sh
index cd3e57cb5..688dcdc9c 100644
--- a/lgsm/modules/core_getopt.sh
+++ b/lgsm/modules/core_getopt.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM core_getopt.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: getopt arguments.
diff --git a/lgsm/modules/core_github.sh b/lgsm/modules/core_github.sh
index 7290f9bdf..3b3a96c0f 100644
--- a/lgsm/modules/core_github.sh
+++ b/lgsm/modules/core_github.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM core_github.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: core module file for updates via github
@@ -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 cf11e3a54..4c9a55c39 100644
--- a/lgsm/modules/core_legacy.sh
+++ b/lgsm/modules/core_legacy.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM core_legacy.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Code for backwards compatability with older versions of LinuxGSM.
diff --git a/lgsm/modules/core_logs.sh b/lgsm/modules/core_logs.sh
index 3166041ae..7b435b563 100644
--- a/lgsm/modules/core_logs.sh
+++ b/lgsm/modules/core_logs.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM core_logs.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Acts as a log rotator, removing old logs.
diff --git a/lgsm/modules/core_messages.sh b/lgsm/modules/core_messages.sh
index 6488c02bc..80ef293d8 100644
--- a/lgsm/modules/core_messages.sh
+++ b/lgsm/modules/core_messages.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM core_messages.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Defines on-screen messages such as [ OK ] and how script logs look.
@@ -31,7 +31,7 @@ fn_ansi_loader() {
darkgrey="\e[90m"
lightgrey="\e[37m"
white="\e[97m"
- # erase to end of line.
+ # erase to end of line.
creeol+="\033[K"
fi
}
diff --git a/lgsm/modules/core_modules.sh b/lgsm/modules/core_modules.sh
index a56a88eea..10f6e0990 100644
--- a/lgsm/modules/core_modules.sh
+++ b/lgsm/modules/core_modules.sh
@@ -1,14 +1,14 @@
#!/bin/bash
# LinuxGSM core_modules.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://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="v24.2.4"
+modulesversion="v24.3.0"
# Core
@@ -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
@@ -526,6 +531,11 @@ fix_wurm.sh() {
fn_fetch_module
}
+fix_xnt.sh() {
+ modulefile="${FUNCNAME[0]}"
+ fn_fetch_module
+}
+
fix_zmr.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
@@ -690,6 +700,11 @@ update_ut99.sh() {
fn_fetch_module
}
+update_xnt.sh() {
+ modulefile="${FUNCNAME[0]}"
+ fn_fetch_module
+}
+
fn_update_modules.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
@@ -816,6 +831,11 @@ if [ ! -d "${lockdir}" ]; then
mkdir -p "${lockdir}"
fi
+# Creates data dir if missing
+if [ ! -d "${datadir}" ]; then
+ mkdir -p "${datadir}"
+fi
+
# if $USER id missing set to whoami
if [ -z "${USER}" ]; then
USER="$(whoami)"
diff --git a/lgsm/modules/core_steamcmd.sh b/lgsm/modules/core_steamcmd.sh
index 326fecf70..552ff1905 100644
--- a/lgsm/modules/core_steamcmd.sh
+++ b/lgsm/modules/core_steamcmd.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM core_steamcmd.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Core modules for SteamCMD
diff --git a/lgsm/modules/core_trap.sh b/lgsm/modules/core_trap.sh
index ea6fce869..4b66b3937 100644
--- a/lgsm/modules/core_trap.sh
+++ b/lgsm/modules/core_trap.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM core_trap.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles CTRL-C trap to give an exit code.
diff --git a/lgsm/modules/fix.sh b/lgsm/modules/fix.sh
index dbb8e3545..f9628a335 100644
--- a/lgsm/modules/fix.sh
+++ b/lgsm/modules/fix.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Overall module for managing fixes.
# Runs modules that will fix an issue.
@@ -52,7 +52,7 @@ fn_apply_fix() {
fi
}
-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 sof2 squad st tf2 terraria ts3 mcb mta unt vh wurm zmr)
+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 xnt zmr)
apply_post_install_fix=(av kf kf2 ro ut2k4 ut ut3)
# validate registered fixes for safe development
diff --git a/lgsm/modules/fix_ark.sh b/lgsm/modules/fix_ark.sh
index 03e53380f..366d137dd 100644
--- a/lgsm/modules/fix_ark.sh
+++ b/lgsm/modules/fix_ark.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_ark.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with ARK: Survival Evolved.
diff --git a/lgsm/modules/fix_arma3.sh b/lgsm/modules/fix_arma3.sh
index b415b81d6..66f5ebe5d 100644
--- a/lgsm/modules/fix_arma3.sh
+++ b/lgsm/modules/fix_arma3.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_arma3.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with ARMA3.
diff --git a/lgsm/modules/fix_armar.sh b/lgsm/modules/fix_armar.sh
index ae2c08f33..c2bb8fbdb 100755
--- a/lgsm/modules/fix_armar.sh
+++ b/lgsm/modules/fix_armar.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_armar.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Arma Reforger.
diff --git a/lgsm/modules/fix_av.sh b/lgsm/modules/fix_av.sh
index bfff59af6..ea225810c 100644
--- a/lgsm/modules/fix_av.sh
+++ b/lgsm/modules/fix_av.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_av.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Avorion.
diff --git a/lgsm/modules/fix_bo.sh b/lgsm/modules/fix_bo.sh
index 24e76874e..5d74f27de 100644
--- a/lgsm/modules/fix_bo.sh
+++ b/lgsm/modules/fix_bo.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_hw.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Ballistic Overkill.
diff --git a/lgsm/modules/fix_bt.sh b/lgsm/modules/fix_bt.sh
index 4d837a1ba..51fc3d505 100755
--- a/lgsm/modules/fix_bt.sh
+++ b/lgsm/modules/fix_bt.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_bt.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Barotrauma.
diff --git a/lgsm/modules/fix_cmw.sh b/lgsm/modules/fix_cmw.sh
index a57c6c8cb..413bfbc33 100644
--- a/lgsm/modules/fix_cmw.sh
+++ b/lgsm/modules/fix_cmw.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_cmw.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Chivalry: Medieval Warfare.
diff --git a/lgsm/modules/fix_csgo.sh b/lgsm/modules/fix_csgo.sh
index ea858ee3c..8f5550ab5 100644
--- a/lgsm/modules/fix_csgo.sh
+++ b/lgsm/modules/fix_csgo.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_csgo.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Counter-Strike: Global Offensive.
diff --git a/lgsm/modules/fix_dst.sh b/lgsm/modules/fix_dst.sh
index ff963d342..2848fa5bb 100644
--- a/lgsm/modules/fix_dst.sh
+++ b/lgsm/modules/fix_dst.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_dst.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Don't Starve Together.
diff --git a/lgsm/modules/fix_hw.sh b/lgsm/modules/fix_hw.sh
index 0e70b7195..c7d209bb6 100644
--- a/lgsm/modules/fix_hw.sh
+++ b/lgsm/modules/fix_hw.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_hw.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Hurtworld.
diff --git a/lgsm/modules/fix_ins.sh b/lgsm/modules/fix_ins.sh
index cc79e3685..1d1423c6b 100644
--- a/lgsm/modules/fix_ins.sh
+++ b/lgsm/modules/fix_ins.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_ins.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Insurgency.
diff --git a/lgsm/modules/fix_kf.sh b/lgsm/modules/fix_kf.sh
index e38b5883a..00b99e06c 100644
--- a/lgsm/modules/fix_kf.sh
+++ b/lgsm/modules/fix_kf.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_kf.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Killing Floor.
diff --git a/lgsm/modules/fix_kf2.sh b/lgsm/modules/fix_kf2.sh
index cb4707414..495e9d70e 100644
--- a/lgsm/modules/fix_kf2.sh
+++ b/lgsm/modules/fix_kf2.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_kf2.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Killing Floor 2.
diff --git a/lgsm/modules/fix_mcb.sh b/lgsm/modules/fix_mcb.sh
index 1e95bb4a8..bc84d84e1 100644
--- a/lgsm/modules/fix_mcb.sh
+++ b/lgsm/modules/fix_mcb.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_mcb.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Minecraft Bedrock.
diff --git a/lgsm/modules/fix_mta.sh b/lgsm/modules/fix_mta.sh
index 4e533eb51..2fff69691 100644
--- a/lgsm/modules/fix_mta.sh
+++ b/lgsm/modules/fix_mta.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_mta.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Multi Theft Auto.
diff --git a/lgsm/modules/fix_nmrih.sh b/lgsm/modules/fix_nmrih.sh
index dfbb76d92..4eb76c24e 100644
--- a/lgsm/modules/fix_nmrih.sh
+++ b/lgsm/modules/fix_nmrih.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_nmrih.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Create symlinks for renamed No More Room In Hell serverfiles.
# Solution from Steam Community post: https://steamcommunity.com/app/224260/discussions/2/1732089092441769414/
diff --git a/lgsm/modules/fix_onset.sh b/lgsm/modules/fix_onset.sh
index 7d644ef7b..6430e5d6b 100644
--- a/lgsm/modules/fix_onset.sh
+++ b/lgsm/modules/fix_onset.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_onset.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Onset.
diff --git a/lgsm/modules/fix_pvr.sh b/lgsm/modules/fix_pvr.sh
index 6d8727e33..e4409bc37 100644
--- a/lgsm/modules/fix_pvr.sh
+++ b/lgsm/modules/fix_pvr.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_pvr.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Pavlov VR.
diff --git a/lgsm/modules/fix_ro.sh b/lgsm/modules/fix_ro.sh
index 21663a9ea..8b9bee442 100644
--- a/lgsm/modules/fix_ro.sh
+++ b/lgsm/modules/fix_ro.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_ro.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Red Orchestra: Ostfront 41-45.
diff --git a/lgsm/modules/fix_rust.sh b/lgsm/modules/fix_rust.sh
index 809b5b1df..af995a2fa 100644
--- a/lgsm/modules/fix_rust.sh
+++ b/lgsm/modules/fix_rust.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_rust.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Rust.
diff --git a/lgsm/modules/fix_rw.sh b/lgsm/modules/fix_rw.sh
index 17acf4def..dee15dedb 100644
--- a/lgsm/modules/fix_rw.sh
+++ b/lgsm/modules/fix_rw.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_rw.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Rising World.
diff --git a/lgsm/modules/fix_samp.sh b/lgsm/modules/fix_samp.sh
index 0b5d0ab22..e193485d7 100644
--- a/lgsm/modules/fix_samp.sh
+++ b/lgsm/modules/fix_samp.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_sfc.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issue that the default rcon password is not changed.
diff --git a/lgsm/modules/fix_sdtd.sh b/lgsm/modules/fix_sdtd.sh
index 7988b0d67..2b4620687 100644
--- a/lgsm/modules/fix_sdtd.sh
+++ b/lgsm/modules/fix_sdtd.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_sdtd.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with 7 Days to Die.
diff --git a/lgsm/modules/fix_sfc.sh b/lgsm/modules/fix_sfc.sh
index 308f74b24..70e5d0484 100644
--- a/lgsm/modules/fix_sfc.sh
+++ b/lgsm/modules/fix_sfc.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_sfc.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Source Forts Classic.
diff --git a/lgsm/modules/fix_sm.sh b/lgsm/modules/fix_sm.sh
new file mode 100644
index 000000000..d75ca8c78
--- /dev/null
+++ b/lgsm/modules/fix_sm.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+# LinuxGSM fix_sm.sh module
+# Author: Daniel Gibbs
+# Contributors: https://linuxgsm.com/contrib
+# Website: https://linuxgsm.com
+# Description: Resolves issues with Unturned.
+
+moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
+
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64"
diff --git a/lgsm/modules/fix_sof2.sh b/lgsm/modules/fix_sof2.sh
index 4e5b13624..45e3b299c 100644
--- a/lgsm/modules/fix_sof2.sh
+++ b/lgsm/modules/fix_sof2.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_rust.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Soldier of Fortune 2.
diff --git a/lgsm/modules/fix_squad.sh b/lgsm/modules/fix_squad.sh
index 2fec57f0e..b9ee76a8d 100644
--- a/lgsm/modules/fix_squad.sh
+++ b/lgsm/modules/fix_squad.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_squad.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Squad.
diff --git a/lgsm/modules/fix_st.sh b/lgsm/modules/fix_st.sh
index 4d100c6fc..bbd9890bd 100644
--- a/lgsm/modules/fix_st.sh
+++ b/lgsm/modules/fix_st.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_rust.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Stationeers.
diff --git a/lgsm/modules/fix_steamcmd.sh b/lgsm/modules/fix_steamcmd.sh
index 2a2076072..0ba5c85b2 100644
--- a/lgsm/modules/fix_steamcmd.sh
+++ b/lgsm/modules/fix_steamcmd.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_steamcmd.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with SteamCMD.
diff --git a/lgsm/modules/fix_terraria.sh b/lgsm/modules/fix_terraria.sh
index dc734b6fd..0d45e257f 100644
--- a/lgsm/modules/fix_terraria.sh
+++ b/lgsm/modules/fix_terraria.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_terraria.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Terraria.
diff --git a/lgsm/modules/fix_tf2.sh b/lgsm/modules/fix_tf2.sh
index fe7de8278..105026488 100644
--- a/lgsm/modules/fix_tf2.sh
+++ b/lgsm/modules/fix_tf2.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_tf2.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Team Fortress 2.
diff --git a/lgsm/modules/fix_ts3.sh b/lgsm/modules/fix_ts3.sh
index 5c80aa15e..0f081cb37 100644
--- a/lgsm/modules/fix_ts3.sh
+++ b/lgsm/modules/fix_ts3.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_ts3.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Teamspeak 3.
diff --git a/lgsm/modules/fix_unt.sh b/lgsm/modules/fix_unt.sh
index 9afdce337..dbe64ffd6 100644
--- a/lgsm/modules/fix_unt.sh
+++ b/lgsm/modules/fix_unt.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_rust.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Unturned.
diff --git a/lgsm/modules/fix_ut.sh b/lgsm/modules/fix_ut.sh
index ded65ddad..3da5c068c 100644
--- a/lgsm/modules/fix_ut.sh
+++ b/lgsm/modules/fix_ut.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_ut.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Unreal Tournament.
diff --git a/lgsm/modules/fix_ut2k4.sh b/lgsm/modules/fix_ut2k4.sh
index 5da1eee12..4b9d35011 100644
--- a/lgsm/modules/fix_ut2k4.sh
+++ b/lgsm/modules/fix_ut2k4.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_ut2k4.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Unreal Tournament 2004.
diff --git a/lgsm/modules/fix_ut3.sh b/lgsm/modules/fix_ut3.sh
index 386833efc..aa5c5e464 100644
--- a/lgsm/modules/fix_ut3.sh
+++ b/lgsm/modules/fix_ut3.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_ut2.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Unreal Tournament 3.
diff --git a/lgsm/modules/fix_wurm.sh b/lgsm/modules/fix_wurm.sh
index b6f5762f5..6f17ccd76 100644
--- a/lgsm/modules/fix_wurm.sh
+++ b/lgsm/modules/fix_wurm.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_wurm.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Wurm Unlimited.
diff --git a/lgsm/modules/fix_xnt.sh b/lgsm/modules/fix_xnt.sh
new file mode 100644
index 000000000..44b51c5de
--- /dev/null
+++ b/lgsm/modules/fix_xnt.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# LinuxGSM fix_xnt.sh module
+# Author: Daniel Gibbs
+# Contributors: https://linuxgsm.com/contrib
+# Website: https://linuxgsm.com
+# Description: Install Xonotic Default Config
+
+moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
+
+# Create the directory if it doesn't exist
+if [ ! -d "${systemdir}/${selfname}/data" ]; then
+ mkdir -p "${systemdir}/${selfname}/data"
+fi
diff --git a/lgsm/modules/fix_zmr.sh b/lgsm/modules/fix_zmr.sh
index a88d82f34..5b42eeccf 100644
--- a/lgsm/modules/fix_zmr.sh
+++ b/lgsm/modules/fix_zmr.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM fix_sfc.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issues with Zombie Master: Reborn.
diff --git a/lgsm/modules/info_distro.sh b/lgsm/modules/info_distro.sh
index adcdb759b..0813554dc 100644
--- a/lgsm/modules/info_distro.sh
+++ b/lgsm/modules/info_distro.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM info_distro.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://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.
@@ -29,8 +29,8 @@ kernel="$(uname -r)" # Kernel e.g. 2.6.32-042stab120.16
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}')" # e.g. Ubuntu 22.04.3 LTS
- distroversion="$(grep "VERSION_ID" /etc/os-release | awk -F= '{gsub(/"/,"",$2);print $2}')" # e.g. 22.04
+ 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
diff --git a/lgsm/modules/info_game.sh b/lgsm/modules/info_game.sh
index 497a65f22..a9d9834b0 100644
--- a/lgsm/modules/info_game.sh
+++ b/lgsm/modules/info_game.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM info_game.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://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.
@@ -496,12 +496,13 @@ fn_info_game_kf() {
fn_info_game_ini "lanport" "LANServerPort"
fn_info_game_ini "maxplayers" "MaxPlayers"
fn_info_game_ini "port" "Port"
- fn_info_game_ini "queryportgs" "QueryPort"
+ fn_info_game_ini "gamespyqueryport" "OldQueryPortNumber"
fn_info_game_ini "servername" "ServerName"
fn_info_game_ini "serverpassword" "GamePassword"
fi
adminpassword="${adminpassword:-"NOT SET"}"
defaultmap="${defaultmap:-"NOT SET"}"
+ gamespyqueryport="${gamespyqueryport:-"0"}" # Gamespy Query Port
httpenabled="${httpenabled:-"NOT SET"}"
httppassword="${adminpassword}"
httpport="${httpport:-"0"}"
@@ -509,12 +510,11 @@ fn_info_game_kf() {
lanport="${lanport:-"0"}"
maxplayers="${maxplayers:-"0"}"
port="${port:-"0"}"
- queryport="$((port + 1))"
- queryportgs="${queryportgs:-"0"}"
+ queryport=$((28902 + (port - 7757))) # Valve Query Port
servername="${servername:-"NOT SET"}"
serverpassword="${serverpassword:-"NOT SET"}"
- steamport="28852"
- steamworksport="20560"
+ steamport="20610"
+ unreal2queryport="$((port + 1))" # Unreal2 Query Port
}
# Config Type: ini
@@ -754,19 +754,19 @@ fn_info_game_ts3() {
fn_info_game_ini "dbplugin" "dbplugin"
fn_info_game_ini "fileport" "filetransfer_port"
fn_info_game_ini "port" "default_voice_port"
- fn_info_game_ini "queryhttpport" "query_http_port"
- fn_info_game_ini "queryhttpsport" "query_https_port"
+ fn_info_game_ini "httpqueryport" "query_http_port"
+ fn_info_game_ini "httpsqueryport" "query_https_port"
fn_info_game_ini "queryport" "query_port"
- fn_info_game_ini "querysshport" "query_ssh_port"
+ fn_info_game_ini "sshqueryport" "query_ssh_port"
fi
configip="${configip:-"0.0.0.0"}"
dbplugin="${dbplugin:-"NOT SET"}"
fileport="${fileport:-"0"}"
port="${port:-"0"}"
- queryhttpport="${queryhttpport:-"0"}"
- queryhttpsport="${queryhttpsport:-"0"}"
+ httpqueryport="${httpqueryport:-"0"}"
+ httpsqueryport="${httpsqueryport:-"0"}"
queryport="${queryport:-"0"}"
- querysshport="${querysshport:-"0"}"
+ sshqueryport="${sshqueryport:-"0"}"
telnetport="${queryport}"
}
@@ -797,7 +797,7 @@ fn_info_game_ut99() {
fn_info_game_ini "adminpassword" "AdminPassword"
fn_info_game_ini "beaconport" "ServerBeaconPort"
fn_info_game_ini "port" "Port"
- fn_info_game_ini "queryportgs" "OldQueryPortNumber"
+ fn_info_game_ini "gamespyqueryport" "OldQueryPortNumber"
fn_info_game_ini "servername" "ServerName"
fn_info_game_ini "serverpassword" "GamePassword"
fn_info_game_ini "httpenabled" "bEnabled"
@@ -811,7 +811,7 @@ fn_info_game_ut99() {
httpport="${httpport:-"0"}"
port="${port:-"0"}"
queryport="$((port + 1))"
- queryportgs="${queryportgs:-"0"}"
+ gamespyqueryport="${gamespyqueryport:-"0"}"
servername="${servername:-"NOT SET"}"
serverpassword="${serverpassword:-"NOT SET"}"
httpenabled="${httpenabled:-"0"}"
@@ -857,7 +857,7 @@ fn_info_game_unreal2() {
fn_info_game_ini "adminpassword" "AdminPassword"
fn_info_game_ini "httpport" "ListenPort"
fn_info_game_ini "port" "Port"
- fn_info_game_ini "queryportgs" "OldQueryPortNumber"
+ fn_info_game_ini "gamespyqueryport" "OldQueryPortNumber"
fn_info_game_ini "servername" "ServerName"
fn_info_game_ini "serverpassword" "GamePassword"
fn_info_game_ini "httpenabled" "bEnabled"
@@ -868,7 +868,7 @@ fn_info_game_unreal2() {
httpport="${httpport:-"0"}"
port="${port:-"0"}"
queryport="$((port + 1))"
- queryportgs="${queryportgs:-"0"}"
+ gamespyqueryport="${gamespyqueryport:-"0"}"
servername="${servername:-"NOT SET"}"
serverpassword="${serverpassword:-"NOT SET"}"
httpenabled="${httpenabled:-"0"}"
@@ -902,7 +902,7 @@ fn_info_game_ut2k4() {
fn_info_game_ini "httpport" "ListenPort"
fn_info_game_ini "lanport" "LANServerPort"
fn_info_game_ini "port" "Port"
- fn_info_game_ini "queryportgs" "OldQueryPortNumber"
+ fn_info_game_ini "gamespyqueryport" "OldQueryPortNumber"
fn_info_game_ini "servername" "ServerName"
fn_info_game_ini "serverpassword" "GamePassword"
fn_info_game_ini "httpenabled" "bEnabled"
@@ -914,7 +914,7 @@ fn_info_game_ut2k4() {
lanport="${lanport:-"0"}"
port="${port:-"0"}"
queryport="$((port + 1))"
- queryportgs="${queryportgs:-"0"}"
+ gamespyqueryport="${gamespyqueryport:-"0"}"
servername="${servername:-"NOT SET"}"
serverpassword="${serverpassword:-"NOT SET"}"
httpenabled="${httpenabled:-"0"}"
@@ -1160,7 +1160,7 @@ 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"}"
@@ -1174,11 +1174,11 @@ 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 "password" "sv_password"
+ fn_info_game_valve_keyvalues "serverpassword" "sv_password"
fi
defaultmap="${defaultmap:-"NOT SET"}"
maxplayers="${maxplayers:-"0"}"
- password="${password:-"NOT SET"}"
+ serverpassword="${serverpassword:-"NOT SET"}"
port="${port:-"0"}"
queryport="${port:-"0"}"
servername="${servername:-"NOT SET"}"
@@ -1510,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
@@ -1779,6 +1761,11 @@ fn_info_game_qw() {
servername="${servername:-"NOT SET"}"
}
+# Config Type: ini
+# Parameters: true
+# Comment: ; or #
+# Example: ServerName=SERVERNAME
+# Filetype: ini
fn_info_game_ro() {
if [ -f "${servercfgfullpath}" ]; then
fn_info_game_ini "adminpassword" "AdminPassword"
@@ -1789,7 +1776,6 @@ fn_info_game_ro() {
fn_info_game_ini "lanport" "LANServerPort"
fn_info_game_ini "maxplayers" "MaxPlayers"
fn_info_game_ini "port" "Port"
- fn_info_game_ini "queryportgs" "QueryPort"
fn_info_game_ini "servername" "ServerName"
fn_info_game_ini "serverpassword" "GamePassword"
fi
@@ -1802,12 +1788,11 @@ fn_info_game_ro() {
lanport="${lanport:-"0"}"
maxplayers="${maxplayers:-"0"}"
port="${port:-"0"}"
- queryport="$((port + 1))"
- queryportgs="${queryportgs:-"0"}"
+ queryport=$((28902 + (port - 7757))) # Valve Query Port
servername="${servername:-"NOT SET"}"
serverpassword="${serverpassword:-"NOT SET"}"
- steamport="28902"
- steamworksport="20610"
+ steamport="20610"
+ unreal2queryport="$((port + 1))" # Unreal2 Query Port
}
# Config Type: QuakeC
@@ -1988,7 +1973,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"}"
@@ -2006,6 +1991,19 @@ fn_info_game_sf() {
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"
@@ -2247,6 +2245,23 @@ fn_info_game_wf() {
servername="${servername:-"NOT SET"}"
}
+# Config Type: QuakeC
+# Comment: //
+# Filetype: cfg
+fn_info_game_xnt() {
+ if [ -f "${servercfgfullpath}" ]; then
+ fn_info_game_keyvalue_pairs_space "maxplayers" "maxplayers"
+ fn_info_game_keyvalue_pairs_space "port" "port"
+ fn_info_game_keyvalue_pairs_space "rconpassword" "rcon_password"
+ fn_info_game_keyvalue_pairs_space "servername" "hostname"
+ fi
+ maxplayers="${maxplayers:-"8"}"
+ port="${port:-"0"}"
+ queryport="${port}"
+ rconpassword="${rconpassword:-"NOT SET"}"
+ servername="${servername:-"NOT SET"}"
+}
+
fn_info_game_wmc() {
if [ ! -f "${servercfgfullpath}" ]; then
servername="${unavailable}"
@@ -2375,8 +2390,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
@@ -2427,6 +2440,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
@@ -2481,6 +2496,8 @@ elif [ "${engine}" == "source" ] || [ "${engine}" == "goldsrc" ]; then
fn_info_game_source
elif [ "${engine}" == "unreal2" ]; then
fn_info_game_unreal2
+elif [ "${shortname}" == "xnt" ]; then
+ fn_info_game_xnt
fi
# Public IP address
@@ -2496,12 +2513,12 @@ if [ ! -f "${tmpdir}/publicip.json" ] || [ "$(find "${tmpdir}/publicip.json" -mm
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"
+ # 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
# Fallback to myip.wtf if the initial request failed or timed out
apiurl="https://myip.wtf/json"
@@ -2514,12 +2531,12 @@ if [ ! -f "${tmpdir}/publicip.json" ] || [ "$(find "${tmpdir}/publicip.json" -mm
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"
+ # 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"
@@ -2529,10 +2546,10 @@ if [ ! -f "${tmpdir}/publicip.json" ] || [ "$(find "${tmpdir}/publicip.json" -mm
fi
else
# 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")"
+ 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
# Alert IP address
@@ -2559,11 +2576,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 a1e8f52ac..ff4b5d870 100644
--- a/lgsm/modules/info_messages.sh
+++ b/lgsm/modules/info_messages.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM info_messages.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Defines server info messages for details and alerts.
@@ -30,8 +30,8 @@ fn_info_messages_password_strip() {
httppassword="********"
fi
- if [ "${telnetpass}" ]; then
- telnetpass="********"
+ if [ "${telnetpassword}" ]; then
+ telnetpassword="********"
fi
if [ "${wsapikey}" ]; then
@@ -483,6 +483,11 @@ fn_info_messages_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
@@ -663,7 +668,7 @@ fn_info_messages_ports_edit() {
startparameterslocation="${red}UNKNOWN${default}"
# engines/games that require editing in the config file.
- 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")
+ 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" "xnt" "wurm")
for port_edit in "${ports_edit_array[@]}"; do
if [ "${shortname}" == "ut3" ]; then
startparameterslocation="${servercfgdir}/UTWeb.ini"
@@ -702,6 +707,8 @@ fn_info_messages_ports() {
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
@@ -825,7 +832,7 @@ fn_info_messages_armar() {
{
fn_port "header"
fn_port "Game" port udp
- fn_port "Steam Query" queryport udp
+ fn_port "Query" queryport udp
fn_port "BattleEye" battleeyeport tcp
} | column -s $'\t' -t
}
@@ -1122,11 +1129,11 @@ fn_info_messages_kf() {
{
fn_port "header"
fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Query (GameSpy)" queryportgs udp
+ fn_port "Query - Steam" queryport udp
+ fn_port "Query - Unreal 2" unreal2queryport udp
+ fn_port "Query - Gamespy" gamespyqueryport udp
fn_port "Web Interface" httpport tcp
fn_port "LAN" lanport udp
- fn_port "Steamworks P2P" steamworksport udp
fn_port "Steam" steamport udp
} | column -s $'\t' -t
echo -e ""
@@ -1192,14 +1199,6 @@ fn_info_messages_mohaa() {
} | column -s $'\t' -t
}
-fn_info_messages_mom() {
- {
- fn_port "header"
- fn_port "Game" port udp
- fn_port "Beacon" beaconport udp
- } | column -s $'\t' -t
-}
-
fn_info_messages_mta() {
{
fn_port "header"
@@ -1344,11 +1343,12 @@ fn_info_messages_ro() {
{
fn_port "header"
fn_port "Game" port udp
- fn_port "Query" queryport udp
+ fn_port "Query - Steam" queryport udp
+ fn_port "Query - Unreal 2" unreal2queryport udp
fn_port "Web Interface" httpport tcp
fn_port "LAN" lanport udp
- fn_port "Steamworks P2P" steamworksport udp
fn_port "Steam" steamport udp
+
} | column -s $'\t' -t
echo -e ""
echo -e "${bold}${lightgreen}${servername} Web Interface${default}"
@@ -1443,7 +1443,7 @@ fn_info_messages_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
}
@@ -1456,6 +1456,23 @@ fn_info_messages_sf() {
} | column -s $'\t' -t
}
+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"
@@ -1488,7 +1505,7 @@ fn_info_messages_source() {
fn_port "Query" queryport tcp
fn_port "RCON" rconport tcp
fn_port "SourceTV" sourcetvport udp
- # Will not show if unaviable
+ # Will not show if unavailable
if [ "${steamport}" == "0" ] || [ -v "${steamport}" ]; then
fn_port "Steam" steamport udp
fi
@@ -1532,6 +1549,14 @@ fn_info_messages_st() {
} | column -s $'\t' -t
}
+fn_info_messages_stn() {
+ {
+ fn_port "header"
+ fn_port "Game" port udp
+ fn_port "Query" queryport udp
+ } | column -s $'\t' -t
+}
+
fn_info_messages_ti() {
{
fn_port "header"
@@ -1546,9 +1571,9 @@ fn_info_messages_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 "Query (SSH)" sshqueryport tcp
+ fn_port "Query (http)" httpqueryport tcp
+ fn_port "Query (https)" httpsqueryport tcp
fn_port "File Transfer" fileport tcp
fn_port "Telnet" telnetport tcp
} | column -s $'\t' -t
@@ -1593,8 +1618,8 @@ fn_info_messages_ut2k4() {
{
fn_port "header"
fn_port "Game" port udp
- fn_port "Query" queryport udp
- fn_port "Query (GameSpy)" queryportgs udp
+ fn_port "Query - Unreal 2" queryport udp
+ fn_port "Query - Gamespy" gamespyqueryport udp
fn_port "Web Interface" httpport tcp
fn_port "LAN" lanport udp
} | column -s $'\t' -t
@@ -1712,7 +1737,7 @@ fn_info_messages_wurm() {
} | column -s $'\t' -t
}
-fn_info_messages_stn() {
+fn_info_messages_xnt() {
{
fn_port "header"
fn_port "Game" port udp
@@ -1804,8 +1829,6 @@ fn_info_messages_select_engine() {
fn_info_messages_mh
elif [ "${shortname}" == "mohaa" ]; then
fn_info_messages_mohaa
- elif [ "${shortname}" == "mom" ]; then
- fn_info_messages_mom
elif [ "${shortname}" == "mta" ]; then
fn_info_messages_mta
elif [ "${shortname}" == "nec" ]; then
@@ -1852,6 +1875,8 @@ fn_info_messages_select_engine() {
fn_info_messages_sdtd
elif [ "${shortname}" == "sf" ]; then
fn_info_messages_sf
+ elif [ "${shortname}" == "sm" ]; then
+ fn_info_messages_sm
elif [ "${shortname}" == "sof2" ]; then
fn_info_messages_sof2
elif [ "${shortname}" == "sol" ]; then
@@ -1898,6 +1923,8 @@ fn_info_messages_select_engine() {
fn_info_messages_wf
elif [ "${shortname}" == "wurm" ]; then
fn_info_messages_wurm
+ elif [ "${shortname}" == "xnt" ]; then
+ fn_info_messages_xnt
elif [ "${engine}" == "goldsrc" ]; then
fn_info_messages_goldsrc
elif [ "${engine}" == "prism3d" ]; then
diff --git a/lgsm/modules/info_stats.sh b/lgsm/modules/info_stats.sh
index dcc247b59..c8a96552a 100644
--- a/lgsm/modules/info_stats.sh
+++ b/lgsm/modules/info_stats.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM info_stats.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Collect optional Stats sent to LinuxGSM project.
# Uses Google analytics.
diff --git a/lgsm/modules/install_complete.sh b/lgsm/modules/install_complete.sh
index 5a9873067..0ee01954a 100644
--- a/lgsm/modules/install_complete.sh
+++ b/lgsm/modules/install_complete.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_complete.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Prints installation completion message and hints.
diff --git a/lgsm/modules/install_config.sh b/lgsm/modules/install_config.sh
index 9b3146770..f4005c6f8 100644
--- a/lgsm/modules/install_config.sh
+++ b/lgsm/modules/install_config.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_config.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Creates default server configs.
@@ -62,14 +62,21 @@ fn_default_config_local() {
fn_messages_separator
echo -e "Copying default configs."
fn_check_cfgdir
- echo -en "copying config file [ ${italic}${servercfgdefault}${default} ]"
- cp -n "${servercfgdir}/${servercfgdefault}" "${servercfgfullpath}"
+
+ # Check if the directory for ${servercfgfullpath} exists, if not, create it
+ if [ ! -d "$(dirname "${servercfgfullpath}")" ]; then
+ mkdir -p "$(dirname "${servercfgfullpath}")"
+ fi
+
+ echo -en "copying config file [ ${italic}${servercfgdefault}${default} ]: "
+ cp --update=none "${servercfgdir}/${servercfgdefault}" "${servercfgfullpath}"
+ exitcode=$?
if [ "${exitcode}" != 0 ]; then
fn_print_fail_eol
- fn_script_log_fail "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} ]"
+ fn_script_log_pass "copying config file [ ${servercfgdefault} ]: "
fi
}
@@ -589,12 +596,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)
@@ -701,6 +702,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
@@ -838,6 +842,13 @@ elif [ "${shortname}" == "wmc" ]; then
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
+ fn_list_config_locations
+elif [ "${shortname}" == "xnt" ]; then
+ array_configs+=(server.cfg)
+ fn_fetch_default_config
+ fn_default_config_remote
+ fn_set_config_vars
+ fn_list_config_locations
elif [ "${shortname}" == "wurm" ]; then
array_configs+=(server.cfg)
fn_fetch_default_config
diff --git a/lgsm/modules/install_dst_token.sh b/lgsm/modules/install_dst_token.sh
index 89ec00a90..fd0b4727b 100644
--- a/lgsm/modules/install_dst_token.sh
+++ b/lgsm/modules/install_dst_token.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_dst_token.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Configures Don't Starve Together cluster with given token.
diff --git a/lgsm/modules/install_eula.sh b/lgsm/modules/install_eula.sh
index 7f7f95f35..272ff205a 100644
--- a/lgsm/modules/install_eula.sh
+++ b/lgsm/modules/install_eula.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_eula.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Gets user to accept the EULA.
diff --git a/lgsm/modules/install_factorio_save.sh b/lgsm/modules/install_factorio_save.sh
index 589a9d8ed..5dfb4758c 100644
--- a/lgsm/modules/install_factorio_save.sh
+++ b/lgsm/modules/install_factorio_save.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_factorio_save.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Creates the initial save file for Factorio.
diff --git a/lgsm/modules/install_gslt.sh b/lgsm/modules/install_gslt.sh
index aa8d89d33..960b1e20c 100644
--- a/lgsm/modules/install_gslt.sh
+++ b/lgsm/modules/install_gslt.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_gslt.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Configures GSLT.
diff --git a/lgsm/modules/install_header.sh b/lgsm/modules/install_header.sh
index a7f1f9ddb..8fad78d2c 100644
--- a/lgsm/modules/install_header.sh
+++ b/lgsm/modules/install_header.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_header.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Prints installation header.
diff --git a/lgsm/modules/install_logs.sh b/lgsm/modules/install_logs.sh
index 294bc1e46..3e522a082 100644
--- a/lgsm/modules/install_logs.sh
+++ b/lgsm/modules/install_logs.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_logs.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Creates log directories.
diff --git a/lgsm/modules/install_mta_resources.sh b/lgsm/modules/install_mta_resources.sh
index bafdbdbf1..f13c39abd 100644
--- a/lgsm/modules/install_mta_resources.sh
+++ b/lgsm/modules/install_mta_resources.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_mta_resources.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://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.
diff --git a/lgsm/modules/install_retry.sh b/lgsm/modules/install_retry.sh
index 1fc4bf36a..71417a73f 100644
--- a/lgsm/modules/install_retry.sh
+++ b/lgsm/modules/install_retry.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_retry.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Asks for installation retry after failure.
diff --git a/lgsm/modules/install_server_dir.sh b/lgsm/modules/install_server_dir.sh
index 0703e0c54..2922f397a 100644
--- a/lgsm/modules/install_server_dir.sh
+++ b/lgsm/modules/install_server_dir.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_server_dir.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Creates the server directory.
diff --git a/lgsm/modules/install_server_files.sh b/lgsm/modules/install_server_files.sh
index c5fe822ad..baa18aef7 100644
--- a/lgsm/modules/install_server_files.sh
+++ b/lgsm/modules/install_server_files.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_server_files.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Installs server files.
@@ -12,196 +12,224 @@ fn_install_server_files() {
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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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}"
local_filename="nquake.server.linux.190506.full.tar.xz"
- chmodx="nochmodx" run="norun"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ 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"
+ remote_fileurl="http://linuxgsm.download/UnrealTournament3/UT3-linux-server-2.1-openspy.tar.xz"
local_filedir="${tmpdir}"
- local_filename="UT3-linux-server-2.1.tar.xz"
- chmodx="nochmodx" run="norun"
+ local_filename="UT3-linux-server-2.1-openspy.tar.xz"
+ chmodx="nochmodx"
+ run="norun"
force="noforce"
- md5="8876cca61e3f83ea08db25208bde6ac6"
+ md5="f60b745613a8676666eb6a2450cbdc8e"
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"
+ 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"
+ chmodx="nochmodx"
+ run="norun"
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"
+ 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"
+ chmodx="nochmodx"
+ run="norun"
force="noforce"
md5="0188ae86dbc9376f11ae3032dba2d665"
else
@@ -210,6 +238,7 @@ fn_install_server_files() {
fi
fn_fetch_file "${remote_fileurl}" "" "" "" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
fn_dl_extract "${local_filedir}" "${local_filename}" "${serverfiles}"
+ fn_clear_tmp
}
echo -e ""
@@ -247,6 +276,8 @@ elif [ "${shortname}" == "vints" ]; then
elif [ "${shortname}" == "ut99" ]; then
fn_install_server_files
update_ut99.sh
+elif [ "${shortname}" == "xnt" ]; then
+ update_xnt.sh
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
diff --git a/lgsm/modules/install_squad_license.sh b/lgsm/modules/install_squad_license.sh
index 28f4456a5..0bb71c4a8 100644
--- a/lgsm/modules/install_squad_license.sh
+++ b/lgsm/modules/install_squad_license.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_squad_license.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Configures the Squad server's license.
diff --git a/lgsm/modules/install_stats.sh b/lgsm/modules/install_stats.sh
index 40a13434d..fa43c280f 100644
--- a/lgsm/modules/install_stats.sh
+++ b/lgsm/modules/install_stats.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_stats.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Enabled LinuxGSM Stats.
diff --git a/lgsm/modules/install_steamcmd.sh b/lgsm/modules/install_steamcmd.sh
index 50599ebd5..475544a6a 100644
--- a/lgsm/modules/install_steamcmd.sh
+++ b/lgsm/modules/install_steamcmd.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_steamcmd.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Downloads SteamCMD on install.
diff --git a/lgsm/modules/install_ts3db.sh b/lgsm/modules/install_ts3db.sh
index 464bd686a..c8f90a9cf 100644
--- a/lgsm/modules/install_ts3db.sh
+++ b/lgsm/modules/install_ts3db.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_ts3db.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Installs the database server MariaDB for TeamSpeak 3.
diff --git a/lgsm/modules/install_ut2k4_key.sh b/lgsm/modules/install_ut2k4_key.sh
index 6fbd2a838..7ffbba20c 100644
--- a/lgsm/modules/install_ut2k4_key.sh
+++ b/lgsm/modules/install_ut2k4_key.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM install_ut2k4_key.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Activates ut2k4 server with given key.
diff --git a/lgsm/modules/mods_core.sh b/lgsm/modules/mods_core.sh
index 1b85a95b3..aa24d903f 100644
--- a/lgsm/modules/mods_core.sh
+++ b/lgsm/modules/mods_core.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_mods_install.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Core modules for mods list/install/update/remove
diff --git a/lgsm/modules/mods_list.sh b/lgsm/modules/mods_list.sh
index c13565004..d6622d1b2 100644
--- a/lgsm/modules/mods_list.sh
+++ b/lgsm/modules/mods_list.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM mods_list.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://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;
@@ -68,7 +68,7 @@ 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
@@ -78,34 +78,34 @@ stripperdownloadurl="http://www.bailopan.net/stripper/snapshots/1.2/${stripperla
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
-valheimpluslatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/Grantapher/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://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)
diff --git a/lgsm/modules/query_gamedig.sh b/lgsm/modules/query_gamedig.sh
index efac18d45..f370fae97 100644
--- a/lgsm/modules/query_gamedig.sh
+++ b/lgsm/modules/query_gamedig.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM query_gamedig.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Querys a gameserver using node-gamedig.
# https://github.com/gamedig/node-gamedig
diff --git a/lgsm/modules/query_gsquery.py b/lgsm/modules/query_gsquery.py
index 788789f0a..ecdf8165c 100644
--- a/lgsm/modules/query_gsquery.py
+++ b/lgsm/modules/query_gsquery.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
# LinuxGSM query_gsquery.py module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Allows querying of various game servers.
diff --git a/lgsm/modules/update_fctr.sh b/lgsm/modules/update_fctr.sh
index 8fb78ede3..b64812319 100644
--- a/lgsm/modules/update_fctr.sh
+++ b/lgsm/modules/update_fctr.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM update_fctr.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of Factorio servers.
diff --git a/lgsm/modules/update_jk2.sh b/lgsm/modules/update_jk2.sh
index e2715c01c..ed4886a48 100644
--- a/lgsm/modules/update_jk2.sh
+++ b/lgsm/modules/update_jk2.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM update_jk2.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of Jedi Knight 2 servers.
diff --git a/lgsm/modules/update_mc.sh b/lgsm/modules/update_mc.sh
index 40038ddeb..6ece44da4 100644
--- a/lgsm/modules/update_mc.sh
+++ b/lgsm/modules/update_mc.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM update_mc.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of Minecraft: Java Edition servers.
diff --git a/lgsm/modules/update_mcb.sh b/lgsm/modules/update_mcb.sh
index 7bd273d66..55b3586fd 100644
--- a/lgsm/modules/update_mcb.sh
+++ b/lgsm/modules/update_mcb.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM update_mcb.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of Minecraft Bedrock servers.
diff --git a/lgsm/modules/update_mta.sh b/lgsm/modules/update_mta.sh
index c6f7dfcb0..b93dc9af1 100644
--- a/lgsm/modules/update_mta.sh
+++ b/lgsm/modules/update_mta.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM update_mta.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of Multi Theft Auto servers.
diff --git a/lgsm/modules/update_pmc.sh b/lgsm/modules/update_pmc.sh
index 5d44bee21..b3c7d0dc2 100644
--- a/lgsm/modules/update_pmc.sh
+++ b/lgsm/modules/update_pmc.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM update_pmc.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of PaperMC and Waterfall servers.
diff --git a/lgsm/modules/update_steamcmd.sh b/lgsm/modules/update_steamcmd.sh
index 20a85ab93..ccc8d6b36 100644
--- a/lgsm/modules/update_steamcmd.sh
+++ b/lgsm/modules/update_steamcmd.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM update_steamcmd.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating using SteamCMD.
diff --git a/lgsm/modules/update_ts3.sh b/lgsm/modules/update_ts3.sh
index 1fa77f428..30ddf2801 100644
--- a/lgsm/modules/update_ts3.sh
+++ b/lgsm/modules/update_ts3.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_ts3.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of Teamspeak 3 servers.
diff --git a/lgsm/modules/update_ut99.sh b/lgsm/modules/update_ut99.sh
index 6d0be1941..cb74ec3b7 100644
--- a/lgsm/modules/update_ut99.sh
+++ b/lgsm/modules/update_ut99.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM command_ut99.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of Unreal Tournament 99 servers.
diff --git a/lgsm/modules/update_vints.sh b/lgsm/modules/update_vints.sh
index 403917e0c..2f7f857a1 100644
--- a/lgsm/modules/update_vints.sh
+++ b/lgsm/modules/update_vints.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# LinuxGSM update_vints.sh module
# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
+# Contributors: https://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Handles updating of Vintage Story servers.
diff --git a/lgsm/modules/update_xnt.sh b/lgsm/modules/update_xnt.sh
new file mode 100644
index 000000000..f2cdbe324
--- /dev/null
+++ b/lgsm/modules/update_xnt.sh
@@ -0,0 +1,173 @@
+#!/bin/bash
+# LinuxGSM command_ut99.sh module
+# Author: Daniel Gibbs
+# Contributors: https://linuxgsm.com/contrib
+# Website: https://linuxgsm.com
+# Description: Handles updating of Unreal Tournament 99 servers.
+
+module_selfname="$(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}" "Xonotic"
+ fn_clear_tmp
+}
+
+fn_update_localbuild() {
+ # Gets local build info.
+ fn_print_dots "Checking local build: ${remotelocation}"
+
+ # Send version command to Xonotic server.
+ tmux -L "${socketname}" send-keys -t "${sessionname}" "version\r" > /dev/null 2>&1
+ fn_sleep_time_1
+
+ # Uses log file to get local build.
+ localbuild=$(grep "SVQC version: xonotic-v" "${consolelogdir}"/* 2> /dev/null | tail -1 | sed 's/.*SVQC version: \(xonotic-v[0-9.]*\).*/\1/' | 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() {
+ # Get remote build info.
+ apiurl="https://api.github.com/repos/xonotic/xonotic/tags"
+ remotebuildresponse=$(curl -s "${apiurl}")
+ remotebuildtag=$(echo "${remotebuildresponse}" | jq -r '.[0].name')
+ remotebuildfilename=$(echo "${remotebuildtag}" | tr -d 'v')
+ remotebuildfilename="${remotebuildfilename}.zip"
+ remotebuildurl="https://dl.xonotic.org/${remotebuildfilename}"
+
+ remotebuildversion="${remotebuildtag}"
+
+ 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_fail "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_fail "Unable to get remote build"
+ core_exit.sh
+ fi
+ fi
+}
+
+fn_update_compare() {
+ fn_print_dots "Checking for update: ${remotelocation}"
+ # Update has been found or force update.
+ if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then
+ # Create update lockfile.
+ date '+%s' > "${lockdir:?}/update.lock"
+ 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
+ date +%s > "${lockdir}/last-updated.lock"
+ 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
+ fn_sleep_time_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
+ 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/linuxgsm.sh b/linuxgsm.sh
index 4226415b6..8c83cdc58 100755
--- a/linuxgsm.sh
+++ b/linuxgsm.sh
@@ -24,7 +24,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
-version="v24.2.4"
+version="v24.3.0"
shortname="core"
gameservername="core"
commandname="CORE"
@@ -111,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=$?