From f2a65bc2f8ad7069cadc59f8fd4d2ef390567dba Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Tue, 7 Jul 2020 18:25:31 +0100 Subject: [PATCH] fix show/node --- Changes | 2 + cmd/show/node.pl | 8 +- perl/RBN.pm | 2 +- perl/convert-users-v3-to-v4.pl | 143 --------------------------------- 4 files changed, 7 insertions(+), 148 deletions(-) delete mode 100755 perl/convert-users-v3-to-v4.pl diff --git a/Changes b/Changes index 9e807f66..ceb72454 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,5 @@ +07Jul20======================================================================= +1. Fix show/node command. 06Jul20======================================================================= 1. Add RBN.mojo with information of the RBN capabilities of DXSpider. 05Jul20======================================================================= diff --git a/cmd/show/node.pl b/cmd/show/node.pl index b41cd93f..f8e71177 100644 --- a/cmd/show/node.pl +++ b/cmd/show/node.pl @@ -16,7 +16,6 @@ my ($self, $line) = @_; return (1, $self->msg('e5')) unless $self->priv >= 1; -return (1, $self->msg('storable')) unless $DXUser::v3; my @call = map {uc $_} split /\s+/, $line; my @out; @@ -29,9 +28,10 @@ if (@call == 0) { shift @call; my ($action, $key, $data) = (0,0,0); for ($action = DXUser::R_FIRST, $count = 0; !$DXUser::dbm->seq($key, $data, $action); $action = DXUser::R_NEXT) { - if ($data =~ m{\01[ACRSX]\0\0\0\04sort}) { - push @call, $key; - ++$count; + if (iscallsign($key)) { + if ($data =~ /"sort":"[ACRSX]"/) { + push @call, $key; + } } } } diff --git a/perl/RBN.pm b/perl/RBN.pm index bb64330b..829f11f7 100644 --- a/perl/RBN.pm +++ b/perl/RBN.pm @@ -34,7 +34,7 @@ our $minspottime = 60*60; # the time between respots of a callsign - if a call our $beacontime = 5*60; # same as minspottime, but for beacons (and shorter) -our $dwelltime = 6; # the amount of time to wait for duplicates before issuing +our $dwelltime = 8; # the amount of time to wait for duplicates before issuing # a spot to the user (no doubt waiting with bated breath). our $filterdef = $Spot::filterdef; # we use the same filter as the Spot system. Can't think why :-). diff --git a/perl/convert-users-v3-to-v4.pl b/perl/convert-users-v3-to-v4.pl deleted file mode 100755 index 48ef0c00..00000000 --- a/perl/convert-users-v3-to-v4.pl +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env perl -# -# Convert users.v2 or .v3 to JSON .v4 format -# -# It is believed that this can be run at any time... -# -# Copyright (c) 2020 Dirk Koopman G1TLH -# -# -# - -# make sure that modules are searched in the order local then perl - -BEGIN { - # root of directory tree for this system - $root = "/spider"; - $root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'}; - unshift @INC, "$root/perl"; # this IS the right way round! - unshift @INC, "$root/local"; -} - -use strict; - -use SysVar; -use DXUser; -use DXUtil; -use JSON; -use Data::Structure::Util qw(unbless); -use Time::HiRes qw(gettimeofday tv_interval); -use IO::File; -use File::Copy; -use Carp; -use DB_File; - -use 5.10.1; - -my $ufn; -my $fn = "users"; - -my $json = JSON->new()->canonical(1); -my $ofn = localdata("$fn.v4"); -my $convert; - -eval { - require Storable; -}; - -if ($@) { - if ( ! -e localdata("$fn.v3") && -e localdata("$fn.v2") ) { - $convert = 2; - } - LogDbg('',"the module Storable appears to be missing!!"); - LogDbg('',"trying to continue in compatibility mode (this may fail)"); - LogDbg('',"please install Storable from CPAN as soon as possible"); -} -else { - import Storable qw(nfreeze thaw); - $convert = 3 if -e localdata("users.v3") && !-e $ufn; -} - -die "need to have a $fn.v2 or (preferably) a $fn.v3 file in /spider/data or /spider/local_data\n" unless $convert; - -if (-e $ofn || -e "$ofn.n") { - my $nfn = localdata("$fn.v4.json"); - say "You appear to have (or are using) $ofn, creating $nfn instead"; - $ofn = $nfn; -} else { - $ofn = "$ofn.n"; - say "using $ofn.n for output"; -} - - -# do a conversion if required -if ($convert) { - my ($key, $val, $action, $count, $err) = ('','',0,0,0); - my $ta = [gettimeofday]; - my $ofh = IO::File->new(">$ofn") or die "cannot open $ofn ($!)\n"; - - my %oldu; - LogDbg('',"Converting the User File from V$convert to $fn.v4 "); - LogDbg('',"This will take a while, maybe as much as 10 secs"); - my $odbm = tie (%oldu, 'DB_File', localdata("users.v$convert"), O_RDONLY, 0666, $DB_BTREE) or confess "can't open user file: $fn.v$convert ($!) [rebuild it from user_asc?]"; - for ($action = R_FIRST; !$odbm->seq($key, $val, $action); $action = R_NEXT) { - my $ref; - if ($convert == 3) { - eval { $ref = storable_decode($val) }; - } - else { - eval { $ref = asc_decode($val) }; - } - unless ($@) { - if ($ref) { - unbless $ref; - $ofh->print("$ref->{call}\t" . $json->encode($ref) . "\n"); - $count++; - } - else { - $err++ - } - } - else { - Log('err', "DXUser: error decoding $@"); - } - } - undef $odbm; - untie %oldu; - my $t = _diffms($ta); - LogDbg('',"Conversion from users.v$convert to $ofn completed $count records $err errors $t mS"); - $ofh->close; -} - -exit 0; - -sub asc_decode -{ - my $s = shift; - my $ref; - $s =~ s/\%([0-9A-F][0-9A-F])/chr(hex($1))/eg; - eval '$ref = ' . $s; - if ($@) { - LogDbg('err', "DXUser::asc_decode: on '$s' $@"); - $ref = undef; - } - return $ref; -} - -sub storable_decode -{ - my $ref; - $ref = thaw(shift); - return $ref; -} - -sub LogDbg -{ - my (undef, $s) = @_; - say $s; -} - -sub Log -{ - say shift; -} -- 2.43.0