Browse Source

Merge remote-tracking branch 'refs/remotes/origin/master' into gmod-content-mounting

Conflicts:
	functions/fn_getopt
pull/3518/head
Daniel Gibbs 10 years ago
parent
commit
7b58d5b804
  1. 173
      .travis.yml
  2. 1
      Arma3/arma3server
  3. 119
      PiratesVikingandKnightsII/cfg/lgsm-default.cfg
  4. 98
      PiratesVikingandKnightsII/pvkiiserver
  5. 4
      functions/fn_backup
  6. 4
      functions/fn_check_ip
  7. 4
      functions/fn_check_root
  8. 30
      functions/fn_check_steamuser
  9. 4
      functions/fn_check_systemdir
  10. 4
      functions/fn_check_tmux
  11. 4
      functions/fn_compress_unreal2maps
  12. 4
      functions/fn_compress_ut99maps
  13. 4
      functions/fn_console
  14. 6
      functions/fn_debug
  15. 118
      functions/fn_details
  16. 64
      functions/fn_details_config
  17. 4
      functions/fn_details_distro
  18. 386
      functions/fn_getopt
  19. 7
      functions/fn_install_config
  20. 8
      functions/fn_install_glibcfix
  21. 4
      functions/fn_install_gsquery
  22. 4
      functions/fn_install_retry
  23. 4
      functions/fn_install_serverfiles
  24. 12
      functions/fn_install_ts3
  25. 8
      functions/fn_monitor
  26. 14
      functions/fn_monitor_query
  27. 6
      functions/fn_start
  28. 22
      functions/fn_update_check
  29. 6
      functions/fn_update_dl
  30. 485
      tests/test.sh

173
.travis.yml

@ -1,164 +1,25 @@
language: bash
sudo: false
env:
- DISTRO=ubuntu-trusty
before_script:
- curl -L "https://shunit2.googlecode.com/files/shunit2-2.1.6.tgz" | tar zx
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- tmux
- mailutils
- postfix
- lib32gcc1
- libstdc++6
- libstdc++6:i386
- telnet
- expect
- mkdir /home/travis/build/dgibbs64/linuxgsm/7DaysToDie/serverfiles
- touch /home/travis/build/dgibbs64/linuxgsm/7DaysToDie/serverfiles/serverconfig.xml
- mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrike/serverfiles/
- mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrike/serverfiles/cstrike
- mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrikeGlobalOffensive/serverfiles/
- mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrikeGlobalOffensive/serverfiles/csgo
- mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrikeGlobalOffensive/serverfiles/csgo/cfg
- mkdir /home/travis/build/dgibbs64/linuxgsm/JustCause2/serverfiles/
- touch /home/travis/build/dgibbs64/linuxgsm/JustCause2/serverfiles/default_config.lua
- mkdir /home/travis/build/dgibbs64/linuxgsm/KillingFloor/serverfiles
- mkdir /home/travis/build/dgibbs64/linuxgsm/KillingFloor/serverfiles/System
- touch /home/travis/build/dgibbs64/linuxgsm/KillingFloor/serverfiles/System/Default.ini
- mkdir /home/travis/build/dgibbs64/linuxgsm/ProjectZomboid/Zomboid
- mkdir /home/travis/build/dgibbs64/linuxgsm/ProjectZomboid/Zomboid/Server
- mkdir /home/travis/build/dgibbs64/linuxgsm/ProjectZomboid/serverfiles
- mkdir /home/travis/build/dgibbs64/linuxgsm/ProjectZomboid/serverfiles/projectzomboid
- mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles
- mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles/Content/
- mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles/Content/SeriousSam3
- mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles/Content/SeriousSam3/Config
- mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles/Bin
- mkdir /home/travis/build/dgibbs64/linuxgsm/UnrealTournament2004/serverfiles
- mkdir /home/travis/build/dgibbs64/linuxgsm/UnrealTournament2004/serverfiles/System
- touch /home/travis/build/dgibbs64/linuxgsm/UnrealTournament2004/serverfiles/System/ut2k4-server.ini
- mkdir /home/travis/build/dgibbs64/linuxgsm/UnrealTournament99/serverfiles
- mkdir /home/travis/build/dgibbs64/linuxgsm/UnrealTournament99/serverfiles/System
- touch /home/travis/build/dgibbs64/linuxgsm/UnrealTournament99/serverfiles/System/ut99-server.ini
- mkdir /home/travis/build/dgibbs64/linuxgsm/TeamSpeak3/serverfiles
script:
- bash 7DaysToDie/sdtdserver auto-install
- bash 7DaysToDie/sdtdserver start
- bash 7DaysToDie/sdtdserver stop
- bash 7DaysToDie/sdtdserver restart
- bash 7DaysToDie/sdtdserver validate
- bash 7DaysToDie/sdtdserver monitor
- bash 7DaysToDie/sdtdserver email-test
- bash 7DaysToDie/sdtdserver details
- bash Arma3/arma3server auto-install
- bash Arma3/arma3server start
- bash Arma3/arma3server stop
- bash Arma3/arma3server restart
- bash Arma3/arma3server validate
- bash Arma3/arma3server monitor
- bash Arma3/arma3server email-test
- bash Arma3/arma3server details
- bash CounterStrike/csserver auto-install
- bash CounterStrike/csserver start
- bash CounterStrike/csserver stop
- bash CounterStrike/csserver restart
- bash CounterStrike/csserver validate
- bash CounterStrike/csserver monitor
- bash CounterStrike/csserver email-test
- bash CounterStrike/csserver details
- bash CounterStrikeGlobalOffensive/csgoserver auto-install
- bash CounterStrikeGlobalOffensive/csgoserver start
- bash CounterStrikeGlobalOffensive/csgoserver stop
- bash CounterStrikeGlobalOffensive/csgoserver restart
- bash CounterStrikeGlobalOffensive/csgoserver validate
- bash CounterStrikeGlobalOffensive/csgoserver monitor
- bash CounterStrikeGlobalOffensive/csgoserver email-test
- bash CounterStrikeGlobalOffensive/csgoserver details
- bash JustCause2/jc2server auto-install
- bash JustCause2/jc2server start
- bash JustCause2/jc2server stop
- bash JustCause2/jc2server restart
- bash JustCause2/jc2server validate
- bash JustCause2/jc2server monitor
- bash JustCause2/jc2server email-test
- bash JustCause2/jc2server details
- bash KillingFloor/kfserver auto-install
- bash KillingFloor/kfserver start
- bash KillingFloor/kfserver stop
- bash KillingFloor/kfserver restart
- bash KillingFloor/kfserver validate
- bash KillingFloor/kfserver monitor
- bash KillingFloor/kfserver email-test
- bash KillingFloor/kfserver details
- bash NaturalSelection2/ns2server auto-install
- bash NaturalSelection2/ns2server start
- bash NaturalSelection2/ns2server stop
- bash NaturalSelection2/ns2server restart
- bash NaturalSelection2/ns2server validate
- bash NaturalSelection2/ns2server monitor
- bash NaturalSelection2/ns2server email-test
- bash NaturalSelection2/ns2server details
- bash ProjectZomboid/pzserver auto-install
- bash ProjectZomboid/pzserver start
- bash ProjectZomboid/pzserver stop
- bash ProjectZomboid/pzserver restart
- bash ProjectZomboid/pzserver validate
- bash ProjectZomboid/pzserver monitor
- bash ProjectZomboid/pzserver email-test
- bash ProjectZomboid/pzserver details
- bash SeriousSam3BFE/ss3sserver auto-install
- bash SeriousSam3BFE/ss3sserver start
- bash SeriousSam3BFE/ss3sserver stop
- bash SeriousSam3BFE/ss3sserver restart
- bash SeriousSam3BFE/ss3sserver validate
- bash SeriousSam3BFE/ss3sserver monitor
- bash SeriousSam3BFE/ss3sserver email-test
- bash SeriousSam3BFE/ss3sserver details
- bash StarBound/sbserver auto-install
- bash StarBound/sbserver start
- bash StarBound/sbserver stop
- bash StarBound/sbserver restart
- bash StarBound/sbserver validate
- bash StarBound/sbserver monitor
- bash StarBound/sbserver email-test
- bash StarBound/sbserver details
- bash Terraria/terrariaserver auto-install
- bash Terraria/terrariaserver start
- bash Terraria/terrariaserver stop
- bash Terraria/terrariaserver restart
- bash Terraria/terrariaserver validate
- bash Terraria/terrariaserver monitor
- bash Terraria/terrariaserver email-test
- bash Terraria/terrariaserver details
- bash UnrealTournament2004/ut2k4server start
- bash UnrealTournament2004/ut2k4server stop
- bash UnrealTournament2004/ut2k4server restart
- bash UnrealTournament2004/ut2k4server monitor
- bash UnrealTournament2004/ut2k4server email-test
- bash UnrealTournament2004/ut2k4server details
- bash UnrealTournament99/ut99server start
- bash UnrealTournament99/ut99server stop
- bash UnrealTournament99/ut99server restart
- bash UnrealTournament99/ut99server monitor
- bash UnrealTournament99/ut99server email-test
- bash UnrealTournament99/ut99server details
- bash TeamSpeak3/ts3server start
- bash TeamSpeak3/ts3server stop
- bash TeamSpeak3/ts3server restart
- bash TeamSpeak3/ts3server update
- bash TeamSpeak3/ts3server monitor
- bash TeamSpeak3/ts3server email-test
- bash TeamSpeak3/ts3server details
- bash tests/test.sh

