version 1.158.2.13.2.5, 2022/06/01 12:21:06
|
version 1.158.2.13.2.6, 2022/07/08 15:43:51
|
Line 68 sub handler {
|
Line 68 sub handler {
|
$env{'form.ltoken'} = $info{'ltoken'}; |
$env{'form.ltoken'} = $info{'ltoken'}; |
} elsif ($info{'linkprot'}) { |
} elsif ($info{'linkprot'}) { |
$env{'form.linkprot'} = $info{'linkprot'}; |
$env{'form.linkprot'} = $info{'linkprot'}; |
|
foreach my $item ('linkprotuser','linkprotexit') { |
|
if ($info{$item} ne '') { |
|
$env{'form.'.$item} = $info{$item}; |
|
} |
|
} |
} elsif ($info{'linkkey'} ne '') { |
} elsif ($info{'linkkey'} ne '') { |
$env{'form.linkkey'} = $info{'linkkey'}; |
$env{'form.linkkey'} = $info{'linkkey'}; |
} |
} |
Line 181 sub handler {
|
Line 186 sub handler {
|
$link_info{'ltoken'} = $env{'form.ltoken'}; |
$link_info{'ltoken'} = $env{'form.ltoken'}; |
} elsif ($env{'form.linkprot'}) { |
} elsif ($env{'form.linkprot'}) { |
$link_info{'linkprot'} = $env{'form.linkprot'}; |
$link_info{'linkprot'} = $env{'form.linkprot'}; |
|
foreach my $item ('linkprotuser','linkprotexit') { |
|
if ($env{'form.'.$item} ne '') { |
|
$link_info{$item} = $env{'form.'.$item}; |
|
} |
|
} |
} elsif ($env{'form.linkkey'} ne '') { |
} elsif ($env{'form.linkkey'} ne '') { |
$link_info{'linkkey'} = $env{'form.linkkey'}; |
$link_info{'linkkey'} = $env{'form.linkkey'}; |
} |
} |
Line 249 sub handler {
|
Line 259 sub handler {
|
$dest = &HTML::Entities::encode($env{'form.firsturl'},'\'"<>&'); |
$dest = &HTML::Entities::encode($env{'form.firsturl'},'\'"<>&'); |
} |
} |
if (($env{'form.ltoken'}) || ($env{'form.linkprot'})) { |
if (($env{'form.ltoken'}) || ($env{'form.linkprot'})) { |
my $linkprot; |
my ($linkprot,$linkprotuser,$linkprotexit); |
if ($env{'form.ltoken'}) { |
if ($env{'form.ltoken'}) { |
my %info = &Apache::lonnet::tmpget($env{'form.ltoken'}); |
my %info = &Apache::lonnet::tmpget($env{'form.ltoken'}); |
$linkprot = $info{'linkprot'}; |
$linkprot = $info{'linkprot'}; |
my $delete = &Apache::lonnet::tmpdel($env{'form.ltoken'}); |
if ($info{'linkprotuser'} ne '') { |
|
$linkprotuser = $info{'linkprotuser'}; |
|
} |
|
if ($info{'linkprotexit'} ne '') { |
|
$linkprotexit = $info{'linkprotexit'}; |
|
} |
} else { |
} else { |
$linkprot = $env{'form.linkprot'}; |
$linkprot = $env{'form.linkprot'}; |
|
$linkprotuser = $env{'form.linkprotuser'}; |
|
$linkprotexit = $env{'form.linkprotexit'}; |
} |
} |
if ($linkprot) { |
if ($linkprot) { |
my ($linkprotector,$deeplink) = split(/:/,$linkprot,2); |
my ($linkprotector,$deeplink) = split(/:/,$linkprot,2); |
|
if (($deeplink =~ m{^/tiny/$match_domain/\w+$}) && |
|
($linkprotuser ne '') && ($linkprotuser ne $env{'user.name'}.':'.$env{'user.domain'})) { |
|
my $ip = &Apache::lonnet::get_requestor_ip(); |
|
my %linkprotinfo = ( |
|
origurl => $deeplink, |
|
linkprot => $linkprot, |
|
linkprotuser => $linkprotuser, |
|
linkprotexit => $linkprotexit, |
|
); |
|
if ($env{'form.ltoken'}) { |
|
my $delete = &Apache::lonnet::tmpdel($env{'form.ltoken'}); |
|
} |
|
&Apache::migrateuser::logout($r,$ip,$handle,undef,undef,\%linkprotinfo); |
|
return OK; |
|
} |
if ($env{'user.linkprotector'}) { |
if ($env{'user.linkprotector'}) { |
my @protectors = split(/,/,$env{'user.linkprotector'}); |
my @protectors = split(/,/,$env{'user.linkprotector'}); |
unless (grep(/^\Q$linkprotector\E$/,@protectors)) { |
unless (grep(/^\Q$linkprotector\E$/,@protectors)) { |
Line 304 sub handler {
|
Line 336 sub handler {
|
} |
} |
} |
} |
} |
} |
|
if ($env{'form.ltoken'}) { |
|
my $delete = &Apache::lonnet::tmpdel($env{'form.ltoken'}); |
|
} |
$r->print( |
$r->print( |
$start_page |
$start_page |
.'<p class="LC_warning">'.&mt('You are already logged in!').'</p>' |
.'<p class="LC_warning">'.&mt('You are already logged in!').'</p>' |
Line 429 sub handler {
|
Line 464 sub handler {
|
|
|
# -------------------------------------------------------- Store away log token |
# -------------------------------------------------------- Store away log token |
my ($tokenextras,$tokentype,$linkprot_for_login); |
my ($tokenextras,$tokentype,$linkprot_for_login); |
my @names = ('role','symb','iptoken','ltoken','linkprot','linkkey'); |
my @names = ('role','symb','iptoken','ltoken','linkprotuser','linkprotexit','linkprot','linkkey'); |
foreach my $name (@names) { |
foreach my $name (@names) { |
if ($env{'form.'.$name} ne '') { |
if ($env{'form.'.$name} ne '') { |
if ($name eq 'ltoken') { |
if ($name eq 'ltoken') { |
Line 437 sub handler {
|
Line 472 sub handler {
|
if ($info{'linkprot'}) { |
if ($info{'linkprot'}) { |
$linkprot_for_login = $info{'linkprot'}; |
$linkprot_for_login = $info{'linkprot'}; |
$tokenextras .= '&linkprot='.&escape($info{'linkprot'}); |
$tokenextras .= '&linkprot='.&escape($info{'linkprot'}); |
|
foreach my $item ('linkprotuser','linkprotexit') { |
|
if ($info{$item}) { |
|
$tokenextras .= '&'.$item.'='.&escape($info{$item}); |
|
} |
|
} |
$tokentype = 'link'; |
$tokentype = 'link'; |
last; |
last; |
} |
} |
Line 1120 sub redirect_page {
|
Line 1160 sub redirect_page {
|
$path = '/'.$path; |
$path = '/'.$path; |
} |
} |
my $url = $protocol.'://'.$hostname.$path; |
my $url = $protocol.'://'.$hostname.$path; |
if ($env{'form.firsturl'} ne '') { |
my $args = {}; |
|
if ($env{'form.firsturl'} =~ m{^/tiny/$match_domain/\w+$}) { |
|
$url = $protocol.'://'.$hostname.$env{'form.firsturl'}; |
|
if (($env{'form.ltoken'}) || ($env{'form.linkprot'} ne '') || |
|
($env{'form.linkkey'} ne '')) { |
|
my %link_info; |
|
if ($env{'form.ltoken'}) { |
|
%link_info = &Apache::lonnet::tmpget($env{'form.ltoken'}); |
|
&Apache::lonnet::tmpdel($env{'form.ltoken'}); |
|
$args->{'only_body'} = 1; |
|
} elsif ($env{'form.linkprot'}) { |
|
$link_info{'linkprot'} = $env{'form.linkprot'}; |
|
foreach my $item ('linkprotuser','linkprotexit') { |
|
if ($env{'form.'.$item}) { |
|
$link_info{$item} = $env{'form.'.$item}; |
|
} |
|
} |
|
$args->{'only_body'} = 1; |
|
} elsif ($env{'form.linkkey'} ne '') { |
|
$link_info{'linkkey'} = $env{'form.linkkey'}; |
|
} |
|
my $token = &Apache::lonnet::tmpput(\%link_info,$desthost,'link'); |
|
unless (($token eq 'con_lost') || ($token eq 'refused') || |
|
($token eq 'unknown_cmd') || ($token eq 'no_such_host')) { |
|
$url .= '?ltoken='.$token; |
|
} |
|
} |
|
} else { |
my $querystring; |
my $querystring; |
if ($env{'form.firsturl'} =~ /[^\x00-\xFF]/) { |
if ($env{'form.firsturl'} ne '') { |
$querystring = &uri_escape_utf8($env{'form.firsturl'}); |
if ($env{'form.firsturl'} =~ /[^\x00-\xFF]/) { |
} else { |
$querystring = &uri_escape_utf8($env{'form.firsturl'}); |
$querystring = &uri_escape($env{'form.firsturl'}); |
} else { |
|
$querystring = &uri_escape($env{'form.firsturl'}); |
|
} |
|
$querystring = &HTML::Entities::encode($querystring,"'"); |
|
$querystring = '?firsturl='.$querystring; |
} |
} |
$querystring = &HTML::Entities::encode($querystring,"'"); |
|
$url .='?firsturl='.$querystring; |
|
} |
|
if (($env{'form.ltoken'}) || ($env{'form.linkkey'} ne '')) { |
|
my %link_info; |
|
if ($env{'form.ltoken'}) { |
if ($env{'form.ltoken'}) { |
$link_info{'ltoken'} = $env{'form.ltoken'}; |
my %link_info = &Apache::lonnet::tmpget($env{'form.ltoken'}); |
} elsif ($env{'form.linkkey'} ne '') { |
&Apache::lonnet::tmpdel($env{'form.ltoken'}); |
$link_info{'linkkey'} = $env{'form.linkkey'}; |
my $token = &Apache::lonnet::tmpput(\%link_info,$desthost,'link'); |
} |
unless (($token eq 'con_lost') || ($token eq 'refused') || ($token =~ /^error:/) || |
my $token = &Apache::lonnet::tmpput(\%link_info,$desthost,'link'); |
($token eq 'unknown_cmd') || ($token eq 'no_such_host')) { |
unless (($token eq 'con_lost') || ($token eq 'refused') || |
unless (($path eq '/adm/roles') || ($path eq '/adm/login')) { |
($token eq 'unknown_cmd') || ($token eq 'no_such_host')) { |
$url = $protocol.'://'.$hostname.'/adm/roles'; |
$url .= (($url=~/\?/)?'&':'?') . 'ttoken='.$token; |
} |
|
$querystring .= (($querystring =~/^\?/)?'&':'?') . 'ttoken='.$token; |
|
} |
} |
} |
|
$url .= $querystring; |
} |
} |
my $start_page = &Apache::loncommon::start_page('Switching Server ...',undef, |
$args->{'redirect'} = [0,$url]; |
{'redirect' => [0,$url],}); |
my $start_page = &Apache::loncommon::start_page('Switching Server ...',undef,$args); |
my $end_page = &Apache::loncommon::end_page(); |
my $end_page = &Apache::loncommon::end_page(); |
return $start_page.$end_page; |
return $start_page.$end_page; |
} |
} |