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. 380
      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 language: bash
sudo: false
env:
- DISTRO=ubuntu-trusty
before_script: before_script:
- curl -L "https://shunit2.googlecode.com/files/shunit2-2.1.6.tgz" | tar zx - 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: script:
- bash 7DaysToDie/sdtdserver auto-install - bash tests/test.sh
- 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

1
Arma3/arma3server

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

4
functions/fn_check_ip

@ -2,7 +2,7 @@
# LGSM fn_check_ip function # LGSM fn_check_ip function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 120715 # Version: 311015
# Description: Automatically identifies the server interface IP. # 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". # 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 ""
echo -en "http://gameservermanagers.com/network-interfaces" echo -en "http://gameservermanagers.com/network-interfaces"
echo -en "" echo -en ""
exit exit 1
else else
ip=${getip} ip=${getip}
fi fi

4
functions/fn_check_root

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

30
functions/fn_check_steamuser

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

4
functions/fn_check_systemdir

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

4
functions/fn_check_tmux

@ -2,7 +2,7 @@
# LGSM fn_check_tmux function # LGSM fn_check_tmux function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # 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. # 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 # Suitable passive agressive message
echo " * Please see the the following link." echo " * Please see the the following link."
echo " * http://gameservermanagers.com/tmux-not-found" echo " * http://gameservermanagers.com/tmux-not-found"
exit exit 127
fi fi

4
functions/fn_compress_unreal2maps

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

4
functions/fn_compress_ut99maps

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

4
functions/fn_console

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

6
functions/fn_debug

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

118
functions/fn_details

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

64
functions/fn_details_config

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

4
functions/fn_details_distro

@ -2,7 +2,7 @@
# LGSM fn_details_distro function # LGSM fn_details_distro function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 270515 # Version: 301015
# Description: Variables providing useful info on the Operating System such as disk and performace info. # Description: Variables providing useful info on the Operating System such as disk and performace info.
# Used for fn_details, fn_debug and fn_email. # 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 # e.g: tmux 1.6
if [ -z "$(command -v tmux)" ]; then if [ -z "$(command -v tmux)" ]; then
tmuxv="\e[0;31mNOT INSTALLED!\e[0m" 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)" tmuxv="$(tmux -V) (>= 1.6 required for console log)"
else else
tmuxv=$(tmux -V) tmuxv=$(tmux -V)

380
functions/fn_getopt

