use Data::Structure::Util qw(unbless);
use Time::HiRes qw(gettimeofday tv_interval);
use IO::File;
+use DXJSON;
use strict;
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',
maxconnect => '1,Max Connections',
startt => '0,Start Time,cldatetime',
connlist => '1,Connections,parraydifft',
+ width => '0,Preferred Width',
);
#no strict;
{
my $mode = shift;
- $json = JSON->new->canonical(1);
+ $json = DXJSON->new->canonical(1);
my $fn = "users";
$filename = localdata("$fn.v3j");
unless (-e $filename || $mode == 2) {
# thaw the user
sub decode
{
- 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__);
}
# freeze the user
sub encode
{
- my $ref = shift;
- unbless($ref);
- my $s = $json->encode($ref);
- bless $ref, 'DXUser';
- return $s;
+ return $json->encode(shift);
}
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" . encode($ref) . "\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;
}
}
sub wantgrid
{
- return _want('grid', @_);
+ return _wantnot('grid', @_);
}
sub wantemail
sub wantdxcq
{
- return _want('dxcq', @_);
+ return _wantnot('dxcq', @_);
}
sub wantdxitu
{
- return _want('dxitu', @_);
+ return _wantnot('dxitu', @_);
}
sub wantgtk