소스 검색

Merge pull request #1144 from GameServerManagers/ultimatebyte-dev

fixes and improvements
UltimateByte 9 년 전
부모
커밋
677b96eee1
88개의 변경된 파일1017개의 추가작업 그리고 500개의 파일을 삭제
  1. 6 1
      7DaysToDie/sdtdserver
  2. 6 1
      ARKSurvivalEvolved/arkserver
  3. 6 1
      Arma3/arma3server
  4. 6 1
      Battlefield1942/bf1942server
  5. 6 1
      BlackMesa/bmdmserver
  6. 6 1
      BladeSymphony/bsserver
  7. 6 1
      BrainBread2/bb2server
  8. 6 1
      CodenameCURE/ccserver
  9. 6 1
      CounterStrike/csserver
  10. 6 1
      CounterStrikeConditionZero/csczserver
  11. 6 1
      CounterStrikeGlobalOffensive/csgoserver
  12. 6 1
      CounterStrikeSource/cssserver
  13. 6 1
      DayOfDefeat/dodserver
  14. 6 1
      DayOfDefeatSource/dodsserver
  15. 7 2
      DayOfInfamy/doiserver
  16. 6 1
      DeathmatchClassic/dmcserver
  17. 6 1
      DontStarveTogether/dstserver
  18. 6 1
      DoubleActionBoogaloo/dabserver
  19. 6 1
      EmpiresMod/emserver
  20. 6 1
      FistfulOfFrags/fofserver
  21. 6 1
      GarrysMod/gmodserver
  22. 6 1
      GoldenEyeSource/gesserver
  23. 6 1
      HalfLife2Deathmatch/hl2dmserver
  24. 6 1
      HalfLifeDeathmatch/hldmserver
  25. 6 1
      HalfLifeDeathmatchSource/hldmsserver
  26. 6 1
      Hurtworld/hwserver
  27. 6 1
      Insurgency/insserver
  28. 6 1
      JustCause2/jc2server
  29. 6 1
      KillingFloor/kfserver
  30. 6 1
      Left4Dead/l4dserver
  31. 6 1
      Left4Dead2/l4d2server
  32. 39 34
      Minecraft/mcserver
  33. 6 1
      Mumble/mumbleserver
  34. 6 1
      NS2Combat/ns2cserver
  35. 6 1
      NaturalSelection2/ns2server
  36. 6 1
      NoMoreRoomInHell/nmrihserver
  37. 6 1
      OpposingForce/opforserver
  38. 6 1
      PiratesVikingandKnightsII/pvkiiserver
  39. 6 1
      ProjectZomboid/pzserver
  40. 15 0
      Quake2/cfg/lgsm-default.cfg
  41. 145 0
      Quake2/q2server
  42. 36 0
      Quake3/cfg/lgsm-default.cfg
  43. 145 0
      Quake3/q3server
  44. 6 1
      QuakeLive/qlserver
  45. 6 1
      RedOrchestra/roserver
  46. 6 1
      Ricochet/ricochetserver
  47. 6 1
      Rust/rustserver
  48. 6 1
      SeriousSam3BFE/ss3sserver
  49. 6 1
      Starbound/sbserver
  50. 6 1
      SvenCoop/svenserver
  51. 6 1
      TeamFortress2/tf2server
  52. 6 1
      TeamFortressClassic/tfcserver
  53. 6 1
      TeamSpeak3/ts3server
  54. 6 1
      Teeworlds/twserver
  55. 6 1
      Terraria/terrariaserver
  56. 6 1
      UnrealTournament/utserver
  57. 6 1
      UnrealTournament2004/ut2k4server
  58. 6 1
      UnrealTournament3/ut3server
  59. 6 1
      UnrealTournament99/ut99server
  60. 6 1
      WolfensteinEnemyTerritory/wetserver
  61. 0 22
      appmanifest/appmanifest_10.acf
  62. 0 22
      appmanifest/appmanifest_70.acf
  63. 0 28
      appmanifest/appmanifest_90.acf
  64. 0 31
      appmanifest/czero/appmanifest_90.acf
  65. 0 31
      appmanifest/dod/appmanifest_90.acf
  66. 0 31
      appmanifest/tfc/appmanifest_90.acf
  67. 0 38
      functions/command_update_functions.sh
  68. 0 72
      functions/core_functions.sh
  69. 0 14
      functions/core_getopt.sh
  70. 0 15
      functions/fn_functions
  71. 0 14
      functions/fn_getopt
  72. 0 15
      functions/fn_update_functions
  73. 0 15
      functions/update_functions.sh
  74. 2 1
      lgsm/functions/check_config.sh
  75. 176 38
      lgsm/functions/command_backup.sh
  76. 23 1
      lgsm/functions/command_details.sh
  77. 1 1
      lgsm/functions/command_install.sh
  78. 1 1
      lgsm/functions/core_getopt.sh
  79. 1 1
      lgsm/functions/fn_functions
  80. 1 1
      lgsm/functions/fn_getopt
  81. 1 1
      lgsm/functions/fn_update_functions
  82. 3 1
      lgsm/functions/gsquery.py
  83. 44 0
      lgsm/functions/info_config.sh
  84. 16 11
      lgsm/functions/info_distro.sh
  85. 6 1
      lgsm/functions/info_glibc.sh
  86. 13 4
      lgsm/functions/install_config.sh
  87. 4 0
      lgsm/functions/install_server_files.sh
  88. 14 0
      lgsm/functions/logs.sh

+ 6 - 1
7DaysToDie/sdtdserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.xml"
 servercfgdefault="serverconfig.xml"
 servercfgdefault="serverconfig.xml"
 servercfgdir="${filesdir}"
 servercfgdir="${filesdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
ARKSurvivalEvolved/arkserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -82,6 +82,11 @@ servercfgdir="${systemdir}/Saved/Config/LinuxServer"
 servercfg="GameUserSettings.ini"
 servercfg="GameUserSettings.ini"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgdefault="${servercfgdir}/GameUserSettings.ini"
 servercfgdefault="${servercfgdir}/GameUserSettings.ini"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Arma3/arma3server

@@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -96,6 +96,11 @@ networkcfgdefault="network.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 networkcfgfullpath="${servercfgdir}/${networkcfg}"
 networkcfgfullpath="${servercfgdir}/${networkcfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Battlefield1942/bf1942server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -62,6 +62,11 @@ servercfg="serversettings.con"
 servercfgdefault="serversettings.con"
 servercfgdefault="serversettings.con"
 servercfgdir="${systemdir}/mods/bf1942/settings"
 servercfgdir="${systemdir}/mods/bf1942/settings"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
BlackMesa/bmdmserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -87,6 +87,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
BladeSymphony/bsserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -82,6 +82,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
BrainBread2/bb2server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -87,6 +87,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
CodenameCURE/ccserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -82,6 +82,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
CounterStrike/csserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="060816"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
CounterStrikeConditionZero/csczserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
CounterStrikeGlobalOffensive/csgoserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -105,6 +105,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
CounterStrikeSource/cssserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -87,6 +87,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
DayOfDefeat/dodserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
DayOfDefeatSource/dodsserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -82,6 +82,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 7 - 2
DayOfInfamy/doiserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -84,6 +84,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging
@@ -162,4 +167,4 @@ core_dl.sh
 core_functions.sh
 core_functions.sh
 
 
 getopt=$1
 getopt=$1
-core_getopt.sh
+core_getopt.sh

+ 6 - 1
DeathmatchClassic/dmcserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
DontStarveTogether/dstserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -81,6 +81,11 @@ servercfgdefault="settings.ini"
 servercfgdir="${HOME}/.klei/DoNotStarveTogether"
 servercfgdir="${HOME}/.klei/DoNotStarveTogether"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgdefault="${servercfgdir}/lgsm-default.ini"
 servercfgdefault="${servercfgdir}/lgsm-default.ini"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
DoubleActionBoogaloo/dabserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -82,6 +82,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
EmpiresMod/emserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -87,6 +87,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
FistfulOfFrags/fofserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -82,6 +82,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
GarrysMod/gmodserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -104,6 +104,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
GoldenEyeSource/gesserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="300816"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
HalfLife2Deathmatch/hl2dmserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
HalfLifeDeathmatch/hldmserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -76,6 +76,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
HalfLifeDeathmatchSource/hldmsserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Hurtworld/hwserver

@@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -96,6 +96,11 @@ if [ "${x64mode}" == "1" ]; then
 else
 else
 	executable="./Hurtworld.x86"
 	executable="./Hurtworld.x86"
 fi
 fi
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Insurgency/insserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="161001"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -84,6 +84,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
JustCause2/jc2server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -75,6 +75,11 @@ servercfg="config.lua"
 servercfgdefault="config.lua"
 servercfgdefault="config.lua"
 servercfgdir="${filesdir}"
 servercfgdir="${filesdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