1
Arma3/arma3server

@ -1,4 +1,3 @@
#!/bin/bash
# ARMA 3
# Server Management Script

119
PiratesVikingandKnightsII/cfg/lgsm-default.cfg

@ -0,0 +1,119 @@
// ****************************************************************************
// *
// Pirates, Vikings, and Knights II *
// Version 150815 *
// *
// ****************************************************************************
// ............................. Basic Settings ............................. //
// Hostname for server.
hostname "<hostname>"
// RCON - remote console password.
rcon_password "<rconpassword>"
// Server password - for private servers.
sv_password ""
// Contact email for server sysop.
sv_contact "[email protected]"
// LAN Mode - If set the server will not show on the internet.
// Default: sv_lan 0
sv_lan 0
// ............................... Map Cycles ............................... //
// You can create your own custom mapcycle.
mapcyclefile "mapcycle.txt"
// ....................... Time Limits/Round Settings ....................... //
// Time spend on a single map (in minutes) before switching to a new one automatically.
// Default: mp_timelimit 0
mp_timelimit 20
// Wait for the end of round before changing map.
// Default: mp_timelimit_waitroundend 0
mp_timelimit_waitroundend 1
// Round duration in minutes.
// Default: mp_roundtime 3
mp_roundtime 3
// Round limit in number of rounds.
// Default: mp_roundlimit 0
// Win limit in number of rounds.
// Default: mp_winlimit 0
mp_winlimit 0
// ........................ Server Specific Commands ........................ //
// Server tags - Tags show up on the in-game server browser. This helps
// users filter servers.
// vanilla - he server runs the default settings.
// custom - the server runs custom gameplay settings or mods.
// example: sv_tags "custom, fastdl"
sv_tags ""
// Friendly fire - Allows team members to injure other members of their team.
// Default: mp_friendlyfire 0
mp_friendlyfire 0
// ............................. Communication ............................. //
// Enable communication over voice via microphone.
// Default: sv_voiceenable 1
sv_voiceenable 1
// Players can hear all other players, no team restrictions.
// Default: sv_alltalk 0
sv_alltalk 0
// ............................. Fast Download .............................. //
// info: Allows custom maps to be downloaded to the client.
// Allows clients to download custom maps and textures etc. from the server at 20 kbps.
// Default: sv_allowdownload 1
sv_allowdownload 1
// Allows clients to download custom maps, textures etc. from a web server with no transfer limit.
// Example:
// server location: maps/custommap.bsp
// web server location: http://example.com/custom/maps/custommap.bsp
// sv_downloadurl "http://example.com/custom"
// Default: sv_downloadurl ""
sv_downloadurl ""
// ................................ Ban List ............................... //
// personal banlist based on user IDs.
exec banned_user.cfg
// personal banlist based on user IPs.
exec banned_ip.cfg
writeid
writeip
// ............................. Server Logging ............................. //
//Enables logging to file, console, and udp < on | off >.
log on
// Log server bans in the server logs.
// Default: sv_logbans 1
sv_logbans 1
// Echo log information to the console.
// Default: sv_logecho 1
sv_logecho 1
// Log server information in the log file.
// Default: sv_logfile 1
sv_logfile 1
// Log server information to only one file.
// Default: sv_log_onefile 0
sv_log_onefile 0

98
PiratesVikingandKnightsII/pvkiiserver

@ -0,0 +1,98 @@
#!/bin/bash
# No More Room in Hell
# Server Management Script
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
version="051115"
#### Variables ####
# Notification Email
# (on|off)
emailnotification="off"
email="[email protected]"
# Steam login
steamuser="anonymous"
steampass=""
# Start Variables
defaultmap="bt_island"
maxplayers="24"
port="27015"
sourcetvport="27020"
clientport="27005"
ip="0.0.0.0"
updateonstart="off"
# https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server
fn_parms(){
parms="-game pvkii -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
}
#### Advanced Variables ####
# Steam
appid="17575"
# Server Details
servicename="pvkii-server"
gamename="Pirates, Vikings, and Knights II"
engine="source"
# Directories
rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
selfname="$(basename $0)"
lockselfname=".${servicename}.lock"
filesdir="${rootdir}/serverfiles"
systemdir="${filesdir}/pvkii"
executabledir="${filesdir}"
executable="./srcds_run"
servercfg="${servicename}.cfg"
servercfgdir="${systemdir}/cfg"
servercfgfullpath="${servercfgdir}/${servercfg}"
servercfgdefault="${servercfgdir}/lgsm-default.cfg"
backupdir="${rootdir}/backups"
# Logging
logdays="7"
gamelogdir="${systemdir}/logs"
scriptlogdir="${rootdir}/log/script"
consolelogdir="${rootdir}/log/console"
scriptlog="${scriptlogdir}/${servicename}-script.log"
consolelog="${consolelogdir}/${servicename}-console.log"
emaillog="${scriptlogdir}/${servicename}-email.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_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 /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
chmod +x "${functionfile}"
cd "${rootdir}"
fi
source "${rootdir}/functions/${functionfile}"
}
fn_functions(){
# Functions are defined in fn_functions.
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_functions
getopt=$1
fn_getopt

4
functions/fn_backup

@ -2,7 +2,7 @@
# LGSM fn_backup function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 210115
# Version: 311015
# Description: Creates a .tar.gz file in the backup directory.
@ -22,7 +22,7 @@ while true; do
read -p "Continue? [y/N]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) echo Exiting; return 1;;
[Nn]* ) echo Exiting; return;;
* ) echo "Please answer yes or no.";;
esac
done

4
functions/fn_check_ip

@ -2,7 +2,7 @@
# LGSM fn_check_ip function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 120715
# Version: 311015
# Description: Automatically identifies the server interface IP.
# If multiple interfaces are detected the user will need to manualy set using ip="0.0.0.0".
@ -24,7 +24,7 @@ if [ "${ip}" == "0.0.0.0" ]||[ "${ip}" == "" ]; then
echo -en ""
echo -en "http://gameservermanagers.com/network-interfaces"
echo -en ""
exit
exit 1
else
ip=${getip}
fi

4
functions/fn_check_root

@ -2,9 +2,9 @@
# LGSM fn_check_root function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 210115
# Version: 311015
if [ $(whoami) = "root" ]; then
fn_printfailnl "Do NOT run this script as root!"
exit
exit 1
fi

30
functions/fn_check_steamuser

@ -4,18 +4,20 @@
# Website: http://gameservermanagers.com
# Version: 040715
if [ -z "${steamuser}" ]||[ "${steamuser}" == "username" ]; then
fn_printwarnnl "Steam login not set. Using anonymous login."
if [ -d ${scriptlogdir} ]; then
fn_scriptlog "Steam login not set. Using anonymous login."
fi
if [ "${steamuser}" == "username" ]; then
echo " * Change steamuser=\"username\" to a valid steam login."
if [ -d ${scriptlogdir} ]; then
fn_scriptlog "Change steamuser=\"username\" to a valid steam login."
fi
fi
steamuser="anonymous"
steampass=""
sleep 2
if [ "${steamuser}" == "username" ]; then
fn_printfailnl "Steam login not set. Update steamuser."
echo " * Change steamuser=\"username\" to a valid steam login."
if [ -d ${scriptlogdir} ]; then
fn_scriptlog "edit ${selfname}. change steamuser=\"username\" to a valid steam login."
exit 1
fi
fi
if [ -z "${steamuser}" ]; then
fn_printwarnnl "Steam login not set. Using anonymous login."
if [ -d ${scriptlogdir} ]; then
fn_scriptlog "Steam login not set. Using anonymous login."
fi
steamuser="anonymous"
steampass=""
sleep 2
fi

4
functions/fn_check_systemdir

@ -2,9 +2,9 @@
# LGSM fn_check_systemdir function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 210115
# Version: 311015
if [ ! -e "${systemdir}" ]; then
fn_printfailnl "Cannot access ${systemdir}: No such directory"
exit
exit 1
fi

4
functions/fn_check_tmux

@ -2,7 +2,7 @@
# LGSM fn_check_tmux function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 291015
# Version: 311015
# Checks if tmux is installed as too many users do not RTFM or know how to use Google.
@ -16,5 +16,5 @@ else
# Suitable passive agressive message
echo " * Please see the the following link."
echo " * http://gameservermanagers.com/tmux-not-found"
exit
exit 127
fi

4
functions/fn_compress_unreal2maps

@ -2,7 +2,7 @@
# LGSM fn_compress_unreal2maps function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 210115
# Version: 311015
fn_check_root
clear
@ -20,7 +20,7 @@ while true; do
read -p "Start compression [y/N]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) echo Exiting; return 1;;
[Nn]* ) echo Exiting; return;;
* ) echo "Please answer yes or no.";;
esac
done

4
functions/fn_compress_ut99maps

@ -2,7 +2,7 @@
# LGSM fn_compress_ut99maps function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 210115
# Version: 311015
fn_check_root
clear
@ -20,7 +20,7 @@ while true; do
read -p "Start compression [y/N]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) echo Exiting; return 1;;
[Nn]* ) echo Exiting; return;;
* ) echo "Please answer yes or no.";;
esac
done

4
functions/fn_console

