Merged and updated ts3server

Ts3server now updated and merged in to the new functions method.
This merge has not added any new features but just updated the code.
New features will be added over time.
This commit is contained in:
Daniel Gibbs 2015-02-08 14:51:13 +00:00
parent 7dd912522c
commit 25c0e0e210
8 changed files with 253 additions and 325 deletions

View File

@ -3,8 +3,7 @@
# Server Management Script
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 221113
# Version: 080214
#### Variables ####
# Notification Email
@ -17,11 +16,23 @@ gamename="Teamspeak 3"
servername="Teamspeak 3 Server"
servicename="ts3-server"
# Directorys
rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
fn_parms(){
parms="-game fof -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
}
# Directories
rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
selfname="$(basename $0)"
lockselfname=".${servicename}.lock"
filesdir="${rootdir}/serverfiles"
ini="${servicename}.ini"
backupdir="backups"
systemdir="${filesdir}"
executabledir="${filesdir}"
executable="./ts3server_startscript.sh"
servercfgdir="${filesdir}"
servercfg="${servicename}.ini"
servercfgfullpath="${servercfgdir}/${servercfg}"
defaultcfg="${servercfgfullpath}" #
backupdir="${rootdir}/backups"
# Logging
logdays="7"
@ -35,297 +46,31 @@ scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S'
##### Script #####
# Do not edit
# unless you know
# what you are doing
fn_rootcheck(){
if [ `whoami` = "root" ];then
echo -e "[\e[0;31m FAIL \e[0;39m] Script will not run as root!"
exit
fn_runfunction(){
# Functions are downloaded and run with this function
if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
cd "${rootdir}"
if [ ! -d "functions" ]; then
mkdir functions
fi
cd functions
echo -e "loading ${functionfile}...\c"
wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
chmod +x "${functionfile}"
cd "${rootdir}"
sleep 1
fi
source "${rootdir}/functions/${functionfile}"
}
fn_syscheck(){
if [ ! -e ${filesdir} ];then
echo -e "[\e[0;31m FAIL \e[0;39m] Cannot access ${filesdir}: No such directory"
exit
fi
fn_functions(){
# Functions are defined in fn_functions.
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_runcheck(){
fn_status
if [ "$ts3status" = "Server is running" ]; then
echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
sleep 0.5
echo -en "\n"
exit
fi
}
fn_functions
fn_inicheck(){
if [ ! -e ${filesdir}/${ini} ]; then
echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: ${filesdir}/${ini} is missing"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} ${filesdir}/${ini} is missing" >> ${scriptlog}
echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Creating blank ${ini}"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Creating blank ${ini}" >> ${scriptlog}
echo -e "[\e[0;36m INFO \e[0;39m] ${ini} can remain blank by default."
touch ${filesdir}/${ini}
fi
}
fn_distro(){
arch=$(uname -m)
kernel=$(uname -r)
if [ -f /etc/lsb-release ]; then
os=$(lsb_release -s -d)
elif [ -f /etc/debian_version ]; then
os="Debian $(cat /etc/debian_version)"
elif [ -f /etc/redhat-release ]; then
os=$(cat /etc/redhat-release)
else
os="$(uname -s) $(uname -r)"
fi
}
fn_uptime(){
uptime=$(</proc/uptime)
uptime=${uptime%%.*}
minutes=$(( uptime/60%60 ))
hours=$(( uptime/60/60%24 ))
days=$(( uptime/60/60/24 ))
}
fn_load(){
load=$(uptime | awk -F 'load average' '{ print $2 }')
}
fn_backupserver(){
fn_rootcheck
fn_syscheck
backupname="${servicename}-$(date '+%Y-%m-%d-%H%M%S')"
echo ""
echo "${gamename} Backup"
echo "============================"
echo ""
echo "The following backup will be created."
echo ""
echo "${backupdir}/${backupname}.tar.gz"
echo ""
while true; do
read -p "Continue? [y/N]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) echo Exiting; return 1 ;;
* ) echo "Please answer yes or no.";;
esac
done
fn_status
if [ "$ts3status" = "Server is running" ]; then
echo -e "\e[0;31mWARNING!\e[0;39m ${servicename} is currently running"
while true; do
read -p "Would you like to stop ${servicename} while running the backup? [y/N]" yn
case $yn in
[Yy]* ) fn_stopserver;break;;
[Nn]* ) break;;
* ) echo "Please answer yes or no.";;
esac
done
fi
echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
sleep 0.5
echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
sleep 1
echo -en "\n"
cd ${rootdir}
mkdir ${backupdir} > /dev/null 2>&1
tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude ${backupdir} *
echo -en "\r${servicename} backup complete"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
}
fn_emailnotification(){
fn_distro
fn_uptime
fn_load
{
echo -e "========================================\n${servicename} details\n========================================\n"
echo -e "Service: ${servicename}"
echo -e "Game: ${gamename}"
echo -e "Server: ${servername}"
echo -e "Failure reason: ${failurereason}"
echo -e "Action Taken: ${actiontaken}\n"
echo -e "========================================\nServer details\n========================================\n"
echo -e "Date: $(date)"
echo -e "Distro: ${os}"
echo -e "Arch: ${arch}"
echo -e "Kernel: ${kernel}"
echo -e "Hostname: $HOSTNAME"
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"
}|tee ${scriptlogdir}/${servicename}-email.log > /dev/null 2>&1
tail -25 ${scriptlog} >> ${emaillog}
if [ ! -z ${consolelog} ];then
echo -e "\n\nConsole log\n====================\n" >> ${emaillog}
tail -25 ${consolelog} >> ${emaillog}
fi
if [ ! -z ${gamelogdir} ];then
echo -e "\n\nServer log\n====================\n" >> ${emaillog}
tail ${gamelogdir}/*|grep -v "==>"|sed '/^$/d'|tail -25 >> ${emaillog}
fi
mail -s "${subject}" ${email} < ${emaillog}
echo -en "[\e[0;36m INFO \e[0;39m] Sent email notification to ${email}"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${email}" >> ${scriptlog}
}
fn_emailtest(){
fn_rootcheck
fn_syscheck
echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
if [ "${emailnotification}" = "on" ];then
subject="${servicename} Email Test Notification - Testing ${servername}"
failurereason="Testing ${servicename} email notification"
actiontaken="Sent test email...hello is this thing on?"
fn_emailnotification
else
echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
fi
sleep 0.5
echo -en "\n"
}
fn_logmanager(){
#Log manager will active if finds logs older than $logdays
if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
count=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
fi
}
fn_restartserver(){
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
fn_stopserver
fn_startserver
}
fn_startserver(){
if [ ! -d ${scriptlogdir} ];then
mkdir ${rootdir}/log
mkdir ${scriptlogdir}
echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} Creating log directorys ${scriptlogdir}"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} Creating log directorys ${scriptlogdir}" >> ${scriptlog}
fi
if [ ! -h ${rootdir}/log/server ]; then
ln -sv ${gamelogdir} ${rootdir}/log/server
fi
fn_rootcheck
fn_syscheck
fn_runcheck
fn_inicheck
fn_logmanager
mv ${scriptlog} ${scriptlogdate}
echo -en "[ .... ] Starting ${servicename}: ${servername}"
${filesdir}/ts3server_startscript.sh start inifile=${ini} > /dev/null 2>&1
sleep 1
fn_status
if [ "$ts3status" = "Server seems to have died" ] || [ "$ts3status" = "No server running (ts3server.pid is missing)" ];then
echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} Server is unable to start" >> ${scriptlog}
echo -e "Check ${filesdir}/logs for failure reason" |tee ${scriptlog}
else
echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
fi
sleep 0.5
echo -en "\n"
}
fn_stopserver(){
fn_rootcheck
fn_syscheck
fn_status
echo -en "[ .... ] Stopping ${servicename}: ${servername}"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
sleep 0.5
if [ "$ts3status" = "No server running (ts3server.pid is missing)" ];then
echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
else
echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
${filesdir}/ts3server_startscript.sh stop inifile=${ini} > /dev/null 2>&1
fi
echo -en "\n"
}
fn_monitorserver(){
fn_rootcheck
fn_syscheck
fn_logmanager
echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
sleep 0.5
fn_runcheck
echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!\n"
echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
sleep 1
fn_status
if [ "$ts3status" = "Server seems to have died" ];then
echo -en "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} Server seems to have died"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} Server seems to have died" >> ${scriptlog}
failurereason="Server seems to have died"
echo -en "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} No server running (ts3server.pid is missing)"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} No server running (ts3server.pid is missing)" >> ${scriptlog}
failurereason="No server running (ts3server.pid is missing)"
else
echo -en "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} Unknown error"
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} Unknown error" >> ${scriptlog}
failurereason="Unknown error"
fi
sleep 0.5
echo -en "\n"
if [ "${emailnotification}" = "on" ];then
subject="${servicename} Monitor - Restarting ${servername}"
actiontaken="restarted ${servername}"
fn_emailnotification
fi
sleep 0.5
echo -en "\n"
fn_restartserver
}
fn_status(){
ts3status=$(${filesdir}/ts3server_startscript.sh status inifile=${ini})
}
case "$1" in
start)
fn_startserver;;
stop)
fn_stopserver;;
restart)
fn_restartserver;;
backup)
fn_backupserver;;
monitor)
fn_monitorserver;;
email-test)
fn_emailtest;;
*)
echo "Usage: $0 {start|stop|restart|backup|monitor|email-test}"
exit 1;;
esac
exit
getopt=$1
fn_getopt

View File

@ -0,0 +1,10 @@
#!/bin/bash
# LGSM fn_check_ts3status function
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 070215
# Checks the status of Teamspeak 3.
cd "${executabledir}"
ts3status=$(./ts3server_startscript.sh status servercfgfullpathfile=${servercfgfullpath})

View File

@ -2,7 +2,7 @@
# LGSM fn_details function
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 220115
# Version: 080214
# Description: Displays server infomation.
@ -81,6 +81,9 @@ echo -e "\e[34mLocation:£\e[0m${rootdir}" >> .fn_details_gameserver
if [ ! -z "${servercfgfullpath}" ]; then
echo -e "\e[34mConfig file:£\e[0m${servercfgfullpath}" >> .fn_details_gameserver
fi
if [ "${gamename}" == "Teamspeak 3" ]; then
echo -e "\e[34mdbplugin:£\e[0m${dbplugin}" >> .fn_details_gameserver
fi
column -s '£' -t .fn_details_gameserver
rm -f .fn_details_gameserver
}
@ -121,7 +124,7 @@ echo -e ""
# Engine Specific details
fn_avalanchedetails(){
fn_details_avalanche(){
fn_check_ip
fn_details_config
fn_details_distro
@ -147,7 +150,7 @@ rm -f .fn_details_ports
fn_details_statusbottom
}
fn_realvirtualitydetails(){
fn_details_realvirtuality(){
fn_check_ip
pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
fn_parms
@ -181,7 +184,7 @@ rm -f .fn_details_ports
fn_details_statusbottom
}
fn_seriousengine35details(){
fn_details_seriousengine35(){
fn_check_ip
pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
fn_parms
@ -210,7 +213,7 @@ rm -f .fn_details_ports
fn_details_statusbottom
}
fn_sourcedetails(){
fn_details_source(){
fn_check_ip
fn_parms
fn_details_config
@ -241,7 +244,7 @@ rm -f .fn_details_ports
fn_details_statusbottom
}
fn_sparkdetails(){
fn_details_spark(){
fn_check_ip
pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
fn_parms
@ -279,7 +282,34 @@ rm -f .fn_details_ports
fn_details_statusbottom
}
fn_unity3ddetails(){
fn_details_teamspeak3(){
fn_details_config
fn_details_distro
fn_details_os
fn_details_performance
fn_details_disk
fn_details_gameserver
fn_details_backup
fn_details_commandlineparms
echo -e ""
echo -e "\e[92mPorts\e[0m"
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
echo -e "Change ports by editing the command-line"
echo -e "parameters in ${selfname}."
echo -e ""
echo -e "Useful port diagnostic command:"
echo -e "netstat -atunp | grep ts3server"
echo -e ""
echo -e "DESCRIPTION£DIRECTION£PORT£PROTOCOL" >> .fn_details_ports
echo -e "> Voice£INBOUND£${port}£udp" >> .fn_details_ports
echo -e "> ServerQuery£INBOUND£${queryport}£tcp" >> .fn_details_ports
echo -e "> File transfer£INBOUND£${fileport}£tcp" >> .fn_details_ports
column -s '£' -t .fn_details_ports
rm -f .fn_details_ports
fn_details_statusbottom
}
fn_details_unity3d(){
fn_check_ip
pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
fn_parms
@ -326,7 +356,7 @@ rm -f .fn_details_ports
fn_details_statusbottom
}
fn_unrealdetails(){
fn_details_unreal(){
fn_check_ip
pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
fn_parms
@ -384,19 +414,21 @@ fn_details_statusbottom
}
if [ "${engine}" == "avalanche" ]; then
fn_avalanchedetails
fn_details_avalanche
elif [ "${engine}" == "realvirtuality" ]; then
fn_realvirtualitydetails
fn_details_realvirtuality
elif [ "${engine}" == "seriousengine35" ]; then
fn_seriousengine35details
fn_details_seriousengine35
elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
fn_sourcedetails
fn_details_source
elif [ "${engine}" == "spark" ]; then
fn_sparkdetails
fn_details_spark
elif [ "${engine}" == "unity3d" ]; then
fn_unity3ddetails
fn_details_unity3d
elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
fn_unrealdetails
fn_details_unreal
elif [ "${gamename}" == "Teamspeak 3" ]; then
fn_details_teamspeak3
else
fn_printerrornl "Unable to detect server engine."
fi

View File

@ -2,7 +2,7 @@
# LGSM fn_details_config function
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 210115
# Version: 080215
# Description: Gets specific details from config files.
@ -27,7 +27,18 @@ elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
elif [ "${engine}" == "spark" ]; then
queryport=$((${port} + 1))
elif [ "${gamename}" == "Teamspeak 3" ]; then
if [ -s "${servercfgfullpath}" ]; then
port=$(grep default_voice_port= "${servercfgfullpath}"|tr -cd [:digit:])
queryport=$(grep query_port= "${servercfgfullpath}"|tr -cd [:digit:])
fileport=$(grep filetransfer_port= "${servercfgfullpath}"|tr -cd [:digit:])
ip=$(grep voice_ip= "${servercfgfullpath}"|sed 's/\voice_ip=//g')
dbplugin=$(grep dbplugin= "${servercfgfullpath}"|sed 's/\dbplugin=//g')
else
port="9987"
queryport="10011"
fileport="30033"
fi
elif [ "${engine}" == "unity3d" ]; then
servername=$(grep ServerName "${servercfgfullpath}"|sed 's/^.*value="//'|cut -f1 -d"\"")
port=$(grep ServerPort "${servercfgfullpath}"|tr -cd [:digit:])
@ -49,11 +60,9 @@ elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
webadminport=$(grep ListenPort= "${servercfgfullpath}"|tr -d '\r'|tr -cd [:digit:])
if [ "${engine}" == "unreal" ]; then
webadminuser=$(grep AdminUsername= "${servercfgfullpath}"|sed 's/\AdminUsername=//g')
webadminpass=$(grep UTServerAdmin.UTServerAdmin "${servercfgfullpath}" -A 2| grep AdminPassword= |sed 's/\AdminPassword=//g')
webadminpass=$(grep UTServerAdmin.UTServerAdmin "${servercfgfullpath}" -A 2| grep AdminPassword=|sed 's/\AdminPassword=//g')
else
webadminuser=$(grep AdminName= "${servercfgfullpath}"|sed 's/\AdminName=//g')
webadminpass=$(grep AdminPassword= "${servercfgfullpath}"|sed 's/\AdminPassword=//g')
fi
fi

View File

@ -2,7 +2,7 @@
# LGSM fn_getopt function
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 210115
# Version: 080214
# Description: getopt arguments.
@ -48,6 +48,31 @@ esac
exit
}
fn_getopt_teamspeak3(){
case "$1" in
start)
fn_start;;
stop)
fn_stop;;
restart)
fn_restart;;
backup)
fn_backup;;
monitor)
fn_monitor;;
email-test)
fn_email_test;;
details)
fn_details;;
backup)
fn_backup;;
*)
echo "Usage: $0 {start|stop|restart|backup|monitor|email-test|details|backup}"
exit 1;;
esac
exit
}
fn_getopt_unreal(){
case "$getopt" in
start)

View File

@ -2,13 +2,16 @@
# LGSM fn_logs function
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 210115
# Version: 080214
# Description: Acts as a log rotater, removing old logs.
local modulename="Log Manager"
if [ ! -e "${consolelog}" ]; then
touch "${consolelog}"
if [ -n "${consolelog}" ]; then
if [ ! -e "${consolelog}" ]; then
touch "${consolelog}"
fi
fi
# log manager will active if finds logs older than ${logdays}
if [ $(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l) -ne "0" ]; then
@ -26,12 +29,17 @@ if [ $(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l) -ne "0" ]; then
find "${gamelogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}"
fi
find "${scriptlogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}"
find "${consolelogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}"
if
if [ -n "${consolelog}" ]; then
find "${consolelogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}"
fi
if [ "${engine}" == "unreal2" ]; then
gamecount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l)
fi
scriptcount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l)
consolecount=$(find "${consolelogdir}"/* -mtime +${logdays}|wc -l)
if [ -n "${consolelog}" ]; then
consolecount=$(find "${consolelogdir}"/* -mtime +${logdays}|wc -l)
fi
count=$((${scriptcount} + ${consolecount}))
if [ "${engine}" == "unreal2" ]; then
count=$((${scriptcount} + ${consolecount} + ${gamecount}))
@ -42,7 +50,9 @@ if [ $(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l) -ne "0" ]; then
find "${gamelogdir}"/* -mtime +${logdays} -exec rm {} \;
fi
find "${scriptlogdir}"/* -mtime +${logdays} -exec rm {} \;
find "${consolelogdir}"/* -mtime +${logdays} -exec rm {} \;
if [ -n "${consolelog}" ]; then
find "${consolelogdir}"/* -mtime +${logdays} -exec rm {} \;
fi
fn_printok "Removed ${count} log files"
fn_scriptlog "Removed ${count} log files"
sleep 1

View File

@ -2,11 +2,71 @@
# LGSM fn_start function
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 210115
# Version: 080214
# Description: Starts the server.
local modulename="Starting"
fn_start_teamspeak3(){
# Create any missing log dirs
if [ ! -d ${scriptlogdir} ];then
mkdir ${rootdir}/log
mkdir ${scriptlogdir}
fn_printinfo "Creating log directorys ${scriptlogdir}"
fn_scriptlog "Creating log directorys ${scriptlogdir}"
fi
if [ ! -h ${rootdir}/log/server ]; then
ln -sv ${gamelogdir} ${rootdir}/log/server
fi
fn_check_root
fn_check_systemdir
fn_check_ts3status
if [ "${ts3status}" = "Server is running" ]; then
fn_printinfo "${servername} is already running"
fn_scriptlog "${servername} is already running"
sleep 1
echo -en "\n"
exit
fi
if [ ! -e ${servercfgfullpath} ]; then
fn_printwarn "${servercfgfullpath} is missing"
fn_scriptlog "${servercfgfullpath} is missing"
sleep 1
fn_printinfo "Creating blank ${servercfgfullpath}"
fn_scriptlog "Creating blank ${servercfgfullpath}"
sleep 1
fn_printinfo "${servercfgfullpath} can remain blank by default."
fn_scriptlog "${servercfgfullpath} can remain blank by default."
sleep 1
touch "${servercfgfullpath}"
fi
fn_logs
fn_printdots "${servername}"
fn_scriptlog "${servername}"
sleep 1
mv "${scriptlog}" "${scriptlogdate}"
# Create lock file
date > "${rootdir}/${lockselfname}"
cd "${executabledir}"
./ts3server_startscript.sh start inifile=${servercfgfullpath} > /dev/null 2>&1
sleep 1
fn_check_ts3status
#
if [ "${ts3status}" = "Server seems to have died" ] || [ "${ts3status}" = "No server running (ts3server.pid is missing)" ];then
fn_printfailnl "Unable to start ${servername}"
fn_scriptlog "Unable to start ${servername}"
echo -en " Check log files: ${rootdir}/log"
else
fn_printok "${servername}"
fn_scriptlog "Started ${servername}"
fi
sleep 0.5
echo -en "\n"
}
fn_start_tmux(){
fn_check_root
fn_check_systemdir
fn_check_ip
@ -66,4 +126,11 @@ else
fi
rm "${scriptlogdir}/.${servicename}-tmux-error.tmp"
sleep 1
echo -en "\n"
echo -en "\n"
}
if [ "${gamename}" == "Teamspeak 3" ]; then
fn_start_teamspeak3
else
fn_start_tmux
fi

View File

@ -2,11 +2,34 @@
# LGSM fn_stop function
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 210115
# Version: 080214
# Description: Stops the server.
local modulename="Stopping"
fn_stop_teamspeak3(){
fn_check_root
fn_check_systemdir
fn_printdots "${servername}"
fn_scriptlog "${servername}"
sleep 1
fn_check_ts3status
if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ];then
fn_printfail "${servername} is already stopped"
fn_scriptlog "${servername} is already stopped"
else
${filesdir}/ts3server_startscript.sh stop inifile=${ini} > /dev/null 2>&1
fn_printok "${servername}"
fn_scriptlog "Stopped ${servername}"
fi
# Remove lock file
rm -f "${rootdir}/${lockselfname}"
sleep 1
echo -en "\n"
}
fn_stop_tmux(){
fn_check_root
fn_check_systemdir
fn_details_config
@ -24,6 +47,13 @@ else
fn_scriptlog "Stopped ${servername}"
fi
# Remove lock file
rm -f "${lockselfname}"
rm -f "${rootdir}/${lockselfname}"
sleep 1
echo -en "\n"
echo -en "\n"
}
if [ "${gamename}" == "Teamspeak 3" ]; then
fn_stop_teamspeak3
else
fn_stop_tmux
fi