Explorar el Código

Merge branch 'master' of https://github.com/dgibbs64/linuxgsm

Daniel Gibbs hace 10 años
padre
commit
fc78ace689

+ 2 - 1
Insurgency/insserver

@@ -31,10 +31,11 @@ sourcetvport="27020"
 clientport="27005"
 ip="0.0.0.0"
 updateonstart="off"
+workshop="0"
 
 # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server
 fn_parms(){
-parms="-game insurgency -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
+parms="-game insurgency -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} +sv_workshop_enabled ${workshop}"
 }
 
 #### Advanced Variables ####

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

@@ -0,0 +1,36 @@
+//----------------------------------------------
+// Sven Co-op v5.0 Default Server CFG
+//----------------------------------------------
+
+//----------------------------------------------
+// See server_example.cfg for more available
+// commands and settings.
+//----------------------------------------------
+
+hostname "<hostname>"
+log "on"
+
+rcon_password "<rconpassword>"
+//sv_password ""
+
+sys_ticrate 100
+deathmatch 1
+decalfrequency 30
+hpk_maxsize 2
+pausable 0
+
+sv_aim 0
+sv_allowdownload 1
+sv_allowupload 1
+sv_region 255
+sv_send_resources 1
+sv_voicecodec "voice_speex"
+sv_voiceenable 1
+sv_voicequality 5
+
+mp_telefrag 1
+mp_timelimit 99
+mp_weaponstay 1
+
+exec banned.cfg
+exec listip.cfg

+ 137 - 0
SvenCoop/svencoopserver

@@ -0,0 +1,137 @@
+#!/bin/bash
+# Sven Co-op
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: http://gameservermanagers.com
+if [ -f ".dev-debug" ]; then
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
+fi
+
+version="271215"
+
+#### Variables ####
+
+# Notification Email
+# (on|off)
+emailnotification="off"
+email="email@example.com"
+
+# Steam login
+steamuser="anonymous"
+steampass=""
+
+# Start Variables
+defaultmap="svencoop1"
+maxplayers="16"
+port="27015"
+clientport="27005"
+ip="0.0.0.0"
+updateonstart="off"
+
+# https://developer.valvesoftware.com/wiki/Command_Line_Options#Command-line_parameters_2
+fn_parms(){
+parms="-game svencoop -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} -maxplayers ${maxplayers}"
+}
+
+#### Advanced Variables ####
+
+# Github Branch Select
+# Allows for the use of different function files
+# from a different repo and/or branch.
+githubuser="dgibbs64"
+githubrepo="linuxgsm"
+githubbranch="master"
+
+# Steam
+appid="276060"
+
+# Server Details
+servicename="svencoop-server"
+gamename="Sven Co-op"
+engine="goldsource"
+
+# Directories
+rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
+selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+lockselfname=".${servicename}.lock"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}/svencoop"
+executabledir="${filesdir}"
+executable="./svends_run"
+servercfg="${servicename}.cfg"
+servercfgdir="${systemdir}"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+servercfgdefault="${servercfgdir}/lgsm-default.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_getgithubfile(){
+filename=$1
+exec=$2
+fileurl=${3:-$filename}
+filepath="${rootdir}/${filename}"
+filedir=$(dirname "${filepath}")
+# If the function file is missing, then download
+if [ ! -f "${filepath}" ]; then
+	if [ ! -d "${filedir}" ]; then
+		mkdir "${filedir}"
+	fi
+	githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}"
+	echo -e "    fetching ${filename}...\c"
+	if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then
+		:
+	else	
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "Curl is not installed!"
+		echo -e ""
+		exit
+	fi
+	curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1)
+	if [ $? -ne 0 ]; then
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "${curl}"
+		echo -e "${githuburl}\n"
+		exit
+	else
+		echo -e "\e[0;32mOK\e[0m"
+	fi	
+	if [ "${exec}" ]; then
+		chmod +x "${filepath}"
+	fi
+fi
+if [ "${exec}" ]; then
+	source "${filepath}"
+fi
+}
+
+fn_runfunction(){
+	fn_getgithubfile "functions/${functionfile}" 1
+}
+
+core_functions.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
+core_functions.sh
+
+getopt=$1
+core_getopt.sh