KillingFloor/kfserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -82,6 +82,11 @@ servercfgdefault="Default.ini"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 compressedmapsdir="${rootdir}/Maps-Compressed"
 compressedmapsdir="${rootdir}/Maps-Compressed"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Left4Dead/l4dserver

@@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -82,6 +82,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Left4Dead2/l4d2server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -81,6 +81,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 39 - 34
Minecraft/mcserver

@@ -4,12 +4,12 @@
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: https://gameservermanagers.com
 # Website: https://gameservermanagers.com
 if [ -f ".dev-debug" ]; then
 if [ -f ".dev-debug" ]; then
-        exec 5>dev-debug.log
-        BASH_XTRACEFD="5"
-        set -x
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
 fi
 fi
 
 
-version="210816"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -63,6 +63,11 @@ servercfgdefault="server.properties"
 servercfgdir="${filesdir}"
 servercfgdir="${filesdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgdefault="${servercfgdir}/lgsm-default.ini"
 servercfgdefault="${servercfgdir}/lgsm-default.ini"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging
@@ -91,36 +96,36 @@ filename="${github_file_url_name}"
 githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
 githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
 # If the file is missing, then download
 # If the file is missing, then download
 if [ ! -f "${filedir}/${filename}" ]; then
 if [ ! -f "${filedir}/${filename}" ]; then
-        if [ ! -d "${filedir}" ]; then
-                mkdir -p "${filedir}"
-        fi
-        echo -e "    fetching ${filename}...\c"
-        # Check curl exists and use available path
-        curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
-        for curlcmd in ${curlpaths}
-        do
-                if [ -x "${curlcmd}" ]; then
-                        break
-                fi
-        done
-        # If curl exists download file
-        if [ "$(basename ${curlcmd})" == "curl" ]; then
-                curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
-                if [ $? -ne 0 ]; then
-                        echo -e "\e[0;31mFAIL\e[0m\n"
-                        echo "${curlfetch}"
-                        echo -e "${githuburl}\n"
-                        exit 1
-                else
-                        echo -e "\e[0;32mOK\e[0m"
-                fi
-        else
-                echo -e "\e[0;31mFAIL\e[0m\n"
-                echo "Curl is not installed!"
-                echo -e ""
-                exit 1
-        fi
-        chmod +x "${filedir}/${filename}"
+	if [ ! -d "${filedir}" ]; then
+		mkdir -p "${filedir}"
+	fi
+	echo -e "    fetching ${filename}...\c"
+	# Check curl exists and use available path
+	curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
+	for curlcmd in ${curlpaths}
+	do
+		if [ -x "${curlcmd}" ]; then
+			break
+		fi
+	done
+	# If curl exists download file
+	if [ "$(basename ${curlcmd})" == "curl" ]; then
+		curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
+		if [ $? -ne 0 ]; then
+			echo -e "\e[0;31mFAIL\e[0m\n"
+			echo "${curlfetch}"
+			echo -e "${githuburl}\n"
+			exit 1
+		else
+			echo -e "\e[0;32mOK\e[0m"
+		fi
+	else
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "Curl is not installed!"
+		echo -e ""
+		exit 1
+	fi
+	chmod +x "${filedir}/${filename}"
 fi
 fi
 source "${filedir}/${filename}"
 source "${filedir}/${filename}"
 }
 }

+ 6 - 1
Mumble/mumbleserver

@@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="290716"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -63,6 +63,11 @@ servercfg="${servicename}.ini"
 servercfgdefault="murmur.ini"
 servercfgdefault="murmur.ini"
 servercfgdir="${filesdir}"
 servercfgdir="${filesdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
NS2Combat/ns2cserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -88,6 +88,11 @@ executable="./ns2combatserver_linux32"
 servercfgdir="${rootdir}/server1"
 servercfgdir="${rootdir}/server1"
 servercfgfullpath="${servercfgdir}"
 servercfgfullpath="${servercfgdir}"
 modstoragedir="${servercfgdir}/Workshop"
 modstoragedir="${servercfgdir}/Workshop"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
NaturalSelection2/ns2server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -88,6 +88,11 @@ executable="./server_linux32"
 servercfgdir="${rootdir}/server1"
 servercfgdir="${rootdir}/server1"
 servercfgfullpath="${servercfgdir}"
 servercfgfullpath="${servercfgdir}"
 modstoragedir="${servercfgdir}/Workshop"
 modstoragedir="${servercfgdir}/Workshop"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
NoMoreRoomInHell/nmrihserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -87,6 +87,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
OpposingForce/opforserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
PiratesVikingandKnightsII/pvkiiserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -82,6 +82,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
ProjectZomboid/pzserver

@@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -78,6 +78,11 @@ servercfg="server.ini"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${HOME}/Zomboid/Server"
 servercfgdir="${HOME}/Zomboid/Server"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 15 - 0
Quake2/cfg/lgsm-default.cfg

@@ -0,0 +1,15 @@
+set hostname "<hostname>"
+set rcon_password "<rconpassword>"
+set location "The Internet"
+set website "https://gameservermanagers.com/"
+set deathmatch 1
+set maxclients 8
+set timelimit 30
+set fraglimit 30
+
+map q2dm1
+
+// to advertise your server to a public "master server" add something
+// like this:
+//set public 1
+//setmaster master.q2servers.com

+ 145 - 0
Quake2/q2server

@@ -0,0 +1,145 @@
+#!/bin/bash
+# Quake 2
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+if [ -f ".dev-debug" ]; then
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
+fi
+
+version="210516"
+
+#### Variables ####
+
+# Notification Alerts
+# (on|off)
+
+# Email
+emailalert="off"
+email="email@example.com"
+
+# Pushbullet
+# https://www.pushbullet.com/#settings
+pushbulletalert="off"
+pushbullettoken="accesstoken"
+
+# Start Variables
+defaultmap="q2dm1"
+ip="0.0.0.0"
+port="27910"
+
+fn_parms(){
+parms="+set dedicated 1 +set ip ${ip} +set port ${port} +exec ${servercfg} +set deathmatch 1 +map ${defaultmap}"
+}
+
+#### Advanced Variables ####
+
+# Github Branch Select
+# Allows for the use of different function files
+# from a different repo and/or branch.
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
+githubbranch="master"
+
+# Server Details
+servicename="quake2server"
+gamename="Quake 2"
+engine="idtech2"
+
+# Directories
+rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
+selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+lockselfname=".${servicename}.lock"
+lgsmdir="${rootdir}/lgsm"
+functionsdir="${lgsmdir}/functions"
+libdir="${lgsmdir}/lib"
+tmpdir="${lgsmdir}/tmp"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}/baseq2"
+executabledir="${filesdir}"
+executable="./quake2"
+servercfg="${servicename}.cfg"
+servercfgdefault="server.cfg"
+servercfgdir="${systemdir}"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${filesdir}/Logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+consolelogging="on"
+
+scriptlog="${scriptlogdir}/${servicename}-script.log"
+consolelog="${consolelogdir}/${servicename}-console.log"
+emaillog="${scriptlogdir}/${servicename}-email.log"
+
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
+
+##### Script #####
+# Do not edit
+
+# Fetches core_dl for file downloads
+fn_fetch_core_dl(){
+github_file_url_dir="lgsm/functions"
+github_file_url_name="${functionfile}"
+filedir="${functionsdir}"
+filename="${github_file_url_name}"
+githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
+# If the file is missing, then download
+if [ ! -f "${filedir}/${filename}" ]; then
+	if [ ! -d "${filedir}" ]; then
+		mkdir -p "${filedir}"
+	fi
+	echo -e "    fetching ${filename}...\c"
+	# Check curl exists and use available path
+	curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
+	for curlcmd in ${curlpaths}
+	do
+		if [ -x "${curlcmd}" ]; then
+			break
+		fi
+	done
+	# If curl exists download file
+	if [ "$(basename ${curlcmd})" == "curl" ]; then
+		curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
+		if [ $? -ne 0 ]; then
+			echo -e "\e[0;31mFAIL\e[0m\n"
+			echo "${curlfetch}"
+			echo -e "${githuburl}\n"
+			exit 1
+		else
+			echo -e "\e[0;32mOK\e[0m"
+		fi
+	else
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "Curl is not installed!"
+		echo -e ""
+		exit 1
+	fi
+	chmod +x "${filedir}/${filename}"
+fi
+source "${filedir}/${filename}"
+}
+
+core_dl.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_functions.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_dl.sh
+core_functions.sh
+
+getopt=$1
+core_getopt.sh

+ 36 - 0
Quake3/cfg/lgsm-default.cfg

