#!/bin/bash
# Killing Floor
# Server Management Script
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 010115

#### Variables ####

# Notification Email
# (on|off)
emailnotification="off"
email="email@example.com"

# Steam login
steamuser="username"
steampass="password"

# Start Variables
fn_parms(){
defaultmap="KF-BioticsLab.rom"
parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${ini} log=${gamelog}"

# Start Variables for Objective mode
#defaultmap="KFO-Steamland"
#parms="server ${defaultmap}?Game=KFStoryGame.KFStoryGame?VACSecured=true -nohomedir ini=${ini} log=${gamelog}"
}

#### Advanced Variables ####

# Steam
appid="215360"

# 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="kf-server"
gamename="Killing Floor"
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"

##### Script #####
# Do not edit

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_kffix
fn_header
fn_details
fn_installcomplete
}

fn_functions(){
# Functions are defines in fn_functions.
functionfile="${FUNCNAME}"
fn_runfunction
}

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_functions

case "$1" in
	start)
		fn_startserver;;
	stop)
		fn_stopserver;;
	restart)
		fn_restartserver;;
	update)
		norestart=1;
		fn_versioncheck;;
	update-restart)
		fn_versioncheck;;
	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