Diff for /loncom/auth/lonacc.pm between versions 1.136 and 1.139

version 1.136, 2011/06/13 02:44:36 version 1.139, 2012/08/21 17:51:58
Line 156  sub get_posted_cgi { Line 156  sub get_posted_cgi {
  for ($i=0;$i<=$#lines;$i++) {   for ($i=0;$i<=$#lines;$i++) {
     if ($lines[$i]=~/^--\Q$contentsep\E/) {      if ($lines[$i]=~/^--\Q$contentsep\E/) {
  if ($name) {   if ($name) {
     $value=~s/[\r\n]+$//;                      chomp($value);
                       if (($r->uri eq '/adm/portfolio') && 
                           ($name eq 'uploaddoc')) {
                           if (length($value) == 1) {
                               $value=~s/[\r\n]$//;
                           }
                       }
                     if (ref($fields) eq 'ARRAY') {                      if (ref($fields) eq 'ARRAY') {
                         next if (!grep(/^\Q$name\E$/,@{$fields}));                          next if (!grep(/^\Q$name\E$/,@{$fields}));
                     }                      }
Line 297  sub sso_login { Line 303  sub sso_login {
     my $home=&Apache::lonnet::homeserver($user,$domain);      my $home=&Apache::lonnet::homeserver($user,$domain);
     if ($home !~ /(con_lost|no_host|no_such_host)/) {      if ($home !~ /(con_lost|no_host|no_such_host)/) {
  &Apache::lonnet::logthis(" SSO authorized user $user ");   &Apache::lonnet::logthis(" SSO authorized user $user ");
  if ($r->dir_config("lonBalancer") eq 'yes') {          my ($is_balancer,$otherserver) =
               &Apache::lonnet::check_loadbalancing($user,$domain);
    if ($is_balancer) {
     # login but immediately go to switch server to find us a new       # login but immediately go to switch server to find us a new 
     # machine      # machine
     &Apache::lonauth::success($r,$user,$domain,$home,'noredirect');      &Apache::lonauth::success($r,$user,$domain,$home,'noredirect');
Line 306  sub sso_login { Line 314  sub sso_login {
                 $env{'request.sso.reloginserver'} =                  $env{'request.sso.reloginserver'} =
                     $r->dir_config('lonSSOReloginServer');                      $r->dir_config('lonSSOReloginServer');
             }              }
     $r->internal_redirect('/adm/switchserver');              my $redirecturl = '/adm/switchserver';
               if ($otherserver ne '') {
                   $redirecturl .= '?otherserver='.$otherserver;
               }
       $r->internal_redirect($redirecturl);
     $r->set_handlers('PerlHandler'=> undef);      $r->set_handlers('PerlHandler'=> undef);
  } else {   } else {
     # need to login them in, so generate the need data that      # need to login them in, so generate the need data that
Line 383  sub handler { Line 395  sub handler {
  return $result;   return $result;
     }      }
   
       my ($is_balancer,$otherserver);
     if ($r->dir_config("lonBalancer") eq 'yes') {  
  $r->set_handlers('PerlResponseHandler'=>  
  [\&Apache::switchserver::handler]);  
     }  
           
     if ($handle eq '') {      if ($handle eq '') {
  $r->log_reason("Cookie $handle not valid", $r->filename);    $r->log_reason("Cookie $handle not valid", $r->filename); 
Line 434  sub handler { Line 442  sub handler {
   
  &Apache::lonacc::get_posted_cgi($r);   &Apache::lonacc::get_posted_cgi($r);
   
   # ------------------------------------------------------ Check if load balancer 
   
           my $checkexempt;
           if ($env{'user.loadbalexempt'} eq $r->dir_config('lonHostID')) {
               if ($env{'user.loadbalcheck.time'} + 600 > time) {
                   $checkexempt = 1;    
               }
           }
           unless ($checkexempt) {
               ($is_balancer,$otherserver) =
                   &Apache::lonnet::check_loadbalancing($env{'user.name'},
                                                        $env{'user.domain'});
           }
           if ($is_balancer) {
               $r->set_handlers('PerlResponseHandler'=>
                                [\&Apache::switchserver::handler]);
               if ($otherserver ne '') {
                   $env{'form.otherserver'} = $otherserver;
               }
           }
   
 # ---------------------------------------------------------------- Check access  # ---------------------------------------------------------------- Check access
  my $now = time;   my $now = time;
  if ($requrl !~ m{^/(?:adm|public|prtspool)/}   if ($requrl !~ m{^/(?:adm|public|prtspool)/}
Line 577  sub handler { Line 606  sub handler {
             }              }
  }   }
  return OK;   return OK;
       } else {
           my $defdom=$r->dir_config('lonDefDomain');
           ($is_balancer,$otherserver) =
               &Apache::lonnet::check_loadbalancing(undef,$defdom);
           if ($is_balancer) {
               $r->set_handlers('PerlResponseHandler'=>
                                [\&Apache::switchserver::handler]);
               if ($otherserver ne '') {
                   $env{'form.otherserver'} = $otherserver;
               }
           }
     }      }
 # -------------------------------------------- See if this is a public resource  # -------------------------------------------- See if this is a public resource
     if ($requrl=~m|^/+adm/+help/+|) {      if ($requrl=~m|^/+adm/+help/+|) {

Removed from v.1.136  
changed lines
  Added in v.1.139


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>