+ 9 - 1
functions/check.sh

@@ -2,7 +2,7 @@
 # LGSM fn_check function
 # Author: Daniel Gibbs
 # Website: http://gameservermanagers.com
-lgsm_version="060116"
+lgsm_version="170116"
 
 # Description: Overall function for managing checks.
 # Runs checks that will either halt on or fix an issue.
@@ -33,6 +33,14 @@ do
 	fi
 done
 
+local allowed_commands_array=( command_debug.sh command_start.sh command_stop.sh )
+for allowed_command in "${allowed_commands_array[@]}"
+do
+	if [ "${allowed_command}" == "${function_selfname}" ]; then
+		check_deps.sh
+	fi
+done
+
 local allowed_commands_array=( command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh )
 for allowed_command in "${allowed_commands_array[@]}"
 do

+ 200 - 0
functions/check_deps.sh

@@ -0,0 +1,200 @@
+#!/bin/bash
+# LGSM check_deps.sh function
+# Author: Daniel Gibbs
+# Website: http://gameservermanagers.com
+lgsm_version="310116"
+
+# Description: Checks that the requires dependencies are installed for LGSM.
+
+
+fn_deps_detector(){
+# Checks if dependency is missing
+if [ -n "$(command -v dpkg-query)" ]; then
+	dpkg-query -W -f='${Status}' ${deptocheck} 2>/dev/null| grep -q -P '^install ok installed$'
+	depstatus=$?
+elif [ -n "$(command -v yum)" ]; then
+	yum -q list installed ${deptocheck} > /dev/null 2>&1
+	depstatus=$?
+fi	
+if [ "${depstatus}" == "0" ]; then
+	missingdep=0
+	if [ "${function_selfname}" == "command_install.sh" ]; then
+		echo -e "\e[0;32m${deptocheck}\e[0m"
+		sleep 0.5
+	fi
+else
+	# if missing dependency is found
+	missingdep=1
+	if [ "${function_selfname}" == "command_install.sh" ]; then
+		echo -e "\e[0;31m${deptocheck}\e[0m"
+		sleep 0.5
+	fi	
+fi
+
+# Missing dependencies are added to array_deps_missing
+if [ "${missingdep}" == "1" ]; then
+	array_deps_missing+=("${deptocheck}")
+fi
+}
+
+fn_deps_email(){
+# Adds postfix to required dependencies if email notification is enabled
+if [ "${emailnotification}" == "on" ]; then
+	if [ -n "$(command -v dpkg-query)" ]; then
+		array_deps_required+=( mailutils postfix )
+	elif [ -n "$(command -v yum)" ]; then
+		array_deps_required+=( mailx postfix )
+	fi	
+fi
+}
+
+fn_found_missing_deps(){
+if [ "${#array_deps_missing[@]}" != "0" ]; then
+	fn_printdots "Checking dependencies"
+	sleep 2
+	fn_printwarn "Checking dependencies: Dependency missing: \e[0;31m${array_deps_missing[@]}\e[0m"
+	sleep 1
+	echo -e ""
+	sudo -n true > /dev/null 2>&1
+	if [ $? -eq 0 ]; then
+		fn_printinfonl "Attempting to install missing dependencies automatically"
+		echo -en ".\r"
+		sleep 1
+		echo -en "..\r"
+		sleep 1
+		echo -en "...\r"
+		sleep 1
+		echo -en "   \r"	
+		if [ -n "$(command -v dpkg-query)" ]; then
+			echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}"
+		elif [ -n "$(command -v yum)" ]; then
+			echo "yum install ${array_deps_missing[@]}"
+		fi	
+	else
+		echo ""
+		fn_printinfomationnl "$(whoami) does not have sudo access. manually install dependencies"
+		echo ""
+		if [ -n "$(command -v dpkg-query)" ]; then
+			echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}"
+		elif [ -n "$(command -v yum)" ]; then
+			echo "yum install ${array_deps_missing[@]}"
+		fi	
+		echo ""
+	fi
+	if [ "${function_selfname}" == "command_install.sh" ]; then
+		sleep 5
+	fi
+fi	
+}
+
+fn_check_loop(){
+	# Loop though required depenencies
+	for deptocheck in "${array_deps_required[@]}"
+	do
+		fn_deps_detector
+	done
+
+	# user to be informaed of any missing dependecies 
+	fn_found_missing_deps
+}
+
+if [ "${function_selfname}" == "command_install.sh" ]; then
+	echo ""
+	echo "Checking Dependecies"
+	echo "================================="
+fi
+
+
+# Check will only run if using apt-get or yum
+if [ -n "$(command -v dpkg-query)" ]; then
+	# Generate array of missing deps
+	array_deps_missing=()
+
+	# LGSM requirement for curl
+	array_deps_required=( curl ca-certificates )
+
+	# All servers except ts3 require tmux
+	if [ "${executable}" != "./ts3server_startscript.sh" ]; then
+		array_deps_required+=( tmux )
+	fi
+
+	# All servers excelts ts3 & mumble require libstdc++6,lib32gcc1
+	if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then
+		array_deps_required+=( lib32gcc1 libstdc++6:i386 )
+	fi
+
+	# Game Specific requirements
+
+	# Spark
+	if [ "${engine}" ==  "spark" ]; then
+		array_deps_required+=( speex:i386 libtbb2 )
+	# 7 Days to Die	
+	elif [ "${executable}" ==  "./7DaysToDie.sh" ]; then
+		array_deps_required+=( telnet expect )
+	# No More Room in Hell	
+	elif [ "${gamename}" == "No More Room in Hell" ]; then
+		array_deps_required+=( lib32tinfo5 )
+	# Brainbread 2 and Don't Starve Together
+	elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then
+		array_deps_required+=( libcurl4-gnutls-dev:i386 )
+	elif [ "${engine}" ==  "projectzomboid" ]; then
+		array_deps_required+=( openjdk-7-jre )
+	# Unreal engine
+	elif [ "${executable}" ==  "./ucc-bin" ]; then
+		#UT2K4
+		if [ -f "${executabledir}/ut2004-bin" ]; then
+			array_deps_required+=( libsdl1.2debian libstdc++5:i386 bzip2 unzip )
+		#UT99
+		else
+			array_deps_required+=( libsdl1.2debian bzip2 )
+		fi	
+	fi
+	fn_deps_email
+	fn_check_loop
+
+elif [ -n "$(command -v yum)" ]; then
+	# Generate array of missing deps
+	array_deps_missing=()
+
+	# LGSM requirement for curl
+	array_deps_required=( curl )
+
+	# All servers except ts3 require tmux
+	if [ "${executable}" != "./ts3server_startscript.sh" ]; then
+		array_deps_required+=( tmux )
+	fi
+
+	# All servers excelts ts3 & mumble require libstdc++6,lib32gcc1
+	if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then
+		array_deps_required+=( glibc.i686 libstdc++.i686 )
+	fi
+
+	# Game Specific requirements
+
+	# Spark
+	if [ "${engine}" ==  "spark" ]; then
+		array_deps_required+=( speex.i686 tbb.i686 )
+	# 7 Days to Die	
+	elif [ "${executable}" ==  "./7DaysToDie.sh" ]; then
+		array_deps_required+=( telnet expect )
+	# No More Room in Hell	
+	elif [ "${gamename}" == "No More Room in Hell" ]; then
+		array_deps_required+=( ncurses-libs.i686 )
+	# Brainbread 2 and Don't Starve Together
+	elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then
+		array_deps_required+=( libcurl.i686 )
+	elif [ "${engine}" ==  "projectzomboid" ]; then
+		array_deps_required+=( java-1.7.0-openjdk )
+	# Unreal engine
+	elif [ "${executable}" ==  "./ucc-bin" ]; then
+		#UT2K4
+		if [ -f "${executabledir}/ut2004-bin" ]; then
+			array_deps_required+=( compat-libstdc++-33.i686 SDL.i686 bzip2 unzip )
+		#UT99
+		else
+			array_deps_required+=( SDL.i686 bzip2 )
+		fi	
+	fi
+	fn_deps_email
+	fn_check_loop
+fi

