merge in mojo Spot dedupe

This commit is contained in:
Dirk Koopman 2022-01-07 09:40:07 +00:00
parent 5a9cdeef2a
commit edc4edfd6d
3 changed files with 11 additions and 14 deletions

View File

@ -1568,8 +1568,12 @@ sub _decode_pc92_call
$version =~ s/\D+//g;
$build =~ s/^0\.//;
$build =~ s/\D+//g;
$ip =~ s/,/:/g if $ip;
return ($call, $is_node, $is_extnode, $here, $version+0, $build+0, $ip);
if ($ip) {
$ip =~ s/,/:/g;
$ip =~ s/^::ffff://i;
}
dbg("$icall = '" . join("', '", $call, $is_node, $is_extnode, $here, $version, $build, $ip) . "'") if isdbg('pc92');
return ($call, $is_node, $is_extnode, $here, $version, $build, $ip);
}
# decode a pc92 call: flag call : version : build
@ -1617,7 +1621,6 @@ sub _add_thingy
my @rout;
# remove spurious IPV6 prefix on IPV4 addresses
$ip =~ s/^::ffff:// if $ip;
$build ||= 0;
$version ||= 0;

View File

@ -222,7 +222,7 @@ sub phash
my $ref = shift;
my $out;
while (my $k = sort keys %$ref) {
foreach my $k (sort keys %$ref) {
$out .= "${k}=>$ref->{$k}, ";
}
$out =~ s/, $// if $out;

View File

@ -383,9 +383,8 @@ sub readfile($)
}
# enter the spot for dup checking and return true if it is already a dup
sub dup
{
my ($freq, $call, $d, $text, $by, $cty) = @_;
sub dup {
my ($freq, $call, $d, $text, $by, $node) = @_;
# dump if too old
return 2 if $d < $main::systime - $dupage;
@ -404,21 +403,16 @@ sub dup
chomp $text;
$text =~ s/\%([0-9A-F][0-9A-F])/chr(hex($1))/eg;
$text = uc unpad($text);
if ($cty && $text && length $text <= 4) {
unless ($text =~ /^C?Q/ || $text =~ /^[\d\W]+$/) {
my @try = Prefix::cty_data($text);
$text = "" if @try && $cty == $try[0];
}
}
my $otext = $text;
# $text = Encode::encode("iso-8859-1", $text) if $main::can_encode && Encode::is_utf8($text, 1);
$text =~ s/^\+\w+\s*//; # remove leading LoTW callsign
$text =~ s/\s{2,}[\dA-Z]?[A-Z]\d?$// if length $text > 24;
$text =~ s/[\W\x00-\x2F\x7B-\xFF]//g; # tautology, just to make quite sure!
$text = substr($text, 0, $duplth) if length $text > $duplth;
my $ldupkey = "X$freq|$call|$by|$text";
my $ldupkey = "X$|$call|$by|$node|$freq|$d|$text";
my $t = DXDupe::find($ldupkey);
return 1 if $t && $t - $main::systime > 0;
DXDupe::add($ldupkey, $main::systime+$dupage);
$otext = substr($otext, 0, $duplth) if length $otext > $duplth;
$otext =~ s/\s+$//;