@ -2,281 +2,397 @@
# LGSM fn_getopt function # LGSM fn_getopt function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 301015 # Version: 011115
# Description: getopt arguments. # Description: getopt arguments.
fn_getopt_generic(){ fn_getopt_generic(){
case "$getopt" in case "$getopt" in
start) st|start)
fn_start;; fn_start;;
stop) sp|stop)
fn_stop;; fn_stop;;
restart) r|restart)
fn_restart;; fn_restart;;
update) u|update)
fn_update_check;; fn_update_check;;
force-update) fu|force-update|update-restart)
forceupdate=1; forceupdate=1;
fn_update_check;; fn_update_check;;
update-restart) uf|update-functions)
forceupdate=1;
fn_update_check;;
update-functions)
fn_update_functions;; fn_update_functions;;
validate) v|validate)
fn_validate;; fn_validate;;
monitor) m|monitor)
fn_monitor;; fn_monitor;;
email-test) et|email-test)
fn_email_test;; fn_email_test;;
details) d|details)
fn_details;; fn_details;;
backup) b|backup)
fn_backup;; fn_backup;;
console) c|console)
fn_console;; fn_console;;
debug) d|debug)
fn_debug;; fn_debug;;
install) i|install)
fn_install;; fn_install;;
auto-install) ai|auto-install)
fn_autoinstall;; fn_autoinstall;;
depsdetect) dd|depsdetect)
fn_deps_detect;; 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}" echo "Usage: $0 [option]"
exit 1;; echo "${gamename} - Linux Game Server Manager - Version ${version}"
esac 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 exit
} }
fn_getopt_teamspeak3(){ fn_getopt_teamspeak3(){
case "$getopt" in case "$getopt" in
start) st|start)
fn_start;; fn_start;;
stop) sp|stop)
fn_stop;; fn_stop;;
restart) r|restart)
fn_restart;; fn_restart;;
update) u|update)
fn_update_check;; fn_update_check;;
update-functions) uf|update-functions)
fn_update_functions;; fn_update_functions;;
monitor) m|monitor)
fn_monitor;; fn_monitor;;
email-test) et|email-test)
fn_email_test;; fn_email_test;;
details) d|details)
fn_details;; fn_details;;
backup) b|backup)
fn_backup;; fn_backup;;
install) i|install)
fn_install;; fn_install;;
auto-install) ai|auto-install)
fn_autoinstall;; fn_autoinstall;;
depsdetect) dd|depsdetect)
fn_deps_detect;; fn_deps_detect;;
*) *)
echo "Usage: $0 {start|stop|restart|update|update-functions|monitor|email-test|details|backup|install|auto-install}" echo "Usage: $0 [option]"
exit 1;; echo "${gamename} - Linux Game Server Manager - Version ${version}"
esac 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 exit
} }
fn_getopt_mumble(){ fn_getopt_mumble(){
case "$getopt" in case "$getopt" in
start) st|start)
fn_start;; fn_start;;
stop) sp|stop)
fn_stop;; fn_stop;;
restart) r|restart)
fn_restart;; fn_restart;;
update-functions) uf|update-functions)
fn_update_functions;; fn_update_functions;;
monitor) m|monitor)
fn_monitor;; fn_monitor;;
email-test) et|email-test)
fn_email_test;; fn_email_test;;
backup) b|backup)
fn_backup;; fn_backup;;
console) console)
fn_console;; fn_console;;
debug) d|debug)
fn_debug;; fn_debug;;
depsdetect) dd|depsdetect)
fn_deps_detect;; fn_deps_detect;;
*) *)
echo "Usage: $0 {start|stop|restart|update-functions|monitor|email-test|backup|console|debug}" echo "Usage: $0 [option]"
exit 1;; echo "${gamename} - Linux Game Server Manager - Version ${version}"
esac 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 exit
} }
fn_getopt_gmodserver(){ fn_getopt_gmodserver(){
case "$getopt" in case "$getopt" in
start) st|start)
fn_start;; fn_start;;
stop) sp|stop)
fn_stop;; fn_stop;;
restart) r|restart)
fn_restart;; fn_restart;;
update) u|update)
fn_update_check;;
force-update)
forceupdate=1;
fn_update_check;; fn_update_check;;
update-restart) fu|force-update|update-restart)
forceupdate=1; forceupdate=1;
fn_update_check;; fn_update_check;;
update-functions) uf|update-functions)
fn_update_functions;; fn_update_functions;;
validate) v|validate)
fn_validate;; fn_validate;;
monitor) m|monitor)
fn_monitor;; fn_monitor;;
email-test) et|email-test)
fn_email_test;; fn_email_test;;
details) d|details)
fn_details;; fn_details;;
backup) b|backup)
fn_backup;; fn_backup;;
console) c|console)
fn_console;; fn_console;;
debug) d|debug)
fn_debug;; fn_debug;;
install) i|install)
fn_install;; fn_install;;
auto-install) ai|auto-install)
fn_autoinstall;; fn_autoinstall;;
content) dd|depsdetect)
fn_content_gmod;;
depsdetect)
fn_deps_detect;; fn_deps_detect;;
gc|gmod-content)
fn_content_gmod;;
*) *)
echo "Usage: $0 {start|stop|restart|update|force-update|update-functions|validate|monitor|email-test|details|backup|console|debug|install|auto-install|content}" echo "Usage: $0 [option]"
exit 1;; echo "${gamename} - Linux Game Server Manager - Version ${version}"
esac 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 exit
} }
fn_getopt_unreal(){ fn_getopt_unreal(){
case "$getopt" in case "$getopt" in
start) st|start)
fn_start;; fn_start;;
stop) sp|stop)
fn_stop;; fn_stop;;
restart) r|restart)
fn_restart;; fn_restart;;
update-functions) uf|update-functions)
fn_update_functions;; fn_update_functions;;
monitor) m|monitor)
fn_monitor;; fn_monitor;;
email-test) et|email-test)
fn_email_test;; fn_email_test;;
details) d|details)
fn_details;; fn_details;;
backup) b|backup)
fn_backup;; fn_backup;;
console) c|console)
fn_console;; fn_console;;
debug) d|debug)
fn_debug;; fn_debug;;
install) i|install)
fn_install;; fn_install;;
map-compressor) mc|map-compressor)
fn_compress_ut99maps;; fn_compress_ut99maps;;
depsdetect) dd|depsdetect)
fn_deps_detect;; fn_deps_detect;;
*) *)
echo "Usage: $0 {start|stop|restart|update-functions|monitor|email-test|details|backup|console|debug|install|map-compressor}" echo "Usage: $0 [option]"
exit 1;; echo "${gamename} - Linux Game Server Manager - Version ${version}"
esac 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 exit
} }
fn_getopt_unreal2(){ fn_getopt_unreal2(){
case "$getopt" in case "$getopt" in
start) st|start)
fn_start;; fn_start;;
stop) sp|stop)
fn_stop;; fn_stop;;
restart) r|restart)
fn_restart;; fn_restart;;
update) u|update)
fn_update_check;;
force-update)
forceupdate=1;
fn_update_check;; fn_update_check;;
update-restart) fu|force-update|update-restart)
forceupdate=1; forceupdate=1;
fn_update_check;; fn_update_check;;
update-functions) uf|update-functions)
fn_update_functions;; fn_update_functions;;
validate) v|validate)
fn_validate;; fn_validate;;
monitor) m|monitor)
fn_monitor;; fn_monitor;;
email-test) et|email-test)
fn_email_test;; fn_email_test;;
details) d|details)
fn_details;; fn_details;;
backup) b|backup)
fn_backup;; fn_backup;;
console) c|console)
fn_console;; fn_console;;
debug) d|debug)
fn_debug;; fn_debug;;
install) i|install)
fn_install;; fn_install;;
auto-install) ai|auto-install)
fn_autoinstall;; fn_autoinstall;;
map-compressor) dd|depsdetect)
fn_compress_unreal2maps;;
depsdetect)
fn_deps_detect;; fn_deps_detect;;
mc|map-compressor)
fn_compress_unreal2maps;;
*) *)
echo "Usage: $0 {start|stop|restart|update|update-functions|validate|monitor|email-test|details|backup|console|debug|install|auto-install|map-compressor}" echo "Usage: $0 [option]"
exit 1;; echo "${gamename} - Linux Game Server Manager - Version ${version}"
esac 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 exit
} }
fn_getopt_ut2k4(){ fn_getopt_ut2k4(){
case "$getopt" in case "$getopt" in
start) st|start)
fn_start;; fn_start;;
stop) sp|stop)
fn_stop;; fn_stop;;
restart) r|restart)
fn_restart;; fn_restart;;
update-functions) uf|update-functions)
fn_update_functions;; fn_update_functions;;
monitor) m|monitor)
fn_monitor;; fn_monitor;;
email-test) et|email-test)
fn_email_test;; fn_email_test;;
details) d|details)
fn_details;; fn_details;;
backup) b|backup)
fn_backup;; fn_backup;;
console) c|console)
fn_console;; fn_console;;
debug) d|debug)
fn_debug;; fn_debug;;
install) i|install)
fn_install;; fn_install;;
map-compressor) mc|map-compressor)
fn_compress_unreal2maps;; fn_compress_ut99maps;;
depsdetect) dd|depsdetect)
fn_deps_detect;; fn_deps_detect;;
*) *)
echo "Usage: $0 {start|stop|restart|update-functions|monitor|email-test|details|backup|console|debug|install|map-compressor}" echo "Usage: $0 [option]"
exit 1;; echo "${gamename} - Linux Game Server Manager - Version ${version}"
esac 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 exit
} }