@@ -0,0 +1,36 @@
+set sv_hostname "<hostname>"
+set sv_maxclients 16
+set g_motd "LGSM Quake3 Server"
+set g_forcerespawn 15
+set rconpassword "<rconpassword>"
+set g_gametype 0 //- Sets the type of game. 0 - Free for all, 1 - Tournament, 2 - Free for all(again), 3 - Team Deathmatch, 4 - Capture the Flag
+set fraglimit 50
+set timelimit 20
+
+//Here's the map-cycle. When fraglimit or timelimit is reached, the map is automatically changed.
+//Otherwise it would just play the same map again.
+set m1 "map q3dm1; set nextmap vstr m2"
+set m2 "map q3dm2; set nextmap vstr m3"
+set m3 "map q3dm3; set nextmap vstr m4"
+set m4 "map q3tourney1; set nextmap vstr m5"
+set m5 "map q3dm4; set nextmap vstr m6"
+set m6 "map q3dm5; set nextmap vstr m7"
+set m7 "map q3dm6; set nextmap vstr m8"
+set m8 "map q3tourney2; set nextmap vstr m9"
+set m9 "map q3dm7; set nextmap vstr m10"
+set m10 "map q3dm8; set nextmap vstr m11"
+set m11 "map q3dm9; set nextmap vstr m12"
+set m12 "map q3tourney3; set nextmap vstr m13"
+set m13 "map q3dm10; set nextmap vstr m14"
+set m14 "map q3dm11; set nextmap vstr m15"
+set m15 "map q3dm12; set nextmap vstr m16"
+set m16 "map q3tourney4; set nextmap vstr m17"
+set m17 "map q3dm13; set nextmap vstr m18"
+set m18 "map q3dm14; set nextmap vstr m19"
+set m19 "map q3dm15; set nextmap vstr m20"
+set m20 "map q3tourney5; set nextmap vstr m21"
+set m21 "map q3dm16; set nextmap vstr m22"
+set m22 "map q3dm17; set nextmap vstr m23"
+set m23 "map q3dm18; set nextmap vstr m24"
+set m24 "map q3dm19; set nextmap vstr m25"
+set m25 "map q3tourney6; set nextmap vstr m1"

+ 145 - 0
Quake3/q3server

@@ -0,0 +1,145 @@
+#!/bin/bash
+# Quake 3: Arena
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+if [ -f ".dev-debug" ]; then
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
+fi
+
+version="210516"
+
+#### Variables ####
+
+# Notification Alerts
+# (on|off)
+
+# Email
+emailalert="off"
+email="email@example.com"
+
+# Pushbullet
+# https://www.pushbullet.com/#settings
+pushbulletalert="off"
+pushbullettoken="accesstoken"
+
+# Start Variables
+defaultmap="q3dm17"
+ip="0.0.0.0"
+port="27960"
+
+fn_parms(){
+parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set com_hunkMegs 32 +set net_ip ${ip} +set net_port ${port} +exec ${servercfg} +map ${defaultmap}"
+}
+
+#### Advanced Variables ####
+
+# Github Branch Select
+# Allows for the use of different function files
+# from a different repo and/or branch.
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
+githubbranch="master"
+
+# Server Details
+servicename="quake3-server"
+gamename="Quake 3: Arena"
+engine="idtech3"
+
+# Directories
+rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
+selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+lockselfname=".${servicename}.lock"
+lgsmdir="${rootdir}/lgsm"
+functionsdir="${lgsmdir}/functions"
+libdir="${lgsmdir}/lib"
+tmpdir="${lgsmdir}/tmp"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}/baseq3"
+executabledir="${filesdir}"
+executable="./q3ded"
+servercfg="${servicename}.cfg"
+servercfgdefault="server.cfg"
+servercfgdir="${systemdir}"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${filesdir}/Logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+consolelogging="on"
+
+scriptlog="${scriptlogdir}/${servicename}-script.log"
+consolelog="${consolelogdir}/${servicename}-console.log"
+emaillog="${scriptlogdir}/${servicename}-email.log"
+
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
+
+##### Script #####
+# Do not edit
+
+# Fetches core_dl for file downloads
+fn_fetch_core_dl(){
+github_file_url_dir="lgsm/functions"
+github_file_url_name="${functionfile}"
+filedir="${functionsdir}"
+filename="${github_file_url_name}"
+githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
+# If the file is missing, then download
+if [ ! -f "${filedir}/${filename}" ]; then
+	if [ ! -d "${filedir}" ]; then
+		mkdir -p "${filedir}"
+	fi
+	echo -e "    fetching ${filename}...\c"
+	# Check curl exists and use available path
+	curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
+	for curlcmd in ${curlpaths}
+	do
+		if [ -x "${curlcmd}" ]; then
+			break
+		fi
+	done
+	# If curl exists download file
+	if [ "$(basename ${curlcmd})" == "curl" ]; then
+		curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
+		if [ $? -ne 0 ]; then
+			echo -e "\e[0;31mFAIL\e[0m\n"
+			echo "${curlfetch}"
+			echo -e "${githuburl}\n"
+			exit 1
+		else
+			echo -e "\e[0;32mOK\e[0m"
+		fi
+	else
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "Curl is not installed!"
+		echo -e ""
+		exit 1
+	fi
+	chmod +x "${filedir}/${filename}"
+fi
+source "${filedir}/${filename}"
+}
+
+core_dl.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_functions.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_dl.sh
+core_functions.sh
+
+getopt=$1
+core_getopt.sh

+ 6 - 1
QuakeLive/qlserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -85,6 +85,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${filesdir}/baseq3"
 servercfgdir="${filesdir}/baseq3"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
RedOrchestra/roserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -73,6 +73,11 @@ servercfgdefault="default.ini"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 compressedmapsdir="${rootdir}/Maps-Compressed"
 compressedmapsdir="${rootdir}/Maps-Compressed"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Ricochet/ricochetserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Rust/rustserver

@@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -100,6 +100,11 @@ servercfg="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${serveridentitydir}/cfg"
 servercfgdir="${serveridentitydir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
SeriousSam3BFE/ss3sserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.ini"
 servercfgdefault="server.ini"
 servercfgdefault="server.ini"
 servercfgdir="${filesdir}/Content/SeriousSam3/Config"
 servercfgdir="${filesdir}/Content/SeriousSam3/Config"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Starbound/sbserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -76,6 +76,11 @@ servercfg="starbound_server.config"
 servercfgdefault="starbound_server.config"
 servercfgdefault="starbound_server.config"
 servercfgdir="${filesdir}/storage"
 servercfgdir="${filesdir}/storage"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
SvenCoop/svenserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -81,6 +81,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
TeamFortress2/tf2server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="160916"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -87,6 +87,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgdir="${systemdir}/cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
TeamFortressClassic/tfcserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -77,6 +77,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
TeamSpeak3/ts3server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="290716"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -50,6 +50,11 @@ servercfg="${servicename}.ini"
 servercfgdefault="ts3server.ini"
 servercfgdefault="ts3server.ini"
 servercfgdir="${filesdir}"
 servercfgdir="${filesdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Teeworlds/twserver

@@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -72,6 +72,11 @@ servercfg="${servicename}.cfg" # Teeworlds can also auto load any config if an a
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${filesdir}"
 servercfgdir="${filesdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
Terraria/terrariaserver

@@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -72,6 +72,11 @@ servercfg="${servicename}.txt"
 servercfgdefault="serverconfig.txt"
 servercfgdefault="serverconfig.txt"
 servercfgdir="${filesdir}"
 servercfgdir="${filesdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
UnrealTournament/utserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -68,6 +68,11 @@ executable="./UE4Server-Linux-Shipping"
 servercfg="Game.ini"
 servercfg="Game.ini"
 servercfgdir="${systemdir}/UnrealTournament/Saved/Config/LinuxServer"
 servercfgdir="${systemdir}/UnrealTournament/Saved/Config/LinuxServer"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
UnrealTournament2004/ut2k4server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -56,6 +56,11 @@ servercfgdefault="UT2004.ini"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 compressedmapsdir="${rootdir}/Maps-Compressed"
 compressedmapsdir="${rootdir}/Maps-Compressed"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
UnrealTournament3/ut3server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -76,6 +76,11 @@ servercfg="${servicename}.ini"
 servercfgdefault="UTGame.ini"
 servercfgdefault="UTGame.ini"
 servercfgdir="${systemdir}/UTGame/Config"
 servercfgdir="${systemdir}/UTGame/Config"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
UnrealTournament99/ut99server

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -65,6 +65,11 @@ servercfgdefault="Default.ini"
 servercfgdir="${systemdir}"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 compressedmapsdir="${rootdir}/Maps-Compressed"
 compressedmapsdir="${rootdir}/Maps-Compressed"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 6 - 1
WolfensteinEnemyTerritory/wetserver