@ -2,7 +2,7 @@
# LGSM fn_console function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 260515
# Version: 311015
# Description: Gives access to the server tmux console.
@ -20,7 +20,7 @@ while true; do
read -e -i "y" -p "Continue? [y/N]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) echo Exiting; return 1;;
[Nn]* ) echo Exiting; return;;
* ) echo "Please answer yes or no.";;
esac
done

6
functions/fn_debug

@ -2,7 +2,7 @@
# LGSM fn_debug function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 160415
# Version: 051115
# Description: Runs the server without tmux. Runs direct from the terminal.
@ -34,10 +34,10 @@ echo -e "Press CTRL+c to drop out of debug mode."
fn_printwarningnl "If ${servicename} is already running it will be stopped."
echo ""
while true; do
read -p "Continue? [y/N]" yn
read -e -i "y" -p "Continue? [Y/n]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) echo Exiting; return 1;;
[Nn]* ) echo Exiting; return;;
* ) echo "Please answer yes or no.";;
esac
done

118
functions/fn_details

@ -2,7 +2,7 @@
# LGSM fn_details function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 281015
# Version: 301015
# Description: Displays server infomation.
@ -20,9 +20,7 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
echo -e "\e[34mHostname:\t\e[0m$HOSTNAME"
echo -e "\e[34mtmux:\t\e[0m${tmuxv}"
echo -e "\e[34mGLIBC:\t\e[0m${glibcv}"
} >> .fn_details_distro
column -s $'\t' -t .fn_details_distro
rm -f .fn_details_distro
} | column -s $'\t' -t
}
fn_details_performance(){
@ -32,17 +30,13 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
{
echo -e "\e[34mUptime:\t\e[0m${days}d, ${hours}h, ${minutes}m"
echo -e "\e[34mAvg Load:\t\e[0m${load}"
} >> .fn_details_performance
column -s $'\t' -t .fn_details_performance
rm -f .fn_details_performance
} | column -s $'\t' -t
echo -e ""
{
echo -e "\e[34mMem:\t\e[34mtotal\t used\t free\e[0m"
echo -e "\e[34mPhysical:\t\e[0m${physmemtotal}\t${physmemused}\t${physmemfree}\e[0m"
echo -e "\e[34mSwap:\t\e[0m${swaptotal}\t${swapused}\t${swapfree}\e[0m"
} >> .fn_details_performance
column -s $'\t' -t .fn_details_performance
rm -f .fn_details_performance
} | column -s $'\t' -t
}
fn_details_disk(){
@ -58,9 +52,7 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
if [ -d "${backupdir}" ]; then
echo -e "\e[34mBackups:\t\e[0m${backupdirdu}"
fi
} >> .fn_details_disk
column -s $'\t' -t .fn_details_disk
rm -f .fn_details_disk
} | column -s $'\t' -t
}
fn_details_gameserver(){
@ -132,9 +124,7 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
if [ -n "${dbplugin}" ]; then
echo -e "\e[34mdbplugin:\t\e[0m${dbplugin}"
fi
} >> .fn_details_gameserver
column -s $'\t' -t .fn_details_gameserver
rm -f .fn_details_gameserver
} | column -s $'\t' -t
echo -e ""
## script details
@ -154,7 +144,7 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
# GLIBC required
if [ -n "${glibcrequired}" ]; then
if [ "$(ldd --version | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" ]; then
if [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt "$(echo "${glibcrequired}" | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" ]; then
if [ "${glibcfix}" == "yes" ]; then
echo -e "\e[34mGLIBC required:\t\e[0;31m${glibcrequired} \e[0m(\e[0;32mUsing GLIBC fix\e[0m)"
else
@ -187,9 +177,7 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
if [ -n "${networkcfgfullpath}" ]; then
echo -e "\e[34mNetwork config file:\t\e[0m${networkcfgfullpath}"
fi
} >> .fn_details_script
column -s $'\t' -t .fn_details_script
rm -f .fn_details_script
} | column -s $'\t' -t
}
fn_details_backup(){
@ -205,9 +193,7 @@ else
echo -e "\e[34m date:\t\e[0m${lastbackupdate}"
echo -e "\e[34m file:\t\e[0m${lastbackup}"
echo -e "\e[34m size:\t\e[0m${lastbackupsize}"
} >> .fn_details_backup
column -s $'\t' -t .fn_details_backup
rm -f .fn_details_backup
} | column -s $'\t' -t
fi
}
@ -260,9 +246,8 @@ echo -e ""
{
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
echo -e "> Game\tINBOUND\t${port}\tudp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -288,9 +273,8 @@ echo -e ""
{
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
echo -e "> Game\tINBOUND\t${port}\tudp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -316,9 +300,8 @@ echo -e ""
{
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
echo -e "> Game\tINBOUND\t${port}\tudp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -353,9 +336,8 @@ fi
echo -e "> Game\tINBOUND\t${port}\tudp"
echo -e "> Steam: Query\tINBOUND\t${queryport}\tudp"
echo -e "> Steam: Master traffic\tINBOUND\t${masterport}\tudp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -384,9 +366,8 @@ echo -e ""
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
echo -e "> Game/RCON\tINBOUND\t${port}\ttcp"
echo -e "> Query\tINBOUND\t${queryport}\tudp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -417,9 +398,8 @@ echo -e ""
echo -e "> SourceTV\tINBOUND\t${sourcetvport}\tudp"
fi
echo -e "< Client\tOUTBOUND\t${clientport}\tudp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -449,9 +429,7 @@ echo -e ""
echo -e "> Game/RCON\tINBOUND\t${port}\tudp"
echo -e "> Query\tINBOUND\t${queryport}\tudp"
echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
echo -e ""
echo -e "\e[92m${servername} WebAdmin\e[0m"
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
@ -459,9 +437,8 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}/index.html"
echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}"
echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -490,9 +467,8 @@ echo -e ""
echo -e "> Game\tINBOUND\t${port}\ttcp"
echo -e "> Query\tINBOUND\t${queryport}\ttcp"
echo -e "> Rcon\tINBOUND\t${rconport}\ttcp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -520,9 +496,8 @@ echo -e ""
echo -e "> Voice\tINBOUND\t${port}\tudp"
echo -e "> ServerQuery\tINBOUND\t${queryport}\ttcp"
echo -e "> File transfer\tINBOUND\t${fileport}\ttcp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -549,9 +524,8 @@ echo -e ""
{
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
echo -e "> Game\tINBOUND\t${port}\ttcp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -580,9 +554,8 @@ echo -e ""
echo -e "> Game\tINBOUND\t${port}\ttcp"
echo -e "> Query\tINBOUND\t${queryport}\ttcp"
echo -e "> Rcon\tINBOUND\t${rconport}\ttcp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -613,9 +586,7 @@ echo -e ""
echo -e "> Query\tINBOUND\t${queryport}\tudp"
echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp"
echo -e "> Telnet\tINBOUND\t${telnetport}\ttcp"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
echo -e ""
echo -e "\e[92m${servername} WebAdmin\e[0m"
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
@ -623,9 +594,7 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
echo -e "\e[34mWebAdmin enabled:\t\e[0m${webadminenabled}"
echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}"
echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
echo -e ""
echo -e "\e[92m${servername} Telnet\e[0m"
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
@ -633,9 +602,8 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
echo -e "\e[34mTelnet enabled:\t\e[0m${telnetenabled}"
echo -e "\e[34mTelnet address:\t\e[0m${ip} ${telnetport}"
echo -e "\e[34mTelnet password:\t\e[0m${telnetpass}"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -683,9 +651,7 @@ echo -e ""
fi
fi
echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
echo -e ""
echo -e "\e[92m${servername} WebAdmin\e[0m"
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
@ -694,9 +660,8 @@ printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
echo -e "\e[34mWebAdmin url:\t\e[0mhttp://${ip}:${webadminport}"
echo -e "\e[34mWebAdmin username:\t\e[0m${webadminuser}"
echo -e "\e[34mWebAdmin password:\t\e[0m${webadminpass}"
} >> .fn_details_webadmin
column -s $'\t' -t .fn_details_webadmin
rm -f .fn_details_webadmin
} | column -s $'\t' -t
fn_details_statusbottom
}
@ -725,9 +690,8 @@ 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"
} >> .fn_details_ports
column -s $'\t' -t .fn_details_ports
rm -f .fn_details_ports
} | column -s $'\t' -t
fn_details_statusbottom
}

64
functions/fn_details_config

