my $self = shift;
my @out;
return (0, $self->msg('e5')) if $self->priv < 9;
-do "$main::data/badmsg.pl" if -e "$main::data/badmsg.pl";
-push @out, $@ if $@;
+push @out, (DXMsg::load_badmsg());
@out = ($self->msg('ok')) unless @out;
return (1, @out);
--- /dev/null
+# reload the message forward file
+my $self = shift;
+my @out;
+return (0, $self->msg('e5')) if $self->priv < 9;
+push @out, (DXMsg::load_forward());
+@out = ($self->msg('ok')) unless @out;
+return (1, @out);
$to = 10 if !$to;
-push @out, "Date Hour SFI K A Forecast Logger";
+push @out, "Date Hour SFI A K Forecast Logger";
my @in = Geomag::search($from, $to, $main::systime);
for (@in) {
push @out, Geomag::print_item($_);
+++ /dev/null
-#
-# the list of TO addresses for messages that we won't store having
-# received them (bear in mind that we must receive them fully before
-# we can bin them)
-#
-
-package DXMsg;
-
-@badmsg = qw
-(
- SALE
- FORSALE
- WANTED
-);
--- /dev/null
+#
+# the list of TO addresses for messages that we won't store having
+# received them (bear in mind that we must receive them fully before
+# we can bin them)
+#
+
+package DXMsg;
+
+@badmsg = qw
+(
+ SALE
+ FORSALE
+ WANTED
+);
use strict;
use vars qw(%work @msg $msgdir %valid %busy $maxage $last_clean
- @badmsg $badmsgfn);
+ @badmsg $badmsgfn $forwardfn @forward);
%work = (); # outstanding jobs
@msg = (); # messages we have
$msgdir = "$main::root/msg"; # directory contain the msgs
$maxage = 30 * 86400; # the maximum age that a message shall live for if not marked
$last_clean = 0; # last time we did a clean
+@forward = (); # msg forward table
-$badmsgfn = "$main::data/badmsg.pl"; # list of TO address we wont store
+$badmsgfn = "$msgdir/badmsg.pl"; # list of TO address we wont store
+$forwardfn = "$msgdir/forward.pl"; # the forwarding table
%valid = (
fromnode => '9,From Node',
sub process
{
my ($self, $line) = @_;
- my @f = split /[\^\~]/, $line;
+ my @f = split /\^/, $line;
my ($pcno) = $f[0] =~ /^PC(\d\d)/; # just get the number
SWITCH: {
my @dir;
my $ref;
- do "$badmsgfn" if -e "$badmsgfn";
- print "$@\n" if $@;
+ # load various control files
+ my @in = load_badmsg();
+ print "@in\n" if @in;
+ @in = load_forward();
+ print "@in\n" if @in;
# read in the directory
opendir($dir, $msgdir) or confess "can't open $msgdir $!";
@msg = ();
for (sort @dir) {
- next unless /^m\d+/o;
+ next unless /^m\d+$/o;
$ref = read_msg_header("$msgdir/$_");
next unless $ref;
$ref->to, $ref->from, cldate($ref->t), ztime($ref->t), $ref->subject;
}
+# load the forward table
+sub load_forward
+{
+ my @out;
+ do "$forwardfn" if -e "$forwardfn";
+ push @out, $@ if $@;
+ return @out;
+}
+
+# load the bad message table
+sub load_badmsg
+{
+ my @out;
+ do "$badmsgfn" if -e "$badmsgfn";
+ push @out, $@ if $@;
+ return @out;
+}
+
no strict;
sub AUTOLOAD
{
return if $pcno == 27;
# broadcast to the eager users
- broadcast_users("WWV de $field[7] <$field[2]>: SFI=$sfi, K=$k, A=$i, $field[6]", 'wwv', $wwv );
+ broadcast_users("WWV de $field[7] <$field[2]>: SFI=$sfi, A=$k, K=$i, $field[6]", 'wwv', $wwv );
last SWITCH;
}
{
my ($fromnode, $tonode, $stream, $text) = @_;
$text =~ s/\^/:/og; # remove ^
- $text =~ s/\~/S/og;
+# $text =~ s/\~/S/og;
return "PC29^$fromnode^$tonode^$stream^$text^~";
}
# send all the DX clusters I reckon are connected
sub pc38
{
- my @list = DXNode->get_all();
- my $list;
- my @nodes;
-
- foreach $list (@list) {
- push @nodes, $list->call;
- }
+ my @nodes = map { ($_->dxchan && $_->dxchan->isolate) ? () : $_->call } DXNode->get_all();
return "PC38^" . join(',', @nodes) . "^~";
}