Преглед изворни кода

Merge branch 'feature/factorio' into pr/1133

Daniel Gibbs пре 9 година
родитељ
комит
4f70218d0b
78 измењених фајлова са 414 додато и 453 уклоњено
  1. 1 1
      7DaysToDie/sdtdserver
  2. 1 1
      ARKSurvivalEvolved/arkserver
  3. 1 1
      Arma3/arma3server
  4. 1 1
      Battlefield1942/bf1942server
  5. 1 1
      BlackMesa/bmdmserver
  6. 1 1
      BladeSymphony/bsserver
  7. 2 2
      BrainBread2/bb2server
  8. 1 1
      CallOfDuty/codserver
  9. 1 1
      CallOfDuty2/cod2server
  10. 188 0
      CallOfDuty4/cod4server
  11. 1 1
      CallOfDutyUnitedOffensive/coduoserver
  12. 1 1
      CallOfDutyWorldAtWar/codwawserver
  13. 1 1
      CodenameCURE/ccserver
  14. 1 1
      CounterStrike/csserver
  15. 1 1
      CounterStrikeConditionZero/csczserver
  16. 2 2
      CounterStrikeGlobalOffensive/csgoserver
  17. 1 1
      CounterStrikeSource/cssserver
  18. 1 1
      DayOfDefeat/dodserver
  19. 1 1
      DayOfDefeatSource/dodsserver
  20. 1 1
      DayOfInfamy/doiserver
  21. 1 1
      DeathmatchClassic/dmcserver
  22. 1 1
      DontStarveTogether/dstserver
  23. 1 1
      DoubleActionBoogaloo/dabserver
  24. 22 1
      EmpiresMod/emserver
  25. 1 1
      FistfulOfFrags/fofserver
  26. 1 1
      GarrysMod/gmodserver
  27. 1 1
      GoldenEyeSource/gesserver
  28. 1 1
      HalfLife2Deathmatch/hl2dmserver
  29. 1 1
      HalfLifeDeathmatch/hldmserver
  30. 1 1
      HalfLifeDeathmatchSource/hldmsserver
  31. 1 1
      Hurtworld/hwserver
  32. 0 302
      Insurgency/cfg/lgsm-default.cfg
  33. 1 1
      Insurgency/insserver
  34. 1 1
      JustCause2/jc2server
  35. 1 1
      KillingFloor/kfserver
  36. 1 1
      Left4Dead/l4dserver
  37. 1 1
      Left4Dead2/l4d2server
  38. 1 1
      Minecraft/mcserver
  39. 1 1
      Mumble/mumbleserver
  40. 1 1
      NS2Combat/ns2cserver
  41. 1 1
      NaturalSelection2/ns2server
  42. 1 1
      NoMoreRoomInHell/nmrihserver
  43. 1 1
      OpposingForce/opforserver
  44. 1 1
      PiratesVikingandKnightsII/pvkiiserver
  45. 1 1
      ProjectZomboid/pzserver
  46. 1 1
      Quake2/q2server
  47. 1 1
      Quake3/q3server
  48. 1 1
      QuakeLive/qlserver
  49. 0 26
      QuakeWorld/cfg/lgsm-default.cfg
  50. 71 30
      QuakeWorld/qwserver
  51. 1 1
      RedOrchestra/roserver
  52. 1 1
      Ricochet/ricochetserver
  53. 3 2
      Rust/rustserver
  54. 1 1
      SeriousSam3BFE/ss3sserver
  55. 1 1
      Starbound/sbserver
  56. 1 1
      SvenCoop/svenserver
  57. 1 1
      TeamFortress2/tf2server
  58. 1 1
      TeamFortressClassic/tfcserver
  59. 1 1
      TeamSpeak3/ts3server
  60. 1 1
      Teeworlds/twserver
  61. 1 1
      Terraria/terrariaserver
  62. 1 1
      UnrealTournament/utserver
  63. 1 1
      UnrealTournament2004/ut2k4server
  64. 1 1
      UnrealTournament3/ut3server
  65. 1 1
      UnrealTournament99/ut99server
  66. 1 1
      WolfensteinEnemyTerritory/wetserver
  67. 1 1
      lgsm/functions/check_steamcmd.sh
  68. 11 0
      lgsm/functions/command_details.sh
  69. 1 1
      lgsm/functions/command_install.sh
  70. 7 7
      lgsm/functions/command_postdetails.sh
  71. 2 2
      lgsm/functions/command_validate.sh
  72. 1 1
      lgsm/functions/core_getopt.sh
  73. 19 3
      lgsm/functions/info_config.sh
  74. 3 0
      lgsm/functions/info_glibc.sh
  75. 12 6
      lgsm/functions/install_config.sh
  76. 7 5
      lgsm/functions/install_server_files.sh
  77. 3 3
      lgsm/functions/update_steamcmd.sh
  78. 1 1
      tests/tests_jc2server.sh

