added sh/wm7d and sh/db0sdx
authorminima <minima>
Sun, 23 Feb 2003 02:35:00 +0000 (02:35 +0000)
committerminima <minima>
Sun, 23 Feb 2003 02:35:00 +0000 (02:35 +0000)
Changes
cmd/show/db0sdx.pl [new file with mode: 0644]
cmd/show/wm7d.pl [new file with mode: 0644]

diff --git a/Changes b/Changes
index f83c3711502eda101dacdf3ad91d3dafb1147b91..c44c9cc2f9461b5ff55bec00557d0fc1d3d43e4e 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,6 @@
+23Feb03=======================================================================
+1. Added show/wm7d command (a US only callbook server) [by K1XX].
+2. Added a prototype show/db0sdx command (w.i.p).
 22Feb03=======================================================================
 1. changed qrz.com address 
 2. added Charlie's [K1XX] new wpxloc.raw data stuff to get WA1, KC3 type 
diff --git a/cmd/show/db0sdx.pl b/cmd/show/db0sdx.pl
new file mode 100644 (file)
index 0000000..130951e
--- /dev/null
@@ -0,0 +1,82 @@
+#
+# Query the DB0SDX QSL server for a callsign
+#
+# Copyright (c) 2003 Dirk Koopman G1TLH
+#
+# $Id$
+#
+
+my ($self, $line) = @_;
+my $call = $self->call;
+my @out;
+
+$line = uc $line;
+return (1, $self->msg('e24')) unless $Internet::allow;
+return (1, "SHOW/DB0SDX <callsign>, e.g. SH/DB0SDX ea7wa") unless $line && is_callsign($line);
+my $target = 'dotnet.grossmann.com';
+my $port = 80;
+my $cmdprompt = '/query->.*$/';
+
+my($info, $t);
+                                    
+$t = new Net::Telnet;
+$info =  $t->open(Host    => $target,
+                 Port    => $port,
+                 Timeout => 15);
+
+if (!$info) {
+       push @out, $self->msg('e18', 'DB0SDX Database server');
+} else {
+
+       my $s = qq(<?xml version="1.0" encoding="utf-8"?>
+<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+  <soap:Body>
+    <qslinfo xmlns="http://dotnet.grossmann.com/qslinfo">
+      <callsign>$line</callsign>
+    </qslinfo>
+  </soap:Body>
+</soap:Envelope>
+);
+       
+
+       my $lth = length($s)+7;
+       
+       dbg("db0sdx out: $s") if isdbg('db0sdx');
+       
+       $t->print("POST /qslinfo/qslinfo.asmx HTTP/1.1");
+       $t->print("Host: dotnet.grossmann.com");
+       $t->print("Content-Type: text/xml; charset=utf-8");
+       $t->print("Content-Length: $lth");
+       $t->print("Connection: Close");
+       $t->print("SOAPAction: \"http://dotnet.grossmann.com/qslinfo/qslinfo\"");
+       $t->print("");
+       $t->put($s);
+
+       my $in;
+       
+       while (my $result = eval { $t->getline(Timeout => 30) } || $@) {
+               if ($@) {
+                       push @out, $self->msg('e18', 'DB0SDX Server');
+                       last;
+               } else {
+                       $in .= $result;
+               }
+       }
+
+       dbg("db0sdx in: $in") if isdbg('db0sdx');
+       
+       # Log the lookup
+       Log('call', "$call: show/db0sdx $line");
+       $t->close;
+
+       my ($info) = $in =~ m|<qslinfoResult>([^<]*)</qslinfoResult>|;
+       my @in = split /[\r\n]/, $info if $info;
+       if (@in && $in[0]) {
+               push @out, @in;
+       } else {
+               ($info) = $in =~ m|<faultstring>([^<]*)</faultstring>|;
+               push @out, $info if $info;
+               push @out, $self->msg('e3', 'DB0SDX', $line) unless @out;               
+       }
+}
+return (1, @out);
diff --git a/cmd/show/wm7d.pl b/cmd/show/wm7d.pl
new file mode 100644 (file)
index 0000000..72e2d80
--- /dev/null
@@ -0,0 +1,43 @@
+#
+# Query the WM7D Database server for a callsign
+#
+# Largely based on "sh/qrz" and info in the Net::Telnet documentation
+#
+# Copyright (c) 2002 Charlie Carroll K1XX
+#
+# $Id$
+#
+
+# wm7d accepts only single callsign
+my ($self, $line) = @_;
+my $call = $self->call;
+my @out;
+
+# send 'e24' if allow in Internet.pm is not set to 1
+return (1, $self->msg('e24')) unless $Internet::allow;
+return (1, "SHOW/WM7D <callsign>, e.g. SH/WM7D k1xx") unless $line;
+my $target = 'www.wm7d.net';
+my $port = 5000;
+my $cmdprompt = '/query->.*$/';
+
+my($info, $t);
+                                    
+$t = new Net::Telnet;
+$info =  $t->open(Host    => $target,
+                 Port    => $port,
+                 Timeout => 20);
+
+if (!$info) {
+       push @out, $self->msg('e18', 'WM7D.net');
+} else {
+        ## Wait for prompt and respond with callsign.
+        $t->waitfor($cmdprompt);
+       $t->print($line);
+        ($info) = $t->waitfor($cmdprompt);
+    
+       # Log the lookup
+       Log('call', "$call: show/wm7d \U$line");
+       $t->close;
+       push @out, $info;
+}
+return (1, @out);