X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fqrz.pl;fp=cmd%2Fshow%2Fqrz.pl;h=51a63c41afd3521fbb1e7291dde0a2066589ff01;hb=575a26ea68a641f895f68ed28391962d92bf1912;hp=0000000000000000000000000000000000000000;hpb=96461da2f857d65129b2e6acd19bd075984c31f1;p=spider.git diff --git a/cmd/show/qrz.pl b/cmd/show/qrz.pl new file mode 100644 index 00000000..51a63c41 --- /dev/null +++ b/cmd/show/qrz.pl @@ -0,0 +1,51 @@ +# +# Query the PineKnot Database server for a callsign +# +# from an idea by Steve Franke K9AN and information from Angel EA7WA +# +# $Id$ +# +my ($self, $line) = @_; +my @list = split /\s+/, $line; # generate a list of callsigns +my $l; +my @out; + +return (1, "SHOW/QRZ , e.g. SH/QRZ g1tlh") unless @list; + +use Net::Telnet; + +my $t = new Net::Telnet; + +push @out, $self->msg('call1', "QRZ.com"); +foreach $l (@list) { + $t->open(Host => "qrz.com", + Port => 80, + Timeout => 5); + if ($t) { + $t->print("GET /database?callsign=$l HTTP/1.0\n\n"); + Log('call', "show/qrz $l"); + my $state = "call"; + while (my $result = $t->getline) { +# print "$state: $result"; + if ($state eq 'call' && $result =~ /$l/i) { + $state = 'getaddr'; + push @out, uc $l; + } elsif ($state eq 'getaddr' || $state eq 'inaddr') { + if ($result =~ /^\s+([\w\s.,;:-]+)(?:
)?$/) { + my $line = $1; + unless ($line =~ /^\s+$/) { + push @out, $line; + $state = 'inaddr' unless $state eq 'inaddr'; + } + } else { + $state = 'runout' if $state eq 'inaddr'; + } + } + } + $t->close; + } else { + push @out, $self->msg('e18', 'QRZ.com'); + } +} + +return (1, @out);