4
0
Эх сурвалжийг харах

Merge branch 'master' into config-select

Ilija Matoski 11 жил өмнө
parent
commit
b6cf07bee1
53 өөрчлөгдсөн 1176 нэмэгдсэн , 234 устгасан
  1. 1 1
      7DaysToDie/sdtdserver
  2. 15 5
      Arma3/arma3server
  3. 77 0
      Arma3/cfg/lgsm-default.network.cfg
  4. 0 0
      Arma3/cfg/lgsm-default.server.cfg
  5. 1 1
      BladeSymphony/bsserver
  6. 1 1
      CounterStrike/csserver
  7. 1 1
      CounterStrikeConditionZero/csczserver
  8. 1 1
      CounterStrikeGlobalOffensive/csgoserver
  9. 1 1
      CounterStrikeSource/cssserver
  10. 1 1
      DayOfDefeat/dodserver
  11. 1 1
      DayOfDefeatSource/dodsserver
  12. 0 0
      DeathmatchClassic/cfg/lgsm-default.cfg
  13. 97 0
      DeathmatchClassic/dmcserver
  14. 15 0
      DoubleActionBoogaloo/cfg/lgsm-default.cfg
  15. 98 0
      DoubleActionBoogaloo/dabserver
  16. BIN
      DoubleActionBoogaloo/dependencies/libm.so.6
  17. 1 1
      FistfulOfFrags/fofserver
  18. 2 4
      GarrysMod/cfg/lgsm-default.cfg
  19. 4 3
      GarrysMod/gmodserver
  20. 1 1
      HalfLife2Deathmatch/hl2dmserver
  21. 35 0
      HalfLifeDeathmatch/cfg/lgsm-default.cfg
  22. 7 7
      HalfLifeDeathmatch/hldmserver
  23. 1 1
      Insurgency/insserver
  24. 1 1
      JustCause2/jc2server
  25. 1 1
      KillingFloor/kfserver
  26. 1 1
      Left4Dead/l4dserver
  27. 1 1
      Left4Dead2/l4d2server
  28. 1 1
      NaturalSelection2/ns2server
  29. 166 5
      NoMoreRoomInHell/cfg/lgsm-default.cfg
  30. 1 1
      NoMoreRoomInHell/nmrihserver
  31. 35 0
      OpposingForce/cfg/lgsm-default.cfg
  32. 97 0
      OpposingForce/opforserver
  33. 36 28
      README.md
  34. 1 1
      RedOrchestra/roserver
  35. 35 0
      Ricochet/cfg/lgsm-default.cfg
  36. 97 0
      Ricochet/ricochetserver
  37. 2 2
      SeriousSam3BFE/ss3sserver
  38. 1 1
      StarBound/sbserver
  39. 1 1
      TeamFortress2/tf2server
  40. 1 1
      TeamFortressClassic/tfcserver
  41. 1 1
      TeamSpeak3/ts3server
  42. 3 3
      UnrealTournament2004/ut2k4server
  43. 3 3
      UnrealTournament99/ut99server
  44. 3 2
      functions/fn_check_tmux
  45. 3 1
      functions/fn_getopt
  46. 2 2
      functions/fn_install
  47. 37 24
      functions/fn_install_config
  48. 17 11
      functions/fn_install_glibcfix
  49. 4 1
      functions/fn_install_ut99fix
  50. 3 1
      functions/fn_monitor
  51. 12 5
      functions/fn_monitor_query
  52. 188 103
      functions/fn_update_check
  53. 61 2
      functions/fn_update_dl

+ 1 - 1
7DaysToDie/sdtdserver

@@ -74,7 +74,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 15 - 5
Arma3/arma3server

@@ -4,7 +4,7 @@
 # Author: Daniel Gibbs
 # Contributor: Scarsz
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 200315
 
 #### Variables ####
 
@@ -21,11 +21,19 @@ steampass="password"
 ip="0.0.0.0"
 
 fn_parms(){
-parms="-netlog -ip=${ip} -config=${servercfg}"
+parms="-netlog -ip=${ip} -cfg=${networkcfgfullpath} -config=${servercfgfullpath} -mod=${mods}"
 }
 
 #### Advanced Variables ####
 
+# ARMA 3 Modules
+# add mods with relative paths: 
+# mods/\@CBA_A3\;
+# or several mods as:
+# mods/\@CBA_A3\;mods/\@task_force_radio
+# and chmod modules directories to 775
+mods=""
+
 # Steam
 appid="233780"
 
@@ -42,9 +50,11 @@ filesdir="${rootdir}/serverfiles"
 systemdir="${filesdir}"
 executabledir="${filesdir}"
 executable="./arma3server"
-servercfgdir="${systemdir}"
-servercfg="${servicename}.cfg"
+servercfgdir="${systemdir}/cfg"
+servercfg="${servicename}.server.cfg"
+networkcfg="${servicename}.network.cfg"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+networkcfgfullpath="${servercfgdir}/${networkcfg}"
 backupdir="${rootdir}/backups"
 
 # Logging
@@ -72,7 +82,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 77 - 0
Arma3/cfg/lgsm-default.network.cfg

@@ -0,0 +1,77 @@
+//
+// network.cfg - Defines network tuning parameters
+//
+// This file is to be passed to the -cfg parameter on the command line for the server
+// See http://community.bistudio.com/wiki/basic.cfg
+// The following settings are the suggested settings
+
+// BANDWIDTH SETTINGS
+
+// Bandwidth the server is guaranteed to have (in bps)
+// General guideline is NumberOfPlayers * 256kb
+// Default: 131072
+MinBandwidth=5120000;
+// Bandwidth the server can never go above (in bps)
+// For a single server, use full network speed; decrease when running multiple servers
+MaxBandwidth=10240000;
+
+// PACKET SETTINGS
+
+// Maximum number of packets per frame.
+// Increasing the value potentially decreases lag, but increases desync
+// Default: 128
+MaxMsgSend=2048;
+// Maximum payload of guaranteed packet (in b)
+// Small messages are packed to larger packets
+// Guaranteed packets are used for non-repetitive events, like shooting
+// Lower value means more packets are sent, so less events will get combined
+// Default: 512
+MaxSizeGuaranteed=512;
+// Maximum payload of non-guaranteed packet (in b)
+// Increasing this value may improve bandwidth requirement, but may also increase lag
+// Largest factor in desync
+// Guidance is half of MaxSizeGuaranteed
+// Default: 256
+MaxSizeNonguaranteed=256;
+// Maximal size of a packet sent over the network
+// Only necessary if ISP forces lower packet size and there are connectivity issues
+// Default: 1400
+// class sockets{maxPacketSize=1400};
+
+// SMOOTHNESS SETTINGS
+
+// Minimal error required to send network updates for far units
+// Smaller values will make for smoother movement at long ranges, but will increase network traffic
+// Default: 0.003
+MinErrorToSend=0.01;
+// Minimal error required to send network updates for near units
+// Using larger value can reduce traffic sent for near units
+// Also controls client to server traffic
+// Default: 0.01
+MinErrorToSendNear=0.02;
+
+// GEOLOCATION SETTINGS
+
+// Server latitude
+serverLatitude=52;
+serverLatitudeAuto=52;
+
+// Server Longitude
+serverLongitude=0;
+serverLongitudeAuto=0;
+// MISC
+// View Distance (not sure if this actually works)
+viewDistance=10000;
+
+// Maximum size (in b) for custom face or sound files
+// Default: 0
+MaxCustomFileSize=0;
+// Server language
+language="English";
+steamLanguage="English";
+// Adapter
+adapter=-1;
+// Windowed mode
+Windowed=0;
+
+3D_Performance=1.000000;