+ 1 - 1
7DaysToDie/sdtdserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
ARKSurvivalEvolved/arkserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Arma3/arma3server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Battlefield1942/bf1942server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
BlackMesa/bmdmserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
BladeSymphony/bsserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 2 - 2
BrainBread2/bb2server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########
@@ -41,7 +41,7 @@ gslt=""
 ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters
 # Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server
 fn_parms(){
-parms="-game brainbread2 -insecure -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
+parms="-game brainbread2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
 }
 
 #### LinuxGSM Settings ####

+ 1 - 1
CallOfDuty/codserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
CallOfDuty2/cod2server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 188 - 0
CallOfDuty4/cod4server

@@ -0,0 +1,188 @@
+#!/bin/bash
+# Project: Game Server Managers - LinuxGSM
+# Author: Daniel Gibbs
+# License: MIT License, Copyright (c) 2016 Daniel Gibbs
+# Purpose: Call of Duty 4 | Server Management Script
+# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors
+# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki
+# Website: https://gameservermanagers.com
+
+# Debugging
+if [ -f ".dev-debug" ]; then
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
+fi
+
+version="161224"
+
+##########################
+######## Settings ########
+##########################
+
+#### Server Settings ####
+
+## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters
+
+defaultmap="mp_crossfire"
+maxclients="32"
+port="28960"
+ip="0.0.0.0"
+
+## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters
+fn_parms(){
+parms="+set sv_punkbuster 0 +set fs_basepath ${filesdir} +set dedicated 1 +set net_ip ${ip} +set net_port ${port} +set sv_maxclients ${maxclients} +exec ${servercfg} +map ${defaultmap}"
+}
+
+#### LinuxGSM Settings ####
+
+## Notification Alerts
+# (on|off)
+# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email
+emailalert="off"
+email="email@example.com"
+emailfrom=""
+
+# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet
+pushbulletalert="off"
+pushbullettoken="accesstoken"
+channeltag=""
+
+## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
+
+## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging
+consolelogging="on"
+logdays="7"
+
+#### 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"
+
+## LinuxGSM Server Details
+# Do not edit
+gamename="Call of Duty 4"
+engine="iw3.0"
+
+## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers
+servicename="cod4-server"
+
+#### Directories ####
+# Edit with care
+
+## Work 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"
+
+## Server Specific Directories
+systemdir="${filesdir}"
+executabledir="${filesdir}"
+executable="./cod4x18_dedrun"
+servercfg="${servicename}.cfg"
+servercfgdefault="server.cfg"
+servercfgdir="${systemdir}/main"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+
+## Backup Directory
+backupdir="${rootdir}/backups"
+
+## Logging Directories
+gamelogdir="${filesdir}/Logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+scriptlog="${scriptlogdir}/${servicename}-script.log"
+consolelog="${consolelogdir}/${servicename}-console.log"
+emaillog="${scriptlogdir}/${servicename}-email.log"
+
+## Logs Naming
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%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
+}
+
+# Prevent from running this script as root.
+if [ "$(whoami)" = "root" ]; then
+	if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then
+		echo "[ FAIL ] Do NOT run this script as root!"
+		exit 1
+	else
+		core_functions.sh
+		check_root.sh
+	fi
+fi
+
+core_dl.sh
+core_functions.sh
+getopt=$1
+core_getopt.sh

+ 1 - 1
CallOfDutyUnitedOffensive/coduoserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
CallOfDutyWorldAtWar/codwawserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
CodenameCURE/ccserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
CounterStrike/csserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
CounterStrikeConditionZero/csczserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 2 - 2
CounterStrikeGlobalOffensive/csgoserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########
@@ -27,7 +27,7 @@ version="161125"
 # [Game Modes]				gametype		gamemode
 # Arms Race				1			0
 # Classic Casual			0			0
-# Classic Competitive		0			1
+# Classic Competitive			0			1
 # Demolition				1			1
 # Deathmatch				1			2
 gametype="0"

+ 1 - 1
CounterStrikeSource/cssserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
DayOfDefeat/dodserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
DayOfDefeatSource/dodsserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
DayOfInfamy/doiserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
DeathmatchClassic/dmcserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
DontStarveTogether/dstserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
DoubleActionBoogaloo/dabserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 22 - 1
EmpiresMod/emserver

@@ -1,5 +1,26 @@
 #!/bin/bash
-# Empires Mod
+# Project: Game Server Managers - LinuxGSM
+# Author: Daniel Gibbs
+# License: MIT License, Copyright (c) 2016 Daniel Gibbs
+# Purpose: Empires Mod | Server Management Script
+# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors
+# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki
+# Website: https://gameservermanagers.com
+
+# Debugging
+if [ -f ".dev-debug" ]; then
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
+fi
+
+version="161224"
+
+##########################
+######## Settings ########
+##########################
+
+#### Server Settings ####
 
 ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters
 defaultmap="emp_district"

