Browse Source

Merge remote-tracking branch 'dgibbs64/master'

pull/675/head
Alexander Hurd 9 years ago
parent
commit
8e8e4ea2c5
  1. 143
      BrainBread2/bb2server
  2. 201
      BrainBread2/cfg/lgsm-default.cfg
  3. 4
      FistfulOfFrags/cfg/lgsm-default.cfg
  4. 3
      Insurgency/insserver
  5. 4
      NoMoreRoomInHell/cfg/lgsm-default.cfg
  6. 4
      PiratesVikingandKnightsII/cfg/lgsm-default.cfg
  7. 12
      functions/check.sh
  8. 200
      functions/check_deps.sh
  9. 1
      functions/command_details.sh
  10. 6
      functions/command_dev_detect_deps.sh
  11. 6
      functions/command_install.sh
  12. 8
      functions/command_start.sh
  13. 62
      functions/command_ts3_server_pass.sh
  14. 12
      functions/core_functions.sh
  15. 5
      functions/core_getopt.sh
  16. 57
      functions/email.sh
  17. 1
      functions/fix_ins.sh
  18. 6
      functions/fn_update_functions
  19. 4
      functions/info_glibc.sh
  20. 7
      functions/install_config.sh
  21. 29
      functions/install_steamcmd.sh
  22. 34
      functions/install_ts3.sh
  23. 25
      functions/update_check.sh
  24. 20
      functions/update_dl.sh
  25. 6
      functions/update_functions.sh

143
BrainBread2/bb2server

@ -0,0 +1,143 @@
#!/bin/bash
# BrainBread 2
# 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="090116"
#### Variables ####
# Notification Email
# (on|off)
emailnotification="off"
email="[email protected]"
# Steam login
steamuser="username"
steampass="password"
# Start Variables
defaultmap="bba_barracks"
maxplayers="20"
port="27015"
sourcetvport="27020"
clientport="27005"
ip="0.0.0.0"
updateonstart="off"
# Required: Game Server Login Token
# GSLT is required for running a public server.
# More info: http://gameservermanagers.com/gslt
gslt=""
# 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}"
}
#### 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="346330"
# Server Details
servicename="bb2-server"
gamename="BrainBread 2"
engine="source"
# Directories
rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
lockselfname=".${servicename}.lock"
filesdir="${rootdir}/serverfiles"
systemdir="${filesdir}/brainbread2"
executabledir="${filesdir}"
executable="./srcds_run"
servercfg="${servicename}.cfg"
servercfgdir="${systemdir}/cfg"
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

201
BrainBread2/cfg/lgsm-default.cfg

