#!/usr/pkg/bin/perl
# $Id: check_ban.pl 292 2012-06-06 09:43:37Z bouyer $

use strict;
use IO::Socket::INET;
use Socket qw(SOL_SOCKET SO_KEEPALIVE);
use Getopt::Std;

our($opt_h, $opt_p);
getopts("fP:h:p:") or usage();

if (!defined($opt_h) || !defined($opt_p)) {
	usage();
}

# try to connect to server now
my $sock = IO::Socket::INET->new(
	PeerAddr => $opt_h,
	PeerPort => $opt_p,
	Proto => 'tcp') or die("can't connect to $opt_h:$opt_p: $@");

while (1) {
	printf $sock "PING\n" or die("can't send PING: $!");
	while (my $line = <$sock>) {
		chop $line;
		if ($line eq "PONG") {
			print "OK\n";
			close($sock);
			exit (0);
		} else {
			die("expected PONG, got $line");
		}
	}
}

sub usage {
	print STDERR "usage: $ARGV[0] -h<host> -p<port>\n";
	exit 1;
}
