]> dxcluster.net Git - spider.git/commitdiff
loads of changes and added things
authordjk <djk>
Wed, 4 Nov 1998 00:07:46 +0000 (00:07 +0000)
committerdjk <djk>
Wed, 4 Nov 1998 00:07:46 +0000 (00:07 +0000)
made 1.2

29 files changed:
INSTALL
cmd/Aliases [new file with mode: 0644]
cmd/directory.pl
cmd/disconnect.pl
cmd/kill.pl
cmd/read.pl
cmd/reply.pl
cmd/show/bands.pl [new file with mode: 0644]
cmd/talk.pl
data/bands.pl
html/cpan.html [new file with mode: 0644]
html/index.html [new file with mode: 0644]
html/install.html [new file with mode: 0644]
html/perl.html [new file with mode: 0644]
perl/Bands.pm
perl/CmdAlias.pm [new file with mode: 0644]
perl/DXChannel.pm
perl/DXCommandmode.pm
perl/DXLog.pm [new file with mode: 0644]
perl/DXMsg.pm
perl/DXProt.pm
perl/DXProtout.pm
perl/DXUser.pm
perl/Geomag.pm [new file with mode: 0644]
perl/Prefix.pm
perl/Spot.pm
perl/client.pl
perl/cluster.pl
perl/talias.pl [new file with mode: 0755]

diff --git a/INSTALL b/INSTALL
index 96c47d88115061f11a473bde00d9f9b2f499f108..260aad3666046a7a582ef4a36e4de45f2c1c00cb 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -86,10 +86,10 @@ the following modules:-
    
    [ether]                                                                         
    NOCALL   * * * * * *  L                                                         
-   default  * * * * * *  - djk /spider/perl/client.pl client.pl %u ax25
+   default  * * * * * *  - jim /spider/perl/client.pl client.pl %u ax25
    <bbs>
    NOCALL   * * * * * *  L                                                         
-   default  * * * * * *  - djk /spider/perl/client.pl client.pl %u ax25
+   default  * * * * * *  - jim /spider/perl/client.pl client.pl %u ax25
 
    where ether and bbs are appropriate KNOWN WORKING axport and nrport 
    names respectively.
diff --git a/cmd/Aliases b/cmd/Aliases
new file mode 100644 (file)
index 0000000..f83d264
--- /dev/null
@@ -0,0 +1,96 @@
+#!/usr/bin/perl
+#
+# provide some standard aliases for commands for terminally
+# helpless ak1a user (helpless in the sense that they never
+# read nor understand help files)
+#
+# This file is automagically reloaded if its modification time is 
+# later than the one stored in CmdAlias.pm
+#
+# PLEASE make this file consistant with reality! (the patterns MUST
+# match the filenames!)
+#
+# Don't alter this file, copy it into the local_cmd tree and modify it.
+# This file will be replaced everytime I issue a new release.
+#
+# You only need to put aliases in here for commands that don't work as
+# you desire naturally, e.g sh/dx on its own just works as you expect
+# so you need not add it as an alias.
+#
+
+
+package CmdAlias;
+
+%alias = (
+    a => [
+         '^ann.*/full', 'announce full', 'announce', 
+         '^ann.*/sysop', 'announce sysop', 'announce',
+         '^ann.*/(.*)$', 'announce $1', 'announce',
+       ],
+       b => [
+       ],
+       c => [
+       ],
+       d => [
+         '^del', 'kill', 'kill',
+         '^di.*/all', 'directory all', 'directory',
+         '^di.*/b.*', 'directory bulletins', 'directory',
+         '^di.*/n.*', 'directory new', 'directory',
+         '^di.*/o.*', 'directory own', 'directory',
+         '^di.*/s.*', 'directory subject', 'directory',
+         '^di.*/(\d+)-(\d+)', 'directory $1-$2', 'directory',
+         '^di.*/(\d+)', 'directory $1', 'directory',
+       ],
+       e => [
+       ],
+       f => [
+       ],
+       g => [
+       ],
+       h => [
+       ],
+       i => [
+       ],
+       j => [
+       ],
+       k => [
+       ],
+       l => [
+       ],
+       m => [
+       ],
+       n => [
+       ],
+       o => [
+       ],
+       p => [
+       ],
+       q => [
+         '^q', 'bye', 'bye',
+       ],
+       r => [
+       ],
+       s => [
+         '^sh/dx/(\d+)-(\d+)', 'show/dx $1-$2', 'show/dx',
+         '^sh/dx/(\d+)', 'show/dx $1', 'show/dx',
+         '^sh/dx/d(\d+)', 'show/dx from $1', 'show/dx',
+         '^sp$', 'send', 'send',
+         '^sb$', 'send noprivate', 'send',
+       ],
+       t => [
+       ],
+       u => [
+       ],
+       v => [
+       ],
+       w => [
+         '^wx/full', 'wx full', 'wx',
+         '^wx/sysop', 'wx sysop', 'wx',
+       ],
+       x => [
+       ],
+       y => [
+       ],
+       z => [
+       ],
+)
index d1b91ffa4c23c956756ba2853dd0fefb59f2363d..ab81798585a9008158abf54982f199ec1dad8e42 100644 (file)
@@ -8,15 +8,37 @@
 
 my ($self, $line) = @_;
 my @f = split /\s+/, $line;
-my @ref = DXMsg::get_all();
+my @ref;
 my $ref;
 my @out;
 
+$f[0] = uc $f[0];
+if ($f[0] eq 'ALL') {
+  foreach $ref (DXMsg::get_all()) { 
+    next if $self->priv < 5 && $ref->private && $ref->to ne $self->call && $ref->from ne $self->call;
+       push @ref, $ref;
+  }
+} elsif ($f[0] =~ /^O/o) {   # dir/own
+  foreach $ref (DXMsg::get_all()) { 
+    push @ref, $ref if $ref->private && ($ref->to eq $self->call || $ref->from eq $self->call);
+  }
+} elsif ($f[0] =~ /^N/o) {   # dir/new
+  foreach $ref (DXMsg::get_all()) { 
+    push @ref, $ref if $ref->private && !$ref->read && $ref->to eq $self->call;
+  }
+} else {
+  my @all = (DXMsg::get_all());
+  my ($i, $count);
+  for ($i = $#all; $i > 0; $i--) {
+    $ref = $all[$i];
+    next if $self->priv < 5 && $ref->private && $ref->to ne $self->call && $ref->from ne $self->call;
+       unshift @ref, $ref;
+       last if ++$count > 10;
+  }
+}
+
 foreach $ref (@ref) {
-  next if $self->priv < 5 && $ref->private && $ref->to ne $self->call;
-  push @out, sprintf "%6d %s%s%5d %8.8s %8.8s %-6.6s %5.5s %-30.30s", 
-    $ref->msgno, $ref->private ? 'p' : ' ', $ref->read ? '-' : ' ', $ref->size,
-       $ref->to, $ref->from, cldate($ref->t), ztime($ref->t), $ref->subject;
+  push @out, $ref->dir;
 }
 
 return (1, @out);
