Ver Fonte

Merge branch 'release/v23.7.0'

Daniel Gibbs há 2 anos atrás
pai
commit
2e0d053c84
82 ficheiros alterados com 500 adições e 335 exclusões
  1. 2 3
      lgsm/config-default/config-lgsm/arkserver/_default.cfg
  2. 1 1
      lgsm/config-default/config-lgsm/arma3server/_default.cfg
  3. 3 3
      lgsm/config-default/config-lgsm/btlserver/_default.cfg
  4. 1 1
      lgsm/config-default/config-lgsm/cod2server/_default.cfg
  5. 1 1
      lgsm/config-default/config-lgsm/cod4server/_default.cfg
  6. 1 1
      lgsm/config-default/config-lgsm/codserver/_default.cfg
  7. 1 1
      lgsm/config-default/config-lgsm/coduoserver/_default.cfg
  8. 1 1
      lgsm/config-default/config-lgsm/codwawserver/_default.cfg
  9. 1 1
      lgsm/config-default/config-lgsm/colserver/_default.cfg
  10. 1 1
      lgsm/config-default/config-lgsm/ctserver/_default.cfg
  11. 1 1
      lgsm/config-default/config-lgsm/dayzserver/_default.cfg
  12. 1 3
      lgsm/config-default/config-lgsm/gmodserver/_default.cfg
  13. 2 2
      lgsm/config-default/config-lgsm/hcuserver/_default.cfg
  14. 4 4
      lgsm/config-default/config-lgsm/inssserver/_default.cfg
  15. 1 1
      lgsm/config-default/config-lgsm/jk2server/_default.cfg
  16. 1 1
      lgsm/config-default/config-lgsm/kfserver/_default.cfg
  17. 2 1
      lgsm/config-default/config-lgsm/mhserver/_default.cfg
  18. 1 1
      lgsm/config-default/config-lgsm/mohaaserver/_default.cfg
  19. 2 1
      lgsm/config-default/config-lgsm/momserver/_default.cfg
  20. 2 2
      lgsm/config-default/config-lgsm/ns2cserver/_default.cfg
  21. 6 5
      lgsm/config-default/config-lgsm/ns2server/_default.cfg
  22. 2 2
      lgsm/config-default/config-lgsm/ohdserver/_default.cfg
  23. 1 0
      lgsm/config-default/config-lgsm/onsetserver/_default.cfg
  24. 1 5
      lgsm/config-default/config-lgsm/psserver/_default.cfg
  25. 3 2
      lgsm/config-default/config-lgsm/pvrserver/_default.cfg
  26. 1 1
      lgsm/config-default/config-lgsm/q3server/_default.cfg
  27. 22 14
      lgsm/config-default/config-lgsm/q4server/_default.cfg
  28. 2 1
      lgsm/config-default/config-lgsm/rustserver/_default.cfg
  29. 2 2
      lgsm/config-default/config-lgsm/sampserver/_default.cfg
  30. 1 1
      lgsm/config-default/config-lgsm/sbotsserver/_default.cfg
  31. 4 3
      lgsm/config-default/config-lgsm/sfserver/_default.cfg
  32. 2 2
      lgsm/config-default/config-lgsm/squadserver/_default.cfg
  33. 2 1
      lgsm/config-default/config-lgsm/tiserver/_default.cfg
  34. 1 1
      lgsm/config-default/config-lgsm/tuserver/_default.cfg
  35. 1 1
      lgsm/config-default/config-lgsm/ut3server/_default.cfg
  36. 3 3
      lgsm/config-default/config-lgsm/wurmserver/_default.cfg
  37. 1 1
      lgsm/data/almalinux-8.csv
  38. 1 1
      lgsm/data/almalinux-9.csv
  39. 1 1
      lgsm/data/centos-7.csv
  40. 1 1
      lgsm/data/centos-8.csv
  41. 1 1
      lgsm/data/centos-9.csv
  42. 1 1
      lgsm/data/debian-10.csv
  43. 1 1
      lgsm/data/debian-11.csv
  44. 1 1
      lgsm/data/debian-12.csv
  45. 1 1
      lgsm/data/debian-9.csv
  46. BIN
      lgsm/data/gameicons/cd-icon.png
  47. BIN
      lgsm/data/gameicons/q4-icon.png
  48. 1 1
      lgsm/data/rhel-7.csv
  49. 1 1
      lgsm/data/rhel-8.csv
  50. 1 1
      lgsm/data/rhel-9.csv
  51. 1 1
      lgsm/data/rocky-8.csv
  52. 1 1
      lgsm/data/rocky-9.csv
  53. 1 1
      lgsm/data/serverlist.csv
  54. 1 1
      lgsm/data/ubuntu-16.04.csv
  55. 1 1
      lgsm/data/ubuntu-18.04.csv
  56. 1 1
      lgsm/data/ubuntu-20.04.csv
  57. 1 1
      lgsm/data/ubuntu-22.04.csv
  58. 1 1
      lgsm/data/ubuntu-23.04.csv
  59. 1 1
      lgsm/data/ubuntu-23.10.csv
  60. 9 2
      lgsm/modules/check_config.sh
  61. 3 3
      lgsm/modules/check_deps.sh
  62. 38 21
      lgsm/modules/check_system_requirements.sh
  63. 1 1
      lgsm/modules/command_backup.sh
  64. 1 1
      lgsm/modules/command_debug.sh
  65. 11 35
      lgsm/modules/command_start.sh
  66. 1 1
      lgsm/modules/core_getopt.sh
  67. 1 1
      lgsm/modules/core_modules.sh
  68. 3 1
      lgsm/modules/core_steamcmd.sh
  69. 2 2
      lgsm/modules/fix.sh
  70. 1 1
      lgsm/modules/fix_armar.sh
  71. 105 24
      lgsm/modules/fix_kf.sh
  72. 21 7
      lgsm/modules/fix_nmrih.sh
  73. 18 0
      lgsm/modules/fix_rust.sh
  74. 6 0
      lgsm/modules/fix_vh.sh
  75. 88 96
      lgsm/modules/info_distro.sh
  76. 33 18
      lgsm/modules/info_game.sh
  77. 23 8
      lgsm/modules/info_messages.sh
  78. 12 6
      lgsm/modules/info_stats.sh
  79. 8 8
      lgsm/modules/install_config.sh
  80. 8 1
      lgsm/modules/install_server_files.sh
  81. 1 1
      lgsm/modules/mods_list.sh
  82. 1 1
      linuxgsm.sh

+ 2 - 3
lgsm/config-default/config-lgsm/arkserver/_default.cfg

@@ -12,14 +12,13 @@
 ip="0.0.0.0"
 ip="0.0.0.0"
 port="7777"
 port="7777"
 queryport="27015"
 queryport="27015"
-rconport="27020"
 # Default Map: TheIsland, Ragnarok, CrystalIsles, Aberration_P, ScorchedEarth_P, TheCenter, Extinction, Valguero_P, Genesis, Gen2
 # Default Map: TheIsland, Ragnarok, CrystalIsles, Aberration_P, ScorchedEarth_P, TheCenter, Extinction, Valguero_P, Genesis, Gen2
 defaultmap="TheIsland"
 defaultmap="TheIsland"
 altsavedirectoryname="${defaultmap}"
 altsavedirectoryname="${defaultmap}"
-maxplayers="70"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="${defaultmap}?AltSaveDirectoryName=${altsavedirectoryname}?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port} -automanagedmods -crossplay -PublicIPForEpic=${publicip}"
+## Game Server Docs | https://ark.wiki.gg/wiki/Server_configuration
+startparameters="${defaultmap}?AltSaveDirectoryName=${altsavedirectoryname} -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -AutoManagedMods -Crossplay -PublicIPForEpic=${publicip}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -32,7 +32,7 @@ servermods=""
 bepath=""
 bepath=""
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod='${mods}' -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory"
+startparameters="-ip=${ip} -port=${port} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods} -servermod=${servermods} -bepath=${bepath} -autoinit -loadmissiontomemory"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -14,7 +14,7 @@ port="7777"
 queryport="7780"
 queryport="7780"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="/Game/Maps/Final_Maps/Derailed?Game=/Script/ShooterGame.WartideGameMode?listen -log -broadcastip=\"${publicip}\" -PORT=${port} -QueryPort=${queryport} -defgameini=\"${servercfgfullpath}\""
+startparameters="-Port=${port} -QueryPort=${queryport} -BroadcastIp=${publicip} -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 
@@ -157,8 +157,8 @@ systemdir="${serverfiles}/Battalion"
 executabledir="${systemdir}/Binaries/Linux"
 executabledir="${systemdir}/Binaries/Linux"
 executable="./BattalionServer-Linux-Shipping"
 executable="./BattalionServer-Linux-Shipping"
 servercfgdir="${systemdir}/Saved/Config/LinuxServer"
 servercfgdir="${systemdir}/Saved/Config/LinuxServer"
-servercfg="${selfname}.ini"
-servercfgdefault="DefaultGame.ini"
+servercfg="Game.ini"
+servercfgdefault="Game.ini"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 
 
 ## Backup Directory
 ## Backup Directory

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

@@ -15,7 +15,7 @@ defaultmap="mp_leningrad"
 maxplayers="20"
 maxplayers="20"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +map ${defaultmap} +exec ${servercfg}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -15,7 +15,7 @@ defaultmap="mp_crossfire"
 maxplayers="32"
 maxplayers="32"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set fs_homepath ${serverfiles} +set sv_authorizemode "-1" +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set fs_homepath ${serverfiles} +set sv_authorizemode "-1" +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +map ${defaultmap} +exec ${servercfg}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -15,7 +15,7 @@ defaultmap="mp_neuville"
 maxplayers="20"
 maxplayers="20"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +map ${defaultmap} +exec ${servercfg}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -15,7 +15,7 @@ defaultmap="mp_cassino"
 maxplayers="20"
 maxplayers="20"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +map ${defaultmap} +exec ${servercfg}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -15,7 +15,7 @@ defaultmap="mp_castle"
 maxplayers="20"
 maxplayers="20"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +exec ${servercfg} +map ${defaultmap}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxplayers} +map ${defaultmap} +exec ${servercfg}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -136,7 +136,7 @@ querymode="2"
 querytype="protocol-valve"
 querytype="protocol-valve"
 
 
 ## Console type
 ## Console type
-consoleverbose="no"
+consoleverbose="yes"
 consoleinteract="no"
 consoleinteract="no"
 
 
 ## Game Server Details
 ## Game Server Details

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

@@ -135,7 +135,7 @@ querymode="1"
 querytype=""
 querytype=""
 
 
 ## Console type
 ## Console type
-consoleverbose="no"
+consoleverbose="yes"
 consoleinteract="yes"
 consoleinteract="yes"
 
 
 ## Game Server Details
 ## Game Server Details

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

@@ -128,7 +128,7 @@ steamcmdforcewindows="no"
 branch=""
 branch=""
 betapassword=""
 betapassword=""
 # Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
 # Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
-steammaster="false"
+steammaster="true"
 
 
 ## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
 ## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
 # 1: tmux kill
 # 1: tmux kill

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

@@ -19,8 +19,6 @@ tickrate="66"
 gamemode="sandbox"
 gamemode="sandbox"
 
 
 ## Workshop Parameters | https://wiki.facepunch.com/gmod/Workshop_for_Dedicated_Servers
 ## Workshop Parameters | https://wiki.facepunch.com/gmod/Workshop_for_Dedicated_Servers
-# To get an API key visit - https://steamcommunity.com/dev/apikey
-wsapikey=""
 wscollectionid=""
 wscollectionid=""
 
 
 ## Game Server Login Token (GSLT): Optional
 ## Game Server Login Token (GSLT): Optional
@@ -29,7 +27,7 @@ wscollectionid=""
 gslt=""
 gslt=""
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickrate} +host_workshop_collection ${wscollectionid} -authkey ${wsapikey} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -disableluarefresh"
+startparameters="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickrate} +host_workshop_collection ${wscollectionid} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +sv_setsteamaccount ${gslt} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -disableluarefresh"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -17,7 +17,7 @@ queryport="27015"
 servername="LinuxGSM"
 servername="LinuxGSM"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="${defaultmap}?Difficulty=1?Game=DM?MapList=KidsBedroom,Playground,Garden,Hallway_Simple,Bathroom,Hallway_Hard,Attic_Daytime,Shed,ToyPalace,Kitchen,Garage?MaxPlayers=${maxplayers}?WeaponTypes=7?TimeLimit=600?ScoreLimit=30?Teamplay -ServerName='${servername}' -Port=${port} -QueryPort=${queryport} -NOCONSOLE -unattended"
+startparameters="${defaultmap}?MaxPlayers=${maxplayers} -ServerName='${servername}' -Port=${port} -QueryPort=${queryport}"
 
 
 ## Server Parameters for Plague mode
 ## Server Parameters for Plague mode
 #startparameters="${defaultmap}?Game=PL?MapList=KidsBedroom,Garden,Hallway_Simple,Attic_Daytime,Garage,Shed,Kitchen,Hallway_Hard,ToyPalace,Bathroom?MaxPlayers=${maxplayers}?WeaponTypes=7?TimeLimit=600 -ServerName='${servername}' -Port=${port} -QueryPort=${queryport} -NOCONSOLE -unattended"
 #startparameters="${defaultmap}?Game=PL?MapList=KidsBedroom,Garden,Hallway_Simple,Attic_Daytime,Garage,Shed,Kitchen,Hallway_Hard,ToyPalace,Bathroom?MaxPlayers=${maxplayers}?WeaponTypes=7?TimeLimit=600 -ServerName='${servername}' -Port=${port} -QueryPort=${queryport} -NOCONSOLE -unattended"
@@ -150,7 +150,7 @@ querymode="1"
 querytype=""
 querytype=""
 
 
 ## Console type
 ## Console type
-consoleverbose="no"
+consoleverbose="yes"
 consoleinteract="no"
 consoleinteract="no"
 
 
 ## Game Server Details
 ## Game Server Details

+ 4 - 4
lgsm/config-default/config-lgsm/inssserver/_default.cfg

@@ -13,10 +13,10 @@ ip="0.0.0.0"
 port="27102"
 port="27102"
 queryport="27131"
 queryport="27131"
 rconport="27015"
 rconport="27015"
-rconpassword=""
+rconpassword="CHANGE_ME"
 servername="LinuxGSM"
 servername="LinuxGSM"
