Browse Source

Merge branch 'release/v23.7.0'

pull/4408/head v23.7.0
Daniel Gibbs 1 year ago
parent
commit
2e0d053c84
No known key found for this signature in database GPG Key ID: 2076B128385E8C55
  1. 5
      lgsm/config-default/config-lgsm/arkserver/_default.cfg
  2. 2
      lgsm/config-default/config-lgsm/arma3server/_default.cfg
  3. 6
      lgsm/config-default/config-lgsm/btlserver/_default.cfg
  4. 2
      lgsm/config-default/config-lgsm/cod2server/_default.cfg
  5. 2
      lgsm/config-default/config-lgsm/cod4server/_default.cfg
  6. 2
      lgsm/config-default/config-lgsm/codserver/_default.cfg
  7. 2
      lgsm/config-default/config-lgsm/coduoserver/_default.cfg
  8. 2
      lgsm/config-default/config-lgsm/codwawserver/_default.cfg
  9. 2
      lgsm/config-default/config-lgsm/colserver/_default.cfg
  10. 2
      lgsm/config-default/config-lgsm/ctserver/_default.cfg
  11. 2
      lgsm/config-default/config-lgsm/dayzserver/_default.cfg
  12. 4
      lgsm/config-default/config-lgsm/gmodserver/_default.cfg
  13. 4
      lgsm/config-default/config-lgsm/hcuserver/_default.cfg
  14. 8
      lgsm/config-default/config-lgsm/inssserver/_default.cfg
  15. 2
      lgsm/config-default/config-lgsm/jk2server/_default.cfg
  16. 2
      lgsm/config-default/config-lgsm/kfserver/_default.cfg
  17. 3
      lgsm/config-default/config-lgsm/mhserver/_default.cfg
  18. 2
      lgsm/config-default/config-lgsm/mohaaserver/_default.cfg
  19. 3
      lgsm/config-default/config-lgsm/momserver/_default.cfg
  20. 4
      lgsm/config-default/config-lgsm/ns2cserver/_default.cfg
  21. 11
      lgsm/config-default/config-lgsm/ns2server/_default.cfg
  22. 4
      lgsm/config-default/config-lgsm/ohdserver/_default.cfg
  23. 1
      lgsm/config-default/config-lgsm/onsetserver/_default.cfg
  24. 6
      lgsm/config-default/config-lgsm/psserver/_default.cfg
  25. 5
      lgsm/config-default/config-lgsm/pvrserver/_default.cfg
  26. 2
      lgsm/config-default/config-lgsm/q3server/_default.cfg
  27. 36
      lgsm/config-default/config-lgsm/q4server/_default.cfg
  28. 3
      lgsm/config-default/config-lgsm/rustserver/_default.cfg
  29. 4
      lgsm/config-default/config-lgsm/sampserver/_default.cfg
  30. 2
      lgsm/config-default/config-lgsm/sbotsserver/_default.cfg
  31. 7
      lgsm/config-default/config-lgsm/sfserver/_default.cfg
  32. 4
      lgsm/config-default/config-lgsm/squadserver/_default.cfg
  33. 3
      lgsm/config-default/config-lgsm/tiserver/_default.cfg
  34. 2
      lgsm/config-default/config-lgsm/tuserver/_default.cfg
  35. 2
      lgsm/config-default/config-lgsm/ut3server/_default.cfg
  36. 6
      lgsm/config-default/config-lgsm/wurmserver/_default.cfg
  37. 2
      lgsm/data/almalinux-8.csv
  38. 2
      lgsm/data/almalinux-9.csv
  39. 2
      lgsm/data/centos-7.csv
  40. 2
      lgsm/data/centos-8.csv
  41. 2
      lgsm/data/centos-9.csv
  42. 2
      lgsm/data/debian-10.csv
  43. 2
      lgsm/data/debian-11.csv
  44. 2
      lgsm/data/debian-12.csv
  45. 2
      lgsm/data/debian-9.csv
  46. BIN
      lgsm/data/gameicons/cd-icon.png
  47. BIN
      lgsm/data/gameicons/q4-icon.png
  48. 2
      lgsm/data/rhel-7.csv
  49. 2
      lgsm/data/rhel-8.csv
  50. 2
      lgsm/data/rhel-9.csv
  51. 2
      lgsm/data/rocky-8.csv
  52. 2
      lgsm/data/rocky-9.csv
  53. 2
      lgsm/data/serverlist.csv
  54. 2
      lgsm/data/ubuntu-16.04.csv
  55. 2
      lgsm/data/ubuntu-18.04.csv
  56. 2
      lgsm/data/ubuntu-20.04.csv
  57. 2
      lgsm/data/ubuntu-22.04.csv
  58. 2
      lgsm/data/ubuntu-23.04.csv
  59. 2
      lgsm/data/ubuntu-23.10.csv
  60. 11
      lgsm/modules/check_config.sh
  61. 6
      lgsm/modules/check_deps.sh
  62. 59
      lgsm/modules/check_system_requirements.sh
  63. 2
      lgsm/modules/command_backup.sh
  64. 2
      lgsm/modules/command_debug.sh
  65. 46
      lgsm/modules/command_start.sh
  66. 2
      lgsm/modules/core_getopt.sh
  67. 2
      lgsm/modules/core_modules.sh
  68. 4
      lgsm/modules/core_steamcmd.sh
  69. 4
      lgsm/modules/fix.sh
  70. 2
      lgsm/modules/fix_armar.sh
  71. 129
      lgsm/modules/fix_kf.sh
  72. 28
      lgsm/modules/fix_nmrih.sh
  73. 18
      lgsm/modules/fix_rust.sh
  74. 6
      lgsm/modules/fix_vh.sh
  75. 184
      lgsm/modules/info_distro.sh
  76. 51
      lgsm/modules/info_game.sh
  77. 31
      lgsm/modules/info_messages.sh
  78. 18
      lgsm/modules/info_stats.sh
  79. 16
      lgsm/modules/install_config.sh
  80. 9
      lgsm/modules/install_server_files.sh
  81. 2
      lgsm/modules/mods_list.sh
  82. 2
      linuxgsm.sh

