Browse Source
Conflicts: functions/fn_details_distro functions/fn_getopt functions/fn_install_ts3 functions/fn_monitor_query functions/fn_update_checkpull/520/head
19 changed files with 1027 additions and 195 deletions
@ -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 |
@ -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 |
@ -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…
Reference in new issue