@ -8,7 +8,7 @@
## Examples of filtering to get info from config files
# sed 's/foo//g' - remove foo
# tr -cd [:digit:] leave only digits
# tr -cd '[:digit:]' leave only digits
# tr -d '=\"; ' remove selected charectors =\";
# grep -v "foo" filter out lines that contain foo
@ -52,7 +52,7 @@ if [ "${engine}" == "avalanche" ]; then
# slots
if [ -f "${servercfgfullpath}" ]; then
slots=$(grep "MaxPlayers" "${servercfgfullpath}" | tr -cd "[:digit:]")
slots=$(grep "MaxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]')
if [ ! -n "${slots}" ]; then
slots="NOT SET"
fi
@ -62,7 +62,7 @@ if [ "${engine}" == "avalanche" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "BindPort" "${servercfgfullpath}" | tr -cd "[:digit:]")
port=$(grep "BindPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="0"
@ -95,7 +95,7 @@ elif [ "${engine}" == "dontstarve" ]; then
# slots
if [ -f "${servercfgfullpath}" ]; then
slots=$(grep "max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd "[:digit:]")
slots=$(grep "max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
if [ ! -n "${slots}" ]; then
slots="NOT SET"
fi
@ -115,7 +115,7 @@ elif [ "${engine}" == "dontstarve" ]; then
# tickrate
if [ -f "${servercfgfullpath}" ]; then
tickrate=$(grep "tick_rate" "${servercfgfullpath}" | grep -v "#" | tr -cd "[:digit:]")
tickrate=$(grep "tick_rate" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
if [ ! -n "${tickrate}" ]; then
tickrate="NOT SET"
fi
@ -125,7 +125,7 @@ elif [ "${engine}" == "dontstarve" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd "[:digit:]")
port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="0"
@ -148,7 +148,7 @@ elif [ "${engine}" == "projectzomboid" ]; then
# slots
if [ -f "${servercfgfullpath}" ]; then
slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | grep -v "#" | tr -cd "[:digit:]")
slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
if [ ! -n "${slots}" ]; then
slots="NOT SET"
fi
@ -158,7 +158,7 @@ elif [ "${engine}" == "projectzomboid" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "DefaultPort=" "${servercfgfullpath}" | tr -cd "[:digit:]")
port=$(grep "DefaultPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="0"
@ -201,7 +201,7 @@ elif [ "${engine}" == "realvirtuality" ]; then
# slots
if [ -f "${servercfgfullpath}" ]; then
slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd "[:digit:]")
slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
if [ ! -n "${slots}" ]; then
slots="NOT SET"
fi
@ -211,7 +211,7 @@ elif [ "${engine}" == "realvirtuality" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "serverport=" "${servercfgfullpath}" | grep -v // | tr -d '\r' | tr -cd "[:digit:]")
port=$(grep "serverport=" "${servercfgfullpath}" | grep -v // | tr -d '\r' | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="0"
@ -219,7 +219,7 @@ elif [ "${engine}" == "realvirtuality" ]; then
# query port
if [ -f "${servercfgfullpath}" ]; then
queryport=$(grep "steamqueryport=" "${servercfgfullpath}" | grep -v // | tr -d '\r' | tr -cd "[:digit:]")
queryport=$(grep "steamqueryport=" "${servercfgfullpath}" | grep -v // | tr -d '\r' | tr -cd '[:digit:]')
fi
if [ ! -n "${queryport}" ]; then
queryport="0"
@ -227,7 +227,7 @@ elif [ "${engine}" == "realvirtuality" ]; then
# master port
if [ -f "${servercfgfullpath}" ]; then
masterport=$(grep "steamport=" "${servercfgfullpath}" | grep -v // | tr -d '\r' | tr -cd "[:digit:]")
masterport=$(grep "steamport=" "${servercfgfullpath}" | grep -v // | tr -d '\r' | tr -cd '[:digit:]')
fi
if [ ! -n "${masterport}" ]; then
masterport="0"
@ -259,7 +259,7 @@ elif [ "${engine}" == "seriousengine35" ]; then
# slots
if [ -f "${servercfgfullpath}" ]; then
slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd "[:digit:]")
slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
if [ ! -n "${slots}" ]; then
slots="NOT SET"
fi
@ -279,7 +279,7 @@ elif [ "${engine}" == "seriousengine35" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "prj_uwPort" "${servercfgfullpath}" | tr -d '\r' | tr -cd "[:digit:]")
port=$(grep "prj_uwPort" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="0"
@ -309,7 +309,7 @@ elif [ "${engine}" == "source" ] || [ "${engine}" == "goldsource" ]; then
# server password
if [ -f "${servercfgfullpath}" ]; then
serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed 's/sv_password//g' | sed 's/"//g')
serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed 's/sv_password //g' | sed 's/"//g')
if [ ! -n "${serverpassword}" ]; then
serverpassword="NOT SET"
fi
@ -364,7 +364,7 @@ elif [ "${gamename}" == "Teamspeak 3" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd "[:digit:]")
port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="9987"
@ -372,7 +372,7 @@ elif [ "${gamename}" == "Teamspeak 3" ]; then
# query port
if [ -f "${servercfgfullpath}" ]; then
queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd "[:digit:]")
queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${queryport}" ]; then
queryport="10011"
@ -380,7 +380,7 @@ elif [ "${gamename}" == "Teamspeak 3" ]; then
# file port
if [ -f "${servercfgfullpath}" ]; then
fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd "[:digit:]")
fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${fileport}" ]; then
fileport="30033"
@ -422,7 +422,7 @@ elif [ "${engine}" == "teeworlds" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd "[:digit:]")
port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="8303"
@ -430,7 +430,7 @@ elif [ "${engine}" == "teeworlds" ]; then
# slots
if [ -f "${servercfgfullpath}" ]; then
slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd "[:digit:]")
slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]')
if [ ! -n "${slots}" ]; then
slots="12"
fi
@ -444,7 +444,7 @@ elif [ "${engine}" == "terraria" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "port=" "${servercfgfullpath}" | tr -cd "[:digit:]")
port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="0"
@ -484,7 +484,7 @@ elif [ "${engine}" == "unity3d" ]; then
# webadmin port
if [ -f "${servercfgfullpath}" ]; then
webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd "[:digit:]")
webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${webadminport}" ]; then
webadminport="0"
@ -522,7 +522,7 @@ elif [ "${engine}" == "unity3d" ]; then
# telnet port
if [ -f "${servercfgfullpath}" ]; then
telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd "[:digit:]")
telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${telnetport}" ]; then
telnetport="0"
@ -540,7 +540,7 @@ elif [ "${engine}" == "unity3d" ]; then
# slots
if [ -f "${servercfgfullpath}" ]; then
slots=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd "[:digit:]")
slots=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]')
if [ ! -n "${slots}" ]; then
slots="NOT SET"
fi
@ -570,7 +570,7 @@ elif [ "${engine}" == "unity3d" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd "[:digit:]")
port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="0"
@ -620,7 +620,7 @@ elif [ "${engine}" == "unreal" ] || [ "${engine}" == "unreal2" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "Port=" "${servercfgfullpath}" | grep -v "Master" | grep -v "LAN" | grep -v "Proxy" | grep -v "Listen" | tr -d '\r' | tr -cd "[:digit:]")
port=$(grep "Port=" "${servercfgfullpath}" | grep -v "Master" | grep -v "LAN" | grep -v "Proxy" | grep -v "Listen" | tr -d '\r' | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="0"
@ -636,7 +636,7 @@ elif [ "${engine}" == "unreal" ] || [ "${engine}" == "unreal2" ]; then
# gamespy query port
if [ -f "${servercfgfullpath}" ]; then
gsqueryport=$(grep "OldQueryPortNumber=" "${servercfgfullpath}" | tr -d '\r' | tr -cd "[:digit:]")
gsqueryport=$(grep "OldQueryPortNumber=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]')
fi
if [ ! -n "${gsqueryport}" ]; then
gsqueryport="0"
@ -662,7 +662,7 @@ elif [ "${engine}" == "unreal" ] || [ "${engine}" == "unreal2" ]; then
# webadmin port
if [ -f "${servercfgfullpath}" ]; then
webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd "[:digit:]")
webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]')
fi
if [ ! -n "${webadminport}" ]; then
webadminport="0"
@ -750,7 +750,7 @@ elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then
# slots
if [ -f "${servercfgfullpath}" ]; then
slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd "[:digit:]")
slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]')
if [ ! -n "${slots}" ]; then
slots="NOT SET"
fi
@ -760,7 +760,7 @@ elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then
# port
if [ -f "${servercfgfullpath}" ]; then
port=$(grep "Port=" "${servercfgfullpath}" | grep -v "RCONPort=" | grep -v "QueryPort=" | tr -cd "[:digit:]")
port=$(grep "Port=" "${servercfgfullpath}" | grep -v "RCONPort=" | grep -v "QueryPort=" | tr -cd '[:digit:]')
fi
if [ ! -n "${port}" ]; then
port="0"
@ -768,7 +768,7 @@ elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then
# rcon port
if [ -f "${servercfgfullpath}" ]; then
rconport=$(grep "RCONPort=" "${servercfgfullpath}" | tr -cd "[:digit:]")
rconport=$(grep "RCONPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${rconport}" ]; then
rconport="0"
@ -776,7 +776,7 @@ elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then
# query port
if [ -f "${servercfgfullpath}" ]; then
queryport=$(grep "QueryPort=" "${servercfgfullpath}" | tr -cd "[:digit:]")
queryport=$(grep "QueryPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
fi
if [ ! -n "${queryport}" ]; then
queryport="0"

4
functions/fn_details_distro

@ -2,7 +2,7 @@
# LGSM fn_details_distro function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 270515
# Version: 301015
# Description: Variables providing useful info on the Operating System such as disk and performace info.
# Used for fn_details, fn_debug and fn_email.
@ -29,7 +29,7 @@ glibcv=$(ldd --version |grep ldd|awk '{print $NF}')
# e.g: tmux 1.6
if [ -z "$(command -v tmux)" ]; then
tmuxv="\e[0;31mNOT INSTALLED!\e[0m"
elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd [:digit:])" -lt "16" ]; then
elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then
tmuxv="$(tmux -V) (>= 1.6 required for console log)"
else
tmuxv=$(tmux -V)

