Browse Source

Merge remote-tracking branch 'refs/remotes/origin/master' into pr/1133

# Conflicts:
#	lgsm/functions/command_install.sh
pull/1134/head
Daniel Gibbs 9 years ago
parent
commit
016884ef4b
  1. 2
      7DaysToDie/sdtdserver
  2. 2
      ARKSurvivalEvolved/arkserver
  3. 2
      Arma3/arma3server
  4. 2
      Battlefield1942/bf1942server
  5. 2
      BlackMesa/bmdmserver
  6. 2
      BladeSymphony/bsserver
  7. 2
      BrainBread2/bb2server
  8. 2
      CodenameCURE/ccserver
  9. 2
      CounterStrike/csserver
  10. 2
      CounterStrikeConditionZero/csczserver
  11. 2
      CounterStrikeGlobalOffensive/csgoserver
  12. 2
      CounterStrikeSource/cssserver
  13. 2
      DayOfDefeat/dodserver
  14. 2
      DayOfDefeatSource/dodsserver
  15. 2
      DayOfInfamy/doiserver
  16. 2
      DeathmatchClassic/dmcserver
  17. 2
      DontStarveTogether/dstserver
  18. 2
      DoubleActionBoogaloo/dabserver
  19. 2
      EmpiresMod/emserver
  20. 2
      FistfulOfFrags/fofserver
  21. 2
      GarrysMod/gmodserver
  22. 2
      GoldenEyeSource/gesserver
  23. 2
      HalfLife2Deathmatch/hl2dmserver
  24. 2
      HalfLifeDeathmatch/hldmserver
  25. 2
      HalfLifeDeathmatchSource/hldmsserver
  26. 2
      Hurtworld/hwserver
  27. 2
      Insurgency/insserver
  28. 2
      JustCause2/jc2server
  29. 2
      KillingFloor/kfserver
  30. 2
      Left4Dead/l4dserver
  31. 2
      Left4Dead2/l4d2server
  32. 68
      Minecraft/mcserver
  33. 4
      Mumble/mumbleserver
  34. 2
      NS2Combat/ns2cserver
  35. 2
      NaturalSelection2/ns2server
  36. 2
      NoMoreRoomInHell/nmrihserver
  37. 2
      OpposingForce/opforserver
  38. 2
      PiratesVikingandKnightsII/pvkiiserver
  39. 2
      ProjectZomboid/pzserver
  40. 15
      Quake2/cfg/lgsm-default.cfg
  41. 145
      Quake2/q2server
  42. 36
      Quake3/cfg/lgsm-default.cfg
  43. 145
      Quake3/q3server
  44. 2
      QuakeLive/qlserver
  45. 26
      QuakeWorld/cfg/lgsm-default.cfg
  46. 144
      QuakeWorld/qwserver
  47. 2
      RedOrchestra/roserver
  48. 2
      Ricochet/ricochetserver
  49. 2
      Rust/rustserver
  50. 2
      SeriousSam3BFE/ss3sserver
  51. 2
      Starbound/sbserver
  52. 2
      SvenCoop/svenserver
  53. 2
      TeamFortress2/tf2server
  54. 2
      TeamFortressClassic/tfcserver
  55. 2
      TeamSpeak3/ts3server
  56. 2
      Teeworlds/twserver
  57. 2
      Terraria/terrariaserver
  58. 2
      UnrealTournament/utserver
  59. 2
      UnrealTournament2004/ut2k4server
  60. 2
      UnrealTournament3/ut3server
  61. 2
      UnrealTournament99/ut99server
  62. 2
      WolfensteinEnemyTerritory/wetserver
  63. 22
      appmanifest/appmanifest_10.acf
  64. 22
      appmanifest/appmanifest_70.acf
  65. 28
      appmanifest/appmanifest_90.acf
  66. 31
      appmanifest/czero/appmanifest_90.acf
  67. 31
      appmanifest/dod/appmanifest_90.acf
  68. 31
      appmanifest/tfc/appmanifest_90.acf
  69. 38
      functions/command_update_functions.sh
  70. 72
      functions/core_functions.sh
  71. 14
      functions/core_getopt.sh
  72. 15
      functions/fn_functions
  73. 14
      functions/fn_getopt
  74. 15
      functions/fn_update_functions
  75. 15
      functions/update_functions.sh
  76. 1
      lgsm/functions/check.sh
  77. 52
      lgsm/functions/check_permissions.sh
  78. 4
      lgsm/functions/check_status.sh
  79. 11
      lgsm/functions/check_system_requirements.sh
  80. 32
      lgsm/functions/check_tmuxception.sh
  81. 43
      lgsm/functions/command_details.sh
  82. 2
      lgsm/functions/command_dev_detect_glibc.sh
  83. 24
      lgsm/functions/command_fastdl.sh
  84. 2
      lgsm/functions/command_install.sh
  85. 2
      lgsm/functions/command_monitor.sh
  86. 4
      lgsm/functions/command_stop.sh
  87. 10
      lgsm/functions/core_functions.sh
  88. 7
      lgsm/functions/core_getopt.sh
  89. 2
      lgsm/functions/fn_functions
  90. 2
      lgsm/functions/fn_getopt
  91. 2
      lgsm/functions/fn_update_functions
  92. 6
      lgsm/functions/gsquery.py
  93. 98
      lgsm/functions/info_config.sh
  94. 10
      lgsm/functions/info_glibc.sh
  95. 24
      lgsm/functions/info_parms.sh
  96. 31
      lgsm/functions/install_config.sh
  97. 9
      lgsm/functions/install_server_files.sh
  98. 4
      lgsm/functions/logs.sh

