add user level ping as link check command
[spider.git] / cmd / ping.pl
index d75e1701ece5e5a0a8c626c52747553500227bdb..89f43a0bb86144eb90284d0e1ed087f7dd0b221a 100644 (file)
@@ -3,31 +3,46 @@
 #
 # Copyright (c) 1998 Dirk Koopman G1TLH
 #
-# $Id$
 #
+#
+
+my $counter;
+
+sub init
+{
+       $counter = 0;
+}
+
+sub handle
+{
+       my $self = shift;
+       my $line = uc shift;            # only one callsign allowed 
+       my ($call) = $line =~ /^\s*(\S+)/;
 
-my $self = shift;
-my $line = uc shift;   # only one callsign allowed 
-my ($call) = $line =~ /^\s*(\S+)/;
+#      $DB::single = 1;
 
-# are we permitted?
-return (1, $self->msg('e5')) if $self->priv < 1;
+       if ($self->{priv} < 1) {
+               if ($call) {
+                       return (1, "PONG $call");
+               }
+               ++$counter, return (1, "PONG $counter") 
+       }
 
-# is there a call?
-return (1, $self->msg('e6')) if !$call;
+       # is there a call?
+       return (1, $self->msg('e6')) if !$call;
 
-# is it me?
-return (1, $self->msg('pinge1')) if $call eq $main::mycall;
+       # is it me?
+       return (1, $self->msg('pinge1')) if $call eq $main::mycall;
 
-# can we see it? Is it a node?
-my $noderef = DXCluster->get_exact($call);
-$noderef = DXChannel->get($call) unless $noderef;
+       # can we see it? Is it a node?
+       my $noderef = Route::Node::get($call);
 
-return (1, $self->msg('e7', $call)) unless $noderef;
+       return (1, $self->msg('e7', $call)) unless $noderef;
 
-# ping it
-DXProt::addping($self->call, $call);
+       # ping it
+       DXXml::Ping::add($self, $call);
 
-return (1, $self->msg('pingo', $call));
+       return (1, $self->msg('pingo', $call));
+}