Browse Source

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

pull/668/merge
Daniel Gibbs 9 years ago
parent
commit
fc78ace689
  1. 3
      Insurgency/insserver
  2. 36
      SvenCoop/cfg/lgsm-default.cfg
  3. 137
      SvenCoop/svencoopserver
  4. 10
      functions/check.sh
  5. 200
      functions/check_deps.sh
  6. 2
      functions/command_install.sh
  7. 7
      functions/core_functions.sh
  8. 1
      functions/fix_ins.sh
  9. 6
      functions/fn_update_functions
  10. 14
      functions/install_config.sh
  11. 1
      functions/update_check.sh
  12. 6
      functions/update_functions.sh

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

10
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
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

2
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

7
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

1
functions/fix_ins.sh

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

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

14
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

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"

6
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"
Loading…
Cancel
Save