2
7DaysToDie/sdtdserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
ARKSurvivalEvolved/arkserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
Arma3/arma3server

@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
Battlefield1942/bf1942server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
BlackMesa/bmdmserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
BladeSymphony/bsserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
BrainBread2/bb2server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
CodenameCURE/ccserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
CounterStrike/csserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="060816"
version="211016"
#### Variables ####

2
CounterStrikeConditionZero/csczserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
CounterStrikeGlobalOffensive/csgoserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
CounterStrikeSource/cssserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
DayOfDefeat/dodserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
DayOfDefeatSource/dodsserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
DayOfInfamy/doiserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
DeathmatchClassic/dmcserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
DontStarveTogether/dstserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
DoubleActionBoogaloo/dabserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
EmpiresMod/emserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
FistfulOfFrags/fofserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
GarrysMod/gmodserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
GoldenEyeSource/gesserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="300816"
version="211016"
#### Variables ####

2
HalfLife2Deathmatch/hl2dmserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
HalfLifeDeathmatch/hldmserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
HalfLifeDeathmatchSource/hldmsserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
Hurtworld/hwserver

@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
Insurgency/insserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="161001"
version="211016"
#### Variables ####

2
JustCause2/jc2server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
KillingFloor/kfserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
Left4Dead/l4dserver

@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
Left4Dead2/l4d2server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

68
Minecraft/mcserver

@ -4,12 +4,12 @@
# Author: Daniel Gibbs
# Website: https://gameservermanagers.com
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
version="210816"
version="211016"
#### Variables ####
@ -91,36 +91,36 @@ 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}"
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}"
}

4
Mumble/mumbleserver

@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="290716"
version="211016"
#### Variables ####
@ -59,7 +59,7 @@ filesdir="${rootdir}/serverfiles"
systemdir="${filesdir}"
executabledir="${filesdir}"
executable="./murmur.x86"
servercfg="murmur.ini"
servercfg="${servicename}.ini"
servercfgdefault="murmur.ini"
servercfgdir="${filesdir}"
servercfgfullpath="${servercfgdir}/${servercfg}"

2
NS2Combat/ns2cserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
NaturalSelection2/ns2server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210916"
version="211016"
#### Variables ####

2
NoMoreRoomInHell/nmrihserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
OpposingForce/opforserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
PiratesVikingandKnightsII/pvkiiserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
ProjectZomboid/pzserver

@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

15
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
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 protected]"
# 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
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
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 protected]"
# 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

2
QuakeLive/qlserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

26
QuakeWorld/cfg/lgsm-default.cfg

@ -0,0 +1,26 @@
// server info
hostname "<hostname>" // server name shown in server browsers
rcon_password "<rconpassword>"
sv_admininfo "lgsm <[email protected]>" // admin name shown in server browsers
// motd (max 15 rows) - this is the welcome message displayed when you connect to a server
set k_motd1 "<hostname>"
set k_motd2 " "
set k_motd3 "Available game modes:"
set k_motd4 "1on1, 2on2, 4on4, 10on10, ffa, ctf"
//set k_motd5 "line 5" // etc..
set k_motd_time "5" // time motd is displayed in seconds
// edit the lines below if you want different gamemodes on this port
// matchless mode
set k_matchless 0 // run ktx as a regular match server or as a matchless (ffa) server (0 = regular, 1 = matchless)
set k_use_matchless_dir 1 // use configs/usermodes/matchless instead of [...]/ffa (0 = no, 1 = yes)
// free modes
set k_defmode 2on2 // default mode on server
set k_allowed_free_modes 255 // allowed free modes (bit mask):
// 1=1on1, 2=2on2, 4=3on3, 8=4on4, 16=10on10, 32=ffa 64=ctf 128=hoonymode
set k_defmap dm4 // server homemap. server will change to this when last player leaves the server
set k_mode 2 // server mode (1 = duel, 2 = team, 3 = ffa, 4 = ctf)

