Diff for /loncom/auth/migrateuser.pm between versions 1.37 and 1.41

version 1.37, 2018/12/02 14:41:19 version 1.41, 2018/12/07 23:33:55
Line 119  sub lti_check { Line 119  sub lti_check {
     return \%lti_env;      return \%lti_env;
 }  }
   
   sub canhost {
       my ($uname,$udom,$lonhost,$loncaparev) = @_;
       my $canhost;
       if (&Apache::lonnet::is_library($lonhost)) {
           my @possdoms = &Apache::lonnet::current_machine_domains();
           my %roleshash = &Apache::lonnet::get_my_roles($uname,$udom,'userroles','',['ca','aa'],\@possdoms);
           if (keys(%roleshash)) {
               foreach my $key (keys(%roleshash)) {
                   my $audom = (split(/:/,$key))[1];
                   if ((&Apache::lonnet::will_trust('othcoau',$udom,$audom)) &&
                       (&Apache::lonnet::will_trust('coaurem',$audom,$udom))) {
                       $canhost = 1;
                       last;
                   }
               }
           }
       }
       unless ($canhost) {
           my $uprimary_id = &Apache::lonnet::domain($udom,'primary');
           my $uint_dom = &Apache::lonnet::internet_dom($uprimary_id);
           my @intdoms;
           my $internet_names = &Apache::lonnet::get_internet_names($lonhost);
           if (ref($internet_names) eq 'ARRAY') {
               @intdoms = @{$internet_names};
           }
           if ($uint_dom ne '' && grep(/^\Q$uint_dom\E$/,@intdoms)) {
               $canhost = 1;
           } else {
               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);
               $canhost =
                   &Apache::lonnet::can_host_session($udom,$lonhost,$loncaparev,
                                                     $udomdefaults{'remotesessions'},
                                                     $defdomdefaults{'hostedsessions'});
           }
       }
       return $canhost;
   }
   
 sub ip_changed {  sub ip_changed {
     my ($r,$udom,$camefrom,$idsref,$dataref) = @_;      my ($r,$udom,$camefrom,$idsref,$dataref) = @_;
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
Line 339  sub conlost_userhome { Line 381  sub conlost_userhome {
         map { $conlost{$_} = 1; } split(/,/,$data{'conlost'});          map { $conlost{$_} = 1; } split(/,/,$data{'conlost'});
     }      }
     if ($data{'loncfail'}) {      if ($data{'loncfail'}) {
         if ($is_balancer) {          if ($lonhost ne $data{'from_balancer'}) {
             if ($lonhost ne $data{'from_balancer'}) {              my ($is_balancer,$posshost,$setcookie,$offloadto,$dom_balancers) =
                 my ($is_balancer,$posshost,$setcookie,$offloadto,$dom_balancers) =                  &Apache::lonnet::check_loadbalancing($data{'username'},$data{'domain'});
                     &Apache::lonnet::check_loadbalancing($data{'username'},$data{'domain'});              if ($is_balancer) {
                 if ($is_balancer) {                  if (ref($offloadto) eq 'HASH') {
                     if (ref($offloadto) eq 'HASH') {                      $data{'offloadto'} = '';
                         $data{'offloadto'} = '';                      foreach my $key (keys(%{$offloadto})) {
                         foreach my $key (keys(%{$offloadto})) {                          if (ref($offloadto->{$key}) eq 'ARRAY') {
                             if (ref($offloadto->{$key}) eq 'ARRAY') {                              $data{'offloadto'} .= $key.'='.join(',',@{$offloadto->{$key}}).'&';
                                 $data{'offloadto'} .= $key.'='.join(',',@{$offloadto->{$key}}).'&';  
                             }  
                         }                          }
                         $data{'offloadto'} =~ s/\&$//;  
                     } elsif (ref($offloadto) eq 'ARRAY') {  
                         $data{'offloadto'} = join(',',@{$offloadto});  
                     }                      }
                       $data{'offloadto'} =~ s/\&$//;
                   } elsif (ref($offloadto) eq 'ARRAY') {
                       $data{'offloadto'} = join(',',@{$offloadto});
                 }                  }
             }              }
         }          }
Line 446  sub conlost_userhome { Line 486  sub conlost_userhome {
                 return $otherserver;                  return $otherserver;
             } else {              } else {
                 #FIXME Contents of $data{'dom_balancers'} contains invalid hostID.                  #FIXME Contents of $data{'dom_balancers'} contains invalid hostID.
             }                }
         } else {          } else {
             if ($data{'loncfail'}) {              if ($data{'loncfail'}) {
                 #FIXME Nowhere to go.                   #FIXME Nowhere to go. 
Line 577  sub handler { Line 617  sub handler {
         $udom=$data{'domain'};          $udom=$data{'domain'};
     }      }
     if ($home eq 'no_host') { return &goto_login($r,$udom,\%data); }      if ($home eq 'no_host') { return &goto_login($r,$udom,\%data); }
     if (&Apache::lonnet::hostname($home) eq '') { return &goto_login($r,$udom,\%data); }       if (&Apache::lonnet::hostname($home) eq '') { return &goto_login($r,$udom,\%data); }
   
       unless (grep(/^\Q$home\E$/,@ids)) {
           my $lonhost = $r->dir_config('lonHostID');
           my $loncaparev = $r->dir_config('lonVersion');
           unless (&canhost($data{'username'},$data{'domain'},$lonhost,$loncaparev)) {
               return &goto_login($r,$udom,\%data);
           }
       }
   
     my $rolemsg;      my $rolemsg;
     if ($data{'role'}) {      if ($data{'role'}) {
         $rolemsg = "role: $data{'role'}";           $rolemsg = "role: $data{'role'}";
     } else {      } else {
         $rolemsg = '(no role)';          $rolemsg = '(no role)';
     }      }

Removed from v.1.37  
changed lines
  Added in v.1.41


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