'.&mt($message).'
' + .''.&mt('Please [_1]log in again[_2].','','') + .'
' + .'' .$end_page ); } @@ -228,9 +190,9 @@ sub reroute { my ($r) = @_; &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; - my $msg=''.&mt('Sorry ...').''.&mt('You are already logged in!').'
' + .'' .'
'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].' ,'','','','') .'
' @@ -292,7 +254,7 @@ sub handler { $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $form{$name}=$value; - } + } if ((!$form{'uname'}) || (!$form{'upass0'}) || (!$form{'udom'})) { &failed($r,'Username, password and domain need to be specified.', @@ -336,27 +298,40 @@ sub handler { return OK; } - my ($key,$firsturl,$rolestr,$symbstr,$iptokenstr)=split(/&/,$tmpinfo); + my ($key,$firsturl,$rolestr,$symbstr)=split(/&/,$tmpinfo); if ($rolestr) { $rolestr = &unescape($rolestr); } if ($symbstr) { $symbstr= &unescape($symbstr); } - if ($iptokenstr) { - $iptokenstr = &unescape($iptokenstr); - } if ($rolestr =~ /^role=/) { (undef,$form{'role'}) = split('=',$rolestr); } if ($symbstr =~ /^symb=/) { (undef,$form{'symb'}) = split('=',$symbstr); } - if ($iptokenstr =~ /^iptoken=/) { - (undef,$form{'iptoken'}) = split('=',$iptokenstr); + + 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($form{'upass'.$i},0,16)))); + + $chunk.= + $cipher->decrypt(unpack("a8",pack("H16",substr($form{'upass'.$i},16,16)))); - my $upass = &Apache::loncommon::des_decrypt($key,$form{'upass0'}); + $chunk=substr($chunk,1,ord(substr($chunk,0,1))); + $upass.=$chunk; + } # ---------------------------------------------------------------- Authenticate @@ -387,8 +362,7 @@ sub handler { return OK; } my $start_page = - &Apache::loncommon::start_page('Create a user account in LON-CAPA', - '',{'no_inline_link' => 1,}); + &Apache::loncommon::start_page('Create a user account in LON-CAPA'); my $lonhost = $r->dir_config('lonHostID'); my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'}; my $contacts = @@ -417,17 +391,6 @@ sub handler { ($firsturl=~/^\/adm\/(logout|remote)/)) { $firsturl='/adm/roles'; } - - my $hosthere; - if ($form{'iptoken'}) { - my %sessiondata = &Apache::lonnet::tmpget($form{'iptoken'}); - my $delete = &Apache::lonnet::tmpdel($form{'iptoken'}); - if (($sessiondata{'domain'} eq $form{'udom'}) && - ($sessiondata{'username'} eq $form{'uname'})) { - $hosthere = 1; - } - } - # --------------------------------- Are we attempting to login as somebody else? if ($form{'suname'}) { # ------------ see if the original user has enough privileges to pull this stunt @@ -451,12 +414,8 @@ sub handler { } } - my ($is_balancer,$otherserver); - - unless ($hosthere) { - ($is_balancer,$otherserver) = - &Apache::lonnet::check_loadbalancing($form{'uname'},$form{'udom'}); - } + my ($is_balancer,$otherserver) = + &Apache::lonnet::check_loadbalancing($form{'uname'},$form{'udom'}); if ($is_balancer) { if (!$otherserver) { @@ -465,17 +424,7 @@ sub handler { if ($otherserver) { &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',undef, \%form); - my $switchto = '/adm/switchserver?otherserver='.$otherserver; - if (($firsturl) && ($firsturl ne '/adm/switchserver') && ($firsturl ne '/adm/roles')) { - $switchto .= '&origurl='.$firsturl; - } - if ($form{'role'}) { - $switchto .= '&role='.$form{'role'}; - } - if ($form{'symb'}) { - $switchto .= '&symb='.$form{'symb'}; - } - $r->internal_redirect($switchto); + $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver.'&origurl='.$firsturl); } else { $r->print(&noswitch()); } @@ -486,17 +435,7 @@ sub handler { if ($otherserver) { &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',undef, \%form); - my $switchto = '/adm/switchserver?otherserver='.$otherserver; - if (($firsturl) && ($firsturl ne '/adm/switchserver') && ($firsturl ne '/adm/roles')) { - $switchto .= '&origurl='.$firsturl; - } - if ($form{'role'}) { - $switchto .= '&role='.$form{'role'}; - } - if ($form{'symb'}) { - $switchto .= '&symb='.$form{'symb'}; - } - $r->internal_redirect($switchto); + $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver.'&origurl='.$firsturl); } else { $r->print(&noswitch()); }