386
functions/fn_getopt

@ -2,281 +2,397 @@
# LGSM fn_getopt function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 301015
# Version: 011115
# Description: getopt arguments.
fn_getopt_generic(){
case "$getopt" in
start)
st|start)
fn_start;;
stop)
sp|stop)
fn_stop;;
restart)
r|restart)
fn_restart;;
update)
u|update)
fn_update_check;;
force-update)
fu|force-update|update-restart)
forceupdate=1;
fn_update_check;;
update-restart)
forceupdate=1;
fn_update_check;;
update-functions)
uf|update-functions)
fn_update_functions;;
validate)
v|validate)
fn_validate;;
monitor)
m|monitor)
fn_monitor;;
email-test)
et|email-test)
fn_email_test;;
details)
d|details)
fn_details;;
backup)
b|backup)
fn_backup;;
console)
c|console)
fn_console;;
debug)
d|debug)
fn_debug;;
install)
i|install)
fn_install;;
auto-install)
ai|auto-install)
fn_autoinstall;;
depsdetect)
fn_deps_detect;;
dd|depsdetect)
fn_deps_detect;;
*)
echo "Usage: $0 {start|stop|restart|update|force-update|update-functions|validate|monitor|email-test|details|backup|console|debug|install|auto-install}"
exit 1;;
esac
echo "Usage: $0 [option]"
echo "${gamename} - Linux Game Server Manager - Version ${version}"
echo "http://gameservermanagers.com/${selfname}"
echo -e ""
echo -e "\e[93mCommands\e[0m"
{
echo -e "\e[34mstart\t\e[0mStart the server."
echo -e "\e[34mstop\t\e[0mStop the server."
echo -e "\e[34mrestart\t\e[0mRestart the server."
echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD."
echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD."
echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded."
echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD."
echo -e "\e[34mmonitor\t\e[0mChecks that the server is running."
echo -e "\e[34memail-test\t\e[0mSends test monitor email."
echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server."
echo -e "\e[34mbackup\t\e[0mCreate archive of the server."
echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server."
echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal."
echo -e "\e[34minstall\t\e[0mInstall the server."
echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts."
} | column -s $'\t' -t
esac
exit
}
fn_getopt_teamspeak3(){
case "$getopt" in
start)
st|start)
fn_start;;
stop)
sp|stop)
fn_stop;;
restart)
r|restart)
fn_restart;;
update)
u|update)
fn_update_check;;
update-functions)
uf|update-functions)
fn_update_functions;;
monitor)
m|monitor)
fn_monitor;;
email-test)
et|email-test)
fn_email_test;;
details)
d|details)
fn_details;;
backup)
b|backup)
fn_backup;;
install)
i|install)
fn_install;;
auto-install)
ai|auto-install)
fn_autoinstall;;
depsdetect)
fn_deps_detect;;
dd|depsdetect)
fn_deps_detect;;
*)
echo "Usage: $0 {start|stop|restart|update|update-functions|monitor|email-test|details|backup|install|auto-install}"
exit 1;;
esac
echo "Usage: $0 [option]"
echo "${gamename} - Linux Game Server Manager - Version ${version}"
echo "http://gameservermanagers.com/${selfname}"
echo -e ""
echo -e "\e[93mCommands\e[0m"
{
echo -e "\e[34mstart\t\e[0mStart the server."
echo -e "\e[34mstop\t\e[0mStop the server."
echo -e "\e[34mrestart\t\e[0mRestart the server."
echo -e "\e[34mupdate\t\e[0mChecks and applies updates from teamspeak.com."
echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded."
echo -e "\e[34mmonitor\t\e[0mChecks that the server is running."
echo -e "\e[34memail-test\t\e[0mSends test monitor email."
echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server."
echo -e "\e[34mbackup\t\e[0mCreate archive of the server."
echo -e "\e[34minstall\t\e[0mInstall the server."
echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts."
} | column -s $'\t' -t
esac
exit
}
fn_getopt_mumble(){
case "$getopt" in
start)
st|start)
fn_start;;
stop)
sp|stop)
fn_stop;;
restart)
r|restart)
fn_restart;;
update-functions)
uf|update-functions)
fn_update_functions;;
monitor)
m|monitor)
fn_monitor;;
email-test)
et|email-test)
fn_email_test;;
backup)
b|backup)
fn_backup;;
console)
fn_console;;
debug)
d|debug)
fn_debug;;
depsdetect)
fn_deps_detect;;
dd|depsdetect)
fn_deps_detect;;
*)
echo "Usage: $0 {start|stop|restart|update-functions|monitor|email-test|backup|console|debug}"
exit 1;;
esac
echo "Usage: $0 [option]"
echo "${gamename} - Linux Game Server Manager - Version ${version}"
echo "http://gameservermanagers.com/${selfname}"
echo -e ""
echo -e "\e[93mCommands\e[0m"
{
echo -e "\e[34mstart\t\e[0mStart the server."
echo -e "\e[34mstop\t\e[0mStop the server."
echo -e "\e[34mrestart\t\e[0mRestart the server."
echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded."
echo -e "\e[34mmonitor\t\e[0mChecks that the server is running."
echo -e "\e[34memail-test\t\e[0mSends test monitor email."
echo -e "\e[34mbackup\t\e[0mCreate archive of the server."
echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server."
echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal."
} | column -s $'\t' -t
esac
exit
}
fn_getopt_gmodserver(){
case "$getopt" in
start)
st|start)
fn_start;;
stop)
sp|stop)
fn_stop;;
restart)
r|restart)
fn_restart;;
update)
fn_update_check;;
force-update)
forceupdate=1;
u|update)
fn_update_check;;
update-restart)
fu|force-update|update-restart)
forceupdate=1;
fn_update_check;;
update-functions)
uf|update-functions)
fn_update_functions;;
validate)
v|validate)
fn_validate;;
monitor)
m|monitor)
fn_monitor;;
email-test)
et|email-test)
fn_email_test;;
details)
d|details)
fn_details;;
backup)
b|backup)
fn_backup;;
console)
c|console)
fn_console;;
debug)
d|debug)
fn_debug;;
install)
i|install)
fn_install;;
auto-install)
ai|auto-install)
fn_autoinstall;;
content)
dd|depsdetect)
fn_deps_detect;;
gc|gmod-content)
fn_content_gmod;;
depsdetect)
fn_deps_detect;;
*)
echo "Usage: $0 {start|stop|restart|update|force-update|update-functions|validate|monitor|email-test|details|backup|console|debug|install|auto-install|content}"
exit 1;;
esac
echo "Usage: $0 [option]"
echo "${gamename} - Linux Game Server Manager - Version ${version}"
echo "http://gameservermanagers.com/${selfname}"
echo -e ""
echo -e "\e[93mCommands\e[0m"
{
echo -e "\e[34mstart\t\e[0mStart the server."
echo -e "\e[34mstop\t\e[0mStop the server."
echo -e "\e[34mrestart\t\e[0mRestart the server."
echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD."
echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD."
echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded."
echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD."
echo -e "\e[34mmonitor\t\e[0mChecks that the server is running."
echo -e "\e[34memail-test\t\e[0mSends test monitor email."
echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server."
echo -e "\e[34mbackup\t\e[0mCreate archive of the server."
echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server."
echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal."
echo -e "\e[34minstall\t\e[0mInstall the server."
echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts."
echo -e "\e[34mgmod-content\t\e[0mDownload gmod add-on content."
} | column -s $'\t' -t
esac
exit
}
fn_getopt_unreal(){
case "$getopt" in
start)
st|start)
fn_start;;
stop)
sp|stop)
fn_stop;;
restart)
r|restart)
fn_restart;;
update-functions)
uf|update-functions)
fn_update_functions;;
monitor)
m|monitor)
fn_monitor;;
email-test)
et|email-test)
fn_email_test;;
details)
d|details)
fn_details;;
backup)
b|backup)
fn_backup;;
console)
c|console)
fn_console;;
debug)
d|debug)
fn_debug;;
install)
i|install)
fn_install;;
map-compressor)
mc|map-compressor)
fn_compress_ut99maps;;
depsdetect)
dd|depsdetect)
fn_deps_detect;;
*)
echo "Usage: $0 {start|stop|restart|update-functions|monitor|email-test|details|backup|console|debug|install|map-compressor}"
exit 1;;
esac
echo "Usage: $0 [option]"
echo "${gamename} - Linux Game Server Manager - Version ${version}"
echo "http://gameservermanagers.com/${selfname}"
echo -e ""
echo -e "\e[93mCommands\e[0m"
{
echo -e "\e[34mstart\t\e[0mStart the server."
echo -e "\e[34mstop\t\e[0mStop the server."
echo -e "\e[34mrestart\t\e[0mRestart the server."
echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded."
echo -e "\e[34mmonitor\t\e[0mChecks that the server is running."
echo -e "\e[34memail-test\t\e[0mSends test monitor email."
echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server."
echo -e "\e[34mbackup\t\e[0mCreate archive of the server."
echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server."
echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal."
echo -e "\e[34minstall\t\e[0mInstall the server."
echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps."
} | column -s $'\t' -t
esac
exit
}
fn_getopt_unreal2(){
case "$getopt" in
start)
st|start)
fn_start;;
stop)
sp|stop)
fn_stop;;
restart)
r|restart)
fn_restart;;
update)
u|update)
fn_update_check;;
force-update)
fu|force-update|update-restart)
forceupdate=1;
fn_update_check;;
update-restart)
forceupdate=1;
fn_update_check;;
update-functions)
uf|update-functions)
fn_update_functions;;
validate)
v|validate)
fn_validate;;
monitor)
m|monitor)
fn_monitor;;
email-test)
et|email-test)
fn_email_test;;
details)
d|details)
fn_details;;
backup)
b|backup)
fn_backup;;
console)
c|console)
fn_console;;
debug)
d|debug)
fn_debug;;
install)
i|install)
fn_install;;
auto-install)
ai|auto-install)
fn_autoinstall;;
map-compressor)
dd|depsdetect)
fn_deps_detect;;
mc|map-compressor)
fn_compress_unreal2maps;;
depsdetect)
fn_deps_detect;;
*)
echo "Usage: $0 {start|stop|restart|update|update-functions|validate|monitor|email-test|details|backup|console|debug|install|auto-install|map-compressor}"
exit 1;;
esac
echo "Usage: $0 [option]"
echo "${gamename} - Linux Game Server Manager - Version ${version}"
echo "http://gameservermanagers.com/${selfname}"
echo -e ""
echo -e "\e[93mCommands\e[0m"
{
echo -e "\e[34mstart\t\e[0mStart the server."
echo -e "\e[34mstop\t\e[0mStop the server."
echo -e "\e[34mrestart\t\e[0mRestart the server."
echo -e "\e[34mupdate\t\e[0mChecks and applies updates from SteamCMD."
echo -e "\e[34mforce-update\t\e[0mBypasses the check and applies updates from SteamCMD."
echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded."
echo -e "\e[34mvalidate\t\e[0mValidate server files with SteamCMD."
echo -e "\e[34mmonitor\t\e[0mChecks that the server is running."
echo -e "\e[34memail-test\t\e[0mSends test monitor email."
echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server."
echo -e "\e[34mbackup\t\e[0mCreate archive of the server."
echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server."
echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal."
echo -e "\e[34minstall\t\e[0mInstall the server."
echo -e "\e[34mauto-install\t\e[0mInstall the server, without prompts."
echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps."
} | column -s $'\t' -t
esac
exit
}
fn_getopt_ut2k4(){
case "$getopt" in
start)
st|start)
fn_start;;
stop)
sp|stop)
fn_stop;;
restart)
r|restart)
fn_restart;;
update-functions)
uf|update-functions)
fn_update_functions;;
monitor)
m|monitor)
fn_monitor;;
email-test)
et|email-test)
fn_email_test;;
details)
d|details)
fn_details;;
backup)
b|backup)
fn_backup;;
console)
c|console)
fn_console;;
debug)
d|debug)
fn_debug;;
install)
i|install)
fn_install;;
map-compressor)
fn_compress_unreal2maps;;
depsdetect)
mc|map-compressor)
fn_compress_ut99maps;;
dd|depsdetect)
fn_deps_detect;;
*)
echo "Usage: $0 {start|stop|restart|update-functions|monitor|email-test|details|backup|console|debug|install|map-compressor}"
exit 1;;
esac
echo "Usage: $0 [option]"
echo "${gamename} - Linux Game Server Manager - Version ${version}"
echo "http://gameservermanagers.com/${selfname}"
echo -e ""
echo -e "\e[93mCommands\e[0m"
{
echo -e "\e[34mstart\t\e[0mStart the server."
echo -e "\e[34mstop\t\e[0mStop the server."
echo -e "\e[34mrestart\t\e[0mRestart the server."
echo -e "\e[34mupdate-functions\t\e[0mRemoves all functions so latest can be downloaded."
echo -e "\e[34mmonitor\t\e[0mChecks that the server is running."
echo -e "\e[34memail-test\t\e[0mSends test monitor email."
echo -e "\e[34mdetails\t\e[0mDisplays useful infomation about the server."
echo -e "\e[34mbackup\t\e[0mCreate archive of the server."
echo -e "\e[34mconsole\t\e[0mConsole allows you to access the live view of a server."
echo -e "\e[34mdebug\t\e[0mSee the output of the server directly to your terminal."
echo -e "\e[34minstall\t\e[0mInstall the server."
echo -e "\e[34mmap-compressor\t\e[0mCompresses all ${gamename} server maps."
} | column -s $'\t' -t
esac
exit
}