@ -0,0 +1,201 @@
// ****************************************************************************
// *
// BrainBread 2 - server.cfg *
// Version 080116 *
// *
// ****************************************************************************
// ............................. Basic Settings ............................. //
// Hostname for server.
hostname "<hostname>"
// RCON - remote console password.
rcon_password "<rconpassword>"
// Server password - for private servers.
sv_password ""
// Contact email for server sysop.
sv_contact "[email protected]"
// LAN Mode - If set the server will not show on the internet.
// Default: sv_lan 0
sv_lan 0
// Cheats - Allows cheats on the server. Steam achievements and stats are disabled.
// Default: 0
sv_cheats 0
// Friendly Fire - Allows team members to injure other members of their team.
// 0 = Friendly fire off.
// 1 = Friendly fire on.
// Default: 0
mp_friendlyfire 0
// ........................ Game Specific Commands ........................ //
// info: any commands that only apply to this game.
// Mercy Value - Sets how many deaths until the players become human once again.
// Default: bb2_allow_mercy 0
bb2_allow_mercy 3
// Late Joining - Allows players to spawn late.
// default bb2_allow_latejoin 0
bb2_allow_latejoin 1
// Player Spawn Protection - Time in seconds after Spawn.
// default bb2_spawn_protection 1
bb2_spawn_protection 15
// Profile System - Allow players to save and load there skills.
// 0 = Disabled, skills are not saved.
// 1 = Global, players can load there global skills.
// 2 = Server, players save there skills to the server. Steam achievements and stats are disabled.
// Default 1
bb2_allow_profile_system 1
// Allow NPC to score - Allow friendly npcs to affect scoring. For example for quests.
// Default 1
bb2_allow_npc_to_score 0
// Vote Settings
// Voting: Passing Votes - Percentage of players that are required to pass a vote.
// Minimum: 0
// Maximum: 100
// Default 50
bb2_votes_required 50
// Voting: Ban Time - Number of minutes a player be banned if a vaote ban passes.
// minimum: 0 (permanent)
// default 30
bb2_ban_time 30
// Arena Settings
// Arena: Respawn Interval Time (Seconds).
// Minimum: 20
// Default 40
bb2_arena_respawn_time 25
// Arena: Number of Reinforcements.
// Minimum: 0
// Maximum: 100
// Default 14
bb2_arena_reinforcement_count 14
// Classic Mode Settings
// Classic: Zombie No Team Change.
// 0 = Players can become zombies.
// 1 = Players cannot become zombies.
// Default 0
bb2_classic_zombie_noteamchange 1
// Elimination Settings
// Elimination: Team Fraglimit - Number of frags for a team to win a game.
// Minimum: 10
// Default 200
bb2_elimination_fraglimit 200
// Elimination: Respawn Time (Seconds).
// Minimum: 1
// Maximum: 30
// Default 4
bb2_elimination_respawn_time 5
// Elimination: Respawn Time Scale - Increase the respawn timer in seconds when a player joins.
// Example: respawn_timer + (joined_players x time_scale) = new_respawn_timer. 14 + (20 x 2) = 54.
// Minimum: 0
// Maximum: 10
// Default 1
bb2_elimination_respawn_time_scale 1
// Elimination: Extermination Score - The score a team should be awarded for exterminating (kill everyone before respawn) the other team.
// Minimum: 0
// Maximum: 50
// Default 25
bb2_elimination_score_from_extermination 25
// Elimination: Zombie Score - Number of point a zombie gets for a kill.
// Minimum: 2
// Maximum: 10
// Default 5
bb2_elimination_score_zombies 5
// Elimination: Team Perk Duration - Number of seconds a team perk lasts.
// Minimum: 5
// Maximum: 60
// Default 30
bb2_elimination_teamperk_duration 30
// Elimination: Team Perk Required Kills - Number of kills a team need to get in order to activate a team perk.
// Minimum: 25
// Maximum: 500
// Default 50
bb2_elimination_teamperk_kills_required 50
// Zombie Settings
// Zombie Lifespan - Number of minutes a regular zombie will last before dying.
// Minimum: 1
// Default 5
bb2_zombie_lifespan 2
// Max Zombies - Maximum number of zombies allowed in the game.
// Minimum: 1
// Maximum: 128
// Default 50
bb2_zombie_max 45
// M1A1 Abrams Settings
// M1A1 Abrams: Main Cannon Damage.
// Minimum: 100
// Maximum: 10000
// Default 3000
bb2_m1a1_damage 200
// M1A1 Abrams: Machinegun Damage.
// Minimum: 25
// Maximum: 1000
// Default 30
bb2_m1a1_damage_machinegun 25
// M1A1 Abrams: Friendly Fire (Including NPC's).
// Minimum: 0
// Maximum: 1
// Default 1
bb2_m1a1_friendly 1
// M1A1 Abrams: Machinegun Rate of Fire.
// Minimum: 0.01
// Maximum: 1
// Default 0.08
bb2_m1a1_machinegun_firerate 1
// M1A1 Abrams: Explosion Radius.
// Minimum: 200
// Maximum: 10000
// Default 500
bb2_m1a1_radius 500
// M1A1 Abrams: Max Sight Range.
// Minimum: 500
// Maximum: 10000
// Default 2000
bb2_m1a1_range_max 1000
// M1A1 Abrams: Min Sight Range.
// Minimum: 250
// Maximum: 5000
// Default 400
bb2_m1a1_range_min 250

4
FistfulOfFrags/cfg/lgsm-default.cfg

