|
|
@@ -0,0 +1,352 @@
|
|
|
+#!/bin/bash
|
|
|
+# Serious Sam 3: BFE
|
|
|
+# Server Management Script
|
|
|
+# Author: Daniel Gibbs
|
|
|
+# Website: http://danielgibbs.co.uk
|
|
|
+# Version: 161214
|
|
|
+
|
|
|
+#### Variables ####
|
|
|
+
|
|
|
+# Notification Email
|
|
|
+# (on|off)
|
|
|
+emailnotification="off"
|
|
|
+email="email@example.com"
|
|
|
+
|
|
|
+# Steam login
|
|
|
+steamuser="username"
|
|
|
+steampass="passwprd"
|
|
|
+
|
|
|
+# Start Variables
|
|
|
+ip="0.0.0.0"
|
|
|
+
|
|
|
+# https://raw.githubusercontent.com/dgibbs64/linuxgameservers/master/SeriousSam3BFE/help/DedicatedServer_Readme.txt
|
|
|
+fn_parms(){
|
|
|
+parms="+ip ${ip} +logfile ${gamelog} +exec ${servercfgfullpath}"
|
|
|
+}
|
|
|
+
|
|
|
+#### Advanced Variables ####
|
|
|
+
|
|
|
+# Steam
|
|
|
+appid="41080"
|
|
|
+
|
|
|
+# Server Details
|
|
|
+servicename="ss3-server"
|
|
|
+gamename="Serious Sam 3: BFE"
|
|
|
+engine="seriousengine35"
|
|
|
+
|
|
|
+# Directories
|
|
|
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
+selfname="$0"
|
|
|
+lockselfname=$(echo ".${servicename}.lock")
|
|
|
+filesdir="${rootdir}/serverfiles"
|
|
|
+systemdir="${filesdir}/Bin"
|
|
|
+executabledir="${systemdir}"
|
|
|
+executable="./runSam3_DedicatedServer.sh"
|
|
|
+servercfgdir="${filesdir}/Content/SeriousSam3/Config"
|
|
|
+servercfg="${servicename}.ini"
|
|
|
+servercfgfullpath="${servercfgdir}/${servercfg}"
|
|
|
+backupdir="backups"
|
|
|
+
|
|
|
+# 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
|
|
|
+# 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}"
|
|
|
+}
|
|
|
+
|
|
|
+#
|
|
|
+## Installer
|
|
|
+#
|
|
|
+
|
|
|
+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_serverconfig
|
|
|
+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;;
|
|
|
+ *)
|
|
|
+ echo "Usage: $0 {start|stop|restart|update|update-restart|validate|validate-restart|monitor|email-test|details|backup|console|debug|install|auto-install}"
|
|
|
+ exit 1;;
|
|
|
+esac
|
|
|
+exit
|