$filename = undef;
$lastoperinterval = 60*24*60*60;
$lasttime = 0;
-$lrusize = 2000;
+$lrusize = 10000;
$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
email => '0,E-mail Address,parray',
priv => '9,Privilege Level',
lastin => '0,Last Time in,cldatetime',
+ lastseen => '0,Last Seen,cldatetime',
passwd => '9,Password,yesno',
passphrase => '9,Pass Phrase,yesno',
addr => '0,Full Address',
wantdxitu => '0,Show ITU Zone,yesno',
wantgtk => '0,Want GTK interface,yesno',
wantpc9x => '0,Want PC9X interface,yesno',
+ wantrbn => '0,Want RBN spots,yesno',
+ wantft => '0,Want RBN FT4/8,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',
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',
+ width => '0,Preferred Width'
);
#no strict;
sub finish
{
+ $dbm->sync;
undef $dbm;
untie %u;
}
# confess "can't create existing call $call in User\n!" if $u{$call};
my $self = $pkg->alloc($call);
+ $self->{lastseen} = $main::systime;
$self->put;
return $self;
}
# is it in the LRU cache?
my $ref = $lru->get($call);
- return $ref if $ref && ref $ref eq 'DXUser';
+ if ($ref && ref $ref eq 'DXUser') {
+ $ref->{lastseen} = $main::systime;
+ return $ref;
+ }
# search for it
unless ($dbm->get($call, $data)) {
}
return undef;
}
+ $ref->{lastseen} = $main::systime;
$lru->put($call, $ref);
return $ref;
}
my $self = shift;
my $startt = shift;
my $ip = shift;
- $self->{lastin} = $main::systime;
+ $self->{lastseen} = $self->{lastin} = $main::systime;
# add a record to the connect list
my $ref = [$startt || $self->{startt}, $main::systime];
push @$ref, $ip if $ip;
my $eval = $val;
my $ekey = $key;
$eval =~ s/([\%\x00-\x1f\x7f-\xff])/sprintf("%%%02X", ord($1))/eg;
- $ekey =~ s/([\%\x00-\x1f\x7f-\xff])/sprintf("%%%02X", ord($1))/eg;
- LogDbg('DXCommand', "Export Error1: $ekey\t$eval");
+ $ekey =~ s/([\%\x00-\x1f\x7f-\xff])/sprintf("%%%02X", ord($1))/eg;
+ LogDbg('DXCommand', "Export Error1: invalid call '$key' => '$val'");
eval {$dbm->del($key)};
- dbg(carp("Export Error1: $ekey\t$eval\n$@")) if $@;
+ dbg(carp("Export Error1: delete $key => '$val' $@")) if $@;
++$err;
next;
}
if ($ref->is_user && !$ref->{priv} && $main::systime > $t + $tooold) {
unless ($ref->{lat} && $ref->{long} || $ref->{qth} || $ref->{qra}) {
eval {$dbm->del($key)};
- dbg(carp("Export Error2: $key\t$val\n$@")) if $@;
+ dbg(carp("Export Error2: delete '$key' => '$val' $@")) if $@;
LogDbg('DXCommand', "$ref->{call} deleted, too old");
$del++;
next;
print $fh "$key\t" . $ref->asc_encode($basic_info_only) . "\n";
++$count;
} else {
- LogDbg('DXCommand', "Export Error3: $key\t" . carp($val) ."\n$@");
+ LogDbg('DXCommand', "Export Error3: '$key'\t" . carp($val) ."\n$@");
eval {$dbm->del($key)};
- dbg(carp("Export Error3: $key\t$val\n$@")) if $@;
+ dbg(carp("Export Error3: delete '$key' => '$val' $@")) if $@;
++$err;
}
}
return $self->{sort} eq 'A';
}
+sub is_rbn
+{
+ my $self = shift;
+ return $self->{sort} eq 'N'
+}
+
sub unset_passwd
{
my $self = shift;