@ -1,7 +1,7 @@
// ****************************************************************************
// *
// Fistful of Frags - server.cfg *
// Version 271015 *
// Version 100116 *
// *
// ****************************************************************************
@ -40,7 +40,7 @@ mapcyclefile "mapcycle.txt"
// Default: mp_timelimit 0
mp_timelimit 15
// ........................ Server Specific Commands ........................ //
// ........................ Game Specific Commands ........................ //
// info: any commands that only apply to this game.
// Game Modes

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

4
NoMoreRoomInHell/cfg/lgsm-default.cfg

@ -1,7 +1,7 @@
// ****************************************************************************
// *
// No More Room in Hell - server.cfg *
// Version 150815 *
// Version 100116 *
// *
// ****************************************************************************
@ -43,7 +43,7 @@ mp_timelimit 45
// Default: mp_maxrounds 2
mp_maxrounds 2
// ........................ Server Specific Commands ........................ //
// ........................ Game Specific Commands ........................ //
// info: any commands that only apply to this game.
// Difficulty

4
PiratesVikingandKnightsII/cfg/lgsm-default.cfg

@ -1,7 +1,7 @@
// ****************************************************************************
// *
// Pirates, Vikings, and Knights II *
// Version 150815 *
// Version 100116 *
// *
// ****************************************************************************
@ -48,7 +48,7 @@ mp_roundtime 3
// Default: mp_winlimit 0
mp_winlimit 0
// ........................ Server Specific Commands ........................ //
// ........................ Game Specific Commands ........................ //
// Server tags - Tags show up on the in-game server browser. This helps
// users filter servers.

12
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
@ -41,7 +49,7 @@ do
fi
done
local allowed_commands_array=( command_debug.sh command_start.sh command_stop.sh update_check.sh command_validate.sh )
local allowed_commands_array=( update_check.sh command_validate.sh )
for allowed_command in "${allowed_commands_array[@]}"
do
if [ "${allowed_command}" == "${function_selfname}" ]; then

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

1
functions/command_details.sh

@ -586,6 +586,7 @@ info_distro.sh
info_glibc.sh
fn_details_os
fn_details_performance
fn_details_disk
fn_details_gameserver
fn_details_backup
# Some game servers do not have parms.

6
functions/command_dev_detect_deps.sh

@ -35,10 +35,12 @@ elif [ "${executable}" == "./ts3server_startscript.sh" ]; then
executable=ts3server_linux_amd64
fi
if [ -n "$(command -v eu-readelf)" ]; then
if [ "$(command -v eu-readelf)" ]; then
readelf=eu-readelf
else
elif [ "$(command -v readelf)" ];
readelf=readelf
else
echo "readelf/eu-readelf not installed"
fi
${readelf} -d ${executable} |grep NEEDED|awk '{ print $5 }'|sed 's/\[//g'|sed 's/\]//g' > "${rootdir}/.depdetect_readelf"

6
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
@ -30,11 +30,9 @@ fix.sh
install_logs.sh
install_gsquery.sh
install_config.sh
if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then
if [ "${gamename}" == "Counter Strike: Global Offensive" ]||[ "${gamename}" == "Team Fortress 2" ]||[ "${gamename}" == "BrainBread 2" ]; then
install_gslt.sh
elif [ "${gamename}" == "Teamspeak 3" ]; then
install_ts3db.sh
elif [ "${gamename}" == "Team Fortress 2" ]; then
install_gslt.sh
fi
install_complete.sh

8
functions/command_start.sh

