68 changed files with 257 additions and 863 deletions
@ -0,0 +1,191 @@ |
|||||
|
#!/bin/bash |
||||
|
# Project: Game Server Managers - LinuxGSM |
||||
|
# Author: Daniel Gibbs |
||||
|
# License: MIT License, Copyright (c) 2017 Daniel Gibbs |
||||
|
# Purpose: Factorio | Server Management Script |
||||
|
# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors |
||||
|
# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki |
||||
|
# Website: https://gameservermanagers.com |
||||
|
|
||||
|
# Debugging |
||||
|
if [ -f ".dev-debug" ]; then |
||||
|
exec 5>dev-debug.log |
||||
|
BASH_XTRACEFD="5" |
||||
|
set -x |
||||
|
fi |
||||
|
|
||||
|
version="161224" |
||||
|
|
||||
|
########################## |
||||
|
######## Settings ######## |
||||
|
########################## |
||||
|
|
||||
|
#### Server Settings #### |
||||
|
|
||||
|
## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters |
||||
|
port="34197" |
||||
|
rconport="34198" |
||||
|
rconpassword="CHANGE_ME" |
||||
|
ip="0.0.0.0" |
||||
|
|
||||
|
## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters |
||||
|
# Edit with care |
||||
|
fn_parms(){ |
||||
|
parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}" |
||||
|
} |
||||
|
|
||||
|
#### LinuxGSM Settings #### |
||||
|
|
||||
|
## Notification Alerts |
||||
|
# (on|off) |
||||
|
# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email |
||||
|
emailalert="off" |
||||
|
email="[email protected]" |
||||
|
emailfrom="" |
||||
|
|
||||
|
# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet |
||||
|
pushbulletalert="off" |
||||
|
pushbullettoken="accesstoken" |
||||
|
channeltag="" |
||||
|
|
||||
|
## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update |
||||
|
updateonstart="off" |
||||
|
|
||||
|
## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup |
||||
|
maxbackups="4" |
||||
|
maxbackupdays="30" |
||||
|
stoponbackup="on" |
||||
|
|
||||
|
## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging |
||||
|
consolelogging="on" |
||||
|
logdays="7" |
||||
|
|
||||
|
#### LinuxGSM Advanced Settings #### |
||||
|
|
||||
|
## Github Branch Select |
||||
|
# Allows for the use of different function files |
||||
|
# from a different repo and/or branch. |
||||
|
githubuser="GameServerManagers" |
||||
|
githubrepo="LinuxGSM" |
||||
|
githubbranch="feature/factorio" |
||||
|
|
||||
|
## LinuxGSM Server Details |
||||
|
# Do not edit |
||||
|
gamename="Factorio" |
||||
|
engine="" |
||||
|
|
||||
|
## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers |
||||
|
servicename="fctr-server" |
||||
|
|
||||
|
#### Directories #### |
||||
|
# Edit with care |
||||
|
|
||||
|
## Work Directories |
||||
|
rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" |
||||
|
selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" |
||||
|
lockselfname=".${servicename}.lock" |
||||
|
lgsmdir="${rootdir}/lgsm" |
||||
|
functionsdir="${lgsmdir}/functions" |
||||
|
libdir="${lgsmdir}/lib" |
||||
|
tmpdir="${lgsmdir}/tmp" |
||||
|
filesdir="${rootdir}/serverfiles" |
||||
|
|
||||
|
## Server Specific Directories |
||||
|
systemdir="${filesdir}" |
||||
|
executabledir="${filesdir}/bin/x64" |
||||
|
executable="./factorio" |
||||
|
servercfg="${servicename}.json" |
||||
|
servercfgdefault="server-settings.json" |
||||
|
servercfgdir="${filesdir}/data" |
||||
|
servercfgfullpath="${servercfgdir}/${servercfg}" |
||||
|
|
||||
|
## Backup Directory |
||||
|
backupdir="${rootdir}/backups" |
||||
|
|
||||
|
## Logging Directories |
||||
|
gamelogdir="${filesdir}" |
||||
|
scriptlogdir="${rootdir}/log/script" |
||||
|
consolelogdir="${rootdir}/log/console" |
||||
|
scriptlog="${scriptlogdir}/${servicename}-script.log" |
||||
|
consolelog="${consolelogdir}/${servicename}-console.log" |
||||
|
emaillog="${scriptlogdir}/${servicename}-email.log" |
||||
|
|
||||
|
## Logs Naming |
||||
|
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 ##### |
||||
|
######################## |
||||
|
|
||||
|
# Fetches core_dl for file downloads |
||||
|
fn_fetch_core_dl(){ |
||||
|
github_file_url_dir="lgsm/functions" |
||||
|
github_file_url_name="${functionfile}" |
||||
|
filedir="${functionsdir}" |
||||
|
filename="${github_file_url_name}" |
||||
|
githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" |
||||
|
# If the file is missing, then download |
||||
|
if [ ! -f "${filedir}/${filename}" ]; then |
||||
|
if [ ! -d "${filedir}" ]; then |
||||
|
mkdir -p "${filedir}" |
||||
|
fi |
||||
|
echo -e " fetching ${filename}...\c" |
||||
|
# Check curl exists and use available path |
||||
|
curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)" |
||||
|
for curlcmd in ${curlpaths} |
||||
|
do |
||||
|
if [ -x "${curlcmd}" ]; then |
||||
|
break |
||||
|
fi |
||||
|
done |
||||
|
# If curl exists download file |
||||
|
if [ "$(basename ${curlcmd})" == "curl" ]; then |
||||
|
curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1) |
||||
|
if [ $? -ne 0 ]; then |
||||
|
echo -e "\e[0;31mFAIL\e[0m\n" |
||||
|
echo "${curlfetch}" |
||||
|
echo -e "${githuburl}\n" |
||||
|
exit 1 |
||||
|
else |
||||
|
echo -e "\e[0;32mOK\e[0m" |
||||
|
fi |
||||
|
else |
||||
|
echo -e "\e[0;31mFAIL\e[0m\n" |
||||
|
echo "Curl is not installed!" |
||||
|
echo -e "" |
||||
|
exit 1 |
||||
|
fi |
||||
|
chmod +x "${filedir}/${filename}" |
||||
|
fi |
||||
|
source "${filedir}/${filename}" |
||||
|
} |
||||
|
|
||||
|
core_dl.sh(){ |
||||
|
# Functions are defined in core_functions.sh. |
||||
|
functionfile="${FUNCNAME}" |
||||
|
fn_fetch_core_dl |
||||
|
} |
||||
|
|
||||
|
core_functions.sh(){ |
||||
|
# Functions are defined in core_functions.sh. |
||||
|
functionfile="${FUNCNAME}" |
||||
|
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_functions.sh |
||||
|
getopt=$1 |
||||
|
core_getopt.sh |
@ -1,797 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# LGSM command_details.sh function |
|
||||
# Author: Daniel Gibbs |
|
||||
# Contributor: UltimateByte |
|
||||
# Website: https://gameservermanagers.com |
|
||||
# Description: Displays server information. |
|
||||
|
|
||||
local commandname="DETAILS" |
|
||||
local commandaction="Details" |
|
||||
local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" |
|
||||
|
|
||||
# Standard Details |
|
||||
# This applies to all engines |
|
||||
|
|
||||
fn_details_os(){ |
|
||||
# |
|
||||
# Distro Details |
|
||||
# ===================================== |
|
||||
# Distro: Ubuntu 14.04.4 LTS |
|
||||
# Arch: x86_64 |
|
||||
# Kernel: 3.13.0-79-generic |
|
||||
# Hostname: hostname |
|
||||
# tmux: tmux 1.8 |
|
||||
# GLIBC: 2.19 |
|
||||
|
|
||||
echo -e "" |
|
||||
echo -e "${lightyellow}Distro Details${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
{ |
|
||||
echo -e "${blue}Distro:\t${default}${distroname}" |
|
||||
echo -e "${blue}Arch:\t${default}${arch}" |
|
||||
echo -e "${blue}Kernel:\t${default}${kernel}" |
|
||||
echo -e "${blue}Hostname:\t${default}$HOSTNAME" |
|
||||
echo -e "${blue}tmux:\t${default}${tmuxv}" |
|
||||
echo -e "${blue}GLIBC:\t${default}${glibcversion}" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_performance(){ |
|
||||
# |
|
||||
# Performance |
|
||||
# ===================================== |
|
||||
# Uptime: 55d, 3h, 38m |
|
||||
# Avg Load: 1.00, 1.01, 0.78 |
|
||||
# |
|
||||
# Mem: total used free cached |
|
||||
# Physical: 741M 656M 85M 256M |
|
||||
# Swap: 0B 0B 0B |
|
||||
|
|
||||
echo -e "" |
|
||||
echo -e "${lightyellow}Performance${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
{ |
|
||||
echo -e "${blue}Uptime:\t${default}${days}d, ${hours}h, ${minutes}m" |
|
||||
echo -e "${blue}Avg Load:\t${default}${load}" |
|
||||
} | column -s $'\t' -t |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "${blue}Mem:\t${blue}total\t used\t free\t cached${default}" |
|
||||
echo -e "${blue}Physical:\t${default}${physmemtotal}\t${physmemused}\t${physmemfree}\t${physmemcached}${default}" |
|
||||
echo -e "${blue}Swap:\t${default}${swaptotal}\t${swapused}\t${swapfree}${default}" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_disk(){ |
|
||||
# |
|
||||
# Storage |
|
||||
# ===================================== |
|
||||
# Filesystem: /dev/disk/by-uuid/320c8edd-a2ce-4a23-8c9d-e00a7af2d6ff |
|
||||
# Total: 15G |
|
||||
# Used: 8.4G |
|
||||
# Available: 5.7G |
|
||||
# LGSM Total: 1G |
|
||||
# Serverfiles: 961M |
|
||||
# Backups: 2G |
|
||||
|
|
||||
echo -e "" |
|
||||
echo -e "${lightyellow}Storage${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
{ |
|
||||
echo -e "${blue}Filesystem:\t${default}${filesystem}" |
|
||||
echo -e "${blue}Total:\t${default}${totalspace}" |
|
||||
echo -e "${blue}Used:\t${default}${usedspace}" |
|
||||
echo -e "${blue}Available:\t${default}${availspace}" |
|
||||
echo -e "${blue}LGSM Total:\t${default}${rootdirdu}" |
|
||||
echo -e "${blue}Serverfiles:\t${default}${filesdirdu}" |
|
||||
if [ -d "${backupdir}" ]; then |
|
||||
echo -e "${blue}Backups:\t${default}${backupdirdu}" |
|
||||
fi |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_gameserver(){ |
|
||||
# |
|
||||
# Quake Live Server Details |
|
||||
# ===================================== |
|
||||
# Server name: ql-server |
|
||||
# Server IP: 1.2.3.4:27960 |
|
||||
# RCON password: CHANGE_ME |
|
||||
# Server password: NOT SET |
|
||||
# Maxplayers: 16 |
|
||||
# Status: OFFLINE |
|
||||
|
|
||||
echo -e "" |
|
||||
echo -e "${lightgreen}${gamename} Server Details${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
{ |
|
||||
# Server name |
|
||||
if [ -n "${servername}" ]; then |
|
||||
echo -e "${blue}Server name:\t${default}${servername}" |
|
||||
fi |
|
||||
|
|
||||
# Server ip |
|
||||
echo -e "${blue}Server IP:\t${default}${ip}:${port}" |
|
||||
|
|
||||
# Server password |
|
||||
if [ -n "${serverpassword}" ]; then |
|
||||
echo -e "${blue}Server password:\t${default}${serverpassword}" |
|
||||
fi |
|
||||
|
|
||||
# RCON password |
|
||||
if [ -n "${rconpassword}" ]; then |
|
||||
echo -e "${blue}RCON password:\t${default}${rconpassword}" |
|
||||
fi |
|
||||
|
|
||||
# Admin password |
|
||||
if [ -n "${adminpassword}" ]; then |
|
||||
echo -e "${blue}Admin password:\t${default}${adminpassword}" |
|
||||
fi |
|
||||
|
|
||||
# Stats password (Quake Live) |
|
||||
if [ -n "${statspassword}" ]; then |
|
||||
echo -e "${blue}Stats password:\t${default}${statspassword}" |
|
||||
fi |
|
||||
|
|
||||
# Maxplayers |
|
||||
if [ -n "${maxplayers}" ]; then |
|
||||
echo -e "${blue}Maxplayers:\t${default}${maxplayers}" |
|
||||
fi |
|
||||
|
|
||||
# Game mode |
|
||||
if [ -n "${gamemode}" ]; then |
|
||||
echo -e "${blue}Game mode:\t${default}${gamemode}" |
|
||||
fi |
|
||||
|
|
||||
# Game world |
|
||||
if [ -n "${gameworld}" ]; then |
|
||||
echo -e "${blue}Game world:\t${default}${gameworld}" |
|
||||
fi |
|
||||
|
|
||||
# Tick rate |
|
||||
if [ -n "${tickrate}" ]; then |
|
||||
echo -e "${blue}Tick rate:\t${default}${tickrate}" |
|
||||
fi |
|
||||
|
|
||||
# Cluster (Don't Starve Together) |
|
||||
if [ -n "${cluster}" ]; then |
|
||||
echo -e "${blue}Cluster:\t${default}${cluster}" |
|
||||
fi |
|
||||
|
|
||||
# Shard (Don't Starve Together) |
|
||||
if [ -n "${shard}" ]; then |
|
||||
echo -e "${blue}Shard:\t${default}${shard}" |
|
||||
fi |
|
||||
|
|
||||
# TeamSpeak dbplugin |
|
||||
if [ -n "${dbplugin}" ]; then |
|
||||
echo -e "${blue}dbplugin:\t${default}${dbplugin}" |
|
||||
fi |
|
||||
|
|
||||
# Online status |
|
||||
if [ "${status}" == "0" ]; then |
|
||||
echo -e "${blue}Status:\t${red}OFFLINE${default}" |
|
||||
else |
|
||||
echo -e "${blue}Status:\t${green}ONLINE${default}" |
|
||||
fi |
|
||||
} | column -s $'\t' -t |
|
||||
echo -e "" |
|
||||
} |
|
||||
|
|
||||
fn_details_script(){ |
|
||||
# |
|
||||
# qlserver Script Details |
|
||||
# ===================================== |
|
||||
# Service name: ql-server |
|
||||
# qlserver version: 150316 |
|
||||
# User: lgsm |
|
||||
# Email alert: off |
|
||||
# Update on start: off |
|
||||
# Location: /home/lgsm/qlserver |
|
||||
# Config file: /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg |
|
||||
|
|
||||
echo -e "${lightgreen}${selfname} Script Details${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
{ |
|
||||
# Service name |
|
||||
echo -e "${blue}Service name:\t${default}${servicename}" |
|
||||
|
|
||||
# Script version |
|
||||
if [ -n "${version}" ]; then |
|
||||
echo -e "${blue}${selfname} version:\t${default}${version}" |
|
||||
fi |
|
||||
|
|
||||
# User |
|
||||
echo -e "${blue}User:\t${default}$(whoami)" |
|
||||
|
|
||||
# GLIBC required |
|
||||
if [ -n "${glibcrequired}" ]; then |
|
||||
if [ "${glibcrequired}" == "NOT REQUIRED" ]; then |
|
||||
: |
|
||||
elif [ "${glibcrequired}" == "UNKNOWN" ]; then |
|
||||
echo -e "${blue}GLIBC required:\t${red}${glibcrequired}" |
|
||||
elif [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then |
|
||||
if [ "${glibcfix}" == "yes" ]; then |
|
||||
echo -e "${blue}GLIBC required:\t${red}${glibcrequired} ${default}(${green}Using GLIBC fix${default})" |
|
||||
else |
|
||||
echo -e "${blue}GLIBC required:\t${red}${glibcrequired} ${default}(${red}GLIBC version too old${default})" |
|
||||
fi |
|
||||
else |
|
||||
echo -e "${blue}GLIBC required:\t${green}${glibcrequired}${default}" |
|
||||
fi |
|
||||
fi |
|
||||
|
|
||||
# Email alert |
|
||||
echo -e "${blue}Email alert:\t${default}${emailalert}" |
|
||||
|
|
||||
# Pushbullet alert |
|
||||
echo -e "${blue}Pushbullet alert:\t${default}${pushbulletalert}" |
|
||||
|
|
||||
# Update on start |
|
||||
if [ -n "${updateonstart}" ]; then |
|
||||
echo -e "${blue}Update on start:\t${default}${updateonstart}" |
|
||||
fi |
|
||||
|
|
||||
# Script location |
|
||||
echo -e "${blue}Location:\t${default}${rootdir}" |
|
||||
|
|
||||
# Config file location |
|
||||
if [ -n "${servercfgfullpath}" ]; then |
|
||||
if [ -f "${servercfgfullpath}" ]; then |
|
||||
echo -e "${blue}Config file:\t${default}${servercfgfullpath}" |
|
||||
elif [ -d "${servercfgfullpath}" ]; then |
|
||||
echo -e "${blue}Config dir:\t${default}${servercfgfullpath}" |
|
||||
else |
|
||||
echo -e "${blue}Config file:\t${default}${red}${servercfgfullpath}${default} (${red}FILE MISSING${default})" |
|
||||
fi |
|
||||
fi |
|
||||
|
|
||||
# Network config file location (ARMA 3) |
|
||||
if [ -n "${networkcfgfullpath}" ]; then |
|
||||
echo -e "${blue}Network config file:\t${default}${networkcfgfullpath}" |
|
||||
fi |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_backup(){ |
|
||||
# |
|
||||
# Backups |
|
||||
# ===================================== |
|
||||
# No. of backups: 1 |
|
||||
# Latest backup: |
|
||||
# date: Fri May 6 18:34:19 UTC 2016 |
|
||||
# file: /home/lgsm/qlserver/backups/ql-server-2016-05-06-183239.tar.gz |
|
||||
# size: 945M |
|
||||
|
|
||||
echo -e "" |
|
||||
echo -e "${lightgreen}Backups${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then |
|
||||
echo -e "No Backups created" |
|
||||
else |
|
||||
{ |
|
||||
echo -e "${blue}No. of backups:\t${default}${backupcount}" |
|
||||
echo -e "${blue}Latest backup:${default}" |
|
||||
if [ "${lastbackupdaysago}" == "0" ]; then |
|
||||
echo -e "${blue} date:\t${default}${lastbackupdate} (less than 1 day ago)" |
|
||||
elif [ "${lastbackupdaysago}" == "1" ]; then |
|
||||
echo -e "${blue} date:\t${default}${lastbackupdate} (1 day ago)" |
|
||||
else |
|
||||
echo -e "${blue} date:\t${default}${lastbackupdate} (${lastbackupdaysago} days ago)" |
|
||||
fi |
|
||||
echo -e "${blue} file:\t${default}${lastbackup}" |
|
||||
echo -e "${blue} size:\t${default}${lastbackupsize}" |
|
||||
} | column -s $'\t' -t |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
fn_details_commandlineparms(){ |
|
||||
# |
|
||||
# Command-line Parameters |
|
||||
# ===================================== |
|
||||
# ./run_server_x86.sh +set net_strict 1 |
|
||||
|
|
||||
echo -e "" |
|
||||
echo -e "${lightgreen}Command-line Parameters${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
echo -e "${executable} ${parms}" |
|
||||
} |
|
||||
|
|
||||
fn_details_ports(){ |
|
||||
# Ports |
|
||||
# ===================================== |
|
||||
# Change ports by editing the parameters in: |
|
||||
# /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg |
|
||||
|
|
||||
echo -e "" |
|
||||
echo -e "${lightgreen}Ports${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
echo -e "Change ports by editing the parameters in:" |
|
||||
|
|
||||
parmslocation="${red}UNKNOWN${default}" |
|
||||
# engines that require editing in the config file |
|
||||
local ports_edit_array=( "avalanche" "dontstarve" "idtech2" "idtech3" "idtech3_ql" "lwjgl2" "projectzomboid" "quake" "refractor" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "unreal3" "TeamSpeak 3" "Mumble" "7 Days To Die" ) |
|
||||
for port_edit in "${ports_edit_array[@]}" |
|
||||
do |
|
||||
if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then |
|
||||
parmslocation="${servercfgfullpath}" |
|
||||
fi |
|
||||
done |
|
||||
# engines that require editing in the script file |
|
||||
local ports_edit_array=( "Hurtworld" "iw3.0" "goldsource" "Rust" "spark" "source" "starbound" "unreal4" ) |
|
||||
for port_edit in "${ports_edit_array[@]}" |
|
||||
do |
|
||||
if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then |
|
||||
parmslocation="${selfname}" |
|
||||
fi |
|
||||
done |
|
||||
echo -e "${parmslocation}" |
|
||||
echo -e "" |
|
||||
echo -e "Useful port diagnostic command:" |
|
||||
} |
|
||||
|
|
||||
fn_details_statusbottom(){ |
|
||||
echo -e "" |
|
||||
if [ "${status}" == "0" ]; then |
|
||||
echo -e "${blue}Status:\t${red}OFFLINE${default}" |
|
||||
else |
|
||||
echo -e "${blue}Status:\t${green}ONLINE${default}" |
|
||||
fi |
|
||||
echo -e "" |
|
||||
} |
|
||||
|
|
||||
# Engine Specific details |
|
||||
|
|
||||
fn_details_avalanche(){ |
|
||||
echo -e "netstat -atunp | grep Jcmp-Server" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_cod(){ |
|
||||
echo -e "netstat -atunp | grep cod_lnxded" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_coduo(){ |
|
||||
echo -e "netstat -atunp | grep coduo_lnxded" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_cod2(){ |
|
||||
echo -e "netstat -atunp | grep cod2_lnxded" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_cod4(){ |
|
||||
echo -e "netstat -atunp" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_codwaw(){ |
|
||||
echo -e "netstat -atunp | grep codwaw_lnxded" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_dontstarve(){ |
|
||||
echo -e "netstat -atunp | grep dontstarve" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game: Server\tINBOUND\t${port}\tudp" |
|
||||
echo -e "> Game: Master\tINBOUND\t${masterport}\tudp" |
|
||||
echo -e "> Steam: Auth\tINBOUND\t${steamauthenticationport}\tudp" |
|
||||
echo -e "> Steam: Master\tINBOUND\t${steammasterserverport}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_minecraft(){ |
|
||||
echo -e "netstat -atunp | grep java" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_projectzomboid(){ |
|
||||
echo -e "netstat -atunp | grep java" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
|
|
||||
fn_details_realvirtuality(){ |
|
||||
echo -e "netstat -atunp | grep arma3server" |
|
||||
echo -e "" |
|
||||
if [ -z "${port}" ]||[ -z "${queryport}" ]||[ -z "${masterport}" ]; then |
|
||||
echo -e "${red}ERROR!${default} Missing/commented ports in ${servercfg}." |
|
||||
echo -e "" |
|
||||
fi |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" |
|
||||
echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_refractor(){ |
|
||||
echo -e "netstat -atunp | grep bf1942_lnxd" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game/Query\tINBOUND\t${port}\tudp" |
|
||||
echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_quake2(){ |
|
||||
echo -e "netstat -atunp | grep quake2" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_quake3(){ |
|
||||
echo -e "netstat -atunp | grep q3ded" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_quake(){ |
|
||||
echo -e "netstat -atunp | grep mvdsv" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_quakelive(){ |
|
||||
echo -e "netstat -atunp | grep qzeroded" |
|
||||
echo -e "" |
|
||||
if [ -z "${port}" ]||[ -z "${rconport}" ]||[ -z "${statsport}" ]; then |
|
||||
echo -e "${red}ERROR!${default} Missing/commented ports in ${servercfg}." |
|
||||
echo -e "" |
|
||||
fi |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp" |
|
||||
echo -e "> Rcon\tINBOUND\t${rconport}\tudp" |
|
||||
echo -e "> Stats\tINBOUND\t${statsport}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_wolfensteinenemyterritory(){ |
|
||||
echo -e "netstat -atunp | grep etded" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game/Query\tINBOUND\t${port}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
|
|
||||
fn_details_seriousengine35(){ |
|
||||
echo -e "netstat -atunp | grep Sam3_Dedicate" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game/RCON\tINBOUND\t${port}\ttcp" |
|
||||
echo -e "> Query\tINBOUND\t${queryport}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_source(){ |
|
||||
echo -e "netstat -atunp | grep srcds_linux" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game/RCON\tINBOUND\t${port}\ttcp/udp" |
|
||||
if [ -n "${sourcetvport}" ]; then |
|
||||
echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp" |
|
||||
fi |
|
||||
echo -e "< Client\tOUTBOUND\t${clientport}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_spark(){ |
|
||||
echo -e "netstat -atunp | grep server_linux3" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game/RCON\tINBOUND\t${port}\tudp" |
|
||||
echo -e "> Query\tINBOUND\t${queryport}\tudp" |
|
||||
echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" |
|
||||
} | column -s $'\t' -t |
|
||||
echo -e "" |
|
||||
echo -e "${lightgreen}${servername} WebAdmin${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
{ |
|
||||
echo -e "${blue}WebAdmin url:\t${default}http://${ip}:${webadminport}/index.html" |
|
||||
echo -e "${blue}WebAdmin username:\t${default}${webadminuser}" |
|
||||
echo -e "${blue}WebAdmin password:\t${default}${webadminpass}" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_starbound(){ |
|
||||
echo -e "netstat -atunp | grep starbound" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\ttcp" |
|
||||
echo -e "> Query\tINBOUND\t${queryport}\ttcp" |
|
||||
echo -e "> Rcon\tINBOUND\t${rconport}\ttcp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_teamspeak3(){ |
|
||||
echo -e "netstat -atunp | grep ts3server" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Voice\tINBOUND\t${port}\tudp" |
|
||||
echo -e "> ServerQuery\tINBOUND\t${queryport}\ttcp" |
|
||||
echo -e "> File transfer\tINBOUND\t${fileport}\ttcp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_mumble(){ |
|
||||
echo -e "netstat -atunp | grep murmur" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Voice\tINBOUND\t${port}\tudp" |
|
||||
echo -e "> ServerQuery\tINBOUND\t${port}\ttcp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_teeworlds(){ |
|
||||
echo -e "netstat -atunp | grep teeworlds_srv" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\ttcp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_terraria(){ |
|
||||
echo -e "netstat -atunp | grep TerrariaServer" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game\tINBOUND\t${port}\ttcp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_sdtd(){ |
|
||||
echo -e "netstat -atunp | grep 7DaysToDie" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game/RCON\tINBOUND\t${port}\tudp" |
|
||||
echo -e "> Query\tINBOUND\t${queryport}\tudp" |
|
||||
echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp" |
|
||||
echo -e "> Telnet\tINBOUND\t${telnetport}\ttcp" |
|
||||
} | column -s $'\t' -t |
|
||||
echo -e "" |
|
||||
echo -e "${lightgreen}${servername} WebAdmin${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
{ |
|
||||
echo -e "${blue}WebAdmin enabled:\t${default}${webadminenabled}" |
|
||||
echo -e "${blue}WebAdmin url:\t${default}http://${ip}:${webadminport}" |
|
||||
echo -e "${blue}WebAdmin password:\t${default}${webadminpass}" |
|
||||
} | column -s $'\t' -t |
|
||||
echo -e "" |
|
||||
echo -e "${lightgreen}${servername} Telnet${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
{ |
|
||||
echo -e "${blue}Telnet enabled:\t${default}${telnetenabled}" |
|
||||
echo -e "${blue}Telnet address:\t${default}${ip} ${telnetport}" |
|
||||
echo -e "${blue}Telnet password:\t${default}${telnetpass}" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_hurtworld(){ |
|
||||
echo -e "netstat -atunp | grep Hurtworld" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game/RCON\tINBOUND\t${port}\tudp" |
|
||||
echo -e "> Query\tINBOUND\t${queryport}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_rust(){ |
|
||||
echo -e "netstat -atunp | grep Rust" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" |
|
||||
echo -e "> RCON\tINBOUND\t${rconport}\ttcp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_unreal(){ |
|
||||
echo -e "netstat -atunp | grep ucc-bin" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" |
|
||||
echo -e "> Query\tINBOUND\t${queryport}\tudp" |
|
||||
if [ "${engine}" == "unreal" ]; then |
|
||||
echo -e "< UdpLink Port (random)\tOUTBOUND\t${udplinkport}+\tudp" |
|
||||
fi |
|
||||
if [ "${engine}" != "unreal" ] && [ "${appid}" != "223250" ]; then |
|
||||
echo -e "> GameSpy query\tINBOUND\t${gsqueryport}\tudp\tOldQueryPortNumber=${gsqueryport}" |
|
||||
fi |
|
||||
if [ "${appid}" == "215360" ]; then |
|
||||
echo -e "< Master server\tOUTBOUND\t28852\ttcp/udp" |
|
||||
else |
|
||||
echo -e "< Master server\tOUTBOUND\t28900/28902\ttcp/udp" |
|
||||
fi |
|
||||
if [ "${appid}" ]; then |
|
||||
if [ "${appid}" == "223250" ]; then |
|
||||
echo -e "< Steam\tOUTBOUND\t20610\tudp" |
|
||||
else |
|
||||
echo -e "< Steam\tOUTBOUND\t20660\tudp" |
|
||||
fi |
|
||||
fi |
|
||||
echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}" |
|
||||
} | column -s $'\t' -t |
|
||||
echo -e "" |
|
||||
echo -e "${lightgreen}${servername} WebAdmin${default}" |
|
||||
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = |
|
||||
{ |
|
||||
echo -e "${blue}WebAdmin enabled:\t${default}${webadminenabled}" |
|
||||
echo -e "${blue}WebAdmin url:\t${default}http://${ip}:${webadminport}" |
|
||||
echo -e "${blue}WebAdmin username:\t${default}${webadminuser}" |
|
||||
echo -e "${blue}WebAdmin password:\t${default}${webadminpass}" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_ut3(){ |
|
||||
echo -e "netstat -atunp | grep ut3-bin" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" |
|
||||
echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
fn_details_ark(){ |
|
||||
echo -e "netstat -atunp | grep ShooterGame" |
|
||||
echo -e "" |
|
||||
{ |
|
||||
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL\tINI VARIABLE" |
|
||||
echo -e "> Game\tINBOUND\t${port}\tudp\tPort=${port}" |
|
||||
echo -e "> Query\tINBOUND\t${queryport}\tudp" |
|
||||
} | column -s $'\t' -t |
|
||||
} |
|
||||
|
|
||||
# Run checks and gathers details to display. |
|
||||
|
|
||||
fn_display_details() { |
|
||||
check.sh |
|
||||
info_config.sh |
|
||||
info_distro.sh |
|
||||
info_glibc.sh |
|
||||
info_parms.sh |
|
||||
fn_details_os |
|
||||
fn_details_performance |
|
||||
fn_details_disk |
|
||||
fn_details_gameserver |
|
||||
fn_details_script |
|
||||
fn_details_backup |
|
||||
# Some game servers do not have parms. |
|
||||
if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${engine}" != "avalanche" ]&&[ "${engine}" != "dontstarve" ]&&[ "${engine}" != "projectzomboid" ]; then |
|
||||
fn_parms |
|
||||
fn_details_commandlineparms |
|
||||
fi |
|
||||
fn_details_ports |
|
||||
|
|
||||
# Display details depending on game or engine. |
|
||||
if [ "${engine}" == "avalanche" ]; then |
|
||||
fn_details_avalanche |
|
||||
elif [ "${engine}" == "refractor" ]; then |
|
||||
fn_details_refractor |
|
||||
elif [ "${engine}" == "dontstarve" ]; then |
|
||||
fn_details_dontstarve |
|
||||
elif [ "${engine}" == "lwjgl2" ]; then |
|
||||
fn_details_minecraft |
|
||||
elif [ "${engine}" == "projectzomboid" ]; then |
|
||||
fn_details_projectzomboid |
|
||||
elif [ "${engine}" == "realvirtuality" ]; then |
|
||||
fn_details_realvirtuality |
|
||||
elif [ "${engine}" == "seriousengine35" ]; then |
|
||||
fn_details_seriousengine35 |
|
||||
elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then |
|
||||
fn_details_source |
|
||||
elif [ "${engine}" == "spark" ]; then |
|
||||
fn_details_spark |
|
||||
elif [ "${engine}" == "starbound" ]; then |
|
||||
fn_details_starbound |
|
||||
elif [ "${engine}" == "teeworlds" ]; then |
|
||||
fn_details_teeworlds |
|
||||
elif [ "${engine}" == "terraria" ]; then |
|
||||
fn_details_terraria |
|
||||
elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then |
|
||||
fn_details_unreal |
|
||||
elif [ "${engine}" == "unreal3" ]; then |
|
||||
fn_details_ut3 |
|
||||
elif [ "${gamename}" == "7 Days To Die" ]; then |
|
||||
fn_details_sdtd |
|
||||
elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then |
|
||||
fn_details_ark |
|
||||
elif [ "${gamename}" == "Call of Duty" ]; then |
|
||||
fn_details_cod |
|
||||
elif [ "${gamename}" == "Call of Duty: United Offensive" ]; then |
|
||||
fn_details_coduo |
|
||||
elif [ "${gamename}" == "Call of Duty 2" ]; then |
|
||||
fn_details_cod2 |
|
||||
elif [ "${gamename}" == "Call of Duty 4" ]; then |
|
||||
fn_details_cod4 |
|
||||
elif [ "${gamename}" == "Call of Duty: World at War" ]; then |
|
||||
fn_details_codwaw |
|
||||
elif [ "${gamename}" == "Hurtworld" ]; then |
|
||||
fn_details_hurtworld |
|
||||
elif [ "${gamename}" == "QuakeWorld" ]; then |
|
||||
fn_details_quake |
|
||||
elif [ "${gamename}" == "Quake 2" ]; then |
|
||||
fn_details_quake2 |
|
||||
elif [ "${gamename}" == "Quake 3: Arena" ]; then |
|
||||
fn_details_quake3 |
|
||||
elif [ "${gamename}" == "Quake Live" ]; then |
|
||||
fn_details_quakelive |
|
||||
elif [ "${gamename}" == "TeamSpeak 3" ]; then |
|
||||
fn_details_teamspeak3 |
|
||||
elif [ "${gamename}" == "Mumble" ]; then |
|
||||
fn_details_mumble |
|
||||
elif [ "${gamename}" == "Rust" ]; then |
|
||||
fn_details_rust |
|
||||
elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then |
|
||||
fn_details_wolfensteinenemyterritory |
|
||||
else |
|
||||
fn_print_error_nl "Unable to detect server engine." |
|
||||
fi |
|
||||
|
|
||||
fn_details_statusbottom |
|
||||
} |
|
||||
|
|
||||
if [ -z "${postdetails}" ] ; |
|
||||
then |
|
||||
fn_display_details |
|
||||
core_exit.sh |
|
||||
fi |
|
Loading…
Reference in new issue