Diff for /loncom/auth/lonauth.pm between versions 1.105 and 1.107

version 1.105, 2010/07/17 20:02:02 version 1.107, 2010/07/24 17:42:46
Line 408  sub handler { Line 408  sub handler {
     if ($r->dir_config("lonBalancer") eq 'yes') {      if ($r->dir_config("lonBalancer") eq 'yes') {
  &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',undef,   &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',undef,
  \%form);   \%form);
         my ($otherserver) = &choose_server($form{'udom'});          my ($otherserver) = &Apache::lonnet::choose_server($form{'udom'});
  $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);   $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);
     } else {      } else {
  &success($r,$form{'uname'},$form{'udom'},$authhost,$firsturl,undef,   &success($r,$form{'uname'},$form{'udom'},$authhost,$firsturl,undef,
Line 421  sub check_can_host { Line 421  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');
     my $canhost = 1;      my $canhost = 1;
     my @machinedoms = &Apache::lonnet::current_machine_domains();      my $lonhost = $r->dir_config('lonHostID');
     my $udom = $form->{'udom'};      my $udom = $form->{'udom'};
     unless (grep(/^\Q$udom\E/,@machinedoms)) {      my @intdoms = &Apache::lonnet::get_internet_names($lonhost);
         my $defdom = &Apache::lonnet::default_login_domain();      my $uprimary_id = &Apache::lonnet::domain($udom,'primary');
         my %defdomdefaults = &Apache::lonnet::get_domain_defaults($defdom);      my $uint_dom = &Apache::lonnet::internet_dom($uprimary_id);
       unless ($uint_dom ne '' && grep(/^\Q$uint_dom\E$/,@intdoms)) {
           my $machine_dom = &Apache::lonnet::host_domain($lonhost);
           my $hostname = &Apache::lonnet::hostname($lonhost);
           my $serverhomeID = &Apache::lonnet::get_server_homeID($hostname);
           my $serverhomedom = &Apache::lonnet::host_domain($serverhomeID);
           my %defdomdefaults = &Apache::lonnet::get_domain_defaults($serverhomedom);
         my %udomdefaults = &Apache::lonnet::get_domain_defaults($udom);          my %udomdefaults = &Apache::lonnet::get_domain_defaults($udom);
         my $loncaparev;          my $loncaparev;
         if ($authhost eq 'no_account_on_host') {          if ($authhost eq 'no_account_on_host') {
             $loncaparev = &Apache::lonnet::get_server_loncaparev($defdom);              $loncaparev = &Apache::lonnet::get_server_loncaparev($machine_dom);
         } else {          } else {
             $loncaparev = &Apache::lonnet::get_server_loncaparev($defdom,$authhost);              $loncaparev = &Apache::lonnet::get_server_loncaparev($machine_dom,$lonhost);
         }          }
         $canhost = &Apache::lonnet::can_host_session($udom,$defdom,$loncaparev,$udomdefaults{'remotesessions'},$defdomdefaults{'hostedsessions'});          $canhost = &Apache::lonnet::can_host_session($udom,$lonhost,$loncaparev,
                                                        $udomdefaults{'remotesessions'},
                                                        $defdomdefaults{'hostedsessions'});
     }      }
     unless ($canhost) {      unless ($canhost) {
         if ($authhost eq 'no_account_on_host') {          if ($authhost eq 'no_account_on_host') {
             my ($login_host,$hostname) = &choose_server($udom);              my ($login_host,$hostname) = &Apache::lonnet::choose_server($udom);
             &Apache::loncommon::content_type($r,'text/html');              &Apache::loncommon::content_type($r,'text/html');
             $r->send_http_header;              $r->send_http_header;
             if ($login_host ne '') {              if ($login_host ne '') {
Line 461  sub check_can_host { Line 469  sub check_can_host {
         } else {          } else {
             &success($r,$form->{'uname'},$udom,$authhost,'noredirect',undef,              &success($r,$form->{'uname'},$udom,$authhost,'noredirect',undef,
                      $form);                       $form);
             my ($otherserver) = &choose_server($udom);              my ($otherserver) = &Apache::lonnet::choose_server($udom);
             $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);              $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);
         }          }
     }      }
 }  }
   
 sub choose_server {  
     my ($udom) = @_;  
     my %domconfhash = &Apache::loncommon::get_domainconf($udom);  
     my %servers = &Apache::lonnet::get_servers($udom);  
     my $lowest_load = 30000;  
     my ($login_host,$hostname);  
     foreach my $lonhost (keys(%servers)) {  
         my $loginvia = $domconfhash{$udom.'.login.loginvia_'.$lonhost};  
         if ($loginvia eq '') {  
             ($login_host, $lowest_load) =  
             &Apache::lonnet::compare_server_load($lonhost, $login_host, $lowest_load);  
         }  
     }  
     if ($login_host ne '') {  
         $hostname = $servers{$login_host};  
     }  
     return ($login_host,$hostname);  
 }  
   
 1;  1;
 __END__  __END__
   

Removed from v.1.105  
changed lines
  Added in v.1.107


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