7
functions/fn_install_config

@ -2,7 +2,7 @@
# LGSM fn_install_config function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 291015
# Version: 051115
fn_defaultconfig(){
echo "creating ${servercfg} config file."
@ -281,6 +281,11 @@ elif [ "${gamename}" == "Natural Selection 2" ]; then
echo -e "no configs required."
sleep 1
echo ""
elif [ "${gamename}" == "Pirates, Vikings, and Knights II" ]; then
echo -e "downloading lgsm-default.cfg...\c"
wget -N /dev/null ${githuburl}/PiratesVikingandKnightsII/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
sleep 1
fn_sourceconfig
elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then
fn_unreal2config
elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then

8
functions/fn_install_glibcfix

@ -2,7 +2,7 @@
# LGSM fn_install_glibcfix function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 050715
# Version: 051115
fn_glibcfixmsg(){
echo ""
@ -40,7 +40,7 @@ if [ -z $(command -v ldd) ]; then
sleep 1
echo ""
while true; do
read -p "Continue install? [y/N]" yn
read -e -i "y" -p "Continue install? [Y/n]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) echo Exiting; exit;;
@ -48,7 +48,7 @@ if [ -z $(command -v ldd) ]; then
esac
done
# if Glibc less than 1.15
elif [ "$(ldd --version | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" -lt 215 ]; then
elif [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt 215 ]; then
# Blade Symphony
if [ "${gamename}" == "Blade Symphony" ]; then
glibcversion="2.15"
@ -110,7 +110,7 @@ elif [ "$(ldd --version | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" -lt 215
wget -nv -N https://github.com/dgibbs64/linuxgsm/raw/master/NoMoreRoomInHell/dependencies/libm.so.6
cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
# if Glibc less than 1.13
elif [ "$(ldd --version | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" -lt 213 ]; then
elif [ "$(ldd --version | sed -n '1 p' | tr -cd '[:digit:]' | tail -c 3)" -lt 213 ]; then
# ARMA 3
if [ "${gamename}" == "ARMA 3" ]; then
glibcversion="2.13"

4
functions/fn_install_gsquery

@ -2,7 +2,7 @@
# LGSM fn_install_gsquery function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 070715
# Version: 051115
fn_dlgsquery(){
cd "${rootdir}"
@ -17,7 +17,7 @@ if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}
echo "============================"
if [ -z ${autoinstall} ]; then
while true; do
read -p "Do you want to install GameServerQuery? [y/N]" yn
read -e -i "y" -p "Do you want to install GameServerQuery? [Y/n]" yn
case $yn in
[Yy]* ) fn_dlgsquery;break;;
[Nn]* ) echo ""; echo "Not installing GameServerQuery.";break;;

4
functions/fn_install_retry

@ -2,10 +2,10 @@
# LGSM fn_install_retry function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 210115
# Version: 051115
while true; do
read -p "Retry install? [y/N]" yn
read -e -i "y" -p "Retry install? [Y/n]" yn
case $yn in
[Yy]* ) fn_install; exit;;
[Nn]* ) echo Exiting; exit;;

4
functions/fn_install_serverfiles