@ -2,7 +2,7 @@
# LGSM command_start.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="271215"
lgsm_version="070116"
# Description: Starts the server.
@ -55,7 +55,11 @@ mv "${scriptlog}" "${scriptlogdate}"
# Create lock file
date > "${rootdir}/${lockselfname}"
cd "${executabledir}"
./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1
if [ "${ts3serverpass}" == "1" ];then
./ts3server_startscript.sh start serveradmin_password="${newpassword}"
else
./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1
fi
sleep 1
info_ts3status.sh
if [ "${ts3status}" = "Server seems to have died" ]||[ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then

62
functions/command_ts3_server_pass.sh

@ -0,0 +1,62 @@
#!/bin/bash
# LGSM command_serveradmin_password.sh function
# Author: Daniel Gibbs
# Contributor : UltimateByte
# Website: http://gameservermanagers.com
lgsm_version="080116"
# Description: Changes TS3 serveradmin password
local modulename="Change password"
function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
fn_serveradmin_password_prompt(){
echo ""
echo "${gamename} ServerAdmin Password Change"
echo "============================"
echo ""
echo "Press \"CTRL+b d\" to exit console."
fn_printinfomationnl "You are about to change the ${gamename} ServerAdmin password."
fn_printwarningnl "${gamename} will restart during this process."
echo ""
while true; do
read -e -i "y" -p "Continue? [y/N]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) echo Exiting; return;;
* ) echo "Please answer yes or no.";;
esac
done
fn_scriptlog "Initiating ${gamename} ServerAdmin password change"
read -p "Enter new password : " newpassword
}
fn_serveradmin_password_set(){
fn_printinfonl "Applying new password"
fn_scriptlog "Applying new password"
sleep 1
# Stop any running server
command_stop.sh
# Start server in "new password mode"
ts3serverpass="1"
fn_printinfonl "Starting server with new password"
command_start.sh
# Stop server in "new password mode"
command_stop.sh
fn_printoknl "Password applied"
fn_scriptlog "New ServerAdmin password applied"
sleep 1
}
# Running functions
check.sh
fn_serveradmin_password_prompt
info_ts3status.sh
if [ "${ts3status}" == "Server is running" ]; then
fn_serveradmin_password_set
command_start.sh
else
fn_serveradmin_password_set
fi

12
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.
@ -85,6 +85,11 @@ functionfile="${FUNCNAME}"
fn_runfunction
}
command_ts3_server_pass.sh(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_restart(){
local modulename="Restarting"
info_config.sh
@ -106,6 +111,11 @@ functionfile="${FUNCNAME}"
fn_runfunction
}
check_deps.sh(){
functionfile="${FUNCNAME}"
fn_runfunction
}
check_ip.sh(){
functionfile="${FUNCNAME}"
fn_runfunction

5
functions/core_getopt.sh

@ -2,7 +2,7 @@
# LGSM core_getopt.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="271215"
lgsm_version="070116"
# Description: getopt arguments.
@ -90,6 +90,8 @@ case "$getopt" in
command_details.sh;;
b|backup)
command_backup.sh;;
pw|change-password)
command_ts3_server_pass.sh;;
dev|dev-debug)
command_dev_debug.sh;;
i|install)
@ -113,6 +115,7 @@ case "$getopt" in
echo -e "\e[34mmonitor\t\e[0mChecks that the server is running."
echo -e "\e[34memail-test\t\e[0mSends test monitor email."
echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server."
echo -e "\e[34mchange-password\t\e[0mChanges TS3 serveradmin password."
echo -e "\e[34mbackup\t\e[0mCreate archive of the server."
echo -e "\e[34minstall\t\e[0mInstall the server."
echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts."

57
functions/email.sh

