Просмотр исходного кода

Merge branch 'develop' into feature/alerts-refactor

Daniel Gibbs 4 лет назад
Родитель
Сommit
adcfa2f1a7
63 измененных файлов с 1986 добавлено и 1519 удалено
  1. 2 2
      .github/workflows/git-sync.yml
  2. 2 3
      .github/workflows/labeler.yml
  3. 1 1
      .github/workflows/lock.yml
  4. 1 2
      CONTRIBUTING.md
  5. 1 1
      LICENSE
  6. 0 0
      README.md
  7. 1 1
      lgsm/config-default/config-lgsm/acserver/_default.cfg
  8. 1 1
      lgsm/config-default/config-lgsm/arma3server/_default.cfg
  9. 3 3
      lgsm/config-default/config-lgsm/avserver/_default.cfg
  10. 1 0
      lgsm/config-default/config-lgsm/csgoserver/_default.cfg
  11. 3 1
      lgsm/config-default/config-lgsm/inssserver/_default.cfg
  12. 188 0
      lgsm/config-default/config-lgsm/loserver/_default.cfg
  13. 1 1
      lgsm/config-default/config-lgsm/mcbserver/_default.cfg
  14. 1 1
      lgsm/config-default/config-lgsm/mhserver/_default.cfg
  15. 1 1
      lgsm/config-default/config-lgsm/pvrserver/_default.cfg
  16. 6 4
      lgsm/config-default/config-lgsm/rustserver/_default.cfg
  17. 2 2
      lgsm/config-default/config-lgsm/rwserver/_default.cfg
  18. 1 1
      lgsm/config-default/config-lgsm/sdtdserver/_default.cfg
  19. 1 1
      lgsm/config-default/config-lgsm/ts3server/_default.cfg
  20. BIN
      lgsm/data/bo_header.jpg
  21. BIN
      lgsm/data/rust_header.jpg
  22. 2 1
      lgsm/data/serverlist.csv
  23. 1 1
      lgsm/functions/alert.sh
  24. 15 3
      lgsm/functions/check_deps.sh
  25. 1 2
      lgsm/functions/check_ip.sh
  26. 3 3
      lgsm/functions/check_permissions.sh
  27. 3 0
      lgsm/functions/check_root.sh
  28. 1 0
      lgsm/functions/check_steamcmd.sh
  29. 9 2
      lgsm/functions/command_debug.sh
  30. 3 3
      lgsm/functions/command_details.sh
  31. 197 11
      lgsm/functions/command_dev_query_raw.sh
  32. 1 4
      lgsm/functions/command_monitor.sh
  33. 2 2
      lgsm/functions/command_postdetails.sh
  34. 1 1
      lgsm/functions/command_restart.sh
  35. 9 2
      lgsm/functions/command_start.sh
  36. 1 1
      lgsm/functions/command_stop.sh
  37. 1 1
      lgsm/functions/command_test_alert.sh
  38. 109 158
      lgsm/functions/command_wipe.sh
  39. 8 2
      lgsm/functions/core_dl.sh
  40. 8 13
      lgsm/functions/core_functions.sh
  41. 3 3
      lgsm/functions/core_getopt.sh
  42. 2 1
      lgsm/functions/core_legacy.sh
  43. 22 0
      lgsm/functions/core_messages.sh
  44. 7 0
      lgsm/functions/core_steamcmd.sh
  45. 4 2
      lgsm/functions/fix.sh
  46. 17 0
      lgsm/functions/fix_lo.sh
  47. 10 0
      lgsm/functions/fix_rust.sh
  48. 1 1
      lgsm/functions/fix_ts3.sh
  49. 13 1
      lgsm/functions/info_distro.sh
  50. 803 605
      lgsm/functions/info_game.sh
  51. 441 293
      lgsm/functions/info_messages.sh
  52. 0 327
      lgsm/functions/info_parms.sh
  53. 32 14
      lgsm/functions/info_stats.sh
  54. 0 20
      lgsm/functions/install_modules.sh
  55. 1 1
      lgsm/functions/install_server_files.sh
  56. 22 1
      lgsm/functions/query_gamedig.sh
  57. 5 2
      lgsm/functions/update_minecraft_bedrock.sh
  58. 1 1
      lgsm/functions/update_papermc.sh
  59. 2 3
      linuxgsm.sh
  60. 2 2
      tests/tests_fctrserver.sh
  61. 2 2
      tests/tests_jc2server.sh
  62. 2 2
      tests/tests_mcserver.sh
  63. 2 2
      tests/tests_ts3server.sh

+ 2 - 2
.github/workflows/git-sync.yml

@@ -12,12 +12,12 @@ jobs:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     steps:
     steps:
     - name: webfactory/ssh-agent
     - name: webfactory/ssh-agent
-      uses: webfactory/ssh-agent@v0.4.1
+      uses: webfactory/ssh-agent@v0.5.3
       with:
       with:
         ssh-private-key: ${{ secrets.BITBUCKET_SECRET }}
         ssh-private-key: ${{ secrets.BITBUCKET_SECRET }}
 
 
     - name: repo-sync
     - name: repo-sync
-      uses: wei/git-sync@v2.1.0
+      uses: wei/git-sync@v3.0.0
       with:
       with:
         ssh_private_key: ${{ secrets.BITBUCKET_SECRET }}
         ssh_private_key: ${{ secrets.BITBUCKET_SECRET }}
         source_repo: "https://github.com/GameServerManagers/LinuxGSM"
         source_repo: "https://github.com/GameServerManagers/LinuxGSM"

Разница между файлами не показана из-за своего большого размера
+ 2 - 3
.github/workflows/labeler.yml


+ 1 - 1
.github/workflows/lock.yml

@@ -8,7 +8,7 @@ jobs:
   lock:
   lock:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     steps:
     steps:
-      - uses: dessant/lock-threads@v2
+      - uses: dessant/lock-threads@v2.0.3
         with:
         with:
           github-token: ${{ secrets.GITHUB_TOKEN }}
           github-token: ${{ secrets.GITHUB_TOKEN }}
           issue-lock-comment: >
           issue-lock-comment: >

+ 1 - 2
CONTRIBUTING.md