@@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 	set -x
 fi
 fi
 
 
-version="210516"
+version="211016"
 
 
 #### Variables ####
 #### Variables ####
 
 
@@ -62,6 +62,11 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}/etmain"
 servercfgdir="${systemdir}/etmain"
 servercfgfullpath="${servercfgdir}/${servercfg}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+# Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 backupdir="${rootdir}/backups"
 backupdir="${rootdir}/backups"
 
 
 # Logging
 # Logging

+ 0 - 22
appmanifest/appmanifest_10.acf

@@ -1,22 +0,0 @@
-"AppState"
-{
-	"AppID"		"10"
-	"Universe"		"1"
-	"StateFlags"		"1090"
-	"installdir"		"Half-Life"
-	"LastUpdated"		"0"
-	"UpdateResult"		"0"
-	"SizeOnDisk"		"0"
-	"buildid"		"0"
-	"LastOwner"		"0"
-	"BytesToDownload"		"0"
-	"BytesDownloaded"		"0"
-	"AutoUpdateBehavior"		"0"
-	"AllowOtherDownloadsWhileRunning"		"0"
-	"UserConfig"
-	{
-	}
-	"MountedDepots"
-	{
-	}
-}

+ 0 - 22
appmanifest/appmanifest_70.acf

@@ -1,22 +0,0 @@
-"AppState"
-{
-	"AppID"		"70"
-	"Universe"		"1"
-	"StateFlags"		"1090"
-	"installdir"		"Half-Life"
-	"LastUpdated"		"0"
-	"UpdateResult"		"0"
-	"SizeOnDisk"		"0"
-	"buildid"		"0"
-	"LastOwner"		"0"
-	"BytesToDownload"		"0"
-	"BytesDownloaded"		"0"
-	"AutoUpdateBehavior"		"0"
-	"AllowOtherDownloadsWhileRunning"		"0"
-	"UserConfig"
-	{
-	}
-	"MountedDepots"
-	{
-	}
-}

+ 0 - 28
appmanifest/appmanifest_90.acf

@@ -1,28 +0,0 @@
-"AppState"
-{
-	"AppID"		"90"
-	"Universe"		"1"
-	"StateFlags"		"1026"
-	"installdir"		"Half-Life"
-	"LastUpdated"		"0"
-	"UpdateResult"		"0"
-	"SizeOnDisk"		"0"
-	"buildid"		"0"
-	"LastOwner"		"0"
-	"BytesToDownload"		"0"
-	"BytesDownloaded"		"0"
-	"AutoUpdateBehavior"		"0"
-	"AllowOtherDownloadsWhileRunning"		"0"
-	"UserConfig"
-	{
-	}
-	"MountedDepots"
-	{
-	}
-	"SharedDepots"
-	{
-		"1"		"70"
-		"11"		"10"
-		"71"		"70"
-	}
-}

+ 0 - 31
appmanifest/czero/appmanifest_90.acf

@@ -1,31 +0,0 @@
-"AppState"
-{
-	"appid"		"90"
-	"Universe"		"1"
-	"StateFlags"		"4"
-	"installdir"		"Half-Life"
-	"LastUpdated"		"1390662869"
-	"UpdateResult"		"0"
-	"SizeOnDisk"		"41586625"
-	"buildid"		"63549"
-	"LastOwner"		"76561199609699388"
-	"BytesToDownload"		"224501136"
-	"BytesDownloaded"		"224501136"
-	"AutoUpdateBehavior"		"0"
-	"AllowOtherDownloadsWhileRunning"		"0"
-	"UserConfig"
-	{
-		"mod"		"czero"
-	}
-	"MountedDepots"
-	{
-		"4"		"3196956435784640171"
-	}
-	"SharedDepots"
-	{
-		"1"		"70"
-		"11"		"10"
-		"71"		"70"
-		"81"		"80"
-	}
-}

+ 0 - 31
appmanifest/dod/appmanifest_90.acf

@@ -1,31 +0,0 @@
-"AppState"
-{
-	"AppID"		"90"
-	"Universe"		"1"
-	"StateFlags"		"1030"
-	"installdir"		"Half-Life"
-	"LastUpdated"		"1390652241"
-	"UpdateResult"		"0"
-	"SizeOnDisk"		"41586625"
-	"buildid"		"63549"
-	"LastOwner"		"76561201453793332"
-	"BytesToDownload"		"236411088"
-	"BytesDownloaded"		"0"
-	"AutoUpdateBehavior"		"0"
-	"AllowOtherDownloadsWhileRunning"		"0"
-	"UserConfig"
-	{
-		"mod"		"dod"
-	}
-	"MountedDepots"
-	{
-		"4"		"3196956435784640171"
-	}
-	"SharedDepots"
-	{
-		"1"		"70"
-		"11"		"10"
-		"71"		"70"
-		"31"		"30"
-	}
-}

+ 0 - 31
appmanifest/tfc/appmanifest_90.acf

@@ -1,31 +0,0 @@
-"AppState"
-{
-	"AppID"		"90"
-	"Universe"		"1"
-	"StateFlags"		"4"
-	"installdir"		"Half-Life"
-	"LastUpdated"		"1390765182"
-	"UpdateResult"		"0"
-	"SizeOnDisk"		"41586625"
-	"buildid"		"63549"
-	"LastOwner"		"76561198445953036"
-	"BytesToDownload"		"62362560"
-	"BytesDownloaded"		"0"
-	"AutoUpdateBehavior"		"0"
-	"AllowOtherDownloadsWhileRunning"		"0"
-	"UserConfig"
-	{
-		"mod"		"tfc"
-	}
-	"MountedDepots"
-	{
-		"4"		"3196956435784640171"
-	}
-	"SharedDepots"
-	{
-		"1"		"70"
-		"11"		"10"
-		"71"		"70"
-		"21"		"20"
-	}
-}

+ 0 - 38
functions/command_update_functions.sh

@@ -1,38 +0,0 @@
-#!/bin/bash
-# LGSM command_update_functions.sh function
-# Author: Daniel Gibbs
-# Website: https://gameservermanagers.com
-lgsm_version="210516"
-
-# Description: Deletes the functions dir to allow re-downloading of functions from GitHub.
-
-local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
-check.sh
-fn_print_dots "Updating functions"
-fn_script_log "Updating functions"
-sleep 1
-echo -ne "\n"
-
-# Removed legecy functions dir
-if [ -n "${rootdir}" ]; then
-	if [ -d "${rootdir}/functions/" ]; then
-		rm -rfv "${rootdir}/functions/"
-		exitcode=$?
-	fi
-fi
-
-if [ -n "${functionsdir}" ]; then
-	if [ -d "${functionsdir}" ]; then
-		rm -rfv "${functionsdir}/"*
-		exitcode=$?
-	fi
-fi
-
-if [ "${exitcode}" == "0" ]; then
-	fn_print_ok "Updating functions"
-	fn_script_log "Success! Updating functions"
-else
-	fn_print_fail "Updating functions"
-	fn_script_log "Failure! Updating functions"
-fi
-echo -ne "\n"

+ 0 - 72
functions/core_functions.sh

@@ -1,72 +0,0 @@
-#!/bin/bash
-# LGSM core_functions.sh function
-# Author: Daniel Gibbs
-# Website: https://gameservermanagers.com
-lgsm_version="210516"
-
-# Description: REDIRECT FUNCTION to new location for core_functions.sh
-
-# fn_fetch_core_dl also placed here to allow legecy servers to still download core functions
-if [ -z "${lgsmdir}" ]; then
-	lgsmdir="${rootdir}/lgsm"
-	functionsdir="${lgsmdir}/functions"
-	libdir="${lgsmdir}/lib"
-fi
-
-fn_fetch_core_dl(){
-if [ -z "${githubuser}" ]; then
-	githubuser="GameServerManagers"
-fi
-if [ -z "${githubrepo}" ]; then
-	githubrepo="LinuxGSM"
-fi
-if [ -z "${githubbranch}" ]; then
-	githubbranch="master"
-fi
-github_file_url_dir="lgsm/functions"
-github_file_url_name="${functionfile}"
-filedir="${functionsdir}"
-filename="${github_file_url_name}"
-githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
-# If the file is missing, then download
-if [ ! -f "${filedir}/${filename}" ]; then
-	if [ ! -d "${filedir}" ]; then
-		mkdir -p "${filedir}"
-	fi
-	echo -e "    fetching ${filename}...\c"
-	# Check curl exists and use available path
-	curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
-	for curlcmd in ${curlpaths}
-	do
-		if [ -x "${curlcmd}" ]; then
-			break
-		fi
-	done
-	# If curl exists download file
-	if [ "$(basename ${curlcmd})" == "curl" ]; then
-		curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
-		if [ $? -ne 0 ]; then
-			echo -e "${red}FAIL${default}\n"
-			echo "${curlfetch}"
-			echo -e "${githuburl}\n"
-			exit 1
-		else
-			echo -e "${green}OK${default}"
-		fi
-	else
-		echo -e "${red}FAIL${default}\n"
-		echo "Curl is not installed!"
-		echo -e ""
-		exit 1
-	fi
-	chmod +x "${filedir}/${filename}"
-fi
-source "${filedir}/${filename}"
-}
-
-core_functions.sh(){
-functionfile="${FUNCNAME}"
-fn_fetch_core_dl
-}
-
-core_functions.sh