144
QuakeWorld/qwserver

@ -0,0 +1,144 @@
#!/bin/bash
# Quake World (nQuake)
# 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 protected]"
# Pushbullet
# https://www.pushbullet.com/#settings
pushbulletalert="off"
pushbullettoken="accesstoken"
# Start Variables
ip="0.0.0.0"
port="27500"
fn_parms(){
parms="-port ${port} -game ktx +exec ${servercfg}"
}
#### 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="quakeworld_server"
gamename="QuakeWorld"
engine="quake"
# 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}/ktx"
executabledir="${filesdir}"
executable="./mvdsv"
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

2
RedOrchestra/roserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
Ricochet/ricochetserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
Rust/rustserver

@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
SeriousSam3BFE/ss3sserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
Starbound/sbserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
SvenCoop/svenserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
TeamFortress2/tf2server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="160916"
version="211016"
#### Variables ####

2
TeamFortressClassic/tfcserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
TeamSpeak3/ts3server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="290716"
version="211016"
#### Variables ####

2
Teeworlds/twserver

@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
Terraria/terrariaserver

@ -10,7 +10,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
UnrealTournament/utserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
UnrealTournament2004/ut2k4server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
UnrealTournament3/ut3server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
UnrealTournament99/ut99server

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

2
WolfensteinEnemyTerritory/wetserver

@ -9,7 +9,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="210516"
version="211016"
#### Variables ####

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

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

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

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

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

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

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"

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

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

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

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

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

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

1
lgsm/functions/check.sh

@ -11,6 +11,7 @@ local commandname="CHECK"
# check.sh selects which checks to run by using arrays
check_root.sh
check_tmuxception.sh
check_permissions.sh
if [ "${function_selfname}" != "command_install.sh" ]&&[ "${function_selfname}" != "command_update_functions.sh" ]; then

52
lgsm/functions/check_permissions.sh

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Checks ownership & permissions of scripts, files and folders.
# Description: Checks ownership & permissions of scripts, files and directories.
local commandname="CHECK"
local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
@ -66,7 +66,7 @@ fn_check_permissions(){
# Check rootdir permissions
if [ -n "${rootdir}" ]; then
# Get permission numbers on folder under the form 775
# Get permission numbers on directory under the form 775
rootdirperm="$(stat -c %a "${rootdir}")"
# Grab the first and second digit for user and group permission
userrootdirperm="${rootdirperm:0:1}"
@ -74,12 +74,56 @@ fn_check_permissions(){
if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then
fn_print_fail_nl "Permissions issues found"
fn_script_log_fatal "Permissions issues found"
fn_print_information_nl "The following directorys does not have the correct permissions:"
fn_script_log_info "The following directorys does not have the correct permissions:"
fn_print_information_nl "The following directory does not have the correct permissions:"
fn_script_log_info "The following directory does not have the correct permissions:"
fn_script_log_info "${rootdir}"
ls -l "${rootdir}"
core_exit.sh
fi
fi
# Check if executable is executable and attempt to fix it
# First get executable name
execname="$(basename "${executable}")"
if [ -f "${executabledir}/${execname}" ]; then
# Get permission numbers on file under the form 775
execperm="$(stat -c %a "${executabledir}/${execname}")"
# Grab the first and second digit for user and group permission
userexecperm="${execperm:0:1}"
groupexecperm="${execperm:1:1}"
# Check for invalid user permission
if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then
# If user permission is invalid, then check for invalid group permissions
if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then
# If permission issues are found
fn_print_warn_nl "Permissions issue found"
fn_script_log_warn "Permissions issue found"
fn_print_information_nl "The following file is not executable:"
ls -l "${executabledir}/${execname}"
fn_script_log_info "The following file is not executable:"
fn_script_log_info "${executabledir}/${execname}"
fn_print_information_nl "Applying chmod u+x,g+x ${executabledir}/${execname}"
fn_script_log_info "Applying chmod u+x,g+x ${execperm}"
# Make the executable executable
chmod u+x,g+x "${executabledir}/${execname}"
# Second check to see if it's been successfully applied
# Get permission numbers on file under the form 775
execperm="$(stat -c %a "${executabledir}/${execname}")"
# Grab the first and second digit for user and group permission
userexecperm="${execperm:0:1}"
groupexecperm="${execperm:1:1}"
if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then
if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then
# If errors are still found
fn_print_fail_nl "The following file could not be set executable:"
ls -l "${executabledir}/${execname}"
fn_script_log_warn "The following file could not be set executable:"
fn_script_log_info "${executabledir}/${execname}"
core_exit.sh
fi
fi
fi
fi
fi
}
fn_check_ownership

4
lgsm/functions/check_status.sh

@ -21,9 +21,11 @@ if [ "${gamename}" == "TeamSpeak 3" ]; then
fi
elif [ "${gamename}" == "Mumble" ]; then
# Get config info
info_config.sh
# 1: Server is listening
# 0: Server is not listening, considered closed
mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep 64738 | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }')
mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep ${port} | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }')
if [ -z "${mumblepid}" ]; then
status=0
else