+ 1 - 1
functions/command_install.sh

@@ -9,7 +9,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 check.sh
 install_header.sh
 install_serverdir.sh
-
+check_deps.sh 
 # Download and install
 if [ "${gamename}" == "Unreal Tournament 2004" ]; then
 	install_dl_ut2k4.sh

+ 6 - 1
functions/core_functions.sh

@@ -2,7 +2,7 @@
 # LGSM core_functions.sh function
 # Author: Daniel Gibbs
 # Website: http://gameservermanagers.com
-lgsm_version="060116"
+lgsm_version="170116"
 
 # Description: Defines all functions to allow download and execution of functions using fn_runfunction.
 # This function is called first before any other function. Without this file other functions would not load.
@@ -111,6 +111,11 @@ functionfile="${FUNCNAME}"
 fn_runfunction
 }
 
+check_deps.sh(){
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
 check_ip.sh(){
 functionfile="${FUNCNAME}"
 fn_runfunction

+ 0 - 1
functions/fix_ins.sh

@@ -17,4 +17,3 @@ if [ "${function_selfname}" == "command_debug.sh" ]; then
 else
         defaultmap="\\\"${defaultmap}\\\""
 fi
-fn_parms

+ 3 - 3
functions/fn_update_functions

@@ -2,7 +2,7 @@
 # LGSM update_functions.sh function
 # Author: Daniel Gibbs
 # Website: http://gameservermanagers.com
-lgsm_version="271215"
+lgsm_version="230116"
 
 # Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub.
 
@@ -14,9 +14,9 @@ rm -rfv "${rootdir}/functions/"*
 exitcode=$?
 if [ "${exitcode}" == "0" ]; then
 	fn_printok "Updating functions"
-	fn_scriptlog "Successfull! Updating functions"
+	fn_scriptlog "Success! Updating functions"
 else
-	fn_printokfail "Updating functions"
+	fn_printfail "Updating functions"
 	fn_scriptlog "Failure! Updating functions"
 fi
 echo -ne "\n"

+ 12 - 2
functions/install_config.sh

@@ -230,14 +230,19 @@ elif [ "${gamename}" == "Garry's Mod" ]; then
 	wget -N /dev/null ${githuburl}/GarrysMod/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
+elif [ "${gamename}" == "GoldenEye: Source" ]; then
+	echo -e "downloading lgsm-default.cfg...\c"
+	wget -N /dev/null ${githuburl}/GoldenEyeSource/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 /dev/null ${githuburl}/HalfLife2Deathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
-elif [ "${gamename}" == "Half Life: Deathmatch Classic" ]; then
+elif [ "${gamename}" == "Half Life: Deathmatch" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
-	wget -N /dev/null ${githuburl}/HalfLifeDeathmatchClassic/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	wget -N /dev/null ${githuburl}/HalfLifeDeathmatch/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_goldsourceconfig
 elif [ "${gamename}" == "Insurgency" ]; then
@@ -280,6 +285,11 @@ elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then
 	wget -N /dev/null ${githuburl}/SeriousSam3BFE/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_serious3config
+elif [ "${gamename}" == "Sven Co-op" ]; then
+	echo -e "downloading lgsm-default.cfg...\c"
+	wget -N /dev/null ${githuburl}/SvenCoop/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	sleep 1
+	fn_goldsourceconfig
 elif [ "${gamename}" == "Teamspeak 3" ]; then
 	echo -e "downloading lgsm-default.ini...\c"
 	wget -N /dev/null ${githuburl}/TeamSpeak3/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq

+ 0 - 1
functions/update_check.sh

@@ -188,7 +188,6 @@ sleep 1
 # 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
 	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"

+ 3 - 3
functions/update_functions.sh

@@ -2,7 +2,7 @@
 # LGSM update_functions.sh function
 # Author: Daniel Gibbs
 # Website: http://gameservermanagers.com
-lgsm_version="271215"
+lgsm_version="230116"
 
 # Description: Deletes the functions dir to allow re-downloading of functions from GitHub.
 
@@ -16,9 +16,9 @@ rm -rfv "${rootdir}/functions/"*
 exitcode=$?
 if [ "${exitcode}" == "0" ]; then
 	fn_printok "Updating functions"
-	fn_scriptlog "Successfull! Updating functions"
+	fn_scriptlog "Success! Updating functions"
 else
-	fn_printokfail "Updating functions"
+	fn_printfail "Updating functions"
 	fn_scriptlog "Failure! Updating functions"
 fi
 echo -ne "\n"