@ -2,7 +2,7 @@
# LGSM fn_install_serverfiles function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 040715
# Version: 051115
fn_steaminstallcommand(){
fn_check_steamuser
@ -78,7 +78,7 @@ if [ -z "${autoinstall}" ]; then
echo ""
echo "================================="
while true; do
read -p "Was the install successful? [y/N]" yn
read -e -i "y" -p "Was the install successful? [Y/n]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) fn_install_retry;;

12
functions/fn_install_ts3

@ -2,7 +2,7 @@
# LGSM fn_install_ts3 function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 270715
# Version: 311015
fn_details_distro
# Gets the teamspeak server architecture
@ -12,14 +12,14 @@ elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then
ts3arch="x86"
else
fn_printfailure "${arch} is an unsupported architecture"
exit
exit 1
fi
# Grabs all version numbers not in correct order
wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | egrep -o '<a href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp
# removes digits to allow sorting of numbers
cat .ts3_version_numbers_unsorted.tmp |tr -cd "[:digit:][*\n]" > .ts3_version_numbers_digit.tmp
cat .ts3_version_numbers_unsorted.tmp |tr -cd '[:digit:][*\n]' > .ts3_version_numbers_digit.tmp
# Sorts numbers in to correct order
# merges two files in to one with two columns sorts the numbers in to order then only outputs the second to the ts3_version_numbers.tmp
paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp |sort -rn|awk '{ print $2 }' > .ts3_version_numbers.tmp
@ -45,7 +45,7 @@ if [ -z "${availablebuild}" ]; then
sleep 1
fn_printfail "Checking for update: teamspeak.com: Not returning version info"
sleep 2
exit
exit 1
fi
cd "${rootdir}"
@ -63,7 +63,7 @@ else
sleep 1
cat ".${servicename}-tar-error.tmp"
rm ".${servicename}-tar-error.tmp"
exit
exit $?
fi
echo -e "copying to ${filesdir}...\c"
cp -R "${rootdir}/teamspeak3-server_linux-${ts3arch}/"* "${filesdir}" 2> ".${servicename}-cp-error.tmp"
@ -75,7 +75,7 @@ else
sleep 1
cat ".${servicename}-cp-error.tmp"
rm ".${servicename}-cp-error.tmp"
exit
exit $?
fi
rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz
rm -rf "${rootdir}/teamspeak3-server_linux-${ts3arch}"

8
functions/fn_monitor

@ -2,7 +2,7 @@
# LGSM fn_monitor function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 150815
# Version: 311015
# Description: Monitors server by checking for running proccesses
# then passes to fn_monitor_query.
@ -22,7 +22,7 @@ if [ ! -f "${rootdir}/${lockselfname}" ]; then
sleep 1
echo -en "\n"
echo "To enable monitor run ./${selfname} start"
exit
exit 1
fi
fn_printdots "Checking session: CHECKING"
fn_scriptlog "Checking session: CHECKING"
@ -67,7 +67,7 @@ if [ ! -f "${rootdir}/${lockselfname}" ]; then
sleep 1
echo -en "\n"
echo "To enable monitor run ./${selfname} start"
exit
exit 1
fi
updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
@ -85,7 +85,7 @@ if [ "${updatecheck}" = "0" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "$
if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}" == "realvirtuality" ]||[ "${engine}" == "source" ]||[ "${engine}" == "spark" ]||[ "${engine}" == "unity3d" ]||[ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
fn_monitor_query
fi
exit
exit $?
else
fn_printfail "Checking session: FAIL"
fn_scriptlog "Checking session: FAIL"

14
functions/fn_monitor_query

@ -2,7 +2,7 @@
# LGSM fn_monitor_query function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 030715
# Version: 311015
# Description: uses gsquery.py to directly query the server.
# Detects if the server has frozen.
@ -10,15 +10,15 @@
local modulename="Monitor"
if [ -f "${rootdir}/gsquery.py" ]; then
if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
gameport=$(grep Port= "${servercfgfullpath}"|grep -v Master|grep -v LAN|grep -v Proxy|grep -v Listen|tr -d '\r'|tr -cd [:digit:])
gameport=$(grep Port= "${servercfgfullpath}"|grep -v Master|grep -v LAN|grep -v Proxy|grep -v Listen|tr -d '\r'|tr -cd '[:digit:]')
port=$((${gameport} + 1))
elif [ "${engine}" == "spark" ]; then
port=$((${port} + 1))
elif [ "${engine}" == "realvirtuality" ]; then
queryport=$(grep -s steamqueryport= "${servercfgfullpath}"|grep -v //|tr -d '\r'|tr -cd [:digit:])
queryport=$(grep -s steamqueryport= "${servercfgfullpath}"|grep -v //|tr -d '\r'|tr -cd '[:digit:]')
port=${queryport}
elif [ "${engine}" == "unity3d" ]; then
gameport=$(grep ServerPort "${servercfgfullpath}"|tr -cd [:digit:])
gameport=$(grep ServerPort "${servercfgfullpath}"|tr -cd '[:digit:]')
port=$((${gameport} + 1))
fi
fn_printinfo "Detected gsquery.py"
@ -56,7 +56,7 @@ if [ -f "${rootdir}/gsquery.py" ]; then
fn_email
fi
fn_restart
exit
exit 1
elif [ "${exitcode}" == "0" ]; then
fn_printok "Querying port: ${ip}:${port} : OK"
fn_scriptlog "Querying port: ${ip}:${port} : OK"
@ -79,7 +79,7 @@ if [ -f "${rootdir}/gsquery.py" ]; then
echo "As user ${owner} or root run the following command."
whoami=$(whoami)
echo -en "\nchown ${whoami}:${whoami} ${rootdir}/gsquery.py\n\n"
exit
exit 1
fi
else
fn_printfail "Querying port: ${ip}:${port} : UNKNOWN ERROR"
@ -87,7 +87,7 @@ if [ -f "${rootdir}/gsquery.py" ]; then
sleep 1
echo -en "\n"
${rootdir}/gsquery.py -a ${ip} -p ${port} -e ${engine}
exit
exit 1
fi
else
fn_printfailnl "Could not find ${rootdir}/gsquery.py"

6
functions/fn_start

@ -2,7 +2,7 @@
# LGSM fn_start function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 291015
# Version: 301015
# Description: Starts the server.
@ -126,11 +126,11 @@ date > "${rootdir}/${lockselfname}"
cd "${executabledir}"
tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp"
# tmux pipe-pane not supported in tmux versions < 1.6
if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd [:digit:])" -lt "16" ]; then
if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then
echo "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}"
echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}"
echo "Currently installed: $(tmux -V)" >> "${consolelog}"
elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd [:digit:])" -eq "18" ]; then
elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -eq "18" ]; then
echo "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}"
echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}"
echo "Currently installed: $(tmux -V)" >> "${consolelog}"

22
functions/fn_update_check

