lgsm local mirror
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

364 lines
6.0 KiB

#!/bin/bash
# Red Orchestra: Ostfront 41-45
# Server Management Script
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 011214
#### Variables ####
# Notification Email
# (on|off)
emailnotification="off"
email="[email protected]"
# Steam login
steamuser="username"
steampass="password"
# Steam
appid="223250"
# Directories
rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
selfname="$0"
lockselfname=$(echo ".${servicename}.lock")
filesdir="${rootdir}/serverfiles"
systemdir="${filesdir}/system"
executabledir="${systemdir}"
executable="./ucc-bin"
compressedmapsdir="${rootdir}/Maps-Compressed"
defaultcfg="${systemdir}/default.ini"
backupdir="backups"
# Server Details
servicename="ro-server"
gamename="Red Orchestra: Ostfront 41-45"
engine="unreal2"
ini="${servicename}.ini"
servername=$(grep -s ServerName= ${systemdir}/${ini}|sed 's/ServerName=//g')
ip="0.0.0.0"
# Logging
logdays="7"
gamelogdir="${rootdir}/log/server"
scriptlogdir="${rootdir}/log/script"
consolelogdir="${rootdir}/log/console"
gamelog="${gamelogdir}/${servicename}-game.log"
scriptlog="${scriptlogdir}/${servicename}-script.log"
consolelog="${consolelogdir}/${servicename}-console.log"
emaillog="${scriptlogdir}/${servicename}-email.log"
gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').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"
# Start Variables
fn_parms(){
defaultmap="RO-Arad.rom"
parms="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir ini=${ini} log=${gamelog}"
}
##### Script #####
# Do not edit
# unless you know
# what you are doing
fn_scriptlog(){
echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${1}" >> "${scriptlog}"
}
# [ FAIL ]
fn_printfail(){
echo -en "\r\033[K[\e[0;31m FAIL \e[0;39m] $@"
}
fn_printfailnl(){
echo -e "\r\033[K[\e[0;31m FAIL \e[0;39m] $@"
}
# [ OK ]
fn_printok(){
echo -en "\r\033[K[\e[0;32m OK \e[0;39m] $@"
}
fn_printoknl(){
echo -e "\r\033[K[\e[0;32m OK \e[0;39m] $@"
}
# [ INFO ]
fn_printinfo(){
echo -en "\r\033[K[\e[0;36m INFO \e[0;39m] $@"
}
fn_printinfonl(){
echo -e "\r\033[K[\e[0;36m INFO \e[0;39m] $@"
}
# [ WARN ]
fn_printwarn(){
echo -en "\r\033[K[\e[1;33m WARN \e[0;39m] $@"
}
fn_printwarnnl(){
echo -e "\r\033[K[\e[1;33m WARN \e[0;39m] $@"
}
# [ .... ]
fn_printdots(){
echo -en "\r\033[K[ .... ] $@"
}
fn_rootcheck(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_syscheck(){
if [ ! -e "${systemdir}" ]; then
fn_printfailnl "Cannot access ${systemdir}: No such directory"
exit
fi
}
fn_autoip(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_logmanager(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_debugserver(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_console(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_backupserver(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_distro(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_uptime(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_load(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_emailnotification(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_emailtest(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_serverquery(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_monitorserver(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_updateserver(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_validateserver(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_restartserver(){
fn_scriptlog "Restarting ${servername}"
fn_stopserver
fn_startserver
}
fn_stopserver(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_startserver(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_details(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_runfunction(){
# Download function if missing
if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
cd "${rootdir}"
if [ ! -d "functions" ]; then
mkdir functions
fi
echo "loading ${functionfile}..."
cd functions
wget --no-check-certificate -nv -N https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/functions/${functionfile}
chmod +x "${functionfile}"
cd "${rootdir}"
sleep 1
echo ""
fi
# Run function
source "${rootdir}/functions/${functionfile}"
}
fn_unreal2compressmaps(){
functionfile="${FUNCNAME}"
fn_runfunction
}
#
## Installer
#
fn_rofix(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_header(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_steamdl(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_steaminstall(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_steamfix(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_loginstall(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_getquery(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_retryinstall(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_serverdirectory(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_serverconfig(){
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_install(){
fn_rootcheck
fn_header
if [ -z "${autoinstall}" ]; then
fn_serverdirectory
fn_header
fi
fn_steamdl
fn_steaminstall
fn_steamfix
fn_loginstall
fn_getquery
fn_serverconfig
fn_rofix
fn_header
fn_details
echo "================================="
echo "Install Complete!"
echo ""
echo "To start server type:"
echo "${selfname} start"
echo ""
}
fn_autoinstall(){
autoinstall=1
fn_install
}
case "$1" in
start)
fn_startserver;;
stop)
fn_stopserver;;
restart)
fn_restartserver;;
update)
fn_updateserver;;
update-restart)
fn_stopserver
fn_updateserver
fn_startserver;;
validate)
fn_validateserver;;
validate-restart)
fn_stopserver
fn_validateserver
fn_startserver;;
monitor)
fn_monitorserver;;
email-test)
fn_emailtest;;
details)
fn_details;;
backup)
fn_backupserver;;
console)
fn_console;;
debug)
fn_debugserver;;
install)
fn_install;;
auto-install)
fn_autoinstall;;
map-compressor)
fn_unreal2compressmaps;;
*)
echo "Usage: $0 {start|stop|restart|update|update-restart|validate|validate-restart|monitor|email-test|details|backup|console|debug|install|auto-install|map-compressor}"
exit 1;;
esac
exit