+ 0 - 0
Arma3/cfg/lgsm-default.cfg → Arma3/cfg/lgsm-default.server.cfg


+ 1 - 1
BladeSymphony/bsserver

@@ -78,7 +78,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
CounterStrike/csserver

@@ -77,7 +77,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
CounterStrikeConditionZero/csczserver

@@ -77,7 +77,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
CounterStrikeGlobalOffensive/csgoserver

@@ -95,7 +95,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
CounterStrikeSource/cssserver

@@ -78,7 +78,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
DayOfDefeat/dodserver

@@ -77,7 +77,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
DayOfDefeatSource/dodsserver

@@ -78,7 +78,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 0 - 0
HalfLifeDeathmatchClassic/cfg/lgsm-default.cfg → DeathmatchClassic/cfg/lgsm-default.cfg


+ 97 - 0
DeathmatchClassic/dmcserver

@@ -0,0 +1,97 @@
+#!/bin/bash
+# Deathmatch Classic
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: http://gameservermanagers.com
+# Version: 150315
+
+#### Variables ####
+
+# Notification Email
+# (on|off)
+emailnotification="off"
+email="email@example.com"
+
+# Steam login
+steamuser="anonymous"
+steampass=""
+
+# Start Variables
+defaultmap="dcdm5"
+maxplayers="16"
+port="27015"
+clientport="27005"
+ip="0.0.0.0"
+
+# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2
+fn_parms(){
+parms="-game dmc -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}"
+}
+
+#### Advanced Variables ####
+
+# Steam
+appid="90 +app_set_config 90 mod dmc"
+
+# Server Details
+servicename="dmc-server"
+gamename="Deathmatch Classic"
+engine="goldsource"
+
+# Directories
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+selfname="$(basename $0)"
+lockselfname=".${servicename}.lock"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}/dmc"
+executabledir="${filesdir}"
+executable="./hlds_run"
+servercfgdir="${systemdir}"
+servercfg="${servicename}.cfg"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+defaultcfg="${servercfgdir}/server.cfg"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${systemdir}/logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+
+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
+
+fn_runfunction(){
+# Functions are downloaded and run with this function
+if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
+	cd "${rootdir}"
+	if [ ! -d "functions" ]; then
+		mkdir functions
+	fi
+	cd functions
+	echo -e "loading ${functionfile}...\c"
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	chmod +x "${functionfile}"
+	cd "${rootdir}"
+	sleep 1
+fi
+source "${rootdir}/functions/${functionfile}"
+}
+
+fn_functions(){
+# Functions are defined in fn_functions.
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
+fn_functions
+
+getopt=$1
+fn_getopt

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

@@ -0,0 +1,15 @@
+// Server Name
+hostname "hostname"
+
+// RCON Password
+rcon_password "rconpassword"
+
+// Server Password
+sv_password ""
+
+// Server Logging
+log on
+sv_logbans 1
+sv_logecho 1
+sv_logfile 1
+sv_log_onefile 0

+ 98 - 0
DoubleActionBoogaloo/dabserver

@@ -0,0 +1,98 @@
+#!/bin/bash
+# Double Action: Boogaloo
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: http://gameservermanagers.com
+# Version: 220315
+
+#### Variables ####
+
+# Notification Email
+# (on|off)
+emailnotification="off"
+email="email@example.com"
+
+# Steam login
+steamuser="anonymous"
+steampass=""
+
+# Start Variables
+defaultmap="da_rooftops"
+maxplayers="10"
+port="27015"
+sourcetvport="27020"
+clientport="27005"
+ip="0.0.0.0"
+
+# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server
+fn_parms(){
+parms="-strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
+}
+
+#### Advanced Variables ####
+
+# Steam
+appid="317800"
+
+# Server Details
+servicename="da-server"
+gamename="Double Action: Boogaloo"
+engine="source"
+
+# Directories
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+selfname="$(basename $0)"
+lockselfname=".${servicename}.lock"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}/dab"
+executabledir="${filesdir}"
+executable="./dabds.sh"
+servercfgdir="${systemdir}/cfg"
+servercfg="${servicename}.cfg"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+defaultcfg="${servercfgdir}/server.cfg"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${systemdir}/logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+
+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
+
+fn_runfunction(){
+# Functions are downloaded and run with this function
+if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
+	cd "${rootdir}"
+	if [ ! -d "functions" ]; then
+		mkdir functions
+	fi
+	cd functions
+	echo -e "loading ${functionfile}...\c"
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	chmod +x "${functionfile}"
+	cd "${rootdir}"
+	sleep 1
+fi
+source "${rootdir}/functions/${functionfile}"
+}
+
+fn_functions(){
+# Functions are defined in fn_functions.
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
+fn_functions
+
+getopt=$1
+fn_getopt

BIN
DoubleActionBoogaloo/dependencies/libm.so.6


+ 1 - 1
FistfulOfFrags/fofserver

@@ -78,7 +78,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 2 - 4
GarrysMod/cfg/lgsm-default.cfg

@@ -65,7 +65,7 @@ sv_allowdownload 0
 sbox_noclip 0
 sbox_godmode 0
 sbox_weapons 0
-sbox_plpldamage 0
+sbox_playershurtplayers 0
 sbox_maxprops 100
 sbox_maxragdolls 50
 sbox_maxnpcs 10
@@ -79,10 +79,8 @@ sbox_maxhoverballs 20
 sbox_maxvehicles 1
 sbox_maxbuttons 20
 sbox_maxemitters 0
-sbox_maxspawners 0
-sbox_maxturrets 0
 
 // Misc Config
 exec banned_user.cfg
 exec banned_ip.cfg
-heartbeat
+heartbeat

+ 4 - 3
GarrysMod/gmodserver

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 160315
 
 #### Variables ####
 
@@ -23,6 +23,7 @@ workshopcollectionid=""
 
 # Start Variables
 defaultmap="gm_construct"
+gamemode="sandbox"
 maxplayers="16"
 port="27015"
 sourcetvport="27020"
@@ -31,7 +32,7 @@ ip="0.0.0.0"
 
 # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server
 fn_parms(){
-parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} +host_workshop_collection ${workshopcollectionid} -authkey ${workshopauth} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
+parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} +host_workshop_collection ${workshopcollectionid} -authkey ${workshopauth} +clientport ${clientport} +tv_port ${sourcetvport} +gamemode ${gamemode} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
 }
 
 #### Advanced Variables ####
@@ -83,7 +84,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
HalfLife2Deathmatch/hl2dmserver

@@ -78,7 +78,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 35 - 0
HalfLifeDeathmatch/cfg/lgsm-default.cfg

@@ -0,0 +1,35 @@
+// Server Name
+hostname "hostname"
+
+// RCON Password
+rcon_password "rconpassword"
+
+// Server Password
+sv_password ""
+
+// Server Logging
+log on
+sv_logbans 1
+sv_logecho 1
+sv_logfile 1
+sv_log_onefile 0
+
+// disable autoaim
+sv_aim 0
+
+// disable clients' ability to pause the server
+pausable 0
+
+// maximum client movement speed
+sv_maxspeed 320
+
+// 20 minute timelimit
+mp_timelimit 20
+
+// cheats off
+sv_cheats 0
+
+// load ban files
+exec listip.cfg
+exec banned.cfg
+

+ 7 - 7
HalfLifeDeathmatchClassic/hldmcserver → HalfLifeDeathmatch/hldmserver

@@ -1,9 +1,9 @@
 #!/bin/bash
-# Half Life: Deathmatch Classic
+# Half Life: Deathmatch
 # Server Management Script
 # Author: Daniel Gibbs
-# Website: http://danielgibbs.co.uk
-# Version: 210115
+# Website: http://gameservermanagers.com
+# Version: 150315
 
 #### Variables ####
 
