From eeb42bcecdfc68bcc34d3f4bfba1abe259165009 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 26 Dec 2015 17:03:46 +1000 Subject: [PATCH] Warn when ServerAdminPassword is empty --- tools/arkmanager | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index d58e109..d9cfcaa 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -253,6 +253,14 @@ getQueryPort(){ # Execute RCON command # rconcmd() { + local adminpass="$(getAdminPassword)" + if [ -z "$adminpass" ]; then + echo "ServerAdminPassword is empty - unable to execute RCON command" + return 1 + elif [[ "$adminpass" =~ [?\177-\377] ]]; then + echo "ServerAdminPassword contains invalid characters" + return 1 + fi perl -MSocket -e ' sub sendpkt { my ($sock, $reqid, $reqtype, $body) = @_; @@ -263,7 +271,8 @@ rconcmd() { sub recvpkt { my ($sock) = @_; my $data = ""; - recv($sock, $data, 12, 0); + recv($sock, $data, 12, 0) or die "Error receiving response from server" + die "Empty response" if len($data) == 0; my ($pktlen, $resid, $restype) = unpack("VVV", $data); recv($sock, $data, $pktlen - 8, 0); return ($resid, $restype, substr($data, 0, $pktlen - 10)); @@ -289,7 +298,7 @@ rconcmd() { sendpkt($socket, 2, 2, $command); my ($resid, $restype, $rcvbody) = recvpkt($socket); print $rcvbody, "\n"; - ' "$(getRconPort)" "${ark_MultiHome:-127.0.0.1}" "$(getAdminPassword)" "$1" + ' "$(getRconPort)" "${ark_MultiHome:-127.0.0.1}" "$adminpass" "$1" } #