@ -2,41 +2,66 @@
# LGSM email.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="271215"
lgsm_version="020216"
# Description: Sends email notification if monitor picks up a failure.
local modulename="Email"
fn_printdots "Sending notification to ${email}"
echo -en "\n"
info_distro.sh
info_config.sh
check_ip.sh
fn_parms
{
echo -e "========================================\n${servicename} details\n========================================\n"
echo -e "Service: ${servicename}"
echo -e "Server: ${servername}"
echo -e "Game: ${gamename}"
echo -e "========================================\n${servicename} details\n========================================"
echo -e "Service name: ${servicename}"
echo -e "Server name: ${servername}"
echo -e "Game name: ${gamename}"
echo -e "Server IP: ${ip}:${port}"
echo -e "Failure reason: ${failurereason}"
echo -e "Action Taken: ${actiontaken}\n"
echo -e "========================================\nServer details\n========================================\n"
echo -e ""
echo -e "========================================\nDistro Details\n========================================"
echo -e "Date: $(date)"
echo -e "Distro: ${os}"
echo -e "Arch: ${arch}"
echo -e "Kernel: ${kernel}"
echo -e "Hostname: $HOSTNAME"
echo -e "tmux: ${tmuxv}"
echo -e "GLIBC: ${glibcv}"
echo -e ""
echo -e "========================================\nPerformance\n========================================"
echo -e "Uptime: ${days}d, ${hours}h, ${minutes}m"
echo -e "Avg Load${load}\n"
echo -e "========================================\nLogs\n========================================\n"
echo -e "Script log\n===================\n"
command_details.sh
}|sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"|tee "${scriptlogdir}/${servicename}-email.log"
echo -e "Avg Load: ${load}"
echo -e ""
echo -e "Mem: total used free"
echo -e "Physical: ${physmemtotal} ${physmemused} ${physmemfree}"
echo -e "Swap: ${swaptotal}${swapused} ${swapfree}"
echo -e ""
echo -e "========================================\nStorage\n========================================"
echo -e "\e[34mFilesystem:\t\e[0m${filesystem}"
echo -e "\e[34mTotal:\t\e[0m${totalspace}"
echo -e "\e[34mUsed:\t\e[0m${usedspace}"
echo -e "\e[34mAvailable:\t\e[0m${availspace}"
echo -e "\e[34mServerfiles:\t\e[0m${filesdirdu}"
if [ -d "${backupdir}" ]; then
echo -e "\e[34mBackups:\t\e[0m${backupdirdu}"
fi
echo -e ""
echo -e "========================================\nCommand-line Parameters\n========================================"
echo -e "${executable} ${parms}"
echo -e ""
echo -e "========================================\nLogs\n========================================"
}| sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee "${scriptlogdir}/${servicename}-email.log" > /dev/null 2>&1
echo -e "\n\n Script log\n===================" >> "${emaillog}"
tail -25 "${scriptlog}" >> "${emaillog}"
if [ ! -z "${consolelog}" ]; then
echo -e "\n\nConsole log\n====================\n" >> "${emaillog}"
tail -25 "${consolelog}" >> "${emaillog}"
echo -e "\n\n Console log\n====================" >> "${emaillog}"
tail -25 "${consolelog}" | awk '{ sub("\r$", ""); print }' >> "${emaillog}"
fi
if [ ! -z "${gamelogdir}" ]; then
echo -e "\n\nServer log\n====================\n" >> "${emaillog}"
tail "${gamelogdir}"/*|grep -v "==>"|sed '/^$/d'|tail -25 >> "${emaillog}"
echo -e "\n\n Server log\n====================" >> "${emaillog}"
tail "${gamelogdir}"/* | grep -v "==>" | sed '/^$/d' | tail -25 >> "${emaillog}"
fi
mail -s "${subject}" ${email} < "${emaillog}"
fn_printok "Sending notification to ${email}"

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"

4
functions/info_glibc.sh

@ -2,7 +2,7 @@
# LGSM info_glibc.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="271215"
lgsm_version="100116"
# Description: stores details on servers Glibc requirements.
@ -10,6 +10,8 @@ lgsm_version="271215"
if [ "${gamename}" == "Blade Symphony" ]; then
glibcrequired="2.15"
glibcfix="yes"
elif [ "${gamename}" == "BrainBread 2" ]; then
glibcrequired="2.17"
elif [ "${gamename}" == "Double Action: Boogaloo" ]; then
glibcrequired="2.15"
glibcfix="yes"

7
functions/install_config.sh

@ -2,7 +2,7 @@
# LGSM install_config.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="271215"
lgsm_version="100116"
fn_defaultconfig(){
echo "creating ${servercfg} config file."
@ -165,6 +165,11 @@ elif [ "${gamename}" == "ARMA 3" ]; then
wget -N /dev/null ${githuburl}/Arma3/cfg/lgsm-default.network.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
sleep 1
fn_arma3config
elif [ "${gamename}" == "BrainBread 2" ]; then
echo -e "downloading lgsm-default.cfg...\c"
wget -N /dev/null ${githuburl}/BrainBread2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
sleep 1
fn_sourceconfig
elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then
echo -e "downloading lgsm-default.cfg...\c"
wget -N /dev/null ${githuburl}/BlackMesa/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq

29
functions/install_steamcmd.sh

@ -10,31 +10,4 @@ echo ""
echo "Installing SteamCMD"
echo "================================="
sleep 1
steamcmddir="${rootdir}/steamcmd"
if [ ! -f "${steamcmddir}/steamcmd.sh" ]; then
if [ ! -d "${steamcmddir}" ]; then
mkdir -v "${steamcmddir}"
fi
curl=$(curl --fail -o "${steamcmddir}/steamcmd_linux.tar.gz" "http://media.steampowered.com/client/steamcmd_linux.tar.gz" 2>&1)
exitcode=$?
echo -e "downloading steamcmd_linux.tar.gz...\c"
if [ $exitcode -eq 0 ]; then
fn_printokeol
else
fn_printfaileol
echo "${curl}"
echo -e "${githuburl}\n"
exit $exitcode
fi
tar --verbose -zxf "${steamcmddir}/steamcmd_linux.tar.gz" -C "${steamcmddir}"
rm -v "${steamcmddir}/steamcmd_linux.tar.gz"
chmod +x "${steamcmddir}/steamcmd.sh"
else
echo "SteamCMD already installed!"
fi
# Checks that steamcmd is working correctly and will prompt Steam Guard if required.
"${steamcmddir}"/steamcmd.sh +login "${steamuser}" "${steampass}" +quit
if [ $? -ne 0 ]; then
fn_printfailurenl "Error running SteamCMD"
fi
sleep 1
check_steamcmd.sh

34
functions/install_ts3.sh

@ -15,29 +15,29 @@ else
exit 1
fi
# Grabs all version numbers not in correct order
# Grabs all version numbers but not in correct order
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_unsorted.tmp
# removes digits to allow sorting of numbers
cat .ts3_version_numbers_unsorted.tmp |tr -cd '[:digit:][*\n]' > .ts3_version_numbers_digit.tmp
# Sorts numbers in to correct order
# merges two files in to one with two columns sorts the numbers in to order then only outputs the second to the ts3_version_numbers.tmp
paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp |sort -rn|awk '{ print $2 }' > .ts3_version_numbers.tmp
# Replaces dots with spaces to split up the number. e.g 3 0 12 1 is 3.0.12.1 this allows correct sorting
cat .ts3_version_numbers_unsorted.tmp | tr "." " " > .ts3_version_numbers_digit.tmp
# Sorts versions in to correct order
# merges 2 files and orders by each column in order allowing these version numbers to be sorted in order
paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp | awk '{print $1,$2,$3,$4 " " $0;}'| sort -k1rn -k2rn -k3rn -k4rn | awk '{print $NF}' > .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"
wget --spider -q "http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2"
if [ $? -eq 0 ]; then
availablebuild="${ts3_version_number}"
echo "Latest Build: ${availablebuild}"
# Break while-loop, if the latest release could be found
echo "http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-66server_linux-${ts3arch}-${ts3_version_number}.tar.g"
break
fi
done < .ts3_version_numbers.tmp
rm -f .ts3_version_numbers_digit.tmp
rm -f .ts3_version_numbers_unsorted.tmp
rm -f .ts3_version_numbers.tmp
# tidy up
rm -f ".ts3_version_numbers_digit.tmp"
rm -f ".ts3_version_numbers_unsorted.tmp"
rm -f ".ts3_version_numbers.tmp"
# Checks availablebuild info is available
if [ -z "${availablebuild}" ]; then
@ -49,11 +49,11 @@ if [ -z "${availablebuild}" ]; then
fi
cd "${rootdir}"
echo -e "downloading teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz...\c"
wget -N /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
echo -e "downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c"
wget -N /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 2>&1 | grep -F HTTP | cut -c45-| uniq
sleep 1
echo -e "extracting teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz...\c"
tar -xf "teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz" 2> ".${servicename}-tar-error.tmp"
echo -e "extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c"
tar -xf "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" 2> ".${servicename}-tar-error.tmp"
local status=$?
if [ ${status} -eq 0 ]; then
echo "OK"
@ -76,5 +76,5 @@ else
rm ".${servicename}-cp-error.tmp"
exit $?
fi
rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz
rm -f "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2"
rm -rf "${rootdir}/teamspeak3-server_linux-${ts3arch}"

25
functions/update_check.sh

@ -2,7 +2,7 @@
# LGSM update_check.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="271215"
lgsm_version="020216"
# Description: Checks if a server update is available.
@ -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"
@ -213,27 +212,29 @@ ts3arch=$(ls $(find ${filesdir}/ -name 'ts3server_*_*' 2> /dev/null | grep -v 't
# Gets availablebuild info
# Grabs all version numbers not in correct order
# Grabs all version numbers but not in correct order
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_unsorted.tmp
# removes digits to allow sorting of numbers
cat .ts3_version_numbers_unsorted.tmp |tr -cd '[:digit:][*\n]' > .ts3_version_numbers_digit.tmp
# Sorts numbers in to correct order
# merges two files in to one with two columns sorts the numbers in to order then only outputs the second to the ts3_version_numbers.tmp
paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp |sort -rn|awk '{ print $2 }' > .ts3_version_numbers.tmp
# Replaces dots with spaces to split up the number. e.g 3 0 12 1 is 3.0.12.1 this allows correct sorting
cat .ts3_version_numbers_unsorted.tmp | tr "." " " > .ts3_version_numbers_digit.tmp
# Sorts versions in to correct order
# merges 2 files and orders by each column in order allowing these version numbers to be sorted in order
paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp | awk '{print $1,$2,$3,$4 " " $0;}'| sort -k1rn -k2rn -k3rn -k4rn | awk '{print $NF}' > .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"
wget --spider -q "http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2"
if [ $? -eq 0 ]; then
availablebuild="${ts3_version_number}"
# Break while-loop, if the latest release could be found
break
fi
done < .ts3_version_numbers.tmp
rm -f .ts3_version_numbers_digit.tmp
rm -f .ts3_version_numbers_unsorted.tmp
rm -f .ts3_version_numbers.tmp
# tidy up
rm -f ".ts3_version_numbers_digit.tmp"
rm -f ".ts3_version_numbers_unsorted.tmp"
rm -f ".ts3_version_numbers.tmp"
# Checks availablebuild info is available
if [ -z "${availablebuild}" ]; then

20
functions/update_dl.sh

@ -2,7 +2,7 @@
# LGSM update_dl.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="271215"
lgsm_version="020216"
# Description: Runs a server update.
@ -29,13 +29,13 @@ fix.sh
fn_teamspeak3_dl(){
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 /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
echo -e "downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c"
fn_scriptlog "Downloading teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2"
wget -N /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2 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"
echo -e "extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2...\c"
fn_scriptlog "Extracting teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2"
tar -xf "teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2" 2> "${scriptlogdir}/.${servicename}-tar-error.tmp"
local status=$?
if [ ${status} -eq 0 ]; then
echo "OK"
@ -51,7 +51,7 @@ else
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"
cp -R "${rootdir}/teamspeak3-server_linux_${ts3arch}/"* "${filesdir}" 2> "${scriptlogdir}/.${servicename}-cp-error.tmp"
local status=$?
if [ ${status} -eq 0 ]; then
echo "OK"
@ -65,8 +65,8 @@ else
fn_scriptlog "Failure! Unable to update"
exit ${status}
fi
rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz
rm -rf "${rootdir}/teamspeak3-server_linux-${ts3arch}"
rm -f teamspeak3-server_linux_${ts3arch}-${ts3_version_number}.tar.bz2
rm -rf "${rootdir}/teamspeak3-server_linux_${ts3arch}"
}
check.sh

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