1. Allow the user to equal the node in RSPF checks (this allows spots and
stuff with the origin and spotter to be the same (although it is STRONGLY
recommended that they are NOT!!! [hint hint]).
+2. make the send command rather more sensitive to what is allowed. Basically
+it will only allow TO addresses that are bull addresses (if not private) or
+vaild callsigns (if private). Bull addresses are the ones in
+/spider/msg/forward.pl with a 'T' flag on them. If there is no forward
+file it will only allow 'ALL' and 'DX' as valid Bull TO addresses. You may
+use commas as callsign separators if you like.
02Nov01=======================================================================
1. fixed some Aliasing problems, but this whole area will have to be addressed
more comprehensively.
if ($self->state eq "prompt") {
- my @f = split /([\s\@\$])/, $line;
+ my @f = split /([\s\@\$,])/, $line;
@f = map {s/\s+//g; length $_ ? $_ : ()} @f;
+ @f = grep {$_ ne ','} @f;
# any thing after send?
return (1, $self->msg('e6')) if !@f;
# callsign ?
$notincalls = 0;
+# $DB::single = 1;
+
# is this callsign a distro?
my $fn = "/spider/msg/distro/$f.pl";
if (-e $fn) {
}
}
- if (grep $_ eq $f, @DXMsg::badmsg) {
- push @out, $self->msg('m3', $f);
+ if (($loc->{private} && is_callsign($f)) || (!$loc->{private} && DXMsg::valid_bull_addr($f))) {
+ if (grep $_ eq $f, @DXMsg::badmsg) {
+ push @out, $self->msg('m3', $f);
+ } else {
+ push @to, $f;
+ }
} else {
- push @to, $f;
+ push @out, $self->msg('m3', $f);
}
}
}
$loc->{to} = \@to;
} else {
delete $self->{loc};
- return (1, $self->msg('e6'));
+ return (1, @out, $self->msg('e6'));
}
$loc->{from} ||= $self->call;
unless (is_callsign($loc->{from})) {
return 0;
}
+#
+# look down the forward table to see whether this is a valid bull
+# or not (ie it will forward somewhere even if it is only here)
+#
+sub valid_bull_addr
+{
+ my $call = shift;
+ my $i;
+
+ unless (@forward) {
+ return 1 if $call =~ /^ALL/;
+ return 1 if $call =~ /^DX/;
+ return 0;
+ }
+
+ for ($i = 0; $i < @forward; $i += 5) {
+ my ($sort, $field, $pattern, $action, $bbs) = @forward[$i..($i+4)];
+ if ($field eq 'T') {
+ if (!$pattern || $call =~ m{$pattern}i) {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
sub dump_it
{
my $ref = shift;