@@ -34,8 +34,8 @@ parms="-game valve -strictportbind -ip ${ip} -port ${port} +clientport ${clientp
 appid="90"
 
 # Server Details
-servicename="hldmc-server"
-gamename="Half Life: Deathmatch Classic"
+servicename="hldm-server"
+gamename="Half Life: Deathmatch"
 engine="goldsource"
 
 # Directories
@@ -77,7 +77,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1
@@ -94,4 +94,4 @@ fn_runfunction
 fn_functions
 
 getopt=$1
-fn_getopt
+fn_getopt

+ 1 - 1
Insurgency/insserver

@@ -78,7 +78,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
JustCause2/jc2server

@@ -73,7 +73,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
KillingFloor/kfserver

@@ -80,7 +80,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
Left4Dead/l4dserver

@@ -78,7 +78,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
Left4Dead2/l4d2server

@@ -77,7 +77,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
NaturalSelection2/ns2server

@@ -83,7 +83,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 166 - 5
NoMoreRoomInHell/cfg/lgsm-default.cfg

@@ -1,15 +1,176 @@
-// Server Name
+//*********************************************************************************
+//                                                                                *
+//             No More Room in Hell - Community Developed Server.cfg              *
+//                         Version 1.3 - March 7, 2015                            *
+//     Version 1.0: http://avidblur.com/nmrih/server.cfg                          *
+//     Version 1.2: http://fastdl.zombiegaming.net/nmrih/cfg/server.cfg           *
+//     Version 1.3: http://gameservermanagers.com/nmrih/server.cfg                *
+//                                                                                *
+// ********************************************************************************
+
+// ............................ Basic Server Settings ............................. //
+
+// The name of your server as you want it to show up on NMRiH's Server Browser
 hostname "hostname"
 
-// RCON Password
+// The contact email for your main server admin
+sv_contact "email@example.com"
+
+// Password for rcon (remote connection), can be left blank for no RCon, it's recommended that you make a secure password.
+// Need a secure password? Check out https://www.grc.com/passwords.htm for automatically generated ones
 rcon_password "rconpassword"
 
-// Server Password
+// Makes your server private so only people with the password can play on it
 sv_password ""
 
-// Server Logging
+// The region of the world this server will report as being located in
+// -1 = World
+//  0 = US East Coast
+//  1 = US West Coast
+//  2 = South America
+//  3 = Europe
+//  4 = Asia
+//  5 = Australia
+//  6 = Middle East
+//  7 = Africa
+sv_region -1
+
+// Is this server running on LAN or is it accessable to the world wide web?
+//  0 = Internet
+//  1 = Local Area Network
+sv_lan 0
+
+// Enable communication over voice via microphone
+sv_voiceenable 1
+
+// Players can hear all other players, no team restrictions 0=off 1=on
+sv_alltalk 1
+
+//Gameplay can be chosen between classic/normal, sv_difficulty casual is casual, sv_difficulty normal is normal
+sv_difficulty casual
+
+// Time spend on a single map (in minutes) before switching to a new one automatically
+mp_timelimit 45
+
+// Maximum number of rounds to spend on a map before moving to the next one
+//mp_maxrounds 0
+
+// Name of the .txt file containing a list of maps the server should cycle through
+// mapcycle.txt - All maps
+// mapcycle_objective.txt - Objective maps only
+// mapcycle_survival.txt - Survival maps only
+mapcyclefile "mapcycle.txt"
+
+// A comma seperated list of tags that will show up in the server browser & make it easier for users to find the server they're looking for
+// "Official" tags:
+// custom - If your server is running custom gameplay settings/configs
+// objective - If your server only cycles through objective maps
+// survival - If your server only cycles through survival maps
+// IE: sv_tags "example1, example2, example3"
+sv_tags "objective, survival, vanilla"
+
+// ............................ Download Settings .................................. //
+
+// Allow clients to upload sprays etc (NMRiH has sprays disabled by default, so 0 might be the best option)
+sv_allowupload 0
+
+// Allow clients to download files
+sv_allowdownload 1
+
+// Maximum file size allowed for downloading individual maps/textures etc (Calculated in MB)
+net_maxfilesize 64
+
+// Allow downloading of maps/textures/etc from a website for faster download speeds!
+// NOTE: If left blank (sv_downloadurl "") connecting clients will download custom maps etc directly from your Gameserver.
+//
+// Example: 1 - Game server has a map called "nmo_example.bsp" located in the map folder
+//          2 - Web server has the exact same "nmo_example.bsp" file located at "http://www.yourwebsite.com/nmrih/maps/nmo_example.bsp"
+//          3 - Therefore, sv_downloadurl should be set to "http://www.yourwebsite.com/nmrih/"
+//
+sv_downloadurl ""
+
+
+// ............................ Performance Settings .............................. //
+
+// Sets a limit to the frame rate that the server runs at (Set a framerate your server can consistently manage)
+fps_max 66
+
+// Min bandwidth rate allowed on server, 0 = Unlimited
+sv_minrate 0
+
+// Max bandwidth rate allowed on server, 0 = Unlimited
+sv_maxrate 60000
+
+//
+net_splitpacket_maxrate 60000
+
+sv_parallel_packentities 1
+
+sv_parallel_sendsnapshot 1
+
+// Use a high priority thread to send queued packets out instead of sending them each frame.
+net_queued_packet_thread 1
+
+// Max # of seconds we can wait for next packets to be sent based on rate setting (0 == no limit).
+net_maxcleartime 0.01
+
+// Minimum updates per second that the server will allow
+sv_minupdaterate 66
+
+// Maximum updates per second that the server will allow
+sv_maxupdaterate 66
+
+// Minimum commands per second that the server will allow
+sv_mincmdrate 66
+
+// Maximum commands per second that the server will allow
+sv_maxcmdrate 66
+
+sv_client_min_interp_ratio 0
+
+sv_client_max_interp_ratio 4
+
+sv_client_cmdrate_difference 0
+
+// This can be used to force the value of cl_predict for connected clients (only while they are connected).
+// -1 = let clients set cl_predict to anything
+//  0 = force cl_predict to 0
+//  1 = force cl_predict to 1
+sv_client_predict 1
+
+// .............................. Additional Settings .............................. //
+
+// Allow the use of the "wait" command by clients? (Best left disabled to prevent the abuse of scripts - 0)
+sv_allow_wait_command 0
+
+// Enable logging? (off/on)
 log on
 sv_logbans 1
 sv_logecho 1
 sv_logfile 1
-sv_log_onefile 0
+sv_log_onefile 0
+
+// ............................... Sourcemod Settings .............................. //
+
+
+// ********************************************************************************
+//                                                                                *
+//                Advanced Server Settings (Best left untouched!)                 *
+//                                                                                *
+// ********************************************************************************
+
+exec banned_user.cfg
+exec banned_ip.cfg
+
+//These commands will run on map change, sometimes a crash may wipe a recent ban from your banlist, this minimises that issue
+writeid
+writeip
+
+//**********************************************************************************************************
+// Master Server Settings
+//**********************************************************************************************************
+sv_master_legacy_mode 0                 // Disable legacy mode, since steam master servers won't support it anymore
+heartbeat                               // Send heartbeat that this server is ready. Should be the last line of the config
+//**********************************************************************************************************
+
+//-----End of Server.cfg-----

+ 1 - 1
NoMoreRoomInHell/nmrihserver

@@ -78,7 +78,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 35 - 0
OpposingForce/cfg/lgsm-default.cfg