+ 1 - 1
FistfulOfFrags/fofserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
GarrysMod/gmodserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
GoldenEyeSource/gesserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
HalfLife2Deathmatch/hl2dmserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
HalfLifeDeathmatch/hldmserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
HalfLifeDeathmatchSource/hldmsserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Hurtworld/hwserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 0 - 302
Insurgency/cfg/lgsm-default.cfg

@@ -1,302 +0,0 @@
-// ****************************************************************************
-//                                                                            *
-//     Ingurgency - server.cfg                                                *
-//     Version 060116                                                         *
-//                                                                            *
-// ****************************************************************************
-
-// ............................. Basic Settings ............................. //
-
-// Hostname for server.
-hostname "<hostname>"
-
-// Server password - for private servers.
-sv_password ""
-
-// Contact email for server sysop.
-sv_contact "email@example.com"
-
-// LAN Mode - If set the server will not show on the internet.
-// Default: sv_lan 0
-sv_lan 0
-
-// Set maximum server FPS
-// Default: fps_max 300
-fps_max 300
-
-// ........................... RCON Configuration .......................... //
-
-// RCON - remote console password.
-rcon_password "<rconpassword>"
-
-// Number of minutes to ban users who fail rcon authentication
-// min. 0
-sv_rcon_banpenalty 10
-
-// Enable/disable rcon logging
-sv_rcon_log 1
-
-// Max number of times a user can fail rcon authentication before being banned
-// min. 1 max. 20
-sv_rcon_maxfailures 5
-
-// ......................... Matchmaking Playlists ......................... //
-// info: Selecting a playlist will allow the server to show up in matchmaking.
-// Playlists use predefined settings and mapcycle. 
-
-// You do not need to select a mapcycle as the server will cycle though the 
-// predefined playlist mapcycle.
-//
-// If you want to change the predefined playlist mapcycle you can create a 
-// custom mapcycle but only with maps from the playlist mapcycle.
-//
-// You can also create your own custom playlists.
-// http://steamcommunity.com/sharedfiles/filedetails/?id=461776759
-
-// "nwi/comp"
-// "nwi/coop"
-// "nwi/coop_elite"
-// "nwi/coop_hardcore"
-// "nwi/pvp_sustained"
-// "nwi/pvp_tactical"
-//
-sv_playlist "nwi/coop"
-
-// ............................... Map Cycles ............................... //
-// info: There are several predefined mapcycles available that are listed below.
-// You can also create your own custom mapcycle. 
-
-// "mapcycle.txt" - by default this contains the most popular options
-// "mapcycle_all.txt" - all possible map/mode combinations for PvP
-// "mapcycle_ambush.txt" - all ambush (VIP) maps 
-// "mapcycle_attackdefend.txt" - push & strike maps
-// "mapcycle_checkpoint.txt" - all checkpoint maps
-// "mapcycle_comp.txt" - firefight & elimination maps
-// "mapcycle_conquer.txt" - conquer gamemode
-// "mapcycle_cooperative.txt" - survival, coop, hunt maps
-// "mapcycle_firefight.txt" - all firefight maps
-// "mapcycle_flashpoint.txt" - all flashpoint maps
-// "mapcycle_hunt.txt" - all hunt maps
-// "mapcycle_infiltrate.txt" - all infiltrate (CTF) maps
-// "mapcycle_objrespawn.txt" - all firefight & flashpoint featuring respawning for completing objectives
-// "mapcycle_occupy.txt" - all occupy maps
-// "mapcycle_practice.txt"
-// "mapcycle_push.txt" - all push maps
-// "mapcycle_singlelife.txt" - strike & ambush single life modes 
-// "mapcycle_skirmish.txt" - all skirmish maps
-// "mapcycle_strike.txt" - all strike maps
-// "mapcycle_survival.txt" - all survival maps
-// "mapcycle_sustained_combat.txt"
-// "mapcycle_tactical_operations.txt"
-// "mapcycle_workshop.txt" - used by Workshop system
-//
-//mapcyclefile "mapcycle.txt"
-
-// .......................... Coop Mode Settings ............................ //
-// info: Settings for all cooperative gamemodes
-
-// Set the maximum number of human players in Cooperative modes
-// Maximum value: 8
-// Default: mp_coop_lobbysize 6
-//mp_coop_lobbysize 6
-
-// Set the minimum number of bots
-//mp_coop_min_bots 5
-
-// Set the maximum number of bots
-// Maximum value: maxplayers - mp_coop_lobbysize
-//mp_coop_max_bots 18
-
-// ........................... Voting Settings .............................. //
-
-// Allow voting?
-sv_allow_votes 1
-
-// Is map voting enabled?
-sv_map_voting 1
-
-// Allow spectators to vote?
-sv_vote_allow_spectators 0
-
-// A vote that fails cannot be re-submitted for this long
-sv_vote_failure_timer 300
-
-// Can people hold votes to change AI count?
-sv_vote_issue_botcount_allowed 1
-
-// The voting population required to pass a bot count vote
-// min. 0.1 max. 1
-sv_vote_issue_botcount_min_population 0.55
-
-// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes)
-// min. 0 max. 1
-sv_vote_issue_botcount_min_ratio 0.5
-
-// Can people hold votes to change AI difficulty?
-sv_vote_issue_botdifficulty_allowed 1
-
-// The voting population required to pass an AI difficulty vote
-// min. 0.1 max. 1
-sv_vote_issue_botdifficulty_min_population 0.55
-
-// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes)
-// min. 0 max. 1
-sv_vote_issue_botdifficulty_min_ratio 0.5
-
-// Can people hold votes to change the gamemode?
-sv_vote_issue_changegamemode_allowed 0
-
-// Can people hold votes to change levels?
-sv_vote_issue_changelevel_allowed 1
-
-// If enabled, wait until the end of the round to change levels
-sv_vote_issue_changelevel_wait 1
-
-// Can people hold votes to kick players from the server?
-sv_vote_issue_kick_allowed 1
-
-// Can we kick the other team?
-sv_vote_issue_kick_other_team 0
-
-// Can people hold votes to set the next level?
-sv_vote_issue_nextlevel_allowed 1
-
-// Allow players to extend the current map?
-sv_vote_issue_nextlevel_allowextend 0
-
-// Present players with a list of maps to choose from?
-sv_vote_issue_nextlevel_choicesmode 1
-
-// Not allowed to vote for a nextlevel if one has already been set
-sv_vote_issue_nextlevel_prevent_change 1
-
-// How many rounds before map voting can begin
-sv_vote_issue_nextlevel_round_count_delay 1
-
-// The voting population required to pass a next level vote
-// min. 0.1 max. 1
-sv_vote_issue_nextlevel_min_population 0.55
-
-// How strong does the yes vote need to be to win? (2.0 = 2x more voters)
-// min. 1 max. 5
-sv_vote_issue_nextlevel_min_ratio 0.5
-
-// Can people hold votes to restart the game?
-sv_vote_issue_restart_game_allowed 1
-
-// Can people hold votes to restart the round?
-sv_vote_issue_restart_round_allowed 1
-
-// Can people hold votes to scramble the teams?
-sv_vote_issue_scramble_teams_allowed 1
-
-// Can people hold votes to switch the teams?
-sv_vote_issue_switch_teams_allowed 1
-
-// How long should a kick ban last for if a player is kicked for hacking? (minutes)
-sv_vote_kick_ban_duration_cheating 240
-
-// The voting population required to kick a person for hacking
-// min. 0.1 max. 1
-sv_vote_kick_hack_min_population 0.60
-
-// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes)
-// min. 0 max. 1
-sv_vote_kick_hack_min_ratio 0.66
-
-// How long should a kick vote ban someone from the server? (in minutes)
-sv_vote_kick_ban_duration_idle 0
-
-// The voting population required to kick a person for being idle
-// min. 0.1 max. 1
-sv_vote_kick_idle_min_population 0.20
-
-// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes)
-// min. 0 max. 1
-sv_vote_kick_idle_min_ratio 0.5
-
-// How long should a kick ban last for if a player is kicked for team killing? (minutes)
-sv_vote_kick_ban_duration_teamkilling 10
-
-// The voting population required to kick a person for team killing
-// min. 0.1 max. 1
-sv_vote_kick_tk_min_population 0.25
-
-// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes)
-// min. 0 max. 1
-sv_vote_kick_tk_min_ratio 0.66
-
-// How long should a kick ban last for if a player is kicked for trolling? (minutes)
-sv_vote_kick_ban_duration_trolling 60
-
-// The voting population required to kick a person for trolling
-// min. 0.1 max. 1
-sv_vote_kick_troll_min_population 0.40
-
-// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes)
-// min. 0 max. 1
-sv_vote_kick_troll_min_ration 0.66
-
-// The minimum number of players needed on the server to start a vote kick
-sv_vote_kick_min_players 4
-
-// Minimum number of vote attempts required to start an actual vote
-sv_vote_kick_min_voters 3
-
-// The voting population required
-// min. 0 max. 1
-sv_vote_min_population 0.55
-
-// What ratio of the votes needs to be yes to pass? (1 = All votes need to be yes)
-// min. 0 max. 1
-sv_vote_min_ratio 0.55
-
-// ............................. Fast Download .............................. //
-// info: Allows custom maps to be downloaded to the client.
-
-// Allows clients to download custom maps and textures etc. from the server at 20 kbps.
-// Default: sv_allowdownload 1
-sv_allowdownload 1
-
-// Allows clients to download custom maps, textures etc. from a web server with no transfer limit.
-// Example:
-// 		server location: maps/custommap.bsp
-// 		web server location: http://example.com/custom/maps/custommap.bsp
-//		sv_downloadurl "http://example.com/custom"
-// Default: sv_downloadurl ""
-sv_downloadurl ""
-
-// ................................ Ban List ............................... //
-
-// sv_nwi_banlist is the official banlist.
-sv_nwi_banlist 1
-
-// personal banlist based on user IDs.
-exec banned_user.cfg
-
-// personal banlist based on user IPs.	
-exec banned_ip.cfg
-
-writeid
-writeip
-
-// ............................. Server Logging ............................. //
-
-//Enables logging to file, console, and udp < on | off >.
-log on
-
-// Log server bans in the server logs.
-// Default: sv_logbans 1
-sv_logbans 1
-
-// Echo log information to the console.
-// Default: sv_logecho 1
-sv_logecho 1
-
-// Log server information in the log file.
-// Default: sv_logfile 1
-sv_logfile 1
-
-// Log server information to only one file.
-// Default: sv_log_onefile 0
-sv_log_onefile 0