+ 0 - 14
functions/core_getopt.sh

@@ -1,14 +0,0 @@
-#!/bin/bash
-# LGSM core_getopt.sh function
-# Author: Daniel Gibbs
-# Website: https://gameservermanagers.com
-lgsm_version="210516"
-
-# Description: REDIRECT FUNCTION to new location for core_getopt.sh
-
-core_getopt.sh(){
-functionfile="${FUNCNAME}"
-fn_fetch_core_dl
-}
-
-core_getopt.sh

+ 0 - 15
functions/fn_functions

@@ -1,15 +0,0 @@
-#!/bin/bash
-# LGSM fn_functions function
-# Author: Daniel Gibbs
-# Website: https://gameservermanagers.com
-lgsm_version="210516"
-
-# Description: REDIRECT FUNCTION to new core_functions.sh
-
-core_functions.sh(){
-# Functions are defined in core_functions.sh.
-functionfile="${FUNCNAME}"
-fn_runfunction
-}
-
-core_functions.sh

+ 0 - 14
functions/fn_getopt

@@ -1,14 +0,0 @@
-#!/bin/bash
-# LGSM fn_getopt.sh function
-# Author: Daniel Gibbs
-# Website: https://gameservermanagers.com
-lgsm_version="210516"
-
-# Description: REDIRECT FUNCTION to new core_getopt.sh
-
-core_getopt.sh(){
-functionfile="${FUNCNAME}"
-fn_fetch_core_dl
-}
-
-core_getopt.sh

+ 0 - 15
functions/fn_update_functions

@@ -1,15 +0,0 @@
-#!/bin/bash
-# LGSM fn_update_functions function
-# Author: Daniel Gibbs
-# Website: https://gameservermanagers.com
-lgsm_version="210516"
-
-# Description: REDIRECT FUNCTION to new command_update_functions.sh
-
-command_update_functions.sh(){
-functionfile="${FUNCNAME}"
-fn_runfunction
-}
-
-command_update_functions.sh
-

+ 0 - 15
functions/update_functions.sh

@@ -1,15 +0,0 @@
-#!/bin/bash
-# LGSM fn_update_functions function
-# Author: Daniel Gibbs
-# Website: https://gameservermanagers.com
-lgsm_version="210516"
-
-# Description: REDIRECT FUNCTION to new command_update_functions.sh
-
-command_update_functions.sh(){
-functionfile="${FUNCNAME}"
-fn_runfunction
-}
-
-command_update_functions.sh
-

+ 2 - 1
lgsm/functions/check_config.sh

@@ -15,7 +15,8 @@ if [ ! -e "${servercfgfullpath}" ]; then
 		echo "${servercfgfullpath}"
 		echo "${servercfgfullpath}"
 		fn_script_log_warn "Configuration file missing!"
 		fn_script_log_warn "Configuration file missing!"
 		fn_script_log_warn "${servercfgfullpath}"
 		fn_script_log_warn "${servercfgfullpath}"
-		sleep 2
+		sleep 1
+		install_config.sh
 	fi
 	fi
 fi
 fi
 
 

+ 176 - 38
lgsm/functions/command_backup.sh

@@ -1,6 +1,7 @@
 #!/bin/bash
 #!/bin/bash
 # LGSM command_backup.sh function
 # LGSM command_backup.sh function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
+# Contributor: UltimateByte
 # Website: https://gameservermanagers.com
 # Website: https://gameservermanagers.com
 # Description: Creates a .tar.gz file in the backup directory.
 # Description: Creates a .tar.gz file in the backup directory.
 
 
@@ -9,51 +10,188 @@ local commandaction="Backup"
 local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 
 
 check.sh
 check.sh