index 32cb543f43469bfa4692d1e8270681225194c441..51ddc696e4a54bf62abf593ffff9a552a1531f15 100644 (file)
@@ -16,7 +16,7 @@ foreach $call (@calls) {
   my $dxchan = DXChannel->get($call);
   if ($dxchan) {
     if ($dxchan->is_ak1a) {
-      $dxchan->send_now("D", DXProt::pc39($dxchan->call, 'Disconnected'));
+      $dxchan->send_now("D", DXProt::pc39($main::mycall, 'Disconnected'));
     } else {
       $dxchan->disconnect;
        } 
index b410bc14c63c5a016233ed2ffebaf5633ba30f99..d3de0beb3417b22f36e26f6c36830e9825d2c72f 100644 (file)
@@ -21,10 +21,12 @@ for $msgno (@f) {
     push @out, "Msg $msgno not found";
        next;
   }
-  if ($ref->private && $self->priv < 9 && $ref->to ne $ref->call) {
+  if ($self->priv < 5 && 
+      (($ref->private && $ref->to ne $self->call && $ref->from ne $self->call) ||
+      ($ref->private == 0  && $ref->from ne $self->call))) {
     push @out, "Msg $msgno not available";
        next;
-  }
+  } 
   $ref->del_msg;
   push @out, "Message $msgno deleted";
 }
index 9df5edad1e68910760ff155d0f61da12bd0b88d2..a1352724bb486a95997cea6e3bb1ab90a60da767 100644 (file)
@@ -13,13 +13,26 @@ my @out;
 my @body;
 my $ref;
 
+# if there are no specified message numbers, try and find a private one
+# that I haven't read yet
+if (@f == 0) {
+  foreach $ref (DXMsg::get_all()) {
+       if ($ref->to eq $self->call && $ref->private && !$ref->read) {
+         push @f, $ref->msgno;
+         last;
+       }
+  }
+}
+
+return (1, "Sorry, no new messages for you") if @f == 0;
+
 for $msgno (@f) {
   $ref = DXMsg::get($msgno);
   if (!$ref) {
     push @out, "Msg $msgno not found";
        next;
   }
-  if ($ref->private && $self->priv < 9 && $ref->to ne $ref->call) {
+  if ($self->priv < 5 && $ref->private && $ref->to ne $self->call && $ref->from ne $self->call ) {
     push @out, "Msg $msgno not available";
        next;
   }
@@ -33,6 +46,9 @@ for $msgno (@f) {
     $ref->read(1);
     $ref->store(\@body);    # note call by reference!
   }
+  
+  # remember this one as the last one read
+  $self->lastread($msgno);
 }
 
 return (1, @out);
index a05e3cbed2c0731fe954cdcee1794e20989cbfd1..c655b50588464f18b47e5614d06b0860d1d29efe 100644 (file)
@@ -1,7 +1,82 @@
 #
-# reply to a message
+# send a message
 #
+# this should handle
+#
+# send <call> [<call> .. ]
+# send private <call> [<call> .. ]
+# send private rr <call> [<call> .. ]
+# send rr <call> [<call> .. ]
+# send noprivate <call> [<call> .. ]
+# send b <call> [<call> .. ]
+# send copy <call> [<call> .. ]
+# send copy rr <call> [<call> .. ]
+# 
 # Copyright (c) Dirk Koopman G1TLH
 #
 # $Id$
 #
+my ($self, $line) = @_;
+my @out;
+my $loc;
+
+#$DB::single = 1;
+
+if ($self->state eq "prompt") {
+
+  my @f = split /\s+/, $line;
+  
+  # now deal with real message inputs 
+  # parse out send line for various possibilities
+  $loc = $self->{loc} = {};
+  
+  my $i = 0;
+  $f[0] = uc $f[0];
+  $loc->{private} = '1';
+  if ($f[0] eq 'B' || $f[0] =~ /^NOP/oi) {
+    $loc->{private} = '0';
+       $i += 1;
+  } elsif ($f[0] eq 'P' || $f[0] =~ /^PRI/oi) {
+    $i += 1;
+  }
+  
+  $loc->{rrreq} = '0';
+  if (uc $f[$i] eq 'RR') {
+    $loc->{rrreq} = '1';
+       $i++;
+  }
+  
+  my $oref; 
+  
+  # check we have a reply number
+  if ($i  >  @f) {
+    if (!($oref = DXMsg::get($self->lastread))) {
+      delete $self->{loc};
+      #return (0, $self->msg('esend2'));
+      return (0, "need a message number");
+       }
+  } else {
+    $oref = DXMsg::get($f[$i]);
+       if (!$oref) {
+         delete $self->{loc};
+         return (0, "can't access message $i");
+       }
+  }
+  
+  # now save all the 'to' callsigns for later
+  my $to = $oref->from;
+  $loc->{to} = [ $to ];       # to is an array
+  $loc->{subject} = $oref->subject;
+  $loc->{subject} = "Re: " . $loc->{subject} if !($loc->{subject} =~ /^Re/io); 
+
+  # find me and set the state and the function on my state variable to
+  # keep calling me for every line until I relinquish control
+  $self->func("DXMsg::do_send_stuff");
+  $self->state('sendbody');
+  #push @out, $self->msg('sendsubj');
+  push @out, "Reply to: $to";
+  push @out, "Subject : $loc->{subject}";
+  push @out, "Enter Message /EX (^Z) to send or /ABORT (^Y) to exit";
+}
+
+return (1, @out);
diff --git a/cmd/show/bands.pl b/cmd/show/bands.pl
new file mode 100644 (file)
index 0000000..158238f
--- /dev/null
@@ -0,0 +1,31 @@
+#
+# display the band data
+#
+
+#$DB::single = 1;
+
+my ($self, $line) = @_;
+my @f = split /\s+/, $line;
+my @bands;
+my $band;
+my @out;
+
+if (!$line) {
+  @bands = sort { Bands::get($a)->band->[0] <=> Bands::get($b)->band->[0] } Bands::get_keys();
+  push @out, "Bands Available:-";
+  foreach $band (@bands) {
+    my $ref = Bands::get($band)->band;
+    my $from = $ref->[0];
+    my $to = $ref->[1];
+    push @out, sprintf "%10s: %d -> %d", $band, $from, $to;
+  } 
+  push @out, "Regions Available:-";
+  @bands = Bands::get_region_keys();
+  foreach $band (@bands) {
+    my $ref = Bands::get_region($band);
+    my $s = sprintf("%10s: ", $band ) . join(' ', @{$ref}); 
+    push @out, $s;
+  }
+}
+
+return (1, @out);
index 21adc556b8bc1e98c173aae8172b32de6446b4d9..23efabfc5e2b64999ecfe0345fe325ab013ece98 100644 (file)
@@ -19,6 +19,10 @@ if ($argv[1] eq '>') {
   $line =~ s/^$argv[0]\s*//;
 }
 
+my $call = $via ? $via : $to;
+my $ref = DXCluster->get($call);
+return (1, "$call not visible on the cluster") if !$ref;
+
 my $dxchan = DXCommandmode->get($to);         # is it for us?
 if ($dxchan && $dxchan->is_user) {
   $dxchan->send("$to de $from $line");
index 71d1fe9d16d6cb1971e00498d45b3ccfff6d541d..ad7c17f76b27bb9c1bdb8dc91bb3c42535e69a75 100644 (file)
@@ -7,7 +7,7 @@
 # these pairs attach themselves to the labels you provide, they are
 # independant of any other pair, they can overlap, cross etc. 
 #
-# There MUST be at last a 'band' entry
+# There MUST be at least a 'band' entry
 #
 # It is up to YOU to make sure that it makes sense!
 # 
   '15m' => bless( { band => [ 21000, 21450 ], 
                     cw => [ 21000, 21150 ], 
                     data => [ 21100, 21120 ], 
+                   beacon => [ 21149, 21151 ],
                     ssb => [ 21151, 21450] 
                   }, 'Bands'),
 
-  '12m' => bless( { band => [ 21000, 21450 ], 
-                    cw => [ 21000, 21150 ], 
-                    data => [ 21100, 21120 ], 
-                    ssb => [ 21151, 21450] 
+  '12m' => bless( { band => [ 24890, 24990 ], 
+                    cw => [ 24890, 24820 ], 
+                    data => [ 24920, 24929 ], 
+                   beacon => [ 24929, 24931 ],
+                    ssb => [ 24931, 24990] 
                   }, 'Bands'),
 
 
   uhf => [ '70cm', '23cm' ],
   shf => [ '23cm', '13cm', '9cm', '6cm', '3cm' ],
 );  
+
+%aliases = (
+  topband => '160m',
+  160 => '160m',
+  80 => '80m',
+  40 => '40m',
+  30 => '30m',
+  20 => '20m',
+  18 => '18m',
+  15 => '15m',
+  12 => '12m',
+  10 => '10m',
+   6 => '6m',
+   4 => '4m',
+   2 => '2m',
+  70 => '70cm',
+  23 => '23cm',
+  13 => '13cm',
+   3 => '3cm',
+)
diff --git a/html/cpan.html b/html/cpan.html
new file mode 100644 (file)
index 0000000..87379f5
--- /dev/null
@@ -0,0 +1,785 @@
+<html>
+<head>
+<title>CPAN and perl installation</title>
+</head>
+<body>
+<h2>CPAN and perl installation</h2>
+
+<pre>
+[root@rufus djk]# perl -MCPAN -e shell
+
+We have to reconfigure CPAN.pm due to following uninitialized parameters:
+
+cpan_home, keep_source_where, build_dir, build_cache, index_expire, gzip, tar, unzip, make, pager, makepl_arg, make_arg, make_install_arg, urllist, inhibit_startup_message, ftp_proxy, http_proxy, no_proxy
+
+/usr/lib/perl5/CPAN/Config.pm initialized.
+
+The CPAN module needs a directory of its own to cache important
+index files and maybe keep a temporary mirror of CPAN files. This may
+be a site-wide directory or a personal directory.
+
+
+First of all, I'd like to create this directory. Where?
+
+CPAN build and cache directory? [/root/.cpan] 
+
+
+If you want, I can keep the source files after a build in the cpan
+home directory. If you choose so then future builds will take the
+files from there. If you don't want to keep them, answer 0 to the
+next question.
+
+
+
+How big should the disk cache be for keeping the build directories
+with all the intermediate files?
+
+Cache size for build directory (in MB)? [10] 
+
+
+The CPAN module will need a few external programs to work
+properly. Please correct me, if I guess the wrong path for a program.
+Don't panic if you do not have some of them, just press ENTER for
+those.
+
+Where is your gzip program? [/bin/gzip] 
+Where is your tar program? [/bin/tar] 
+Warning: unzip not found in PATH
+Where is your unzip program? [] 
+Where is your make program? [/usr/bin/make] 
+Warning: lynx not found in PATH
+Where is your lynx program? [] 
+Where is your ncftp program? [/usr/bin/ncftp] 
+Where is your ftp program? [/usr/bin/ftp] 
+What is your favorite pager program? [/usr/bin/less] 
+What is your favorite shell? [/bin/bash] 
+
+
+Every Makefile.PL is run by perl in a separate process. Likewise we
+run 'make' and 'make install' in processes. If you have any parameters
+(e.g. PREFIX, INSTALLPRIVLIB, UNINST or the like) you want to pass to
+the calls, please specify them here.
+
+If you don't understand this question, just press ENTER.
+
+Parameters for the 'perl Makefile.PL' command? [] 
+Parameters for the 'make' command? [] 
+Parameters for the 'make install' command? [] 
+
+
+Sometimes you may wish to leave the processes run by CPAN alone
+without caring about them. As sometimes the Makefile.PL contains
+question you're expected to answer, you can set a timer that will
+kill a 'perl Makefile.PL' process after the specified time in seconds.
+
+If you set this value to 0, these processes will wait forever. This is
+the default and recommended setting.
+
+Timeout for inacivity during Makefile.PL? [0] 
+
+We need to know the URL of your favorite CPAN site.
+Please enter it here:  ftp://sunsite.doc.ic.ac.uk/packages/CPAN
+
+Testing "ftp://sunsite.doc.ic.ac.uk/packages/CPAN" ...
+
+  Please, install Net::FTP as soon as possible. CPAN.pm installs it for you
+  if you just type
+      install Bundle::libnet
+
+
+Trying with "/usr/bin/ncftp -c" to get
+    ftp://sunsite.doc.ic.ac.uk/packages/CPAN/MIRRORED.BY
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources
+GOT /root/.cpan/sources/MIRRORED.BY
+
+"ftp://sunsite.doc.ic.ac.uk/packages/CPAN" seems to work
+
+
+WAIT support is available as a Plugin. You need the CPAN::WAIT module
+to actually use it.  But we need to know your favorite WAIT server. If
+you don't know a WAIT server near you, just press ENTER.
+
+Your favorite WAIT server?
+   [wait://ls6.informatik.uni-dortmund.de:1404] 
+
+
+If you're accessing the net via proxies, you can specify them in the
+CPAN configuration or via environment variables. The variable in
+the $CPAN::Config takes precedence.
+
+Your ftp_proxy?  
+Your http_proxy?  
+Your no_proxy?  
+
+
+commit: wrote /usr/lib/perl5/CPAN/Config.pm
+
+cpan shell -- CPAN exploration and modules installation (v1.3102)
+ReadLine support suppressed
+
+cpan> 
+cpan> install Bundle::CPAN
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors
+GOT /root/.cpan/sources/authors/01mailrc.txt.gz
+Going to read /root/.cpan/sources/authors/01mailrc.txt.gz
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/modules
+GOT /root/.cpan/sources/modules/02packages.details.txt.gz
+Going to read /root/.cpan/sources/modules/02packages.details.txt.gz
+
+  There's a new CPAN.pm version (v1.40) available!
+  You might want to try
+    install CPAN
+    reload cpan
+  without quitting the current session. It should be a seamless upgrade
+  while we are running...
+
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/modules
+GOT /root/.cpan/sources/modules/03modlist.data.gz
+Going to read /root/.cpan/sources/modules/03modlist.data.gz
+Running make for NWINT/MD5-1.7.tar.gz
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors/id/NWINT
+GOT /root/.cpan/sources/authors/id/NWINT/MD5-1.7.tar.gz
+MD5-1.7/
+MD5-1.7/Changes
+MD5-1.7/MANIFEST
+MD5-1.7/MD5.pm
+MD5-1.7/MD5.xs
+MD5-1.7/Makefile.PL
+MD5-1.7/README
+MD5-1.7/global.h
+MD5-1.7/md5.h
+MD5-1.7/md5c.c
+MD5-1.7/test.pl
+MD5-1.7/typemap
+MD5-1.7/examples/
+MD5-1.7/examples/mddriver.pl
+MD5-1.7/examples/twdigest.pl
+
+  CPAN.pm: Going to build NWINT/MD5-1.7.tar.gz
+
+Checking if your kit is complete...
+Looks good
+Writing Makefile for MD5
+mkdir ./blib
+mkdir ./blib/lib
+mkdir ./blib/arch
+mkdir ./blib/arch/auto
+mkdir ./blib/arch/auto/MD5
+mkdir ./blib/lib/auto
+mkdir ./blib/lib/auto/MD5
+mkdir ./blib/man3
+cp MD5.pm ./blib/lib/MD5.pm
+AutoSplitting MD5 (./blib/lib/auto/MD5)
+/usr/bin/perl -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 /usr/lib/perl5/ExtUtils/xsubpp  -typemap /usr/lib/perl5/ExtUtils/typemap -typemap typemap MD5.xs >MD5.tc && mv MD5.tc MD5.c
+cc -c  -Dbool=char -DHAS_BOOL -I/usr/local/include -O2    -DVERSION=\"1.7\" -DXS_VERSION=\"1.7\" -fpic -I/usr/lib/perl5/i386-linux/5.00404/CORE -DPERL_BYTEORDER=1234 MD5.c
+cc -c  -Dbool=char -DHAS_BOOL -I/usr/local/include -O2    -DVERSION=\"1.7\" -DXS_VERSION=\"1.7\" -fpic -I/usr/lib/perl5/i386-linux/5.00404/CORE -DPERL_BYTEORDER=1234 md5c.c
+Running Mkbootstrap for MD5 ()
+chmod 644 MD5.bs
+LD_RUN_PATH="" cc -o blib/arch/auto/MD5/MD5.so  -shared -L/usr/local/lib MD5.o md5c.o     
+chmod 755 blib/arch/auto/MD5/MD5.so
+cp MD5.bs ./blib/arch/auto/MD5/MD5.bs
+chmod 644 blib/arch/auto/MD5/MD5.bs
+Manifying ./blib/man3/MD5.3
+  /usr/bin/make  -- OK
+Running make test
+PERL_DL_NONLAZY=1 /usr/bin/perl -I./blib/arch -I./blib/lib -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 test.pl
+1..14
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+ok 7
+ok 8
+ok 9
+ok 10
+ok 11
+ok 12
+ok 13
+ok 14
+  /usr/bin/make test -- OK
+Running make install
+Installing /usr/lib/perl5/site_perl/i386-linux/./auto/MD5/MD5.so
+Installing /usr/lib/perl5/site_perl/i386-linux/./auto/MD5/MD5.bs
+Installing /usr/lib/perl5/site_perl/./auto/MD5/autosplit.ix
+Installing /usr/lib/perl5/site_perl/./MD5.pm
+Installing /usr/lib/perl5/man/man3/./MD5.3
+Writing /usr/lib/perl5/site_perl/i386-linux/auto/MD5/.packlist
+Appending installation info to /usr/lib/perl5/i386-linux/5.00404/perllocal.pod
+  /usr/bin/make install  -- OK
+Running make for GSAR/Data-Dumper-2.09.tar.gz
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors/id/GSAR
+GOT /root/.cpan/sources/authors/id/GSAR/Data-Dumper-2.09.tar.gz
+Data-Dumper-2.09/
+Data-Dumper-2.09/Dumper.html
+Data-Dumper-2.09/t/
+Data-Dumper-2.09/t/overload.t
+Data-Dumper-2.09/t/dumper.t
+Data-Dumper-2.09/MANIFEST.NOXSUB
+Data-Dumper-2.09/Dumper.pm.NOXSUB
+Data-Dumper-2.09/Dumper.xs
+Data-Dumper-2.09/Todo
+Data-Dumper-2.09/MANIFEST
+Data-Dumper-2.09/Makefile.PL
+Data-Dumper-2.09/Dumper.pm
+Data-Dumper-2.09/Changes
+Data-Dumper-2.09/README
+
+  CPAN.pm: Going to build GSAR/Data-Dumper-2.09.tar.gz
+
+Checking if your kit is complete...
+Looks good
+Writing Makefile for Data::Dumper
+mkdir ./blib
+mkdir ./blib/lib
+mkdir ./blib/lib/Data
+mkdir ./blib/arch
+mkdir ./blib/arch/auto
+mkdir ./blib/arch/auto/Data
+mkdir ./blib/arch/auto/Data/Dumper
+mkdir ./blib/lib/auto
+mkdir ./blib/lib/auto/Data
+mkdir ./blib/lib/auto/Data/Dumper
+cp Dumper.pm ./blib/lib/Data/Dumper.pm
+/usr/bin/perl -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 /usr/lib/perl5/ExtUtils/xsubpp  -typemap /usr/lib/perl5/ExtUtils/typemap Dumper.xs >Dumper.tc && mv Dumper.tc Dumper.c
+cc -c  -Dbool=char -DHAS_BOOL -I/usr/local/include -O2    -DVERSION=\"2.09\" -DXS_VERSION=\"2.09\" -fpic -I/usr/lib/perl5/i386-linux/5.00404/CORE  Dumper.c
+Running Mkbootstrap for Data::Dumper ()
+chmod 644 Dumper.bs
+LD_RUN_PATH="" cc -o blib/arch/auto/Data/Dumper/Dumper.so  -shared -L/usr/local/lib Dumper.o     
+chmod 755 blib/arch/auto/Data/Dumper/Dumper.so
+cp Dumper.bs ./blib/arch/auto/Data/Dumper/Dumper.bs
+chmod 644 blib/arch/auto/Data/Dumper/Dumper.bs
+  /usr/bin/make  -- OK
+Running make test
+PERL_DL_NONLAZY=1 /usr/bin/perl -I./blib/arch -I./blib/lib -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
+t/dumper............ok
+t/overload..........ok
+All tests successful.
+Files=2,  Tests=139,  0 secs ( 0.55 cusr  0.05 csys =  0.60 cpu)
+  /usr/bin/make test -- OK
+Running make install
+Installing /usr/lib/perl5/site_perl/i386-linux/./auto/Data/Dumper/Dumper.so
+Installing /usr/lib/perl5/site_perl/i386-linux/./auto/Data/Dumper/Dumper.bs
+Installing /usr/lib/perl5/site_perl/./Data/Dumper.pm
+Writing /usr/lib/perl5/site_perl/i386-linux/auto/Data/Dumper/.packlist
+Appending installation info to /usr/lib/perl5/i386-linux/5.00404/perllocal.pod
+  /usr/bin/make install  -- OK
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors/id/GBARR
+GOT /root/.cpan/sources/authors/id/GBARR/Bundle-libnet-1.00.tar.gz
+Bundle-libnet-1.00/
+Bundle-libnet-1.00/Makefile.PL
+Bundle-libnet-1.00/libnet.pm
+Bundle-libnet-1.00/README
+Bundle-libnet-1.00/MANIFEST
+Data::Dumper is up to date.
+Running make for JROGERS/Net-Telnet-3.01.tar.gz
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors/id/JROGERS
+GOT /root/.cpan/sources/authors/id/JROGERS/Net-Telnet-3.01.tar.gz
+Net-Telnet-3.01/
+Net-Telnet-3.01/Makefile.PL
+Net-Telnet-3.01/ChangeLog
+Net-Telnet-3.01/lib/
+Net-Telnet-3.01/lib/Net/
+Net-Telnet-3.01/lib/Net/Telnet.pm
+Net-Telnet-3.01/t/
+Net-Telnet-3.01/t/select.t
+Net-Telnet-3.01/README
+Net-Telnet-3.01/MANIFEST
+
+  CPAN.pm: Going to build JROGERS/Net-Telnet-3.01.tar.gz
+
+Checking if your kit is complete...
+Looks good
+Writing Makefile for Net::Telnet
+mkdir ./blib
+mkdir ./blib/lib
+mkdir ./blib/lib/Net
+mkdir ./blib/arch
+mkdir ./blib/arch/auto
+mkdir ./blib/arch/auto/Net
+mkdir ./blib/arch/auto/Net/Telnet
+mkdir ./blib/lib/auto
+mkdir ./blib/lib/auto/Net
+mkdir ./blib/lib/auto/Net/Telnet
+mkdir ./blib/man3
+cp lib/Net/Telnet.pm ./blib/lib/Net/Telnet.pm
+Manifying ./blib/man3/Net::Telnet.3
+  /usr/bin/make  -- OK
+Running make test
+PERL_DL_NONLAZY=1 /usr/bin/perl -I./blib/arch -I./blib/lib -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
+t/select............ok
+All tests successful.
+Files=1,  Tests=1,  0 secs ( 0.38 cusr  0.02 csys =  0.40 cpu)
+  /usr/bin/make test -- OK
+Running make install
+Installing /usr/lib/perl5/site_perl/./Net/Telnet.pm
+Installing /usr/lib/perl5/man/man3/./Net::Telnet.3
+Writing /usr/lib/perl5/site_perl/i386-linux/auto/Net/Telnet/.packlist
+Appending installation info to /usr/lib/perl5/i386-linux/5.00404/perllocal.pod
+  /usr/bin/make install  -- OK
+Running make for GBARR/libnet-1.0605.tar.gz
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors/id/GBARR
+GOT /root/.cpan/sources/authors/id/GBARR/libnet-1.0605.tar.gz
+libnet-1.0605/
+libnet-1.0605/Net/
+libnet-1.0605/Net/FTP/
+libnet-1.0605/Net/FTP/dataconn.pm
+libnet-1.0605/Net/FTP/L.pm
+libnet-1.0605/Net/FTP/A.pm
+libnet-1.0605/Net/FTP/E.pm
+libnet-1.0605/Net/FTP/I.pm
+libnet-1.0605/Net/POP3.pm
+libnet-1.0605/Net/SMTP.pm
+libnet-1.0605/Net/FTP.pm
+libnet-1.0605/Net/Cmd.pm
+libnet-1.0605/Net/DummyInetd.pm
+libnet-1.0605/Net/NNTP.pm
+libnet-1.0605/Net/SNPP.pm
+libnet-1.0605/Net/Time.pm
+libnet-1.0605/Net/Domain.pm
+libnet-1.0605/Net/PH.pm
+libnet-1.0605/Net/Netrc.pm
+libnet-1.0605/demos/
+libnet-1.0605/demos/smtp.self
+libnet-1.0605/demos/nntp
+libnet-1.0605/demos/pop3
+libnet-1.0605/demos/time
+libnet-1.0605/demos/snpp
+libnet-1.0605/demos/nntp.mirror
+libnet-1.0605/demos/ftp
+libnet-1.0605/demos/inetd
+libnet-1.0605/Hostname.pm.eg
+libnet-1.0605/t/
+libnet-1.0605/t/nntp.t
+libnet-1.0605/t/ph.t
+libnet-1.0605/t/require.t
+libnet-1.0605/t/hostname.t
+libnet-1.0605/t/smtp.t
+libnet-1.0605/t/ftp.t
+libnet-1.0605/FAQ.pod
+libnet-1.0605/README.config
+libnet-1.0605/MANIFEST
+libnet-1.0605/Configure
+libnet-1.0605/Makefile.PL
+libnet-1.0605/ChangeLog
+libnet-1.0605/README
+
+  CPAN.pm: Going to build GBARR/libnet-1.0605.tar.gz
+
+Checking for Socket...ok
+Checking for IO::Socket...ok
+Checking for Data::Dumper...ok
+Checking if your kit is complete...
+Looks good
+
+This script will prompt you to enter hostnames that can be used as
+defaults for some of the modules in the libnet distribution.
+
+To ensure that you do not enter an invalid hostname, I can perform a
+lookup on each hostname you enter. If your internet connection is via
+a dialup line then you may not want me to perform these lookups, as
+it will require you to be on-line.
+
+Do you want me to perform hostname lookups (y|n) ? [yes] no
+
+*** WARNING *** WARNING *** WARNING *** WARNING *** WARNING ***
+
+OK I will not check if the hostnames you give are valid
+so be very cafeful
+
+*** WARNING *** WARNING *** WARNING *** WARNING *** WARNING ***
+
+The following questions all require a list of host names, separated
+with spaces. If you do not have a host available for any of the
+services, then enter a single space, followed by <CR>. To accept the
+default, hit <CR>
+
+Enter a list of available NNTP hosts : [news]  
+Enter a list of available SMTP hosts : [mailhost]  
+Enter a list of available POP3 hosts : []  
+Enter a list of available SNPP hosts : []  
+Enter a list of available PH Hosts   : [dirserv]  
+Enter a list of available TIME Hosts   : []  
+Enter a list of available DAYTIME Hosts   : []  
+
+Some companies access the internet via a firewall machine, and all
+FTP access must be dove via this machine.
+
+If to gain FTP access to a machine beyond a firewall, you have to use
+a FTP proxy machine and login as username@remote.host then enter
+the name of that gateway here.
+
+FTP proxy hostname : [] 
+
+Normally when FTP needs a data connection the client tells the server
+a port to connect to, and the server initiates a connection to the client.
+
+Some setups, in particular firewall setups, can/do not work using this
+protocol. In these situations the client must make the connection to the
+server, this is called a passive transfer.
+
+Should all FTP connections via a firewall/proxy be passive (y|n) ? [no] 
+
+Should all other FTP connections be passive (y|n) ? [no] 
+
+What is your local internet domain name : [] tubby.org
+
+If you specified some default hosts above, it is possible for me to
+do some basic tests when you run `make test'
+
+This will cause `make test' to be quite a bit slower and, if your
+internet connection is via dialup, will require you to be on-line
+unless the hosts are local.
+
+Do you want me to run these tests (y|n) ? [yes] 
+
+To allow Net::FTP to be tested I will need a hostname. This host
+should allow anonymous access and have a /pub directory
+
+What host can I use : [] localhost
+
+Writing libnet.cfg
+Writing Makefile for Net
+mkdir ./blib
+mkdir ./blib/lib
+mkdir ./blib/arch
+mkdir ./blib/arch/auto
+mkdir ./blib/arch/auto/Net
+mkdir ./blib/lib/auto
+mkdir ./blib/lib/auto/Net
+mkdir ./blib/man3
+cp Net/DummyInetd.pm ./blib/lib/Net/DummyInetd.pm
+cp Net/NNTP.pm ./blib/lib/Net/NNTP.pm
+cp Net/FTP/dataconn.pm ./blib/lib/Net/FTP/dataconn.pm
+cp Net/SNPP.pm ./blib/lib/Net/SNPP.pm
+cp Net/FTP/I.pm ./blib/lib/Net/FTP/I.pm
+cp Net/POP3.pm ./blib/lib/Net/POP3.pm
+cp Net/SMTP.pm ./blib/lib/Net/SMTP.pm
+cp Net/FTP/L.pm ./blib/lib/Net/FTP/L.pm
+cp FAQ.pod ./blib/lib/FAQ.pod
+cp Net/FTP.pm ./blib/lib/Net/FTP.pm
+cp Net/Time.pm ./blib/lib/Net/Time.pm
+cp Net/Cmd.pm ./blib/lib/Net/Cmd.pm
+cp Net/Domain.pm ./blib/lib/Net/Domain.pm
+cp Net/PH.pm ./blib/lib/Net/PH.pm
+cp Net/FTP/A.pm ./blib/lib/Net/FTP/A.pm
+cp libnet.cfg ./blib/arch/Net/Config.pm
+cp Net/Netrc.pm ./blib/lib/Net/Netrc.pm
+cp Net/FTP/E.pm ./blib/lib/Net/FTP/E.pm
+Manifying ./blib/man3/Net::Time.3
+Manifying ./blib/man3/FAQ.3
+/usr/bin/pod2man: FAQ.pod is missing required section: DESCRIPTION
+Manifying ./blib/man3/Net::Domain.3
+Manifying ./blib/man3/Net::PH.3
+Manifying ./blib/man3/Net::NNTP.3
+Manifying ./blib/man3/Net::DummyInetd.3
+Manifying ./blib/man3/Net::SNPP.3
+Manifying ./blib/man3/Net::FTP.3
+Manifying ./blib/man3/Net::POP3.3
+Manifying ./blib/man3/Net::Netrc.3
+Manifying ./blib/man3/Net::SMTP.3
+Manifying ./blib/man3/Net::Cmd.3
+  /usr/bin/make  -- OK
+Running make test
+PERL_DL_NONLAZY=1 /usr/bin/perl -I./blib/arch -I./blib/lib -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
+t/ftp...............ok
+t/hostname..........ok
+t/nntp..............skipping test on this platform
+t/ph................skipping test on this platform
+t/require...........ok
+t/smtp..............skipping test on this platform
+All tests successful.
+Files=6,  Tests=16,  3 secs ( 2.12 cusr  0.23 csys =  2.35 cpu)
+  /usr/bin/make test -- OK
+Running make install
+Installing /usr/lib/perl5/site_perl/i386-linux/./Net/Config.pm
+Installing /usr/lib/perl5/site_perl/./Net/DummyInetd.pm
+Installing /usr/lib/perl5/site_perl/./Net/NNTP.pm
+Installing /usr/lib/perl5/site_perl/./Net/FTP/dataconn.pm
+Installing /usr/lib/perl5/site_perl/./Net/FTP/I.pm
+Installing /usr/lib/perl5/site_perl/./Net/FTP/L.pm
+Installing /usr/lib/perl5/site_perl/./Net/FTP/A.pm
+Installing /usr/lib/perl5/site_perl/./Net/FTP/E.pm
+Installing /usr/lib/perl5/site_perl/./Net/SNPP.pm
+Installing /usr/lib/perl5/site_perl/./Net/POP3.pm
+Installing /usr/lib/perl5/site_perl/./Net/SMTP.pm
+Installing /usr/lib/perl5/site_perl/./Net/FTP.pm
+Installing /usr/lib/perl5/site_perl/./Net/Time.pm
+Installing /usr/lib/perl5/site_perl/./Net/Cmd.pm
+Installing /usr/lib/perl5/site_perl/./Net/Domain.pm
+Installing /usr/lib/perl5/site_perl/./Net/PH.pm
+Installing /usr/lib/perl5/site_perl/./Net/Netrc.pm
+Installing /usr/lib/perl5/site_perl/./FAQ.pod
+Installing /usr/lib/perl5/man/man3/./Net::Time.3
+Installing /usr/lib/perl5/man/man3/./FAQ.3
+Installing /usr/lib/perl5/man/man3/./Net::Domain.3
+Installing /usr/lib/perl5/man/man3/./Net::PH.3
+Installing /usr/lib/perl5/man/man3/./Net::NNTP.3
+Installing /usr/lib/perl5/man/man3/./Net::DummyInetd.3
+Installing /usr/lib/perl5/man/man3/./Net::SNPP.3
+Installing /usr/lib/perl5/man/man3/./Net::FTP.3
+Installing /usr/lib/perl5/man/man3/./Net::POP3.3
+Installing /usr/lib/perl5/man/man3/./Net::Netrc.3
+Installing /usr/lib/perl5/man/man3/./Net::SMTP.3
+Installing /usr/lib/perl5/man/man3/./Net::Cmd.3
+Writing /usr/lib/perl5/site_perl/i386-linux/auto/Net/.packlist
+Appending installation info to /usr/lib/perl5/i386-linux/5.00404/perllocal.pod
+  /usr/bin/make install  -- OK
+Running make for KJALB/TermReadKey-2.12.tar.gz
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors/id/KJALB
+GOT /root/.cpan/sources/authors/id/KJALB/TermReadKey-2.12.tar.gz
+TermReadKey-2.12/
+TermReadKey-2.12/Makefile.PL
+TermReadKey-2.12/ReadKey.pm
+TermReadKey-2.12/test.pl
+TermReadKey-2.12/Configure.pm
+TermReadKey-2.12/genchars.pl
+TermReadKey-2.12/README
+TermReadKey-2.12/ReadKey.xs
+TermReadKey-2.12/MANIFEST
+
+  CPAN.pm: Going to build KJALB/TermReadKey-2.12.tar.gz
+
+Checking if your kit is complete...
+Looks good
+Writing Makefile for Term::ReadKey
+mkdir ./blib
+mkdir ./blib/lib
+mkdir ./blib/lib/Term
+mkdir ./blib/arch
+mkdir ./blib/arch/auto
+mkdir ./blib/arch/auto/Term
+mkdir ./blib/arch/auto/Term/ReadKey
+mkdir ./blib/lib/auto
+mkdir ./blib/lib/auto/Term
+mkdir ./blib/lib/auto/Term/ReadKey
+mkdir ./blib/man3
+cp ReadKey.pm ./blib/lib/Term/ReadKey.pm
+AutoSplitting Term::ReadKey (./blib/lib/auto/Term/ReadKey)
+/usr/bin/perl -I/usr/lib/perl5 genchars.pl
+
+Writing termio/termios section of cchars.h... Done.
+Checking for sgtty...
+        Sgtty NOT found.
+Writing sgtty section of cchars.h... Done.
+/usr/bin/perl -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 /usr/lib/perl5/ExtUtils/xsubpp  -typemap /usr/lib/perl5/ExtUtils/typemap ReadKey.xs >ReadKey.tc && mv ReadKey.tc ReadKey.c
+Please specify prototyping behavior for ReadKey.xs (see perlxs manual)
+cc -c  -Dbool=char -DHAS_BOOL -I/usr/local/include -O2    -DVERSION=\"2.12\" -DXS_VERSION=\"2.12\" -fpic -I/usr/lib/perl5/i386-linux/5.00404/CORE  ReadKey.c
+In file included from /usr/include/sys/select.h:31,
+                 from ReadKey.xs:240:
+/usr/include/selectbits.h:30: warning: `__FD_ZERO' redefined
+/usr/include/asm/posix_types.h:65: warning: this is the location of the previous definition
+/usr/include/selectbits.h:35: warning: `__FD_SET' redefined
+/usr/include/asm/posix_types.h:45: warning: this is the location of the previous definition
+/usr/include/selectbits.h:40: warning: `__FD_CLR' redefined
+/usr/include/asm/posix_types.h:50: warning: this is the location of the previous definition
+/usr/include/selectbits.h:49: warning: `__FD_ISSET' redefined
+/usr/include/asm/posix_types.h:58: warning: this is the location of the previous definition
+In file included from ReadKey.xs:240:
+/usr/include/sys/select.h:60: warning: `FD_SET' redefined
+/usr/include/linux/time.h:59: warning: this is the location of the previous definition
+/usr/include/sys/select.h:61: warning: `FD_CLR' redefined
+/usr/include/linux/time.h:60: warning: this is the location of the previous definition
+/usr/include/sys/select.h:62: warning: `FD_ISSET' redefined
+/usr/include/linux/time.h:61: warning: this is the location of the previous definition
+/usr/include/sys/select.h:63: warning: `FD_ZERO' redefined
+/usr/include/linux/time.h:62: warning: this is the location of the previous definition
+In file included from ReadKey.xs:240:
+/usr/include/sys/select.h:45: syntax error before `fd_mask'
+/usr/include/sys/select.h:45: warning: empty declaration
+/usr/include/sys/select.h:48: conflicting types for `fd_set'
+/usr/include/linux/types.h:9: previous declaration of `fd_set'
+/usr/include/sys/select.h:73: conflicting types for `__select'
+/usr/include/sys/time.h:55: previous declaration of `__select'
+/usr/include/sys/select.h:76: conflicting types for `select'
+/usr/include/sys/time.h:58: previous declaration of `select'
+ReadKey.xs: In function `selectfile':
+ReadKey.xs:1441: `__fd_mask' undeclared (first use this function)
+ReadKey.xs:1441: (Each undeclared identifier is reported only once
+ReadKey.xs:1441: for each function it appears in.)
+make: *** [ReadKey.o] Error 1
+  /usr/bin/make  -- NOT OK
+Running make test
+  Oops, make had returned bad status
+Running make install
+  Oops, make had returned bad status
+Running make for ILYAZ/modules/Term-ReadLine-Perl-0.9904.tar.gz
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors/id/ILYAZ/modules
+GOT /root/.cpan/sources/authors/id/ILYAZ/modules/Term-ReadLine-Perl-0.9904.tar.gz
+Term-ReadLine-Perl-0.9904/
+Term-ReadLine-Perl-0.9904/CHANGES
+Term-ReadLine-Perl-0.9904/Makefile.PL
+Term-ReadLine-Perl-0.9904/MANIFEST
+Term-ReadLine-Perl-0.9904/ReadLine/
+Term-ReadLine-Perl-0.9904/ReadLine/Perl.pm
+Term-ReadLine-Perl-0.9904/ReadLine/readline.pm
+Term-ReadLine-Perl-0.9904/README
+Term-ReadLine-Perl-0.9904/test.pl
+
+  CPAN.pm: Going to build ILYAZ/modules/Term-ReadLine-Perl-0.9904.tar.gz
+
+Checking if your kit is complete...
+Looks good
+Writing Makefile for Term::ReadLine
+mkdir ./blib
+mkdir ./blib/lib
+mkdir ./blib/lib/Term
+mkdir ./blib/arch
+mkdir ./blib/arch/auto
+mkdir ./blib/arch/auto/Term
+mkdir ./blib/arch/auto/Term/ReadLine
+mkdir ./blib/lib/auto
+mkdir ./blib/lib/auto/Term
+mkdir ./blib/lib/auto/Term/ReadLine
+cp ReadLine/Perl.pm ./blib/lib/Term/ReadLine/Perl.pm
+cp ReadLine/readline.pm ./blib/lib/Term/ReadLine/readline.pm
+  /usr/bin/make  -- OK
+Running make test
+PERL_DL_NONLAZY=1 /usr/bin/perl -I./blib/arch -I./blib/lib -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 test.pl
+Features present: preput 1 tkRunning 1 appname 1 getHistory 1 ornaments 1 attribs 1 newTTY 1 autohistory 1 addHistory 1 minline 1 setHistory 1
+Can't ioctl TIOCGETP: Invalid argument
+Consider installing Term::ReadKey from CPAN site nearby
+        at http://www.perl.com/CPAN
+Or use
+        perl -MCPAN -e shell
+to reach CPAN. Falling back to 'stty'.
+        If you do not want to see this warning, set PERL_READLINE_NOWARN
+in your environment.
+Enter arithmetic or Perl expression: exit
+  /usr/bin/make test -- OK
+Running make install
+Installing /usr/lib/perl5/site_perl/./Term/ReadLine/Perl.pm
+Installing /usr/lib/perl5/site_perl/./Term/ReadLine/readline.pm
+Writing /usr/lib/perl5/site_perl/i386-linux/auto/Term/ReadLine/.packlist
+Appending installation info to /usr/lib/perl5/i386-linux/5.00404/perllocal.pod
+  /usr/bin/make install  -- OK
+Running make for ULPFR/CPAN-WAIT-0.24.tar.gz
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors/id/ULPFR
+GOT /root/.cpan/sources/authors/id/ULPFR/CPAN-WAIT-0.24.tar.gz
+CPAN-WAIT-0.24/
+CPAN-WAIT-0.24/ChangeLog
+CPAN-WAIT-0.24/Makefile.PL
+CPAN-WAIT-0.24/lib/
+CPAN-WAIT-0.24/lib/WAIT/
+CPAN-WAIT-0.24/lib/WAIT/Client.pm
+CPAN-WAIT-0.24/lib/CPAN/
+CPAN-WAIT-0.24/lib/CPAN/WAIT.pm
+CPAN-WAIT-0.24/README
+CPAN-WAIT-0.24/t/
+CPAN-WAIT-0.24/t/basic.t
+CPAN-WAIT-0.24/MANIFEST
+
+  CPAN.pm: Going to build ULPFR/CPAN-WAIT-0.24.tar.gz
+
+Checking if your kit is complete...
+Looks good
+Writing Makefile for CPAN::WAIT
+mkdir ./blib
+mkdir ./blib/lib
+mkdir ./blib/lib/CPAN
+mkdir ./blib/arch
+mkdir ./blib/arch/auto
+mkdir ./blib/arch/auto/CPAN
+mkdir ./blib/arch/auto/CPAN/WAIT
+mkdir ./blib/lib/auto
+mkdir ./blib/lib/auto/CPAN
+mkdir ./blib/lib/auto/CPAN/WAIT
+mkdir ./blib/man3
+cp lib/WAIT/Client.pm ./blib/lib/WAIT/Client.pm
+cp lib/CPAN/WAIT.pm ./blib/lib/CPAN/WAIT.pm
+Manifying ./blib/man3/CPAN::WAIT.3
+  /usr/bin/make  -- OK
+Running make test
+PERL_DL_NONLAZY=1 /usr/bin/perl -I./blib/arch -I./blib/lib -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
+t/basic.............ok
+All tests successful.
+Files=1,  Tests=5,  3 secs ( 0.90 cusr  0.08 csys =  0.98 cpu)
+  /usr/bin/make test -- OK
+Running make install
+Installing /usr/lib/perl5/site_perl/./CPAN/WAIT.pm
+Installing /usr/lib/perl5/site_perl/./WAIT/Client.pm
+Installing /usr/lib/perl5/man/man3/./CPAN::WAIT.3
+Writing /usr/lib/perl5/site_perl/i386-linux/auto/CPAN/WAIT/.packlist
+Appending installation info to /usr/lib/perl5/i386-linux/5.00404/perllocal.pod
+  /usr/bin/make install  -- OK
+Running make for ANDK/CPAN-1.40.tar.gz
+Issuing "/usr/bin/ftp -n"
+Local directory now /root/.cpan/sources/authors/id/ANDK
+GOT /root/.cpan/sources/authors/id/ANDK/CPAN-1.40.tar.gz
+CPAN-1.40/
+CPAN-1.40/lib/
+CPAN-1.40/lib/CPAN.pm
+CPAN-1.40/lib/CPAN/
+CPAN-1.40/lib/CPAN/Nox.pm
+CPAN-1.40/lib/CPAN/FirstTime.pm
+CPAN-1.40/lib/Bundle/
+CPAN-1.40/lib/Bundle/CPAN.pm
+CPAN-1.40/Todo
+CPAN-1.40/t/
+CPAN-1.40/t/loadme.t
+CPAN-1.40/MANIFEST
+CPAN-1.40/Makefile.PL
+CPAN-1.40/Changes
+CPAN-1.40/README
+
+  CPAN.pm: Going to build ANDK/CPAN-1.40.tar.gz
+
+Checking if your kit is complete...
+Looks good
+Writing Makefile for CPAN
+mkdir ./blib
+mkdir ./blib/lib
+mkdir ./blib/arch
+mkdir ./blib/arch/auto
+mkdir ./blib/arch/auto/CPAN
+mkdir ./blib/lib/auto
+mkdir ./blib/lib/auto/CPAN
+mkdir ./blib/man3
+cp lib/CPAN/FirstTime.pm ./blib/lib/CPAN/FirstTime.pm
+cp lib/CPAN.pm ./blib/lib/./CPAN.pm
+cp lib/Bundle/CPAN.pm ./blib/lib/Bundle/CPAN.pm
+cp lib/CPAN/Nox.pm ./blib/lib/CPAN/Nox.pm
+Manifying ./blib/man3/CPAN::FirstTime.3
+Manifying ./blib/man3/CPAN.3
+Manifying ./blib/man3/Bundle::CPAN.3
+Manifying ./blib/man3/CPAN::Nox.3
+  /usr/bin/make  -- OK
+Running make test
+PERL_DL_NONLAZY=1 /usr/bin/perl -I./blib/arch -I./blib/lib -I/usr/lib/perl5/i386-linux/5.00404 -I/usr/lib/perl5 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
+t/loadme............ok
+All tests successful.
+Files=1,  Tests=1,  0 secs ( 0.69 cusr  0.06 csys =  0.75 cpu)
+  /usr/bin/make test -- OK
+Running make install
+Installing /usr/lib/perl5/./CPAN/FirstTime.pm
+Installing /usr/lib/perl5/./CPAN/Nox.pm
+Installing /usr/lib/perl5/./CPAN.pm
+Installing /usr/lib/perl5/./Bundle/CPAN.pm
+Installing /usr/lib/perl5/man/man3/./CPAN::FirstTime.3
+Installing /usr/lib/perl5/man/man3/./CPAN.3
+Installing /usr/lib/perl5/man/man3/./Bundle::CPAN.3
+Installing /usr/lib/perl5/man/man3/./CPAN::Nox.3
+Writing /usr/lib/perl5/i386-linux/5.00404/auto/CPAN/.packlist
+Appending installation info to /usr/lib/perl5/i386-linux/5.00404/perllocal.pod
+  /usr/bin/make install  -- OK
+
+cpan> q
+Lockfile removed.
+</pre>
+<hr>
+<h5>Version: $Id$</h5>
+</body>
+</html>
diff --git a/html/index.html b/html/index.html
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/html/install.html b/html/install.html
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/html/perl.html b/html/perl.html
new file mode 100644 (file)
index 0000000..e69de29
index 3f3c99849ddf8e9839f35204fa70c9b5c51d7a76..55ac154c358022155833669327c301c18f77c830 100644 (file)
@@ -14,10 +14,11 @@ use DXVars;
 use Carp;
 
 use strict;
-use vars qw(%bands %regions $bandsfn %valid);
+use vars qw(%bands %regions %aliases $bandsfn %valid);
 
 %bands = ();   # the 'raw' band data
 %regions = ();  # list of regions for shortcuts eg vhf ssb
+%aliases = ();  # list of aliases
 $bandsfn = "$main::data/bands.pl";
 
 %valid = (
@@ -47,6 +48,8 @@ sub load
 sub get
 {
   my $call = shift;
+  my $ncall = $aliases{$call};
+  $call = $ncall if $ncall;
   return $bands{$call};
 }
 
@@ -62,6 +65,25 @@ sub get_keys
   return keys(%bands);
 }
 
+# get all the region keys
+sub get_region_keys
+{
+  return keys(%regions);
+}
+
+# get all the alias keys
+sub get_alias_keys
+{
+  return keys(%aliases);
+}
+
+# get a region 
+sub get_region
+{
+  my $reg = shift;
+  return $regions{$reg};
+}
+
 # get all the frequency pairs associated with the band and sub-band offered
 # the band can be a region, sub-band can be missing
 # 
diff --git a/perl/CmdAlias.pm b/perl/CmdAlias.pm
new file mode 100644 (file)
index 0000000..e5f6686
--- /dev/null
@@ -0,0 +1,128 @@
+#
+# This package simply takes a string, looks it up in a
+# hash and returns the value.
+#
+# The hash is produced by reading the Alias file in both command directories
+# which contain entries for the %cmd hash. This file is in different forms in 
+# the two directories:-
+#
+# in the main cmd directory it has entries like:-
+#
+# package CmdAlias;
+#
+# %alias = (
+#   sp => 'send private',
+#   s/p => 'send private', 
+#   sb => 'send bulletin', 
+# );
+#
+# for the local cmd directory you should do it like this:-
+#
+# package CmdAlias;
+#
+# $alias{'s/p'} = 'send private';
+# $alias{'s/b'} = 'send bulletin';
+#
+# This will allow you to override as well as add to the basic set of commands 
+#
+# This system works in same way as the commands, if the modification times of
+# the two files have changed then they are re-read.
+#
+# Copyright (c) 1998 Dirk Koopman G1TLH
+#
+# $Id$
+#
+
+package CmdAlias;
+
+use DXVars;
+use DXDebug;
+use Carp;
+
+use strict;
+
+use vars qw(%alias $cmd_mtime $localcmd_mtime $fn $localfn);
+
+%alias = ();
+
+$cmd_mtime = 1;
+$localcmd_mtime = 1;
+
+$fn = "$main::cmd/Aliases";
+$localfn = "$main::localcmd/Aliases";
+
+sub checkfiles
+{
+  my $m = -M $fn;
+#  print "m: $m oldmtime: $cmd_mtime\n";
+  if ($m < $cmd_mtime) {
+    do $fn;
+       confess $@ if $@;
+       $cmd_mtime = $m;
+       $localcmd_mtime = 0;
+  } 
+  if (-e $localfn) {
+    $m = -M $localfn;
+       if ($m < $localcmd_mtime) {
+      do $localfn;
+         confess $@ if $@;
+         $localcmd_mtime = $m;
+    } 
+  }
+}
+
+#
+# called as CmdAlias::get_cmd("string");
+#
+sub get_cmd
+{
+  my $s = shift;
+  my ($let) = unpack "A1", $s;
+  my ($i, $n, $ref);
+
+  $let = lc $let;
+  
+  checkfiles();
+  
+  $ref = $alias{$let};
+  return undef if !$ref;
+  
+  $n = @{$ref};
+  for ($i = 0; $i < $n; $i += 3) {
+    if ($s =~ /$ref->[$i]/i) {
+         my $ri = qq{\$ro = "$ref->[$i+1]"};
+         my $ro;
+         eval $ri;
+         return $ro;
+       }
+  }
+  return undef;
+}
+
+#
+# called as CmdAlias::get_hlp("string");
+#
+sub get_hlp
+{
+  my $s = shift;
+  my ($let) = unpack "A1", $s;
+  my ($i, $n, $ref);
+
+  $let = lc $let;
+  
+  checkfiles();
+  
+  $ref = $alias{$let};
+  return undef if !$ref;
+  
+  $n = @{$ref};
+  for ($i = 0; $i < $n; $i += 3) {
+    if ($s =~ /$ref->[$i]/i) {
+         my $ri = qq{$ref->[$i+2]};
+         return $ri;
+       }
+  }
+  return undef;
+}
+
+
index 6ca2fc2c540a82a0ee31a6faa5ed6309f9cc198c..9f0db819a9ee2da8244ac15bf97d1e4a810e5700 100644 (file)
@@ -59,7 +59,8 @@ use vars qw(%channels %valid);
   redirect => '0,Redirect messages to',
   lang => '0,Language',
   func => '9,Function',
-  loc => '9,Local Vars',     # used by func to store local variables in 
+  loc => '9,Local Vars',     # used by func to store local variables in
+  lastread => '9,Last Msg Read',
 );
 
 # create a new channel object [$obj = DXChannel->new($call, $msg_conn_obj, $user_obj)]
index 024ccb0e491ece4cac8962e9cdb0efbfd241f36c..5348212d620ceb7c09626f5c9d7f56ef3d5690a8 100644 (file)
@@ -17,15 +17,18 @@ use DXUser;
 use DXVars;
 use DXDebug;
 use DXM;
+use CmdAlias;
 use FileHandle;
 use Carp;
 
 use strict;
-use vars qw(%Cache %cmd_cache $errstr);
+use vars qw(%Cache %cmd_cache $errstr %aliases);
 
 %Cache = ();                  # cache of dynamically loaded routine's mod times
 %cmd_cache = ();            # cache of short names
 $errstr = ();                # error string from eval
+%aliases = ();              # aliases for (parts of) commands
+
 #
 # obtain a new connection this is derived from dxchannel
 #
@@ -109,6 +112,12 @@ sub normal
     if ($cmd) {
     
          my ($path, $fcmd);
+         
+         # alias it if possible
+         my $acmd = CmdAlias::get_cmd($cmd);
+         if ($acmd) {
+           ($cmd, $args) = "$acmd $args" =~ /^([\w\/]+)\s*(.*)/o;
+         }
    
       # first expand out the entry to a command
          ($path, $fcmd) = search($main::localcmd, $cmd, "pl");
@@ -386,9 +395,8 @@ sub find_cmd_name {
        if (!open $fh, $filename) {
          $errstr = "Syserr: can't open '$filename' $!";
        };
-       my $old = $fh->input_record_separator(undef);
+       local $/ = undef;
        my $sub = <$fh>;
-       $fh->input_record_separator($old);
        close $fh;
                
     #wrap the code into a subroutine inside our unique package
diff --git a/perl/DXLog.pm b/perl/DXLog.pm
new file mode 100644 (file)
index 0000000..6c2eeee
--- /dev/null
@@ -0,0 +1,35 @@
+#
+# the general purpose logging machine
+#
+# This module is designed to allow you to log stuff in specific places
+# and will rotate logs on a monthly, weekly or daily basis. 
+#
+# The idea is that you give it a prefix which is a directory and then 
+# the system will log stuff to a directory structure which looks like:-
+#
+# daily:-
+#   spots/1998/<julian day no>[.<optional suffix>]
+#
+# weekly :-
+#   log/1998/<week no>[.<optional suffix>]
+#
+# monthly
+#   wwv/1998/<month>[.<optional suffix>]
+#
+# Routines are provided to read these files in and to append to them
+# 
+# Copyright (c) - 1998 Dirk Koopman G1TLH
+#
+# $Id$
+#
+
+package DXLog;
+
+use FileHandle;
+use DXVars;
+use DXDebug;
+use DXUtil;
+use Julian;
+use Carp;
+
+use strict;
index e9097d9ca4f8fa159b2ecce5092e08689a8d8a3f..9316c374444ca0eff24087994b181f17c1fb7978 100644 (file)
@@ -167,6 +167,8 @@ sub process
              push @{$ref->{gotit}}, $f[2];           # mark this up as being received
                  $ref->store($ref->{lines});
                  add_dir($ref);
+                 my $dxchan = DXChannel->get($ref->{to});
+                 $dxchan->send("New mail has arrived for you") if $dxchan;
                }
                $ref->stop_msg($self);
                queue_msg();
@@ -633,6 +635,8 @@ sub do_send_stuff
                  $ref->add_dir();
                  #push @out, $self->msg('sendsent', $to);
                  push @out, "msgno $ref->{msgno} sent to $to";
+                 my $dxchan = DXChannel->get(uc $to);
+                 $dxchan->send("New mail has arrived for you") if $dxchan;
            }
          }
          delete $loc->{lines};
@@ -658,6 +662,15 @@ sub do_send_stuff
   return (1, @out);
 }
 
+# return the standard directory line for this ref 
+sub dir
+{
+  my $ref = shift;
+  return sprintf "%6d%s%s%5d %8.8s %8.8s %-6.6s %5.5s %-30.30s", 
+    $ref->msgno, $ref->read ? '-' : ' ', $ref->private ? 'p' : ' ', $ref->size,
+       $ref->to, $ref->from, cldate($ref->t), ztime($ref->t), $ref->subject;
+}
+
 no strict;
 sub AUTOLOAD
 {
index 627356823274c7fe1d5aee98935b3693d7858d3e..8985e8ab4a640a6f8409d213e4cef974a03d5999 100644 (file)
@@ -262,6 +262,7 @@ sub normal
     if ($pcno == 22) {last SWITCH;}
 
     if ($pcno == 23 || $pcno == 27) {  # WWV info
+         Geomag::update(@field[1..$#field]);
       last SWITCH;
        }
 
@@ -301,6 +302,7 @@ sub normal
        
     if ($pcno == 41) {              # user info
       # add this station to the user database, if required
+         $field[1] =~ s/-\d+$//o;
          my $user = DXUser->get_current($field[1]);
          $user = DXUser->new($field[1]) if !$user;
          
index ad431481bcfd356f0ea2dcb6599d01dda3864329..af833183846634a5dc528527eaa9e897b8b238fc 100644 (file)
@@ -216,9 +216,9 @@ sub pc38
 sub pc39
 {
   my ($call, $reason) = @_;
-  my $hops = get_hops(21);
+  my $hops = get_hops(39);
   $reason = "Gone." if !$reason;
-  return "PC39^$call^$reason^";
+  return "PC39^$call^$reason^$hops^";
 }
 
 # cue up bulletin or file for transfer
index 9d636561115edcd7d61f69eec3898b0689c96cd9..bc55775fc6f3e277bcfcf40e140081bbdbc6bea5 100644 (file)
@@ -45,6 +45,7 @@ $filename = undef;
   annok => '9,Announces?,yesno',            # accept his announces?
   reg => '0,Registered?,yesno',            # is this user registered?
   lang => '0,Language',
+  hmsgno => '0,Highest Msgno',
 );
 
 no strict;
@@ -71,8 +72,8 @@ sub init
 {
   my ($pkg, $fn) = @_;
   
-  die "need a filename in User" if !$fn;
-  $dbm = tie (%u, MLDBM, $fn, O_CREAT|O_RDWR, 0666) or die "can't open user file: $fn ($!)";
+  confess "need a filename in User" if !$fn;
+  $dbm = tie (%u, MLDBM, $fn, O_CREAT|O_RDWR, 0666) or confess "can't open user file: $fn ($!)";
   $filename = $fn;
 }
 
@@ -94,8 +95,11 @@ sub finish
 
 sub new
 {
-  my ($pkg, $call) = @_;
-  die "can't create existing call $call in User\n!" if $u{$call};
+  my $pkg = shift;
+  my $call = uc shift;
+  $call =~ s/-\d+//o;
+  
+  confess "can't create existing call $call in User\n!" if $u{$call};
 
   my $self = {};
   $self->{call} = $call;
@@ -115,7 +119,7 @@ sub get
 {
   my $pkg = shift;
   my $call = uc shift;
-  $call =~ s/-\d+//o;       # strip ssid
+  $call =~ s/-\d+$//o;       # strip ssid
   return $u{$call};
 }
 
@@ -140,7 +144,7 @@ sub get_current
 {
   my $pkg = shift;
   my $call = uc shift;
-  $call =~ s/-\d+//o;       # strip ssid
+  $call =~ s/-\d+$//o;       # strip ssid
   
   my $dxchan = DXChannel->get($call);
   return $dxchan->user if $dxchan;
diff --git a/perl/Geomag.pm b/perl/Geomag.pm
new file mode 100644 (file)
index 0000000..1f77f56
--- /dev/null
@@ -0,0 +1,124 @@
+#!/usr/bin/perl
+# 
+# The geomagnetic information and calculation module
+#
+# Copyright (c) 1998 - Dirk Koopman G1TLH
+#
+# $Id$
+#
+
+package Geomag;
+
+use DXVars;
+use DXUtil;
+use FileHandle;
+use Carp;
+
+use strict;
+use vars qw($date $sfi $k $a $forecast @allowed @denied);
+
+$date = 0;          # the unix time of the WWV (notional)
+$sfi = 0;           # the current SFI value
+$k = 0;             # the current K value
+$a = 0;             # the current A value
+$forecast = "";     # the current geomagnetic forecast
+@allowed = ();      # if present only these callsigns are regarded as valid WWV updators
+@denied = ();       # if present ignore any wwv from these callsigns
+my $dirprefix = "$main::data/wwv";
+my $param = "$dirprefix/param";
+
+sub init
+{
+  mkdir $dirprefix, 0777 if !-e $dirprefix;
+  do "$param" if -e "$param";
+  confess $@ if $@;
+}
+
+# write the current data away
+sub store
+{
+  my $fh = new FileHandle;
+  open $fh, "> $param" or confess "can't open $param $!";
+  print $fh "# Geomagnetic data parameter file last mod:", scalar gmtime, "\n";
+  print $fh "\$date = $date;\n";
+  print $fh "\$sfi = $sfi;\n";
+  print $fh "\$a = $a;\n";
+  print $fh "\$k = $k;\n";
+  print $fh "\$forecast = '$forecast';\n";
+  print $fh "\@denied = qw(", join(' ', @denied), ");\n" if @denied > 0;
+  print $fh "\@allowed = qw(", join(' ', @allowed), ");\n" if @allowed > 0;
+  close $fh;
+}
+
+# update WWV info in one go (usually from a PC23)
+sub update
+{
+  my ($mydate, $mytime, $mysfi, $mya, $myk, $myforecast, $from, $node) = @_;
+  if ((@allowed && grep {$_ eq $from} @allowed) || 
+      (@denied && !grep {$_ eq $from} @denied) ||
+         (@allowed == 0 && @denied == 0)) {
+         
+       my $trydate = cltounix($mydate, sprintf("%02d18Z", $mytime));
+       if ($trydate >= $date) {
+      $sfi = 0 + $mysfi;
+      $k = 0 + $myk;
+      $a = 0 + $mya;
+      $forecast = $myforecast;
+         store();
+       }
+  }
+}
+
+# add or substract an allowed callsign
+sub allowed
+{
+  my $flag = shift;
+  if ($flag eq '+') {
+    push @allowed, map {uc $_} @_;
+  } else {
+    my $c;
+    foreach $c (@_) {
+         @allowed = map {$_ ne uc $c} @allowed; 
+       } 
+  }
+  store();
+}
+
+# add or substract a denied callsign
+sub denied
+{
+  my $flag = shift;
+  if ($flag eq '+') {
+    push @denied, map {uc $_} @_;
+  } else {
+    my $c;
+    foreach $c (@_) {
+         @denied = map {$_ ne uc $c} @denied; 
+       } 
+  }
+  store();
+}
+
+# accessor routines (when I work how symbolic refs work I might use one of those!)
+sub sfi
+{
+  @_ ? $sfi = shift : $sfi ;
+}
+
+sub k
+{
+  @_ ? $k = shift : $k ;
+}
+
+sub a
+{
+  @_ ? $a = shift : $a ;
+}
+
+sub forecast
+{
+  @_ ? $forecast = shift : $forecast ;
+}
+
+1;
+__END__;
index dbaa1c8422307656bebb2a85bd56eb7da506ab5c..441cd80ad8c21406ff5cd2d8fe1eddd6459b0815 100644 (file)
@@ -146,9 +146,9 @@ sub extract
   # remove any /0-9 /P /A /M /MM /AM suffixes etc
   if (@parts > 1) {
     $p = $parts[$#parts];
-       pop @parts if $p =~ /^(\d+|[PABM]|AM|MM|BCN|SIX)$/o;
+       pop @parts if $p =~ /^(\d+|[PABM]|AM|MM|BCN|SIX|Q\w+)$/o;
     $p = $parts[$#parts];
-       pop @parts if $p =~ /^(\d+|[PABM]|AM|MM|BCN|SIX)$/o;
+       pop @parts if $p =~ /^(\d+|[PABM]|AM|MM|BCN|SIX|Q\w+)$/o;
   
     # can we resolve them by direct lookup
        foreach $p (@parts) {
index d5b5adf93994ef4aa6f5fba77689268feff524c3..00b03d845e0cd35ff933f4a595c27dc7c89a4bc7 100644 (file)
@@ -27,6 +27,11 @@ $defaultspots = 10;    # normal number of spots to return
 $maxdays = 35;        # normal maximum no of days to go back
 $dirprefix = "$main::data/spots";
 
+sub init
+{
+  mkdir "$dirprefix", 0777 if !-e "$dirprefix";
+}
+
 sub prefix
 {
   return $dirprefix;
index 834aaf37ce2e33a019987e1ad2b4fe0d8fc1c653..b8129cbb384cd0d7c8d8ea7872460586b9e3f627 100755 (executable)
@@ -59,6 +59,8 @@ sub cease
   if (defined $conn && $sendz) {
     $conn->send_now("Z$call|bye...\n");
   }
+  STDOUT->flush;
+  sleep(2);
   exit(0);     
 }
 
@@ -201,6 +203,20 @@ $SIG{'HUP'} = \&sig_term;
 $SIG{'CHLD'} = \&sig_chld;
 
 $conn = Msg->connect("$clusteraddr", $clusterport, \&rec_socket);
+if (! $conn) {
+  if (-r "$data/offline") {
+    open IN, "$data/offline" or die;
+    while (<IN>) {
+         s/\n/\r/og if $mode == 1;
+         print;
+       }
+       close IN;
+  } else {
+    print "Sorry, the cluster $mycall is currently off-line", $mynl;
+  }
+  cease(0);
+}
+
 $conn->send_now("A$call|$connsort");
 Msg->set_event_handler(\*STDIN, "read" => \&rec_stdin);
 
index 5b3f64668cf2f10cd6a0c8238f6f78e7dc34a5f7..7db7ae3c9a9ddfe57e67903bdb3f58f2ec61acdc 100755 (executable)
@@ -35,13 +35,14 @@ use DXCron;
 use DXConnect;
 use Prefix;
 use Bands;
+use Geomag;
 use Carp;
 
 package main;
 
 @inqueue = ();                # the main input queue, an array of hashes
 $systime = 0;                 # the time now (in seconds)
-$version = 1.1;               # the version no of the software
+$version = 1.2;               # the version no of the software
 
 # handle disconnections
 sub disconnect
@@ -195,6 +196,12 @@ $SIG{'HUP'} = 'IGNORE';
 # initialise the protocol engine
 DXProt->init();
 
+# initialise the Geomagnetic data engine
+Geomag->init();
+
+# initial the Spot stuff
+Spot->init();
+
 # put in a DXCluster node for us here so we can add users and take them away
 DXNode->new(0, $mycall, 0, 1, $DXProt::myprot_version); 
 
diff --git a/perl/talias.pl b/perl/talias.pl
new file mode 100755 (executable)
index 0000000..049c024
--- /dev/null
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+#
+# alias testing tool
+#
+
+# search local then perl directories
+BEGIN {
+  # root of directory tree for this system
+  $root = "/spider"; 
+  $root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'};
+
+  unshift @INC, "$root/perl";   # this IS the right way round!
+  unshift @INC, "$root/local";
+}
+
+use DXVars;
+use CmdAlias;
+
+use Carp;
+
+while (<>) {
+  chomp;
+  last if /^q$/;
+  
+  $o1 = CmdAlias::get_cmd($_);
+  $o2 = CmdAlias::get_hlp($_);
+  print "in: $_ cmd: $o1 hlp: $o2\n";
+}