From 791096dd481fe2373f53a8b507b40649b10c74c6 Mon Sep 17 00:00:00 2001 From: H3o66 Date: Mon, 7 Nov 2022 22:38:45 +0100 Subject: [PATCH] feat(newserver): Trackmania 2020 --- .../config-lgsm/tm2020server/_default.cfg | 173 ++++++++++++++++++ lgsm/data/almalinux-8.csv | 1 + lgsm/data/almalinux-9.csv | 1 + lgsm/data/centos-7.csv | 1 + lgsm/data/centos-8.csv | 1 + lgsm/data/centos-9.csv | 1 + lgsm/data/debian-10.csv | 1 + lgsm/data/debian-11.csv | 1 + lgsm/data/debian-9.csv | 1 + lgsm/data/rhel-7.csv | 1 + lgsm/data/rhel-8.csv | 1 + lgsm/data/rhel-9.csv | 1 + lgsm/data/rocky-8.csv | 1 + lgsm/data/rocky-9.csv | 1 + lgsm/data/serverlist.csv | 1 + lgsm/data/ubuntu-16.04.csv | 1 + lgsm/data/ubuntu-18.04.csv | 1 + lgsm/data/ubuntu-20.04.csv | 1 + lgsm/data/ubuntu-21.04.csv | 1 + lgsm/data/ubuntu-22.04.csv | 1 + lgsm/functions/info_game.sh | 26 +++ lgsm/functions/info_messages.sh | 13 +- lgsm/functions/install_server_files.sh | 7 + 23 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 lgsm/config-default/config-lgsm/tm2020server/_default.cfg diff --git a/lgsm/config-default/config-lgsm/tm2020server/_default.cfg b/lgsm/config-default/config-lgsm/tm2020server/_default.cfg new file mode 100644 index 0000000000..61f30904d9 --- /dev/null +++ b/lgsm/config-default/config-lgsm/tm2020server/_default.cfg @@ -0,0 +1,173 @@ +################################## +######## Default Settings ######## +################################## +# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! +# Copy settings from here and use them in either: +# common.cfg - applies settings to every instance. +# [instance].cfg - applies settings to a specific instance. + +#### Game Server Settings #### + +## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters +gamesettings="Matchsettings/test.txt" + +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +startparameters="/noDaemon /game_Settings=${gamesettings} /dedicated_cfg=${servercfg}" + +#### LinuxGSM Settings #### + +## LinuxGSM Stats +# Send useful stats to LinuxGSM developers. +# https://docs.linuxgsm.com/configuration/linuxgsm-stats +# (on|off) +stats="off" + +## Notification Alerts +# (on|off) + +# Display IP | https://docs.linuxgsm.com/alerts#display-ip +displayip="" + +# More info | https://docs.linuxgsm.com/alerts#more-info +postalert="off" + +# Discord Alerts | https://docs.linuxgsm.com/alerts/discord +discordalert="off" +discordwebhook="webhook" + +# Email Alerts | https://docs.linuxgsm.com/alerts/email +emailalert="off" +email="email@example.com" +emailfrom="" + +# 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" + +# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun +mailgunalert="off" +mailgunapiregion="us" +mailguntoken="accesstoken" +mailgundomain="example.com" +mailgunemailfrom="alert@example.com" +mailgunemail="email@myemail.com" + +# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet +pushbulletalert="off" +pushbullettoken="accesstoken" +channeltag="" + +# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover +pushoveralert="off" +pushovertoken="accesstoken" +pushoveruserkey="userkey" + +# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat +rocketchatalert="off" +rocketchatwebhook="webhook" +rocketchattoken="" + +# Slack Alerts | https://docs.linuxgsm.com/alerts/slack +slackalert="off" +slackwebhook="webhook" + +# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram +# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring". +# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help". +telegramapi="api.telegram.org" +telegramalert="off" +telegramtoken="accesstoken" +telegramchatid="" +curlcustomstring="" + +## Updating | https://docs.linuxgsm.com/commands/update +updateonstart="off" + +## Backup | https://docs.linuxgsm.com/commands/backup +maxbackups="4" +maxbackupdays="30" +stoponbackup="on" + +## Logging | https://docs.linuxgsm.com/features/logging +consolelogging="on" +logdays="7" + +## Monitor | https://docs.linuxgsm.com/commands/monitor +# Query delay time +querydelay="1" + +## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors +ansi="on" + +#### Advanced Settings #### + +## Message Display Time | https://docs.linuxgsm.com/features/message-display-time +sleeptime="0.5" + +## Stop Mode | https://docs.linuxgsm.com/features/stop-mode +# 1: tmux kill +# 2: CTRL+c +# 3: quit +# 4: quit 120s +# 5: stop +# 6: q +# 7: exit +# 8: 7 Days to Die +# 9: GoldSrc +# 10: Avorion +# 11: end +stopmode="2" + +## Query mode +# 1: session only +# 2: gamedig (gsquery fallback) +# 3: gamedig +# 4: gsquery +# 5: tcp +querymode="5" +querytype="" + +## Console type +consoleverbose="no" +consoleinteract="no" + +## Game Server Details +# Do not edit +gamename="Trackmania 2020" +engine="maniaplanet" +glibc="2.18" + +#### Directories #### +# Edit with care + +## Game Server Directories +systemdir="${serverfiles}" +executabledir="${serverfiles}" +executable="./TrackmaniaServer" +servercfgdir="${systemdir}/UserData/Config" +servercfg="${selfname}.xml" +servercfgdefault="server.xml" +servercfgfullpath="${servercfgdir}/${servercfg}" + +## Backup Directory +backupdir="${lgsmdir}/backup" + +## Logging Directories +logdir="${rootdir}/log" +gamelogdir="${systemdir}/Logs" +lgsmlogdir="${logdir}/script" +consolelogdir="${logdir}/console" +lgsmlog="${lgsmlogdir}/${selfname}-script.log" +consolelog="${consolelogdir}/${selfname}-console.log" +alertlog="${lgsmlogdir}/${selfname}-alert.log" +postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log" + +## Logs Naming +lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" +consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" diff --git a/lgsm/data/almalinux-8.csv b/lgsm/data/almalinux-8.csv index 0bc76a1a62..a7b4e9fd3a 100644 --- a/lgsm/data/almalinux-8.csv +++ b/lgsm/data/almalinux-8.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/almalinux-9.csv b/lgsm/data/almalinux-9.csv index 0bc76a1a62..a7b4e9fd3a 100644 --- a/lgsm/data/almalinux-9.csv +++ b/lgsm/data/almalinux-9.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/centos-7.csv b/lgsm/data/centos-7.csv index 9ae62611da..0b2c912db1 100644 --- a/lgsm/data/centos-7.csv +++ b/lgsm/data/centos-7.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/centos-8.csv b/lgsm/data/centos-8.csv index 0d680e7604..5f02d0e668 100644 --- a/lgsm/data/centos-8.csv +++ b/lgsm/data/centos-8.csv @@ -107,6 +107,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/centos-9.csv b/lgsm/data/centos-9.csv index 0d680e7604..5f02d0e668 100644 --- a/lgsm/data/centos-9.csv +++ b/lgsm/data/centos-9.csv @@ -107,6 +107,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/debian-10.csv b/lgsm/data/debian-10.csv index 82c79d1922..093b581c83 100644 --- a/lgsm/data/debian-10.csv +++ b/lgsm/data/debian-10.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl4-gnutls-dev:i386 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/debian-11.csv b/lgsm/data/debian-11.csv index 158f6222bb..d9f3c8238e 100644 --- a/lgsm/data/debian-11.csv +++ b/lgsm/data/debian-11.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl4-gnutls-dev:i386 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/debian-9.csv b/lgsm/data/debian-9.csv index f03c39f6a4..fd7270590b 100644 --- a/lgsm/data/debian-9.csv +++ b/lgsm/data/debian-9.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl4-gnutls-dev:i386 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/rhel-7.csv b/lgsm/data/rhel-7.csv index 58dda5d201..7e639bf0dd 100644 --- a/lgsm/data/rhel-7.csv +++ b/lgsm/data/rhel-7.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/rhel-8.csv b/lgsm/data/rhel-8.csv index 8f0d5a30fd..85fa2ba2cf 100644 --- a/lgsm/data/rhel-8.csv +++ b/lgsm/data/rhel-8.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/rhel-9.csv b/lgsm/data/rhel-9.csv index 8f0d5a30fd..85fa2ba2cf 100644 --- a/lgsm/data/rhel-9.csv +++ b/lgsm/data/rhel-9.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/rocky-8.csv b/lgsm/data/rocky-8.csv index 0bc76a1a62..a7b4e9fd3a 100644 --- a/lgsm/data/rocky-8.csv +++ b/lgsm/data/rocky-8.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/rocky-9.csv b/lgsm/data/rocky-9.csv index 0bc76a1a62..a7b4e9fd3a 100644 --- a/lgsm/data/rocky-9.csv +++ b/lgsm/data/rocky-9.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl.i686 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/serverlist.csv b/lgsm/data/serverlist.csv index a33bbf816b..30cb628522 100644 --- a/lgsm/data/serverlist.csv +++ b/lgsm/data/serverlist.csv @@ -108,6 +108,7 @@ tf2,tf2server,Team Fortress 2 tfc,tfcserver,Team Fortress Classic ti,tiserver,The Isle ts,tsserver,The Specialists +tm2020,tm2020server,Trackmania 2020 ts3,ts3server,Teamspeak 3 tu,tuserver,Tower Unite tw,twserver,Teeworlds diff --git a/lgsm/data/ubuntu-16.04.csv b/lgsm/data/ubuntu-16.04.csv index fdbcd12d0c..8e09905273 100644 --- a/lgsm/data/ubuntu-16.04.csv +++ b/lgsm/data/ubuntu-16.04.csv @@ -107,6 +107,7 @@ terraria tf2,libcurl4-gnutls-dev:i386 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/ubuntu-18.04.csv b/lgsm/data/ubuntu-18.04.csv index 82c79d1922..093b581c83 100644 --- a/lgsm/data/ubuntu-18.04.csv +++ b/lgsm/data/ubuntu-18.04.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl4-gnutls-dev:i386 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/ubuntu-20.04.csv b/lgsm/data/ubuntu-20.04.csv index 65697649b7..43bc5d6abf 100644 --- a/lgsm/data/ubuntu-20.04.csv +++ b/lgsm/data/ubuntu-20.04.csv @@ -108,6 +108,7 @@ terraria tf2,libcurl4-gnutls-dev:i386 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/ubuntu-21.04.csv b/lgsm/data/ubuntu-21.04.csv index 666f9d864f..c298bad7ab 100644 --- a/lgsm/data/ubuntu-21.04.csv +++ b/lgsm/data/ubuntu-21.04.csv @@ -108,6 +108,7 @@ terraria,libsdl tf2,libcurl4-gnutls-dev:i386 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/data/ubuntu-22.04.csv b/lgsm/data/ubuntu-22.04.csv index b65fc60ac4..ee91eb5336 100644 --- a/lgsm/data/ubuntu-22.04.csv +++ b/lgsm/data/ubuntu-22.04.csv @@ -106,6 +106,7 @@ terraria,libsdl tf2,libcurl4-gnutls-dev:i386 tfc ti +tm2020,xmlstarlet ts ts3 tu diff --git a/lgsm/functions/info_game.sh b/lgsm/functions/info_game.sh index 77169b3f36..267e58880a 100644 --- a/lgsm/functions/info_game.sh +++ b/lgsm/functions/info_game.sh @@ -1917,6 +1917,30 @@ fn_info_game_ti() { } +fn_info_game_maniaplanet() { + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + maxplayers="${zero}" + else + # To avoid to have a error when not installed or on distro with unsupported dep checking + if [ -x "$(command -v xmlstarlet)" ]; then + servername=$(xmlstarlet sel -t -v '/dedicated/server_options/name' "${servercfgfullpath}") + maxplayers=$(xmlstarlet sel -t -v '/dedicated/server_options/max_players' "${servercfgfullpath}") + serverpassword=$(xmlstarlet sel -t -v '/dedicated/server_options/password' "${servercfgfullpath}") + configip=$(xmlstarlet sel -t -v '/dedicated/server_options/bind_ip_address' "${servercfgfullpath}") + port=$(xmlstarlet sel -t -v '/dedicated/server_options/server_port' "${servercfgfullpath}") + queryport=$(xmlstarlet sel -t -v '/dedicated/server_options/xmlrpc_port' "${servercfgfullpath}") + else + fn_script_log_info "cannot parse config as xmlstarlet is no in the PATH" + fn_print_info_nl "cannot parse config as xmlstarlet is no in the PATH" + fi + serverpassword=${serverpassword:-"NOT SET"} + configip=${configip:-"0.0.0.0"} + port=${port:-"2350"} + queryport=${queryport:-"5000"} + fi +} + fn_info_game_ts3() { # Config if [ ! -f "${servercfgfullpath}" ]; then @@ -2515,6 +2539,8 @@ elif [ "${shortname}" == "wmc" ]; then fn_info_game_wmc elif [ "${shortname}" == "wurm" ]; then fn_info_game_wurm +elif [ "${engine}" == "maniaplanet" ]; then + fn_info_game_maniaplanet elif [ "${engine}" == "source" ] || [ "${engine}" == "goldsrc" ]; then fn_info_game_source elif [ "${engine}" == "unreal2" ]; then diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh index f4f67b120b..ba2e6e9a40 100755 --- a/lgsm/functions/info_messages.sh +++ b/lgsm/functions/info_messages.sh @@ -658,7 +658,7 @@ fn_info_message_ports_edit() { startparameterslocation="${red}UNKNOWN${default}" # engines/games that require editing in the config file. - local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "cd" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "mumble" "nec" "pc" "pc2" "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" "cd" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "maniaplanet" "mcb" "mumble" "nec" "pc" "pc2" "pz" "qw" "refractor" "renderware" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "wurm") for port_edit in "${ports_edit_array[@]}"; do if [ "${shortname}" == "ut3" ]; then startparameterslocation="${servercfgdir}/UTWeb.ini" @@ -1468,6 +1468,15 @@ fn_info_message_ti() { } | column -s $'\t' -t } +fn_info_message_maniaplanet() { + { + fn_port "header" + fn_port "Game" port udp + fn_port "Game" port tcp + fn_port "XMLRPC" queryport tcp + } | column -s $'\t' -t +} + fn_info_message_ts3() { { fn_port "header" @@ -1824,6 +1833,8 @@ fn_info_message_select_engine() { fn_info_message_wurm elif [ "${engine}" == "goldsrc" ]; then fn_info_message_goldsrc + elif [ "${engine}" == "maniaplanet" ]; then + fn_info_message_maniaplanet elif [ "${engine}" == "source" ]; then fn_info_message_source elif [ "${engine}" == "spark" ]; then diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh index 61c6b131cc..c71db2cf3d 100755 --- a/lgsm/functions/install_server_files.sh +++ b/lgsm/functions/install_server_files.sh @@ -134,6 +134,13 @@ fn_install_server_files() { chmodx="nochmodx" run="norun" force="noforce" md5="201e23bab04207d00ce813d001c483d9" + elif [ "${shortname}" == "tm2020" ]; then + remote_fileurl="https://nadeo-download.cdn.ubi.com/trackmania/TrackmaniaServer_Latest.zip" + local_filedir="${tmpdir}" + local_filename="TrackmaniaServer_Latest.zip" + chmodx="nochmodx" run="norun" + force="noforce" + md5="nohash" elif [ "${shortname}" == "ts" ]; then remote_fileurl="http://linuxgsm.download/TheSpecialists/ts-3-linux-final.tar.xz" local_filedir="${tmpdir}"