#
# ping.pl
#
OerPerl::add_command_handler("ping", "my_commandhandler");
sub my_commandhandler
{
my($command, $target, $nick, $userhost, $args) = @_;
my $tochan = OerPerl::is_valid_channel($target) ? 1 : 0;
my $target_type = $tochan ? OerPerl::CHANNEL : OerPerl::USER;
my($pingoutput, $ms, $loss);
$pingoutput = `ping -c1 -w1 -W1 $args 2>&1`;
if(defined $pingoutput) {
$_ = $pingoutput;
chomp;
if(/unknown\shost/) {
OerPerl::sendto($tochan ? $target : $nick, $target_type,
"unknown host $args");
} else {
if(/time=([0-9]{1,5}\.[0-9]{1,5})\sms/) {
$ms = $1;
} elsif(/time\s([0-9]{1,3})ms/) {
$ms = $1;
}
$loss = $1 if(/([0-9]{1,3})%\spacket\sloss/);
OerPerl::sendto($tochan ? $target : $nick, $target_type,
"ping reply from ${args}: ${ms}ms (${loss}% packet loss)");
}
}
}