5
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 ####

2
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 ####

6
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" servercfg="Game.ini"
servercfgdefault="DefaultGame.ini" servercfgdefault="Game.ini"
servercfgfullpath="${servercfgdir}/${servercfg}" servercfgfullpath="${servercfgdir}/${servercfg}"
## Backup Directory ## Backup Directory

2
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 ####

2
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 ####

2
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 ####

2
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 ####

2
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 ####

2
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

2
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

2
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

4
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 ####

4
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

8
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" defaultmap="Oilfield"
defaultscenario="Scenario_Crossing_Push_Security" 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 ####

2
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 ####

2
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

3
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 ####

2
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 ####

3
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 ####

4
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 ####

11
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 ####

4
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
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 ####

6
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 ####

5
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 ####

2
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 ####

36
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" appid="2210"
steamcmdforcewindows="no" 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" querymode="2"
querytype="" 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" gamename="Quake 4"
engine="unity3d" 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" executable="./quake4-dedicated"
servercfgdir="${systemdir}" servercfgdir="${systemdir}/q4base"
servercfg="properties.json" servercfg="${selfname}.cfg"
servercfgdefault="properties.json" 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"

3
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"

4
lgsm/config-default/config-lgsm/sampserver/_default.cfg

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

2
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 ####

7
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"

4
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 ####

3
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 ####

2
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 ####

2
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 ####

6
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="" consoleverbose="yes"
consoleinteract="" consoleinteract="no"
## Game Server Details ## Game Server Details
# Do not edit # Do not edit

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 B

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 47.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

2
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

Can't render this file because it has a wrong number of fields in line 2.

11
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_print_warn_nl "Default RCON password detected"
fn_script_log_warn "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

6
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_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. Upgrading is recommended." fn_script_log_warn "${distroname} is no longer supported by the vendor or LinuxGSM. Upgrading is recommended."
fi fi
fi fi