-defaultmap="Canyon"
-defaultscenario="Scenario_Crossing_Push_Security"
+defaultmap="Oilfield"
+defaultscenario="Scenario_Refinery_Push_Security"
 maxplayers="28"
 maxplayers="28"
 
 
 ## Game Server Login Token (GSLT): Optional
 ## Game Server Login Token (GSLT): Optional
@@ -25,7 +25,7 @@ maxplayers="28"
 gslt=""
 gslt=""
 
 
 ## 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://mod.io/g/insurgencysandstorm/r/server-admin-guide
+## Game Server Docs | https://mod.io/g/insurgencysandstorm/r/server-admin-guide
 startparameters="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -Rcon -RconPassword=${rconpassword} -RconListenPort=${rconport} -GSLTToken=${gslt} -log"
 startparameters="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -Rcon -RconPassword=${rconpassword} -RconListenPort=${rconport} -GSLTToken=${gslt} -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####

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

@@ -18,7 +18,7 @@ port="27960"
 defaultmap="ffa_bespin"
 defaultmap="ffa_bespin"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set net_ip ${ip} +set net_port ${port} +map ${defaultmap} +exec ${servercfg}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -121,7 +121,7 @@ steamcmdforcewindows="no"
 branch=""
 branch=""
 betapassword=""
 betapassword=""
 # Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
 # Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
-steammaster="false"
+steammaster="true"
 
 
 ## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
 ## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
 # 1: tmux kill
 # 1: tmux kill

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

@@ -17,7 +17,8 @@ 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} -GameIni=${servercfgfullpath}"
+## Game Server Docs | https://mordhau.fandom.com/wiki/Dedicated_Server_Hosting_Guide
+startparameters="Mordhau ${defaultmap} -MultiHome=${ip} -Port=${port} -BeaconPort=${beaconport} -QueryPort=${queryport} -GameIni=${servercfgfullpath} -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -14,7 +14,7 @@ port="12203"
 defaultmap="dm/mohdm1"
 defaultmap="dm/mohdm1"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set fs_outputpath ${gamelogdir} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set fs_outputpath ${gamelogdir} +set dedicated 2 +set net_ip ${ip} +set net_port ${port} +map ${defaultmap} +exec ${servercfg} "
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

+ 2 - 1
lgsm/config-default/config-lgsm/momserver/_default.cfg

@@ -14,7 +14,8 @@ port="7777"
 beaconport="15000"
 beaconport="15000"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-port="${port}" -beaconport="${beaconport}" -MULTIHOME="${ip}""
+## Game Server Docs | https://memoriesofmars.fandom.com/wiki/Dedicated_Servers
+startparameters="-MultiHome=${ip} -Port=${port} -BeaconPort=${beaconport} -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -15,7 +15,7 @@ defaultmap="co_core"
 maxplayers="24"
 maxplayers="24"
 servername="LinuxGSM"
 servername="LinuxGSM"
 httpuser="admin"
 httpuser="admin"
-httppassword="admin"
+httppassword="CHANGE_ME"
 httpport="8080"
 httpport="8080"
 mods=""
 mods=""
 serverpassword=""
 serverpassword=""
@@ -24,7 +24,7 @@ serverpassword=""
 # -password \"${serverpassword}\"
 # -password \"${serverpassword}\"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${httpuser} -webpassword \"${httppassword}\" -webport ${httpport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -modstorage \"${modstoragedir}\" -mods \"${mods}\""
+startparameters="-name '${servername}' -port ${port} -webadmin -webdomain ${ip} -webuser ${httpuser} -webpassword '${httppassword}' -webport ${httpport} -map ${defaultmap} -limit ${maxplayers} -config_path '${servercfgdir}' -modstorage '${modstoragedir}' -mods '${mods}'"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

+ 6 - 5
lgsm/config-default/config-lgsm/ns2server/_default.cfg

@@ -12,19 +12,20 @@
 ip="0.0.0.0"
 ip="0.0.0.0"
 port="27015"
 port="27015"
 defaultmap="ns2_summit"
 defaultmap="ns2_summit"
-maxplayers="24"
+maxplayers="20"
+maxspectators="5"
 servername="LinuxGSM"
 servername="LinuxGSM"
 httpuser="admin"
 httpuser="admin"
-httppassword="admin"
+httppassword="CHANGE_ME"
 httpport="8080"
 httpport="8080"
-mods=""
+modserverport="27031"
 serverpassword=""
 serverpassword=""
 # Add the following line to the parms if you want a private server. Ensuring
 # Add the following line to the parms if you want a private server. Ensuring
 # that the password variable above is not left empty.
 # that the password variable above is not left empty.
-# -password \"${serverpassword}\"
+# -password '${serverpassword}'
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${httpuser} -webpassword \"${httppassword}\" -webport ${httpport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${servercfgdir}\" -logdir \"${gamelogdir}\" -modstorage \"${modstoragedir}\" -mods2 \"${mods}\""
+startparameters="-name '${servername}' -port ${port} -webadmin -webdomain ${ip} -webuser ${httpuser} -webpassword '${httppassword}' -webport ${httpport} -startmodserver -modserverport ${modserverport} -map ${defaultmap} -limit ${maxplayers} -speclimit ${maxspectators} -config_path '${servercfgdir}' -logdir '${gamelogdir}' -modstorage '${modstoragedir}'"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -12,14 +12,14 @@
 ip="0.0.0.0"
 ip="0.0.0.0"
 port="7777"
 port="7777"
 queryport="27005"
 queryport="27005"
+rconport="7778"
 servername="LinuxGSM"
 servername="LinuxGSM"
-serverpassword=""
 # Maps: risala, khafji_p, lamdong, montecassino, argonne
 # Maps: risala, khafji_p, lamdong, montecassino, argonne
 defaultmap="AAS-TestMap"
 defaultmap="AAS-TestMap"
 maxplayers="16"
 maxplayers="16"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="${defaultmap}?MaxPlayers=${maxplayers}?Password=${serverpassword} -Port=${port} -QueryPort=${queryport} -SteamServerName='${servername}' -log"
+startparameters="${defaultmap}?MaxPlayers=${maxplayers} -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -RconPort=${rconport} -SteamServerName='${servername}' -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -9,6 +9,7 @@
 #### Game Server Settings ####
 #### Game Server Settings ####
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+## Game Server Docs | https://dev.playonset.com/wiki/DedicatedServer
 startparameters="--config ${servercfgfullpath}"
 startparameters="--config ${servercfgfullpath}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####

+ 1 - 5
lgsm/config-default/config-lgsm/psserver/_default.cfg

@@ -10,15 +10,11 @@
 
 
 ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
 ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
 ip="0.0.0.0"
 ip="0.0.0.0"
-maxplayers="40"
 port="10027"
 port="10027"
 queryport="10037"
 queryport="10037"
-randommap="NONE"
-reservedslots="0"
-tickrate="50"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="MULTIHOME=${ip} RANDOM=${randommap} Port=${port} QueryPort=${queryport} FIXEDMAXPLAYERS=${maxplayers} FIXEDMAXTICKRATE=${tickrate} NumReservedSlots=${reservedslots}"
+startparameters="-MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

+ 3 - 2
lgsm/config-default/config-lgsm/pvrserver/_default.cfg

@@ -17,7 +17,8 @@ defaultmap="datacenter"
 apikey=""
 apikey=""
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="Pavlov ${defaultmap} -log -MultiHome=${ip} -Port=${port} ApiKey=${apikey}"
+## Game Server Docs | http://pavlovwiki.com/index.php/Setting_up_a_dedicated_server
+startparameters="Pavlov ${defaultmap} -MultiHome=${ip} -Port=${port} ApiKey=${apikey} -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 
@@ -149,7 +150,7 @@ consoleinteract="no"
 ## Game Server Details
 ## Game Server Details
 # Do not edit
 # Do not edit
 gamename="Pavlov VR"
 gamename="Pavlov VR"
-engine="unreal4"
+engine="unreal5"
 glibc="2.17"
 glibc="2.17"
 
 
 #### Directories ####
 #### Directories ####

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

@@ -14,7 +14,7 @@ port="27960"
 defaultmap="q3dm17"
 defaultmap="q3dm17"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set com_hunkMegs 32 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set dedicated 2 +set com_hunkMegs 32 +set net_ip ${ip} +set net_port ${port} +map ${defaultmap} +exec ${servercfg}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

+ 22 - 14
lgsm/config-default/config-lgsm/cdserver/_default.cfg → lgsm/config-default/config-lgsm/q4server/_default.cfg

@@ -8,8 +8,15 @@
 
 
 #### Game Server Settings ####
 #### Game Server Settings ####
 
 
+## SteamCMD Login | https://docs.linuxgsm.com/steamcmd#steamcmd-login
+steamuser="username"
+steampass='password'
+
+## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
+port="28004"
+
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-batchmode -nographics"
+startparameters="+set sv_punkbuster 0 +set fs_basepath ${serverfiles} +set net_port ${port} +exec ${servercfg}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 
@@ -103,8 +110,8 @@ sleeptime="0.5"
 
 
 ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
 ## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
 # Server appid
 # Server appid
-appid="685100"
-steamcmdforcewindows="no"
+appid="2210"
+steamcmdforcewindows="yes"
 # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
 # SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
 branch=""
 branch=""
 betapassword=""
 betapassword=""
@@ -123,7 +130,7 @@ steammaster="false"
 # 9: GoldSrc
 # 9: GoldSrc
 # 10: Avorion
 # 10: Avorion
 # 11: end
 # 11: end
-stopmode="2"
+stopmode="3"
 
 
 ## Query mode
 ## Query mode
 # 1: session only
 # 1: session only
@@ -131,17 +138,17 @@ stopmode="2"
 # 3: gamedig
 # 3: gamedig
 # 4: gsquery
 # 4: gsquery
 # 5: tcp
 # 5: tcp
-querymode="1"
-querytype=""
+querymode="2"
+querytype="quake4"
 
 
 ## Console type
 ## Console type
 consoleverbose="yes"
 consoleverbose="yes"
-consoleinteract="no"
+consoleinteract="yes"
 
 
 ## Game Server Details
 ## Game Server Details
 # Do not edit
 # Do not edit
-gamename="Crafting Dead"
-engine="unity3d"
+gamename="Quake 4"
+engine="idtech3_ql"
 glibc="2.15"
 glibc="2.15"
 
 
 #### Directories ####
 #### Directories ####
@@ -150,10 +157,10 @@ glibc="2.15"
 ## Game Server Directories
 ## Game Server Directories
 systemdir="${serverfiles}"
 systemdir="${serverfiles}"
 executabledir="${serverfiles}"
 executabledir="${serverfiles}"
-executable="./crafting_dead.x86_64"
-servercfgdir="${systemdir}"
-servercfg="properties.json"
-servercfgdefault="properties.json"
+executable="./quake4-dedicated"
+servercfgdir="${systemdir}/q4base"
+servercfg="${selfname}.cfg"
+servercfgdefault="server.cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 
 
 ## Backup Directory
 ## Backup Directory