@@ -0,0 +1,35 @@
+// Server Name
+hostname "hostname"
+
+// RCON Password
+rcon_password "rconpassword"
+
+// Server Password
+sv_password ""
+
+// Server Logging
+log on
+sv_logbans 1
+sv_logecho 1
+sv_logfile 1
+sv_log_onefile 0
+
+// disable autoaim
+sv_aim 0
+
+// disable clients' ability to pause the server
+pausable 0
+
+// maximum client movement speed
+sv_maxspeed 320
+
+// 20 minute timelimit
+mp_timelimit 20
+
+// cheats off
+sv_cheats 0
+
+// load ban files
+exec listip.cfg
+exec banned.cfg
+

+ 97 - 0
OpposingForce/opforserver

@@ -0,0 +1,97 @@
+#!/bin/bash
+# Half-Life: Opposing Force
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: http://danielgibbs.co.uk
+# Version: 210115
+
+#### Variables ####
+
+# Notification Email
+# (on|off)
+emailnotification="off"
+email="email@example.com"
+
+# Steam login
+steamuser="anonymous"
+steampass=""
+
+# Start Variables
+defaultmap="op4_bootcamp"
+maxplayers="16"
+port="27015"
+clientport="27005"
+ip="0.0.0.0"
+
+# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2
+fn_parms(){
+parms="-game gearbox -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}"
+}
+
+#### Advanced Variables ####
+
+# Steam
+appid="90 +app_set_config 90 mod gearbox"
+
+# Server Details
+servicename="opfor-server"
+gamename="Half-Life: Opposing Force"
+engine="goldsource"
+
+# Directories
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+selfname="$(basename $0)"
+lockselfname=".${servicename}.lock"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}/gearbox"
+executabledir="${filesdir}"
+executable="./hlds_run"
+servercfgdir="${systemdir}"
+servercfg="${servicename}.cfg"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+defaultcfg="${servercfgdir}/server.cfg"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${systemdir}/logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+
+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
+
+fn_runfunction(){
+# Functions are downloaded and run with this function
+if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
+	cd "${rootdir}"
+	if [ ! -d "functions" ]; then
+		mkdir functions
+	fi
+	cd functions
+	echo -e "loading ${functionfile}...\c"
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	chmod +x "${functionfile}"
+	cd "${rootdir}"
+	sleep 1
+fi
+source "${rootdir}/functions/${functionfile}"
+}
+
+fn_functions(){
+# Functions are defined in fn_functions.
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
+fn_functions
+
+getopt=$1
+fn_getopt

+ 36 - 28
README.md

@@ -1,38 +1,46 @@
-<h1>Linux Game Server Manager - <a href="https://github.com/dgibbs64/linuxgameservers/issues?q=is%3Aopen+-label%3A%22non+script+issue%22+-label%3A%22server+request%22+-label%3Aenhancement">Issues</a></h1>
-
-<a href="http://danielgibbs.co.uk/scripts"><img src="http://danielgibbs.co.uk/wp-content/uploads/2014/02/linux-game-server-manager-full.png" alt="linux game server manager" width="600" /></a>
+<h1>Linux Game Server Managers_ <a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Install</a></h1>
+<a href="http://gameservermanagers.com"><img src="http://wiki.gameservermanagers.com/w//images/9/9d/Lgsm_full-2.png" alt="linux Game Server Managers" width="600" /></a>
 
 The Linux Game Server Managers are command line tools for quick, simple deployment and management of various dedicated game servers and voice comms servers.
-
 <h2>Main features</h2>
-
 <ul>
-	<li>Server installer (SteamCMD).</li>
-	<li>Start/Stop/Restart server.</li>
-	<li>Server update (SteamCMD).</li>
-	<li>Server monitor (including email notification).</li>
-	<li>Server backup.</li>
-	<li>Server console.</li>
+	<li>Backup</li>
+	<li>Console</li>
+	<li>Details</li>
+	<li>Installer (SteamCMD)</li>
+	<li>Monitor (including email notification)</li>
+	<li>Update (SteamCMD)</li>
+	<li>Start/Stop/Restart server</li>
 </ul>
 <h2>Compatibility</h2>
-The Linux Game Server Manager is tested to work on the following Linux systems.
+The Linux Game Server Managers are tested to work on the following Linux distros.
 <ul>
-	<li>Debian based distros (Ubuntu, Mint etc.).</li>
-	<li>Redhat based distros (CentOS, Fedora etc.).</li>
+	<li>Debian based (Ubuntu, Mint etc.).</li>
+	<li>Redhat based (CentOS, Fedora etc.).</li>
+</ul>
+Other distros are likely to work but are not fully tested.
+<h3>Specific Requirements</h3>
+<ul>
+	<li><a href="http://wiki.gameservermanagers.com/wiki/Glibc">GLIBC</a> >= 2.15 recommended [<a href="http://wiki.gameservermanagers.com/wiki/Glibc#Server_Requirements">specific requirements</a>].</li>
+	<li><a href="http://wiki.gameservermanagers.com/wiki/Tmux">Tmux</a> >= 1.6 recommended (Avoid Tmux 1.8).</li>
 </ul>
-The scripts are written in BASH and Python and would probably work with other distros.
-
-<h2>"I've found a bug", "Something isn't working for me"</h2>
-Before submitting an issue about a script error, try deleting the "functions" folder located where the script is. (ie. /home/tf2/tf2server would be /home/tf2/functions)
-This will grab the latest scripts from the repository meaning that if we've already fixed the bug you would be asking about, you'd get the patch that way.
-
 <h2>FAQ</h2>
-<strong>Q: How do I install a script on my Linux server?</strong>
-- Full documentation and instructions can be found here.
-<b><a href="http://danielgibbs.co.uk/scripts">http://danielgibbs.co.uk/lgsm</a></b>
-
-<strong>Q: There's a feature that I'd like to see implemented, how can I get it put in?</strong>
-- Create an issue report and we'll tag it as an enhancement, if you are able to program in Bash feel free to send us a pull request, it's much likely to be included as well as faster that way.
+All FAQ can be found here.
 
-<strong>Q: Can you go on my server through SSH and install the server for me?</strong>
-- Unfortunately, no, the scripts are very easy to install and shouldn't require much help in the first place. If there's a error that you're experiencing, send us an issue report.
+<a href="http://wiki.gameservermanagers.com/wiki/FAQ">http://wiki.gameservermanagers.com/wiki/FAQ</a>
+<h2>Donate</h2>
+If you want to donate to the project you can via PayPal, Flattr or Gratipay. I have had a may kind people show there support by sending me a donation. Any donations you send help cover my server costs and buy me a drink. Cheers!
+<ul>
+<li><a href="http://gameservermanagers.com/#donate">Donate</a></li>
+</ul>
+<h2>Useful Links</h2>
+<ul>
+	<li><a href="http://gameservermanagers.com">Homepage</li>
+	<li><a href="http://gameservermanagers.com">Wiki</li>
+	<li><a href="https://github.com/dgibbs64/linuxgsm">GitHub Code</li>
+	<li><a href="https://github.com/dgibbs64/linuxgsm/issues">GitHub Issues</li>
+	<li><a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Steam Group</li>
+	<li><a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Twitter</li>
+	<li><a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Facebook</li>
+	<li><a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Google+</li>
+</ul>

+ 1 - 1
RedOrchestra/roserver

@@ -76,7 +76,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 35 - 0
Ricochet/cfg/lgsm-default.cfg

@@ -0,0 +1,35 @@
+// Server Name
+hostname "hostname"
+
+// RCON Password
+rcon_password "rconpassword"
+
+// Server Password
+sv_password ""
+
+// Server Logging
+log on
+sv_logbans 1
+sv_logecho 1
+sv_logfile 1
+sv_log_onefile 0
+
+// disable autoaim
+sv_aim 0
+
+// disable clients' ability to pause the server
+pausable 0
+
+// maximum client movement speed
+sv_maxspeed 320
+
+// 20 minute timelimit
+mp_timelimit 20
+
+// cheats off
+sv_cheats 0
+
+// load ban files
+exec listip.cfg
+exec banned.cfg
+

+ 97 - 0
Ricochet/ricochetserver

@@ -0,0 +1,97 @@
+#!/bin/bash
+# Ricochet
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: http://danielgibbs.co.uk
+# Version: 210115
+
+#### Variables ####
+
+# Notification Email
+# (on|off)
+emailnotification="off"
+email="email@example.com"
+
+# Steam login
+steamuser="anonymous"
+steampass=""
+
+# Start Variables
+defaultmap="rc_arena"
+maxplayers="16"
+port="27015"
+clientport="27005"
+ip="0.0.0.0"
+
+# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2
+fn_parms(){
+parms="-game ricochet -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}"
+}
+
+#### Advanced Variables ####
+
+# Steam
+appid="90 +app_set_config 90 mod ricochet"
+
+# Server Details
+servicename="ricochet-server"
+gamename="Ricochet"
+engine="goldsource"
+
+# Directories
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+selfname="$(basename $0)"
+lockselfname=".${servicename}.lock"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}/ricochet"
+executabledir="${filesdir}"
+executable="./hlds_run"
+servercfgdir="${systemdir}"
+servercfg="${servicename}.cfg"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+defaultcfg="${servercfgdir}/server.cfg"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${systemdir}/logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+
+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
+
+fn_runfunction(){
+# Functions are downloaded and run with this function
+if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
+	cd "${rootdir}"
+	if [ ! -d "functions" ]; then
+		mkdir functions
+	fi
+	cd functions
+	echo -e "loading ${functionfile}...\c"
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	chmod +x "${functionfile}"
+	cd "${rootdir}"
+	sleep 1
+fi
+source "${rootdir}/functions/${functionfile}"
+}
+
+fn_functions(){
+# Functions are defined in fn_functions.
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
+fn_functions
+
+getopt=$1
+fn_getopt

+ 2 - 2
SeriousSam3BFE/ss3sserver

@@ -19,7 +19,7 @@ steampass="password"
 # Start Variables
 ip="0.0.0.0"
 
-# https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/SeriousSam3BFE/help/DedicatedServer_Readme.txt
+# https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/SeriousSam3BFE/help/DedicatedServer_Readme.txt
 fn_parms(){
 parms="+ip ${ip} +logfile ${gamelog} +exec ${servercfgfullpath}"
 }
@@ -74,7 +74,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
StarBound/sbserver

@@ -73,7 +73,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
TeamFortress2/tf2server

@@ -78,7 +78,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
TeamFortressClassic/tfcserver

@@ -77,7 +77,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 1 - 1
TeamSpeak3/ts3server

@@ -52,7 +52,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 3 - 3
UnrealTournament2004/ut2k4server

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 070215
 
 #### Variables ####
 
@@ -27,7 +27,7 @@ engine="unreal2"
 
 # Directories
 rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-selfname="$(basename 0)"
+selfname="$(basename $0)"
 lockselfname=".${servicename}.lock"
 filesdir="${rootdir}/serverfiles"
 systemdir="${filesdir}/System"
@@ -67,7 +67,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 3 - 3
UnrealTournament99/ut99server

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 070215
 
 #### Variables ####
 
@@ -29,7 +29,7 @@ engine="unreal"
 
 # Directories
 rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-selfname="$(basename 0)"
+selfname="$(basename $0)"
 lockselfname=".${servicename}.lock"
 filesdir="${rootdir}/serverfiles"
 systemdir="${filesdir}/System"
@@ -66,7 +66,7 @@ if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
 	fi
 	cd functions
 	echo -e "loading ${functionfile}...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
 	chmod +x "${functionfile}"
 	cd "${rootdir}"
 	sleep 1

+ 3 - 2
functions/fn_check_tmux

@@ -2,7 +2,7 @@
 # LGSM fn_check_tmux function
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 140215
+# Version: 110315
 
 # Checks if tmux is installed as too many users do not RTFM or know how to use Google.
 
@@ -12,6 +12,7 @@ if [ -z "$(command -v tmux)" ]; then
 	fn_scriptlog "Tmux is not installed"
 	echo "	* Tmux is required to run this server."
 	# Suitable passive agressive message
-	echo "	* Please see 'Prerequisites' section of installation instructions."
+	echo "	* Please see the the following link."
+	echo "  * http://gameservermanagers.com/dependencies"
 	exit
 fi

+ 3 - 1
functions/fn_getopt

@@ -2,7 +2,7 @@
 # LGSM fn_getopt function
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 080214
+# Version: 150314
 
 # Description: getopt arguments.
 
@@ -56,6 +56,8 @@ case "$getopt" in
 		fn_stop;;
 	restart)
 		fn_restart;;