59
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="7"
ramrequirementgb="4" 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 elif [ "${shortname}" == "cc" ]; then
ramrequirementmb="4000"
ramrequirementgb="4"
elif [ "${shortname}" == "arma3" ]; then
ramrequirementmb="1000"
ramrequirementgb="1" ramrequirementgb="1"
elif [ "${shortname}" == "rust" ]; then elif [ "${shortname}" == "dayz" ]; then
ramrequirementmb="4000" 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 elif [ "${shortname}" == "ns2" ] || [ "${shortname}" == "ns2c" ]; then
ramrequirementmb="1000"
ramrequirementgb="1" ramrequirementgb="1"
elif [ "${shortname}" == "ps" ]; then elif [ "${shortname}" == "ps" ]; then
ramrequirementmb="2000"
ramrequirementgb="2" ramrequirementgb="2"
elif [ "${shortname}" == "ns2" ] || [ "${shortname}" == "ns2c" ]; then elif [ "${shortname}" == "pvr" ]; then
ramrequirementmb="1000"
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 elif [ "${shortname}" == "stn" ]; then
ramrequirementmb="2000" 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 [ "${ramrequirementgb}" ]; then
if [ "${physmemtotalmb}" -lt "${ramrequirementmb}" ]; 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

2
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

2
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}"

46
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 fi
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
elif [ -n "${tmuxv}" ]; then # Enable console logging.
# tmux pipe-pane not supported in tmux versions < 1.6. if [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
if [ "${tmuxvdigit}" -lt "16" ]; then if [ "${logtimestamp}" == "on" ]; then
echo -e "Console logging disabled: tmux => 1.6 required tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
https://linuxgsm.com/tmux-upgrade else
Currently installed: $(tmux -V)" > "${consolelog}" tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${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
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

2
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.")

2
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

4
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:]')

4
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_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 samp ut2k4 ut ut3) 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

2
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

129
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 "applying WebAdmin ROOst.css fix."
echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" # 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 "applying WebAdmin CharSet fix." # echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
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." # get md5sum of steamclient.so
fn_sleep_time if [ -f "${serverfiles}/System/steamclient.so" ]; then
echo -e "forcing server restart..." steamclientmd5=$(md5sum "${serverfiles}/System/steamclient.so" | awk '{print $1;}')
fn_sleep_time fi
exitbypass=1 #get md5sum of libtier0_s.so
command_start.sh if [ -f "${serverfiles}/System/libtier0_s.so" ]; then
fn_firstcommand_reset libtier0_smd5=$(md5sum "${serverfiles}/System/libtier0_s.so" | awk '{print $1;}')
fn_sleep_time_5 fi
exitbypass=1 #get md5sum of libvstdlib_s.so
command_stop.sh if [ -f "${serverfiles}/System/libvstdlib_s.so" ]; then
fn_firstcommand_reset libvstdlib_smd5=$(md5sum "${serverfiles}/System/libvstdlib_s.so" | awk '{print $1;}')
exitbypass=1 fi
command_start.sh
fn_firstcommand_reset # get md5sum of steamclient.so from steamcmd
fn_sleep_time_5 if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
exitbypass=1 steamcmdsteamclientmd5=$(md5sum "${HOME}/.steam/steamcmd/linux32/steamclient.so" | awk '{print $1;}')
command_stop.sh elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
fn_firstcommand_reset 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

28
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" if [ ! -f "${serverfiles}/bin/vphysics.so" ]; then
ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so" ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so"
ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so" fi
ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so" if [ ! -f "${serverfiles}/bin/studiorender.so" ]; then
ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so" ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so"
ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so" fi
ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so" 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
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
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

