merge in mojo Spot dedupe
authorDirk Koopman <djk@tobit.co.uk>
Fri, 7 Jan 2022 09:40:07 +0000 (09:40 +0000)
committerDirk Koopman <djk@tobit.co.uk>
Fri, 7 Jan 2022 09:40:07 +0000 (09:40 +0000)
perl/DXProtHandle.pm
perl/DXUtil.pm
perl/Spot.pm

index 20aaf5a8e6cb7c78e3f0aff54caecf93e95cfcf5..105181675ec85b9df10d2685b48821c205a3039b 100644 (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;
 
index 51272d743420eea029be9a8d0b9e04bc77e029a1..be6dfb4d308e2152e158000a9ddb41582bcc02df 100644 (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;
index 8c353b90e225fd28a8796162dbf972b0ccc4ef07..862f960282e2195943282f81f8d794ebc05d7a76 100644 (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+$//;