projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
made filtering work properly for spots
[spider.git]
/
perl
/
DXProt.pm
diff --git
a/perl/DXProt.pm
b/perl/DXProt.pm
index 30b1b27899a773acd6c12930719acf8e6377d73c..5211b7aa622ec6553084b3371925bd0919d8405a 100644
(file)
--- a/
perl/DXProt.pm
+++ b/
perl/DXProt.pm
@@
-28,13
+28,14
@@
use Local;
use Carp;
use strict;
use Carp;
use strict;
-use vars qw($me $pc11_max_age $pc
11_dup_age $pc23_dup_age
- %spotdup %wwvdup $last_hour %pings %rcmds
+use vars qw($me $pc11_max_age $pc
23_max_age $pc11_dup_age $pc23_dup_age
+ %spotdup %wwvdup $last_hour %pings %rcmds
%nodehops @baddx $baddxfn $pc12_dup_age
%anndup $allowzero);
$me = undef; # the channel id for this cluster
$pc11_max_age = 1*3600; # the maximum age for an incoming 'real-time' pc11
%nodehops @baddx $baddxfn $pc12_dup_age
%anndup $allowzero);
$me = undef; # the channel id for this cluster
$pc11_max_age = 1*3600; # the maximum age for an incoming 'real-time' pc11
+$pc23_max_age = 1*3600; # the maximum age for an incoming 'real-time' pc23
$pc11_dup_age = 24*3600; # the maximum time to keep the spot dup list for
$pc23_dup_age = 24*3600; # the maximum time to keep the wwv dup list for
$pc12_dup_age = 24*3600; # the maximum time to keep the ann dup list for
$pc11_dup_age = 24*3600; # the maximum time to keep the spot dup list for
$pc23_dup_age = 24*3600; # the maximum time to keep the wwv dup list for
$pc12_dup_age = 24*3600; # the maximum time to keep the ann dup list for
@@
-149,7
+150,13
@@
sub normal
my ($pcno) = $field[0] =~ /^PC(\d\d)/; # just get the number
return unless $pcno;
return if $pcno < 10 || $pcno > 51;
my ($pcno) = $field[0] =~ /^PC(\d\d)/; # just get the number
return unless $pcno;
return if $pcno < 10 || $pcno > 51;
-
+
+ # dump bad protocol messages unless it is a PC29
+ if ($line =~ /\%[0-9A-F][0-9A-F]/o && $pcno != 29) {
+ dbg('chan', "CORRUPT protocol message - dumped");
+ return;
+ }
+
# local processing 1
my $pcr;
eval {
# local processing 1
my $pcr;
eval {
@@
-203,7
+210,7
@@
sub normal
# store it away
my $spotter = $field[6];
# store it away
my $spotter = $field[6];
- $spotter =~ s/-
\d+$//o;
# strip off the ssid from the spotter
+ $spotter =~ s/-
[\@\d]+$//o;
# strip off the ssid from the spotter
# do some de-duping
my $freq = $field[1] - 0;
# do some de-duping
my $freq = $field[1] - 0;
@@
-220,6
+227,12
@@
sub normal
dbg('chan', "Bad DX spot, ignored");
return;
}
dbg('chan', "Bad DX spot, ignored");
return;
}
+
+ # are any of the crucial fields invalid?
+ if ($field[2] =~ /[a-z]/ || $field[6] =~ /[a-z]/ || $field[7] =~ /[a-z]/) {
+ dbg('chan', "Spot contains lower case callsigns, rejected");
+ return;
+ }
my @spot = Spot::add($freq, $field[2], $d, $text, $spotter, $field[7]);
my @spot = Spot::add($freq, $field[2], $d, $text, $spotter, $field[7]);
@@
-500,7
+513,7
@@
sub normal
dbg('chan', "Dup WWV Spot ignored\n");
return;
}
dbg('chan', "Dup WWV Spot ignored\n");
return;
}
- if ($d > $main::systime + 900 || $field[2] < 0 || $field[2] > 23) {
+ if ($d
< $main::systime - $pc23_max_age || $d
> $main::systime + 900 || $field[2] < 0 || $field[2] > 23) {
dbg('chan', "WWV Date ($field[1] $field[2]) out of range");
return;
}
dbg('chan', "WWV Date ($field[1] $field[2]) out of range");
return;
}
@@
-799,7
+812,13
@@
sub send_dx_spot
# taking into account filtering and so on
foreach $dxchan (@dxchan) {
my $routeit;
# taking into account filtering and so on
foreach $dxchan (@dxchan) {
my $routeit;
- my ($filter, $hops) = Filter::it($dxchan->{spotfilter}, @_, $self->{call} ) if $dxchan->{spotfilter};
+ my ($filter, $hops);
+
+ if ($dxchan->{spotfilter}) {
+ ($filter, $hops) = Filter::it($dxchan->{spotfilter}, @_, $self->{call} );
+ next unless $filter;
+ }
+
if ($dxchan->is_ak1a) {
next if $dxchan == $self;
if ($hops) {
if ($dxchan->is_ak1a) {
next if $dxchan == $self;
if ($hops) {