@@ -161,9 +168,10 @@ backupdir="${lgsmdir}/backup"
 
 
 ## Logging Directories
 ## Logging Directories
 [ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || logdir="${rootdir}/log"
 [ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || logdir="${rootdir}/log"
-gamelogdir="${systemdir}/logs"
+gamelogdir="${logdir}/server"
 lgsmlogdir="${logdir}/script"
 lgsmlogdir="${logdir}/script"
 consolelogdir="${logdir}/console"
 consolelogdir="${logdir}/console"
+gamelog="${gamelogdir}/${selfname}-game.log"
 lgsmlog="${lgsmlogdir}/${selfname}-script.log"
 lgsmlog="${lgsmlogdir}/${selfname}-script.log"
 consolelog="${consolelogdir}/${selfname}-console.log"
 consolelog="${consolelogdir}/${selfname}-console.log"
 alertlog="${lgsmlogdir}/${selfname}-alert.log"
 alertlog="${lgsmlogdir}/${selfname}-alert.log"

+ 2 - 1
lgsm/config-default/config-lgsm/rustserver/_default.cfg

@@ -28,7 +28,7 @@ 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.queryport ${queryport} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.level \"${serverlevel}\" +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile"
+startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.queryport ${queryport} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.level \"${serverlevel}\" +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelog}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 
@@ -184,6 +184,7 @@ backupdir="${lgsmdir}/backup"
 gamelogdir="${logdir}/server"
 gamelogdir="${logdir}/server"
 lgsmlogdir="${logdir}/script"
 lgsmlogdir="${logdir}/script"
 consolelogdir="${logdir}/console"
 consolelogdir="${logdir}/console"
+gamelog="${gamelogdir}/${selfname}-game.log"
 lgsmlog="${lgsmlogdir}/${selfname}-script.log"
 lgsmlog="${lgsmlogdir}/${selfname}-script.log"
 consolelog="${consolelogdir}/${selfname}-console.log"
 consolelog="${consolelogdir}/${selfname}-console.log"
 alertlog="${lgsmlogdir}/${selfname}-alert.log"
 alertlog="${lgsmlogdir}/${selfname}-alert.log"

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

@@ -126,8 +126,8 @@ querymode="3"
 querytype="samp"
 querytype="samp"
 
 
 ## Console type
 ## Console type
-consoleverbose=""
-consoleinteract=""
+consoleverbose="no"
+consoleinteract="no"
 
 
 ## Game Server Details
 ## Game Server Details
 # Do not edit
 # Do not edit

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

@@ -15,7 +15,7 @@ defaultmap="StationKappa"
 servername="LinuxGSM"
 servername="LinuxGSM"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="Port=${port}?QueryPort=${queryport} -startup_map ${defaultmap} -server_name \"${servername}\""
+startparameters="-MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -startup_map ${defaultmap} -server_name '${servername}'"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

+ 4 - 3
lgsm/config-default/config-lgsm/sfserver/_default.cfg

@@ -15,7 +15,8 @@ beaconport="15000"
 port="7777"
 port="7777"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="FactoryGame -multihome=${ip} -ServerQueryPort=${queryport} -BeaconPort=${beaconport} -Port=${port} -log -unattended"
+## Game Server Docs | https://satisfactory.fandom.com/wiki/Dedicated_servers
+startparameters="FactoryGame -MultiHome=${ip} -Port=${port} -ServerQueryPort=${queryport} -BeaconPort=${beaconport} -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 
@@ -147,7 +148,7 @@ consoleinteract="no"
 ## Game Server Details
 ## Game Server Details
 # Do not edit
 # Do not edit
 gamename="Satisfactory"
 gamename="Satisfactory"
-engine="unreal4"
+engine="unreal5"
 glibc="2.17"
 glibc="2.17"
 
 
 #### Directories ####
 #### Directories ####
@@ -156,7 +157,7 @@ glibc="2.17"
 ## Game Server Directories
 ## Game Server Directories
 systemdir="${serverfiles}/FactoryGame"
 systemdir="${serverfiles}/FactoryGame"
 executabledir="${serverfiles}/Engine/Binaries/Linux"
 executabledir="${serverfiles}/Engine/Binaries/Linux"
-executable="./UE4Server-Linux-Shipping"
+executable="./UnrealServer-Linux-Shipping"
 servercfgdir="${systemdir}/Saved/Config/LinuxServer"
 servercfgdir="${systemdir}/Saved/Config/LinuxServer"
 servercfg="GameUserSettings.ini"
 servercfg="GameUserSettings.ini"
 servercfgdefault="GameUserSettings.ini"
 servercfgdefault="GameUserSettings.ini"

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

@@ -11,10 +11,10 @@
 ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
 ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
 port="7787"
 port="7787"
 queryport="27165"
 queryport="27165"
-randommap="ALWAYS"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="MULTIHOME=${ip} RANDOM=${randommap} Port=${port} QueryPort=${queryport}"
+## Game Server Docs | https://squad.fandom.com/wiki/Dedicated_server
+startparameters="-MultiHome=${ip} -Port=${port} -QueryPort=${queryport}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

+ 2 - 1
lgsm/config-default/config-lgsm/tiserver/_default.cfg

@@ -14,6 +14,7 @@ port="7777"
 defaultmap="/Game/TheIsle/Maps/Game/Isla_Spiro/Isla_Spiro"
 defaultmap="/Game/TheIsle/Maps/Game/Isla_Spiro/Isla_Spiro"
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
+## Game Server Docs | https://isle.fandom.com/wiki/The_Isle_Server_Settings_and_Configuration
 startparameters="${defaultmap} -Port=${port} -log"
 startparameters="${defaultmap} -Port=${port} -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
@@ -146,7 +147,7 @@ consoleinteract="no"
 ## Game Server Details
 ## Game Server Details
 # Do not edit
 # Do not edit
 gamename="The Isle"
 gamename="The Isle"
-engine="unreal4"
+engine="unreal5"
 glibc="2.17"
 glibc="2.17"
 
 
 #### Directories ####
 #### Directories ####

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

@@ -19,7 +19,7 @@ queryport="27015"
 gslt=""
 gslt=""
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
-startparameters="-log -MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -TowerServerINI=${selfname}.ini"
+startparameters="-MultiHome=${ip} -Port=${port} -QueryPort=${queryport} -TowerServerINI=${selfname}.ini -log"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -29,7 +29,7 @@ gspassword=""
 
 
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
 # List of game types and mutators: https://docs.linuxgsm.com/game-servers/unreal-tournament-3
 # List of game types and mutators: https://docs.linuxgsm.com/game-servers/unreal-tournament-3
-startparameters="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?Mutator=${mutators}?ConfigSubDir=${selfname} -login=${gsusername} -password=${gspassword} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}"
+startparameters="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?Mutator=${mutators}?ConfigSubDir=${selfname} -login=${gsusername} -password=${gspassword} -multihome=${ip} -port=${port} -queryport=${queryport} -nohomedir -unattended -log=${gamelog}"
 
 
 #### LinuxGSM Settings ####
 #### LinuxGSM Settings ####
 
 

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

@@ -27,7 +27,7 @@ homekingdom="4"
 
 
 # Unlocks the admin commands from within the game, that can be used to change
 # Unlocks the admin commands from within the game, that can be used to change
 # the gameplay settings of the server, such as skill gain rate and field growth time.
 # the gameplay settings of the server, such as skill gain rate and field growth time.
-adminpassword="ADMINPASSWORD"
+adminpassword="CHANGE_ME"
 
 
 # If true the server will follow the rules from the Epic servers in Wurm Online.
 # If true the server will follow the rules from the Epic servers in Wurm Online.
 # For instance it will use the skill curve.
 # For instance it will use the skill curve.
@@ -179,8 +179,8 @@ querymode="2"
 querytype="protocol-valve"
 querytype="protocol-valve"
 
 
 ## Console type
 ## Console type
-consoleverbose=""
-consoleinteract=""
+consoleverbose="yes"
+consoleinteract="no"
 
 
 ## Game Server Details
 ## Game Server Details
 # Do not edit
 # Do not edit

+ 1 - 1
lgsm/data/almalinux-8.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/almalinux-9.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/centos-7.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/centos-8.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/centos-9.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/debian-10.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-11-jre,rng-tools
 pz,openjdk-11-jre,rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/debian-11.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-17-jre,rng-tools
 pz,openjdk-17-jre,rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/debian-12.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-17-jre,rng-tools5
 pz,openjdk-17-jre,rng-tools5
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/debian-9.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-8-jre,rng-tools
 pz,openjdk-8-jre,rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

BIN
lgsm/data/gameicons/cd-icon.png


BIN
lgsm/data/gameicons/q4-icon.png


+ 1 - 1
lgsm/data/rhel-7.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/rhel-8.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/rhel-9.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/rocky-8.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/rocky-9.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu,dos2unix,libxml2
 bt,libicu,dos2unix,libxml2
 btl
 btl
 cc
 cc
-cd
 ck,xorg-x11-server-Xvfb
 ck,xorg-x11-server-Xvfb
 cmw
 cmw
 cod,compat-libstdc++-33.i686
 cod,compat-libstdc++-33.i686
@@ -89,6 +88,7 @@ pvr,libcxx
 pz,java-11-openjdk rng-tools
 pz,java-11-openjdk rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/serverlist.csv

@@ -18,7 +18,6 @@ bs,bsserver,Blade Symphony,ubuntu-22.04
 bt,btserver,Barotrauma,ubuntu-22.04
 bt,btserver,Barotrauma,ubuntu-22.04
 btl,btlserver,BATTALION: Legacy,ubuntu-20.04
 btl,btlserver,BATTALION: Legacy,ubuntu-20.04
 cc,ccserver,Codename CURE,ubuntu-22.04
 cc,ccserver,Codename CURE,ubuntu-22.04
-cd,cdserver,Crafting Dead,ubuntu-22.04
 ck,ckserver,Core Keeper,ubuntu-22.04
 ck,ckserver,Core Keeper,ubuntu-22.04
 cmw,cmwserver,Chivalry: Medieval Warfare,ubuntu-22.04
 cmw,cmwserver,Chivalry: Medieval Warfare,ubuntu-22.04
 cod,codserver,Call of Duty,ubuntu-22.04
 cod,codserver,Call of Duty,ubuntu-22.04
@@ -88,6 +87,7 @@ pvr,pvrserver,Pavlov VR,ubuntu-22.04
 pz,pzserver,Project Zomboid,ubuntu-22.04
 pz,pzserver,Project Zomboid,ubuntu-22.04
 q2,q2server,Quake 2,ubuntu-22.04
 q2,q2server,Quake 2,ubuntu-22.04
 q3,q3server,Quake 3: Arena,ubuntu-22.04
 q3,q3server,Quake 3: Arena,ubuntu-22.04
+q4,q4server,Quake 4,ubuntu-22.04
 ql,qlserver,Quake Live,ubuntu-22.04
 ql,qlserver,Quake Live,ubuntu-22.04
 qw,qwserver,Quake World,ubuntu-22.04
 qw,qwserver,Quake World,ubuntu-22.04
 ricochet,ricochetserver,Ricochet,ubuntu-22.04
 ricochet,ricochetserver,Ricochet,ubuntu-22.04

+ 1 - 1
lgsm/data/ubuntu-16.04.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-8-jre,rng-tools
 pz,openjdk-8-jre,rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/ubuntu-18.04.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-11-jre,rng-tools
 pz,openjdk-11-jre,rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/ubuntu-20.04.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-17-jre,rng-tools
 pz,openjdk-17-jre,rng-tools
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/ubuntu-22.04.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-17-jre,rng-tools5
 pz,openjdk-17-jre,rng-tools5
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/ubuntu-23.04.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-17-jre,rng-tools5
 pz,openjdk-17-jre,rng-tools5
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 1 - 1
lgsm/data/ubuntu-23.10.csv

@@ -19,7 +19,6 @@ bs
 bt,libicu-dev,dos2unix,libxml2-utils
 bt,libicu-dev,dos2unix,libxml2-utils
 btl
 btl
 cc
 cc
-cd
 ck,xvfb,libxi6
 ck,xvfb,libxi6
 cmw
 cmw
 cod,libstdc++5:i386
 cod,libstdc++5:i386
@@ -89,6 +88,7 @@ pvr,libc++1
 pz,openjdk-17-jre,rng-tools5
 pz,openjdk-17-jre,rng-tools5
 q2
 q2
 q3
 q3
+q4
 ql
 ql
 qw
 qw
 ricochet
 ricochet

+ 9 - 2
lgsm/modules/check_config.sh

@@ -19,8 +19,15 @@ if [ "${shortname}" == "rust" ] && [ -v rconpassword ] && [ -z "${rconpassword}"
 	fn_print_fail_nl "RCON password is not set"
 	fn_print_fail_nl "RCON password is not set"
 	fn_script_log_warn "RCON password is not set"
 	fn_script_log_warn "RCON password is not set"
 elif [ -v rconpassword ] && [ "${rconpassword}" == "CHANGE_ME" ]; then
 elif [ -v rconpassword ] && [ "${rconpassword}" == "CHANGE_ME" ]; then
-	fn_print_warn_nl "Default RCON Password detected"
-	fn_script_log_warn "Default RCON Password detected"
+	fn_print_warn_nl "Default RCON password detected"
+	fn_script_log_warn "Default RCON password detected"
+elif [ -v httppassword ] && [ "${httppassword}" == "CHANGE_ME" ]; then
+	fn_print_warn_nl "Default Web password detected"
+	fn_script_log_warn "Default Web password detected"
+elif [ -v adminpassword ] && [ "${adminpassword}" == "CHANGE_ME" ]; then
+	fn_print_warn_nl "Default Admin password detected"
+	fn_script_log_warn "Default Admin password detected"
+
 fi
 fi
 
 
 if [ "${shortname}" == "vh" ] && [ -z "${serverpassword}" ]; then
 if [ "${shortname}" == "vh" ] && [ -z "${serverpassword}" ]; then

+ 3 - 3
lgsm/modules/check_deps.sh

@@ -252,7 +252,7 @@ fn_deps_detector() {
 	elif [ "${deptocheck}" == "steamcmd" ] && [ -z "${appid}" ]; then
 	elif [ "${deptocheck}" == "steamcmd" ] && [ -z "${appid}" ]; then
 		array_deps_required=("${array_deps_required[@]/steamcmd/}")
 		array_deps_required=("${array_deps_required[@]/steamcmd/}")
 		steamcmdstatus=1
 		steamcmdstatus=1
-	elif [ "${deptocheck}" == "steamcmd" ] && [ "${distroid}" == "debian" ] && ! grep -qE "^deb .*non-free" /etc/apt/sources.list; then
+	elif [ "${deptocheck}" == "steamcmd" ] && [ "${distroid}" == "debian" ] && ! grep -qE '[^deb]+non-free([^-]|$)' /etc/apt/sources.list; then
 		array_deps_required=("${array_deps_required[@]/steamcmd/}")
 		array_deps_required=("${array_deps_required[@]/steamcmd/}")
 		steamcmdstatus=1
 		steamcmdstatus=1
 	# Java: Added for users using Oracle JRE to bypass check.
 	# Java: Added for users using Oracle JRE to bypass check.
@@ -349,8 +349,8 @@ fi
 # Will warn user if their distro is no longer supported by the vendor.
 # Will warn user if their distro is no longer supported by the vendor.
 if [ -n "${distrosupport}" ]; then
 if [ -n "${distrosupport}" ]; then
 	if [ "${distrosupport}" == "unsupported" ]; then
 	if [ "${distrosupport}" == "unsupported" ]; then
-		fn_print_warning_nl "${distroname} is no longer supported by the vendor. Upgrading is recommended."
-		fn_script_log_warn "${distroname} is no longer supported by the vendor. Upgrading is recommended."
+		fn_print_warning_nl "${distroname} is no longer supported by the vendor or LinuxGSM. Upgrading is recommended."
+		fn_script_log_warn "${distroname} is no longer supported by the vendor or LinuxGSM. Upgrading is recommended."
 	fi
 	fi
 fi
 fi
 
 

+ 38 - 21
lgsm/modules/check_system_requirements.sh

@@ -12,42 +12,59 @@ info_distro.sh
 # RAM requirements in megabytes for each game or engine.
 # RAM requirements in megabytes for each game or engine.
 
 
 if [ "${shortname}" == "ark" ]; then
 if [ "${shortname}" == "ark" ]; then
-	ramrequirementmb="4000"
-	ramrequirementgb="4"
+	ramrequirementgb="7"
+elif [ "${shortname}" == "arma3" ]; then
+	ramrequirementgb="2"
+elif [ "${shortname}" == "armar" ]; then
+	ramrequirementgb="3"
 elif [ "${shortname}" == "bt" ]; then
 elif [ "${shortname}" == "bt" ]; then
-	ramrequirementmb="1000"
 	ramrequirementgb="1"
 	ramrequirementgb="1"
-elif [ "${shortname}" == "mh" ]; then
-	ramrequirementmb="4000"
-	ramrequirementgb="4"
-elif [ "${shortname}" == "arma3" ]; then
-	ramrequirementmb="1000"
+elif [ "${shortname}" == "cc" ]; then
 	ramrequirementgb="1"
 	ramrequirementgb="1"
-elif [ "${shortname}" == "rust" ]; then
-	ramrequirementmb="4000"
+elif [ "${shortname}" == "dayz" ]; then
+	ramrequirementgb="5"
+elif [ "${shortname}" == "dodr" ]; then
+	ramrequirementgb="2"
+elif [ "${shortname}" == "hw" ]; then
+	ramrequirementgb="3"
+elif [ "${shortname}" == "mc" ]; then
+	ramrequirementgb="1"
+elif [ "${shortname}" == "pmc" ]; then
+	ramrequirementgb="2"
+elif [ "${shortname}" == "mh" ]; then
 	ramrequirementgb="4"
 	ramrequirementgb="4"
-elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "wmc" ]; then
-	ramrequirementmb="1000"
+elif [ "${shortname}" == "ns2" ] || [ "${shortname}" == "ns2c" ]; then
 	ramrequirementgb="1"
 	ramrequirementgb="1"
 elif [ "${shortname}" == "ps" ]; then
 elif [ "${shortname}" == "ps" ]; then
-	ramrequirementmb="2000"
 	ramrequirementgb="2"
 	ramrequirementgb="2"
-elif [ "${shortname}" == "ns2" ] || [ "${shortname}" == "ns2c" ]; then
-	ramrequirementmb="1000"
+elif [ "${shortname}" == "pvr" ]; then
 	ramrequirementgb="1"
 	ramrequirementgb="1"
+elif [ "${shortname}" == "pz" ]; then
+	ramrequirementgb="3"
+elif [ "${shortname}" == "rust" ]; then
+	ramrequirementgb="9"
+elif [ "${shortname}" == "sdtd" ]; then
+	ramrequirementgb="4"
+elif [ "${shortname}" == "sf" ]; then
+	ramrequirementgb="12"
+elif [ "${shortname}" == "squad" ]; then
+	ramrequirementgb="2"
 elif [ "${shortname}" == "st" ]; then
 elif [ "${shortname}" == "st" ]; then
-	ramrequirementmb="1000"
 	ramrequirementgb="1"
 	ramrequirementgb="1"
-elif [ "${shortname}" == "pvr" ]; then
-	ramrequirementmb="2000"
+elif [ "${shortname}" == "stn" ]; then
+	ramrequirementgb="3"
+elif [ "${shortname}" == "tu" ]; then
+	ramrequirementgb="2"
+elif [ "${shortname}" == "vh" ]; then
 	ramrequirementgb="2"
 	ramrequirementgb="2"
+else
+	ramrequirementgb="0.5"
 fi
 fi
 
 
 # If the game or engine has a minimum RAM Requirement, compare it to system's available RAM.
 # If the game or engine has a minimum RAM Requirement, compare it to system's available RAM.
-if [ "${ramrequirementmb}" ]; then
-	if [ "${physmemtotalmb}" -lt "${ramrequirementmb}" ]; then
+if [ "${ramrequirementgb}" ]; then
+	if [ "${physmemtotalgb}" -lt "${ramrequirementgb}" ]; then
 		fn_print_dots "Checking RAM"
 		fn_print_dots "Checking RAM"
-		# Warn the user.
 		fn_print_warn_nl "Checking RAM: ${ramrequirementgb}G required, ${physmemtotal} available"
 		fn_print_warn_nl "Checking RAM: ${ramrequirementgb}G required, ${physmemtotal} available"
 		echo "* ${gamename} server may fail to run or experience poor performance."
 		echo "* ${gamename} server may fail to run or experience poor performance."
 		fn_sleep_time_5
 		fn_sleep_time_5

+ 1 - 1
lgsm/modules/command_backup.sh

@@ -126,7 +126,7 @@ fn_backup_compression() {
 		core_exit.sh
 		core_exit.sh
 	fi
 	fi
 
 
-	tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}" ./.
+	tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}" --exclude "${tmpdir}" ./.
 	local exitcode=$?
 	local exitcode=$?
 	if [ "${exitcode}" != 0 ]; then
 	if [ "${exitcode}" != 0 ]; then
 		fn_print_fail_eol
 		fn_print_fail_eol

+ 1 - 1
lgsm/modules/command_debug.sh

@@ -34,7 +34,7 @@ fn_print_header
 	echo -e "${lightblue}Architecture:\t\t${default}${arch}"
 	echo -e "${lightblue}Architecture:\t\t${default}${arch}"
 	echo -e "${lightblue}Kernel:\t\t${default}${kernel}"
 	echo -e "${lightblue}Kernel:\t\t${default}${kernel}"
 	echo -e "${lightblue}Hostname:\t\t${default}${HOSTNAME}"
 	echo -e "${lightblue}Hostname:\t\t${default}${HOSTNAME}"
-	echo -e "${lightblue}tmux:\t\t${default}${tmuxv}"
+	echo -e "${lightblue}tmux:\t\t${default}${tmuxversion}"
 	echo -e "${lightblue}Avg Load:\t\t${default}${load}"
 	echo -e "${lightblue}Avg Load:\t\t${default}${load}"
 	echo -e "${lightblue}Free Memory:\t\t${default}${physmemfree}"
 	echo -e "${lightblue}Free Memory:\t\t${default}${physmemfree}"
 	echo -e "${lightblue}Free Disk:\t\t${default}${availspace}"
 	echo -e "${lightblue}Free Disk:\t\t${default}${availspace}"

+ 11 - 35
lgsm/modules/command_start.sh

@@ -73,47 +73,23 @@ fn_start_tmux() {
 	touch "${consolelog}"
 	touch "${consolelog}"
 
 
 	# tmux compiled from source will return "master", therefore ignore it.
 	# tmux compiled from source will return "master", therefore ignore it.
-	if [ "${tmuxv}" == "master" ]; then
+	if [ "${tmuxversion}" == "master" ]; then
 		fn_script_log "tmux version: master (user compiled)"
 		fn_script_log "tmux version: master (user compiled)"
 		echo -e "tmux version: master (user compiled)" >> "${consolelog}"
 		echo -e "tmux version: master (user compiled)" >> "${consolelog}"
-		if [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
-			if [ "${logtimestamp}" == "on" ]; then
-				tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
-			else
-				tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
-			fi
-		fi
+	fi
 
 
-	elif [ -n "${tmuxv}" ]; then
-		# tmux pipe-pane not supported in tmux versions < 1.6.
-		if [ "${tmuxvdigit}" -lt "16" ]; then
-			echo -e "Console logging disabled: tmux => 1.6 required
-			https://linuxgsm.com/tmux-upgrade
-			Currently installed: $(tmux -V)" > "${consolelog}"
-
-		# Console logging disabled: Bug in tmux 1.8 breaks logging.
-		elif [ "${tmuxvdigit}" -eq "18" ]; then
-			echo -e "Console logging disabled: Bug in tmux 1.8 breaks logging
-			https://linuxgsm.com/tmux-upgrade
-			Currently installed: $(tmux -V)" > "${consolelog}"
-		# Console logging enable or not set.
-		elif [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
-			if [ "${logtimestamp}" == "on" ]; then
-				tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
-			else
-				tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
-			fi
+	# Enable console logging.
+	if [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
+		if [ "${logtimestamp}" == "on" ]; then
+			tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
+		else
+			tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
 		fi
 		fi
 	else
 	else
-		echo -e "Unable to detect tmux version" >> "${consolelog}"
-		fn_script_log_warn "Unable to detect tmux version"
-	fi
-
-	# Console logging disabled.
-	if [ "${consolelogging}" == "off" ]; then
 		echo -e "Console logging disabled in settings" >> "${consolelog}"
 		echo -e "Console logging disabled in settings" >> "${consolelog}"
-		fn_script_log_info "Console logging disabled by user"
+		fn_script_log_info "Console logging disabled in settings"
 	fi
 	fi
+
 	fn_sleep_time_1
 	fn_sleep_time_1
 
 
 	# If the server fails to start.
 	# If the server fails to start.
@@ -123,7 +99,7 @@ fn_start_tmux() {
 		fn_script_log_fail "Unable to start ${servername}"
 		fn_script_log_fail "Unable to start ${servername}"
 		if [ -s "${lgsmlogdir}/.${selfname}-tmux-error.tmp" ]; then
 		if [ -s "${lgsmlogdir}/.${selfname}-tmux-error.tmp" ]; then
 			fn_print_fail_nl "Unable to start ${servername}: tmux error:"
 			fn_print_fail_nl "Unable to start ${servername}: tmux error:"
-			fn_script_log_fail "Unable to start ${servername}: tmux error:"
+			fn_script_log_fail "Unable to start ${servername}: tmux error"
 			echo -e ""
 			echo -e ""
 			echo -e "Command"
 			echo -e "Command"
 			fn_messages_separator
 			fn_messages_separator

+ 1 - 1
lgsm/modules/core_getopt.sh

@@ -22,7 +22,7 @@ cmd_update_linuxgsm=("ul;update-lgsm;uf;update-modules" "command_update_linuxgsm
 cmd_test_alert=("ta;test-alert" "command_test_alert.sh" "Send a test alert.")
 cmd_test_alert=("ta;test-alert" "command_test_alert.sh" "Send a test alert.")
 cmd_monitor=("m;monitor" "command_monitor.sh" "Check server status and restart if crashed.")
 cmd_monitor=("m;monitor" "command_monitor.sh" "Check server status and restart if crashed.")
 cmd_skeleton=("sk;skeleton" "command_skeleton.sh" "Create a skeleton directory.")
 cmd_skeleton=("sk;skeleton" "command_skeleton.sh" "Create a skeleton directory.")
-cmd_sponsor=("s;sponsor" "command_sponsor.sh" "Donation options.")
+cmd_sponsor=("s;sponsor" "command_sponsor.sh" "Sponsorship options.")
 cmd_send=("sd;send" "command_send.sh" "Send command to game server console.")
 cmd_send=("sd;send" "command_send.sh" "Send command to game server console.")
 # Console servers only.
 # Console servers only.
 cmd_console=("c;console" "command_console.sh" "Access server console.")
 cmd_console=("c;console" "command_console.sh" "Access server console.")

+ 1 - 1
lgsm/modules/core_modules.sh

@@ -8,7 +8,7 @@
 
 
 moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 
-modulesversion="v23.6.2"
+modulesversion="v23.7.0"
 
 
 # Core
 # Core
 
 

+ 3 - 1
lgsm/modules/core_steamcmd.sh

@@ -179,7 +179,9 @@ fn_update_steamcmd_remotebuild() {
 	fi
 	fi
 
 
 	# added as was failing GitHub Actions test. Running SteamCMD twice seems to fix it.
 	# added as was failing GitHub Actions test. Running SteamCMD twice seems to fix it.
-	${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +quit > /dev/null 2>&1
+	if [ "${CI}" ]; then
+		${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +quit > /dev/null 2>&1
+	fi
 	# password for branch not needed to check the buildid
 	# password for branch not needed to check the buildid
 	remotebuildversion=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +quit | sed -e '/"branches"/,/^}/!d' | sed -n "/\"${branch}\"/,/}/p" | grep -m 1 buildid | tr -cd '[:digit:]')
 	remotebuildversion=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +quit | sed -e '/"branches"/,/^}/!d' | sed -n "/\"${branch}\"/,/}/p" | grep -m 1 buildid | tr -cd '[:digit:]')
 
 

+ 2 - 2
lgsm/modules/fix.sh

@@ -52,8 +52,8 @@ fn_apply_fix() {
 	fi
 	fi
 }
 }
 
 
-apply_pre_start_fix=(arma3 armar ark av bt bo csgo cmw dst hw ins nmrih onset pvr rust rw sdtd sfc sof2 squad st tf2 terraria ts3 mcb mta unt vh wurm zmr)
-apply_post_install_fix=(av kf kf2 ro samp ut2k4 ut ut3)
+apply_pre_start_fix=(arma3 armar ark av bt bo csgo cmw dst hw ins kf nmrih onset pvr rust rw samp sdtd sfc sof2 squad st tf2 terraria ts3 mcb mta unt vh wurm zmr)
+apply_post_install_fix=(av kf kf2 ro ut2k4 ut ut3)
 
 
 # validate registered fixes for safe development
 # validate registered fixes for safe development
 for fix in "${apply_pre_start_fix[@]}" "${apply_post_install_fix[@]}"; do
 for fix in "${apply_pre_start_fix[@]}" "${apply_post_install_fix[@]}"; do

+ 1 - 1
lgsm/modules/fix_armar.sh

@@ -5,7 +5,7 @@
 # Website: https://linuxgsm.com
 # Website: https://linuxgsm.com
 # Description: Resolves issues with Arma Reforger.
 # Description: Resolves issues with Arma Reforger.
 
 
-module_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
+moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 
 # Fixes: Profile directory doesn't exist.
 # Fixes: Profile directory doesn't exist.
 # Issue Link: https://feedback.bistudio.com/T164845
 # Issue Link: https://feedback.bistudio.com/T164845

+ 105 - 24
lgsm/modules/fix_kf.sh

@@ -7,30 +7,111 @@
 
 
 moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 
-echo -e "applying WebAdmin ROOst.css fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
+# echo -e "applying WebAdmin ROOst.css fix."
+# echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
 sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
 sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
 sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
 sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
-fn_sleep_time
-echo -e "applying WebAdmin CharSet fix."
-echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
+# echo -e "applying WebAdmin CharSet fix."
+# echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
 sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int"
 sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int"
-fn_sleep_time
-echo -e "applying server name fix."
-fn_sleep_time
-echo -e "forcing server restart..."
-fn_sleep_time
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-fn_sleep_time_5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
-exitbypass=1
-command_start.sh
-fn_firstcommand_reset
-fn_sleep_time_5
-exitbypass=1
-command_stop.sh
-fn_firstcommand_reset
+
+# get md5sum of steamclient.so
+if [ -f "${serverfiles}/System/steamclient.so" ]; then
+	steamclientmd5=$(md5sum "${serverfiles}/System/steamclient.so" | awk '{print $1;}')
+fi
+#get md5sum of libtier0_s.so
+if [ -f "${serverfiles}/System/libtier0_s.so" ]; then
+	libtier0_smd5=$(md5sum "${serverfiles}/System/libtier0_s.so" | awk '{print $1;}')
+fi
+#get md5sum of libvstdlib_s.so
+if [ -f "${serverfiles}/System/libvstdlib_s.so" ]; then
+	libvstdlib_smd5=$(md5sum "${serverfiles}/System/libvstdlib_s.so" | awk '{print $1;}')
+fi
+
+# get md5sum of steamclient.so from steamcmd
+if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
+	steamcmdsteamclientmd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/steamclient.so" | awk '{print $1;}')
+elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
+	steamcmdsteamclientmd5=$(md5sum "${steamcmddir}/linux32/steamclient.so" | awk '{print $1;}')
+elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
+	steamcmdsteamclientmd5=$(md5sum "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" | awk '{print $1;}')
+fi
+
+# get md5sum of libtier0_s.so from steamcmd
+if [ -f "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" ]; then
+	steamcmdlibtier0_smd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" | awk '{print $1;}')
+elif [ -f "${steamcmddir}/linux32/libtier0_s.so" ]; then
+	steamcmdlibtier0_smd5=$(md5sum "${steamcmddir}/linux32/libtier0_s.so" | awk '{print $1;}')
+elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" ]; then
+	steamcmdlibtier0_smd5=$(md5sum "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" | awk '{print $1;}')
+fi
+
+# get md5sum of libvstdlib_s.so from steamcmd
+if [ -f "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+	steamcmdlibvstdlib_smd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" | awk '{print $1;}')
+elif [ -f "${steamcmddir}/linux32/libvstdlib_s.so" ]; then
+	steamcmdlibvstdlib_smd5=$(md5sum "${steamcmddir}/linux32/libvstdlib_s.so" | awk '{print $1;}')
+elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+	steamcmdlibvstdlib_smd5=$(md5sum "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" | awk '{print $1;}')
+fi
+
+if [ ! -f "${serverfiles}/System/steamclient.so" ] || [ "${steamcmdsteamclientmd5}" != "${steamclientmd5}" ]; then
+	fixname="steamclient.so x86"
+	fn_fix_msg_start
+	if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
+		cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/System/steamclient.so"
+	elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
+		cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/System/steamclient.so"
+	elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
+		cp "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" "${serverfiles}/System/steamclient.so"
+	fi
+	fn_fix_msg_end
+fi
+
+if [ ! -f "${serverfiles}/System/libtier0_s.so" ] || [ "${steamcmdlibtier0_smd5}" != "${libtier0_smd5}" ]; then
+	fixname="libtier0_s.so"
+	fn_fix_msg_start
+	if [ -f "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" ]; then
+		cp "${HOME}/.steam/steamcmd/linux32/libtier0_s.so" "${serverfiles}/System/libtier0_s.so"
+	elif [ -f "${steamcmddir}/linux32/libtier0_s.so" ]; then
+		cp "${steamcmddir}/linux32/libtier0_s.so" "${serverfiles}/System/libtier0_s.so"
+	elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" ]; then
+		cp "${HOME}/.local/share/Steam/steamcmd/linux32/libtier0_s.so" "${serverfiles}/System/libtier0_s.so"
+	fi
+	fn_fix_msg_end
+fi
+
+if [ ! -f "${serverfiles}/System/libvstdlib_s.so" ] || [ "${steamcmdlibvstdlib_smd5}" != "${libvstdlib_smd5}" ]; then
+	fixname="libvstdlib_s.so"
+	fn_fix_msg_start
+	if [ -f "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+		cp "${HOME}/.steam/steamcmd/linux32/libvstdlib_s.so" "${serverfiles}/System/libvstdlib_s.so"
+	elif [ -f "${steamcmddir}/linux32/libvstdlib_s.so" ]; then
+		cp "${steamcmddir}/linux32/libvstdlib_s.so" "${serverfiles}/System/libvstdlib_s.so"
+	elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" ]; then
+		cp "${HOME}/.local/share/Steam/steamcmd/linux32/libvstdlib_s.so" "${serverfiles}/System/libvstdlib_s.so"
+	fi
+	fn_fix_msg_end
+fi
+
+# if running install command
+if [ "${commandname}" == "INSTALL" ]; then
+	echo -e "applying server name fix."
+	fn_sleep_time
+	echo -e "forcing server restart..."
+	fn_sleep_time
+	exitbypass=1
+	command_start.sh
+	fn_firstcommand_reset
+	fn_sleep_time_5
+	exitbypass=1
+	command_stop.sh
+	fn_firstcommand_reset
+	exitbypass=1
+	command_start.sh
+	fn_firstcommand_reset
+	fn_sleep_time_5
+	exitbypass=1
+	command_stop.sh
+	fn_firstcommand_reset
+fi

+ 21 - 7
lgsm/modules/fix_nmrih.sh

@@ -8,10 +8,24 @@
 
 
 moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 
-ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so"
-ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so"
-ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so"
-ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so"
-ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so"
-ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so"
-ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so"
+if [ ! -f "${serverfiles}/bin/vphysics.so" ]; then
+	ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so"
+fi
+if [ ! -f "${serverfiles}/bin/studiorender.so" ]; then
+	ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so"
+fi
+if [ ! -f "${serverfiles}/bin/soundemittersystem.so" ]; then
+	ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so"
+fi
+if [ ! -f "${serverfiles}/bin/shaderapiempty.so" ]; then
+	ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so"
+fi
+if [ ! -f "${serverfiles}/bin/scenefilecache.so" ]; then
+	ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so"
+fi
+if [ ! -f "${serverfiles}/bin/replay.so" ]; then
+	ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so"
+fi
+if [ ! -f "${serverfiles}/bin/materialsystem.so" ]; then
+	ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so"
+fi

+ 18 - 0
lgsm/modules/fix_rust.sh

@@ -30,3 +30,21 @@ if [ -f "${serverfiles}/carbon/tools/environment.sh" ]; then
 	# shellcheck source=/dev/null
 	# shellcheck source=/dev/null
 	source "${serverfiles}/carbon/tools/environment.sh"
 	source "${serverfiles}/carbon/tools/environment.sh"
 fi
 fi
+
+# fix for #4268
+# insert set -g default-terminal "screen-256color" into ~/.tmux.conf
+if [ -f "${serverfiles}/RustDedicated_Data/Managed/Oxide.Rust.dll" ]; then
+	# tmux version is 3.3 or higher
+	tmuxvdigit="$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')"
+	if [ "${tmuxvdigit}" -ge "33" ]; then
+		if [ ! -f "${HOME}/.tmux.conf" ]; then
+			touch "${HOME}/.tmux.conf"
+		fi
+		if ! grep -q "set -g default-terminal \"screen-256color\"" "${HOME}/.tmux.conf"; then
+			fixname="tmux screen-256color"
+			fn_fix_msg_start
+			echo "set -g default-terminal \"screen-256color\"" >> "${HOME}/.tmux.conf"
+			fn_fix_msg_end
+		fi
+	fi
+fi

+ 6 - 0
lgsm/modules/fix_vh.sh

@@ -17,6 +17,12 @@ if [ -f "${modsinstalledlistfullpath}" ]; then
 			echo 'executable="./start_server_bepinex.sh"' >> "${configdirserver}/${selfname}.cfg"
 			echo 'executable="./start_server_bepinex.sh"' >> "${configdirserver}/${selfname}.cfg"
 			executable="./start_server_bepinex.sh"
 			executable="./start_server_bepinex.sh"
 		fi
 		fi
+		if [ -d "${serverfiles}/unstripped_corlib" ]; then
+			rm -rf "${serverfiles}/unstripped_corlib"
+		fi
+		sed -i "s/^dllSearchPathOverride=unstripped_corlib/# &/" "${serverfiles}/doorstop_config.ini"
+		sed -i "s/^export DOORSTOP_CORLIB_OVERRIDE_PATH="$BASEDIR\/unstripped_corlib"/# &/" "${serverfiles}/start_game_bepinex.sh"
+		sed -i "s/^export DOORSTOP_CORLIB_OVERRIDE_PATH="${VALHEIM_PLUS_PATH}\/unstripped_corlib"/# &/" "${serverfiles}/start_server_bepinex.sh"
 	fi
 	fi
 	# special exports for BepInEx if installed
 	# special exports for BepInEx if installed
 	if grep -qE "^bepinexvh" "${modsinstalledlistfullpath}"; then
 	if grep -qE "^bepinexvh" "${modsinstalledlistfullpath}"; then

+ 88 - 96
lgsm/modules/info_distro.sh

@@ -21,114 +21,107 @@ fi
 
 
 ## Distro
 ## Distro
 # Returns architecture, kernel and distro/os.
 # Returns architecture, kernel and distro/os.
-arch="$(uname -m)"
-kernel="$(uname -r)"
-
-# Distro Name - Ubuntu 16.04 LTS
-# Distro Version - 16.04
-# Distro ID - ubuntu
-# Distro Codename - xenial
+arch="$(uname -m)"   # Architecture e.g. x86_64
+kernel="$(uname -r)" # Kernel e.g. 2.6.32-042stab120.16
 
 
 # Gathers distro info from various sources filling in missing gaps.
 # Gathers distro info from various sources filling in missing gaps.
 distro_info_array=(os-release lsb_release hostnamectl debian_version redhat-release)
 distro_info_array=(os-release lsb_release hostnamectl debian_version redhat-release)
 for distro_info in "${distro_info_array[@]}"; do
 for distro_info in "${distro_info_array[@]}"; do
 	if [ -f "/etc/os-release" ] && [ "${distro_info}" == "os-release" ]; then
 	if [ -f "/etc/os-release" ] && [ "${distro_info}" == "os-release" ]; then
-		distroname="$(grep "PRETTY_NAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
-		distroversion="$(grep "VERSION_ID" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
-		# Special var for rhel like distros to removed point in number e.g 8.4 to just 8.
-		distroversionrh="$(sed -nr 's/^VERSION_ID="([0-9]*).+?"/\1/p' /etc/os-release)"
-		distroid="$(grep "ID=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')"
-		distroidlike="$(grep "ID_LIKE=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')"
-		distrocodename="$(grep "VERSION_CODENAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
+		distroname="$(grep "PRETTY_NAME" /etc/os-release | awk -F= '{gsub(/"/,"",$2);print $2}')"   # e.g. Ubuntu 22.04.3 LTS
+		distroversion="$(grep "VERSION_ID" /etc/os-release | awk -F= '{gsub(/"/,"",$2);print $2}')" # e.g. 22.04
+		# Special var for rhel like distros to remove point in number e.g 8.4 to just 8.
+		if [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then
+			distroversionrh="$(sed -nr 's/^VERSION_ID="([0-9]*).+?"/\1/p' /etc/os-release)" # e.g. 8
+		fi
+		distroid="$(grep "ID=" /etc/os-release | grep -v _ID | awk -F= '{gsub(/"/,"",$2);print $2}')"          # e.g. ubuntu
+		distroidlike="$(grep "ID_LIKE=" /etc/os-release | grep -v _ID | awk -F= '{gsub(/"/,"",$2);print $2}')" # e.g. debian
+		distrocodename="$(grep "VERSION_CODENAME" /etc/os-release | awk -F= '{gsub(/"/,"",$2);print $2}')"     # e.g. jammy
 	elif [ "$(command -v lsb_release 2> /dev/null)" ] && [ "${distro_info}" == "lsb_release" ]; then
 	elif [ "$(command -v lsb_release 2> /dev/null)" ] && [ "${distro_info}" == "lsb_release" ]; then
 		if [ -z "${distroname}" ]; then
 		if [ -z "${distroname}" ]; then
