Browse Source

Merge remote-tracking branch 'refs/remotes/origin/master' into Options-menu

Conflicts:
	functions/fn_details_distro
	functions/fn_getopt
	functions/fn_install_ts3
	functions/fn_monitor_query
	functions/fn_update_check
pull/520/head
Daniel Gibbs 10 years ago
parent
commit
02f12d925c
  1. 173
      .travis.yml
  2. 1
      Arma3/arma3server
  3. 4
      functions/fn_backup
  4. 4
      functions/fn_check_ip
  5. 4
      functions/fn_check_root
  6. 4
      functions/fn_check_systemdir
  7. 4
      functions/fn_check_tmux
  8. 4
      functions/fn_compress_unreal2maps
  9. 4
      functions/fn_compress_ut99maps
  10. 4
      functions/fn_console
  11. 4
      functions/fn_debug
  12. 2
      functions/fn_details_distro
  13. 8
      functions/fn_install_ts3
  14. 8
      functions/fn_monitor
  15. 6
      functions/fn_monitor_query
  16. 14
      functions/fn_update_check
  17. 6
      functions/fn_update_dl
  18. 484
      test.sh
  19. 484
      tests/test.sh

173
.travis.yml

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

1
Arma3/arma3server

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

4
functions/fn_backup

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

4
functions/fn_check_ip

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

4
functions/fn_check_root

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

4
functions/fn_check_systemdir

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

4
functions/fn_check_tmux

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

4
functions/fn_compress_unreal2maps

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

4
functions/fn_compress_ut99maps

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

4
functions/fn_console

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

4
functions/fn_debug

@ -2,7 +2,7 @@
# LGSM fn_debug function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
# Version: 160415
# Version: 311015
# Description: Runs the server without tmux. Runs direct from the terminal.
@ -37,7 +37,7 @@ while true; do
read -p "Continue? [y/N]" yn
case $yn in
[Yy]* ) break;;
[Nn]* ) echo Exiting; return 1;;
[Nn]* ) echo Exiting; return;;
* ) echo "Please answer yes or no.";;
esac
done

2
functions/fn_details_distro

@ -29,7 +29,7 @@ glibcv=$(ldd --version |grep ldd|awk '{print $NF}')
# e.g: tmux 1.6
if [ -z "$(command -v tmux)" ]; then
tmuxv="\e[0;31mNOT INSTALLED!\e[0m"
elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd [:digit:])" -lt "16" ]; then
elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then
tmuxv="$(tmux -V) (>= 1.6 required for console log)"
else
tmuxv=$(tmux -V)

8
functions/fn_install_ts3

@ -12,7 +12,7 @@ elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then
ts3arch="x86"
else
fn_printfailure "${arch} is an unsupported architecture"
exit
exit 1
fi
# Grabs all version numbers not in correct order
@ -45,7 +45,7 @@ if [ -z "${availablebuild}" ]; then
sleep 1
fn_printfail "Checking for update: teamspeak.com: Not returning version info"
sleep 2
exit
exit 1
fi
cd "${rootdir}"
@ -63,7 +63,7 @@ else
sleep 1
cat ".${servicename}-tar-error.tmp"
rm ".${servicename}-tar-error.tmp"
exit
exit $?
fi
echo -e "copying to ${filesdir}...\c"
cp -R "${rootdir}/teamspeak3-server_linux-${ts3arch}/"* "${filesdir}" 2> ".${servicename}-cp-error.tmp"
@ -75,7 +75,7 @@ else
sleep 1
cat ".${servicename}-cp-error.tmp"
rm ".${servicename}-cp-error.tmp"
exit
exit $?
fi
rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz
rm -rf "${rootdir}/teamspeak3-server_linux-${ts3arch}"

8
functions/fn_monitor

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

6
functions/fn_monitor_query

@ -56,7 +56,7 @@ if [ -f "${rootdir}/gsquery.py" ]; then
fn_email
fi
fn_restart
exit
exit 1
elif [ "${exitcode}" == "0" ]; then
fn_printok "Querying port: ${ip}:${port} : OK"
fn_scriptlog "Querying port: ${ip}:${port} : OK"
@ -79,7 +79,7 @@ if [ -f "${rootdir}/gsquery.py" ]; then
echo "As user ${owner} or root run the following command."
whoami=$(whoami)
echo -en "\nchown ${whoami}:${whoami} ${rootdir}/gsquery.py\n\n"
exit
exit 1
fi
else
fn_printfail "Querying port: ${ip}:${port} : UNKNOWN ERROR"
@ -87,7 +87,7 @@ if [ -f "${rootdir}/gsquery.py" ]; then
sleep 1
echo -en "\n"
${rootdir}/gsquery.py -a ${ip} -p ${port} -e ${engine}
exit
exit 1
fi
else
fn_printfailnl "Could not find ${rootdir}/gsquery.py"

14
functions/fn_update_check

@ -2,7 +2,11 @@
# LGSM fn_update_check function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
<<<<<<< HEAD
# Version: 281015
=======
# Version: 311015
>>>>>>> refs/remotes/origin/master
# Description: Checks if a server update is available.
@ -40,7 +44,7 @@ if [ "${appmanifestfilewc}" -ge "2" ]; then
for appfile in ${appmanifestfile}; do
echo " ${appfile}"
done
exit
exit 1
else
sleep 1
fn_printok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
@ -56,7 +60,7 @@ elif [ "${appmanifestfilewc}" -eq "0" ]; then
if [ "${forceupdate}" -eq "1" ]; then
fn_printfail "Still no appmanifest_${appid}.acf found: Unable to update"
fn_scriptlog "Warning! Still no appmanifest_${appid}.acf found: Unable to update"
exit
exit 1
fi
forceupdate=1
fn_printwarn "No appmanifest_${appid}.acf found"
@ -128,7 +132,7 @@ if [ -z "${availablebuild}" ]; then
sleep 1
fn_printfailnl "Checking for update: SteamCMD: Not returning version info"
fn_scriptlog "Failure! Checking for update: SteamCMD: Not returning version info"
exit
exit 1
else
fn_printok "Checking for update: SteamCMD"
fn_scriptlog "Success! Checking for update: SteamCMD"
@ -205,7 +209,7 @@ if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
fn_printfailnl "Checking for update: teamspeak.com: Still No logs with server version found"
fn_scriptlog "Failure! Checking for update: teamspeak.com: Still No logs with server version found"
exit
exit 1
fi
fi
currentbuild=$(cat $(find ./* -name 'ts3server*_0.log' 2> /dev/null | sort | egrep -E -v '${rootdir}/.ts3version' | tail -1) | egrep -o 'TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | egrep -o '((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}')
@ -245,7 +249,7 @@ if [ -z "${availablebuild}" ]; then
fn_printfail "Checking for update: teamspeak.com: Not returning version info"
fn_scriptlog "Failure! Checking for update: teamspeak.com: Not returning version info"
sleep 2
exit
exit 1
else
fn_printok "Checking for update: teamspeak.com"
fn_scriptlog "Success! Checking for update: teamspeak.com"

6
functions/fn_update_dl

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

484
test.sh

@ -0,0 +1,484 @@
#!/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"
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

484
tests/test.sh

@ -0,0 +1,484 @@
#!/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
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