-info_distro.sh
-backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')"
-fn_print_dots ""
-sleep 0.5
-fn_print_info_nl "A total of ${rootdirduexbackup} will be compressed into the following backup:"
-echo "${backupdir}/${backupname}.tar.gz"
-echo ""
-while true; do
-	read -e -i "y" -p "Continue? [Y/N]" yn
-	case $yn in
-	[Yy]* ) break;;
-	[Nn]* ) echo Exiting; return;;
-	* ) echo "Please answer yes or no.";;
-esac
-done
-echo ""
-check_status.sh
-if [ "${status}" != "0" ]; then
-	echo ""
-	fn_print_warning_nl "${servicename} is currently running."
-	sleep 1
-	while true; do
-		read -p "Stop ${servicename} while running the backup? [Y/N]" yn
-		case $yn in
-		[Yy]* ) command_stop.sh; break;;
-		[Nn]* ) break;;
-		* ) echo "Please answer yes or no.";;
-	esac
-	done
-fi
+fn_script_log "Entering backup"
+
+# Check if a backup is pending or has been aborted using .backup.lock
+fn_check_pending_backup(){
+	if [ -f "${tmpdir}/.backup.lock" ]; then
+		fn_print_error "A backup is currently running or has been aborted."
+		fn_print_info_nl "If you keep seing this message, remove the following file:"
+		echo "${tmpdir}/.backup.lock"
+		fn_script_log_fatal "A backup is currently running or has been aborted."
+		fin_script_log_info "If you keep seing this message, remove the following file: ${tmpdir}/.backup.lock"
+		core_exit.sh
+	fi
+}
+
+# Initialization
+fn_backup_init(){
+	fn_print_dots ""
+	sleep 0.5
+	# Prepare backup file name with servicename current date
+	backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')"
+	# Tells how much will be compressed using rootdirduexbackup value from info_distro and prompt for continue
+	info_distro.sh
+	fn_print_info_nl "A total of ${rootdirduexbackup} will be compressed into the following backup:"
+	fn_script_log "A total of ${rootdirduexbackup} will be compressed into the following backup: ${backupdir}/${backupname}.tar.gz"
+	echo "${backupdir}/${backupname}.tar.gz"
+}
+
+
+# Check if server is started and wether to stop it
+fn_backup_stop_server(){
+	check_status.sh
+	# Server is stopped
+	if [ "${status}" == "0" ]; then
+		serverstopped="no"
+	# Server is up and stoponbackup is off
+	elif [ "${stoponbackup}" == "off" ]; then
+		serverstopped="no"
+		fn_print_info_nl "${servicename} is started and will not be stopped."
+		fn_print_information_nl "It is advised to stop the server to prevent a file changes and tar errors."
+		fn_script_log_info "${servicename} is started during the backup"
+		fn_script_log_info "It is advised to stop the server to prevent a file changes and tar errors."
+	# Server is up and will be stopped if stoponbackup has no value or anything else than "off"
+	else
+		fn_print_warning_nl "${servicename} will be stopped during the backup."
+		fn_script_log_warn "${servicename} will be stopped during the backup"
+		sleep 4
+		serverstopped="yes"
+		exitbypass=1
+		command_stop.sh
+	fi
+}
 
 
+# Create required folders
+fn_backup_directories(){
 fn_print_dots "Backup in progress, please wait..."
 fn_print_dots "Backup in progress, please wait..."
-fn_script_log_info "Started backup"
-sleep 2
+fn_script_log_info "Initiating backup"
+sleep 0.5
+
+# Directories creation
+# Create backupdir if it doesn't exist
 if [ ! -d "${backupdir}" ]; then
 if [ ! -d "${backupdir}" ]; then
+	fn_print_info_nl "Creating ${backupdir}"
+	fn_script_log_info "Creating ${backupdir}"
 	mkdir "${backupdir}"
 	mkdir "${backupdir}"
 fi
 fi
+# Create tmpdir if it doesn't exist
+if [ -n "${tmpdir}" ]&&[ ! -d "${tmpdir}" ]; then
+	fn_print_info_nl "Creating ${tmpdir}"
+	fn_script_log "Creating ${tmpdir}"
+	mkdir -p "${tmpdir}"
+fi
+}
+
+# Create lockfile
+fn_backup_create_lockfile(){
+if [ -d "${tmpdir}" ]; then
+	touch "${tmpdir}/.backup.lock"
+	fn_script_log "Lockfile created"
+fi
+}
+
+# Compressing files
+fn_backup_compression(){
+fn_script_log "Compressing ${rootdirduexbackup}"
 tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./*
 tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "backups" ./*
+fn_script_log "Compression over"
+}
+
+# Check tar exit code and set the result
+fn_check_tar_exit(){
 if [ $? == 0 ]; then
 if [ $? == 0 ]; then
-	fn_print_ok_nl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size"
-	fn_script_log_pass "Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size"
+	backupresult="PASS"
+else
+	backupresult="FAIL"
+fi
+}
+
+# Remove lockfile
+fn_backup_remove_lockfile(){
+if [ -d "${tmpdir}" ]&&[ -f "${tmpdir}/.backup.lock" ]; then
+	rm "${tmpdir}/.backup.lock"
+	fn_script_log "Lockfile removed"
+fi
+}
+
+fn_backup_summary(){
+	# when backupresult="PASS"
+	if [ "${backupresult}" == "PASS" ]; then
+		fn_print_ok_nl "Backup created: ${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size"
+		fn_script_log_pass "Backup created: ${backupdir}/${backupname}.tar.gz is $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}') size"
+	# When backupresult="FAIL"
+	elif [ "${backupresult}" == "FAIL" ]; then
+		fn_print_error_nl "Backup failed: ${backupname}.tar.gz"
+		fn_script_log_error "Backup failed: ${backupname}.tar.gz"
+		core_exit.sh
+	else
+		fn_print_error_nl "Could not determine compression result."
+		fn_script_log_error "Could not determine compression result."
+		core_exit.sh
+	fi
+}
+
+
+# Clear old backups according to maxbackups and maxbackupdays variables
+fn_backup_clearing(){
+# How many backups there are
+backupscount=$(find "${backupdir}/" -type f -name "*.tar.gz"|wc -l)
+# How many backups exceed maxbackups
+backupquotadiff=$((backupscount-maxbackups))
+# How many backups exceed maxbackupdays
+backupsoudatedcount=$(find "${backupdir}"/ -type f -name "*.tar.gz" -mtime +"${maxbackupdays}"|wc -l)
+# If backup variables are set
+if [ -n "${maxbackupdays}" ]&&[ -n "${maxbackups}" ]; then
+	# If anything can be cleared
+	if [ "${backupquotadiff}" -gt "0" ]||[ "${backupsoudatedcount}" -gt "0" ]; then
+		# If maxbackups greater or equal than backupsoutdatedcount, then it is used over maxbackupdays
+		if [ "${backupquotadiff}" -gt "${backupsoudatedcount}" ]||[ "${backupquotadiff}" -eq "${backupsoudatedcount}" ]; then
+			# Display how many backups will be cleared
+			fn_print_info_nl "${backupquotadiff} backup(s) exceed max ${maxbackups} and will be cleared."
+			fn_script_log "${backupquotadiff} backup(s) exceed max ${maxbackups} and will be cleared"
+			sleep 2
+			# Clear over quota backups
+			find "${backupdir}"/ -type f -name "*.tar.gz" -printf '%T@ %p\n' | sort -rn | tail -${backupquotadiff} | cut -f2- -d" " | xargs rm
+			fn_print_ok_nl "Cleared ${backupquotadiff} backup(s)."
+			fn_script_log "Cleared ${backupquotadiff} backup(s)"
+		# If maxbackupdays is used over maxbackups
+		elif [ "${backupquotadiff}" -lt "${backupsoudatedcount}" ]; then
+			# Display how many backups will be cleared
+			fn_print_info_nl "${backupsoudatedcount} backup(s) older than ${maxbackupdays} days will be cleared."
+			fn_script_log "${backupsoudatedcount} backup(s) older than ${maxbackupdays} days will be cleared"
+			find "${backupdir}"/ -type f -mtime +"${maxbackupdays}" -exec rm -f {} \;
+			fn_print_ok_nl "Cleared ${backupsoudatedcount} backup(s)."
+			fn_script_log_pass "Cleared ${backupsoudatedcount} backup(s)"
+		else
+			fn_script_log "No backups older than ${maxbackupdays} days were found"
+		fi
+	fi
 else
 else
-	fn_print_error_nl "Backup failed: ${backupname}.tar.gz"
-	fn_script_log_error "Backup failed: ${backupname}.tar.gz"
+	fn_script_log "No backups to clear since maxbackupdays and maxbackups variables are not set"
 fi
 fi
-sleep 1
-echo ""
+}
+
+# Restart the server if it was stopped for the backup
+fn_backup_start_back(){
+	if [ "${serverstopped}" == "yes" ]; then
+		exitbypass=1
+		command_start.sh
+	fi
+}
+
+# Run functions
+fn_check_pending_backup
+fn_backup_init
+fn_backup_stop_server
+fn_backup_directories
+fn_backup_create_lockfile
+fn_backup_compression
+fn_check_tar_exit
+fn_backup_remove_lockfile
+fn_backup_summary
+fn_backup_clearing
+fn_backup_start_back
+
+sleep 0.5
 core_exit.sh
 core_exit.sh

+ 23 - 1
lgsm/functions/command_details.sh

@@ -292,7 +292,7 @@ fn_details_ports(){
 
 
 	parmslocation="${red}UNKNOWN${default}"
 	parmslocation="${red}UNKNOWN${default}"
 	# engines that require editing in the config file
 	# engines that require editing in the config file
-	local ports_edit_array=( "avalanche" "dontstarve" "idtech3" "lwjgl2" "projectzomboid" "idtech3_ql" "refractor" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" )
+	local ports_edit_array=( "avalanche" "dontstarve" "idtech2" "idtech3" "lwjgl2" "projectzomboid" "idtech3_ql" "refractor" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" )
 	for port_edit in "${ports_edit_array[@]}"
 	for port_edit in "${ports_edit_array[@]}"
 	do
 	do
 		if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then
 		if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then
@@ -386,6 +386,24 @@ fn_details_refractor(){
 	} | column -s $'\t' -t
 	} | column -s $'\t' -t
 }
 }
 
 
+fn_details_quake2(){
+	echo -e "netstat -atunp | grep quake2"
+	echo -e ""
+	{
+		echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
+		echo -e "> Game\tINBOUND\t${port}\tudp"
+	} | column -s $'\t' -t
+}
+
+fn_details_quake3(){
+	echo -e "netstat -atunp | grep q3ded"
+	echo -e ""
+	{
+		echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
+		echo -e "> Game\tINBOUND\t${port}\tudp"
+	} | column -s $'\t' -t
+}
+
 fn_details_quakelive(){
 fn_details_quakelive(){
 	echo -e "netstat -atunp | grep qzeroded"
 	echo -e "netstat -atunp | grep qzeroded"
 	echo -e ""
 	echo -e ""
@@ -665,6 +683,10 @@ fn_display_details() {
 		fn_details_ark
 		fn_details_ark
 	elif [ "${gamename}" == "Hurtworld" ]; then
 	elif [ "${gamename}" == "Hurtworld" ]; then
 		fn_details_hurtworld
 		fn_details_hurtworld
+	elif [ "${gamename}" == "Quake 2" ]; then
+		fn_details_quake2
+	elif [ "${gamename}" == "Quake 3: Arena" ]; then
+		fn_details_quake3
 	elif [ "${gamename}" == "Quake Live" ]; then
 	elif [ "${gamename}" == "Quake Live" ]; then
 		fn_details_quakelive
 		fn_details_quakelive
 	elif [ "${gamename}" == "TeamSpeak 3" ]; then
 	elif [ "${gamename}" == "TeamSpeak 3" ]; then

+ 1 - 1
lgsm/functions/command_install.sh

@@ -18,7 +18,7 @@ check_deps.sh
 if [ "${gamename}" == "Unreal Tournament 2004" ]; then
 if [ "${gamename}" == "Unreal Tournament 2004" ]; then
 	install_server_files.sh
 	install_server_files.sh
 	install_ut2k4_key.sh
 	install_ut2k4_key.sh
-elif [ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Mumble" ]; then
+elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
 	installer=1
 	installer=1
 	install_server_files.sh
 	install_server_files.sh
 elif [ -n "${appid}" ]; then
 elif [ -n "${appid}" ]; then

+ 1 - 1
lgsm/functions/core_getopt.sh

@@ -622,7 +622,7 @@ case "${getopt}" in
 
 
 if [ "${gamename}" == "Mumble" ]; then
 if [ "${gamename}" == "Mumble" ]; then
 	fn_getopt_mumble
 	fn_getopt_mumble
-elif [ "${gamename}" == "Battlefield: 1942" ]|| [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
+elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
 	fn_getopt_generic_no_update
 	fn_getopt_generic_no_update
 elif [ "${engine}" == "lwjgl2" ]; then
 elif [ "${engine}" == "lwjgl2" ]; then
 	fn_getopt_minecraft
 	fn_getopt_minecraft

+ 1 - 1
lgsm/functions/fn_functions

@@ -2,7 +2,7 @@
 # LGSM fn_functions function
 # LGSM fn_functions function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: https://gameservermanagers.com
 # Website: https://gameservermanagers.com
-lgsm_version="210516"
+lgsm_version="211016"
 
 
 # Description: Redirects to new core_functions.sh
 # Description: Redirects to new core_functions.sh
 
 

+ 1 - 1
lgsm/functions/fn_getopt

@@ -2,7 +2,7 @@
 # LGSM fn_getopt function
 # LGSM fn_getopt function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: https://gameservermanagers.com
 # Website: https://gameservermanagers.com
-lgsm_version="210516"
+lgsm_version="211016"
 
 
 # Description: Redirect to new core_getopt.sh
 # Description: Redirect to new core_getopt.sh
 
 

+ 1 - 1
lgsm/functions/fn_update_functions

@@ -2,7 +2,7 @@
 # LGSM fn_update_functions function
 # LGSM fn_update_functions function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: https://gameservermanagers.com
 # Website: https://gameservermanagers.com
-lgsm_version="210516"
+lgsm_version="211016"
 
 
 # Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub.
 # Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub.
 
 

+ 3 - 1
lgsm/functions/gsquery.py

@@ -22,6 +22,8 @@ class GameServer:
             self.query_prompt_string = b'\xFE\xFD\x09\x10\x20\x30\x40'
             self.query_prompt_string = b'\xFE\xFD\x09\x10\x20\x30\x40'
         elif self.option.engine == 'goldsource':
         elif self.option.engine == 'goldsource':
             self.query_prompt_string = b'\xFF\xFF\xFF\xFFTSource Engine Query\0'
             self.query_prompt_string = b'\xFF\xFF\xFF\xFFTSource Engine Query\0'
+        elif self.option.engine == 'idtech2':
+            self.query_prompt_string = b'\xff\xff\xff\xffstatus\x00'
         elif self.option.engine == 'idtech3':
         elif self.option.engine == 'idtech3':
             self.query_prompt_string = b'\xff\xff\xff\xffgetstatus'
             self.query_prompt_string = b'\xff\xff\xff\xffgetstatus'
         elif self.option.engine == 'quakelive':
         elif self.option.engine == 'quakelive':
@@ -109,7 +111,7 @@ if __name__ == '__main__':
         action='store',
         action='store',
         dest='engine',
         dest='engine',
         default=False,
         default=False,
-        help='Engine type: avalanche, goldsource, idtech3, realvirtuality, quakelive, refractor, spark, source, unity3d, unreal, unreal2.'
+        help='Engine type: avalanche, goldsource, idtech2, idtech3, idtech3_ql, realvirtuality, quakelive, refractor, spark, source, unity3d, unreal, unreal2.'
     )
     )
     parser.add_option(
     parser.add_option(
         '-v', '--verbose',
         '-v', '--verbose',

+ 44 - 0
lgsm/functions/info_config.sh

@@ -154,6 +154,44 @@ fn_info_config_projectzomboid(){
 	fi
 	fi
 }
 }
 
 
+fn_info_config_quake2(){
+	if [ ! -f "${servercfgfullpath}" ]; then
+		rconpassword="${unavailable}"
+		servername="${unavailable}"
+		serverpassword="${unavailable}"
+		slots="${zero}"
+	else
+		rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		slots=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
+
+		# Not Set
+		rconpassword=${rconpassword:-"NOT SET"}
+		servername=${servername:-"NOT SET"}
+		slots=${slots:-"0"}
+	fi
+}
+
+fn_info_config_quake3(){
+	if [ ! -f "${servercfgfullpath}" ]; then
+		rconpassword="${unavailable}"
+		servername="${unavailable}"
+		serverpassword="${unavailable}"
+		slots="${zero}"
+	else
+		rconpassword=$(grep "zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		serverpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		slots=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
+
+		# Not Set
+		rconpassword=${rconpassword:-"NOT SET"}
+		servername=${servername:-"NOT SET"}
+		serverpassword=${serverpassword:-"NOT SET"}
+		slots=${slots:-"0"}
+	fi
+}
+
 fn_info_config_quakelive(){
 fn_info_config_quakelive(){
 	if [ ! -f "${servercfgfullpath}" ]; then
 	if [ ! -f "${servercfgfullpath}" ]; then
 		rconpassword="${unavailable}"
 		rconpassword="${unavailable}"
@@ -475,6 +513,12 @@ elif [ "${gamename}" == "Battlefield: 1942" ]; then
 # Dont Starve Together
 # Dont Starve Together
 elif [ "${engine}" == "dontstarve" ]; then
 elif [ "${engine}" == "dontstarve" ]; then
 	fn_info_config_dontstarve
 	fn_info_config_dontstarve
+# Quake 2
+elif [ "${gamename}" == "Quake 2" ]; then
+	fn_info_config_quake2
+# Quake 3
+elif [ "${gamename}" == "Quake 3: Arena" ]; then
+	fn_info_config_quake3
 # Quake Live
 # Quake Live
 elif [ "${gamename}" == "Quake Live" ]; then
 elif [ "${gamename}" == "Quake Live" ]; then
 	fn_info_config_quakelive
 	fn_info_config_quakelive

+ 16 - 11
lgsm/functions/info_distro.sh

@@ -73,6 +73,9 @@ physmemtotalmb=$(free -m | awk '/Mem:/ {print $2}')
 physmemused=$(free ${humanreadable} | awk '/Mem:/ {print $3}')
 physmemused=$(free ${humanreadable} | awk '/Mem:/ {print $3}')
 physmemfree=$(free ${humanreadable} | awk '/Mem:/ {print $4}')
 physmemfree=$(free ${humanreadable} | awk '/Mem:/ {print $4}')
 physmemcached=$(free ${humanreadable} | awk '/cache:/ {print $4}')
 physmemcached=$(free ${humanreadable} | awk '/cache:/ {print $4}')
+if [ -z "${physmemcached}" ]; then
+	physmemcached=$(free ${humanreadable} | awk '/Mem:/ {print $5}')
+fi
 swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}')
 swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}')
 swapused=$(free ${humanreadable} | awk '/Swap:/ {print $3}')
 swapused=$(free ${humanreadable} | awk '/Swap:/ {print $3}')
 swapfree=$(free ${humanreadable} | awk '/Swap:/ {print $4}')
 swapfree=$(free ${humanreadable} | awk '/Swap:/ {print $4}')
@@ -105,19 +108,21 @@ fi
 
 
 ## Backup info
 ## Backup info
 if [ -d "${backupdir}" ]; then
 if [ -d "${backupdir}" ]; then
-	# used space in backups dir.
+	# Ued space in backups dir.
 	backupdirdu=$(du -sh "${backupdir}" | awk '{print $1}')
 	backupdirdu=$(du -sh "${backupdir}" | awk '{print $1}')
+	# If no backup dir, size is 0M
 	if [ -z "${backupdirdu}" ]; then
 	if [ -z "${backupdirdu}" ]; then
 		backupdirdu="0M"
 		backupdirdu="0M"
 	fi
 	fi
-
-	# number of backups.
-	backupcount=$(find "${backupdir}"/*.tar.gz | wc -l)
-	# most recent backup.
-	lastbackup=$(ls -t "${backupdir}"/*.tar.gz | head -1)
-	# date of most recent backup.
-	lastbackupdate=$(date -r "${lastbackup}")
-	# size of most recent backup.
-	lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}')
-
+	# If there are backups in backup dir.
+	if [ $(find "${backupdir}" -name "*.tar.gz" | wc -l) -ne "0" ]; then
+		# number of backups.
+		backupcount=$(find "${backupdir}"/*.tar.gz | wc -l)
+		# most recent backup.
+		lastbackup=$(ls -t "${backupdir}"/*.tar.gz | head -1)
+		# date of most recent backup.
+		lastbackupdate=$(date -r "${lastbackup}")
+		# size of most recent backup.
+		lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}')
+	fi
 fi
 fi

+ 6 - 1
lgsm/functions/info_glibc.sh

@@ -41,6 +41,12 @@ elif [ "${gamename}" == "Mumble" ]; then
 elif [ "${gamename}" == "No More Room in Hell" ]; then
 elif [ "${gamename}" == "No More Room in Hell" ]; then
 	glibcrequired="2.15"
 	glibcrequired="2.15"
 	glibcfix="yes"
 	glibcfix="yes"
+elif [ "${gamename}" == "Quake 2" ]; then
+	glibcrequired="2.0"
+	glibcfix="no"
+elif [ "${gamename}" == "Quake 3: Arena" ]; then
+	glibcrequired="2.1"
+	glibcfix="no"
 elif [ "${gamename}" == "Quake Live" ]; then
 elif [ "${gamename}" == "Quake Live" ]; then
 	glibcrequired="2.15"
 	glibcrequired="2.15"
 	glibcfix="no"
 	glibcfix="no"
@@ -101,7 +107,6 @@ elif [ "${gamename}" == "TeamSpeak 3" ]; then
 elif [ "${gamename}" == "Mumble" ]; then
 elif [ "${gamename}" == "Mumble" ]; then
 	glibcrequired="NOT REQUIRED"
 	glibcrequired="NOT REQUIRED"
 	glibcfix="no"
 	glibcfix="no"
-
 elif [ "${engine}" == "refractor" ]; then
 elif [ "${engine}" == "refractor" ]; then
 	glibcrequired="2.0"
 	glibcrequired="2.0"
 	glibcfix="no"
 	glibcfix="no"

+ 13 - 4
lgsm/functions/install_config.sh

@@ -274,7 +274,6 @@ elif [ "${gamename}" == "Mumble" ]; then
 	array_configs+=( murmur.ini )
 	array_configs+=( murmur.ini )
 	fn_fetch_default_config
 	fn_fetch_default_config
 	fn_default_config_remote
 	fn_default_config_remote
-	fn_set_config_vars
 elif [ "${gamename}" == "Natural Selection 2" ]; then
 elif [ "${gamename}" == "Natural Selection 2" ]; then
 	:
 	:
 elif [ "${gamename}" == "NS2: Combat" ]; then
 elif [ "${gamename}" == "NS2: Combat" ]; then
@@ -291,6 +290,18 @@ elif [ "${gamename}" == "Project Zomboid" ]; then
 	fn_fetch_default_config
 	fn_fetch_default_config
 	fn_default_config_remote
 	fn_default_config_remote
 	fn_set_config_vars
 	fn_set_config_vars
+elif [ "${gamename}" == "Quake 2" ]; then
+	gamedirname="Quake2"
+	array_configs+=( server.cfg )
+	fn_fetch_default_config
+	fn_default_config_remote
+	fn_set_config_vars
+elif [ "${gamename}" == "Quake 3: Arena" ]; then
+	gamedirname="Quake3Arena"
+	array_configs+=( server.cfg )
+	fn_fetch_default_config
+	fn_default_config_remote
+	fn_set_config_vars
 elif [ "${gamename}" == "Quake Live" ]; then
 elif [ "${gamename}" == "Quake Live" ]; then
 	gamedirname="QuakeLive"
 	gamedirname="QuakeLive"
 	array_configs+=( server.cfg )
 	array_configs+=( server.cfg )
@@ -307,10 +318,10 @@ elif [ "${gamename}" == "Ricochet" ]; then
 	fn_set_config_vars
 	fn_set_config_vars
 elif [ "${gamename}" == "Rust" ]; then
 elif [ "${gamename}" == "Rust" ]; then
 	gamedirname="Rust"
 	gamedirname="Rust"
+	fn_check_cfgdir
 	array_configs+=( server.cfg )
 	array_configs+=( server.cfg )
 	fn_fetch_default_config
 	fn_fetch_default_config
 	fn_default_config_remote
 	fn_default_config_remote
-	fn_set_config_vars
 elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then
 elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then
 	gamedirname="SeriousSam3BFE"
 	gamedirname="SeriousSam3BFE"
 	array_configs+=( server.ini )
 	array_configs+=( server.ini )
@@ -346,7 +357,6 @@ elif [ "${gamename}" == "TeamSpeak 3" ]; then
 	array_configs+=( ts3server.ini )
 	array_configs+=( ts3server.ini )
 	fn_fetch_default_config
 	fn_fetch_default_config
 	fn_default_config_remote
 	fn_default_config_remote
-	fn_set_config_vars
 elif [ "${gamename}" == "Teeworlds" ]; then
 elif [ "${gamename}" == "Teeworlds" ]; then
 	gamedirname="Teeworlds"
 	gamedirname="Teeworlds"
 	array_configs+=( server.cfg ctf.cfg dm.cfg duel.cfg tdm.cfg )
 	array_configs+=( server.cfg ctf.cfg dm.cfg duel.cfg tdm.cfg )
@@ -390,4 +400,3 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
 	fn_default_config_remote
 	fn_default_config_remote
 	fn_set_config_vars
 	fn_set_config_vars
 fi
 fi
-

+ 4 - 0
lgsm/functions/install_server_files.sh

@@ -23,6 +23,10 @@ fn_install_server_files(){
 		fileurl="http://files.gameservermanagers.com/UnrealTournament/UnrealTournament-Server-XAN-3045522-Linux.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-XAN-3045522-Linux.zip";  executecmd="noexecute" run="norun"; force="noforce"; md5="553fed5645a9fc623e92563049bf79f6"
 		fileurl="http://files.gameservermanagers.com/UnrealTournament/UnrealTournament-Server-XAN-3045522-Linux.zip"; filedir="${tmpdir}"; filename="UnrealTournament-Server-XAN-3045522-Linux.zip";  executecmd="noexecute" run="norun"; force="noforce"; md5="553fed5645a9fc623e92563049bf79f6"
 	elif [ "${gamename}" == "GoldenEye: Source" ]; then
 	elif [ "${gamename}" == "GoldenEye: Source" ]; then
 		fileurl="http://files.gameservermanagers.com/GoldenEyeSource/GoldenEye_Source_v5.0.1_full_server_linux.tar.bz2"; filedir="${tmpdir}"; filename="GoldenEye_Source_v5.0.1_server_full_Linux.tar.bz2";  executecmd="noexecute" run="norun"; force="noforce"; md5="ea227a150300abe346e757380325f84c"
 		fileurl="http://files.gameservermanagers.com/GoldenEyeSource/GoldenEye_Source_v5.0.1_full_server_linux.tar.bz2"; filedir="${tmpdir}"; filename="GoldenEye_Source_v5.0.1_server_full_Linux.tar.bz2";  executecmd="noexecute" run="norun"; force="noforce"; md5="ea227a150300abe346e757380325f84c"
+	elif [ "${gamename}" == "Quake 2" ]; then
+		fileurl="http://files.gameservermanagers.com/Quake2/quake2-3.20-glibc-i386-full-linux2.0.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="quake2-3.20-glibc-i386-full-linux2.0.tar.bz2";  executecmd="noexecute" run="norun"; force="noforce"; md5="0b8c7e2d51f40b56b328c69e986e7c5f"
+	elif [ "${gamename}" == "Quake 3: Arena" ]; then
+		fileurl="http://files.gameservermanagers.com/Quake3/quake3-1.32c-x86-full-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="quake3-1.32c-x86-full-linux.tar.bz2";  executecmd="noexecute" run="norun"; force="noforce"; md5="fd7258d827474f67663dda297bff4306"
 	fi
 	fi
 	fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}"
 	fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}"
 	fn_dl_extract "${filedir}" "${filename}" "${filesdir}"
 	fn_dl_extract "${filedir}" "${filename}" "${filesdir}"

+ 14 - 0
lgsm/functions/logs.sh

@@ -29,6 +29,9 @@ fi
 # Log manager will start the cleanup if it finds logs older than "${logdays}"
 # Log manager will start the cleanup if it finds logs older than "${logdays}"
 if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then
 if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then
 	fn_print_dots "Starting"
 	fn_print_dots "Starting"
+	# Set common logs directories
+	commonlogs="${systemdir}/logs"
+	commonsourcelogs="${systemdir}/*/logs"
 	# Set addon logs directories
 	# Set addon logs directories
 	sourcemodlogdir="${systemdir}/addons/sourcemod/logs"
 	sourcemodlogdir="${systemdir}/addons/sourcemod/logs"
 	ulxlogdir="${systemdir}/data/ulx_logs"
 	ulxlogdir="${systemdir}/data/ulx_logs"
@@ -57,6 +60,17 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th
 		consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}"|wc -l)
 		consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}"|wc -l)
 		find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
 		find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
 	fi
 	fi
+	# Common logfiles
+	if [ -d ${commonlogs} ]; then
+		find "${commonlogs}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}"
+		smcount=$(find "${commonlogs}"/ -type f -mtime +"${logdays}"|wc -l)
+		find "${commonlogs}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
+	fi
+	if [ -d ${commonsourcelogs} ]; then
+		find "${commonsourcelogs}"/* -type f -mtime +"${logdays}"| tee >> "${scriptlog}"
+		smcount=$(find "${commonsourcelogs}"/* -type f -mtime +"${logdays}"|wc -l)
+		find "${commonsourcelogs}"/* -mtime +"${logdays}" -type f -exec rm -f {} \;
+	fi
 	# Source addons logfiles
 	# Source addons logfiles
 	if [ "${engine}" == "source" ]; then
 	if [ "${engine}" == "source" ]; then
 		# SourceMod logfiles
 		# SourceMod logfiles