@@ -48,8 +48,7 @@ Before creating bug reports, please check [this list](https://github.com/GameSer
 #### Before Submitting A Bug Report
 #### Before Submitting A Bug Report
 
 
 * **Check the [documentation](https://docs.linuxgsm.com).** You might be able to find the cause of the problem and fix things yourself.
 * **Check the [documentation](https://docs.linuxgsm.com).** You might be able to find the cause of the problem and fix things yourself.
-* **Check that the problem is not related to** [**support page**](https://linuxgsm/com/support) for links to other support options.
-* **Check the** [**support page**](https://linuxgsm/com/support) for links to other support options.
+* **Check the** [**support page**](https://linuxgsm.com/support) for links to other support options.
 * **Perform a** [**cursory search**](https://github.com/search?q=org:GameServerManagers%20type:issues&type=Issues) to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue and give it a thumbs up instead of opening a new one.
 * **Perform a** [**cursory search**](https://github.com/search?q=org:GameServerManagers%20type:issues&type=Issues) to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue and give it a thumbs up instead of opening a new one.
 
 
 #### How Do I Submit A (Good) Bug Report?
 #### How Do I Submit A (Good) Bug Report?

+ 1 - 1
LICENSE

@@ -1,6 +1,6 @@
 MIT License
 MIT License
 
 
-Copyright (c) 2012-2020 Daniel Gibbs
+Copyright (c) 2012-2021 Daniel Gibbs
 
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 of this software and associated documentation files (the "Software"), to deal

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
README.md


+ 1 - 1
lgsm/config-default/config-lgsm/acserver/_default.cfg

@@ -139,7 +139,7 @@ stopmode="2"
 # 4: gsquery
 # 4: gsquery
 # 5: tcp
 # 5: tcp
 querymode="5"
 querymode="5"
-querytype=""
+querytype="assettocorsa"
 
 
 ## Console type
 ## Console type
 consoleverbose="yes"
 consoleverbose="yes"

+ 1 - 1
lgsm/config-default/config-lgsm/arma3server/_default.cfg

@@ -166,7 +166,7 @@ consoleinteract="no"
 # Do not edit
 # Do not edit
 gamename="ARMA 3"
 gamename="ARMA 3"
 engine="realvirtuality"
 engine="realvirtuality"
-glibc="2.13"
+glibc="2.27"
 
 
 #### Directories ####
 #### Directories ####
 # Edit with care
 # Edit with care

+ 3 - 3
lgsm/config-default/config-lgsm/avserver/_default.cfg

@@ -9,7 +9,7 @@
 #### Game Server Settings ####
 #### Game Server Settings ####
 
 
 ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
 ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
-port="27000"
+
 # https://steamidfinder.com
 # https://steamidfinder.com
 adminsteamid=""
 adminsteamid=""
 if [ -n "${adminsteamid}" ]; then
 if [ -n "${adminsteamid}" ]; then
@@ -160,8 +160,8 @@ glibc="2.15"
 avdatapath="${serverfiles}/galaxy"
 avdatapath="${serverfiles}/galaxy"
 avgalaxypath="${avdatapath}/${selfname}"
 avgalaxypath="${avdatapath}/${selfname}"
 systemdir="${serverfiles}"
 systemdir="${serverfiles}"
-executabledir="${systemdir}"
-executable="./server.sh"
+executabledir="${systemdir}/bin"
+executable="./bin/AvorionServer"
 servercfgdir="${avgalaxypath}"
 servercfgdir="${avgalaxypath}"
 servercfg="server.ini"
 servercfg="server.ini"
 servercfgdefault="server.ini"
 servercfgdefault="server.ini"

+ 1 - 0
lgsm/config-default/config-lgsm/csgoserver/_default.cfg

@@ -26,6 +26,7 @@ ip="0.0.0.0"
 port="27015"
 port="27015"
 clientport="27005"
 clientport="27005"
 sourcetvport="27020"
 sourcetvport="27020"
+steamport="26901"
 defaultmap="de_mirage"
 defaultmap="de_mirage"
 maxplayers="16"
 maxplayers="16"
 tickrate="64"
 tickrate="64"

+ 3 - 1
lgsm/config-default/config-lgsm/inssserver/_default.cfg

@@ -12,6 +12,8 @@
 ip="0.0.0.0"
 ip="0.0.0.0"
 port="27102"
 port="27102"
 queryport="27131"
 queryport="27131"
+rconport="27015"
+rconpassword=""
 servername="LinuxGSM Server"
 servername="LinuxGSM Server"
 defaultmap="Canyon"
 defaultmap="Canyon"
 defaultscenario="Scenario_Crossing_Push_Security"
 defaultscenario="Scenario_Crossing_Push_Security"
@@ -19,7 +21,7 @@ maxplayers="28"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Parameter Docs | https://sandstorm-support.newworldinteractive.com/hc/en-us/articles/360049211072-Server-Admin-Guide
 ## Parameter Docs | https://sandstorm-support.newworldinteractive.com/hc/en-us/articles/360049211072-Server-Admin-Guide
-startparameters="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -log"
+startparameters="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -Rcon -RconPassword=${rconpassword} -RconListenPort=${rconport} -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

+ 188 - 0
lgsm/config-default/config-lgsm/loserver/_default.cfg

@@ -0,0 +1,188 @@
+##################################
+######## Default Settings ########
+##################################
+# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN!
+# Copy settings from here and use them in either:
+# common.cfg - applies settings to every instance.
+# [instance].cfg - applies settings to a specific instance.
+
+#### Game Server Settings ####
+
+## SteamCMD Login | https://docs.linuxgsm.com/steamcmd#steamcmd-login
+steamuser="username"
+steampass='password'
+
+## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
+servername="LinuxGSM"
+ip="0.0.0.0"
+port="7777"
+queryport="27015"
+customerkey=""
+providerkey=""
+slots="100"
+
+## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+startparameters="-log -force_steamclient_link -messaging -NoLiveServer -EnableCheats -backendapiurloverride='backend.last-oasis.com' -identifier=${servername} -port=${port} -CustomerKey=${customerkey} -ProviderKey=${providerkey} -slots=${slots} -QueryPort=${queryport} -OverrideConnectionAddress=${ip}"
+
+#### LinuxGSM Settings ####
+
+## LinuxGSM Stats
+# Send useful stats to LinuxGSM developers.
+# https://docs.linuxgsm.com/configuration/linuxgsm-stats
+# (on|off)
+stats="off"
+
+## Notification Alerts
+# (on|off)
+
+# Display IP | https://docs.linuxgsm.com/alerts#display-ip
+displayip=""
+
+# More info | https://docs.linuxgsm.com/alerts#more-info
+postalert="off"
+
+# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
+discordalert="off"
+discordwebhook="webhook"
+
+# Email Alerts | https://docs.linuxgsm.com/alerts/email
+emailalert="off"
+email="email@example.com"
+emailfrom=""
+
+# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
+iftttalert="off"
+ifttttoken="accesstoken"
+iftttevent="linuxgsm_alert"
+
+# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun
+mailgunalert="off"
+mailgunapiregion="us"
+mailguntoken="accesstoken"
+mailgundomain="example.com"
+mailgunemailfrom="alert@example.com"
+mailgunemail="email@myemail.com"
+
+# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet
+pushbulletalert="off"
+pushbullettoken="accesstoken"
+channeltag=""
+
+# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover
+pushoveralert="off"
+pushovertoken="accesstoken"
+pushoveruserkey="userkey"
+
+# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat
+rocketchatalert="off"
+rocketchatwebhook="webhook"
+rocketchattoken=""
+
+# Slack Alerts | https://docs.linuxgsm.com/alerts/slack
+slackalert="off"
+slackwebhook="webhook"
+
+# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram
+# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring".
+# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help".
+telegramapi="api.telegram.org"
+telegramalert="off"
+telegramtoken="accesstoken"
+telegramchatid=""
+curlcustomstring=""
+
+## Updating | https://docs.linuxgsm.com/commands/update
+updateonstart="off"
+
+## Backup | https://docs.linuxgsm.com/commands/backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
+
+## Logging | https://docs.linuxgsm.com/features/logging
+consolelogging="on"
+logdays="7"
+
+## Monitor | https://docs.linuxgsm.com/commands/monitor
+# Query delay time
+querydelay="1"
+
+## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
+ansi="on"
+
+#### Advanced Settings ####
+
+## Message Display Time | https://docs.linuxgsm.com/features/message-display-time
+sleeptime="0.5"
+
+## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
+# Server appid
+appid="920720"
+steamcmdforcewindows="no"
+# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
+branch=""
+betapassword=""
+# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
+steammaster="false"
+
+## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
+# 1: tmux kill
+# 2: CTRL+c
+# 3: quit
+# 4: quit 120s
+# 5: stop
+# 6: q
+# 7: exit
+# 8: 7 Days to Die
+# 9: GoldSrc
+# 10: Avorion
+# 11: end
+stopmode="2"
+
+## Query mode
+# 1: session only
+# 2: gamedig (gsquery fallback)
+# 3: gamedig
+# 4: gsquery
+# 5: tcp
+querymode="1"
+querytype=""
+
+## Console type
+consoleverbose="yes"
+consoleinteract="no"
+
+## Game Server Details
+# Do not edit
+gamename="Last Oasis"
+engine="unreal4"
+glibc="2.17"
+
+#### Directories ####
+# Edit with care
+
+## Game Server Directories
+systemdir="${serverfiles}/Mist"
+executabledir="${systemdir}/Binaries/Linux"
+executable="./MistServer-Linux-Shipping"
+servercfgdir="${systemdir}/Saved/Config/LinuxServer"
+servercfg="Game.ini"
+servercfgdefault="Game.ini"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+
+## Backup Directory
+backupdir="${lgsmdir}/backup"
+
+## Logging Directories
+logdir="${rootdir}/log"
+gamelogdir="${systemdir}/Saved/Logs"
+lgsmlogdir="${logdir}/script"
+consolelogdir="${logdir}/console"
+lgsmlog="${lgsmlogdir}/${selfname}-script.log"
+consolelog="${consolelogdir}/${selfname}-console.log"
+alertlog="${lgsmlogdir}/${selfname}-alert.log"
+postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log"
+
+## Logs Naming
+lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log"
+consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log"

+ 1 - 1
lgsm/config-default/config-lgsm/mcbserver/_default.cfg

@@ -122,7 +122,7 @@ stopmode="5"
 # 3: gamedig
 # 3: gamedig
 # 4: gsquery
 # 4: gsquery
 # 5: tcp
 # 5: tcp
-querymode="4"
+querymode="2"
 querytype="minecraftbe"
 querytype="minecraftbe"
 
 
 ## Console type
 ## Console type

+ 1 - 1
lgsm/config-default/config-lgsm/mhserver/_default.cfg

@@ -17,7 +17,7 @@ queryport="27015"
 defaultmap="FFA_ThePit"
 defaultmap="FFA_ThePit"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="Mordhau ${defaultmap} -log -MultiHome=${ip} -Port=${port} -BeaconPort=${beaconport} -QueryPort=${queryport}"
+startparameters="Mordhau ${defaultmap} -log -MultiHome=${ip} -Port=${port} -BeaconPort=${beaconport} -QueryPort=${queryport} -GameIni=${servercfgfullpath}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

+ 1 - 1
lgsm/config-default/config-lgsm/pvrserver/_default.cfg

@@ -139,7 +139,7 @@ stopmode="2"
 # 3: gamedig
 # 3: gamedig
 # 4: gsquery
 # 4: gsquery
 # 5: tcp
 # 5: tcp
-querymode="1"
+querymode="5"
 querytype=""
 querytype=""
 
 
 ## Console type
 ## Console type

+ 6 - 4
lgsm/config-default/config-lgsm/rustserver/_default.cfg

@@ -16,16 +16,18 @@ appport=28082
 rconpassword="CHANGE_ME"
 rconpassword="CHANGE_ME"
 rconweb="1" # Value is: 1 for the Facepunch web panel, Rustadmin desktop and Rustadmin Online; 0 for RCON tools like Rusty.
 rconweb="1" # Value is: 1 for the Facepunch web panel, Rustadmin desktop and Rustadmin Online; 0 for RCON tools like Rusty.
 servername="Rust"
 servername="Rust"
-gamemode="vanilla" # values: vanilla, softcore ( Doc: https://wiki.facepunch.com/rust/server-gamemodes )
-maxplayers="50"
+gamemode="vanilla" # Values: vanilla, softcore ( Doc: https://wiki.facepunch.com/rust/server-gamemodes )
+serverlevel="Procedural Map" # Values: Procedural Map, Barren, HapisIsland, SavasIsland
+customlevelurl="" # Custom level url. +server.levelurl \"${customlevelurl}\"
 seed="" # range: 1-2147483647, used to reproduce a procedural map.
 seed="" # range: 1-2147483647, used to reproduce a procedural map.
 salt="" # range: unknown, used to recover a known setting from an existing map.
 salt="" # range: unknown, used to recover a known setting from an existing map.
+maxplayers="50"
 worldsize="3000" # default: 3000, range: 1000-6000, map size in meters.
 worldsize="3000" # default: 3000, range: 1000-6000, map size in meters.
 saveinterval="300" # Auto-save in seconds.
 saveinterval="300" # Auto-save in seconds.
 tickrate="30" # default: 30, range: 15-100.
 tickrate="30" # default: 30, range: 15-100.
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile"
+startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.level \"${serverlevel}\" +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 
@@ -108,7 +110,7 @@ logdays="7"
 
 
 ## Monitor | https://docs.linuxgsm.com/commands/monitor
 ## Monitor | https://docs.linuxgsm.com/commands/monitor
 # Query delay time
 # Query delay time
-querydelay="5"
+querydelay="10"
 
 
 ## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
 ## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
 ansi="on"
 ansi="on"

+ 2 - 2
lgsm/config-default/config-lgsm/rwserver/_default.cfg

@@ -135,8 +135,8 @@ stopmode="3"
 # 3: gamedig
 # 3: gamedig
 # 4: gsquery
 # 4: gsquery
 # 5: tcp
 # 5: tcp
-querymode="1"
-querytype=""
+querymode="2"
+querytype="protocol-valve"
 
 
 ## Console type
 ## Console type
 consoleverbose="yes"
 consoleverbose="yes"

+ 1 - 1
lgsm/config-default/config-lgsm/sdtdserver/_default.cfg

@@ -146,7 +146,7 @@ consoleinteract="no"
 # Do not edit
 # Do not edit
 gamename="7 Days To Die"
 gamename="7 Days To Die"
 engine="unity3d"
 engine="unity3d"
-glibc="2.15"
+glibc="2.27"
 
 
 #### Directories ####
 #### Directories ####
 # Edit with care
 # Edit with care

+ 1 - 1
lgsm/config-default/config-lgsm/ts3server/_default.cfg

@@ -123,7 +123,7 @@ stopmode="2"
 # 4: gsquery
 # 4: gsquery
 # 5: tcp
 # 5: tcp
 querymode="5"
 querymode="5"
-querytype=""
+querytype="teamspeak3"
 
 
 ## Console type
 ## Console type
 consoleverbose="yes"
 consoleverbose="yes"

BIN
lgsm/data/bo_header.jpg


BIN
lgsm/data/rust_header.jpg


+ 2 - 1
lgsm/data/serverlist.csv

@@ -51,6 +51,7 @@ jc3,jc3server,Just Cause 3
 jk2,jk2server,Jedi Knight II: Jedi Outcast
 jk2,jk2server,Jedi Knight II: Jedi Outcast
 kf,kfserver,Killing Floor
 kf,kfserver,Killing Floor
 kf2,kf2server,Killing Floor 2
 kf2,kf2server,Killing Floor 2
+lo,loserver,Last Oasis
 l4d,l4dserver,Left 4 Dead
 l4d,l4dserver,Left 4 Dead
 l4d2,l4d2server,Left 4 Dead 2
 l4d2,l4d2server,Left 4 Dead 2
 mc,mcserver,Minecraft
 mc,mcserver,Minecraft
@@ -107,8 +108,8 @@ ut2k4,ut2k4server,Unreal Tournament 2004
 ut3,ut3server,Unreal Tournament 3
 ut3,ut3server,Unreal Tournament 3
 ut99,ut99server,Unreal Tournament 99
 ut99,ut99server,Unreal Tournament 99
 vh,vhserver,Valheim
 vh,vhserver,Valheim
-vs,vsserver,Vampire Slayer
 vints,vintsserver,Vintage Story
 vints,vintsserver,Vintage Story
+vs,vsserver,Vampire Slayer
 wet,wetserver,Wolfenstein: Enemy Territory
 wet,wetserver,Wolfenstein: Enemy Territory
 wf,wfserver,Warfork
 wf,wfserver,Warfork
 wmc,wmcserver,WaterfallMC
 wmc,wmcserver,WaterfallMC

+ 1 - 1
lgsm/functions/alert.sh

@@ -11,7 +11,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 # Used with email alerts.
 # Used with email alerts.
 fn_alert_log(){
 fn_alert_log(){
 	info_distro.sh
 	info_distro.sh
-	info_config.sh
+	info_game.sh
 	info_messages.sh
 	info_messages.sh
 	if [ -f "${alertlog}" ]; then
 	if [ -f "${alertlog}" ]; then
 		rm -f "${alertlog:?}"
 		rm -f "${alertlog:?}"

+ 15 - 3
lgsm/functions/check_deps.sh

@@ -350,7 +350,7 @@ fn_deps_build_debian(){
 	if [ "${shortname}" != "ts3" ]&&[ "${shortname}" != "mumble" ]&&[ "${shortname}" != "mc" ]&&[ "${shortname}" != "pmc" ]&&[ "${shortname}" != "wmc" ]&&[ "${engine}" != "renderware" ]; then
 	if [ "${shortname}" != "ts3" ]&&[ "${shortname}" != "mumble" ]&&[ "${shortname}" != "mc" ]&&[ "${shortname}" != "pmc" ]&&[ "${shortname}" != "wmc" ]&&[ "${engine}" != "renderware" ]; then
 		if [ "${arch}" == "x86_64" ]; then
 		if [ "${arch}" == "x86_64" ]; then
 			# lib32gcc1 is now called lib32gcc-s1 in debian 11
 			# lib32gcc1 is now called lib32gcc-s1 in debian 11
-			if { [ "${distroid}" == "debian" ]&&[ "${distroversion}" == "11" ]; }|| { [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; } ||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.10" ]; }; then
+			if { [ "${distroid}" == "debian" ]&&[ "${distroversion}" == "11" ]; }||{ [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; }||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.10" ]; }; then
 				array_deps_required+=( lib32gcc-s1 lib32stdc++6 )
 				array_deps_required+=( lib32gcc-s1 lib32stdc++6 )
 			else
 			else
 				array_deps_required+=( lib32gcc1 lib32stdc++6 )
 				array_deps_required+=( lib32gcc1 lib32stdc++6 )
@@ -414,8 +414,20 @@ fn_deps_build_debian(){
 	# Hurtword/Rust
 	# Hurtword/Rust
 	elif [ "${shortname}" == "hw" ]||[ "${shortname}" == "rust" ]; then
 	elif [ "${shortname}" == "hw" ]||[ "${shortname}" == "rust" ]; then
 		array_deps_required+=( lib32z1 )
 		array_deps_required+=( lib32z1 )
-	# Minecraft, Rising World, Wurm
-	elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]||[ "${shortname}" == "rw" ]; then
+	# Minecraft, Rising World
+	elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "pmc" ]||[ "${shortname}" == "wmc" ]; then
+		javaversion=$(java -version 2>&1 | grep "version")
+		if [ "${javaversion}" ]; then
+			# Added for users using Oracle JRE to bypass the check.
+			javacheck=1
+		else
+			if { [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.04" ]; }||{ [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "20.10" ]; }||{ [ "${distroid}" == "ubuntu" ]&&[ "${distroversion}" == "21.04" ]; }||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.04" ]; }||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "20.10" ]; }||{ [ "${distroid}" == "pop" ]&&[ "${distroversion}" == "21.04" ]; }; then
+				array_deps_required+=( openjdk-16-jre )
+			else
+				array_deps_required+=( default-jre )
+			fi
+		fi
+	elif [ "${shortname}" == "rw" ]; then
 		javaversion=$(java -version 2>&1 | grep "version")
 		javaversion=$(java -version 2>&1 | grep "version")
 		if [ "${javaversion}" ]; then
 		if [ "${javaversion}" ]; then
 			# Added for users using Oracle JRE to bypass the check.
 			# Added for users using Oracle JRE to bypass the check.

+ 1 - 2
lgsm/functions/check_ip.sh

@@ -8,8 +8,7 @@
 
 
 functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 
-info_config.sh
-info_parms.sh
+info_game.sh
 
 
 if [ ! -f "/bin/ip" ]; then
 if [ ! -f "/bin/ip" ]; then
 	ipcommand="/sbin/ip"
 	ipcommand="/sbin/ip"

+ 3 - 3
lgsm/functions/check_permissions.sh

@@ -31,13 +31,13 @@ fn_check_ownership(){
 		{
 		{
 			echo -e "User\tGroup\tFile\n"
 			echo -e "User\tGroup\tFile\n"
 			if [ "${selfownissue}" == "1" ]; then
 			if [ "${selfownissue}" == "1" ]; then
-				find "${rootdir}/${selfname}" -not -user "$(whoami)" -printf "%u\t\t%g\t%p\n"
+				find "${rootdir}/${selfname}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n"
 			fi
 			fi
 			if [ "${funcownissue}" == "1" ]; then
 			if [ "${funcownissue}" == "1" ]; then
-				find "${functionsdir}" -not -user "$(whoami)" -printf "%u\t\t%g\t%p\n"
+				find "${functionsdir}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n"
 			fi
 			fi
 			if [ "${filesownissue}" == "1"  ]; then
 			if [ "${filesownissue}" == "1"  ]; then
-				find "${serverfiles}" -not -user "$(whoami)" -printf "%u\t\t%g\t%p\n"
+				find "${serverfiles}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n"
 			fi
 			fi
 
 
 		} | column -s $'\t' -t | tee -a "${lgsmlog}"
 		} | column -s $'\t' -t | tee -a "${lgsmlog}"

+ 3 - 0
lgsm/functions/check_root.sh

@@ -12,6 +12,9 @@ if [ "$(whoami)" = "root" ]; then
 		fn_print_fail_nl "Do NOT run this script as root!"
 		fn_print_fail_nl "Do NOT run this script as root!"
 		if [ -d "${lgsmlogdir}" ]; then
 		if [ -d "${lgsmlogdir}" ]; then
 			fn_script_log_fatal "${selfname} attempted to run as root."
 			fn_script_log_fatal "${selfname} attempted to run as root."
+		else
+			# Forces exit code is log does not yet exist.
+			exitcode=1
 		fi
 		fi
 		core_exit.sh
 		core_exit.sh
 	fi
 	fi

+ 1 - 0
lgsm/functions/check_steamcmd.sh

@@ -17,5 +17,6 @@ if [ ${shortname} == "ark" ]; then
 fi
 fi
 fn_check_steamcmd_dir
 fn_check_steamcmd_dir
 fn_check_steamcmd_dir_legacy
 fn_check_steamcmd_dir_legacy
+fn_check_steamcmd_steamapp
 fn_check_steamcmd_user
 fn_check_steamcmd_user
 fn_check_steamcmd_exec
 fn_check_steamcmd_exec

+ 9 - 2
lgsm/functions/command_debug.sh

@@ -27,7 +27,7 @@ fn_lockfile_trap(){
 check.sh
 check.sh
 fix.sh
 fix.sh
 info_distro.sh
 info_distro.sh
-info_config.sh
+info_game.sh
 # NOTE: Check if works with server without parms. Could be intergrated in to info_parms.sh.
 # NOTE: Check if works with server without parms. Could be intergrated in to info_parms.sh.
 fn_print_header
 fn_print_header
 {
 {
@@ -67,6 +67,8 @@ fi
 if [ "${serverpassword}" ]; then
 if [ "${serverpassword}" ]; then
 	echo -e "${lightblue}Server password:\t${default}${serverpassword}"
 	echo -e "${lightblue}Server password:\t${default}${serverpassword}"
 fi
 fi
+
+fn_reload_startparameters
 echo -e "${lightblue}Start parameters:${default}"
 echo -e "${lightblue}Start parameters:${default}"
 if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then
 if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then
 	echo -e "${executable} ${startparameters} -debug"
 	echo -e "${executable} ${startparameters} -debug"
@@ -102,7 +104,12 @@ echo "${port}" >> "${lockdir}/${selfname}.lock"
 fn_script_log_info "Lockfile generated"
 fn_script_log_info "Lockfile generated"
 fn_script_log_info "${lockdir}/${selfname}.lock"
 fn_script_log_info "${lockdir}/${selfname}.lock"
 
 
-cd "${executabledir}" || exit
+if [ "${shortname}" == "av" ]; then
+	cd "${systemdir}" || exit
+else
+	cd "${executabledir}" || exit
+fi
+
 # Note: do not add double quotes to ${executable} ${startparameters}.
 # Note: do not add double quotes to ${executable} ${startparameters}.
 if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then
 if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then
 	${executable} ${startparameters} -debug
 	${executable} ${startparameters} -debug

+ 3 - 3
lgsm/functions/command_details.sh

@@ -12,9 +12,8 @@ fn_firstcommand_set
 
 
 # Run checks and gathers details to display.
 # Run checks and gathers details to display.
 check.sh
 check.sh
-info_config.sh
-info_parms.sh
 info_distro.sh
 info_distro.sh
+info_game.sh
 info_messages.sh
 info_messages.sh
 if [ "${querymode}" == "2" ]||[ "${querymode}" == "3" ]; then
 if [ "${querymode}" == "2" ]||[ "${querymode}" == "3" ]; then
 	for queryip in "${queryips[@]}"; do
 	for queryip in "${queryips[@]}"; do
@@ -31,9 +30,10 @@ fn_info_message_gameserver
 fn_info_message_script
 fn_info_message_script
 fn_info_message_backup
 fn_info_message_backup
 # Some game servers do not have parms.
 # Some game servers do not have parms.
-if [ "${shortname}" != "ts3" ]&&[ "${shortname}" != "jc2" ]&&[ "${shortname}" != "dst" ]&&[ "${shortname}" != "pz" ]&&[ "${engine}" != "renderware" ]; then
+if [ "${shortname}" != "jc2" ]&&[ "${shortname}" != "dst" ]&&[ "${shortname}" != "pz" ]&&[ "${engine}" != "renderware" ]; then
 	fn_info_message_commandlineparms
 	fn_info_message_commandlineparms
 fi
 fi
+fn_info_message_ports_edit
 fn_info_message_ports
 fn_info_message_ports
 fn_info_message_select_engine
 fn_info_message_select_engine
 fn_info_message_statusbottom
 fn_info_message_statusbottom

+ 197 - 11
lgsm/functions/command_dev_query_raw.sh

@@ -11,25 +11,204 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 fn_firstcommand_set
 fn_firstcommand_set
 
 
 check.sh
 check.sh
-info_config.sh
-info_parms.sh
+info_game.sh
+info_distro.sh
+info_messages.sh
 
 
 echo -e ""
 echo -e ""
-echo -e "Query Port - Raw Output"
+echo -e "${lightgreen}Query IP Addresses${default}"
 echo -e "=================================================================="
 echo -e "=================================================================="
 echo -e ""
 echo -e ""
-echo -e "QUERY IP"
 for queryip in "${queryips[@]}"; do
 for queryip in "${queryips[@]}"; do
 	echo -e "${queryip}"
 	echo -e "${queryip}"
 done
 done
+echo -e ""
+echo -e "${lightgreen}Game Server Ports${default}"
+echo -e "=================================================================="
+{
+echo -e "${lightblue}Port Name \tPort Number \tStatus \tTCP \tUDP${default}"
+if [ -v port ]; then
+	echo -e "Game: \t${port} \t$(ss -tupl|grep ${port}|wc -l) \t$(ss -tupl|grep ${port}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Game:"
+fi
+if [ "${shortname}" == "rw" ]; then
+	if [ -v port2 ]; then
+		echo -e "Game+1: \t${port2} \t$(ss -tupl|grep ${port}|wc -l) \t$(ss -tupl|grep ${port2}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port2}|grep udp|awk '{ print $2 }')"
+	else
+		echo -e "Game+1:"
+	fi
+
+	if [ -v port3 ]; then
+		echo -e "Game+2: \t${port3} \t$(ss -tupl|grep ${port}|wc -l) \t$(ss -tupl|grep ${port3}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port3}|grep udp|awk '{ print $2 }')"
+	else
+		echo -e "Game+2:"
+	fi
+
+	if [ -v port4 ]; then
+		echo -e "Game+3: \t${port4} \t$(ss -tupl|grep ${port}|wc -l) \t$(ss -tupl|grep ${port4}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port4}|grep udp|awk '{ print $2 }')"
+	else
+		echo -e "Game+3:"
+	fi
+fi
+
+if [ -v port401 ]; then
+	echo -e "Game+400: \t${port401} \t$(ss -tupl|grep ${port401}|wc -l) \t$(ss -tupl|grep ${port401}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port401}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Game+400:"
+fi
+
+if [ -v portipv6 ]; then
+	echo -e "Game ipv6: \t${portipv6} \t$(ss -tupl|grep ${portipv6}|wc -l) \t$(ss -tupl|grep ${portipv6}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${portipv6}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Game ipv6:"
+fi
+
+if [ -v queryport ]; then
+	echo -e "Query: \t${queryport} \t$(ss -tupl|grep ${queryport}|wc -l) \t$(ss -tupl|grep ${queryport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${queryport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Query:"
+fi
+
+if [ -v httpport ]; then
+	echo -e "HTTP: \t${httpport} \t$(ss -tupl|grep ${httpport}|wc -l) \t$(ss -tupl|grep ${httpport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${httpport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "HTTP:"
+fi
+
+if [ -v httpqueryport ]; then
+	echo -e "HTTP Query: \t${httpqueryport} \t$(ss -tupl|grep ${httpqueryport}|wc -l) \t$(ss -tupl|grep ${httpqueryport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${httpqueryport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "HTTP Query:"
+fi
+
+
+if [ -v webadminport ]; then
+	echo -e "Web Admin: \t${webadminport} \t$(ss -tupl|grep ${webadminport}|wc -l) \t$(ss -tupl|grep ${webadminport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${webadminport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Web Admin:"
+fi
+
+if [ -v clientport ]; then
+	echo -e "Client: \t${clientport} \t$(ss -tupl|grep ${clientport}|wc -l) \t$(ss -tupl|grep ${clientport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${clientport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Client:"
+fi
+
+if [ -v rconport ]; then
+	echo -e "RCON: \t${rconport} \t$(ss -tupl|grep ${rconport}|wc -l) \t$(ss -tupl|grep ${rconport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${rconport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "RCON:"
+fi
+
+if [ -v rawport ]; then
+	echo -e "RAW UDP Socket: \t${rawport} \t$(ss -tupl|grep ${rawport}|wc -l) \t$(ss -tupl|grep ${rawport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${rawport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "RAW UDP Socket:"
+fi
+
+if [ -v masterport ]; then
+	echo -e "Game: Master: \t${masterport} \t$(ss -tupl|grep ${masterport}|wc -l) \t$(ss -tupl|grep ${masterport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${masterport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Game: Master:"
+fi
+
+if [ -v steamport ]; then
+	echo -e "Steam: \t${steamport} \t$(ss -tupl|grep ${steamport}|wc -l) \t$(ss -tupl|grep ${steamport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${steamport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Steam:"
+fi
+
+if [ -v steamauthport ]; then
+	echo -e "Steam: Auth: \t${steamauthport} \t$(ss -tupl|grep ${steamauthport}|wc -l) \t$(ss -tupl|grep ${steamauthport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${steamauthport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Steam: Auth:"
+fi
+
+if [ -v steammasterport ]; then
+	echo -e "Steam: Master: \t${steammasterport} \t$(ss -tupl|grep ${steammasterport}|wc -l) \t$(ss -tupl|grep ${steammasterport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${steammasterport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Steam: Master:"
+fi
+
+if [ -v steamqueryport ]; then
+	echo -e "Steam: Query: \t${steamqueryport} \t$(ss -tupl|grep ${steamqueryport}|wc -l) \t$(ss -tupl|grep ${steamqueryport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${steamqueryport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Steam: Query:"
+fi
+if [ -v beaconport ]; then
+	echo -e "Beacon: \t${beaconport} \t$(ss -tupl|grep ${beaconport}|wc -l) \t$(ss -tupl|grep ${beaconport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${beaconport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Beacon:"
+fi
+
+if [ -v appport ]; then
+	echo -e "App: \t${appport} \t$(ss -tupl|grep ${appport}|wc -l) \t$(ss -tupl|grep ${appport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${appport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "App:"
+fi
+
+if [ -v telnetport ]; then
+	echo -e "Telnet: \t${telnetport} \t$(ss -tupl|grep ${telnetport}|wc -l) \t$(ss -tupl|grep ${telnetport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${telnetport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Telnet:"
+fi
+
+if [ -v sourcetvport ]; then
+	echo -e "SourceTV: \t${sourcetvport} \t$(ss -tupl|grep ${sourcetvport}|wc -l) \t$(ss -tupl|grep ${sourcetvport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${sourcetvport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "SourceTV:"
+fi
+
+if [ -v fileport ]; then
+	echo -e "File: \t${fileport} \t$(ss -tupl|grep ${fileport}|wc -l) \t$(ss -tupl|grep ${fileport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${fileport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "File:"
+fi
+
+if [ -v udplinkport ]; then
+	echo -e "UDP Link: \t${udplinkport} \t$(ss -tupl|grep ${udplinkport}|wc -l) \t$(ss -tupl|grep ${udplinkport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${udplinkport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "UDP Link:"
+fi
+
+if [ -v voiceport ]; then
+	echo -e "Voice: \t${voiceport} \t$(ss -tupl|grep ${voiceport}|wc -l) \t$(ss -tupl|grep ${voiceport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${voiceport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Voice:"
+fi
+
+if [ -v voiceunusedport ]; then
+	echo -e "Voice (Unused): \t${voiceunusedport} \t$(ss -tupl|grep ${voiceunusedport}|wc -l) \t$(ss -tupl|grep ${voiceunusedport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${voiceunusedport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Voice (Unused):"
+fi
+
+if [ -v battleeyeport ]; then
+	echo -e "BattleEye: \t${battleeyeport} \t$(ss -tupl|grep ${battleeyeport}|wc -l) \t$(ss -tupl|grep ${battleeyeport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${battleeyeport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "BattleEye:"
+fi
+
+if [ -v statsport ]; then
+	echo -e "Stats: \t${battleeyeport} \t$(ss -tupl|grep ${statsport}|wc -l) \t$(ss -tupl|grep ${statsport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${statsport}|grep udp|awk '{ print $2 }')"
+else
+	echo -e "Stats:"
+fi
+
+} | column -s $'\t' -t
+echo -e ""
+echo -e "${lightgreen}SS Output${default}"
 echo -e "================================="
 echo -e "================================="
-echo -e "Ports"
-echo -e "================================="
+fn_info_message_ports
+echo -e ""
+echo -e "${lightgreen}Query Port - Raw Output${default}"
+echo -e "=================================================================="
 echo -e ""
 echo -e ""
 echo -e "PORT: ${port}"
 echo -e "PORT: ${port}"
 echo -e "QUERY PORT: ${queryport}"
 echo -e "QUERY PORT: ${queryport}"
 echo -e ""
 echo -e ""
-echo -e "Gamedig Raw Output"
+echo -e "${lightgreen}Gamedig Raw Output${default}"
 echo -e "================================="
 echo -e "================================="
 echo -e ""
 echo -e ""
 if [ ! "$(command -v gamedig 2>/dev/null)" ]; then
 if [ ! "$(command -v gamedig 2>/dev/null)" ]; then
@@ -45,7 +224,7 @@ for queryip in "${queryips[@]}"; do
 	echo "${gamedigraw}" | jq
 	echo "${gamedigraw}" | jq
 done
 done
 echo -e ""
 echo -e ""
-echo -e "gsquery Raw Output"
+echo -e "${lightgreen}gsquery Raw Output${default}"
 echo -e "================================="
 echo -e "================================="
 echo -e ""
 echo -e ""
 for queryip in "${queryips[@]}"; do
 for queryip in "${queryips[@]}"; do
@@ -57,7 +236,7 @@ for queryip in "${queryips[@]}"; do
 	"${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}"
 	"${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}"
 done
 done
 echo -e ""
 echo -e ""
-echo -e "TCP Raw Output"
+echo -e "${lightgreen}TCP Raw Output${default}"
 echo -e "================================="
 echo -e "================================="
 echo -e ""
 echo -e ""
 for queryip in "${queryips[@]}"; do
 for queryip in "${queryips[@]}"; do
@@ -73,10 +252,10 @@ for queryip in "${queryips[@]}"; do
 	fi
 	fi
 done
 done
 echo -e ""
 echo -e ""
-echo -e "Game Port - Raw Output"
+echo -e "${lightgreen}Game Port - Raw Output${default}"
 echo -e "=================================================================="
 echo -e "=================================================================="
 echo -e ""
 echo -e ""
-echo -e "TCP Raw Output"
+echo -e "${lightgreen}TCP Raw Output${default}"
 echo -e "================================="
 echo -e "================================="
 echo -e ""
 echo -e ""
 for queryip in "${queryips[@]}"; do
 for queryip in "${queryips[@]}"; do
@@ -91,5 +270,12 @@ for queryip in "${queryips[@]}"; do
 		echo -e "TCP query FAIL"
 		echo -e "TCP query FAIL"
 	fi
 	fi
 done
 done
+echo -e ""
+echo -e "${lightgreen}Steam Master Server Response${default}"
+echo -e "=================================================================="
+echo -e ""
+echo -e "Response: ${displaymasterserver}"
+echo -e ""
+
 exitcode=0
 exitcode=0
 core_exit.sh
 core_exit.sh

+ 1 - 4
lgsm/functions/command_monitor.sh

@@ -74,12 +74,10 @@ fn_monitor_check_queryport(){
 		fn_script_log_info "Checking port: CHECKING"
 		fn_script_log_info "Checking port: CHECKING"
 		if [ -n "${rconenabled}" ]&&[ "${rconenabled}" != "true" ]&&[ ${shortname} == "av" ]; then
 		if [ -n "${rconenabled}" ]&&[ "${rconenabled}" != "true" ]&&[ ${shortname} == "av" ]; then
 			fn_print_warn "Checking port: Unable to query, rcon is not enabled"
 			fn_print_warn "Checking port: Unable to query, rcon is not enabled"
-			fn_print_warn_eol_nl
 			fn_script_log_warn "Checking port: Unable to query, rcon is not enabled"
 			fn_script_log_warn "Checking port: Unable to query, rcon is not enabled"
 		else
 		else
 			fn_print_error "Checking port: Unable to query, queryport is not set"
 			fn_print_error "Checking port: Unable to query, queryport is not set"
 			fn_script_log_error "Checking port: Unable to query, queryport is not set"
 			fn_script_log_error "Checking port: Unable to query, queryport is not set"
-			fn_print_error_eol_nl
 		fi
 		fi
 		core_exit.sh
 		core_exit.sh
 	fi
 	fi
@@ -227,8 +225,7 @@ fn_monitor_loop(){
 monitorflag=1
 monitorflag=1
 check.sh
 check.sh
 core_logs.sh
 core_logs.sh
-info_config.sh
-info_parms.sh
+info_game.sh
 
 
 # query pre-checks
 # query pre-checks
 fn_monitor_check_lockfile
 fn_monitor_check_lockfile

+ 2 - 2
lgsm/functions/command_postdetails.sh

@@ -31,8 +31,7 @@ if [ "${exitbypass}" ]; then
 else
 else
 	# Run checks and gathers details to display.
 	# Run checks and gathers details to display.
 	check.sh
 	check.sh
-	info_config.sh
-	info_parms.sh
+	info_game.sh
 	info_distro.sh
 	info_distro.sh
 	info_messages.sh
 	info_messages.sh
 	for queryip in "${queryips[@]}"
 	for queryip in "${queryips[@]}"
@@ -54,6 +53,7 @@ else
 		if [ "${shortname}" != "jc2" ]&&[ "${shortname}" != "jc3" ]&&[ "${shortname}" != "dst" ]&&[ "${shortname}" != "pz" ]&&[ "${engine}" != "renderware" ]; then
 		if [ "${shortname}" != "jc2" ]&&[ "${shortname}" != "jc3" ]&&[ "${shortname}" != "dst" ]&&[ "${shortname}" != "pz" ]&&[ "${engine}" != "renderware" ]; then
 			fn_info_message_commandlineparms
 			fn_info_message_commandlineparms
 		fi
 		fi
+		fn_info_message_ports_edit
 		fn_info_message_ports
 		fn_info_message_ports
 		fn_info_message_select_engine
 		fn_info_message_select_engine
 		fn_info_message_statusbottom
 		fn_info_message_statusbottom

+ 1 - 1
lgsm/functions/command_restart.sh

@@ -10,7 +10,7 @@ commandaction="Restarting"
 functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 fn_firstcommand_set
 fn_firstcommand_set
 
 
-info_config.sh
+info_game.sh
 exitbypass=1
 exitbypass=1
 command_stop.sh
 command_stop.sh
 command_start.sh
 command_start.sh

+ 9 - 2
lgsm/functions/command_start.sh

@@ -71,7 +71,14 @@ fn_start_tmux(){
 	date '+%s' > "${lockdir}/${selfname}.lock"
 	date '+%s' > "${lockdir}/${selfname}.lock"
 	echo "${version}" >> "${lockdir}/${selfname}.lock"
 	echo "${version}" >> "${lockdir}/${selfname}.lock"
 	echo "${port}" >> "${lockdir}/${selfname}.lock"
 	echo "${port}" >> "${lockdir}/${selfname}.lock"
-	cd "${executabledir}" || exit
+	fn_reload_startparameters
+
+	if [ "${shortname}" == "av" ]; then
+		cd "${systemdir}" || exit
+	else
+		cd "${executabledir}" || exit
+	fi
+
 	tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${startparameters}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp"
 	tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${startparameters}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp"
 
 
 	# Create logfile.
 	# Create logfile.
@@ -184,7 +191,7 @@ fi
 if [ -z "${fixbypass}" ]; then
 if [ -z "${fixbypass}" ]; then
 	fix.sh
 	fix.sh
 fi
 fi
-info_config.sh
+info_game.sh
 core_logs.sh
 core_logs.sh
 
 
 # Will check for updates is updateonstart is yes.
 # Will check for updates is updateonstart is yes.

+ 1 - 1
lgsm/functions/command_stop.sh

@@ -269,7 +269,7 @@ fn_stop_pre_check(){
 check.sh
 check.sh
 fn_print_dots "${servername}"
 fn_print_dots "${servername}"
 
 
-info_config.sh
+info_game.sh
 fn_stop_pre_check
 fn_stop_pre_check
 # Remove lockfile.
 # Remove lockfile.
 if [ -f "${lockdir}/${selfname}.lock" ]; then
 if [ -f "${lockdir}/${selfname}.lock" ]; then

+ 1 - 1
lgsm/functions/command_test_alert.sh

@@ -12,7 +12,7 @@ fn_firstcommand_set
 
 
 fn_print_dots "${servername}"
 fn_print_dots "${servername}"
 check.sh
 check.sh
-info_config.sh
+info_game.sh
 alert="test"
 alert="test"
 alert.sh
 alert.sh
 
 

+ 109 - 158
lgsm/functions/command_wipe.sh

@@ -12,9 +12,9 @@ fn_firstcommand_set
 
 
 # Provides an exit code upon error.
 # Provides an exit code upon error.
 fn_wipe_exit_code(){
 fn_wipe_exit_code(){
-	((exitcode=$?))
+	exitcode=$?
 	if [ "${exitcode}" != 0 ]; then
 	if [ "${exitcode}" != 0 ]; then
-		fn_script_log_fatal "${currentaction}"
+		fn_print_fail_eol_nl
 		core_exit.sh
 		core_exit.sh
 	else
 	else
 		fn_print_ok_eol_nl
 		fn_print_ok_eol_nl
@@ -22,209 +22,160 @@ fn_wipe_exit_code(){
 }
 }
 
 
 # Removes files to wipe server.
 # Removes files to wipe server.
-fn_wipe_server_files(){
-	fn_print_start_nl "Wiping server"
-	fn_script_log_info "Wiping server"
-	# Wipe procedural map.
-	if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.map")" ]; then
-		echo -en "removing procedural map proceduralmap.*.map file(s)..."
-		fn_sleep_time
-		fn_script_log_info "Removing procedural map file(s): ${serveridentitydir}/proceduralmap.*.map"
-		find "${serveridentitydir:?}" -type f -name "proceduralmap.*.map" -delete | tee -a "${lgsmlog}"
-		fn_wipe_exit_code
-		fn_sleep_time
-	else
-		echo -e "no procedural map file to remove"
-		fn_sleep_time
-		fn_script_log_pass "No procedural map file to remove"
-	fi
-	# Wipe Barren map.
-	if [ -n "$(find "${serveridentitydir}" -type f -name "barren*.map")" ]; then
-		echo -en "removing barren map barren*.map file(s)..."
-		fn_sleep_time
-		fn_script_log_info "Removing map file(s): ${serveridentitydir}/barren*.map"
-		find "${serveridentitydir:?}" -type f -name "barren*.map" -delete | tee -a "${lgsmlog}"
-		fn_wipe_exit_code
-		fn_sleep_time
-	else
-		echo -e "no barren map file to remove"
-		fn_sleep_time
-		fn_script_log_pass "No barren map file to remove"
-	fi
-	# Wipe custom map.
-	if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ]; then
-		echo -en "removing custom map file(s)..."
-		fn_sleep_time
-		fn_script_log_info "Removing map file(s): ${serveridentitydir}/*.map"
-		find "${serveridentitydir:?}" -type f -name "*.map" -delete | tee -a "${lgsmlog}"
-		fn_wipe_exit_code
-		fn_sleep_time
-	else
-		echo -e "no map file to remove"
-		fn_sleep_time
-		fn_script_log_pass "No map file to remove"
-	fi
-	# Wipe custom map save.
-	if [ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]; then
-		echo -en "removing map save *.sav* file(s)..."
-		fn_sleep_time
-		fn_script_log_info "Removing map save(s): ${serveridentitydir}/*.sav*"
-		find "${serveridentitydir:?}" -type f -name "*.sav*" -delete | tee -a "${lgsmlog}"
-		fn_wipe_exit_code
-		fn_sleep_time
-	else
-		echo -e "no map save to remove"
-		fn_sleep_time
-		fn_script_log_pass "No map save to remove."
-	fi
-	# Wipe user dir, might be a legacy thing, maybe to be removed.
-	if [ -d "${serveridentitydir}/user" ]; then
-		echo -en "removing user directory..."
-		fn_sleep_time
-		fn_script_log_info "removing user directory: ${serveridentitydir}/user"
-		rm -rf "${serveridentitydir:?}/user"
-		fn_wipe_exit_code
-		fn_sleep_time
-		# We do not print additional information if there is nothing to remove since this might be obsolete.
-	fi
-	# Wipe storage dir, might be a legacy thing, maybe to be removed.
-	if [ -d "${serveridentitydir}/storage" ]; then
-		echo -en "removing storage directory..."
-		fn_sleep_time
-		fn_script_log_info "removing storage directory: ${serveridentitydir}/storage"
-		rm -rf "${serveridentitydir:?}/storage"
-		fn_wipe_exit_code
-		fn_sleep_time
-		# We do not print additional information if there is nothing to remove since this might be obsolete.
-	fi
-	# Wipe sv.files.
-	if [ -n "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then
-		echo -en "removing server misc srv.files*.db file(s)..."
-		fn_sleep_time
-		fn_script_log_info "Removing server misc files: ${serveridentitydir}/sv.files.*.db"
-		find "${serveridentitydir:?}" -type f -name "sv.files.*.db" -delete | tee -a "${lgsmlog}"
-		fn_wipe_exit_code
-		fn_sleep_time
-		# No further information if not found because it should I could not get this file showing up.
-	fi
-	# Wipe player death files.
-	if [ -n "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]; then
-		echo -en "removing player deaths player.deaths.*.db file(s)..."
-		fn_sleep_time
-		fn_script_log_info "Removing player death files: ${serveridentitydir}/player.deaths.*.db"
-		find "${serveridentitydir:?}" -type f -name "player.deaths.*.db" -delete | tee -a "${lgsmlog}"
-		fn_wipe_exit_code
-		fn_sleep_time
-	else
-		echo -e "no player death to remove"
-		fn_sleep_time
-		fn_script_log_pass "No player death to remove"
-	fi
-	# Wipe player states files
-	if [ -n "$(find "${serveridentitydir}" -type f -name "player.states.*.db")" ]; then
-		echo -en "removing player states player.states.*.db file(s)..."
-		fn_sleep_time
-		fn_script_log_info "Removing player states: ${serveridentitydir}/player.states.*.db"
-		find "${serveridentitydir:?}" -type f -name "player.states.*.db" -delete | tee -a "${lgsmlog}"
-		fn_wipe_exit_code
-		fn_sleep_time
-	else
-		echo -e "no player states to remove"
-		fn_sleep_time
-		fn_script_log_pass "No player states to remove"
-	fi
-	# Wipe blueprints only if full-wipe command was used.
-	if [ "${fullwipe}" == "1" ]; then
-		if [ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]; then
-			echo -en "removing blueprints player.blueprints.*.db file(s)..."
+fn_wipe_files(){
+	fn_print_start_nl "${wipetype}"
+	fn_script_log_info "${wipetype}"
+
+	# Remove Map files
+	if [ -n "${serverwipe}" ]||[ -n "${mapwipe}" ]; then
+		if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ]; then
+			echo -en "removing .map file(s)..."
+			fn_script_log_info "removing *.map file(s)"
 			fn_sleep_time
 			fn_sleep_time
-			fn_script_log_info "Removing blueprint file(s): ${serveridentitydir}/player.blueprints.*.db"
-			find "${serveridentitydir:?}" -type f -name "player.blueprints.*.db" -delete | tee -a "${lgsmlog}"
+			find "${serveridentitydir:?}" -type f -name "*.map" -printf "%f\n" >>  "${lgsmlog}"
+			find "${serveridentitydir:?}" -type f -name "*.map" -delete | tee -a "${lgsmlog}"
 			fn_wipe_exit_code
 			fn_wipe_exit_code
+		else
+			echo -e "no .map file(s) to remove"
+			fn_sleep_time
+			fn_script_log_pass "no .map file(s) to remove"
+		fi
+	fi
+	# Remove Save files.
+	if [ -n "${serverwipe}" ]||[ -n "${mapwipe}" ]; then
+		if [ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]; then
+			echo -en "removing .sav file(s)..."
+			fn_script_log_info "removing .sav file(s)"
 			fn_sleep_time
 			fn_sleep_time
+			find "${serveridentitydir:?}" -type f -name "*.sav*" -printf "%f\n" >>  "${lgsmlog}"
+			find "${serveridentitydir:?}" -type f -name "*.sav*" -delete
+			fn_wipe_exit_code
 		else
 		else
-			echo -e "no blueprint file to remove"
+			echo -e "no .sav file(s) to remove"
+			fn_script_log_pass "no .sav file(s) to remove"
 			fn_sleep_time
 			fn_sleep_time
-			fn_script_log_pass "No blueprint file to remove"
 		fi
 		fi
-	elif [ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]; then
-		echo -e "keeping blueprints"
-		fn_sleep_time
-		fn_script_log_info "Keeping blueprints"
-	else
-		echo -e "no blueprints found"
-		fn_sleep_time
-		fn_script_log_pass "No blueprints found"
 	fi
 	fi
-	# Wipe some logs that might be there.
-	if [ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then
-		echo -en "removing log files..."
-		fn_sleep_time
-		fn_script_log_info "Removing log files: ${serveridentitydir}/Log.*.txt"
-		find "${serveridentitydir:?}" -type f -name "Log.*.txt" -delete
-		fn_wipe_exit_code
-		fn_sleep_time
-		# We do not print additional information if there are no logs to remove.
+	# Remove db files for full wipe.
+	# Excluding player.tokens.db for Rust+.
+	if [ -n "${serverwipe}" ]; then
+		if [ -n "$(find "${serveridentitydir}" -type f ! -name 'player.tokens.db' -name "*.db")" ]; then
+			echo -en "removing .db file(s)..."
+			fn_script_log_info "removing .db file(s)"
+			fn_sleep_time
+			find "${serveridentitydir:?}" -type f ! -name 'player.tokens.db' -name "*.db" -printf "%f\n" >> "${lgsmlog}"
+			find "${serveridentitydir:?}" -type f ! -name 'player.tokens.db' -name "*.db" -delete
+			fn_wipe_exit_code
+		else
+			echo -e "no .db file(s) to remove"
+			fn_sleep_time
+			fn_script_log_pass "no .db file(s) to remove"
+		fi
 	fi
 	fi
 }
 }
 
 
-fn_stop_warning(){
-	fn_print_warn "this game server will be stopped during wipe"
-	fn_script_log_warn "this game server will be stopped during wipe"
+fn_map_wipe_warning(){
+	fn_print_warn "Map wipe will reset the map data and keep blueprint data"
+	fn_script_log_warn "Map wipe will reset the map data and keep blueprint data"
 	totalseconds=3
 	totalseconds=3
 	for seconds in {3..1}; do
 	for seconds in {3..1}; do
-		fn_print_warn "this game server will be stopped during wipe: ${totalseconds}"
+		fn_print_warn "Map wipe will reset the map data and keep blueprint data: ${totalseconds}"
 		totalseconds=$((totalseconds - 1))
 		totalseconds=$((totalseconds - 1))
 		sleep 1
 		sleep 1
 		if [ "${seconds}" == "0" ]; then
 		if [ "${seconds}" == "0" ]; then
 			break
 			break
 		fi
 		fi
 	done
 	done
-	fn_print_warn_nl "this game server will be stopped during wipe"
+	fn_print_warn_nl "Map wipe will reset the map data and keep blueprint data"
 }
 }
 
 
-fn_wipe_warning(){
-	fn_print_warn "wipe is about to start"
-	fn_script_log_warn "wipe is about to start"
+fn_full_wipe_warning(){
+	fn_print_warn "Server wipe will reset the map data and remove blueprint data"
+	fn_script_log_warn "Server wipe will reset the map data and remove blueprint data"
 	totalseconds=3
 	totalseconds=3
 	for seconds in {3..1}; do
 	for seconds in {3..1}; do
-		fn_print_warn "wipe is about to start: ${totalseconds}"
+		fn_print_warn "Server wipe will reset the map data and remove blueprint data: ${totalseconds}"
 		totalseconds=$((totalseconds - 1))
 		totalseconds=$((totalseconds - 1))
 		sleep 1
 		sleep 1
 		if [ "${seconds}" == "0" ]; then
 		if [ "${seconds}" == "0" ]; then
 			break
 			break
 		fi
 		fi
 	done
 	done
-	fn_print_warn "wipe is about to start"
+	fn_print_warn_nl "Server wipe will reset the map data and remove blueprint data"
 }
 }
 
 
-# Will change the seed everytime the wipe command is run if the seed in config is not set.
+# Will change the seed if the seed is not defined by the user.
 fn_wipe_random_seed(){
 fn_wipe_random_seed(){
-	shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt"
+	if [ -f "${datadir}/${selfname}-seed.txt" ]&&[ -n "${randomseed}" ]; then
+		shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt"
+		seed=$(cat "${datadir}/${selfname}-seed.txt")
+		randomseed=1
+		echo -en "generating new random seed (${cyan}${seed}${default})..."
+		fn_script_log_pass "generating new random seed (${cyan}${seed}${default})"
+		fn_sleep_time
+		fn_print_ok_eol_nl
+	fi
+}
+
+# A summary of what wipe is going to do.
+fn_wipe_details(){
+	fn_print_information_nl "Wipe does not remove Rust+ data."
+	echo -en "* Wipe map data: "
+	if [ -n "${serverwipe}" ]||[ -n "${mapwipe}" ]; then
+		fn_print_yes_eol_nl
+	else
+		fn_print_no_eol_nl
+	fi
+
+	echo -en "* Wipe blueprint data: "
+	if [ -n "${serverwipe}" ]; then
+		fn_print_yes_eol_nl
+	else
+		fn_print_no_eol_nl
+	fi
+
+	echo -en "* Change Procedural Map seed: "
+	if [ -n "${randomseed}" ]; then
+		fn_print_yes_eol_nl
+	else
+		fn_print_no_eol_nl
+	fi
 }
 }
 
 
 fn_print_dots ""
 fn_print_dots ""
 check.sh
 check.sh
+fix_rust.sh
 
 
 # Check if there is something to wipe.
 # Check if there is something to wipe.
-if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then
-	fn_wipe_warning
+if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]&&[ -n "$(find "${serveridentitydir}" -type f ! -name 'player.tokens.db' -name "*.db")" ]; then
+	if [ -n "${serverwipe}" ]; then
+		wipetype="Full wipe"
+		fn_full_wipe_warning
+		fn_wipe_details
+	elif [ -n "${mapwipe}" ]; then
+		wipetype="Map wipe"
+		fn_map_wipe_warning
+		fn_wipe_details
+	fi
 	check_status.sh
 	check_status.sh
 	if [ "${status}" != "0" ]; then
 	if [ "${status}" != "0" ]; then
-		fn_stop_warning
+		fn_print_restart_warning
 		exitbypass=1
 		exitbypass=1
 		command_stop.sh
 		command_stop.sh
 		fn_firstcommand_reset
 		fn_firstcommand_reset
-		fn_wipe_server_files
+		fn_wipe_files
+		fn_wipe_random_seed
+		fn_print_complete_nl "${wipetype}"
+		fn_script_log_pass "${wipetype}"
 		exitbypass=1
 		exitbypass=1
 		command_start.sh
 		command_start.sh
 		fn_firstcommand_reset
 		fn_firstcommand_reset
 	else
 	else
-		fn_wipe_server_files
+		fn_wipe_files
+		fn_wipe_random_seed
+		fn_print_complete_nl "${wipetype}"
+		fn_script_log_pass "${wipetype}"
 	fi
 	fi
-	fn_print_complete_nl "Wiping ${selfname}"
-	fn_script_log_pass "Wiping ${selfname}"
-	fn_wipe_random_seed
 else
 else
 	fn_print_ok_nl "Wipe not required"
 	fn_print_ok_nl "Wipe not required"
 	fn_script_log_pass "Wipe not required"
 	fn_script_log_pass "Wipe not required"

+ 8 - 2
lgsm/functions/core_dl.sh

@@ -92,9 +92,14 @@ fn_dl_steamcmd(){
 		if [ -n "$(grep -i "Error!" "${steamcmdlog}" | tail -1)" ]&&[ "$(grep -ic "Error!" "${steamcmdlog}")" -ge "${counter}" ] ; then
 		if [ -n "$(grep -i "Error!" "${steamcmdlog}" | tail -1)" ]&&[ "$(grep -ic "Error!" "${steamcmdlog}")" -ge "${counter}" ] ; then
 			# Not enough space.
 			# Not enough space.
 			if [ -n "$(grep "0x202" "${steamcmdlog}" | tail -1)" ]; then
 			if [ -n "$(grep "0x202" "${steamcmdlog}" | tail -1)" ]; then
-				fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Not enough space to download server files"
-				fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Not enough space to download server files"
+				fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files"
+				fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files"
 				core_exit.sh
 				core_exit.sh
+				# Not enough space.
+			elif [ -n "$(grep "0x212" "${steamcmdlog}" | tail -1)" ]; then
+					fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files"
+					fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files"
+					core_exit.sh
 			# Need tp purchase game.
 			# Need tp purchase game.
 			elif [ -n "$(grep "No subscription" "${steamcmdlog}" | tail -1)" ]; then
 			elif [ -n "$(grep "No subscription" "${steamcmdlog}" | tail -1)" ]; then
 				fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Steam account does not have a license for the required game"
 				fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Steam account does not have a license for the required game"
@@ -116,6 +121,7 @@ fn_dl_steamcmd(){
 				fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Update required but not completed - check network"
 				fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Update required but not completed - check network"
 			else
 			else
 				fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Unknown error occured"
 				fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Unknown error occured"
+				echo -en "Please provide content log to LinuxGSM developers https://linuxgsm.com/steamcmd-error"
 				fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Unknown error occured"
 				fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Unknown error occured"
 			fi
 			fi
 		elif [ "${exitcode}" != "0" ]; then
 		elif [ "${exitcode}" != "0" ]; then

+ 8 - 13
lgsm/functions/core_functions.sh

@@ -8,7 +8,7 @@
 
 
 functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 
-modulesversion="v21.2.2"
+modulesversion="v21.2.5"
 
 
 # Core
 # Core
 
 
@@ -381,6 +381,11 @@ functionfile="${FUNCNAME[0]}"
 fn_fetch_function
 fn_fetch_function
 }
 }
 
 
+fix_lo.sh(){
+functionfile="${FUNCNAME[0]}"
+fn_fetch_function
+}
+
 fix_mcb.sh(){
 fix_mcb.sh(){
 functionfile="${FUNCNAME[0]}"
 functionfile="${FUNCNAME[0]}"
 fn_fetch_function
 fn_fetch_function
@@ -508,22 +513,12 @@ fn_fetch_function
 
 
 # Info
 # Info
 
 
-info_stats.sh(){
-functionfile="${FUNCNAME[0]}"
-fn_fetch_function
-}
-
-info_config.sh(){
-functionfile="${FUNCNAME[0]}"
-fn_fetch_function
-}
-
 info_distro.sh(){
 info_distro.sh(){
 functionfile="${FUNCNAME[0]}"
 functionfile="${FUNCNAME[0]}"
 fn_fetch_function
 fn_fetch_function
 }
 }
 
 
-info_gamedig.sh(){
+info_game.sh(){
 functionfile="${FUNCNAME[0]}"
 functionfile="${FUNCNAME[0]}"
 fn_fetch_function
 fn_fetch_function
 }
 }
@@ -533,7 +528,7 @@ functionfile="${FUNCNAME[0]}"
 fn_fetch_function
 fn_fetch_function
 }
 }
 
 
-info_parms.sh(){
+info_stats.sh(){
 functionfile="${FUNCNAME[0]}"
 functionfile="${FUNCNAME[0]}"
 fn_fetch_function
 fn_fetch_function
 }
 }

+ 3 - 3
lgsm/functions/core_getopt.sh

@@ -40,8 +40,8 @@ cmd_mods_update=( "mu;mods-update" "command_mods_update.sh" "Update installed mo
 # Server specific.
 # Server specific.
 cmd_change_password=( "pw;change-password" "command_ts3_server_pass.sh" "Change TS3 serveradmin password." )
 cmd_change_password=( "pw;change-password" "command_ts3_server_pass.sh" "Change TS3 serveradmin password." )
 cmd_install_default_resources=( "ir;install-default-resources" "command_install_resources_mta.sh" "Install the MTA default resources." )
 cmd_install_default_resources=( "ir;install-default-resources" "command_install_resources_mta.sh" "Install the MTA default resources." )
-cmd_wipe=( "w;wipe;wi" "command_wipe.sh" "Map assets are wiped and blueprints are kept." )
-cmd_full_wipe=( "fw;full-wipe;wa;wipeall" "fullwipe=1; command_wipe.sh" "Map assets and blueprints are wiped." )
+cmd_fullwipe=( "fw;full-wipe;wa;wipeall" "serverwipe=1; command_wipe.sh" "Reset the map and remove blueprint data." )
+cmd_mapwipe=( "mw;map-wipe;w;wipe;wi" "mapwipe=1; command_wipe.sh" "Reset the map and keep blueprint data." )
 cmd_map_compressor_u99=( "mc;map-compressor" "compress_ut99_maps.sh" "Compresses all ${gamename} server maps." )
 cmd_map_compressor_u99=( "mc;map-compressor" "compress_ut99_maps.sh" "Compresses all ${gamename} server maps." )
 cmd_map_compressor_u2=( "mc;map-compressor" "compress_unreal2_maps.sh" "Compresses all ${gamename} server maps." )
 cmd_map_compressor_u2=( "mc;map-compressor" "compress_unreal2_maps.sh" "Compresses all ${gamename} server maps." )
 cmd_install_cdkey=( "cd;server-cd-key" "install_ut2k4_key.sh" "Add your server cd key." )
 cmd_install_cdkey=( "cd;server-cd-key" "install_ut2k4_key.sh" "Add your server cd key." )
@@ -105,7 +105,7 @@ fi
 
 
 # Unreal exclusive.
 # Unreal exclusive.
 if [ "${shortname}" == "rust" ]; then
 if [ "${shortname}" == "rust" ]; then
-	currentopt+=( "${cmd_wipe[@]}" "${cmd_full_wipe[@]}" )
+	currentopt+=( "${cmd_fullwipe[@]}" "${cmd_mapwipe[@]}" )
 fi
 fi
 if [ "${engine}" == "unreal2" ]; then
 if [ "${engine}" == "unreal2" ]; then
 	if [ "${shortname}" == "ut2k4" ]; then
 	if [ "${shortname}" == "ut2k4" ]; then

+ 2 - 1
lgsm/functions/core_legacy.sh

@@ -79,5 +79,6 @@ if [ -z "${wsstartmap}" ]; then
 fi
 fi
 
 
 fn_parms(){
 fn_parms(){
-parms="${startparameters}"
+	fn_reload_startparameters
+	parms="${startparameters}"
 }
 }

+ 22 - 0
lgsm/functions/core_messages.sh

@@ -375,6 +375,28 @@ fn_prompt_message(){
 # On-Screen End of Line
 # On-Screen End of Line
 ##################################
 ##################################
 
 
+# YES
+fn_print_yes_eol(){
+	echo -en "${cyan}YES${default}"
+	fn_sleep_time
+}
+
+fn_print_yes_eol_nl(){
+	echo -e "${cyan}YES${default}"
+	fn_sleep_time
+}
+
+# NO
+fn_print_no_eol(){
+	echo -en "${red}NO${default}"
+	fn_sleep_time
+}
+
+fn_print_no_eol_nl(){
+	echo -e "${red}NO${default}"
+	fn_sleep_time
+}
+
 # OK
 # OK
 fn_print_ok_eol(){
 fn_print_ok_eol(){
 	echo -en "${green}OK${default}"
 	echo -en "${green}OK${default}"

+ 7 - 0
lgsm/functions/core_steamcmd.sh

@@ -97,6 +97,13 @@ fn_check_steamcmd_dir_legacy(){
 	fi
 	fi
 }
 }
 
 
+fn_check_steamcmd_steamapp(){
+	# Check that steamapp directory fixes issue #3481
+	if [ ! -d "${serverfiles}/steamapps" ]; then
+		mkdir -p "${serverfiles}/steamapps"
+	fi
+}
+
 fn_check_steamcmd_ark(){
 fn_check_steamcmd_ark(){
 	# Checks if SteamCMD exists in
 	# Checks if SteamCMD exists in
 	# Engine/Binaries/ThirdParty/SteamCMD/Linux
 	# Engine/Binaries/ThirdParty/SteamCMD/Linux

+ 4 - 2
lgsm/functions/fix.sh

@@ -94,9 +94,9 @@ fi
 
 
 # Fixes that are run on install only.
 # Fixes that are run on install only.
 if [ "${commandname}" == "INSTALL" ]; then
 if [ "${commandname}" == "INSTALL" ]; then
-		if [ "${shortname}" == "av" ]||[ "${shortname}" == "cmw" ]||[ "${shortname}" == "kf" ]||[ "${shortname}" == "kf2" ]||[ "${shortname}" == "onset" ]||[ "${shortname}" == "ro" ]||[ "${shortname}" == "samp" ]||[ "${shortname}" == "ut2k4" ]||[ "${shortname}" == "ut" ]||[ "${shortname}" == "ut3" ]; then
+		if [ "${shortname}" == "av" ]||[ "${shortname}" == "cmw" ]||[ "${shortname}" == "kf" ]||[ "${shortname}" == "kf2" ]||[ "${shortname}" == "lo" ]||[ "${shortname}" == "onset" ]||[ "${shortname}" == "ro" ]||[ "${shortname}" == "samp" ]||[ "${shortname}" == "ut2k4" ]||[ "${shortname}" == "ut" ]||[ "${shortname}" == "ut3" ]; then
 			echo -e ""
 			echo -e ""
-			echo -e "${lightyellow}Applying Post-Install Fixes}${default}"
+			echo -e "${lightyellow}Applying Post-Install Fixes${default}"
 			echo -e "================================="
 			echo -e "================================="
 			fn_sleep_time
 			fn_sleep_time
 			postinstall=1
 			postinstall=1
@@ -106,6 +106,8 @@ if [ "${commandname}" == "INSTALL" ]; then
 				fix_kf.sh
 				fix_kf.sh
 			elif [ "${shortname}" == "kf2" ]; then
 			elif [ "${shortname}" == "kf2" ]; then
 				fix_kf2.sh
 				fix_kf2.sh
+			elif [ "${shortname}" == "lo" ]; then
+				fix_lo.sh
 			elif [ "${shortname}" == "ro" ]; then
 			elif [ "${shortname}" == "ro" ]; then
 				fix_ro.sh
 				fix_ro.sh
 			elif [ "${shortname}" == "samp" ]; then
 			elif [ "${shortname}" == "samp" ]; then

+ 17 - 0
lgsm/functions/fix_lo.sh

@@ -0,0 +1,17 @@
+#!/bin/bash
+# LinuxGSM fix_lo.sh function
+# Author: Daniel Gibbs
+# Website: https://linuxgsm.com
+# Description: Resolves installation issue with Last Oasis
+
+functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
+
+local APPID_FILE=${executabledir}/steam_appid.txt
+if [ ! -f "${APPID_FILE}" ]; then
+    fn_print_information "adding ${APPID_FILE} to ${gamename} server."
+    fn_sleep_time
+    echo "903950" > "${APPID_FILE}"
+else
+    fn_print_information "${APPID_FILE} already exists. No action to be taken."
+    fn_sleep_time
+fi

+ 10 - 0
lgsm/functions/fix_rust.sh

@@ -9,3 +9,13 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 
 # Fixes: [Raknet] Server Shutting Down (Shutting Down).
 # Fixes: [Raknet] Server Shutting Down (Shutting Down).
 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/RustDedicated_Data/Plugins/x86_64"
 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/RustDedicated_Data/Plugins/x86_64"
+
+# Part of random seed feature.
+# If seed is not defined by user generate a seed file.
+if [ -z "${seed}" ]; then
+	if [ ! -f "${datadir}/${selfname}-seed.txt" ]; then
+		shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt"
+	fi
+	seed="$(cat "${datadir}/${selfname}-seed.txt")"
+	randomseed=1
+fi

+ 1 - 1
lgsm/functions/fix_ts3.sh

@@ -17,7 +17,7 @@ fi
 
 
 # Fixes: failed to register local accounting service: No such file or directory.
 # Fixes: failed to register local accounting service: No such file or directory.
 accountingfile="/dev/shm/7gbhujb54g8z9hu43jre8"
 accountingfile="/dev/shm/7gbhujb54g8z9hu43jre8"
-if [ -f "${accountingfile}" ]; then
+if [ -f "${accountingfile}" ]&&[ "${status}" == "0" ]; then
 	# Check permissions for the file if the current user owns it, if not exit.
 	# Check permissions for the file if the current user owns it, if not exit.
 	if [ "$( stat -c %U ${accountingfile})" == "$(whoami)" ]; then
 	if [ "$( stat -c %U ${accountingfile})" == "$(whoami)" ]; then
 		fixname="Delete file ${accountingfile}"
 		fixname="Delete file ${accountingfile}"

+ 13 - 1
lgsm/functions/info_distro.sh

@@ -11,6 +11,11 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 ### Game Server pid
 ### Game Server pid
 if [ "${status}" == "1" ]; then
 if [ "${status}" == "1" ]; then
 	gameserverpid=$(tmux list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}')
 	gameserverpid=$(tmux list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}')
+	if [ "${engine}" == "source" ]; then
+		srcdslinuxpid=$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep srcds_linux | awk '{print $2}')
+	elif [ "${engine}" == "goldsrc" ]; then
+		hldslinuxpid=$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep hlds_linux | awk '{print $2}')
+	fi
 fi
 fi
 ### Distro information
 ### Distro information
 
 
@@ -83,6 +88,10 @@ else
 	fi
 	fi
 fi
 fi
 
 
+if [ "$(command -V java 2>/dev/null)" ]; then
+	javaversion=$(java -version 2>&1 | grep "version")
+fi
+
 ## Uptime
 ## Uptime
 uptime=$(</proc/uptime)
 uptime=$(</proc/uptime)
 uptime=${uptime/[. ]*/}
 uptime=${uptime/[. ]*/}
@@ -264,7 +273,7 @@ fi
 # Steam Master Server - checks if detected by master server.
 # Steam Master Server - checks if detected by master server.
 if [ "$(command -v jq 2>/dev/null)" ]; then
 if [ "$(command -v jq 2>/dev/null)" ]; then
 	if [ "${ip}" ]&&[ "${port}" ]; then
 	if [ "${ip}" ]&&[ "${port}" ]; then
-		if [ "${steammaster}" == "true" ]; then
+		if [ "${steammaster}" == "true" ]||[ ${commandname} == "DEV-QUERY-RAW" ]; then
 			# Will query server IP addresses first.
 			# Will query server IP addresses first.
 			for queryip in "${queryips[@]}"; do
 			for queryip in "${queryips[@]}"; do
 				masterserver="$(curl --connect-timeout 10 -m 3 -s 'https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr='${queryip}':'${port}'&format=json' | jq '.response.servers[]|.addr' | wc -l 2>/dev/null)"
 				masterserver="$(curl --connect-timeout 10 -m 3 -s 'https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr='${queryip}':'${port}'&format=json' | jq '.response.servers[]|.addr' | wc -l 2>/dev/null)"
@@ -288,3 +297,6 @@ if [ "${appid}" ]; then
 		glibc="2.14"
 		glibc="2.14"
 	fi
 	fi
 fi
 fi
+
+# Gather Port Info using ss
+ssinfo="$(ss -tuplwn)"

Разница между файлами не показана из-за своего большого размера
+ 803 - 605
lgsm/functions/info_game.sh


Разница между файлами не показана из-за своего большого размера
+ 441 - 293
lgsm/functions/info_messages.sh


+ 0 - 327
lgsm/functions/info_parms.sh

@@ -1,327 +0,0 @@
-#!/bin/bash
-# LinuxGSM info_parms.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: If specific parms are not set then this will be displayed in details.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-## Examples of filtering to get info from config files
-# sed 's/foo//g' - remove foo
-# tr -cd '[:digit:]' leave only digits
-# tr -d '=\"; ' remove selected charectors =\";
-# grep -v "foo" filter out lines that contain foo
-
-unavailable="${red}UNAVAILABLE${default}"
-zero="${red}0${default}"
-
-fn_info_parms_ark(){
-	port=${port:-"0"}
-	queryport=${queryport:-"0"}
-	rconport=${rconport:-"0"}
-	maxplayers=${maxplayers:-"0"}
-}
-
-fn_info_parms_barotrauma(){
-	port=${port:-"0"}
-	queryport=${queryport:-"0"}
-}
-
-fn_info_parms_cod(){
-	defaultmap=${defaultmap:-"NOT SET"}
-	maxplayers=${maxplayers:-"0"}
-	port=${port:-"0"}
-	queryport=${port:-"0"}
-}
-
-fn_info_parms_dst(){
-	sharding=${sharding:-"NOT SET"}
-	master=${master:-"NOT SET"}
-	shard=${shard:-"NOT SET"}
-	cluster=${cluster:-"NOT SET"}
-	cave=${cave:-"NOT SET"}
-}
-
-fn_info_parms_factorio(){
-	port=${port:-"0"}
-	rconport=${rconport:-"0"}
-	rconpassword=${rconpassword:-"NOT SET"}
-}
-
-fn_info_parms_hurtworld(){
-	servername=${servername:-"NOT SET"}
-	port=${port:-"0"}
-	queryport=${queryport:-"0"}
-	maxplayers=${maxplayers:-"0"}
-	defaultmap=${defaultmap:-"NOT SET"}
-	creativemode=${creativemode:-"NOT SET"}
-}
-
-fn_info_parms_inss(){
-	port=${port:-"0"}
-	queryport=${queryport:-"0"}
-	servername=${servername:-"NOT SET"}
-	serverpassword=${serverpassword:-"NOT SET"}
-	defaultmap=${defaultmap:-"NOT SET"}
-	defaultscenario=${defaultscenario:-"NOT SET"}
-	maxplayers=${maxplayers:-"0"}
-}
-
-fn_info_parms_jk2(){
-	queryport=${port}
-}
-
-fn_info_parms_kf2(){
-	queryport=${queryport:-"0"}
-	defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_parms_mordhau(){
-	port=${port:-"0"}
-	queryport=${queryport:-"0"}
-	beaconport=${beaconport:-"0"}
-}
-
-fn_info_parms_mohaa(){
-	port=${port:-"0"}
-	queryport=${port:-"0"}
-	defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_parms_mom(){
-	port=${port:-"7777"}
-	beaconport=${queryport:-"15000"}
-}
-
-fn_info_parms_mta(){
-	queryport=$((port + 123))
-}
-
-fn_info_parms_projectzomboid(){
-	adminpassword=${adminpassword:-"NOT SET"}
-  queryport=${port:-"0"}
-}
-
-fn_info_parms_quakeworld(){
-	port=${port:-"0"}
-	queryport=${port:-"0"}
-}
-
-fn_info_parms_quake2(){
-	port=${port:-"0"}
-	queryport=${port:-"0"}
-	defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_parms_realvirtuality(){
-	port=${port:-"0"}
-	queryport=$((port + 1))
-}
-
-fn_info_parms_risingworld(){
-	servername=${servername:-"NOT SET"}
-	port=${port:-"0"}
-	httpqueryport=$((port - 1))
-}
-
-fn_info_parms_rtcw(){
-	port=${port:-"0"}
-	queryport="${port:-"0"}"
-	defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_parms_rust(){
-	servername=${servername:-"NOT SET"}
-	port=${port:-"0"}
-	queryport=${port:-"0"}
-	rconport=${rconport:-"0"}
-	rconpassword=${rconpassword:-"NOT SET"}
-	rconweb=${rconweb:-"NOT SET"}
-	maxplayers=${maxplayers:-"0"}
-	saveinterval=${saveinterval:-"0"}
-	tickrate=${tickrate:-"0"}
-	# Part of random seed feature.
-	if [ -z "${seed}" ]; then
-		if [ ! -f "${datadir}/${selfname}-seed.txt" ]; then
-			shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt"
-		fi
-		seed=$(cat "${datadir}/${selfname}-seed.txt")
-	fi
-}
-
-fn_info_parms_samp(){
-	queryport=${port:-"0"}
-}
-
-fn_info_parms_sof2(){
-	port=${port:-"0"}
-	defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_parms_source(){
-	defaultmap=${defaultmap:-"NOT SET"}
-	maxplayers=${maxplayers:-"0"}
-	port=${port:-"0"}
-	queryport=${port:-"0"}
-	clientport=${clientport:-"0"}
-}
-
-fn_info_parms_spark(){
-	defaultmap=${defaultmap:-"NOT SET"}
-	maxplayers=${maxplayers:-"0"}
-	port=${port:-"0"}
-	queryport=$((port + 1))
-	servername=${servername:-"NOT SET"}
-	serverpassword=${serverpassword:-"NOT SET"}
-	webadminuser=${webadminuser:-"NOT SET"}
-	webadminpass=${webadminpass:-"NOT SET"}
-	webadminport=${webadminport:-"0"}
-	mods=${mods:-"NOT SET"}
-}
-
-fn_info_parms_stickybots(){
-	port=${port:-"0"}
-	queryport=${queryport:-"0"}
-	servername=${servername:-"NOT SET"}
-	serverpassword=${serverpassword:-"NOT SET"}
-	defaultmap=${defaultmap:-"NOT SET"}
-	maxplayers=${maxplayers:-"0"}
-}
-
-fn_info_parms_sof2(){
-	port=${port:-"0"}
-	queryport=${port:-"0"}
-	defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_parms_towerunite(){
-	port=${port:-"0"}
-	queryport=${queryport:-"0"}
-}
-
-fn_info_parms_teeworlds(){
-  queryport=${port:-"0"}
-}
-
-fn_info_parms_pavlovvr(){
-	port=${port:-"0"}
-	queryport=${queryport:-"0"}
-}
-
-fn_info_parms_unreal(){
-	defaultmap=${defaultmap:-"NOT SET"}
-	queryport=$((port + 1))
-}
-
-fn_info_parms_unreal2(){
-	defaultmap=${defaultmap:-"NOT SET"}
-	queryport=$((port + 1))
-}
-
-fn_info_parms_unreal3(){
-	port=${port:-"0"}
-	queryport=${queryport:-"0"}
-	defaultmap=${defaultmap:-"NOT SET"}
-}
-
-fn_info_parms_unturned(){
-	servername=${selfname:-"NOT SET"}
-	port=${port:-"0"}
-	queryport=$((port + 1))
-}
-
-fn_info_parms_ut(){
-	port=${port:-"0"}
-}
-
-fn_info_parms_vh(){
-	port=${port:-"0"}
-	if [ "${public}" != "0" ]; then
-		queryport=$((port + 1))
-	else
-		querymode="1"
-	fi
-	gameworld=${gameworld:-"NOT SET"}
-	serverpassword=${serverpassword:-"NOT SET"}
-	servername=${servername:-"NOT SET"}
-}
-
-fn_info_parms_wf(){
-	port=${port:-"0"}
-	queryport="${port:-"0"}"
-	webadminport=${webadminport:-"0"}
-}
-
-fn_info_parms_queryport(){
-	queryport="${port:-"0"}"
-}
-
-if [ "${shortname}" == "ark" ]; then
-	fn_info_parms_ark
-elif [ "${shortname}" == "arma3" ]; then
-	fn_info_parms_realvirtuality
-elif [ "${shortname}" == "bt" ]; then
-	fn_info_parms_barotrauma
-elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${engine}" == "iw2.0" ]||[ "${engine}" == "iw3.0" ]; then
-	fn_info_parms_cod
-elif [ "${shortname}" == "fctr" ]; then
-	fn_info_parms_factorio
-elif [ "${shortname}" == "inss" ]; then
-	fn_info_parms_inss
-elif [ "${shortname}" == "jk2" ]; then
-	fn_info_parms_jk2
-elif [ "${shortname}" == "kf2" ]; then
-	fn_info_parms_kf2
-elif [ "${shortname}" == "mohaa" ]; then
-	fn_info_parms_mohaa
-elif [ "${shortname}" == "mom" ]; then
-	fn_info_parms_mom
-elif [ "${shortname}" == "pz" ]; then
-	fn_info_parms_projectzomboid
-elif [ "${shortname}" == "pvr" ]; then
-	fn_info_parms_pavlovvr
-elif [ "${shortname}" == "qw" ]; then
-	fn_info_parms_quakeworld
-elif [ "${shortname}" == "q2" ]||[ "${shortname}" == "q3" ]; then
-	fn_info_parms_quake2
-elif [ "${shortname}" == "rtcw" ]; then
-	fn_info_parms_rtcw
-elif [ "${shortname}" == "rust" ]; then
-	fn_info_parms_rust
-elif [ "${shortname}" == "samp" ]; then
-  fn_info_parms_samp
-elif [ "${shortname}" == "rw" ]; then
-	fn_info_parms_risingworld
-elif [ "${shortname}" == "sof2" ]; then
-	fn_info_parms_sof2
-elif [ "${shortname}" == "sbots" ]; then
-	fn_info_parms_stickybots
-elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then
-	fn_info_parms_source
-elif [ "${engine}" == "spark" ]; then
-	fn_info_parms_spark
-elif [ "${shortname}" == "tu" ]; then
-	fn_info_parms_towerunite
-elif [ "${shortname}" == "tw" ]; then
-	fn_info_parms_teeworlds
-elif [ "${shortname}" == "vh" ]; then
-	fn_info_parms_vh
-elif [ "${shortname}" == "mh" ]; then
-	fn_info_parms_mordhau
-elif [ "${shortname}" == "mta" ]; then
-	fn_info_parms_mta
-elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
-	fn_info_parms_unreal
-elif [ "${engine}" == "unreal3" ]; then
-	fn_info_parms_unreal3
-elif [ "${shortname}" == "unt" ]; then
-	fn_info_parms_unturned
-elif [ "${shortname}" == "ut" ]; then
-	fn_info_parms_ut
-elif [ "${shortname}" == "wf" ]; then
-	fn_info_parms_wf
-# for servers that have a missing queryport from the config
-elif [ "${shortname}" == "scpsl" ]||[ "${shortname}" == "scpslsm" ]; then
-	fn_info_parms_queryport
-fi

+ 32 - 14
lgsm/functions/info_stats.sh

@@ -62,40 +62,34 @@ memusedroundup="$(((memused + 99) / 100 * 100))"
 # Hardware Property - UA-165287622-3
 # Hardware Property - UA-165287622-3
 
 
 ## Distro.
 ## Distro.
-curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 
 
 ## Game Server Name.
 ## Game Server Name.
-curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 
 
 ## LinuxGSM Version.
 ## LinuxGSM Version.
-curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 
 
 ## CPU usage of a game server.
 ## CPU usage of a game server.
 if [ -n "${cpuusedmhzroundup}" ]; then
 if [ -n "${cpuusedmhzroundup}" ]; then
-	curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 fi
 fi
 ## Ram usage of a game server.
 ## Ram usage of a game server.
 if [ -n "${memusedroundup}" ]; then
 if [ -n "${memusedroundup}" ]; then
-	curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 fi
 fi
 ## Disk usage of a game server.
 ## Disk usage of a game server.
 if [ -n "${serverfilesdu}" ]; then
 if [ -n "${serverfilesdu}" ]; then
-	curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
@@ -103,7 +97,6 @@ fi
 
 
 ## CPU Model.
 ## CPU Model.
 if [ -n "${cpumodel}" ]; then
 if [ -n "${cpumodel}" ]; then
-	curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
@@ -112,7 +105,6 @@ fi
 
 
 ## CPU Frequency.
 ## CPU Frequency.
 if [ -n "${cpufreqency}" ]; then
 if [ -n "${cpufreqency}" ]; then
-	curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
@@ -120,7 +112,6 @@ fi
 
 
 ## Server RAM.
 ## Server RAM.
 if [ -n "${physmemtotal}" ]; then
 if [ -n "${physmemtotal}" ]; then
-	curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
@@ -128,17 +119,44 @@ fi
 
 
 ## Server Disk.
 ## Server Disk.
 if [ -n "${totalspace}" ]; then
 if [ -n "${totalspace}" ]; then
-	curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 fi
 fi
 
 
+## Alert Stats.
+if [ "${discordalert}" == "on" ]; then
+	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Discord" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+fi
+if [ "${emailalert}" == "on" ]; then
+	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Email" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+fi
+if [ "${iftttalert}" == "on" ]; then
+	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=IFTTT" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+fi
+if [ "${mailgunalert}" == "on" ]; then
+	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Mailgun" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+fi
+if [ "${pushbulletalert}" == "on" ]; then
+	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Pushbullet" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+fi
+if [ "${pushoveralert}" == "on" ]; then
+	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Pushover" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+fi
+if [ "${rocketchatalert}" == "on" ]; then
+	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Rocket Chat" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+fi
+if [ "${slackalert}" == "on" ]; then
+	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Slack" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+fi
+if [ "${telegramalert}" == "on" ]; then
+	curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Telegram" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+fi
+
 ## Summary Stats
 ## Summary Stats
-curl https://www.google-analytics.com/collect -d "tid=UA-655379-31" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "v=1" > /dev/null 2>&1
-curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "v=1" > /dev/null 2>&1
+curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
+curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1
 
 
 fn_script_log_info "Send LinuxGSM stats"
 fn_script_log_info "Send LinuxGSM stats"
 fn_script_log_info "* uuid-${selfname}: ${uuidinstance}"
 fn_script_log_info "* uuid-${selfname}: ${uuidinstance}"

+ 0 - 20
lgsm/functions/install_modules.sh

@@ -1,20 +0,0 @@
-#!/bin/bash
-# LinuxGSM install_modules.sh module
-# Author: Daniel Gibbs
-# Contributors: http://linuxgsm.com/contrib
-# Website: https://linuxgsm.com
-# Description: Downloads all modules on install.
-
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
-
-echo -e ""
-echo -e "${lightyellow}Downloading LinuxGSM Modules${default}"
-echo -e "================================="
-
-fn_fetch_file "https://github.com/GameServerManagers/LinuxGSM/archive/master.tar.gz" "${tmpdir}" "master.tar.gz" "nochmodx" "norun" "noforce" "nohash"
-fn_dl_extract "${tmpdir}" "master.tar.gz" "${tmpdir}"
-cp "${tmpdir}/LinuxGSM-master/lgsm/functions"/*.sh "${functionsdir}"
-cp "${tmpdir}/LinuxGSM-master/lgsm/functions"/*.py "${functionsdir}"
-chmod +x "${functionsdir}"/*
-command_update_linuxgsm.sh
-fn_firstcommand_reset

+ 1 - 1
lgsm/functions/install_server_files.sh

@@ -27,7 +27,7 @@ fn_install_server_files(){
 	elif [ "${shortname}" == "codwaw" ]; then
 	elif [ "${shortname}" == "codwaw" ]; then
 		remote_fileurl="http://linuxgsm.download/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.xz"; local_filedir="${tmpdir}"; local_filename="codwaw-lnxded-1.7-full.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="2c6be1bb66ea631b9b2e7ae6216c6680"
 		remote_fileurl="http://linuxgsm.download/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.xz"; local_filedir="${tmpdir}"; local_filename="codwaw-lnxded-1.7-full.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="2c6be1bb66ea631b9b2e7ae6216c6680"
 	elif [ "${shortname}" == "etl" ]; then
 	elif [ "${shortname}" == "etl" ]; then
-		remote_fileurl="http://linuxgsm.download/WolfensteinEnemyTerritory/etlegacy-v2.77-i386-et-260b.tar.xz"; local_filedir="${tmpdir}"; local_filename="etlegacy-v2.77-i386-et-260b.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="7f301708f5bb1272c243f9e2d1b735dc"
+		remote_fileurl="http://linuxgsm.download/WolfensteinEnemyTerritory/etlegacy-v2.77.1-i386-et-260b.tar.xz"; local_filedir="${tmpdir}"; local_filename="etlegacy-v2.77.1-i386-et-260b.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="cc307a9232abd3999be499b42d8e4ea8"
 	elif [ "${shortname}" == "mohaa" ]; then
 	elif [ "${shortname}" == "mohaa" ]; then
 		remote_fileurl="http://linuxgsm.download/MedalofHonorAlliedAssault/moh_revival_v1.12_RC3.5.1.tar.xz"; local_filedir="${tmpdir}"; local_filename="moh_revival_v1.12_RC3.5.1.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="7c664538999252eeaf2b6d9949416480"
 		remote_fileurl="http://linuxgsm.download/MedalofHonorAlliedAssault/moh_revival_v1.12_RC3.5.1.tar.xz"; local_filedir="${tmpdir}"; local_filename="moh_revival_v1.12_RC3.5.1.tar.xz"; chmodx="nochmodx" run="norun"; force="noforce"; md5="7c664538999252eeaf2b6d9949416480"
 	elif [ "${shortname}" == "ns" ]; then
 	elif [ "${shortname}" == "ns" ]; then

+ 22 - 1
lgsm/functions/query_gamedig.sh

@@ -14,6 +14,10 @@ if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ];
 	# will bypass query if server offline.
 	# will bypass query if server offline.
 	check_status.sh
 	check_status.sh
 	if [ "${status}" != "0" ]; then
 	if [ "${status}" != "0" ]; then
+		# GameDig requires you use the voice port when querying.
+		if [ "${querytype}" == "teamspeak3" ]; then
+			queryport="${port}"
+		fi
 		# checks if query is working null = pass.
 		# checks if query is working null = pass.
 		gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${queryip}\" --query_port \"${queryport}\"|jq")
 		gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${queryip}\" --query_port \"${queryport}\"|jq")
 		gamedigraw=$(gamedig --type "${querytype}" --host "${queryip}" --query_port "${queryport}")
 		gamedigraw=$(gamedig --type "${querytype}" --host "${queryip}" --query_port "${queryport}")
@@ -25,6 +29,10 @@ if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ];
 			querystatus=$(echo "${gamedigraw}" | jq '.error|length')
 			querystatus=$(echo "${gamedigraw}" | jq '.error|length')
 		fi
 		fi
 
 
+		if [ "${querytype}" == "teamspeak3" ]; then
+			fn_info_game_ts3
+		fi
+
 		# server name.
 		# server name.
 		gdname=$(echo "${gamedigraw}" | jq -re '.name')
 		gdname=$(echo "${gamedigraw}" | jq -re '.name')
 		if [ "${gdname}" == "null" ]; then
 		if [ "${gdname}" == "null" ]; then
@@ -34,6 +42,8 @@ if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ];
 		# numplayers.
 		# numplayers.
 		if [ "${querytype}" == "minecraft" ]; then
 		if [ "${querytype}" == "minecraft" ]; then
 			gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length-1')
 			gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length-1')
+		elif [ "${querytype}" == "teamspeak3" ]; then
+			gdplayers=$(echo "${gamedigraw}" | jq -re '.raw.virtualserver_clientsonline')
 		else
 		else
 			gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length')
 			gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length')
 		fi
 		fi
@@ -46,7 +56,7 @@ if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ];
 		# maxplayers.
 		# maxplayers.
 		gdmaxplayers=$(echo "${gamedigraw}" | jq -re '.maxplayers')
 		gdmaxplayers=$(echo "${gamedigraw}" | jq -re '.maxplayers')
 		if [ "${gdmaxplayers}" == "null" ]; then
 		if [ "${gdmaxplayers}" == "null" ]; then
-			unset maxplayers
+			unset gdmaxplayers
 		elif [ "${gdmaxplayers}" == "[]" ]; then
 		elif [ "${gdmaxplayers}" == "[]" ]; then
 			gdmaxplayers=0
 			gdmaxplayers=0
 		fi
 		fi
@@ -68,5 +78,16 @@ if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ];
 		if [ "${gdbots}" == "null" ]||[ "${gdbots}" == "0" ]; then
 		if [ "${gdbots}" == "null" ]||[ "${gdbots}" == "0" ]; then
 			unset gdbots
 			unset gdbots
 		fi
 		fi
+
+		# server version.
+		if [ "${querytype}" == "teamspeak3" ]; then
+			dversion=$(echo "${gamedigraw}" | jq -re '.raw.virtualserver_version')
+		else
+			gdversion=$(echo "${gamedigraw}" | jq -re '.raw.version')
+		fi
+
+		if [ "${gdversion}" == "null" ]||[ "${gdversion}" == "0" ]; then
+			unset gdversion
+		fi
 	fi
 	fi
 fi
 fi

+ 5 - 2
lgsm/functions/update_minecraft_bedrock.sh

@@ -7,8 +7,11 @@
 
 
 functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 
+#random number for userAgent
+randnum=$((1 + RANDOM % 5000))
+
 fn_update_minecraft_dl(){
 fn_update_minecraft_dl(){
-	latestmcbuildurl=$(curl -Ls "https://www.minecraft.net/en-us/download/server/bedrock/" | grep -o 'https://minecraft.azureedge.net/bin-linux/[^"]*zip')
+	latestmcbuildurl=$(curl -H "Accept-Encoding: identity" -H "Accept-Language: en" -Ls -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.${randnum}.212 Safari/537.36" "https://www.minecraft.net/en-us/download/server/bedrock/" | grep -o 'https://minecraft.azureedge.net/bin-linux/[^"]*zip')
 	fn_fetch_file "${latestmcbuildurl}" "" "" "" "${tmpdir}" "bedrock_server.${remotebuild}.zip"
 	fn_fetch_file "${latestmcbuildurl}" "" "" "" "${tmpdir}" "bedrock_server.${remotebuild}.zip"
 	echo -e "Extracting to ${serverfiles}...\c"
 	echo -e "Extracting to ${serverfiles}...\c"
 	if [ "${firstcommandname}" == "INSTALL" ]; then
 	if [ "${firstcommandname}" == "INSTALL" ]; then
@@ -79,7 +82,7 @@ fn_update_minecraft_localbuild(){
 
 
 fn_update_minecraft_remotebuild(){
 fn_update_minecraft_remotebuild(){
 	# Gets remote build info.
 	# Gets remote build info.
-	remotebuild=$(curl -Ls "https://www.minecraft.net/en-us/download/server/bedrock/" | grep -o 'https://minecraft.azureedge.net/bin-linux/[^"]*' | sed 's/.*\///' | grep -Eo "[.0-9]+[0-9]")
+	remotebuild=$(curl -H "Accept-Encoding: identity" -H "Accept-Language: en" -Ls -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.${randnum}.212 Safari/537.36" "https://www.minecraft.net/en-us/download/server/bedrock/" | grep -o 'https://minecraft.azureedge.net/bin-linux/[^"]*' | sed 's/.*\///' | grep -Eo "[.0-9]+[0-9]")
 	if [ "${firstcommandname}" != "INSTALL" ]; then
 	if [ "${firstcommandname}" != "INSTALL" ]; then
 		fn_print_dots "Checking remote build: ${remotelocation}"
 		fn_print_dots "Checking remote build: ${remotelocation}"
 		# Checks if remotebuild variable has been set.
 		# Checks if remotebuild variable has been set.

+ 1 - 1
lgsm/functions/update_papermc.sh

@@ -74,7 +74,7 @@ fn_update_papermc_remotebuild(){
 fn_update_papermc_compare(){
 fn_update_papermc_compare(){
 	fn_print_dots "Checking for update: ${remotelocation}"
 	fn_print_dots "Checking for update: ${remotelocation}"
 	sleep 0.5
 	sleep 0.5
-	if [ "${localbuild}" != "${remotebuild}" ]||[ "${forceupdate}" == "1" ]; then		
+	if [ "${localbuild}" != "${remotebuild}" ]||[ "${forceupdate}" == "1" ]; then
 		fn_print_ok_nl "Checking for update: ${remotelocation}"
 		fn_print_ok_nl "Checking for update: ${remotelocation}"
 		echo -en "\n"
 		echo -en "\n"
 		echo -e "Update available for version ${paperversion}"
 		echo -e "Update available for version ${paperversion}"

+ 2 - 3
linuxgsm.sh

@@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="v21.2.2"
+version="v21.2.5"
 shortname="core"
 shortname="core"
 gameservername="core"
 gameservername="core"
 commandname="CORE"
 commandname="CORE"
@@ -478,7 +478,7 @@ else
 		elif grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/_default.cfg"; then
 		elif grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/_default.cfg"; then
 			eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/_default.cfg")"
 			eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/_default.cfg")"
 		fi
 		fi
-		
+
 		# For legacy configs that still use parms= 15.03.21
 		# For legacy configs that still use parms= 15.03.21
 		if grep -qE "^[[:blank:]]*parms=" "${configdirserver}/secrets-${selfname}.cfg"; then
 		if grep -qE "^[[:blank:]]*parms=" "${configdirserver}/secrets-${selfname}.cfg"; then
 			eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")"
 			eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")"
@@ -497,7 +497,6 @@ else
 		fi
 		fi
 	}
 	}
 
 
-	fn_reload_startparameters
 	# Load the linuxgsm.sh in to tmpdir. If missing download it.
 	# Load the linuxgsm.sh in to tmpdir. If missing download it.
 	if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then
 	if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then
 		fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5"
 		fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5"

+ 2 - 2
tests/tests_fctrserver.sh

@@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="v21.2.2"
+version="v21.2.5"
 shortname="fctr"
 shortname="fctr"
 gameservername="fctrserver"
 gameservername="fctrserver"
 commandname="CORE"
 commandname="CORE"
@@ -923,7 +923,7 @@ echo -e ""
 echo -e "5.0 - Monitor Tests"
 echo -e "5.0 - Monitor Tests"
 echo -e "=================================================================="
 echo -e "=================================================================="
 echo -e ""
 echo -e ""
-info_config.sh
+info_game.sh
 echo -e "Server IP - Port: ${ip}:${port}"
 echo -e "Server IP - Port: ${ip}:${port}"
 echo -e "Server IP - Query Port: ${ip}:${queryport}"
 echo -e "Server IP - Query Port: ${ip}:${queryport}"
 
 

+ 2 - 2
tests/tests_jc2server.sh

@@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="v21.2.2"
+version="v21.2.5"
 shortname="jc2"
 shortname="jc2"
 gameservername="jc2server"
 gameservername="jc2server"
 commandname="CORE"
 commandname="CORE"
@@ -1082,7 +1082,7 @@ echo -e ""
 echo -e "5.0 - Monitor Tests"
 echo -e "5.0 - Monitor Tests"
 echo -e "=================================================================="
 echo -e "=================================================================="
 echo -e ""
 echo -e ""
-info_config.sh
+info_game.sh
 echo -e "Server IP - Port: ${ip}:${port}"
 echo -e "Server IP - Port: ${ip}:${port}"
 echo -e "Server IP - Query Port: ${ip}:${queryport}"
 echo -e "Server IP - Query Port: ${ip}:${queryport}"
 
 

+ 2 - 2
tests/tests_mcserver.sh

@@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="v21.2.2"
+version="v21.2.5"
 shortname="mc"
 shortname="mc"
 gameservername="mcserver"
 gameservername="mcserver"
 commandname="CORE"
 commandname="CORE"
@@ -945,7 +945,7 @@ echo -e ""
 echo -e "5.0 - Monitor Tests"
 echo -e "5.0 - Monitor Tests"
 echo -e "=================================================================="
 echo -e "=================================================================="
 echo -e ""
 echo -e ""
-info_config.sh
+info_game.sh
 echo -e "Server IP - Port: ${ip}:${port}"
 echo -e "Server IP - Port: ${ip}:${port}"
 echo -e "Server IP - Query Port: ${ip}:${queryport}"
 echo -e "Server IP - Query Port: ${ip}:${queryport}"
 
 

+ 2 - 2
tests/tests_ts3server.sh

@@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="v21.2.2"
+version="v21.2.5"
 shortname="ts3"
 shortname="ts3"
 gameservername="ts3server"
 gameservername="ts3server"
 commandname="CORE"
 commandname="CORE"
@@ -922,7 +922,7 @@ echo -e ""
 echo -e "5.0 - Monitor Tests"
 echo -e "5.0 - Monitor Tests"
 echo -e "=================================================================="
 echo -e "=================================================================="
 echo -e ""
 echo -e ""
-info_config.sh
+info_game.sh
 echo -e "Server IP - Port: ${ip}:${port}"
 echo -e "Server IP - Port: ${ip}:${port}"
 echo -e "Server IP - Query Port: ${ip}:${queryport}"
 echo -e "Server IP - Query Port: ${ip}:${queryport}"
 
 

Некоторые файлы не были показаны из-за большого количества измененных файлов