+	update)
+		fn_update_check;;
 	backup)
 		fn_backup;;
 	monitor)

+ 2 - 2
functions/fn_install

@@ -2,7 +2,7 @@
 # LGSM fn_install function
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 080215
+# Version: 060315
 
 fn_check_root
 fn_install_header
@@ -40,6 +40,6 @@ elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then
 elif [ "${gamename}" == "Unreal Tournament 2004" ]; then
 	fn_install_ut2k4fix
 elif [ "${gamename}" == "Unreal Tournament 99" ]; then
-	fn_install_99fix
+	fn_install_ut99fix
 fi
 fn_install_complete

+ 37 - 24
functions/fn_install_config

@@ -1,11 +1,13 @@
 #!/bin/bash
 # LGSM fn_server function
 # Author: Daniel Gibbs
-# Website: http://danielgibbs.co.uk
-# Version: 210115
+# Website: http://gameservermanagers.com
+# Version: 220315
 
 fn_arma3config(){
-cp -v lgsm-default.cfg "${servercfgfullpath}"
+mkdir -pv "${servercfgdir}"
+mv -v lgsm-default.server.cfg "${servercfgfullpath}"
+mv -v lgsm-default.network.cfg "${networkcfgfullpath}"
 sleep 1
 echo ""
 }
@@ -131,72 +133,83 @@ echo ""
 echo "Creating Configs"
 echo "================================="
 sleep 1
-cd "${servercfgdir}"
+if [ "${gamename}" == "ARMA 3" ]; then
+	cd "${systemdir}"
+else
+	cd "${servercfgdir}"
+fi
+	#statements
 if [ "${gamename}" == "7 Days To Die" ]; then
 	fn_unity3dconfig
 elif [ "${gamename}" == "ARMA 3" ]; then
