version 1.564, 2020/10/22 19:23:22
|
version 1.565, 2021/02/08 14:50:53
|
Line 5077 sub del_domain_handler {
|
Line 5077 sub del_domain_handler {
|
# domain directory. |
# domain directory. |
# |
# |
# Parameters: |
# Parameters: |
# $cmd - Command request keyword (get). |
# $cmd - Command request keyword (getdom). |
# $tail - Tail of the command. This is a colon separated list |
# $tail - Tail of the command. This is a colon separated list |
# consisting of the domain and the 'namespace' |
# consisting of the domain and the 'namespace' |
# which selects the gdbm file to do the lookup in, |
# which selects the gdbm file to do the lookup in, |
Line 5094 sub del_domain_handler {
|
Line 5094 sub del_domain_handler {
|
sub get_domain_handler { |
sub get_domain_handler { |
my ($cmd, $tail, $client) = @_; |
my ($cmd, $tail, $client) = @_; |
|
|
|
|
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
|
|
my ($udom,$namespace,$what)=split(/:/,$tail,3); |
my ($udom,$namespace,$what)=split(/:/,$tail,3); |
chomp($what); |
|
if ($namespace =~ /^enc/) { |
if ($namespace =~ /^enc/) { |
&Failure( $client, "refused\n", $userinput); |
&Failure( $client, "refused\n", $userinput); |
} else { |
} else { |
my @queries=split(/\&/,$what); |
my $res = LONCAPA::Lond::get_dom($userinput); |
my $qresult=''; |
if ($res =~ /^error:/) { |
my $hashref = &tie_domain_hash($udom, "$namespace", &GDBM_READER()); |
&Failure($client, \$res, $userinput); |
if ($hashref) { |
|
for (my $i=0;$i<=$#queries;$i++) { |
|
$qresult.="$hashref->{$queries[$i]}&"; |
|
} |
|
if (&untie_domain_hash($hashref)) { |
|
$qresult=~s/\&$//; |
|
&Reply($client, \$qresult, $userinput); |
|
} else { |
|
&Failure( $client, "error: ".($!+0)." untie(GDBM) Failed ". |
|
"while attempting getdom\n",$userinput); |
|
} |
|
} else { |
} else { |
&Failure($client, "error: ".($!+0)." tie(GDBM) Failed ". |
&Reply($client, \$res, $userinput); |
"while attempting getdom\n",$userinput); |
|
} |
} |
} |
} |
|
|
Line 5131 sub encrypted_get_domain_handler {
|
Line 5117 sub encrypted_get_domain_handler {
|
|
|
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
|
|
my ($udom,$namespace,$what)=split(/:/,$tail,3); |
my $res = LONCAPA::Lond::get_dom($userinput); |
chomp($what); |
if ($res =~ /^error:/) { |
my @queries=split(/\&/,$what); |
&Failure($client, \$res, $userinput); |
my $qresult=''; |
} else { |
my $hashref = &tie_domain_hash($udom, "$namespace", &GDBM_READER()); |
if ($cipher) { |
if ($hashref) { |
my $cmdlength=length($res); |
for (my $i=0;$i<=$#queries;$i++) { |
$res.=" "; |
$qresult.="$hashref->{$queries[$i]}&"; |
my $encres=''; |
} |
for (my $encidx=0;$encidx<=$cmdlength;$encidx+=8) { |
if (&untie_domain_hash($hashref)) { |
$encres.= unpack("H16", |
$qresult=~s/\&$//; |
$cipher->encrypt(substr($res, |
if ($cipher) { |
$encidx, |
my $cmdlength=length($qresult); |
8))); |
$qresult.=" "; |
|
my $encqresult=''; |
|
for (my $encidx=0;$encidx<=$cmdlength;$encidx+=8) { |
|
$encqresult.= unpack("H16", |
|
$cipher->encrypt(substr($qresult, |
|
$encidx, |
|
8))); |
|
} |
|
&Reply( $client, "enc:$cmdlength:$encqresult\n", $userinput); |
|
} else { |
|
&Failure( $client, "error:no_key\n", $userinput); |
|
} |
} |
|
&Reply( $client,"enc:$cmdlength:$encres\n",$userinput); |
} else { |
} else { |
&Failure( $client, "error: ".($!+0)." untie(GDBM) Failed ". |
&Failure( $client, "error:no_key\n",$userinput); |
"while attempting egetdom\n",$userinput); |
|
} |
} |
} else { |
|
&Failure($client, "error: ".($!+0)." tie(GDBM) Failed ". |
|
"while attempting egetdom\n",$userinput); |
|
} |
} |
return 1; |
return 1; |
} |
} |