-			distroname="$(lsb_release -sd)"
+			distroname="$(lsb_release -sd)" # e.g. Ubuntu 22.04.3 LTS
 		elif [ -z "${distroversion}" ]; then
 		elif [ -z "${distroversion}" ]; then
-			distroversion="$(lsb_release -sr)"
+			distroversion="$(lsb_release -sr)" # e.g. 22.04
 		elif [ -z "${distroid}" ]; then
 		elif [ -z "${distroid}" ]; then
-			distroid="$(lsb_release -si)"
+			distroid="$(lsb_release -si)" # e.g. Ubuntu
 		elif [ -z "${distrocodename}" ]; then
 		elif [ -z "${distrocodename}" ]; then
-			distrocodename="$(lsb_release -sc)"
+			distrocodename="$(lsb_release -sc)" # e.g. jammy
 		fi
 		fi
 	elif [ "$(command -v hostnamectl 2> /dev/null)" ] && [ "${distro_info}" == "hostnamectl" ]; then
 	elif [ "$(command -v hostnamectl 2> /dev/null)" ] && [ "${distro_info}" == "hostnamectl" ]; then
 		if [ -z "${distroname}" ]; then
 		if [ -z "${distroname}" ]; then
-			distroname="$(hostnamectl | grep "Operating System" | sed 's/Operating System: //g')"
+			distroname="$(hostnamectl | grep "Operating System" | sed 's/Operating System: //g')" # e.g. Ubuntu 22.04.3 LTS
 		fi
 		fi
 	elif [ -f "/etc/debian_version" ] && [ "${distro_info}" == "debian_version" ]; then
 	elif [ -f "/etc/debian_version" ] && [ "${distro_info}" == "debian_version" ]; then
 		if [ -z "${distroname}" ]; then
 		if [ -z "${distroname}" ]; then