+ 1 - 1
Insurgency/insserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
JustCause2/jc2server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
KillingFloor/kfserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Left4Dead/l4dserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Left4Dead2/l4d2server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Minecraft/mcserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Mumble/mumbleserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
NS2Combat/ns2cserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
NaturalSelection2/ns2server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
NoMoreRoomInHell/nmrihserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
OpposingForce/opforserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
PiratesVikingandKnightsII/pvkiiserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
ProjectZomboid/pzserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Quake2/q2server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Quake3/q3server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
QuakeLive/qlserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 0 - 26
QuakeWorld/cfg/lgsm-default.cfg

@@ -1,26 +0,0 @@
-// server info
-hostname                        "<hostname>" // server name shown in server browsers
-rcon_password					"<rconpassword>"
-sv_admininfo                    "lgsm <lgsm@example.com>" // 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)

+ 71 - 30
QuakeWorld/qwserver

@@ -1,54 +1,81 @@
 #!/bin/bash
-# Quake World (nQuake)
-# Server Management Script
+# Project: Game Server Managers - LinuxGSM
 # Author: Daniel Gibbs
+# License: MIT License, Copyright (c) 2016 Daniel Gibbs
+# Purpose: Quake World (nQuake) | Server Management Script
+# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors
+# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki
 # Website: https://gameservermanagers.com
