From 9cdd7e393906d084e89f4c2603102d44ca55959a Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 8 Oct 2015 08:34:32 +1000 Subject: [PATCH] Query Steam API for server status --- tools/arkmanager | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 895e8f3..4523808 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -387,7 +387,7 @@ function isTheServerRunning(){ } # -# Check if the server is up and visible in steam server list +# Check if the server is up # # function isTheServerUp(){ @@ -403,6 +403,26 @@ function isTheServerUp(){ fi } +# +# Check if the server is visible in the steam server list +# +function isTheServerOnline(){ + publicip="$(curl -s https://api.ipify.org/)" + local serverresp + + if [[ "$publicip" =~ [1-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* ]]; then + serverresp="$(curl -s "http://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${publicip}:${ark_QueryPort}")" + fi + + # If the Steam server response contains "addr": "$ip:$port", + # then the server has registered with the Steam master server + if [[ "$serverresp" =~ \"addr\":\ \"([^\"]*):([0-9]*)\" ]]; then + return 0 + else + return 1 + fi +} + # # run function # @@ -1115,9 +1135,9 @@ printStatus(){ fi if isTheServerUp ;then - echo -e "$NORMAL" "Server online: " "$RED" "No" "$NORMAL" + echo -e "$NORMAL" "Server listening: " "$RED" "No" "$NORMAL" else - echo -e "$NORMAL" "Server online: " "$GREEN" "Yes" "$NORMAL" + echo -e "$NORMAL" "Server listening: " "$GREEN" "Yes" "$NORMAL" perl -MSocket -e ' my $port = int($ARGV[0]); socket(my $socket, PF_INET, SOCK_DGRAM, 0); @@ -1132,7 +1152,15 @@ printStatus(){ print "Server Name: $servername\n"; print "Players: $players / $maxplayers\n"; ' "${ark_QueryPort}" + + if isTheServerOnline; then + echo -e "$NORMAL" "Server online: " "$GREEN" "Yes" "$NORMAL" + echo -e "$NORMAL" "ARKServers link: " "$GREEN" "http://arkservers.net/server/${publicip}:${ark_QueryPort}" "$NORMAL" + else + echo -e "$NORMAL" "Server online: " "$RED" "No" "$NORMAL" + fi fi + getCurrentVersion echo -e "$NORMAL" "Server version: " "$GREEN" $instver "$NORMAL" }