Merge pull request #285 from klightspeed/1.5-dev#updateifempty

Add support for updating when nobody is connected
This commit is contained in:
Fez Vrasta 2015-11-13 15:24:22 +01:00
commit 0bcf20d222

View File

@ -453,6 +453,24 @@ function isTheServerOnline(){
fi
}
#
# Check if anybody is connected to the server
#
function numPlayersConnected(){
perl -MSocket -e '
my $port = int($ARGV[0]);
socket(my $socket, PF_INET, SOCK_DGRAM, 0);
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 1, 0, 0, 0));
my $sockaddr = pack_sockaddr_in($port, inet_aton($ARGV[1]));
send($socket, "\xff\xff\xff\xffTSource Engine Query\x00", 0, $sockaddr);
my $data = "";
recv($socket, $data, 1400, 0) or (print "0" and exit(1));
my ($servername, $mapname, $game, $fullname, $rest) = split(/\x00/, substr($data, 6), 5);
my $players = ord(substr($rest, 2, 1));
print "$players\n";
' "${ark_QueryPort}" "${ark_MultiHome:-127.0.0.1}"
}
#
# run function
#
@ -757,6 +775,8 @@ doUpdate() {
updatetype=safe
elif [ "$arg" == "--warn" ]; then
updatetype=warn
elif [ "$arg" == "--ifempty" ]; then
updatetype=ifempty
elif [ "$arg" == "--validate" ]; then
validate=validate
appupdate=1
@ -796,6 +816,12 @@ doUpdate() {
if ! doUpdateWarn; then
return 1
fi
elif [ "$updatetype" == "ifempty" ]; then
numplayers=$(( $(numPlayersConnected) + 0 ))
if (( numplayers == 0 )); then
echo "${numplayers} players are still connected"
return 1
fi
fi
fi