+
+# Debugging
 if [ -f ".dev-debug" ]; then
 	exec 5>dev-debug.log
 	BASH_XTRACEFD="5"
 	set -x
 fi
 
-version="210516"
+version="161224"
 
-#### Variables ####
+##########################
+######## Settings ########
+##########################
 
-# Notification Alerts
-# (on|off)
+#### Server Settings ####
+
+## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters
+port="27500"
+ip="0.0.0.0"
+
+## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters
+# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server
+fn_parms(){
+parms="-port ${port} -game ktx +exec ${servercfg}"
+}
 
-# Email
+#### LinuxGSM Settings ####
+
+## Notification Alerts
+# (on|off)
+# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email
 emailalert="off"
 email="email@example.com"
+emailfrom=""
 
-# Pushbullet
-# https://www.pushbullet.com/#settings
+# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet
 pushbulletalert="off"
 pushbullettoken="accesstoken"
 channeltag=""
 
-# Start Variables
-ip="0.0.0.0"
-port="27500"
+## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
 
-fn_parms(){
-parms="-port ${port} -game ktx +exec ${servercfg}"
-}
+## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging
+consolelogging="on"
+logdays="7"
 
-#### Advanced Variables ####
+#### LinuxGSM Advanced Settings ####
 
-# Github Branch Select
+## 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"
+## LinuxGSM Server Details
+# Do not edit
 gamename="QuakeWorld"
 engine="quake"
 
-# Directories
+## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers
+servicename="quakeworld_server"
+
+#### Directories ####
+# Edit with care
+
+## Work Directories
 rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
 selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 lockselfname=".${servicename}.lock"
@@ -57,6 +84,8 @@ functionsdir="${lgsmdir}/functions"
 libdir="${lgsmdir}/lib"
 tmpdir="${lgsmdir}/tmp"
 filesdir="${rootdir}/serverfiles"
+
+## Server Specific Directories
 systemdir="${filesdir}/ktx"
 executabledir="${filesdir}"
 executable="./mvdsv"
@@ -64,24 +93,26 @@ servercfg="${servicename}.cfg"
 servercfgdefault="server.cfg"
 servercfgdir="${systemdir}"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+## Backup Directory
 backupdir="${rootdir}/backups"
 
-# Logging
-logdays="7"
-gamelogdir="${filesdir}/Logs"
+## Logging Directories
+gamelogdir="${systemdir}/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"
+## Logs Naming
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log"
 
-##### Script #####
-# Do not edit
+########################
+######## Script ########
+###### Do not edit #####
+########################
 
 # Fetches core_dl for file downloads
 fn_fetch_core_dl(){
@@ -138,8 +169,18 @@ functionfile="${FUNCNAME}"
 fn_fetch_core_dl
 }
 
+# Prevent from running this script as root.
+if [ "$(whoami)" = "root" ]; then
+	if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then
+		echo "[ FAIL ] Do NOT run this script as root!"
+		exit 1
+	else
+		core_functions.sh
+		check_root.sh
+	fi
+fi
+
 core_dl.sh
 core_functions.sh