7
functions/fn_install_config

@ -2,7 +2,7 @@
# LGSM fn_install_config function # LGSM fn_install_config function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 291015 # Version: 051115
fn_defaultconfig(){ fn_defaultconfig(){
echo "creating ${servercfg} config file." echo "creating ${servercfg} config file."
@ -281,6 +281,11 @@ elif [ "${gamename}" == "Natural Selection 2" ]; then
echo -e "no configs required." echo -e "no configs required."
sleep 1 sleep 1
echo "" 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 elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then
fn_unreal2config fn_unreal2config
elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then

8
functions/fn_install_glibcfix

@ -2,7 +2,7 @@
# LGSM fn_install_glibcfix function # LGSM fn_install_glibcfix function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 050715 # Version: 051115
fn_glibcfixmsg(){ fn_glibcfixmsg(){
echo "" echo ""
@ -40,7 +40,7 @@ if [ -z $(command -v ldd) ]; then
sleep 1 sleep 1
echo "" echo ""
while true; do while true; do
read -p "Continue install? [y/N]" yn read -e -i "y" -p "Continue install? [Y/n]" yn
case $yn in case $yn in
[Yy]* ) break;; [Yy]* ) break;;
[Nn]* ) echo Exiting; exit;; [Nn]* ) echo Exiting; exit;;
@ -48,7 +48,7 @@ if [ -z $(command -v ldd) ]; then
esac esac
done done
# if Glibc less than 1.15 # 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 # Blade Symphony
if [ "${gamename}" == "Blade Symphony" ]; then if [ "${gamename}" == "Blade Symphony" ]; then
glibcversion="2.15" 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 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" cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
# if Glibc less than 1.13 # 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 # ARMA 3
if [ "${gamename}" == "ARMA 3" ]; then if [ "${gamename}" == "ARMA 3" ]; then
glibcversion="2.13" glibcversion="2.13"