-			distroname="Debian $(cat /etc/debian_version)"
+			distroname="Debian $(cat /etc/debian_version)" # e.g. Debian bookworm/sid
 		elif [ -z "${distroversion}" ]; then
 		elif [ -z "${distroversion}" ]; then
-			distroversion="$(cat /etc/debian_version)"
+			distroversion="$(cat /etc/debian_version)" # e.g. bookworm/sid
 		elif [ -z "${distroid}" ]; then
 		elif [ -z "${distroid}" ]; then
 			distroid="debian"
 			distroid="debian"
 		fi
 		fi
 	elif [ -f "/etc/redhat-release" ] && [ "${distro_info}" == "redhat-release" ]; then
 	elif [ -f "/etc/redhat-release" ] && [ "${distro_info}" == "redhat-release" ]; then
 		if [ -z "${distroname}" ]; then
 		if [ -z "${distroname}" ]; then
-			distroname="$(cat /etc/redhat-release)"
+			distroname="$(cat /etc/redhat-release)" # e.g. Rocky Linux release 9.2 (Blue Onyx)
 		elif [ -z "${distroversion}" ]; then
 		elif [ -z "${distroversion}" ]; then
-			distroversion="$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora" | cut -d"-" -f3)"
+			distroversion="$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora|rocky|alma" | cut -d"-" -f3)" # e.g. 9.2
 		elif [ -z "${distroid}" ]; then
 		elif [ -z "${distroid}" ]; then
-			distroid="$(awk '{print $1}' /etc/redhat-release)"
+			distroid="$(awk '{print $1}' /etc/redhat-release)" # e.g. Rocky
 		fi
 		fi
 	fi
 	fi
 done
 done
 
 
 # Get virtual environment type.
 # Get virtual environment type.
 if [ "$(command -v systemd-detect-virt 2> /dev/null)" ]; then
 if [ "$(command -v systemd-detect-virt 2> /dev/null)" ]; then
-	virtualenvironment="$(systemd-detect-virt)"
+	virtualenvironment="$(systemd-detect-virt)" # e.g. kvm
 fi
 fi
 
 
