mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-26 16:28:28 +00:00
Add support for MultiHome setting
This commit is contained in:
parent
61bcceaf95
commit
1b814b99d6
@ -241,17 +241,18 @@ rconcmd() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my $port = $ARGV[0];
|
my $port = $ARGV[0];
|
||||||
my $password = $ARGV[1];
|
my $ipaddr = $ARGV[1];
|
||||||
my $command = $ARGV[2];
|
my $password = $ARGV[2];
|
||||||
|
my $command = $ARGV[3];
|
||||||
socket(my $socket, PF_INET, SOCK_STREAM, 0);
|
socket(my $socket, PF_INET, SOCK_STREAM, 0);
|
||||||
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 30, 0, 0, 0));
|
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 30, 0, 0, 0));
|
||||||
my $sockaddr = pack_sockaddr_in($port, inet_aton("127.0.0.1"));
|
my $sockaddr = pack_sockaddr_in($port, inet_aton($ipaddr));
|
||||||
connect($socket, $sockaddr) or die "Error connecting to server";
|
connect($socket, $sockaddr) or die "Error connecting to server";
|
||||||
auth($socket, $password);
|
auth($socket, $password);
|
||||||
sendpkt($socket, 2, 2, $command);
|
sendpkt($socket, 2, 2, $command);
|
||||||
my ($resid, $restype, $rcvbody) = recvpkt($socket);
|
my ($resid, $restype, $rcvbody) = recvpkt($socket);
|
||||||
print $rcvbody, "\n";
|
print $rcvbody, "\n";
|
||||||
' "${ark_RCONPort}" "`getAdminPassword`" "$1"
|
' "${ark_RCONPort}" "${ark_MultiHome:-127.0.0.1}" "`getAdminPassword`" "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -393,14 +394,14 @@ function isTheServerRunning(){
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
function isTheServerUp(){
|
function isTheServerUp(){
|
||||||
$lsof -i :"$ark_Port" > /dev/null
|
$lsof -i "udp@${ark_MultiHome}:${ark_Port}" > /dev/null
|
||||||
result=$?
|
result=$?
|
||||||
if [ $result -ne 0 ]; then
|
if [ $result -ne 0 ]; then
|
||||||
perl -MSocket -MFcntl -e '
|
perl -MSocket -MFcntl -e '
|
||||||
my $port = int($ARGV[0]);
|
my $port = int($ARGV[0]);
|
||||||
socket(my $socket, PF_INET, SOCK_DGRAM, 0);
|
socket(my $socket, PF_INET, SOCK_DGRAM, 0);
|
||||||
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 1, 0, 0, 0));
|
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 1, 0, 0, 0));
|
||||||
my $sockaddr = pack_sockaddr_in($port, inet_aton("127.0.0.1"));
|
my $sockaddr = pack_sockaddr_in($port, inet_aton($ARGV[1]));
|
||||||
send($socket, "\xff\xff\xff\xffTSource Engine Query\x00", 0, $sockaddr);
|
send($socket, "\xff\xff\xff\xffTSource Engine Query\x00", 0, $sockaddr);
|
||||||
my $flags = fcntl($socket, F_GETFL, 0) or exit(1);
|
my $flags = fcntl($socket, F_GETFL, 0) or exit(1);
|
||||||
fcntl($socket, F_SETFL, $flags | O_NONBLOCK) or exit(1);
|
fcntl($socket, F_SETFL, $flags | O_NONBLOCK) or exit(1);
|
||||||
@ -416,7 +417,7 @@ function isTheServerUp(){
|
|||||||
} else {
|
} else {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
' "${ark_QueryPort}"
|
' "${ark_QueryPort}" "${ark_MultiHome:-127.0.0.1}"
|
||||||
result=$?
|
result=$?
|
||||||
fi
|
fi
|
||||||
# In this case, the result is:
|
# In this case, the result is:
|
||||||
@ -433,7 +434,11 @@ function isTheServerUp(){
|
|||||||
# Check if the server is visible in the steam server list
|
# Check if the server is visible in the steam server list
|
||||||
#
|
#
|
||||||
function isTheServerOnline(){
|
function isTheServerOnline(){
|
||||||
publicip="$(curl -s https://api.ipify.org/)"
|
if [ -n "$ark_MultiHome" ]; then
|
||||||
|
publicip="$(curl --interface "${ark_MultiHome}" -s https://api.ipify.org/)"
|
||||||
|
else
|
||||||
|
publicip="$(curl -s https://api.ipify.org/)"
|
||||||
|
fi
|
||||||
local serverresp
|
local serverresp
|
||||||
|
|
||||||
if [[ "$publicip" =~ [1-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* ]]; then
|
if [[ "$publicip" =~ [1-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* ]]; then
|
||||||
@ -1172,7 +1177,7 @@ printStatus(){
|
|||||||
my $port = int($ARGV[0]);
|
my $port = int($ARGV[0]);
|
||||||
socket(my $socket, PF_INET, SOCK_DGRAM, 0);
|
socket(my $socket, PF_INET, SOCK_DGRAM, 0);
|
||||||
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 1, 0, 0, 0));
|
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 1, 0, 0, 0));
|
||||||
my $sockaddr = pack_sockaddr_in($port, inet_aton("127.0.0.1"));
|
my $sockaddr = pack_sockaddr_in($port, inet_aton($ARGV[1]));
|
||||||
send($socket, "\xff\xff\xff\xffTSource Engine Query\x00", 0, $sockaddr);
|
send($socket, "\xff\xff\xff\xffTSource Engine Query\x00", 0, $sockaddr);
|
||||||
my $data = "";
|
my $data = "";
|
||||||
recv($socket, $data, 1400, 0) or (print "Unable to query server\n" and exit(1));
|
recv($socket, $data, 1400, 0) or (print "Unable to query server\n" and exit(1));
|
||||||
@ -1181,7 +1186,7 @@ printStatus(){
|
|||||||
my $maxplayers = ord(substr($rest, 3, 1));
|
my $maxplayers = ord(substr($rest, 3, 1));
|
||||||
print "Server Name: $servername\n";
|
print "Server Name: $servername\n";
|
||||||
print "Players: $players / $maxplayers\n";
|
print "Players: $players / $maxplayers\n";
|
||||||
' "${ark_QueryPort}"
|
' "${ark_QueryPort}" "${ark_MultiHome:-127.0.0.1}"
|
||||||
|
|
||||||
if isTheServerOnline; then
|
if isTheServerOnline; then
|
||||||
echo -e "$NORMAL" "Server online: " "$GREEN" "Yes" "$NORMAL"
|
echo -e "$NORMAL" "Server online: " "$GREEN" "Yes" "$NORMAL"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user