@ -2,7 +2,7 @@
# LGSM fn_update_check function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 281015
# Version: 011115
# Description: Checks if a server update is available.
@ -40,7 +40,7 @@ if [ "${appmanifestfilewc}" -ge "2" ]; then
for appfile in ${appmanifestfile}; do
echo " ${appfile}"
done
exit
exit 1
else
sleep 1
fn_printok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
@ -53,10 +53,10 @@ if [ "${appmanifestfilewc}" -ge "2" ]; then
fn_update_check
fi
elif [ "${appmanifestfilewc}" -eq "0" ]; then
if [ "${forceupdate}" -eq "1" ]; then
if [ "${forceupdate}" == "1" ]; then
fn_printfail "Still no appmanifest_${appid}.acf found: Unable to update"
fn_scriptlog "Warning! Still no appmanifest_${appid}.acf found: Unable to update"
exit
exit 1
fi
forceupdate=1
fn_printwarn "No appmanifest_${appid}.acf found"
@ -128,14 +128,14 @@ if [ -z "${availablebuild}" ]; then
sleep 1
fn_printfailnl "Checking for update: SteamCMD: Not returning version info"
fn_scriptlog "Failure! Checking for update: SteamCMD: Not returning version info"
exit
exit 1
else
fn_printok "Checking for update: SteamCMD"
fn_scriptlog "Success! Checking for update: SteamCMD"
sleep 1
fi
if [ "${currentbuild}" -ne "${availablebuild}" ]; then
if [ "${currentbuild}" != "${availablebuild}" ]; then
echo -e "\n"
echo -e "Update available:"
sleep 1
@ -205,7 +205,7 @@ if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
fn_printfailnl "Checking for update: teamspeak.com: Still No logs with server version found"
fn_scriptlog "Failure! Checking for update: teamspeak.com: Still No logs with server version found"
exit
exit 1
fi
fi
currentbuild=$(cat $(find ./* -name 'ts3server*_0.log' 2> /dev/null | sort | egrep -E -v '${rootdir}/.ts3version' | tail -1) | egrep -o 'TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | egrep -o '((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}')
@ -219,7 +219,7 @@ ts3arch=$(ls $(find ${filesdir}/ -name 'ts3server_*_*' 2> /dev/null | grep -v 't
wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | egrep -o '<a href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp
# removes digits to allow sorting of numbers
cat .ts3_version_numbers_unsorted.tmp |tr -cd "[:digit:][*\n]" > .ts3_version_numbers_digit.tmp
cat .ts3_version_numbers_unsorted.tmp |tr -cd '[:digit:][*\n]' > .ts3_version_numbers_digit.tmp
# Sorts numbers in to correct order
# merges two files in to one with two columns sorts the numbers in to order then only outputs the second to the ts3_version_numbers.tmp
paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp |sort -rn|awk '{ print $2 }' > .ts3_version_numbers.tmp
@ -245,7 +245,7 @@ if [ -z "${availablebuild}" ]; then
fn_printfail "Checking for update: teamspeak.com: Not returning version info"
fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info"
sleep 2
exit
exit 1
else
fn_printok "Checking for update: teamspeak.com"
fn_scriptlog "Success! Checking for update: teamspeak.com"
@ -253,8 +253,8 @@ else
fi
# Removes dots so if can compare version numbers
currentbuilddigit=$(echo "${currentbuild}"|tr -cd "[:digit:]")
availablebuilddigit=$(echo "${availablebuild}"|tr -cd "[:digit:]")
currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]')
if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
echo -e "\n"
echo -e "Update available:"

6
functions/fn_update_dl

@ -2,7 +2,7 @@
# LGSM fn_update_dl function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 040715
# Version: 311015
# Description: Runs a server update.
@ -66,7 +66,7 @@ else
cat "${scriptlogdir}/.${servicename}-tar-error.tmp" >> "${scriptlog}"
rm "${scriptlogdir}/.${servicename}-tar-error.tmp"
fn_scriptlog "Failure! Unable to update"
exit
exit ${status}
fi
echo -e "copying to ${filesdir}...\c"
fn_scriptlog "Copying to ${filesdir}"
@ -82,7 +82,7 @@ else
cat "${scriptlogdir}/.${servicename}-cp-error.tmp" >> "${scriptlog}"
rm "${scriptlogdir}/.${servicename}-cp-error.tmp"
fn_scriptlog "Failure! Unable to update"
exit
exit ${status}
fi
rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz
rm -rf "${rootdir}/teamspeak3-server_linux-${ts3arch}"

485
tests/test.sh

@ -0,0 +1,485 @@
#!/bin/bash
# Just Cause 2
# Server Management Script
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
version="150715"
#### Variables ####
# Notification Email
# (on|off)
emailnotification="on"
email="[email protected]"
# Steam login
steamuser="anonymous"
steampass=""
# Start Variables
updateonstart="off"
fn_parms(){
parms=""
}
#### Advanced Variables ####
# Steam
appid="261140"
# Server Details
servicename="jc2-server"
gamename="Just Cause 2"
engine="avalanche"
# Directories
rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/jc2server"
mkdir "${rootdir}"
selfname="$(basename $0)"
lockselfname=".${servicename}.lock"
filesdir="${rootdir}/serverfiles"
systemdir="${filesdir}"
executabledir="${filesdir}"
executable="./Jcmp-Server"
servercfg="config.lua"
servercfgdir="${filesdir}"
servercfgfullpath="${servercfgdir}/${servercfg}"
servercfgdefault="${servercfgdir}/default_config.lua"
backupdir="${rootdir}/backups"
# Logging
logdays="7"
#gamelogdir="" # No server logs available
scriptlogdir="${rootdir}/log/script"
consolelogdir="${rootdir}/log/console"
scriptlog="${scriptlogdir}/${servicename}-script.log"
consolelog="${consolelogdir}/${servicename}-console.log"
emaillog="${scriptlogdir}/${servicename}-email.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_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 /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
chmod +x "${functionfile}"
cd "${rootdir}"
fi
source "${rootdir}/functions/${functionfile}"
}
fn_functions(){
# Functions are defined in fn_functions.
functionfile="${FUNCNAME}"
fn_runfunction
}
fn_functions
getopt=$1
fn_currentstatus(){
pid=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:")
if [ "${pid}" == "0" ]; then
currentstatus="OFFLINE"
else
currentstatus="ONLINE"
fi
}
fn_setstatus(){
fn_currentstatus
echo""
echo "Required status: ${requiredstatus}"
counter=0
while [ "${requiredstatus}" != "${currentstatus}" ]; do
counter=$((counter+1))
fn_currentstatus
echo -ne "Current status: ${currentstatus}\\r"
if [ "${requiredstatus}" == "ONLINE" ]; then
(fn_start > /dev/null 2>&1)
else
(fn_stop > /dev/null 2>&1)
fi
if [ "${counter}" -gt "5" ]; then
currentstatus="FAIL"
echo "Current status: ${currentstatus}"
echo ""
echo "Unable to start or stop server."
exit
fi
done
echo -ne "Current status: ${currentstatus}\\r"
echo -e "\n"
echo "Test starting:"
echo ""
sleep 0.5
}
echo "================================="
echo "TravisCI Tests"
echo "Linux Game Server Manager"
echo "by Daniel Gibbs"
echo "http://gameservermanagers.com"
echo "================================="
echo ""
sleep 1
echo "================================="
echo "Generic Server Tests"
echo "Using: ${gamename}"
echo "================================="
echo ""
sleep 1
mkdir ${rootfdir}
echo "1.0 - start - no files"
echo "================================="
echo "Description:"
echo "Test script reaction to missing server files."
requiredstatus="OFFLINE"
fn_setstatus
(fn_start)
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "2.0 - install"
echo "================================="
echo "Description:"
echo "install ${gamename} server."
requiredstatus="OFFLINE"
fn_setstatus
fn_autoinstall
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "3.1 - start"
echo "================================="
echo "Description:"
echo "start ${gamename} server."
requiredstatus="OFFLINE"
fn_setstatus
fn_start
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "3.2 - start - online"
echo "================================="
echo "Description:"
echo "start ${gamename} server while already running."
requiredstatus="ONLINE"
fn_setstatus
(fn_start)
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "3.3 - start - updateonstart"
echo "================================="
echo "Description:"
echo "will update server on start."
requiredstatus="ONLINE"
fn_setstatus
(
updateonstart="on"
fn_start
)
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "3.4 - stop"
echo "================================="
echo "Description:"
echo "stop ${gamename} server."
requiredstatus="ONLINE"
fn_setstatus
fn_stop
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "3.5 - stop - offline"
echo "================================="
echo "Description:"
echo "stop ${gamename} server while already stopped."
requiredstatus="OFFLINE"
fn_setstatus
(fn_stop)
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "3.6 - restart"
echo "================================="
echo "Description:"
echo "restart ${gamename}."
requiredstatus="ONLINE"
fn_setstatus
fn_restart
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "3.7 - restart - offline"
echo "================================="
echo "Description:"
echo "restart ${gamename} while already stopped."
requiredstatus="OFFLINE"
fn_setstatus
fn_restart
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "4.1 - update"
echo "================================="
echo "Description:"
echo "check for updates."
requiredstatus="OFFLINE"
fn_setstatus
fn_update_check
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "4.2 - update - change buildid"
echo "================================="
echo "Description:"
echo "change the buildid tricking SteamCMD to update."
requiredstatus="OFFLINE"
fn_setstatus
fn_printinfonl "changed buildid to 0."
sed -i 's/[0-9]\+/0/' ${filesdir}/steamapps/appmanifest_${appid}.acf
fn_update_check
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "4.3 - update - change buildid - online"
echo "================================="
echo "Description:"
echo "change the buildid tricking SteamCMD to update server while already running."
requiredstatus="ONLINE"
fn_setstatus
fn_printinfonl "changed buildid to 0."
sed -i 's/[0-9]\+/0/' ${filesdir}/steamapps/appmanifest_${appid}.acf
fn_update_check
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "4.4 - update - remove appmanifest file"
echo "================================="
echo "Description:"
echo "removing appmanifest file will cause script to repair."
requiredstatus="OFFLINE"
fn_setstatus
fn_printinfonl "removed appmanifest_${appid}.acf."
rm --verbose "${filesdir}/steamapps/appmanifest_${appid}.acf"
fn_update_check
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "4.5 - force-update"
echo "================================="
echo "Description:"
echo "force-update bypassing update check."
requiredstatus="OFFLINE"
fn_setstatus
fn_update_check
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "4.6 - force-update - online"
echo "================================="
echo "Description:"
echo "force-update bypassing update check server while already running."
requiredstatus="ONLINE"
fn_setstatus
fn_update_check
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "4.7 - validate"
echo "================================="
echo "Description:"
echo "validate server files."
requiredstatus="OFFLINE"
fn_setstatus
fn_validate
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "4.8 - validate - online"
echo "================================="
echo "Description:"
echo "validate server files while server while already running."
requiredstatus="ONLINE"
fn_setstatus
fn_validate
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "5.1 - monitor - online"
echo "================================="
echo "Description:"
echo "run monitor server while already running."
requiredstatus="ONLINE"
fn_setstatus
(fn_monitor)
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "5.2 - monitor - offline - no lockfile"
echo "================================="
echo "Description:"
echo "run monitor while server is offline with no lockfile."
requiredstatus="OFFLINE"
fn_setstatus
(fn_monitor)
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "5.3 - monitor - offline - with lockfile"
echo "================================="
echo "Description:"
echo "run monitor while server is offline with no lockfile."
requiredstatus="OFFLINE"
fn_setstatus
fn_printinfonl "creating lockfile."
date > "${rootdir}/${lockselfname}"
(fn_monitor)
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "5.4 - monitor - gsquery.py failure"
echo "================================="
echo "Description:"
echo "gsquery.py will fail to query port."
requiredstatus="ONLINE"
fn_setstatus
sed -i 's/[0-9]\+/0/' "${servercfgfullpath}"
(fn_monitor)
echo ""
fn_printinfonl "Reseting ${servercfg}."
fn_install_config
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "6.0 - details"
echo "================================="
echo "Description:"
echo "gsquery.py will fail to query port."
requiredstatus="ONLINE"
fn_setstatus
fn_details
echo ""
echo "Test complete!"
sleep 1
echo ""
echo "================================="
echo "Generic Server Tests - Complete!"
echo "Using: ${gamename}"
echo "================================="
echo ""
sleep 1
fn_printinfo "Tidying up directories."
sleep 1
rm -rfv ${rootdir}
echo "END"
#!/bin/bash
# Teamspeak 3
# Server Management Script
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
version="040715"
#### Variables ####
# Notification Email
# (on|off)
emailnotification="on"
email="[email protected]"
# Start Variables
updateonstart="off"
# Server Details
gamename="Teamspeak 3"
servername="Teamspeak 3 Server"
servicename="ts3-server"
# Directories
rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ts3server"
selfname="$(basename $0)"
lockselfname=".${servicename}.lock"
filesdir="${rootdir}/serverfiles"
systemdir="${filesdir}"
executabledir="${filesdir}"
executable="./ts3server_startscript.sh"
servercfg="${servicename}.ini"
servercfgdir="${filesdir}"
servercfgfullpath="${servercfgdir}/${servercfg}"
backupdir="${rootdir}/backups"
# Logging
logdays="7"
gamelogdir="${filesdir}/logs"
scriptlogdir="${rootdir}/log/script"
scriptlog="${scriptlogdir}/${servicename}-script.log"
emaillog="${scriptlogdir}/${servicename}-email.log"
scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
echo "================================="
echo "Generic Server Tests"
echo "Using: ${gamename}"
echo "================================="
echo ""
sleep 1
Loading…
Cancel
Save