projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix sh/mydx, add back qra sq for sh/dxgrid
[spider.git]
/
perl
/
DXUser.pm
diff --git
a/perl/DXUser.pm
b/perl/DXUser.pm
index d385382b80fe13469bc9e8f85360ed26a54b39e0..5d212b078e220388de8b4bbef8e23b9a10e9d240 100644
(file)
--- a/
perl/DXUser.pm
+++ b/
perl/DXUser.pm
@@
-27,9
+27,10
@@
$dbm = undef;
$filename = undef;
$lastoperinterval = 60*24*60*60;
$lasttime = 0;
$filename = undef;
$lastoperinterval = 60*24*60*60;
$lasttime = 0;
-$lrusize =
2
000;
+$lrusize =
10
000;
$tooold = 86400 * 365; # this marks an old user who hasn't given enough info to be useful
$v3 = 0;
$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
# hash of valid elements and a simple prompt
%valid = (
# hash of valid elements and a simple prompt
%valid = (
@@
-43,6
+44,7
@@
$v3 = 0;
email => '0,E-mail Address,parray',
priv => '9,Privilege Level',
lastin => '0,Last Time in,cldatetime',
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',
passwd => '9,Password,yesno',
passphrase => '9,Pass Phrase,yesno',
addr => '0,Full Address',
@@
-82,6
+84,12
@@
$v3 = 0;
wantdxitu => '0,Show ITU Zone,yesno',
wantgtk => '0,Want GTK interface,yesno',
wantpc9x => '0,Want PC9X interface,yesno',
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',
lastoper => '9,Last for/oper,cldatetime',
nothere => '0,Not Here Text',
registered => '9,Registered?,yesno',
@@
-91,6
+99,8
@@
$v3 = 0;
believe => '1,Believable nodes,parray',
lastping => '1,Last Ping at,ptimelist',
maxconnect => '1,Max Connections',
believe => '1,Believable nodes,parray',
lastping => '1,Last Ping at,ptimelist',
maxconnect => '1,Max Connections',
+ startt => '0,Start Time,cldatetime',
+ connlist => '1,Connections,parraydifft',
);
#no strict;
);
#no strict;
@@
-204,6
+214,7
@@
sub process
sub finish
{
sub finish
{
+ $dbm->sync;
undef $dbm;
untie %u;
}
undef $dbm;
untie %u;
}
@@
-229,6
+240,7
@@
sub new
# confess "can't create existing call $call in User\n!" if $u{$call};
my $self = $pkg->alloc($call);
# 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;
}
$self->put;
return $self;
}
@@
-245,7
+257,10
@@
sub get
# is it in the LRU cache?
my $ref = $lru->get($call);
# 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)) {
# search for it
unless ($dbm->get($call, $data)) {
@@
-265,6
+280,7
@@
sub get
}
return undef;
}
}
return undef;
}
+ $ref->{lastseen} = $main::systime;
$lru->put($call, $ref);
return $ref;
}
$lru->put($call, $ref);
return $ref;
}
@@
-395,7
+411,14
@@
sub del
sub close
{
my $self = shift;
sub close
{
my $self = shift;
- $self->{lastin} = time;
+ my $startt = shift;
+ my $ip = shift;
+ $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;
+ push @{$self->{connlist}}, $ref;
+ shift @{$self->{connlist}} if @{$self->{connlist}} > $maxconnlist;
$self->put();
}
$self->put();
}
@@
-825,6
+848,12
@@
sub is_ak1a
return $self->{sort} eq 'A';
}
return $self->{sort} eq 'A';
}
+sub is_rbn
+{
+ my $self = shift;
+ return $self->{sort} eq 'N'
+}
+
sub unset_passwd
{
my $self = shift;
sub unset_passwd
{
my $self = shift;