return;
}
- # will we allow it at all?
- if ($censorpc) {
- my @bad;
- if (@bad = BadWords::check($pc->[3])) {
- dbg("PCPROT: Bad words: @bad, dropped") if isdbg('chanerr');
- return;
- }
- }
# is it for me or one of mine?
my ($from, $to, $via, $call, $dxchan);
# if this is a 'nodx' node then ignore it
if ($badnode->in($pc->[6]) || ($via && $badnode->in($via))) {
- dbg("PCPROT: Bad Node, dropped") if isdbg('chanerr');
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Bad Node, dropped");
return;
}
my $nossid = $from;
$nossid =~ s/-\d+$//;
if ($badspotter->in($nossid)) {
- dbg("PCPROT: Bad Spotter, dropped") if isdbg('chanerr');
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Bad Spotter, dropped");
return;
}
return;
}
}
+
+ # will we allow it at all?
+ if ($censorpc) {
+ my @bad;
+ if (@bad = BadWords::check($pc->[3])) {
+ my $bw = join ', ', @bad;
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Badwords: '$bw', dropped");
+ return;
+ }
+ }
# convert this to a PC93, coming from mycall with origin set and process it as such
$main::me->normal(pc93($to, $from, $via, $pc->[3], $pc->[6]));
# is the spotted callsign blank? This should really be trapped earlier but it
# could break other protocol sentences. Also check for lower case characters.
if ($pc->[2] =~ /^\s*$/) {
- dbg("PCPROT: blank callsign, dropped") if isdbg('chanerr');
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: blank callsign, dropped");
return;
}
if ($pc->[2] =~ /[a-z]/) {
- dbg("PCPROT: lowercase characters, dropped") if isdbg('chanerr');
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: lowercase characters, dropped");
return;
}
# if this is a 'nodx' node then ignore it
if ($badnode->in($pc->[7])) {
- dbg("PCPROT: Bad Node $pc->[7], dropped") if isdbg('chanerr');
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Bad Node $pc->[7], dropped");
return;
}
my $nossid = $pc->[6];
$nossid =~ s/-\d+$//;
if ($badspotter->in($nossid)) {
- dbg("PCPROT: Bad Spotter $pc->[6], dropped") if isdbg('chanerr');
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Bad Spotter $pc->[6], dropped");
return;
}
my $d = cltounix($pc->[3], $pc->[4]);
# bang out (and don't pass on) if date is invalid or the spot is too old (or too young)
if (!$d || (($pcno == 11 || $pcno == 61) && ($d < $main::systime - $pc11_max_age || $d > $main::systime + 900))) {
- dbg("PCPROT: Spot ignored, invalid date or out of range ($pc->[3] $pc->[4])\n") if isdbg('chanerr');
+ dbg("PCPROT: Spot ignored, invalid date or out of range ($pc->[3] $pc->[4])\n");
return;
}
# is it 'baddx'
- if ($baddx->in($pc->[2]) || BadWords::check($pc->[2])) {
- dbg("PCPROT: Bad DX spot, ignored") if isdbg('chanerr');
+ if ($baddx->in($pc->[2])) {
+ dbg("PCPROT: Bad DX spot '$pc->[2]', ignored");
return;
}
dbg("PCPROT: useless 'BUSTED' spot") if isdbg('chanerr');
return;
}
- if ($censorpc) {
- my @bad;
- if (@bad = BadWords::check($pc->[5])) {
- dbg("PCPROT: Bad words: @bad, dropped") if isdbg('chanerr');
- return;
- }
- }
my @spot = Spot::prepare($pc->[1], $pc->[2], $d, $pc->[5], $nossid, $pc->[7], $pc->[8]);
}
}
+# we until here to do any censorship to try and reduce the amount of noise that repeated copies
+# from other connected nodes cause
+ if ($censorpc) {
+ my @bad;
+ if (@bad = BadWords::check($pc->[5])) {
+ my $bw = join ', ', @bad;
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Badwords: '$bw', dropped");
+ return;
+ }
+ }
+
# If is a new PC11, store it, releasing the one that is there (if any),
# if a PC61 comes along then dump the stored PC11
# If there is a different PC11 stored, release that one and store this PC11 instead,
# announce duplicate checking
$pc->[3] =~ s/^\s+//; # remove leading blanks
- if ($censorpc) {
- my @bad;
- if (@bad = BadWords::check($pc->[3])) {
- dbg("PCPROT: Bad words: @bad, dropped") if isdbg('chanerr');
- return;
- }
- }
-
# if this is a 'nodx' node then ignore it
if ($badnode->in($pc->[5])) {
- dbg("PCPROT: Bad Node, dropped") if isdbg('chanerr');
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Bad Node, dropped");
return;
}
my $nossid = $pc->[1];
$nossid =~ s/-\d+$//;
if ($badspotter->in($nossid)) {
- dbg("PCPROT: Bad Spotter, dropped") if isdbg('chanerr');
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Bad Spotter, dropped");
return;
}
return;
}
+ if ($censorpc) {
+ my @bad;
+ if (@bad = BadWords::check($pc->[3])) {
+ my $bw = join ', ', @bad;
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Badwords: '$bw', dropped");
+ return;
+ }
+ }
+
+
my $dxchan;
if ((($dxchan = DXChannel::get($pc->[2])) && $dxchan->is_user) || $pc->[4] =~ /^[\#\w.]+$/){
$version = 0;
}
$version =~ s/\D//g;
+ $version = 0 unless $version && $version =~ /^[0-9]+$/;
$build =~ s/^0\.//;
$build =~ s/\D//g;
+ $build = 0 unless $build && $build =~ /^[0-9]+$/;
if ($ip) {
$ip =~ s/,/:/g;
$ip =~ s/^::ffff://i;
+ $ip = '' unless is_ipaddr($ip);
}
- dbg("$icall = '" . join("', '", $call, $is_node, $is_extnode, $here, $version, $build, $ip) . "'") if isdbg('pc92');
+ dbg("'$icall' = '" . join("', '", $call, $is_node, $is_extnode, $here, $version, $build, $ip) . "'") if isdbg('pc92');
return ($call, $is_node, $is_extnode, $here, $version+0, $build+0, $ip);
}
$user->sort('S');
dbg("PCProt::_add_thingy node $call v: $version b: $build sort ($old) updated to " . $user->sort);
} elsif ($user->is_spider && ($version < 3000 || ($version > 4000 && $version < 5455))) {
- unless ($version == 5000 && $build == 0) {
+ unless ($version > 0 && $build == 0) {
$user->sort('A');
- $build //= 0;
+ $build ||= 0;
dbg("PCProt::_add_thingy node $call v: $version b: $build sort ($old) downgraded to " . $user->sort);
}
}
my $s = "ANNTALK: $from\@$onode$vs -> $to '$text' route: $origin";
dbg($s);
}
-
- # will we allow it at all?
- if ($censorpc) {
- my @bad;
- if (@bad = BadWords::check($text)) {
- dbg("PCPROT: Bad words: @bad, dropped") if isdbg('chanerr');
- return;
- }
- }
# if this is a 'bad spotter' user then ignore it
my $nossid = $from;
$nossid =~ s/-\d+$//;
if ($badspotter->in($nossid)) {
- dbg("PCPROT: Bad Spotter, dropped") if isdbg('chanerr');
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Bad Spotter, dropped");
return;
}
return;
}
+ # will we allow it at all?
+ if ($censorpc) {
+ my @bad;
+ if (@bad = BadWords::check($text)) {
+ my $bw = join ', ', @bad;
+ dbg($line) if isdbg('nologchan');
+ dbg("PCPROT: Badwords: '$bw', dropped");
+ return;
+ }
+ }
+
# if it is routeable then then treat it like a talk
my $ref = Route::get($to);
if ($ref) {