version 1.37, 2018/12/02 14:41:19
|
version 1.40, 2018/12/07 23:16:50
|
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)'; |
} |
} |