version 1.137, 2015/01/26 22:11:52
|
version 1.139, 2016/02/17 19:15:40
|
Line 307 sub handler {
|
Line 307 sub handler {
|
my $tmpinfo=Apache::lonnet::reply('tmpget:'.$form{'logtoken'},
|
my $tmpinfo=Apache::lonnet::reply('tmpget:'.$form{'logtoken'},
|
$form{'serverid'});
|
$form{'serverid'});
|
|
|
my %sessiondata;
|
|
if ($form{'iptoken'}) {
|
|
%sessiondata = &Apache::lonnet::tmpget($form{'iptoken'});
|
|
my $delete = &Apache::lonnet::tmpdel($form{'iptoken'});
|
|
}
|
|
|
|
if (($tmpinfo=~/^error/) || ($tmpinfo eq 'con_lost') ||
|
if (($tmpinfo=~/^error/) || ($tmpinfo eq 'con_lost') ||
|
($tmpinfo eq 'no_such_host')) {
|
($tmpinfo eq 'no_such_host')) {
|
&failed($r,'Information needed to verify your login information is missing, inaccessible or expired.',\%form);
|
&failed($r,'Information needed to verify your login information is missing, inaccessible or expired.',\%form);
|
Line 332 sub handler {
|
Line 326 sub handler {
|
return OK;
|
return OK;
|
}
|
}
|
|
|
my ($key,$firsturl,$rolestr,$symbstr)=split(/&/,$tmpinfo);
|
my ($key,$firsturl,$rolestr,$symbstr,$iptokenstr)=split(/&/,$tmpinfo);
|
if ($rolestr) {
|
if ($rolestr) {
|
$rolestr = &unescape($rolestr);
|
$rolestr = &unescape($rolestr);
|
}
|
}
|
if ($symbstr) {
|
if ($symbstr) {
|
$symbstr= &unescape($symbstr);
|
$symbstr= &unescape($symbstr);
|
}
|
}
|
|
if ($iptokenstr) {
|
|
$iptokenstr = &unescape($iptokenstr);
|
|
}
|
if ($rolestr =~ /^role=/) {
|
if ($rolestr =~ /^role=/) {
|
(undef,$form{'role'}) = split('=',$rolestr);
|
(undef,$form{'role'}) = split('=',$rolestr);
|
}
|
}
|
if ($symbstr =~ /^symb=/) {
|
if ($symbstr =~ /^symb=/) {
|
(undef,$form{'symb'}) = split('=',$symbstr);
|
(undef,$form{'symb'}) = split('=',$symbstr);
|
}
|
}
|
|
if ($iptokenstr =~ /^iptoken=/) {
|
|
(undef,$form{'iptoken'}) = split('=',$iptokenstr);
|
|
}
|
|
|
my $upass = $ENV{HTTPS} ? join("", @form{qw(upass0 upass1 upass2)})
|
my $upass = $ENV{HTTPS} ? $form{'upass0'}
|
: decrypt($key, @form{qw(upass0 upass1 upass2)});
|
: &Apache::loncommon::des_decrypt($key,$form{'upass0'});
|
|
|
# ---------------------------------------------------------------- Authenticate
|
# ---------------------------------------------------------------- Authenticate
|
|
|
Line 410 sub handler {
|
Line 410 sub handler {
|
|
|
my $hosthere;
|
my $hosthere;
|
if ($form{'iptoken'}) {
|
if ($form{'iptoken'}) {
|
|
my %sessiondata = &Apache::lonnet::tmpget($form{'iptoken'});
|
|
my $delete = &Apache::lonnet::tmpdel($form{'iptoken'});
|
if (($sessiondata{'domain'} eq $form{'udom'}) &&
|
if (($sessiondata{'domain'} eq $form{'udom'}) &&
|
($sessiondata{'username'} eq $form{'uname'})) {
|
($sessiondata{'username'} eq $form{'uname'})) {
|
$hosthere = 1;
|
$hosthere = 1;
|
Line 523 sub handler {
|
Line 525 sub handler {
|
}
|
}
|
}
|
}
|
|
|
sub decrypt {
|
|
my ($key, @chunks) = @_;
|
|
|
|
my $keybin = pack("H16",$key);
|
|
|
|
my $cipher;
|
|
if ($Crypt::DES::VERSION >= 2.03) {
|
|
$cipher = new Crypt::DES $keybin;
|
|
} else {
|
|
$cipher = new DES $keybin;
|
|
}
|
|
|
|
my $upass='';
|
|
for (my $i=0;$i<=2;$i++) {
|
|
my $chunk =
|
|
$cipher->decrypt(
|
|
unpack("a8",pack("H16",substr($chunks[$i],0,16))));
|
|
|
|
$chunk .=
|
|
$cipher->decrypt(
|
|
unpack("a8",pack("H16",substr($chunks[$i],16,16))));
|
|
|
|
$chunk = substr($chunk,1,ord(substr($chunk,0,1)));
|
|
$upass .= $chunk;
|
|
}
|
|
return $upass;
|
|
}
|
|
|
|
sub check_can_host {
|
sub check_can_host {
|
my ($r,$form,$authhost,$domdesc) = @_;
|
my ($r,$form,$authhost,$domdesc) = @_;
|
return unless (ref($form) eq 'HASH');
|
return unless (ref($form) eq 'HASH');
|