-
 getopt=$1
 core_getopt.sh

+ 1 - 1
RedOrchestra/roserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Ricochet/ricochetserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 3 - 2
Rust/rustserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########
@@ -29,6 +29,7 @@ ip="0.0.0.0"
 port="28015"
 rconport="28016"
 rconpassword="CHANGE_ME"
+rconweb="1"
 maxplayers="50"
 # Advanced Start Settings
 seed="" #  default random; range : 1 to 2147483647 ; used to change or reproduce a procedural map
@@ -39,7 +40,7 @@ tickrate="30" # default 30; range : 15 to 100
 ## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters
 # Edit with care | https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server
 fn_parms(){
-parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}"
+parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" ${conditionalseed} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}"
 }
 
 # Specific to Rust

+ 1 - 1
SeriousSam3BFE/ss3sserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Starbound/sbserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
SvenCoop/svenserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
TeamFortress2/tf2server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
TeamFortressClassic/tfcserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
TeamSpeak3/ts3server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Teeworlds/twserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
Terraria/terrariaserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
UnrealTournament/utserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
UnrealTournament2004/ut2k4server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
UnrealTournament3/ut3server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
UnrealTournament99/ut99server

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
WolfensteinEnemyTerritory/wetserver

@@ -14,7 +14,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########

+ 1 - 1
lgsm/functions/check_steamcmd.sh