11
lgsm/functions/check_system_requirements.sh

@ -14,14 +14,13 @@ info_distro.sh
if [ "${gamename}" == "Rust" ]; then
ramrequirementmb="4000"
ramrequirementgb="4"
fi
if [ "${gamename}" == "ARMA 3" ]; then
elif [ "${gamename}" == "ARMA 3" ]; then
ramrequirementmb="1000"
ramrequirementgb="1"
fi
if [ "${gamename}" == "Minecraft" ]; then
elif [ "${gamename}" == "Minecraft" ]; then
ramrequirementmb="1000"
ramrequirementgb="1"
elif [ "${gamename}" == "Natural Selection 2" ]||[ "${gamename}" == "NS2: Combat" ]; then
ramrequirementmb="1000"
ramrequirementgb="1"
fi

32
lgsm/functions/check_tmuxception.sh

@ -0,0 +1,32 @@
#!/bin/bash
# LGSM check_config.sh function
# Author: Daniel Gibbs
# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Checks if run from tmux or screen
local commandname="check"
fn_check_is_in_tmux(){
if [ -n "${TMUX}" ];then
fn_print_fail_nl "tmuxception error: Sorry Cobb you cannot start a tmux session inside of a tmux session."
fn_script_log_fatal "tmuxception error: Attempted to start a tmux session inside of a tmux session."
fn_print_information_nl "LGSM creates a tmux session when starting the server."
echo "It is not possible to run a tmux session inside another tmux session"
echo "https://github.com/GameServerManagers/LinuxGSM/wiki/Tmux#tmuxception"
core_exit.sh
fi
}
fn_check_is_in_screen(){
if [ "$TERM" == "screen" ];then
fn_print_fail_nl "tmuxception error: Sorry Cobb you cannot start a tmux session inside of a screen session."
fn_script_log_fatal "tmuxception error: Attempted to start a tmux session inside of a screen session."
fn_print_information_nl "LGSM creates a tmux session when starting the server."
echo "It is not possible to run a tmux session inside screen session"
echo "https://github.com/GameServerManagers/LinuxGSM/wiki/Tmux#tmuxception"
core_exit.sh
fi
}
fn_check_is_in_tmux
fn_check_is_in_screen

43
lgsm/functions/command_details.sh

