$tooold = 86400 * 365; # this marks an old user who hasn't given enough info to be useful
$v3 = 0;
our $maxconnlist = 3; # remember this many connection time (duration) [start, end] pairs
$tooold = 86400 * 365; # this marks an old user who hasn't given enough info to be useful
$v3 = 0;
our $maxconnlist = 3; # remember this many connection time (duration) [start, end] pairs
wantcw => '0,Want RBN CW,yesno',
wantrtty => '0,Want RBN RTTY,yesno',
wantpsk => '0,Want RBN PSK,yesno',
wantcw => '0,Want RBN CW,yesno',
wantrtty => '0,Want RBN RTTY,yesno',
wantpsk => '0,Want RBN PSK,yesno',
- wantbeacon => '0,Want (RBN) Beacon,yesno',
+ wantbeacon => '0,Want RBN Beacon,yesno',
lastoper => '9,Last for/oper,cldatetime',
nothere => '0,Not Here Text',
registered => '9,Registered?,yesno',
lastoper => '9,Last for/oper,cldatetime',
nothere => '0,Not Here Text',
registered => '9,Registered?,yesno',
maxconnect => '1,Max Connections',
startt => '0,Start Time,cldatetime',
connlist => '1,Connections,parraydifft',
maxconnect => '1,Max Connections',
startt => '0,Start Time,cldatetime',
connlist => '1,Connections,parraydifft',
- unless (-e $filename || $mode == 2) {
- LogDbg('DXUser', "New User File version $filename does not exist, running conversion from users.v3 or v2, please wait");
- system('/spider/perl/convert-users-v3-to-v3j.pl');
- init(1);
- export();
- return;
+ unless (-e $filename || $mode == 2 ) {
+ if (-e localdata("$fn.v3") || -e localdata("$fn.v2")) {
+ LogDbg('DXUser', "New User File version $filename does not exist, running conversion from users.v3 or v2, please wait");
+ system('/spider/perl/convert-users-v3-to-v3j.pl');
+ init(1);
+ export();
+ return;
+ }
$lru = LRU->newbase("DXUser", $lrusize);
if ($mode) {
$dbm = tie (%u, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_BTREE) or confess "can't open user file: $fn ($!) [rebuild it from user_json?]";
$lru = LRU->newbase("DXUser", $lrusize);
if ($mode) {
$dbm = tie (%u, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_BTREE) or confess "can't open user file: $fn ($!) [rebuild it from user_json?]";
- my $s = shift;
- my $ref;
- eval { $ref = $json->decode($s) };
- if ($ref && !$@) {
- return bless $ref, 'DXUser';
- } else {
- LogDbg('DXUser', "DXUser::json_decode: on '$s' $@");
- }
- return undef;
+ return $json->decode(shift, __PACKAGE__);
- $ekey =~ s/([\%\x00-\x1f\x7f-\xff])/sprintf("%%%02X", ord($1))/eg;
- LogDbg('DXCommand', "Export Error1: invalid callsign($ekey) => '$eval'");
+ $ekey =~ s/([\%\x00-\x1f\x7f-\xff])/sprintf("%%%02X", ord($1))/eg;
+ LogDbg('DXCommand', "Export Error1: invalid call '$key' => '$val'");
if ($ref->is_user && !$ref->{priv} && $main::systime > $t + $tooold) {
unless ($ref->{lat} && $ref->{long} || $ref->{qth} || $ref->{qra}) {
eval {$dbm->del($key)};
if ($ref->is_user && !$ref->{priv} && $main::systime > $t + $tooold) {
unless ($ref->{lat} && $ref->{long} || $ref->{qth} || $ref->{qra}) {
eval {$dbm->del($key)};