@@ -58,7 +58,7 @@ fn_check_steamcmd_sh(){
 fn_check_steamcmd_guard(){
 	if [ "${function_selfname}" == "command_update.sh" ]||[ "${function_selfname}" == "command_validate.sh" ]; then
 		# Checks that SteamCMD is working correctly and will prompt Steam Guard if required.
-		"${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit
+		"${steamcmddir}"/steamcmd.sh +login "${steamuser}" '${steampass}' +quit
 		if [ $? -ne 0 ]; then
 			fn_print_failure_nl "Error running SteamCMD"
 		fi

+ 11 - 0
lgsm/functions/command_details.sh

@@ -378,6 +378,15 @@ fn_details_cod2(){
 	} | column -s $'\t' -t
 }
 
+fn_details_cod4(){
+	echo -e "netstat -atunp"
+	echo -e ""
+	{
+		echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
+		echo -e "> Game\tINBOUND\t${port}\tudp"
+	} | column -s $'\t' -t
+}
+
 fn_details_codwaw(){
 	echo -e "netstat -atunp | grep codwaw_lnxded"
 	echo -e ""
@@ -761,6 +770,8 @@ fn_display_details() {
 		fn_details_coduo
 	elif [ "${gamename}" == "Call of Duty 2" ]; then
 		fn_details_cod2
+	elif [ "${gamename}" == "Call of Duty 4" ]; then
+		fn_details_cod4
 	elif [ "${gamename}" == "Call of Duty: World at War" ]; then
 		fn_details_codwaw
 	elif [ "${gamename}" == "Hurtworld" ]; then

+ 1 - 1
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}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "Factorio" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
+elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "Factorio" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
 	installer=1
 	install_server_files.sh
 elif [ -n "${appid}" ]; then

+ 7 - 7
lgsm/functions/command_postdetails.sh

@@ -17,7 +17,7 @@ postdetails=yes
 
 # The options for posttarget are:
 # The default destination - hastebin
-# posttarget="http://hastebin.com"
+# posttarget="https://hastebin.com"
 #
 # Secondary destination - pastebin
 # posttarget="http://pastebin.com
@@ -31,7 +31,7 @@ postdetails=yes
 # to post to pastebin, or
 #  rustserver@gamerig:~$ posttarget= ./rustserver pd
 # to leave the output on the filesystem.
-posttarget=${posttarget="http://hastebin.com"}
+posttarget=${posttarget="https://hastebin.com"}
 
 # For pastebin, you can set the expiration period.
 # use 1 week as the default, other options are '24h' for a day, etc.
@@ -126,16 +126,16 @@ if [ "${posttarget}" == "http://pastebin.com" ] ; then
 
 	 # Output the resulting link.
 	fn_print_ok_nl "Posting details to pastbin.com for ${postexpire}"
-	echo "  * url: ${posttarget}${link}"
-elif [ "${posttarget}" == "http://hastebin.com" ] ; then
-	fn_print_dots "Posting details to hastebin.com for ${postexpire}"
+	echo "  Please share the following url for support: ${posttarget}${link}"
+elif [ "${posttarget}" == "https://hastebin.com" ] ; then
+	fn_print_dots "Posting details to hastebin.com (expires 30 days after last view)"
 	sleep 1
 	# hastebin is a bit simpler.  If successful, the returned result
 	# should look like: {"something":"key"}, putting the reference that
 	# we need in "key".  TODO - error handling. -CedarLUG
-	link=$(curl -s -d "$(<${tmpfile})" "${posttarget}/documents" | cut -d\" -f4)
+	link=$(curl -H "HTTP_X_REQUESTED_WITH:XMLHttpRequest" -s -d "$(<${tmpfile})" "${posttarget}/documents" | cut -d\" -f4)
 	fn_print_ok_nl "Posting details to hastebin.com for ${postexpire}"
-	echo "  * url: ${posttarget}/${link}"
+	echo "  Please share the following url for support: ${posttarget}/${link}"
 else
 	 fn_print_warn_nl Review the output in "${tmpfile}"
 	 core_exit.sh

+ 2 - 2
lgsm/functions/command_validate.sh

@@ -24,9 +24,9 @@ fn_validation(){
 	fi
 
 	if [ "${engine}" == "goldsource" ]; then
-		${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}"
+		${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}"
 	else
-		${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}"
+		${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} validate +quit| tee -a "${scriptlog}"
 	fi
 	if [ $? != 0 ]; then
 		fn_print_fail_nl "Validating files: SteamCMD"

+ 1 - 1
lgsm/functions/core_getopt.sh

@@ -699,7 +699,7 @@ case "${getopt}" in
 
 if [ "${gamename}" == "Mumble" ]; then
 	fn_getopt_mumble
-elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${gamename}" == "QuakeWorld" ]||[ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]||[ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
+elif [ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]||[ "${gamename}" == "Call of Duty 4" ]||[ "${gamename}" == "Call of Duty: World at War" ]||[ "${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

+ 19 - 3
lgsm/functions/info_config.sh

@@ -94,6 +94,20 @@ fn_info_config_cod2(){
 	fi
 }
 
+fn_info_config_cod4(){
+	if [ ! -f "${servercfgfullpath}" ]; then
+		servername="${unavailable}"
+		rconpassword="${unavailable}"
+	else
+		servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs)
+		rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+
+		# Not Set
+		servername=${servername:-"NOT SET"}
+		rconpassword=${rconpassword=:-"NOT SET"}
+	fi
+}
+
 fn_info_config_codwaw(){
 	if [ ! -f "${servercfgfullpath}" ]; then
 		servername="${unavailable}"
@@ -123,7 +137,6 @@ fn_info_config_dontstarve(){
 		gamemode=$(grep "game_mode" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_mode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		tickrate=$(grep "tick_rate" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
 		masterport=$(grep "master_port" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-		
 		ip=$(grep "bind_ip" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bind_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		ipsetinconfig=1
 		ipinconfigvar="bind_ip"
@@ -136,7 +149,7 @@ fn_info_config_dontstarve(){
 		tickrate=${tickrate:-"0"}
 		masterport=${masterport:-"0"}
 	fi
-	
+
 	if [ ! -f "${servercfgfullpath}" ]; then
 		port="${zero}"
 		steamauthenticationport="${zero}"
@@ -145,7 +158,7 @@ fn_info_config_dontstarve(){
 		port=$(grep "server_port" "${servercfgfullpath}" | grep "^server_port" | grep -v "#" | tr -cd '[:digit:]')
 		steamauthenticationport=$(grep "authentication_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
 		steammasterserverport=$(grep "master_server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-		
+
 		# Not Set
 		port=${port:-"0"}
 		steamauthenticationport=${steamauthenticationport:-"0"}
@@ -575,6 +588,9 @@ elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: Unit
 # Call of Duty 2
 elif [ "${gamename}" == "Call of Duty 2" ]; then
 	fn_info_config_cod2
+# Call of Duty 4
+elif [ "${gamename}" == "Call of Duty 4" ]; then
+	fn_info_config_cod4
 # Call of Duty: World at War
 elif [ "${gamename}" == "Call of Duty: World at War" ]; then
 	fn_info_config_codwaw

+ 3 - 0
lgsm/functions/info_glibc.sh

@@ -23,6 +23,9 @@ elif [ "${gamename}" == "Call of Duty 2" ]; then
 elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then
 	glibcrequired="2.1"
 	glibcfix="no"
+elif [ "${gamename}" == "Call of Duty 4" ]; then
+	glibcrequired="2.3"
+	glibcfix="no"
 elif [ "${gamename}" == "Call of Duty: World at War" ]; then
 	glibcrequired="2.3.2"
 	glibcfix="no"

+ 12 - 6
lgsm/functions/install_config.sh

@@ -83,20 +83,20 @@ fn_set_dst_config_vars(){
 		randomkey=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
 		sed -i "s/CLUSTERKEY/${randomkey}/g" "${clustercfgfullpath}"
 		sleep 1
-	else	
+	else
 		echo "${clustercfg} is already configured."
 		fn_script_log_info "${clustercfg} is already configured."
 	fi
-	
+
 	## server.ini
 	# removing unnecessary options (dependent on sharding & shard type)
-	if [ "${sharding}" == "false" ]; then 
+	if [ "${sharding}" == "false" ]; then
 		sed -i "s/ISMASTER//g" "${servercfgfullpath}"
 		sed -i "/SHARDNAME/d" "${servercfgfullpath}"
 	elif [ "${master}" == "true" ]; then
 		sed -i "/SHARDNAME/d" "${servercfgfullpath}"
 	fi
-	
+
 	echo "changing shard name."
 	fn_script_log_info "changing shard name."
 	sed -i "s/SHARDNAME/${shard}/g" "${servercfgfullpath}"
@@ -105,7 +105,7 @@ fn_set_dst_config_vars(){
 	fn_script_log_info "changing master setting."
 	sed -i "s/ISMASTER/${master}/g" "${servercfgfullpath}"
 	sleep 1
-	
+
 	## worldgenoverride.lua
 	if [ "${cave}" == "true" ]; then
 		echo "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua."
@@ -177,7 +177,13 @@ elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then
 	fn_default_config_remote
 	fn_set_config_vars
 elif [ "${gamename}" == "Call of Duty 2" ]; then
-	gamedirname="CallofDuty2"
+	gamedirname="CallOfDuty2"
+	array_configs+=( server.cfg )
+	fn_fetch_default_config
+	fn_default_config_remote
+	fn_set_config_vars
+elif [ "${gamename}" == "Call of Duty 4" ]; then
+	gamedirname="CallOfDuty4"
 	array_configs+=( server.cfg )
 	fn_fetch_default_config
 	fn_default_config_remote

+ 7 - 5
lgsm/functions/install_server_files.sh

@@ -17,6 +17,8 @@ fn_install_server_files(){
 		fileurl="http://files.gameservermanagers.com/CallOfDutyUnitedOffensive/coduo-lnxded-1.51b-full.tar.bz2"; filedir="${tmpdir}"; filename="coduo-lnxded-1.51b-full.tar.bz2";  executecmd="noexecute" run="norun"; force="noforce"; md5="f1804ef13036e2b4ab535db000b19e97"
 	elif [ "${gamename}" == "Call of Duty 2" ]; then
 		fileurl="http://files.gameservermanagers.com/CallOfDuty2/cod2-lnxded-1.3-full.tar.bz2"; filedir="${tmpdir}"; filename="cod2-lnxded-1.3-full.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="078128f83d06dc3d7699428dc2870214"
+	elif [ "${gamename}" == "Call of Duty 4" ]; then
+		fileurl="http://files.gameservermanagers.com/CallOfDuty4/cod4x18_dedrun.tar.bz2"; filedir="${tmpdir}"; filename="cod4x18_dedrun.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="bebdfc1755626462bdaad49f6f926c08"
 	elif [ "${gamename}" == "Call of Duty: World at War" ]; then
 		fileurl="http://files.gameservermanagers.com/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.bz2"; filedir="${tmpdir}"; filename="codwaw-lnxded-1.7-full.tar.bz2";  executecmd="noexecute" run="norun"; force="noforce"; md5="0489697ff3bf678c109bfb377d1b7895"
 	elif [ "${gamename}" == "GoldenEye: Source" ]; then
@@ -76,18 +78,18 @@ fn_install_server_files_steamcmd(){
 
 			if [ "${counter}" -le "4" ]; then
 				if [ "${engine}" == "goldsource" ]; then
-					${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} +quit
+					${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} +quit
 					local exitcode=$?
 				else
-					${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit
+					${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit
 					local exitcode=$?
 				fi
 			elif [ "${counter}" -ge "5" ]; then
 				if [ "${engine}" == "goldsource" ]; then
-					${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} -validate +quit
+					${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} -validate +quit
 					local exitcode=$?
 				else
-					${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} -validate +quit
+					${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} -validate +quit
 					local exitcode=$?
 				fi
 			fi
@@ -105,7 +107,7 @@ fn_install_server_files_steamcmd(){
 		counter="0"
 		while [ "${counter}" -le "4" ]; do
 			counter=$((counter+1))
-			${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} -validate +quit
+			${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} -validate +quit
 			local exitcode=$?
 		done
 	fi

+ 3 - 3
lgsm/functions/update_steamcmd.sh

@@ -26,9 +26,9 @@ fn_update_steamcmd_dl(){
 	fi
 
 	if [ "${engine}" == "goldsource" ]; then
-		${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}"
+		${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}"
 	else
-		${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}"
+		${unbuffer} ./steamcmd.sh +login "${steamuser}" '${steampass}' +force_install_dir "${filesdir}" +app_update "${appid}" ${branch} +quit | tee -a "${scriptlog}"
 	fi
 
 	fix.sh
@@ -156,7 +156,7 @@ fn_update_steamcmd_check(){
 	fi
 
 	# Gets availablebuild info
-	availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"${branchname}\"$" | 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_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"${branchname}\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\  -f3)
 	if [ -z "${availablebuild}" ]; then
 		fn_print_fail "Checking for update: SteamCMD"
 		sleep 1

+ 1 - 1
tests/tests_jc2server.sh

@@ -17,7 +17,7 @@ if [ -f ".dev-debug" ]; then
 	set -x
 fi
 
-version="161125"
+version="161224"
 
 ##########################
 ######## Settings ########