-	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/Arma3/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	echo -e "downloading lgsm-default.server.cfg & lgsm-default.network.cfg...\c"
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/Arma3/cfg/lgsm-default.server.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/Arma3/cfg/lgsm-default.network.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_arma3config
 elif [ "${gamename}" == "Blade Symphony" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/BladeSymphony/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/BladeSymphony/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_goldsourceconfig
 elif [ "${gamename}" == "Counter Strike 1.6" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/CounterStrike/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/CounterStrike/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_goldsourceconfig
 elif [ "${gamename}" == "Counter Strike: Condition Zero" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/CounterStrikeConditionZero/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/CounterStrikeConditionZero/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_goldsourceconfig
 elif [ "${gamename}" == "Counter Strike: Global Offensive" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/CounterStrikeGlobalOffensive/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Counter Strike: Source" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/CounterStrikeSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/CounterStrikeSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Day of Defeat" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/DayOfDefeat/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/DayOfDefeat/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_goldsourceconfig
 elif [ "${gamename}" == "Day of Defeat: Source" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/DayOfDefeatSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/DayOfDefeatSource/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	sleep 1
+	fn_sourceconfig
+elif [ "${gamename}" == "Double Action: Boogaloo" ]; then
+	echo -e "downloading lgsm-default.cfg...\c"
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/DoubleActionBoogaloo/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Fistful of Frags" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/FistfulOfFrags/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/FistfulOfFrags/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Garry's Mod" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/GarrysMod/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/GarrysMod/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Half Life 2: Deathmatch" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/HalfLife2Deathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/HalfLife2Deathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Half Life: Deathmatch Classic" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/HalfLifeDeathmatchClassic/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/HalfLifeDeathmatchClassic/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_goldsourceconfig
 elif [ "${gamename}" == "Insurgency" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/Insurgency/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/Insurgency/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Just Cause 2" ]; then
@@ -205,17 +218,17 @@ elif [ "${gamename}" == "Killing Floor" ]; then
 	fn_unreal2config
 elif [ "${gamename}" == "Left 4 Dead" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/Left4Dead/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/Left4Dead/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Left 4 Dead 2" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/Left4Dead2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/Left4Dead2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "No More Room in Hell" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/NoMoreRoomInHell/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/NoMoreRoomInHell/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Natural Selection 2" ]; then
@@ -226,17 +239,17 @@ elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then
 	fn_unreal2config
 elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then
 	echo -e "downloading lgsm-default.ini...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/SeriousSam3BFE/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/SeriousSam3BFE/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_serious3config
 elif [ "${gamename}" == "Team Fortress 2" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/TeamFortress2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/TeamFortress2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
 elif [ "${gamename}" == "Team Fortress Classic" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/TeamFortressClassic/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/TeamFortressClassic/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_goldsourceconfig
 elif [ "${gamename}" == "Unreal Tournament 2004" ]; then

+ 17 - 11
functions/fn_install_glibcfix

@@ -1,8 +1,8 @@
 #!/bin/bash
 # LGSM fn_install_glibcfix function
 # Author: Daniel Gibbs
-# Website: http://danielgibbs.co.uk
-# Version: 210115
+# Website: http://gameservermanagers.com
+# Version: 220315
 
 fn_glibcfixmsg(){
 echo ""
@@ -52,42 +52,48 @@ elif [ "$(ldd --version | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" -lt 215
 		glibcversion="2.15"
 		fn_glibcfixmsg
 		cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
+	# Double Action: Boogaloo
+	elif [ "${gamename}" == "Double Action: Boogaloo" ]; then
+		glibcversion="2.15"
+		fn_glibcfixmsg
+		cd "${filesdir}"
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/blob/master/DoubleActionBoogaloo/dependencies/libm.so.6
 	# Fistful of Frags
 	elif [ "${gamename}" == "Fistful of Frags" ]; then
 		glibcversion="2.15"
 		fn_glibcfixmsg
 		cd "${filesdir}"
-		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/FistfulOfFrags/dependencies/libm.so.6
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/FistfulOfFrags/dependencies/libm.so.6
 	# Garry's Mod
 	elif [ "${gamename}" == "Garry's Mod" ]; then
 		glibcversion="2.15"
 		fn_glibcfixmsg
 		cd "${filesdir}/bin"
-		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/GarrysMod/dependencies/libc.so.6
-		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/GarrysMod/dependencies/libm.so.6
-		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/GarrysMod/dependencies/libpthread.so.0
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/GarrysMod/dependencies/libc.so.6
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/GarrysMod/dependencies/libm.so.6
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/GarrysMod/dependencies/libpthread.so.0
 		cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
 	# Insurgency
 	elif [ "${gamename}" == "Insurgency" ]; then
 		glibcversion="2.15"
 		fn_glibcfixmsg
 		cd "${filesdir}/bin"
-		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libc.so.6
-		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/librt.so.1
-		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libpthread.so.0
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libc.so.6
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/librt.so.1
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libpthread.so.0
 	# Natural Selection 2
 	elif [ "${gamename}" == "Natural Selection 2" ]; then
 		glibcversion="2.15"
 		fn_glibcfixmsg
 		cd "${filesdir}"
-		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/NaturalSelection2/dependencies/libm.so.6
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/NaturalSelection2/dependencies/libm.so.6
 		cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
 	# No More Room in Hell
 	elif [ "${gamename}" == "No More Room in Hell" ]; then
 		glibcversion="2.15"
 		fn_glibcfixmsg
 		cd "${filesdir}"
-		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/NoMoreRoomInHell/dependencies/libm.so.6
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/NoMoreRoomInHell/dependencies/libm.so.6
 		cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
 	# if Glibc less than 1.13
 	elif [ "$(ldd --version | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" -lt 213 ]; then

+ 4 - 1
functions/fn_install_ut99fix

@@ -2,7 +2,7 @@
 # LGSM fn_install_ut99fix function
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 070215
 
 echo "Applying ${gamename} Server Fixes"
 echo "================================="
@@ -16,6 +16,9 @@ echo "MasterServerPort=27900"
 echo "Region=0"
 }|tee -a "${servercfgfullpath}" > /dev/null 2>&1
 sleep 1
+echo "removing dead gamespy.com master server."
+sed -i '/master0.gamespy.com/d' "${servercfgfullpath}"
+sleep 1
 echo "removing dead mplayer.com master server."
 sed -i '/master.mplayer.com/d' "${servercfgfullpath}"
 sleep 1

+ 3 - 1
functions/fn_monitor

@@ -69,8 +69,10 @@ if [ ! -f "${lockselfname}" ]; then
 	echo "To enable monitor run ${selfname} start"
 	exit
 fi
+
+
 updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
-if [ "${updatecheck}" = "0" ]; then
+if [ "${updatecheck}" = "0" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament 2004" ]; then
 	fn_printdots "Checking session: CHECKING"
 	fn_scriptlog "Checking session: CHECKING"
 	sleep 1

+ 12 - 5
functions/fn_monitor_query

@@ -1,8 +1,8 @@
 #!/bin/bash
 # LGSM fn_monitor_query function
 # Author: Daniel Gibbs
-# Website: http://danielgibbs.co.uk
-# Version: 210115
+# Website: http://gameservermanagers.com
+# Version: 220315
 
 # Description: uses gsquery.py to directly query the server.
 # Detects if the server has frozen.
@@ -35,9 +35,16 @@ if [ -f gsquery.py ]; then
 		sleep 1
 		echo -en "\n"
 		if [[ -z "${secondquery}" ]]; then
-			fn_printinfo "Waiting 30 seconds to re-query"
-			fn_scriptlog "Waiting 30 seconds to re-query"
-			sleep 30
+			if [ "${engine}" == "unreal2" ]; then
+				# unreal 2: Map change can take around 60 seconds
+				fn_printinfo "Waiting 60 seconds to re-query"
+				fn_scriptlog "Waiting 60 seconds to re-query"
+				sleep 60
+			else
+				fn_printinfo "Waiting 30 seconds to re-query"
+				fn_scriptlog "Waiting 30 seconds to re-query"
+				sleep 30
+			fi
 			secondquery=1
 			fn_monitor_query
 		fi

+ 188 - 103
functions/fn_update_check

@@ -2,20 +2,115 @@
 # LGSM fn_update_check function
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 150315
 
 # Description: Checks if a server update is available.
 
 local modulename="Update"
 
+### SteamCMD Update Checker ###
+
+fn_appmanifestinfo(){
+	appmanifestfile=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf")
+	appmanifestfilewc=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf"|wc -l)
+}
+
+fn_appmanifestcheck(){
+fn_appmanifestinfo
+# Multiple or no matching appmanifest files may sometimes be available.
+# This is an error is corrected below if required.
+if [ "${appmanifestfilewc}" -ge "2" ]; then
+	sleep 1
+	fn_printwarn "Multiple appmanifest_${appid}.acf files found"
+	fn_scriptlog "Warning! Multiple appmanifest_${appid}.acf files found"
+	sleep 2
+	fn_printdots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files"
+	sleep 1
+	for appfile in ${appmanifestfile}; do
+		rm "${appfile}"
+	done
+	appmanifestfilewc1="${appmanifestfilewc}"
+	fn_appmanifestinfo
+	if [ "${appmanifestfilewc}" -ge "2" ]; then
+		fn_printfail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files"
+		fn_scriptlog "Failure! Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files"
+		sleep 1
+		echo ""
+		echo "	Check user permissions"
+		for appfile in ${appmanifestfile}; do
+			echo "	${appfile}"
+		done
+		exit
+	else
+		sleep 1
+		fn_printok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
+		fn_scriptlog "Success! Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
+		sleep 1
+		fn_printinfonl "Forcing update to correct issue"
+		fn_scriptlog "Forcing update to correct issue"
+		sleep 1
+		fn_update_dl
+		fn_update_check
+	fi
+elif [ "${appmanifestfilewc}" -eq "0" ]; then
+	fn_printwarn "No appmanifest_${appid}.acf found"
+	fn_scriptlog "Warning! No appmanifest_${appid}.acf found"
+	sleep 2
+	fn_printinfonl "Forcing update to correct issue"
+	fn_scriptlog "Forcing update to correct issue"
+	sleep 1
+	fn_update_dl
+	fn_update_check
+fi
+}
+
+fn_logupdaterequest(){
+# Checks for server update requests from server logs.
+echo ""
+fn_printdots "Checking for update: Server logs"
+sleep 1
+fn_printok "Checking for update: Server logs"
+fn_scriptlog "Checking for update: Server logs"
+sleep 1
+requestrestart=$(grep -sc "MasterRequestRestart" "${consolelog}")
+if [ "${requestrestart}" -ge "1" ]; then
+	fn_printoknl "Server requesting update"
+	sleep 1
+	echo ""
+	echo -ne "Applying update.\r"
+	sleep 1
+	echo -ne "Applying update..\r"
+	sleep 1
+	echo -ne "Applying update...\r"
+	sleep 1
+	echo -ne "\n"
+	if [ ! -z "${norestart}" ]; then
+		fn_update_dl
+	else
+		fn_stop
+		fn_update_dl
+		fn_start
+	fi
+else
+	fn_printok "Checking for update: Server logs: No update requested"
+	sleep 1
+fi
+echo ""
+}
+
 fn_steamcmdcheck(){
+fn_appmanifestcheck
 # Checks for server update from SteamCMD
 fn_printdots "Checking for update: SteamCMD"
 fn_scriptlog "Checking for update: SteamCMD"
 sleep 1
+
+# Gets currentbuild
 currentbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\  -f3)
+
+# Gets availablebuild info
 cd "${rootdir}/steamcmd"
-availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_print ${appid} +app_info_print ${appid} +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\  -f3)
+availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\  -f3)
 if [ -z "${availablebuild}" ]; then
 	fn_printfail "Checking for update: SteamCMD"
 	fn_scriptlog "Failure! Checking for update: SteamCMD"
@@ -29,30 +124,6 @@ else
 	sleep 1
 fi
 
-if [ -z "${availablebuild}" ]; then
-	# Checks for server update from SteamDB.info if SteamCMD fails
-	echo ""
-	fn_printdots "Checking for update: SteamDB.info"
-	fn_scriptlog "Checking for update: SteamDB.info"
-	availablebuild=$(wget -qO- "http://steamdb.info/api/GetRawDepots/?appid=${appid}" | sed 's/\\n/\n/g' | grep -EA 1000 "^\s+\[branches\]" | grep -EA 5 "^\s+\[public\]" | grep -m 1 -EB 10 "^\s+\)$" | grep -E "^\s+\[buildid\]\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\  -f4)
-	sleep 1
-	if [ -z "${availablebuild}" ]; then
-		fn_printfail "Checking for update: SteamDB.info"
-		fn_scriptlog "Failure! Checking for update: SteamDB.info"
-		sleep 1
-		fn_printfail "Checking for update: SteamDB.info: Not returning version info"
-		fn_scriptlog "Failure! Checking for update: SteamDB.info: Not returning version info"
-		sleep 2
-	else
-		fn_printok "Checking for update: SteamDB.info"
-		fn_scriptlog "Success! Checking for update: SteamDB.info"
-		sleep 1
-	fi
-fi
-if [ -z "${availablebuild}" ]; then
-	fn_logupdaterequest
-fi
-
 if [ "${currentbuild}" -ne "${availablebuild}" ]; then
 	echo -e "\n"
 	echo -e "Update available:"
@@ -94,96 +165,110 @@ else
 fi
 }
 
-fn_logupdaterequest(){
-# Checks for server update requests from server logs.
-echo ""
-fn_printdots "Checking server logs for update requests"
-sleep 1
-fn_printok "Checking server logs for update requests"
-fn_scriptlog "Checking server logs for update requests"
+### END SteamCMD Update Checker ###
+
+fn_teamspeak3_check(){
+# Checks for server update from teamspeak.com using a mirror dl.4players.de
+fn_printdots "Checking for update: teamspeak.com"
+fn_scriptlog "Checking for update: teamspeak.com"
 sleep 1
-requestrestart=$(grep -sc "MasterRequestRestart" "${consolelog}")
-if [ "${requestrestart}" -ge "1" ]; then
-	fn_printoknl "Server requesting update"
-	sleep 1
-	echo ""
-	echo -ne "Applying update.\r"
-	sleep 1
-	echo -ne "Applying update..\r"
-	sleep 1
-	echo -ne "Applying update...\r"
+
+# Gets currentbuild info
+# Checks currentbuild info is available, if fails a server restart will be forced to generate logs
+if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
+	fn_printfail "Checking for update: teamspeak.com"
+	fn_scriptlog "Checking for update: teamspeak.com"
 	sleep 1
-	echo -ne "\n"
-	if [ ! -z "${norestart}" ]; then
-		fn_update_dl
-	else
-		fn_stop
-		fn_update_dl
-		fn_start
+	fn_printfailnl "Checking for update: teamspeak.com: No logs with server version found"
+	fn_scriptlog "Failure! Checking for update: teamspeak.com: No logs with server version found"
+	sleep 2
+	fn_printinfonl "Checking for update: teamspeak.com: Forcing server restart"
+	fn_scriptlog "Checking for update: teamspeak.com: Forcing server restart"
+	sleep 2
+	./${selfname} restart
+	sleep 2
+	# If still failing will exit
+	if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
+		fn_printfailnl "Checking for update: teamspeak.com: Still No logs with server version found"
+		fn_scriptlog "Failure! Checking for update: teamspeak.com: Still No logs with server version found"
+		exit
 	fi
-else
-	fn_printok "No update request detected"
-	sleep 1
 fi
-echo ""
-exit
-}
+currentbuild=$(cat $(find ./* -name 'ts3server*_0.log' 2> /dev/null | sort | egrep -E -v '${rootdir}/.ts3version' | tail -1) | egrep -o 'TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | egrep -o '((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}')
 
+# Gets the teamspeak server architecture
+ts3arch=$(ls $(find ${filesdir}/ -name 'ts3server_*_*' 2> /dev/null | grep -v 'ts3server_minimal_runscript.sh' | sort | tail -1) | egrep -o '(amd64|x86)' | tail -1)
 
-fn_appmanifestinfo(){
-	appmanifestfile=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf")
-	appmanifestfilewc=$(find "${filesdir}" -type f -name "appmanifest_${appid}.acf"|wc -l)
-}
+# Gets availablebuild info
+wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | egrep -o '<a href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers.tmp
+# Finds directory with most recent server version.
+while read ts3_version_number; do
+	wget --spider -q "http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux-${ts3arch}-${ts3_version_number}.tar.gz"
+	if [[ $? == 0 ]]; then
+		availablebuild="${ts3_version_number}"
+		# Break while-loop, if the latest release could be found
+		break
+	fi
+done < .ts3_version_numbers.tmp
+rm .ts3_version_numbers.tmp
 
-fn_appmanifestcheck(){
-fn_appmanifestinfo
-# Multiple or no matching appmanifest files may sometimes be available.
-# This is an error is corrected below if required.
-if [ "${appmanifestfilewc}" -ge "2" ]; then
+# Checks availablebuild info is available
+if [ -z "${availablebuild}" ]; then
+	fn_printfail "Checking for update: teamspeak.com"
+	fn_scriptlog "Checking for update: teamspeak.com"
 	sleep 1
-	fn_printwarn "Multiple appmanifest_${appid}.acf files found"
-	fn_scriptlog "Warning! Multiple appmanifest_${appid}.acf files found"
+	fn_printfail "Checking for update: teamspeak.com: Not returning version info"
+	fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info"
 	sleep 2
-	fn_printdots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files"
+	exit
+else
+	fn_printok "Checking for update: teamspeak.com"
+	fn_scriptlog "Success! Checking for update: teamspeak.com"
 	sleep 1
-	for appfile in ${appmanifestfile}; do
-		rm "${appfile}"
-	done
-	appmanifestfilewc1="${appmanifestfilewc}"
-	fn_appmanifestinfo
-	if [ "${appmanifestfilewc}" -ge "2" ]; then
-		fn_printfail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files"
-		fn_scriptlog "Failure! Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files"
-		sleep 1
-		echo ""
-		echo "	Check user permissions"
-		for appfile in ${appmanifestfile}; do
-			echo "	${appfile}"
-		done
-		exit
-	else
-		sleep 1
-		fn_printok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
-		fn_scriptlog "Success! Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
-		sleep 1
-		fn_printinfonl "Forcing update to correct issue"
-		fn_scriptlog "Forcing update to correct issue"
-		sleep 1
-		fn_update_dl
-		fn_update_check
-	fi
-elif [ "${appmanifestfilewc}" -eq "0" ]; then
-	fn_printwarn "No appmanifest_${appid}.acf found"
-	fn_scriptlog "Warning! No appmanifest_${appid}.acf found"
-	sleep 2
-	fn_printinfonl "Forcing update to correct issue"
-	fn_scriptlog "Forcing update to correct issue"
+fi
+
+# Removes dots so if can compare version numbers
+currentbuilddigit=$(echo "${currentbuild}"|tr -cd "[:digit:]")
+availablebuilddigit=$(echo "${availablebuild}"|tr -cd "[:digit:]")
+if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
+	echo -e "\n"
+	echo -e "Update available:"
+	sleep 1
+	echo -e "	Current build: \e[0;31m${currentbuild} ${architecture}\e[0;39m"
+	echo -e "	Available build: \e[0;32m${availablebuild} ${architecture}\e[0;39m"
+	echo -e ""
+	sleep 1
+	echo ""
+	echo -en "Applying update.\r"
 	sleep 1
+	echo -en "Applying update..\r"
+	sleep 1
+	echo -en "Applying update...\r"
+	sleep 1
+	echo -en "\n"
+	fn_scriptlog "Update available"
+	fn_scriptlog "Current build: ${currentbuild}"
+	fn_scriptlog "Available build: ${availablebuild}"
+	fn_scriptlog "${currentbuild} > ${availablebuild}"
+	fn_stop
 	fn_update_dl
-	fn_update_check
+	fn_start
+else
+	echo -e "\n"
+	echo -e "No update available:"
+	echo -e "	Current version: \e[0;32m${currentbuild}\e[0;39m"
+	echo -e "	Available version: \e[0;32m${availablebuild}\e[0;39m"
+	echo -e ""
+	fn_printoknl "No update available"
+	fn_scriptlog "Current build: ${currentbuild}"
+	fn_scriptlog "Available build: ${availablebuild}"
 fi
 }
 
 fn_printdots "Checking for update"
-fn_appmanifestcheck
-fn_steamcmdcheck
+if [ "${gamename}" == "Teamspeak 3" ]; then
+	fn_teamspeak3_check
+else
+	fn_logupdaterequest
+	fn_steamcmdcheck
+fi

+ 61 - 2
functions/fn_update_dl

@@ -2,11 +2,13 @@
 # LGSM fn_update_dl function
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 150315
 
 # Description: Runs a server update.
 
 local modulename="Update"
+
+fn_steamcmd_dl(){
 fn_check_root
 fn_check_systemdir
 fn_details_config
@@ -18,4 +20,61 @@ fn_scriptlog "Updating ${servername}"
 sleep 1
 cd "${rootdir}"
 cd "steamcmd"
-./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit|tee -a "${scriptlog}"
+./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" +quit|tee -a "${scriptlog}"
+}
+
+fn_teamspeak3_dl(){
+fn_check_root
+fn_check_systemdir
+fn_details_config
+fn_printdots "Updating ${servername}"
+sleep 1
+fn_printoknl "Updating ${servername}"
+fn_scriptlog "Updating ${servername}"
+sleep 1
+cd ${rootdir}
+echo -e "downloading teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz...\c"
+fn_scriptlog "Downloading teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz"
+wget -N --no-check-certificate /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux-${ts3arch}-${ts3_version_number}.tar.gz 2>&1 | grep -F HTTP | cut -c45-| uniq
+sleep 1
+echo -e "extracting teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz...\c"
+fn_scriptlog "Extracting teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz"
+tar -xf "teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz" 2> "${scriptlogdir}/.${servicename}-tar-error.tmp"
+local status=$?
+if [ ${status} -eq 0 ]; then
+	echo "OK"
+else
+	echo "FAIL - Exit status ${status}"
+	fn_scriptlog "Failed to extract - Exit status ${status}"
+	sleep 1
+	cat "${scriptlogdir}/.${servicename}-tar-error.tmp"
+	cat "${scriptlogdir}/.${servicename}-tar-error.tmp" >> "${scriptlog}"
+	rm "${scriptlogdir}/.${servicename}-tar-error.tmp"
+	fn_scriptlog "Failure! Unable to update"
+	exit
+fi
+echo -e "copying to ${filesdir}...\c"
+fn_scriptlog "Copying to ${filesdir}"
+cp -R ${rootdir}/teamspeak3-server_linux-${ts3arch}/* "${filesdir}" 2> "${scriptlogdir}/.${servicename}-cp-error.tmp"
+local status=$?
+if [ ${status} -eq 0 ]; then
+	echo "OK"
+else
+	echo "FAIL - Exit status ${status}"
+	fn_scriptlog "Failed to copy - Exit status ${status}"
+	sleep 1
+	cat "${scriptlogdir}/.${servicename}-cp-error.tmp"
+	cat "${scriptlogdir}/.${servicename}-cp-error.tmp" >> "${scriptlog}"
+	rm "${scriptlogdir}/.${servicename}-cp-error.tmp"
+	fn_scriptlog "Failure! Unable to update"
+	exit
+fi
+rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz
+rm -rf ${rootdir}/teamspeak3-server_linux-${ts3arch}
+}
+
+if [ "${gamename}" == "Teamspeak 3" ]; then
+	fn_teamspeak3_dl
+else
+	fn_steamcmd_dl
+fi