4
functions/fn_install_gsquery

@ -2,7 +2,7 @@
# LGSM fn_install_gsquery function # LGSM fn_install_gsquery function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 070715 # Version: 051115
fn_dlgsquery(){ fn_dlgsquery(){
cd "${rootdir}" cd "${rootdir}"
@ -17,7 +17,7 @@ if [ "${engine}" == "avalanche" ]||[ "${engine}" == "goldsource" ]||[ "${engine}
echo "============================" echo "============================"
if [ -z ${autoinstall} ]; then if [ -z ${autoinstall} ]; then
while true; do 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 case $yn in
[Yy]* ) fn_dlgsquery;break;; [Yy]* ) fn_dlgsquery;break;;
[Nn]* ) echo ""; echo "Not installing GameServerQuery.";break;; [Nn]* ) echo ""; echo "Not installing GameServerQuery.";break;;

4
functions/fn_install_retry

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

4
functions/fn_install_serverfiles

@ -2,7 +2,7 @@
# LGSM fn_install_serverfiles function # LGSM fn_install_serverfiles function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 040715 # Version: 051115
fn_steaminstallcommand(){ fn_steaminstallcommand(){
fn_check_steamuser fn_check_steamuser
@ -78,7 +78,7 @@ if [ -z "${autoinstall}" ]; then
echo "" echo ""
echo "=================================" echo "================================="
while true; do 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 case $yn in
[Yy]* ) break;; [Yy]* ) break;;
[Nn]* ) fn_install_retry;; [Nn]* ) fn_install_retry;;

12
functions/fn_install_ts3

@ -2,7 +2,7 @@
# LGSM fn_install_ts3 function # LGSM fn_install_ts3 function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 270715 # Version: 311015
fn_details_distro fn_details_distro
# Gets the teamspeak server architecture # Gets the teamspeak server architecture
@ -12,14 +12,14 @@ elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then
ts3arch="x86" ts3arch="x86"
else else
fn_printfailure "${arch} is an unsupported architecture" fn_printfailure "${arch} is an unsupported architecture"
exit exit 1
fi fi
# Grabs all version numbers not in correct order # 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 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 # 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 # 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 # 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 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 sleep 1
fn_printfail "Checking for update: teamspeak.com: Not returning version info" fn_printfail "Checking for update: teamspeak.com: Not returning version info"
sleep 2 sleep 2
exit exit 1
fi fi
cd "${rootdir}" cd "${rootdir}"
@ -63,7 +63,7 @@ else
sleep 1 sleep 1
cat ".${servicename}-tar-error.tmp" cat ".${servicename}-tar-error.tmp"
rm ".${servicename}-tar-error.tmp" rm ".${servicename}-tar-error.tmp"
exit exit $?
fi fi
echo -e "copying to ${filesdir}...\c" echo -e "copying to ${filesdir}...\c"
cp -R "${rootdir}/teamspeak3-server_linux-${ts3arch}/"* "${filesdir}" 2> ".${servicename}-cp-error.tmp" cp -R "${rootdir}/teamspeak3-server_linux-${ts3arch}/"* "${filesdir}" 2> ".${servicename}-cp-error.tmp"
@ -75,7 +75,7 @@ else
sleep 1 sleep 1
cat ".${servicename}-cp-error.tmp" cat ".${servicename}-cp-error.tmp"
rm ".${servicename}-cp-error.tmp" rm ".${servicename}-cp-error.tmp"
exit exit $?
fi fi
rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz
rm -rf "${rootdir}/teamspeak3-server_linux-${ts3arch}" rm -rf "${rootdir}/teamspeak3-server_linux-${ts3arch}"