@ -218,7 +218,9 @@ fn_details_script(){
echo -e "${blue}Pushbullet alert:\t${default}${pushbulletalert}"
# Update on start
echo -e "${blue}Update on start:\t${default}${updateonstart}"
if [ -n "${updateonstart}" ]; then
echo -e "${blue}Update on start:\t${default}${updateonstart}"
fi
# Script location
echo -e "${blue}Location:\t${default}${rootdir}"
@ -227,6 +229,8 @@ fn_details_script(){
if [ -n "${servercfgfullpath}" ]; then
if [ -f "${servercfgfullpath}" ]; then
echo -e "${blue}Config file:\t${default}${servercfgfullpath}"
elif [ -d "${servercfgfullpath}" ]; then
echo -e "${blue}Config dir:\t${default}${servercfgfullpath}"
else
echo -e "${blue}Config file:\t${default}${red}${servercfgfullpath}${default} (${red}FILE MISSING${default})"
fi
@ -290,7 +294,7 @@ fn_details_ports(){
parmslocation="${red}UNKNOWN${default}"
# 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" "idtech3_ql" "lwjgl2" "projectzomboid" "quake" "refractor" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" )
for port_edit in "${ports_edit_array[@]}"
do
if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then
@ -393,6 +397,33 @@ fn_details_refractor(){
} | 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_quake(){
echo -e "netstat -atunp | grep mvdsv"
echo -e ""
{
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
echo -e "> Game\tINBOUND\t${port}\tudp"
} | column -s $'\t' -t
}
fn_details_quakelive(){
echo -e "netstat -atunp | grep qzeroded"
echo -e ""
@ -435,7 +466,7 @@ fn_details_source(){
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
echo -e "> Game/RCON\tINBOUND\t${port}\ttcp/udp"
if [ -n "${sourcetvport}" ]; then
echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp"
echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp"
fi
echo -e "< Client\tOUTBOUND\t${clientport}\tudp"
} | column -s $'\t' -t
@ -672,6 +703,12 @@ fn_display_details() {
fn_details_ark
elif [ "${gamename}" == "Hurtworld" ]; then
fn_details_hurtworld
elif [ "${gamename}" == "QuakeWorld" ]; then
fn_details_quake
elif [ "${gamename}" == "Quake 2" ]; then
fn_details_quake2
elif [ "${gamename}" == "Quake 3: Arena" ]; then
fn_details_quake3
elif [ "${gamename}" == "Quake Live" ]; then
fn_details_quakelive
elif [ "${gamename}" == "TeamSpeak 3" ]; then

2
lgsm/functions/command_dev_detect_glibc.sh

@ -37,4 +37,4 @@ while IFS= read -r -d $'\0' line; do
done
echo ""
cat "${tmpdir}/detect_glibc.tmp"|sort|uniq|sort -r --version-sort
#rm "${tmpdir}/detect_glibc.tmp"
rm "${tmpdir}/detect_glibc.tmp"

24
lgsm/functions/command_fastdl.sh

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Creates a FastDL folder.
# Description: Creates a FastDL directory.
local commandname="FASTDL"
local commandaction="FastDL"
@ -52,7 +52,7 @@ fn_fastdl_init(){
done
fn_script_log "Initiating FastDL creation"
# Check and create folders
# Check and create directories
if [ ! -d "${webdir}" ]; then
echo ""
fn_print_info "Creating FastDL directories"
@ -67,7 +67,7 @@ fn_fastdl_init(){
echo -en "\n"
fi
if [ ! -d "${fastdldir}" ]; then
# No folder, won't ask for removing old ones
# No directory, won't ask for removing old ones
newfastdl=1
fn_print_dots "Creating fastdl directory"
sleep 0.5
@ -88,7 +88,7 @@ fn_fastdl_config(){
fn_script_log "Configuration"
sleep 2
echo -en "\n"
# Prompt for clearing old files if folder was already here
# Prompt for clearing old files if directory was already here
if [ -n "${newfastdl}" ] && [ "${newfastdl}" == "0" ]; then
fn_print_dots
while true; do
@ -133,12 +133,12 @@ fn_fastdl_gmod_config(){
fn_clear_old_fastdl(){
# Clearing old FastDL if user answered yes
if [ "${clearoldfastdl}" == "on" ]; then
fn_print_info "Clearing existing FastDL folder"
fn_script_log "Clearing existing FastDL folder"
fn_print_info "Clearing existing FastDL directory"
fn_script_log "Clearing existing FastDL directory"
sleep 0.5
rm -R "${fastdldir:?}"/*
fn_print_ok "Old FastDL folder cleared"
fn_script_log "Old FastDL folder cleared"
fn_print_ok "Old FastDL directory cleared"
fn_script_log "Old FastDL directory cleared"
sleep 1
echo -en "\n"
fi
@ -152,7 +152,7 @@ fn_gmod_fastdl(){
sleep 1
echo -en "\n"
# No choice to cd to the directory, as find can't then display relative folder
# No choice to cd to the directory, as find can't then display relative directory
cd "${systemdir}"
# Map Files
@ -221,7 +221,7 @@ fn_gmod_fastdl(){
# Going back to rootdir in order to prevent mistakes
cd "${rootdir}"
# Correct addons folder structure for FastDL
# Correct addons directory structure for FastDL
if [ -d "${fastdldir}/addons" ]; then
fn_print_info "Adjusting addons' file structure"
fn_script_log "Adjusting addon's file structure"
@ -233,7 +233,7 @@ fn_gmod_fastdl(){
echo -en "\n"
fi
# Correct content that may be into a lua folder by mistake like some darkrpmodification addons
# Correct content that may be into a lua directory by mistake like some darkrpmodification addons
if [ -d "${fastdldir}/lua" ]; then
fn_print_dots "Typical DarkRP shit detected, fixing"
sleep 2
@ -244,7 +244,7 @@ fn_gmod_fastdl(){
fi
}
# Generate lua file that will force download any file into the FastDL folder
# Generate lua file that will force download any file into the FastDL directory
fn_lua_fastdl(){
# Remove lua file if luaressource is turned off and file exists
echo ""

2
lgsm/functions/command_install.sh

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

2
lgsm/functions/command_monitor.sh

@ -79,7 +79,7 @@ fn_monitor_tmux(){
fn_print_ok_eol_nl
fn_script_log_pass "Checking session: OK"
# runs gsquery check on game with specific engines.
local allowed_engines_array=( avalanche goldsource idtech3 idtech3_ql refractor realvirtuality source spark unity3d unreal unreal2 )
local allowed_engines_array=( avalanche goldsource idtech3 idtech3_ql quake refractor realvirtuality source spark unity3d unreal unreal2 )
for allowed_engine in "${allowed_engines_array[@]}"
do
if [ "${allowed_engine}" == "${engine}" ]; then

4
lgsm/functions/command_stop.sh

@ -245,8 +245,10 @@ fn_stop_teamspeak3(){
}
fn_stop_mumble(){
# Get needed port info
info_config.sh
fn_print_dots "Stopping ${servername}"
mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep 64738 | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }')
mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep "${port}" | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }')
kill ${mumblepid}
sleep 1
check_status.sh

10
lgsm/functions/core_functions.sh

@ -116,7 +116,7 @@ fn_fetch_core_dl
}
# Command
# Commands
command_console.sh(){
functionfile="${FUNCNAME}"
@ -258,7 +258,7 @@ functionfile="${FUNCNAME}"
fn_fetch_function
}
check_tmux.sh(){
check_tmuxception.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
@ -299,6 +299,7 @@ functionfile="${FUNCNAME}"
fn_fetch_function
}
# Fix
fix.sh(){
@ -553,11 +554,6 @@ functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_ut99.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
# Calls the global Ctrl-C trap
core_trap.sh

7
lgsm/functions/core_getopt.sh

@ -300,6 +300,8 @@ case "${getopt}" in
command_backup.sh;;
dev|dev-debug)
command_dev_debug.sh;;
c|console)
command_console.sh;;
i|install)
command_install.sh;;
dd|detect-deps)
@ -329,6 +331,7 @@ case "${getopt}" in
echo -e "${blue}details\t${default}dt |Displays useful information about the server."
echo -e "${blue}postdetails\t${default}pd |Post stripped details to pastebin (for support)"
echo -e "${blue}backup\t${default}b |Create archive of the server."
echo -e "${blue}debug\t${default}d |See the output of the server directly to your terminal."
echo -e "${blue}install\t${default}i |Install the server."
} | column -s $'\t' -t
esac
@ -405,7 +408,7 @@ case "${getopt}" in
echo -e "${blue}debug\t${default}d |See the output of the server directly to your terminal."
echo -e "${blue}install\t${default}i |Install the server."
echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts."
echo -e "${blue}fastdl\t${default}fd |Generates or update a FastDL folder for your server."
echo -e "${blue}fastdl\t${default}fd |Generates or update a FastDL directory for your server."
} | column -s $'\t' -t
esac
}
@ -619,7 +622,7 @@ case "${getopt}" in
if [ "${gamename}" == "Mumble" ]; then
fn_getopt_mumble
elif [ "${gamename}" == "Battlefield: 1942" ]|| [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
fn_getopt_generic_no_update
elif [ "${engine}" == "lwjgl2" ]; then
fn_getopt_minecraft

2
lgsm/functions/fn_functions

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

2
lgsm/functions/fn_getopt

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

2
lgsm/functions/fn_update_functions

@ -2,7 +2,7 @@
# LGSM fn_update_functions function
# Author: Daniel Gibbs
# 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.

6
lgsm/functions/gsquery.py

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

98
lgsm/functions/info_config.sh

@ -27,15 +27,15 @@ fn_info_config_avalanche(){
slots=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
port=$(grep "BindPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
ip=$(grep "BindIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/BindIP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="BindIP"
# Not Set
servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"}
slots=${slots:-"0"}
port=${port:-"0"}
ip=$(grep "BindIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/BindIP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="BindIP"
fi
}
@ -54,15 +54,15 @@ fn_info_config_bf1942(){
port=$(grep "game.serverPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
queryport="22000"
ip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs)
ipsetinconfig=1
ipinconfigvar="game.serverIP"
# Not Set
servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"}
slots=${slots:-"0"}
port=${port:-"0"}
ip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs)
ipsetinconfig=1
ipinconfigvar="game.serverIP"
fi
}
@ -112,6 +112,10 @@ fn_info_config_minecraft(){
gamemode=$(grep "gamemode" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
gameworld=$(grep "level-name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/level-name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ip=$(grep "server-ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server-ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="server-ip"
# Not Set
servername=${servername:-"NOT SET"}
rconpassword=${rconpassword:-"NOT SET"}
@ -121,9 +125,6 @@ fn_info_config_minecraft(){
gamemode=${gamemode:-"NOT SET"}
gameworld=${gameworld:-"NOT SET"}
ip=$(grep "server-ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server-ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="server-ip"
fi
}
@ -153,7 +154,25 @@ fn_info_config_projectzomboid(){
fi
}
fn_info_config_quakelive(){
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}"
@ -162,18 +181,38 @@ fn_info_config_quakelive(){
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 "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
slots=$(grep "sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
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(){
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 "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
slots=$(grep "sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
ip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="set net_ip"
# Not Set
rconpassword=${rconpassword:-"NOT SET"}
servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"}
slots=${slots:-"0"}
fi
}
@ -191,6 +230,9 @@ fn_info_config_wolfensteinenemyterritory(){
serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
slots=$(grep "set sv_maxclients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
ip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="set net_ip"
# Not Set
rconpassword=${rconpassword:-"NOT SET"}
@ -198,10 +240,6 @@ fn_info_config_wolfensteinenemyterritory(){
serverpassword=${serverpassword:-"NOT SET"}
slots=${slots:-"0"}
port=${port:-"27960"}
ip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="set net_ip"
fi
}
@ -303,14 +341,14 @@ fn_info_config_teamspeak3(){
queryport=$(grep "query_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
fileport=$(grep "filetransfer_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
ip=$(grep "voice_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/voice_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="voice_ip"
# Not Set
port=${port:-"9987"}
queryport=${queryport:-"10011"}
fileport=${fileport:-"30033"}
ip=$(grep "voice_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/voice_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="voice_ip"
fi
}
@ -323,14 +361,14 @@ fn_info_config_mumble(){
port=$(grep "port" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^;/d' -e 's/port//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
queryport="${port}"
ip=$(grep "host=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^;/d' -e 's/host=//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="voice_ip"
# Not Set
port=${port:-"64738"}
queryport=${queryport:-"64738"}
servername="Mumble Port ${port}"
ip=$(grep "host=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^;/d' -e 's/host=//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="voice_ip"
fi
}
@ -475,6 +513,12 @@ elif [ "${gamename}" == "Battlefield: 1942" ]; then
# Dont Starve Together
elif [ "${engine}" == "dontstarve" ]; then
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
elif [ "${gamename}" == "Quake Live" ]; then
fn_info_config_quakelive
@ -515,4 +559,4 @@ elif [ "${gamename}" == "7 Days To Die" ]; then
fn_info_config_sdtd
elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
fn_info_config_wolfensteinenemyterritory
fi
fi

10
lgsm/functions/info_glibc.sh

@ -44,6 +44,12 @@ elif [ "${gamename}" == "Mumble" ]; then
elif [ "${gamename}" == "No More Room in Hell" ]; then
glibcrequired="2.15"
glibcfix="yes"
elif [ "${gamename}" == "Quake 2" ]; then
glibcrequired="NOT REQUIRED"
glibcfix="no"
elif [ "${gamename}" == "Quake 3: Arena" ]; then
glibcrequired="2.1"
glibcfix="no"
elif [ "${gamename}" == "Quake Live" ]; then
glibcrequired="2.15"
glibcfix="no"
@ -80,6 +86,9 @@ elif [ "${engine}" == "spark" ]; then
elif [ "${engine}" == "starbound" ]; then
glibcrequired="2.17"
glibcfix="no"
elif [ "${engine}" == "quake" ]; then
glibcrequired="2.0"
glibcfix="no"
elif [ "${engine}" == "terraria" ]; then
glibcrequired="2.7"
glibcfix="no"
@ -104,7 +113,6 @@ elif [ "${gamename}" == "TeamSpeak 3" ]; then
elif [ "${gamename}" == "Mumble" ]; then
glibcrequired="NOT REQUIRED"
glibcfix="no"
elif [ "${engine}" == "refractor" ]; then
glibcrequired="2.0"
glibcfix="no"

24
lgsm/functions/info_parms.sh

@ -26,17 +26,6 @@ fn_info_config_quakelive(){
rconpassword=${rconpassword:-"NOT SET"}
}
fn_info_config_realvirtuality(){
port=$(grep "^serverport=" "${servercfgfullpath}" | tr -cd '[:digit:]')
queryport=$(grep "^steamqueryport=" "${servercfgfullpath}" | tr -cd '[:digit:]')
masterport=$(grep "^steamport=" "${servercfgfullpath}" | tr -cd '[:digit:]')
# Not Set
port=${port:-"2302"}
queryport=${queryport:-"2303"}
masterport=${masterport:-"2304"}
}
fn_info_config_source(){
defaultmap=${defaultmap:-"NOT SET"}
maxplayers=${maxplayers:-"0"}
@ -44,6 +33,16 @@ fn_info_config_source(){
clientport=${clientport:-"0"}
}
fn_info_config_spark(){
# Not Set
port=${port:-"0"}
queryport=$((port + 1))
maxplayers=${maxplayers:-"0"}
webadminuser=${webadminuser:-"NOT SET"}
webadminpass=${webadminpass:-"NOT SET"}
webadminport=${webadminport:-"0"}
}
fn_info_config_teeworlds(){
if [ ! -f "${servercfgfullpath}" ]; then
servername="unnamed server"
@ -139,6 +138,9 @@ elif [ "${engine}" == "seriousengine35" ]; then
# Source Engine Games
elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
fn_info_config_source
# Spark
elif [ "${engine}" == "spark" ]; then
fn_info_config_spark
# Teeworlds
elif [ "${engine}" == "teeworlds" ]; then
fn_info_config_teeworlds

31
lgsm/functions/install_config.sh

@ -39,8 +39,8 @@ fn_set_config_vars(){
# Checks if cfg dir exists, creates it if it doesn't
fn_check_cfgdir(){
if [ ! -d "${servercfgdir}" ]; then
echo "creating ${servercfgdir} config folder."
fn_script_log_info "creating ${servercfgdir} config folder."
echo "creating ${servercfgdir} config directory."
fn_script_log_info "creating ${servercfgdir} config directory."
mkdir -pv "${servercfgdir}"
fi
}
@ -272,7 +272,11 @@ elif [ "${gamename}" == "No More Room in Hell" ]; then
fn_default_config_remote
fn_set_config_vars
elif [ "${gamename}" == "Mumble" ]; then
:
gamedirname="Mumble"
array_configs+=( murmur.ini )
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
elif [ "${gamename}" == "Natural Selection 2" ]; then
:
elif [ "${gamename}" == "NS2: Combat" ]; then
@ -289,12 +293,30 @@ elif [ "${gamename}" == "Project Zomboid" ]; then
fn_fetch_default_config
fn_default_config_remote
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
gamedirname="QuakeLive"
array_configs+=( server.cfg )
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
elif [ "${gamename}" == "QuakeWorld" ]; then
gamedirname="QuakeWorld"
array_configs+=( server.cfg )
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then
:
elif [ "${gamename}" == "Ricochet" ]; then
@ -387,5 +409,4 @@ elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
fi
fi

9
lgsm/functions/install_server_files.sh

@ -23,6 +23,13 @@ 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"
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"
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"
elif [ "${gamename}" == "QuakeWorld" ]; then
fileurl="http://files.gameservermanagers.com/QuakeWorld/nquake.server.linux.083116.full.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="nquake.server.linux.083116.full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="75a409cf08d808f075e4dacdc7b21b78"
fi
fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}"
fn_dl_extract "${filedir}" "${filename}" "${filesdir}"
@ -130,4 +137,4 @@ if [ -z "${autoinstall}" ]; then
* ) echo "Please answer yes or no.";;
esac
done
fi
fi

4
lgsm/functions/logs.sh

@ -15,7 +15,7 @@ if [ -n "${consolelog}" ]; then
fi
fi
# For games not displaying a console, and having logs into their game folder
# For games not displaying a console, and having logs into their game directory
if [ "${function_selfname}" == "command_start.sh" ] && [ -n "${gamelogfile}" ]; then
if [ -n "$(find "${systemdir}" -name "gamelog*.log")" ]; then
fn_print_info "Moving game logs to ${gamelogdir}"
@ -86,7 +86,7 @@ if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; th
find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${scriptlog}"
legacycount=$(find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"|wc -l)
find "${legacyserverlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
# Remove folder if empty
# Remove directory if empty
if [ ! "$(ls -A "${legacyserverlogdir}")" ]; then
rm -rf "${legacyserverlogdir}"
fi

Loading…
Cancel
Save