use Fcntl;
use IO::File;
use DXDebug;
+use DXUtil;
use strict;
priv => '9,Privilege Level',
lastin => '0,Last Time in,cldatetime',
passwd => '9,Password,yesno',
+ passphrase => '9,Pass Phrase,yesno',
addr => '0,Full Address',
'sort' => '0,Type of User', # A - ak1a, U - User, S - spider cluster, B - BBS
xpert => '0,Expert Status,yesno',
wantgrid => '0,DX Grid Info,yesno',
wantann_talk => '0,Talklike Anns,yesno',
wantpc90 => '1,Req PC90,yesno',
+ wantnp => '1,Req New Protocol,yesno',
lastoper => '9,Last for/oper,cldatetime',
nothere => '0,Not Here Text',
registered => '9,Registered?,yesno',
prompt => '0,Required Prompt',
+ version => '1,Version',
+ build => '1,Build',
);
no strict;
my $dxchan = DXChannel->get($call);
return $dxchan->user if $dxchan;
- my $data;
- unless ($dbm->get($call, $data)) {
- return decode($data);
- }
- return undef;
+ my $rref = Route::get($call);
+ return $rref->user if $rref && exists $rref->{user};
+ return $pkg->get($call);
}
#
rename "$fn", "$fn.o" if -e "$fn";
my $count = 0;
+ my $err = 0;
my $fh = new IO::File ">$fn" or return "cannot open $fn ($!)";
if ($fh) {
- my $ref = 0;
my $key = 0;
+ my $val = undef;
my $action;
my $t = scalar localtime;
print $fh q{#!/usr/bin/perl
DXUser->del_file($main::userfn);
DXUser->init($main::userfn, 1);
-
-%u = (
- };
-
- for ($action = R_FIRST; !$dbm->seq($key, $ref, $action); $action = R_NEXT) {
- print $fh "'$key' => q{$ref},\n";
- ++$count;
+%u = ();
+my $count = 0;
+my $err = 0;
+while (<DATA>) {
+ chomp;
+ my @f = split /\t/;
+ my $ref = decode($f[1]);
+ if ($ref) {
+ $ref->put();
+ $count++;
+ } else {
+ print "# Error: $f[0]\t$f[1]\n";
+ $err++
+ }
+}
+DXUser->sync; DXUser->finish;
+print "There are $count user records and $err errors\n";
+};
+ print $fh "__DATA__\n";
+
+ for ($action = R_FIRST; !$dbm->seq($key, $val, $action); $action = R_NEXT) {
+ if (!is_callsign($key) || $key =~ /^0/) {
+ Log('DXCommand', "Export Error: $key\t$val");
+ $dbm->del($key);
+ ++$err;
+ next;
+ }
+ my $ref = decode($val);
+ if ($ref) {
+ print $fh "$key\t" . $ref->encode . "\n";
+ ++$count;
+ } else {
+ Log('DXCommand', "Export Error: $key\t$val");
+ $dbm->del($key);
+ ++$err;
+ }
}
- print $fh ");\n#\nprint \"there were $count records\\n\";\n#\n";
- print $fh "DXUser->sync; DXUser->finish;\n#\n";
$fh->close;
}
- return $count;
+ return "$count Users $err Errors ('sh/log Export' for details)";
}
#
my $self = shift;
delete $self->{passwd};
}
+
+sub unset_passphrase
+{
+ my $self = shift;
+ delete $self->{passphrase};
+}
1;
__END__