-# Some RHEL based distros use 8.4 instead of just 8.
-if [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then
-	distroversioncsv="${distroversionrh}"
+# distroversioncsv is used for selecting the correct distro csv in data directory
+if [ -n "${distroversionrh}" ]; then
+	distroversioncsv="${distroversionrh}" # e.g. 8
 else
 else
-	distroversioncsv="${distroversion}"
+	distroversioncsv="${distroversion}" # e.g. 22.04
 fi
 fi
 
 
 # Check if distro supported by distro vendor.
 # Check if distro supported by distro vendor.
+# distro-info available in debian based distros.
 if [ "$(command -v distro-info 2> /dev/null)" ]; then
 if [ "$(command -v distro-info 2> /dev/null)" ]; then
 	distrosunsupported="$(distro-info --unsupported)"
 	distrosunsupported="$(distro-info --unsupported)"
 	distrosunsupported_array=("${distrosunsupported}")
 	distrosunsupported_array=("${distrosunsupported}")
 	for distrounsupported in "${distrosunsupported_array[@]}"; do
 	for distrounsupported in "${distrosunsupported_array[@]}"; do
 		if [ "${distrounsupported}" == "${distrocodename}" ]; then
 		if [ "${distrounsupported}" == "${distrocodename}" ]; then
-			distrosupport=unsupported
+			distrosupport="unsupported"
 			break
 			break
 		else
 		else
-			distrosupport=supported
+			distrosupport="supported"
 		fi
 		fi
 	done
 	done
-else
-	distrosupport=unknown
+elif [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then
+	# RHEL/CentOS 7 EOL 2024-06-30. Will be unsupported after this date.
+	if [ "${distroversionrh}" -lt "8" ] && [ "$(date +%s)" -lt "1719705600" ]; then
+		distrosupport="unsupported"
+	else
+		distrosupport="supported"
+	fi
 fi
 fi
 
 
 ## Glibc version
 ## Glibc version
-# e.g: 1.17
-glibcversion="$(ldd --version | sed -n '1s/.* //p')"
+glibcversion="$(ldd --version | sed -n '1s/.* //p')" # e.g: 2.17
 
 
 ## tmux version
 ## tmux version
-# e.g: tmux 1.6
-if [ ! "$(command -V tmux 2> /dev/null)" ]; then
-	tmuxv="${red}NOT INSTALLED!${default}"
-	tmuxvdigit="0"
-else
-	tmuxvdigit="$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')"
-	if [ "${tmuxvdigit}" -lt "16" ]; then
-		tmuxv="$(tmux -V) (>= 1.6 required for console log)"
-	else
-		tmuxv="$(tmux -V)"
-	fi
+if [ "$(command -V tmux 2> /dev/null)" ]; then
+	tmuxversion="$(tmux -V | awk '{print $2}')" # e.g: tmux 3.3
 fi
 fi
 
 
 if [ "$(command -V java 2> /dev/null)" ]; then
 if [ "$(command -V java 2> /dev/null)" ]; then
-	javaversion="$(java -version 2>&1 | grep "version")"
+	javaversion="$(java -version 2>&1 | grep "version")" # e.g: openjdk version "17.0.8.1" 2023-08-24
 fi
 fi
 
 
 if [ "$(command -v mono 2> /dev/null)" ]; then
 if [ "$(command -v mono 2> /dev/null)" ]; then
-	monoversion="$(mono --version 2>&1 | grep -Po '(?<=version )\d')"
+	monoversion="$(mono --version 2>&1 | grep -Po '(?<=version )\d')" # e.g: 6
 fi
 fi
 
 
 if [ "$(command -v dotnet 2> /dev/null)" ]; then
 if [ "$(command -v dotnet 2> /dev/null)" ]; then
-	dotnetversion="$(dotnet --list-runtimes | grep -E 'Microsoft\.NETCore\.App' | awk '{print $2}')"
+	dotnetversion="$(dotnet --list-runtimes | grep -E 'Microsoft\.NETCore\.App' | awk '{print $2}')" # e.g: 6.0.0
 fi
 fi
 
 
 ## Uptime
 ## Uptime
@@ -141,16 +134,16 @@ days="$((uptime / 60 / 60 / 24))"
 ### Performance information
 ### Performance information
 
 
 ## Average server load
 ## Average server load
-load="$(uptime | awk -F 'load average: ' '{ print $2 }')"
+load="$(uptime | awk -F 'load average: ' '{ print $2 }')" # e.g 0.01, 0.05, 0.11
 
 
 ## CPU information
 ## CPU information
-cpumodel="$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')"
+cpumodel="$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')" # e.g Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
 cpucores="$(awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo)"
 cpucores="$(awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo)"
-cpufreqency="$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')"
+cpufreqency="$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')" # e.g 2394.503
 # CPU usage of the game server pid
 # CPU usage of the game server pid
 if [ -n "${gameserverpid}" ]; then
 if [ -n "${gameserverpid}" ]; then
-	cpuused="$(ps --forest -o pcpu -g "${gameserverpid}" | awk '{s+=$1} END {print s}')"
-	cpuusedmhz="$(echo "${cpufreqency} * ${cpuused} / 100" | bc)"
+	cpuused="$(ps --forest -o pcpu -g "${gameserverpid}" | awk '{s+=$1} END {print s}')" # integer
+	cpuusedmhz="$(echo "${cpufreqency} * ${cpuused} / 100" | bc)"                        # integer
 fi
 fi
 
 
 ## Memory information
 ## Memory information
@@ -161,36 +154,35 @@ if [ "$(command -v numfmt 2> /dev/null)" ]; then
 	# Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated.
 	# Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated.
 
 
 	# get the raw KB values of these fields.
 	# get the raw KB values of these fields.
-	physmemtotalkb="$(grep MemTotal /proc/meminfo | awk '{print $2}')"
-	physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')"
-	physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')"
-	physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')"
-	physmemreclaimablekb="$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')"
+	physmemtotalkb="$(grep MemTotal /proc/meminfo | awk '{print $2}')"            # integer
+	physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')"             # integer
+	physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')"          # integer
+	physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')"            # integer
+	physmemreclaimablekb="$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')" # integer
 
 
 	# check if MemAvailable Exists.
 	# check if MemAvailable Exists.
 	if grep -q ^MemAvailable /proc/meminfo; then
 	if grep -q ^MemAvailable /proc/meminfo; then
-		physmemactualfreekb="$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')"
+		physmemactualfreekb="$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')" # integer
 	else
 	else
-		physmemactualfreekb="$((physmemfreekb + physmembufferskb + physmemcachedkb))"
+		physmemactualfreekb="$((physmemfreekb + physmembufferskb + physmemcachedkb))" # integer
 	fi
 	fi
 
 
 	# Available RAM and swap.
 	# Available RAM and swap.
-	physmemtotalmb="$((physmemtotalkb / 1024))"
-	physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")"
-	physmemfree="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"
-	physmemused="$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb - physmemfreekb - physmembufferskb - physmemcachedkb - physmemreclaimablekb))K")"
-	physmemavailable="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"
-	physmemcached="$(numfmt --to=iec --from=iec --suffix=B "$((physmemcachedkb + physmemreclaimablekb))K")"
-
-	swaptotal="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K")"
-	swapfree="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")"
-	swapused="$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^SwapTotal /proc/meminfo | awk '{print $2}') - $(grep ^SwapFree /proc/meminfo | awk '{print $2}')))K")"
+	physmemtotalmb="$(((physmemtotalkb + 512) / 1024))"                                                                                                       # integer                                                                                                     # integer
+	physmemtotalgb="$(((physmemtotalmb + 512) / 1024))"                                                                                                       # integer                                                                                                   # integer
+	physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")"                                                                              # string
+	physmemfree="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"                                                                          # string
+	physmemused="$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb - physmemfreekb - physmembufferskb - physmemcachedkb - physmemreclaimablekb))K")" # string
+	physmemavailable="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"                                                                     # string
+	physmemcached="$(numfmt --to=iec --from=iec --suffix=B "$((physmemcachedkb + physmemreclaimablekb))K")"                                                   # string
+
+	swaptotal="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K")"                                                          # string
+	swapfree="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")"                                                            # string
+	swapused="$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^SwapTotal /proc/meminfo | awk '{print $2}') - $(grep ^SwapFree /proc/meminfo | awk '{print $2}')))K")" # string
 	# RAM usage of the game server pid
 	# RAM usage of the game server pid
-	# MB
 	if [ "${gameserverpid}" ]; then
 	if [ "${gameserverpid}" ]; then
-		memused="$(ps --forest -o rss -g "${gameserverpid}" | awk '{s+=$1} END {print s}' | awk '{$1/=1024;printf "%.0f",$1}{print $2}')"
-		# %
-		pmemused="$(ps --forest -o %mem -g "${gameserverpid}" | awk '{s+=$1} END {print s}')"
+		memusedmb="$(ps --forest -o rss -g "${gameserverpid}" | awk '{s+=$1} END {print s}' | awk '{$1/=1024;printf "%.0f",$1}{print $2}')" # integer
+		memusedpct="$(ps --forest -o %mem -g "${gameserverpid}" | awk '{s+=$1} END {print s}')"                                             # integer
 	fi
 	fi
 else
 else
 	# Older distros will need to use free.
 	# Older distros will need to use free.
@@ -203,32 +195,32 @@ else
 	else
 	else
 		humanreadable="-h"
 		humanreadable="-h"
 	fi
 	fi
-	physmemtotalmb="$(free -m | awk '/Mem:/ {print $2}')"
-	physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')"
-	physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')"
-	physmemused="$(free ${humanreadable} | awk '/Mem:/ {print $3}')"
+	physmemtotalmb="$(free -m | awk '/Mem:/ {print $2}')"             # string
+	physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')" # string
+	physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')"  # string
+	physmemused="$(free ${humanreadable} | awk '/Mem:/ {print $3}')"  # string
 
 
 	oldfree="$(free ${humanreadable} | awk '/cache:/')"
 	oldfree="$(free ${humanreadable} | awk '/cache:/')"
 	if [ "${oldfree}" ]; then
 	if [ "${oldfree}" ]; then
 		physmemavailable="n/a"
 		physmemavailable="n/a"
 		physmemcached="n/a"
 		physmemcached="n/a"
 	else
 	else
-		physmemavailable="$(free ${humanreadable} | awk '/Mem:/ {print $7}')"
-		physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')"
+		physmemavailable="$(free ${humanreadable} | awk '/Mem:/ {print $7}')" # string
+		physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')"    # string
 	fi
 	fi
 
 
-	swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')"
-	swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')"
-	swapfree="$(free ${humanreadable} | awk '/Swap:/ {print $4}')"
+	swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')" # string
+	swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')"  # string
+	swapfree="$(free ${humanreadable} | awk '/Swap:/ {print $4}')"  # string
 fi
 fi
 
 
 ### Disk information
 ### Disk information
 
 
 ## Available disk space on the partition.
 ## Available disk space on the partition.
-filesystem="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $1}')"
-totalspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $2}')"
-usedspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $3}')"
-availspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $4}')"
+filesystem="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $1}')" # string e.g /dev/sda
+totalspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $2}')" # string e.g 20G
+usedspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $3}')"  # string e.g 15G
+availspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $4}')" # string e.g 5G
 
 
 ## LinuxGSM used space total.
 ## LinuxGSM used space total.
 rootdirdu="$(du -sh "${rootdir}" 2> /dev/null | awk '{print $1}')"
 rootdirdu="$(du -sh "${rootdir}" 2> /dev/null | awk '{print $1}')"
@@ -263,21 +255,21 @@ if [ -d "${backupdir}" ]; then
 	# If there are backups in backup dir.
 	# If there are backups in backup dir.
 	if [ "$(find "${backupdir}" -name "*.tar.gz" | wc -l)" -ne "0" ]; then
 	if [ "$(find "${backupdir}" -name "*.tar.gz" | wc -l)" -ne "0" ]; then
 		# number of backups.
 		# number of backups.
-		backupcount="$(find "${backupdir}"/*.tar.gz | wc -l)"
+		backupcount="$(find "${backupdir}"/*.tar.gz | wc -l)" # integer
 		# most recent backup.
 		# most recent backup.
-		lastbackup="$(ls -1t "${backupdir}"/*.tar.gz | head -1)"
+		lastbackup="$(ls -1t "${backupdir}"/*.tar.gz | head -1)" # string
 		# date of most recent backup.
 		# date of most recent backup.
-		lastbackupdate="$(date -r "${lastbackup}")"
+		lastbackupdate="$(date -r "${lastbackup}")" # string
 		# no of days since last backup.
 		# no of days since last backup.
-		lastbackupdaysago="$((($(date +'%s') - $(date -r "${lastbackup}" +'%s')) / 60 / 60 / 24))"
+		lastbackupdaysago="$((($(date +'%s') - $(date -r "${lastbackup}" +'%s')) / 60 / 60 / 24))" # integer
 		# size of most recent backup.
 		# size of most recent backup.
-		lastbackupsize="$(du -h "${lastbackup}" | awk '{print $1}')"
+		lastbackupsize="$(du -h "${lastbackup}" | awk '{print $1}')" # string
 	fi
 	fi
 fi
 fi
 
 
 # Network Interface name
 # Network Interface name
-netint=$(${ipcommand} -o addr | grep "${ip}" | awk '{print $2}')
-netlink=$(${ethtoolcommand} "${netint}" 2> /dev/null | grep Speed | awk '{print $2}')
+netint=$(${ipcommand} -o addr | grep "${ip}" | awk '{print $2}')                      # e.g eth0
+netlink=$(${ethtoolcommand} "${netint}" 2> /dev/null | grep Speed | awk '{print $2}') # e.g 1000Mb/s
 
 
 # Sets the SteamCMD glibc requirement if the game server requirement is less or not required.
 # Sets the SteamCMD glibc requirement if the game server requirement is less or not required.
 if [ "${appid}" ]; then
 if [ "${appid}" ]; then
@@ -286,5 +278,5 @@ if [ "${appid}" ]; then
 	fi
 	fi
 fi
 fi
 
 
-# Gather Port Info using ss
+# Gather Port Info using ss.
 ssinfo="$(ss -tuplwn)"
 ssinfo="$(ss -tuplwn)"

+ 33 - 18
lgsm/modules/info_game.sh

