version 1.80.8.11.2.2, 2021/03/04 13:56:51
|
version 1.80.8.13, 2021/12/14 21:34:45
|
Line 231 sub first_accessible_resource {
|
Line 231 sub first_accessible_resource {
|
if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db', |
if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db', |
&GDBM_READER(),0640)) { |
&GDBM_READER(),0640)) { |
$furl=$hash{'first_url'}; |
$furl=$hash{'first_url'}; |
my %args; |
my (%args,$url,$argstr); |
my ($url,$args) = split(/\?/,$furl); |
if ($furl =~ m{^/enc/}) { |
foreach my $pair (split(/\&/,$args)) { |
($url,$argstr) = split(/\?/,&Apache::lonenc::unencrypted($furl)); |
|
} else { |
|
($url,$argstr) = split(/\?/,$furl); |
|
} |
|
foreach my $pair (split(/\&/,$argstr)) { |
my ($name,$value) = split(/=/,$pair); |
my ($name,$value) = split(/=/,$pair); |
$args{&unescape($name)} = &unescape($value); |
$args{&unescape($name)} = &unescape($value); |
} |
} |
Line 241 sub first_accessible_resource {
|
Line 245 sub first_accessible_resource {
|
# Wow, we cannot see this ... move forward to the next one that we can see |
# Wow, we cannot see this ... move forward to the next one that we can see |
my ($newrid,$newmap)=&move($hash{'first_rid'},$hash{'first_mapurl'},'forward'); |
my ($newrid,$newmap)=&move($hash{'first_rid'},$hash{'first_mapurl'},'forward'); |
# Build the new URL |
# Build the new URL |
my ($newmapid,$newresid)=split(/\./,$newrid); |
if ($newrid eq '') { |
my $symb=&Apache::lonnet::encode_symb($newmap,$newresid,$hash{'src_'.$newrid}); |
$furl = '/adm/navmaps'; |
$furl=&add_get_param($hash{'src_'.$newrid},{ 'symb' => $symb }); |
} else { |
if ($hash{'encrypted_'.$newrid}) { |
my ($newmapid,$newresid)=split(/\./,$newrid); |
$furl=&Apache::lonenc::encrypted($furl); |
my $symb=&Apache::lonnet::encode_symb($newmap,$newresid,$hash{'src_'.$newrid}); |
|
$furl=&add_get_param($hash{'src_'.$newrid},{ 'symb' => $symb }); |
|
if ($hash{'encrypted_'.$newrid}) { |
|
$furl=&Apache::lonenc::encrypted($furl); |
|
} |
} |
} |
} |
} |
untie(%hash); |
untie(%hash); |
return $furl; |
return $furl; |
} else { |
} else { |
Line 256 sub first_accessible_resource {
|
Line 264 sub first_accessible_resource {
|
} |
} |
|
|
sub check_http_req { |
sub check_http_req { |
my ($srcref) = @_; |
my ($srcref,$hostname) = @_; |
return unless (ref($srcref) eq 'SCALAR'); |
return unless (ref($srcref) eq 'SCALAR'); |
my $usehttp; |
my $usehttp; |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
Line 265 sub check_http_req {
|
Line 273 sub check_http_req {
|
if (($$srcref =~ m{^\Q/public/$cdom/$cnum/syllabus\E($|\?)}) && |
if (($$srcref =~ m{^\Q/public/$cdom/$cnum/syllabus\E($|\?)}) && |
($ENV{'SERVER_PORT'} == 443) && |
($ENV{'SERVER_PORT'} == 443) && |
($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { |
($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) { |
unless (&Apache::lonnet::uses_sts()) { |
unless ((&Apache::lonnet::uses_sts()) || |
|
(&Apache::lonnet::waf_allssl($hostname))) { |
$$srcref .= (($$srcref =~/\?/)? '&':'?') . 'usehttp=1'; |
$$srcref .= (($$srcref =~/\?/)? '&':'?') . 'usehttp=1'; |
$usehttp = 1; |
$usehttp = 1; |
} |
} |
} elsif (($$srcref =~ m{^\Q/adm/wrapper/ext/\E(?!https:)}) && |
} elsif (($$srcref =~ m{^\Q/adm/wrapper/ext/\E(?!https:)}) && |
($ENV{'SERVER_PORT'} == 443)) { |
($ENV{'SERVER_PORT'} == 443)) { |
unless (&Apache::lonnet::uses_sts()) { |
unless ((&Apache::lonnet::uses_sts()) || |
|
(&Apache::lonnet::waf_allssl($hostname))) { |
my ($url,$anchor) = ($$srcref =~ /^([^\#]+)(?:|(\#[^\#]+))$/); |
my ($url,$anchor) = ($$srcref =~ /^([^\#]+)(?:|(\#[^\#]+))$/); |
$$srcref = $url . (($$srcref =~/\?/)? '&':'?') . 'usehttp=1' .$anchor; |
$$srcref = $url . (($$srcref =~/\?/)? '&':'?') . 'usehttp=1' .$anchor; |
$usehttp = 1; |
$usehttp = 1; |
Line 391 sub handler {
|
Line 401 sub handler {
|
} |
} |
if ($direction eq 'firstres') { |
if ($direction eq 'firstres') { |
my $furl=&first_accessible_resource(); |
my $furl=&first_accessible_resource(); |
my $usehttp = &check_http_req(\$furl); |
my $usehttp = &check_http_req(\$furl,$hostname); |
if (($usehttp) && ($hostname ne '')) { |
if (($usehttp) && ($hostname ne '')) { |
$furl='http://'.$hostname.$furl; |
$furl='http://'.$hostname.$furl; |
} else { |
} else { |
Line 417 sub handler {
|
Line 427 sub handler {
|
$id=$hash{'map_pc_'.&Apache::lonnet::clutter($murl)}.'.'.$id; |
$id=$hash{'map_pc_'.&Apache::lonnet::clutter($murl)}.'.'.$id; |
$newloc=$hash{'src_'.$id}; |
$newloc=$hash{'src_'.$id}; |
if ($newloc) { |
if ($newloc) { |
$usehttp = &check_http_req(\$newloc); |
$usehttp = &check_http_req(\$newloc,$hostname); |
if ($hash{'encrypted_'.$id}) { |
if ($hash{'encrypted_'.$id}) { |
$newloc=&Apache::lonenc::encrypted($newloc); |
$newloc=&Apache::lonenc::encrypted($newloc); |
} |
} |
Line 554 sub handler {
|
Line 564 sub handler {
|
&Apache::lonnet::linklog($redirecturl,$currenturl); |
&Apache::lonnet::linklog($redirecturl,$currenturl); |
} |
} |
# ------------------------------------- Check for and display critical messages |
# ------------------------------------- Check for and display critical messages |
my ($redirect, $url) = &Apache::loncommon::critical_redirect(300,'flip'); |
my ($redirect, $url) = &Apache::loncommon::critical_redirect(300); |
unless ($redirect) { |
unless ($redirect) { |
my $usehttp = &check_http_req(\$redirecturl); |
my $usehttp = &check_http_req(\$redirecturl,$hostname); |
if (($usehttp) && ($hostname ne '')) { |
if (($usehttp) && ($hostname ne '')) { |
$url='http://'.$hostname.$redirecturl; |
$url='http://'.$hostname.$redirecturl; |
} else { |
} else { |
Line 617 $lt{'pick'}:
|
Line 627 $lt{'pick'}:
|
ENDSTART |
ENDSTART |
foreach my $id (@possibilities) { |
foreach my $id (@possibilities) { |
my $src = $multichoicehash{'src_'.$id}; |
my $src = $multichoicehash{'src_'.$id}; |
my $usehttp = &check_http_req(\$src); |
my $usehttp = &check_http_req(\$src,$hostname); |
if (($usehttp) && ($hostname ne '')) { |
if (($usehttp) && ($hostname ne '')) { |
$src = 'http://'.$hostname.$src; |
$src = 'http://'.$hostname.$src; |
} |
} |