|
@ -1,54 +1,81 @@ |
|
|
#!/bin/bash |
|
|
#!/bin/bash |
|
|
# Quake World (nQuake) |
|
|
# Project: Game Server Managers - LinuxGSM |
|
|
# Server Management Script |
|
|
|
|
|
# Author: Daniel Gibbs |
|
|
# Author: Daniel Gibbs |
|
|
|
|
|
# License: MIT License, Copyright (c) 2016 Daniel Gibbs |
|
|
|
|
|
# Purpose: Quake World (nQuake) | Server Management Script |
|
|
|
|
|
# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors |
|
|
|
|
|
# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki |
|
|
# Website: https://gameservermanagers.com |
|
|
# Website: https://gameservermanagers.com |
|
|
|
|
|
|
|
|
|
|
|
# Debugging |
|
|
if [ -f ".dev-debug" ]; then |
|
|
if [ -f ".dev-debug" ]; then |
|
|
exec 5>dev-debug.log |
|
|
exec 5>dev-debug.log |
|
|
BASH_XTRACEFD="5" |
|
|
BASH_XTRACEFD="5" |
|
|
set -x |
|
|
set -x |
|
|
fi |
|
|
fi |
|
|
|
|
|
|
|
|
version="210516" |
|
|
version="161221" |
|
|
|
|
|
|
|
|
#### Variables #### |
|
|
########################## |
|
|
|
|
|
######## Settings ######## |
|
|
|
|
|
########################## |
|
|
|
|
|
|
|
|
# Notification Alerts |
|
|
#### Server Settings #### |
|
|
# (on|off) |
|
|
|
|
|
|
|
|
## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters |
|
|
|
|
|
port="27500" |
|
|
|
|
|
ip="0.0.0.0" |
|
|
|
|
|
|
|
|
|
|
|
## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters |
|
|
|
|
|
# Edit with care | https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server |
|
|
|
|
|
fn_parms(){ |
|
|
|
|
|
parms="-port ${port} -game ktx +exec ${servercfg}" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
# Email |
|
|
#### LinuxGSM Settings #### |
|
|
|
|
|
|
|
|
|
|
|
## Notification Alerts |
|
|
|
|
|
# (on|off) |
|
|
|
|
|
# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email |
|
|
emailalert="off" |
|
|
emailalert="off" |
|
|
email="email@example.com" |
|
|
email="email@example.com" |
|
|
|
|
|
emailfrom="" |
|
|
|
|
|
|
|
|
# Pushbullet |
|
|
# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet |
|
|
# https://www.pushbullet.com/#settings |
|
|
|
|
|
pushbulletalert="off" |
|
|
pushbulletalert="off" |
|
|
pushbullettoken="accesstoken" |
|
|
pushbullettoken="accesstoken" |
|
|
channeltag="" |
|
|
channeltag="" |
|
|
|
|
|
|
|
|
# Start Variables |
|
|
## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup |
|
|
ip="0.0.0.0" |
|
|
maxbackups="4" |
|
|
port="27500" |
|
|
maxbackupdays="30" |
|
|
|
|
|
stoponbackup="on" |
|
|
|
|
|
|
|
|
fn_parms(){ |
|
|
## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging |
|
|
parms="-port ${port} -game ktx +exec ${servercfg}" |
|
|
consolelogging="on" |
|
|
} |
|
|
logdays="7" |
|
|
|
|
|
|
|
|
#### Advanced Variables #### |
|
|
#### LinuxGSM Advanced Settings #### |
|
|
|
|
|
|
|
|
# Github Branch Select |
|
|
## Github Branch Select |
|
|
# Allows for the use of different function files |
|
|
# Allows for the use of different function files |
|
|
# from a different repo and/or branch. |
|
|
# from a different repo and/or branch. |
|
|
githubuser="GameServerManagers" |
|
|
githubuser="GameServerManagers" |
|
|
githubrepo="LinuxGSM" |
|
|
githubrepo="LinuxGSM" |
|
|
githubbranch="master" |
|
|
githubbranch="master" |
|
|
|
|
|
|
|
|
# Server Details |
|
|
## LinuxGSM Server Details |
|
|
servicename="quakeworld_server" |
|
|
# Do not edit |
|
|
gamename="QuakeWorld" |
|
|
gamename="QuakeWorld" |
|
|
engine="quake" |
|
|
engine="quake" |
|
|
|
|
|
|
|
|
# Directories |
|
|
## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers |
|
|
|
|
|
servicename="quakeworld_server" |
|
|
|
|
|
|
|
|
|
|
|
#### Directories #### |
|
|
|
|
|
# Edit with care |
|
|
|
|
|
|
|
|
|
|
|
## Work Directories |
|
|
rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" |
|
|
rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" |
|
|
selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" |
|
|
selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" |
|
|
lockselfname=".${servicename}.lock" |
|
|
lockselfname=".${servicename}.lock" |
|
@ -57,6 +84,8 @@ functionsdir="${lgsmdir}/functions" |
|
|
libdir="${lgsmdir}/lib" |
|
|
libdir="${lgsmdir}/lib" |
|
|
tmpdir="${lgsmdir}/tmp" |
|
|
tmpdir="${lgsmdir}/tmp" |
|
|
filesdir="${rootdir}/serverfiles" |
|
|
filesdir="${rootdir}/serverfiles" |
|
|
|
|
|
|
|
|
|
|
|
## Server Specific Directories |
|
|
systemdir="${filesdir}/ktx" |
|
|
systemdir="${filesdir}/ktx" |
|
|
executabledir="${filesdir}" |
|
|
executabledir="${filesdir}" |
|
|
executable="./mvdsv" |
|
|
executable="./mvdsv" |
|
@ -64,24 +93,26 @@ servercfg="${servicename}.cfg" |
|
|
servercfgdefault="server.cfg" |
|
|
servercfgdefault="server.cfg" |
|
|
servercfgdir="${systemdir}" |
|
|
servercfgdir="${systemdir}" |
|
|
servercfgfullpath="${servercfgdir}/${servercfg}" |
|
|
servercfgfullpath="${servercfgdir}/${servercfg}" |
|
|
|
|
|
|
|
|
|
|
|
## Backup Directory |
|
|
backupdir="${rootdir}/backups" |
|
|
backupdir="${rootdir}/backups" |
|
|
|
|
|
|
|
|
# Logging |
|
|
## Logging Directories |
|
|
logdays="7" |
|
|
gamelogdir="${systemdir}/logs" |
|
|
gamelogdir="${filesdir}/Logs" |
|
|
|
|
|
scriptlogdir="${rootdir}/log/script" |
|
|
scriptlogdir="${rootdir}/log/script" |
|
|
consolelogdir="${rootdir}/log/console" |
|
|
consolelogdir="${rootdir}/log/console" |
|
|
consolelogging="on" |
|
|
|
|
|
|
|
|
|
|
|
scriptlog="${scriptlogdir}/${servicename}-script.log" |
|
|
scriptlog="${scriptlogdir}/${servicename}-script.log" |
|
|
consolelog="${consolelogdir}/${servicename}-console.log" |
|
|
consolelog="${consolelogdir}/${servicename}-console.log" |
|
|
emaillog="${scriptlogdir}/${servicename}-email.log" |
|
|
emaillog="${scriptlogdir}/${servicename}-email.log" |
|
|
|
|
|
|
|
|
scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" |
|
|
## Logs Naming |
|
|
consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" |
|
|
scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log" |
|
|
|
|
|
consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log" |
|
|
|
|
|
|
|
|
##### Script ##### |
|
|
######################## |
|
|
# Do not edit |
|
|
######## Script ######## |
|
|
|
|
|
###### Do not edit ##### |
|
|
|
|
|
######################## |
|
|
|
|
|
|
|
|
# Fetches core_dl for file downloads |
|
|
# Fetches core_dl for file downloads |
|
|
fn_fetch_core_dl(){ |
|
|
fn_fetch_core_dl(){ |
|
@ -138,8 +169,18 @@ functionfile="${FUNCNAME}" |
|
|
fn_fetch_core_dl |
|
|
fn_fetch_core_dl |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# Prevent from running this script as root. |
|
|
|
|
|
if [ "$(whoami)" = "root" ]; then |
|
|
|
|
|
if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then |
|
|
|
|
|
echo "[ FAIL ] Do NOT run this script as root!" |
|
|
|
|
|
exit 1 |
|
|
|
|
|
else |
|
|
|
|
|
core_functions.sh |
|
|
|
|
|
check_root.sh |
|
|
|
|
|
fi |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
core_dl.sh |
|
|
core_dl.sh |
|
|
core_functions.sh |
|
|
core_functions.sh |
|
|
|
|
|
|
|
|
getopt=$1 |
|
|
getopt=$1 |
|
|
core_getopt.sh |
|
|
core_getopt.sh |