@@ -287,6 +287,8 @@ fn_info_game_ac() {
 fn_info_game_ark() {
 fn_info_game_ark() {
 	if [ -f "${servercfgfullpath}" ]; then
 	if [ -f "${servercfgfullpath}" ]; then
 		fn_info_game_ini "adminpassword" "ServerAdminPassword"
 		fn_info_game_ini "adminpassword" "ServerAdminPassword"
+		fn_info_game_ini "maxplayers" "MaxPlayers"
+		fn_info_game_ini "rconport" "RCONPort"
 		fn_info_game_ini "servername" "SessionName"
 		fn_info_game_ini "servername" "SessionName"
 		fn_info_game_ini "serverpassword" "ServerPassword"
 		fn_info_game_ini "serverpassword" "ServerPassword"
 	fi
 	fi
@@ -487,7 +489,7 @@ fn_info_game_kf() {
 	if [ -f "${servercfgfullpath}" ]; then
 	if [ -f "${servercfgfullpath}" ]; then
 		fn_info_game_ini "adminpassword" "AdminPassword"
 		fn_info_game_ini "adminpassword" "AdminPassword"
 		fn_info_game_ini "httpenabled" "bEnabled"
 		fn_info_game_ini "httpenabled" "bEnabled"
-		fn_info_game_ini "httppassword" "httppasswordword"
+		fn_info_game_ini "httppassword" "AdminPassword"
 		fn_info_game_ini "httpport" "ListenPort"
 		fn_info_game_ini "httpport" "ListenPort"
 		fn_info_game_ini "httpuser" "AdminName"
 		fn_info_game_ini "httpuser" "AdminName"
 		fn_info_game_ini "lanport" "LANServerPort"
 		fn_info_game_ini "lanport" "LANServerPort"
@@ -523,11 +525,11 @@ fn_info_game_kf2() {
 	if [ -f "${servercfgfullpath}" ]; then
 	if [ -f "${servercfgfullpath}" ]; then
 		fn_info_game_ini "adminpassword" "AdminPassword"
 		fn_info_game_ini "adminpassword" "AdminPassword"
 		fn_info_game_ini "httpport" "ListenPort" "${servercfgdir}/KFWeb.ini"
 		fn_info_game_ini "httpport" "ListenPort" "${servercfgdir}/KFWeb.ini"
-		fn_info_game_ini "port" "Port"
+		fn_info_game_ini "port" "Port" "${servercfgdir}/LinuxServer-KFEngine.ini"
 		fn_info_game_ini "servername" "ServerName"
 		fn_info_game_ini "servername" "ServerName"
 		fn_info_game_ini "serverpassword" "GamePassword"
 		fn_info_game_ini "serverpassword" "GamePassword"
-		fn_info_game_ini "httpenabled" "bEnabled"
-		fn_info_game_ini "httppassword" "httppasswordword"
+		fn_info_game_ini "httpenabled" "bEnabled" "${servercfgdir}/KFWeb.ini"
+		fn_info_game_ini "httppassword" "AdminPassword"
 	fi
 	fi
 	adminpassword="${adminpassword:-"NOT SET"}"
 	adminpassword="${adminpassword:-"NOT SET"}"
 	defaultmap="${defaultmap:-"NOT SET"}"
 	defaultmap="${defaultmap:-"NOT SET"}"
@@ -1683,6 +1685,25 @@ fn_info_game_q3() {
 	defaultmap="${defaultmap:-"NOT SET"}"
 	defaultmap="${defaultmap:-"NOT SET"}"
 }
 }
 
 
+# Config Type: QuakeC
+# Comment: // or /* */
+# fn_info_game_quakec "SERVERNAME"
+# Filetype: cfg
+fn_info_game_q4() {
+	if [ -f "${servercfgfullpath}" ]; then
+		fn_info_game_quakec "maxplayers" "sv_maxclients"
+		fn_info_game_quakec "rconpassword" "net_serverRemoteConsolePassword"
+		fn_info_game_quakec "servername" "si_name"
+		fn_info_game_quakec "serverpassword" "g_password"
+	fi
+	maxplayers="${maxplayers:-"0"}"
+	rconpassword="${rconpassword:-"NOT SET"}"
+	servername="${servername:-"NOT SET"}"
+	port="${port:-"0"}"
+	queryport="${port}"
+	defaultmap="${defaultmap:-"NOT SET"}"
+}
+
 # Config Type: QuakeC
 # Config Type: QuakeC
 # Comment: // or /* */
 # Comment: // or /* */
 # Example: set sv_hostname "SERVERNAME"
 # Example: set sv_hostname "SERVERNAME"
@@ -1730,7 +1751,7 @@ fn_info_game_ro() {
 	if [ -f "${servercfgfullpath}" ]; then
 	if [ -f "${servercfgfullpath}" ]; then
 		fn_info_game_ini "adminpassword" "AdminPassword"
 		fn_info_game_ini "adminpassword" "AdminPassword"
 		fn_info_game_ini "httpenabled" "bEnabled"
 		fn_info_game_ini "httpenabled" "bEnabled"
-		fn_info_game_ini "httppassword" "httppasswordword"
+		fn_info_game_ini "httppassword" "AdminPassword"
 		fn_info_game_ini "httpport" "ListenPort"
 		fn_info_game_ini "httpport" "ListenPort"
 		fn_info_game_ini "httpuser" "AdminName"
 		fn_info_game_ini "httpuser" "AdminName"
 		fn_info_game_ini "lanport" "LANServerPort"
 		fn_info_game_ini "lanport" "LANServerPort"
@@ -1830,14 +1851,7 @@ fn_info_game_rw() {
 # example: hostname "SERVERNAME"
 # example: hostname "SERVERNAME"
 # filetypes: cfg
 # filetypes: cfg
 fn_info_game_samp() {
 fn_info_game_samp() {
-	# Config
-	if [ ! -f "${servercfgfullpath}" ]; then
-		servername="unnamed server"
-		rconpassword="${unavailable}"
-		port="7777"
-		rconport="${port}"
-		maxplayers="50"
-	else
+	if [ -f "${servercfgfullpath}" ]; then
 		servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		port=$(grep "port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
 		port=$(grep "port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
@@ -2031,14 +2045,15 @@ fn_info_game_source() {
 
 
 fn_info_game_spark() {
 fn_info_game_spark() {
 	defaultmap="${defaultmap:-"NOT SET"}"
 	defaultmap="${defaultmap:-"NOT SET"}"
+	httppassword="${httppassword:-"NOT SET"}"
+	httpport="${httpport:-"0"}"
+	httpuser="${httpuser:-"NOT SET"}"
 	maxplayers="${maxplayers:-"0"}"
 	maxplayers="${maxplayers:-"0"}"
+	modserverport=${modserverport:-"0"}
 	port="${port:-"0"}"
 	port="${port:-"0"}"
 	queryport="$((port + 1))"
 	queryport="$((port + 1))"
 	servername="${servername:-"NOT SET"}"
 	servername="${servername:-"NOT SET"}"
 	serverpassword="${serverpassword:-"NOT SET"}"
 	serverpassword="${serverpassword:-"NOT SET"}"
-	httpuser="${httpuser:-"NOT SET"}"
-	httppassword="${httppassword:-"NOT SET"}"
-	httpport="${httpport:-"0"}"
 }
 }
 
 
 # Config Type: Custom (key-value pairs)
 # Config Type: Custom (key-value pairs)
@@ -2272,8 +2287,6 @@ elif [ "${shortname}" == "bt" ]; then
 	fn_info_game_bt
 	fn_info_game_bt
 elif [ "${shortname}" == "btl" ]; then
 elif [ "${shortname}" == "btl" ]; then
 	fn_info_game_btl
 	fn_info_game_btl
-elif [ "${shortname}" == "cd" ]; then
-	fn_info_game_cd
 elif [ "${shortname}" == "ck" ]; then
 elif [ "${shortname}" == "ck" ]; then
 	fn_info_game_ck
 	fn_info_game_ck
 elif [ "${shortname}" == "cmw" ]; then
 elif [ "${shortname}" == "cmw" ]; then
@@ -2352,6 +2365,8 @@ elif [ "${shortname}" == "q2" ]; then
 	fn_info_game_q2
 	fn_info_game_q2
 elif [ "${shortname}" == "q3" ]; then
 elif [ "${shortname}" == "q3" ]; then
 	fn_info_game_q3
 	fn_info_game_q3
+elif [ "${shortname}" == "q4" ]; then
+	fn_info_game_q4
 elif [ "${shortname}" == "ql" ]; then
 elif [ "${shortname}" == "ql" ]; then
 	fn_info_game_ql
 	fn_info_game_ql
 elif [ "${shortname}" == "qw" ]; then
 elif [ "${shortname}" == "qw" ]; then

+ 23 - 8
lgsm/modules/info_messages.sh

@@ -95,7 +95,7 @@ fn_info_messages_distro() {
 		echo -e "${lightblue}Hostname:\t${default}${HOSTNAME}"
 		echo -e "${lightblue}Hostname:\t${default}${HOSTNAME}"
 		echo -e "${lightblue}Environment:\t${default}${virtualenvironment}"
 		echo -e "${lightblue}Environment:\t${default}${virtualenvironment}"
 		echo -e "${lightblue}Uptime:\t${default}${days}d, ${hours}h, ${minutes}m"
 		echo -e "${lightblue}Uptime:\t${default}${days}d, ${hours}h, ${minutes}m"
-		echo -e "${lightblue}tmux:\t${default}${tmuxv}"
+		echo -e "${lightblue}tmux:\t${default}${tmuxversion}"
 		echo -e "${lightblue}glibc:\t${default}${glibcversion}"
 		echo -e "${lightblue}glibc:\t${default}${glibcversion}"
 		if [ -n "${javaram}" ]; then
 		if [ -n "${javaram}" ]; then
 			echo -e "${lightblue}Java:\t${default}${javaversion}"
 			echo -e "${lightblue}Java:\t${default}${javaversion}"
@@ -191,10 +191,10 @@ fn_info_messages_gameserver_resource() {
 			else
 			else
 				echo -e "${lightblue}CPU Used:\t${red}unknown${default}"
 				echo -e "${lightblue}CPU Used:\t${red}unknown${default}"
 			fi
 			fi
-			if [ -n "${memused}" ]; then
-				echo -e "${lightblue}Mem Used:\t${default}${pmemused}%\t${memused}MB${default}"
+			if [ -n "${memusedmb}" ]; then
+				echo -e "${lightblue}Mem Used:\t${default}${memusedpct}%\t${memusedmb}MB${default}"
 			else
 			else
-				echo -e "${lightblue}Mem Used:\t${default}${pmemused}\t${red}unknown${default}"
+				echo -e "${lightblue}Mem Used:\t${default}${memusedpct}\t${red}unknown${default}"
 			fi
 			fi
 		else
 		else
 			echo -e "${lightblue}CPU Used:\t${default}0%${default}"
 			echo -e "${lightblue}CPU Used:\t${default}0%${default}"
@@ -663,7 +663,7 @@ fn_info_messages_ports_edit() {
 
 
 	startparameterslocation="${red}UNKNOWN${default}"
 	startparameterslocation="${red}UNKNOWN${default}"
 	# engines/games that require editing in the config file.
 	# engines/games that require editing in the config file.
-	local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "cd" "ct" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "nec" "pc" "pc2" "prism3d" "pz" "qw" "refractor" "renderware" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "wurm")
+	local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "ct" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "nec" "pc" "pc2" "prism3d" "pz" "qw" "refractor" "renderware" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "wurm")
 	for port_edit in "${ports_edit_array[@]}"; do
 	for port_edit in "${ports_edit_array[@]}"; do
 		if [ "${shortname}" == "ut3" ]; then
 		if [ "${shortname}" == "ut3" ]; then
 			startparameterslocation="${servercfgdir}/UTWeb.ini"
 			startparameterslocation="${servercfgdir}/UTWeb.ini"
@@ -674,7 +674,7 @@ fn_info_messages_ports_edit() {
 		fi
 		fi
 	done
 	done
 	# engines/games that require editing the start parameters.
 	# engines/games that require editing the start parameters.
-	local ports_edit_array=("av" "ck" "col" "cs2" "fctr" "goldsrc" "hcu" "hw" "iw3.0" "ioquake3" "qfusion" "rust" "scpsl" "scpslsm" "sol" "spark" "source" "unreal4" "arma3" "dayz" "unt" "vh")
+	local ports_edit_array=("av" "ck" "col" "cs2" "fctr" "goldsrc" "hcu" "hw" "iw3.0" "ioquake3" "qfusion" "rust" "scpsl" "scpslsm" "sf" "sol" "spark" "source" "unreal4" "arma3" "dayz" "unt" "vh")
 	for port_edit in "${ports_edit_array[@]}"; do
 	for port_edit in "${ports_edit_array[@]}"; do
 		if [ "${engine}" == "${port_edit}" ] || [ "${gamename}" == "${port_edit}" ] || [ "${shortname}" == "${port_edit}" ]; then
 		if [ "${engine}" == "${port_edit}" ] || [ "${gamename}" == "${port_edit}" ] || [ "${shortname}" == "${port_edit}" ]; then
 			startparameterslocation="${configdirserver}"
 			startparameterslocation="${configdirserver}"
@@ -692,6 +692,10 @@ fn_info_messages_ports() {
 		portcommand="ss -tuplwn | grep AvorionServer"
 		portcommand="ss -tuplwn | grep AvorionServer"
 	elif [ "${shortname}" == "bf1942" ]; then
 	elif [ "${shortname}" == "bf1942" ]; then
 		portcommand="ss -tuplwn | grep bf1942_lnxded"
 		portcommand="ss -tuplwn | grep bf1942_lnxded"
+	elif [ "${shortname}" == "dayz" ]; then
+		portcommand="ss -tuplwn | grep enfMain"
+	elif [ "${shortname}" == "q4" ]; then
+		portcommand="ss -tuplwn | grep q4ded.x86"
 	elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "nec" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then
 	elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "nec" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then
 		portcommand="ss -tuplwn | grep java"
 		portcommand="ss -tuplwn | grep java"
 	elif [ "${shortname}" == "terraria" ]; then
 	elif [ "${shortname}" == "terraria" ]; then
@@ -1284,6 +1288,7 @@ fn_info_messages_q2() {
 	{
 	{
 		fn_port "header"
 		fn_port "header"
 		fn_port "Game" port udp
 		fn_port "Game" port udp
+		fn_port "Query" queryport udp
 	} | column -s $'\t' -t
 	} | column -s $'\t' -t
 }
 }
 
 
@@ -1291,6 +1296,15 @@ fn_info_messages_q3() {
 	{
 	{
 		fn_port "header"
 		fn_port "header"
 		fn_port "Game" port udp
 		fn_port "Game" port udp
+		fn_port "Query" queryport udp
+	} | column -s $'\t' -t
+}
+
+fn_info_messages_q4() {
+	{
+		fn_port "header"
+		fn_port "Game" port udp
+		fn_port "Query" queryport udp
 	} | column -s $'\t' -t
 	} | column -s $'\t' -t
 }
 }
 
 
@@ -1466,6 +1480,7 @@ fn_info_messages_spark() {
 		fn_port "header"
 		fn_port "header"
 		fn_port "Game" port udp
 		fn_port "Game" port udp
 		fn_port "Query" queryport udp
 		fn_port "Query" queryport udp
+		fn_port "Mod Server" modserverport tcp
 		fn_port "Web Interface" httpport tcp
 		fn_port "Web Interface" httpport tcp
 	} | column -s $'\t' -t
 	} | column -s $'\t' -t
 	echo -e ""
 	echo -e ""
@@ -1705,8 +1720,6 @@ fn_info_messages_select_engine() {
 		fn_info_messages_bt
 		fn_info_messages_bt
 	elif [ "${shortname}" == "btl" ]; then
 	elif [ "${shortname}" == "btl" ]; then
 		fn_info_messages_btl
 		fn_info_messages_btl
-	elif [ "${shortname}" == "cd" ]; then
-		fn_info_messages_cd
 	elif [ "${shortname}" == "ck" ]; then
 	elif [ "${shortname}" == "ck" ]; then
 		fn_info_messages_ck
 		fn_info_messages_ck
 	elif [ "${shortname}" == "cs2" ]; then
 	elif [ "${shortname}" == "cs2" ]; then
@@ -1791,6 +1804,8 @@ fn_info_messages_select_engine() {
 		fn_info_messages_q2
 		fn_info_messages_q2
 	elif [ "${shortname}" == "q3" ]; then
 	elif [ "${shortname}" == "q3" ]; then
 		fn_info_messages_q3
 		fn_info_messages_q3
+	elif [ "${shortname}" == "q4" ]; then
+		fn_info_messages_q3
 	elif [ "${shortname}" == "ql" ]; then
 	elif [ "${shortname}" == "ql" ]; then
 		fn_info_messages_ql
 		fn_info_messages_ql
 	elif [ "${shortname}" == "qw" ]; then
 	elif [ "${shortname}" == "qw" ]; then

+ 12 - 6
lgsm/modules/info_stats.sh

@@ -54,7 +54,10 @@ uuidhardware=$(cat "/etc/machine-id")
 # nearest 100Mhz.
 # nearest 100Mhz.
 cpuusedmhzroundup="$(((cpuusedmhz + 99) / 100 * 100))"
 cpuusedmhzroundup="$(((cpuusedmhz + 99) / 100 * 100))"
 # nearest 100MB
 # nearest 100MB
-memusedroundup="$(((memused + 99) / 100 * 100))"
+memusedmbroundup="$(((memusedmb + 99) / 100 * 100))"
+
+# Convert any commas to dots.
+physmemtotal="${physmemtotal//,/.}"
 
 
 apisecret="A-OzP02TSMWt4_vHi6ZpUw"
 apisecret="A-OzP02TSMWt4_vHi6ZpUw"
 measurementid="G-0CR8V7EMT5"
 measurementid="G-0CR8V7EMT5"
@@ -66,22 +69,25 @@ payload="{
 		{
 		{
 		\"name\": \"LinuxGSM\",
 		\"name\": \"LinuxGSM\",
 		\"params\": {
 		\"params\": {
-			\"cpuusedmhzroundup\": \"${cpuusedmhzroundup}MHz\",
+			\"cpuusedmhzroundup\": \"${cpuusedmhzroundup}\",
 			\"diskused\": \"${serverfilesdu}\",
 			\"diskused\": \"${serverfilesdu}\",
 			\"distro\": \"${distroname}\",
 			\"distro\": \"${distroname}\",
 			\"game\": \"${gamename}\",
 			\"game\": \"${gamename}\",
-			\"memusedroundup\": \"${memusedroundup}MB\",
-			\"ramused\": \"${memusedroundup}MB\",
+			\"memusedmbroundup\": \"${memusedmbroundup}\",
+			\"ramused\": \"${memusedmbroundup}\",
 			\"servercpu\": \"${cpumodel} ${cpucores} cores\",
 			\"servercpu\": \"${cpumodel} ${cpucores} cores\",
 			\"servercpufreq\": \"${cpufreqency} x${cpucores}\",
 			\"servercpufreq\": \"${cpufreqency} x${cpucores}\",
 			\"serverdisk\": \"${totalspace}\",
 			\"serverdisk\": \"${totalspace}\",
 			\"serverfilesdu\": \"${serverfilesdu}\",
 			\"serverfilesdu\": \"${serverfilesdu}\",
 			\"serverram\": \"${physmemtotal}\",
 			\"serverram\": \"${physmemtotal}\",
+			\"serverramgb\": \"${physmemtotalgb}\",
 			\"uuidhardware\": \"${uuidhardware}\",
 			\"uuidhardware\": \"${uuidhardware}\",
 			\"uuidinstall\": \"${uuidinstall}\",
 			\"uuidinstall\": \"${uuidinstall}\",
 			\"uuidinstance\": \"${uuidinstance}\",
 			\"uuidinstance\": \"${uuidinstance}\",
 			\"version\": \"${version}\",
 			\"version\": \"${version}\",
-			\"virtualenvironment\": \"${virtualenvironment}\"
+			\"virtualenvironment\": \"${virtualenvironment}\",
+			\"tmuxversion\": \"${tmuxversion}\",
+			\"java\": \"${javaversion}\"
 			}
 			}
 		}
 		}
 	]
 	]
@@ -156,7 +162,7 @@ fn_script_log_info "* uuid-hardware: ${uuidhardware}"
 fn_script_log_info "* Game Name: ${gamename}"
 fn_script_log_info "* Game Name: ${gamename}"
 fn_script_log_info "* Distro Name: ${distroname}"
 fn_script_log_info "* Distro Name: ${distroname}"
 fn_script_log_info "* Game Server CPU Used: ${cpuusedmhzroundup}MHz"
 fn_script_log_info "* Game Server CPU Used: ${cpuusedmhzroundup}MHz"
-fn_script_log_info "* Game Server RAM Used: ${memusedroundup}MB"
+fn_script_log_info "* Game Server RAM Used: ${memusedmbroundup}MB"
 fn_script_log_info "* Game Server Disk Used: ${serverfilesdu}"
 fn_script_log_info "* Game Server Disk Used: ${serverfilesdu}"
 fn_script_log_info "* Server CPU Model: ${cpumodel}"
 fn_script_log_info "* Server CPU Model: ${cpumodel}"
 fn_script_log_info "* Server CPU Frequency: ${cpufreqency}"
 fn_script_log_info "* Server CPU Frequency: ${cpufreqency}"

+ 8 - 8
lgsm/modules/install_config.sh

@@ -245,7 +245,7 @@ elif [ "${shortname}" == "bt" ]; then
 	fn_list_config_locations
 	fn_list_config_locations
 elif [ "${shortname}" == "btl" ]; then
 elif [ "${shortname}" == "btl" ]; then
 	fn_check_cfgdir
 	fn_check_cfgdir
-	array_configs+=(DefaultGame.ini)
+	array_configs+=(Game.ini)
 	fn_fetch_default_config
 	fn_fetch_default_config
 	fn_default_config_remote
 	fn_default_config_remote
 	fn_set_config_vars
 	fn_set_config_vars
@@ -286,12 +286,6 @@ elif [ "${shortname}" == "bmdm" ]; then
 	fn_default_config_remote
 	fn_default_config_remote
 	fn_set_config_vars
 	fn_set_config_vars
 	fn_list_config_locations
 	fn_list_config_locations
-elif [ "${shortname}" == "cd" ]; then
-	array_configs+=(properties.json)
-	fn_fetch_default_config
-	fn_default_config_remote
-	fn_set_config_vars
-	fn_list_config_locations
 elif [ "${shortname}" == "ck" ]; then
 elif [ "${shortname}" == "ck" ]; then
 	array_configs+=(ServerConfig.json)
 	array_configs+=(ServerConfig.json)
 	fn_fetch_default_config
 	fn_fetch_default_config
@@ -484,7 +478,7 @@ elif [ "${shortname}" == "hldms" ]; then
 	fn_set_config_vars
 	fn_set_config_vars
 	fn_list_config_locations
 	fn_list_config_locations
 elif [ "${shortname}" == "ohd" ]; then
 elif [ "${shortname}" == "ohd" ]; then
-	array_configs+=(Game.ini)
+	array_configs+=(Admins.cfg Engine.ini Game.ini MapCycle.cfg)
 	fn_fetch_default_config
 	fn_fetch_default_config
 	fn_default_config_remote
 	fn_default_config_remote
 	fn_set_config_vars
 	fn_set_config_vars
@@ -640,6 +634,12 @@ elif [ "${shortname}" == "q2" ]; then
 	fn_set_config_vars
 	fn_set_config_vars
 	fn_list_config_locations
 	fn_list_config_locations
 elif [ "${shortname}" == "q3" ]; then
 elif [ "${shortname}" == "q3" ]; then
+	array_configs+=(server.cfg)
+	fn_fetch_default_configs
+	fn_default_config_remote
+	fn_set_config_vars
+	fn_list_config_locations
+elif [ "${shortname}" == "q4" ]; then
 	array_configs+=(server.cfg)
 	array_configs+=(server.cfg)
 	fn_fetch_default_config
 	fn_fetch_default_config
 	fn_default_config_remote
 	fn_default_config_remote

+ 8 - 1
lgsm/modules/install_server_files.sh

@@ -106,6 +106,13 @@ fn_install_server_files() {
 		chmodx="nochmodx" run="norun"
 		chmodx="nochmodx" run="norun"
 		force="noforce"
 		force="noforce"
 		md5="b0e26d8919fe9313fb9d8ded2360f3db"
 		md5="b0e26d8919fe9313fb9d8ded2360f3db"
+	elif [ "${shortname}" == "q4" ]; then
+		remote_fileurl="http://linuxgsm.download/Quake4/quake4-1.4.2-x86-linuxded.tar.xz"
+		local_filedir="${tmpdir}"
+		local_filename="quake4-1.4.2-x86-linuxded.tar.xz"
+		chmodx="nochmodx" run="norun"
+		force="noforce"
+		md5="afe30b44f23c8ae2ce6f0f464473d8ba"
 	elif [ "${shortname}" == "qw" ]; then
 	elif [ "${shortname}" == "qw" ]; then
 		remote_fileurl="http://linuxgsm.download/QuakeWorld/nquake.server.linux.190506.full.tar.xz"
 		remote_fileurl="http://linuxgsm.download/QuakeWorld/nquake.server.linux.190506.full.tar.xz"
 		local_filedir="${tmpdir}"
 		local_filedir="${tmpdir}"
@@ -240,7 +247,7 @@ elif [ "${shortname}" == "vints" ]; then
 elif [ "${shortname}" == "ut99" ]; then
 elif [ "${shortname}" == "ut99" ]; then
 	fn_install_server_files
 	fn_install_server_files
 	update_ut99.sh
 	update_ut99.sh
-elif [ -z "${appid}" ] || [ "${shortname}" == "ahl" ] || [ "${shortname}" == "bb" ] || [ "${shortname}" == "ns" ] || [ "${shortname}" == "sfc" ] || [ "${shortname}" == "ts" ] || [ "${shortname}" == "vs" ] || [ "${shortname}" == "zmr" ]; then
+elif [ -z "${appid}" ] || [ "${shortname}" == "ahl" ] || [ "${shortname}" == "bb" ] || [ "${shortname}" == "q4" ] || [ "${shortname}" == "ns" ] || [ "${shortname}" == "sfc" ] || [ "${shortname}" == "ts" ] || [ "${shortname}" == "vs" ] || [ "${shortname}" == "zmr" ]; then
 	if [ "${shortname}" == "ut" ]; then
 	if [ "${shortname}" == "ut" ]; then
 		install_eula.sh
 		install_eula.sh
 	fi
 	fi

+ 1 - 1
lgsm/modules/mods_list.sh

@@ -200,7 +200,7 @@ mod_info_hwoxide=(MOD "hwoxide" "Oxide for Hurtworld" "${oxidehurtworldlatestlin
 mod_info_sdtdoxide=(MOD "sdtdoxide" "Oxide for 7 Days To Die" "${oxidesdtdlatestlink}" "Oxide.SevenDaysToDie.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "https://umod.org/games/7-days-to-die" "Allows for the use of plugins")
 mod_info_sdtdoxide=(MOD "sdtdoxide" "Oxide for 7 Days To Die" "${oxidesdtdlatestlink}" "Oxide.SevenDaysToDie.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "https://umod.org/games/7-days-to-die" "Allows for the use of plugins")
 
 
 # ValheimPlus
 # ValheimPlus
-mod_info_valheimplus=(MOD "valheimplus" "Valheim PLUS" "${valeimpluslatestlink}" "ValheimPlus.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://github.com/valheimPlus/ValheimPlus" "Mod to improve Valheim gameplay")
+mod_info_valheimplus=(MOD "valheimplus" "Valheim PLUS" "${valeimpluslatestlink}" "ValheimPlus.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://github.com/Grantapher/ValheimPlus.git" "Mod to improve Valheim gameplay")
 
 
 # BepInEx Valheim
 # BepInEx Valheim
 mod_info_bepinexvh=(MOD "bepinexvh" "BepInEx Valheim" "${bepinexvhlatestlink}" "denikson-BepInExPack_Valheim.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://valheim.thunderstore.io/package/denikson/BepInExPack_Valheim/" "Unity / XNA game patcher and plugin framework")
 mod_info_bepinexvh=(MOD "bepinexvh" "BepInEx Valheim" "${bepinexvhlatestlink}" "denikson-BepInExPack_Valheim.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://valheim.thunderstore.io/package/denikson/BepInExPack_Valheim/" "Unity / XNA game patcher and plugin framework")

+ 1 - 1
linuxgsm.sh

@@ -24,7 +24,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="v23.6.2"
+version="v23.7.0"
 shortname="core"
 shortname="core"
 gameservername="core"
 gameservername="core"
 commandname="CORE"
 commandname="CORE"