8
functions/fn_monitor

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

14
functions/fn_monitor_query

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

6
functions/fn_start

@ -2,7 +2,7 @@
# LGSM fn_start function # LGSM fn_start function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 291015 # Version: 301015
# Description: Starts the server. # Description: Starts the server.
@ -126,11 +126,11 @@ date > "${rootdir}/${lockselfname}"
cd "${executabledir}" cd "${executabledir}"
tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp" tmux new-session -d -s "${servicename}" "${executable} ${parms}" 2> "${scriptlogdir}/.${servicename}-tmux-error.tmp"
# tmux pipe-pane not supported in tmux versions < 1.6 # 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 "Console logging disabled: Tmux => 1.6 required" >> "${consolelog}"
echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}"
echo "Currently installed: $(tmux -V)" >> "${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 "Console logging disabled: Bug in tmux 1.8 breaks logging" >> "${consolelog}"
echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}" echo "http://gameservermanagers.com/tmux-upgrade" >> "${consolelog}"
echo "Currently installed: $(tmux -V)" >> "${consolelog}" echo "Currently installed: $(tmux -V)" >> "${consolelog}"

22
functions/fn_update_check

@ -2,7 +2,7 @@
# LGSM fn_update_check function # LGSM fn_update_check function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Website: http://gameservermanagers.com # Website: http://gameservermanagers.com
# Version: 281015 # Version: 011115
# Description: Checks if a server update is available. # Description: Checks if a server update is available.
@ -40,7 +40,7 @@ if [ "${appmanifestfilewc}" -ge "2" ]; then
for appfile in ${appmanifestfile}; do for appfile in ${appmanifestfile}; do
echo " ${appfile}" echo " ${appfile}"
done done
exit exit 1
else else
sleep 1 sleep 1
fn_printok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" fn_printok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
@ -53,10 +53,10 @@ if [ "${appmanifestfilewc}" -ge "2" ]; then
fn_update_check fn_update_check
fi fi
elif [ "${appmanifestfilewc}" -eq "0" ]; then 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_printfail "Still no appmanifest_${appid}.acf found: Unable to update"
fn_scriptlog "Warning! 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 fi
forceupdate=1 forceupdate=1
fn_printwarn "No appmanifest_${appid}.acf found" fn_printwarn "No appmanifest_${appid}.acf found"
@ -128,14 +128,14 @@ if [ -z "${availablebuild}" ]; then
sleep 1 sleep 1
fn_printfailnl "Checking for update: SteamCMD: Not returning version info" fn_printfailnl "Checking for update: SteamCMD: Not returning version info"
fn_scriptlog "Failure! Checking for update: SteamCMD: Not returning version info" fn_scriptlog "Failure! Checking for update: SteamCMD: Not returning version info"
exit exit 1
else else
fn_printok "Checking for update: SteamCMD" fn_printok "Checking for update: SteamCMD"
fn_scriptlog "Success! Checking for update: SteamCMD" fn_scriptlog "Success! Checking for update: SteamCMD"
sleep 1 sleep 1
fi fi
if [ "${currentbuild}" -ne "${availablebuild}" ]; then if [ "${currentbuild}" != "${availablebuild}" ]; then
echo -e "\n" echo -e "\n"
echo -e "Update available:" echo -e "Update available:"
sleep 1 sleep 1
@ -205,7 +205,7 @@ if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
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_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" fn_scriptlog "Failure! Checking for update: teamspeak.com: Still No logs with server version found"
exit exit 1
fi fi
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}') 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 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 # 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 # 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 # 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 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_printfail "Checking for update: teamspeak.com: Not returning version info"
fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info" fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info"
sleep 2 sleep 2
exit exit 1
else else
fn_printok "Checking for update: teamspeak.com" fn_printok "Checking for update: teamspeak.com"
fn_scriptlog "Success! Checking for update: teamspeak.com" fn_scriptlog "Success! Checking for update: teamspeak.com"
@ -253,8 +253,8 @@ else
fi fi
# Removes dots so if can compare version numbers # Removes dots so if can compare version numbers
currentbuilddigit=$(echo "${currentbuild}"|tr -cd "[:digit:]") currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}"|tr -cd "[:digit:]") availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]')
if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
echo -e "\n" echo -e "\n"
echo -e "Update available:" echo -e "Update available:"

6
functions/fn_update_dl

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