184
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)" arch="$(uname -m)" # Architecture e.g. x86_64
kernel="$(uname -r)" kernel="$(uname -r)" # Kernel e.g. 2.6.32-042stab120.16
# Distro Name - Ubuntu 16.04 LTS
# Distro Version - 16.04
# Distro ID - ubuntu
# Distro Codename - xenial
# Gathers distro info from various sources filling in missing gaps. # 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}')" 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}')" distroversion="$(grep "VERSION_ID" /etc/os-release | awk -F= '{gsub(/"/,"",$2);print $2}')" # e.g. 22.04
# Special var for rhel like distros to removed point in number e.g 8.4 to just 8. # Special var for rhel like distros to remove point in number e.g 8.4 to just 8.
distroversionrh="$(sed -nr 's/^VERSION_ID="([0-9]*).+?"/\1/p' /etc/os-release)" if [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then
distroid="$(grep "ID=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')" distroversionrh="$(sed -nr 's/^VERSION_ID="([0-9]*).+?"/\1/p' /etc/os-release)" # e.g. 8
distroidlike="$(grep "ID_LIKE=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')" fi
distrocodename="$(grep "VERSION_CODENAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')" 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. # distroversioncsv is used for selecting the correct distro csv in data directory
if [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then if [ -n "${distroversionrh}" ]; then
distroversioncsv="${distroversionrh}" 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 elif [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then
distrosupport=unknown # 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')" # e.g: 2.17
glibcversion="$(ldd --version | sed -n '1s/.* //p')"
## tmux version ## tmux version
# e.g: tmux 1.6 if [ "$(command -V tmux 2> /dev/null)" ]; then
if [ ! "$(command -V tmux 2> /dev/null)" ]; then tmuxversion="$(tmux -V | awk '{print $2}')" # e.g: tmux 3.3
tmuxv="${red}NOT INSTALLED!${default}"
tmuxvdigit="0"
else
tmuxvdigit="$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')"
if [ "${tmuxvdigit}" -lt "16" ]; then
tmuxv="$(tmux -V) (>= 1.6 required for console log)"
else
tmuxv="$(tmux -V)"
fi
fi 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}')" cpuused="$(ps --forest -o pcpu -g "${gameserverpid}" | awk '{s+=$1} END {print s}')" # integer
cpuusedmhz="$(echo "${cpufreqency} * ${cpuused} / 100" | bc)" 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}')" physmemtotalkb="$(grep MemTotal /proc/meminfo | awk '{print $2}')" # integer
physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')" physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')" # integer
physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')" physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')" # integer
physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')" physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')" # integer
physmemreclaimablekb="$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')" 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))" physmemtotalmb="$(((physmemtotalkb + 512) / 1024))" # integer # integer
physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")" physmemtotalgb="$(((physmemtotalmb + 512) / 1024))" # integer # integer
physmemfree="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")" physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")" # string
physmemused="$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb - physmemfreekb - physmembufferskb - physmemcachedkb - physmemreclaimablekb))K")" physmemfree="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")" # string
physmemavailable="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")" physmemused="$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb - physmemfreekb - physmembufferskb - physmemcachedkb - physmemreclaimablekb))K")" # string
physmemcached="$(numfmt --to=iec --from=iec --suffix=B "$((physmemcachedkb + physmemreclaimablekb))K")" 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")"
swapfree="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")" swaptotal="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /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")" 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}')" 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
pmemused="$(ps --forest -o %mem -g "${gameserverpid}" | awk '{s+=$1} END {print s}')"
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}')" physmemtotalmb="$(free -m | awk '/Mem:/ {print $2}')" # string
physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')" physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')" # string
physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')" physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')" # string
physmemused="$(free ${humanreadable} | awk '/Mem:/ {print $3}')" 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}')" physmemavailable="$(free ${humanreadable} | awk '/Mem:/ {print $7}')" # string
physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')" physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')" # string
fi fi
swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')" swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')" # string
swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')" swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')" # string
swapfree="$(free ${humanreadable} | awk '/Swap:/ {print $4}')" 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}')" 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}')" 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}')" 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}')" 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}') netint=$(${ipcommand} -o addr | grep "${ip}" | awk '{print $2}') # e.g eth0
netlink=$(${ethtoolcommand} "${netint}" 2> /dev/null | grep Speed | awk '{print $2}') 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)"

51
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 "httpenabled" "bEnabled" "${servercfgdir}/KFWeb.ini"
fn_info_game_ini "httppassword" "httppasswordword" 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
if [ ! -f "${servercfgfullpath}" ]; then
servername="unnamed server"
rconpassword="${unavailable}"
port="7777"
rconport="${port}"
maxplayers="50"
else
servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') 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

31
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 if [ -n "${memusedmb}" ]; then
echo -e "${lightblue}Mem Used:\t${default}${pmemused}%\t${memused}MB${default}" 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

18
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\", \"memusedmbroundup\": \"${memusedmbroundup}\",
\"ramused\": \"${memusedroundup}MB\", \"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}"

16
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

9
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

2
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")

2
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"

Loading…
Cancel
Save