}
# if this is a 'bad spotter' user then ignore it
- if ($badspotter->in($from)) {
+ my $nossid = $from;
+ $nossid =~ s/-\d+$//;
+ if ($badspotter->in($nossid)) {
dbg("PCPROT: Bad Spotter, dropped") if isdbg('chanerr');
return;
}
}
# if this is a 'bad spotter' user then ignore it
- if ($badspotter->in($field[6])) {
+ my $nossid = $field[6];
+ $nossid =~ s/-\d+$//;
+ if ($badspotter->in($nossid)) {
dbg("PCPROT: Bad Spotter, dropped") if isdbg('chanerr');
return;
}
}
# if this is a 'bad spotter' user then ignore it
- if ($badspotter->in($field[1])) {
+ my $nossid = $field[1];
+ $nossid =~ s/-\d+$//;
+ if ($badspotter->in($nossid)) {
dbg("PCPROT: Bad Spotter, dropped") if isdbg('chanerr');
return;
}
return;
}
+ if ($pcno == 90) { # new style PC16,17,19,21
+ return;
+ }
}
# if get here then rebroadcast the thing with its Hop count decremented (if
next unless $dxchan->is_node();
next if $dxchan == $main::me;
- # send the pc50
- $dxchan->send($pc50s) if $pc50s;
+ # send the pc50 or PC90
+ if ($pc50s && $dxchan->is_spider) {
+# $dxchan->send_route(\&pc90, 1, $main::me, 'T', @dxchan);
+ } else {
+ $dxchan->send($pc50s) if $pc50s;
+ }
# send a ping out on this channel
if ($dxchan->{pingint} && $t >= $dxchan->{pingint} + $dxchan->{lastping}) {
# some active measures
#
+
sub send_dx_spot
{
my $self = shift;
dbg("sent a null value") if isdbg('chanerr');
}
}
+# $self->send_route(\&pc90, 1, $main::me, 'T', DXChannel::get_all());
}
#
broadcast_route($self, \&pc50, 1, @_);
}
+sub route_pc90
+{
+ my $self = shift;
+ broadcast_route($self, \&pc90, 1, @_);
+}
+
sub in_filter_route
{
my $self = shift;
return "PC85^$tonode^$fromnode^$call^$msg^~";
}
+# spider route broadcast
+sub pc90
+{
+ my $node = shift;
+ my $sort = shift;
+ my @out;
+ my $dxchan;
+ my $n = @_;
+
+ while (@_) {
+ my $str = sprintf "PC90^%s^%X^%s%d", $node->call, $main::systime, $sort, $n-1 ;
+ for (; @_ && length $str < 200;) {
+ my $ref = shift;
+ next if $ref == $main::me;
+ my $call = $ref->call;
+ my $flag = 0;
+ $flag += 1 if $ref->here;
+ $flag += 2 if $ref->conf;
+ if ($ref->is_node) {
+ my $ping = int($ref->pingave * 10);
+ $str .= "^N$flag$call,$ping";
+ } else {
+ $str .= "^U$flag$call";
+ }
+ }
+ $str .= sprintf "^%s^", get_hops(90);
+ push @out, $str;
+ }
+ return @out;
+}
+
1;
__END__