--- rat/lonpageflip.pm 2018/12/27 20:11:16 1.99
+++ rat/lonpageflip.pm 2021/04/29 17:45:25 1.103
@@ -2,7 +2,7 @@
#
# Page flip handler
#
-# $Id: lonpageflip.pm,v 1.99 2018/12/27 20:11:16 raeburn Exp $
+# $Id: lonpageflip.pm,v 1.103 2021/04/29 17:45:25 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -304,7 +304,7 @@ sub first_answerable_ressymb {
}
sub check_http_req {
- my ($srcref) = @_;
+ my ($srcref,$hostname) = @_;
return unless (ref($srcref) eq 'SCALAR');
my $usehttp;
if ($env{'request.course.id'}) {
@@ -313,14 +313,17 @@ sub check_http_req {
if (($$srcref =~ m{^\Q/public/$cdom/$cnum/syllabus\E($|\?)}) &&
($ENV{'SERVER_PORT'} == 443) &&
($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';
$usehttp = 1;
}
} elsif (($$srcref =~ m{^\Q/adm/wrapper/ext/\E(?!https:)}) &&
($ENV{'SERVER_PORT'} == 443)) {
- unless (&Apache::lonnet::uses_sts()) {
- $$srcref .= (($$srcref =~/\?/)? '&':'?') . 'usehttp=1';
+ unless ((&Apache::lonnet::uses_sts()) ||
+ (&Apache::lonnet::waf_allssl($hostname))) {
+ my ($url,$anchor) = ($$srcref =~ /^([^\#]+)(?:|(\#[^\#]+))$/);
+ $$srcref = $url . (($$srcref =~/\?/)? '&':'?') . 'usehttp=1' .$anchor;
$usehttp = 1;
}
}
@@ -389,7 +392,7 @@ sub handler {
}
} elsif ($direction eq 'firstanswerable') {
my $furl = &first_answerable_ressymb();
- my $usehttp = &check_http_req(\$furl);
+ my $usehttp = &check_http_req(\$furl,$hostname);
if (($usehttp) && ($hostname ne '')) {
$furl='http://'.$hostname.$furl;
} else {
@@ -430,12 +433,12 @@ sub handler {
my $preamble = '
'.
'
'.
&mt('Your course session is being updated because of recent changes by course personnel.').
- ' '.&mt('Please be patient.').'
'.
+ ' '.&mt('Please be patient').'.
'.
'';
%prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble);
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Updating course'));
my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum");
- &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished'));
+ &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished!'));
if ($ferr) {
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
my $requrl = $r->uri;
@@ -454,7 +457,7 @@ sub handler {
}
if ($direction eq 'firstres') {
my $furl=&first_accessible_resource();
- my $usehttp = &check_http_req(\$furl);
+ my $usehttp = &check_http_req(\$furl,$hostname);
if (($usehttp) && ($hostname ne '')) {
$furl='http://'.$hostname.$furl;
} else {
@@ -471,7 +474,7 @@ sub handler {
return REDIRECT;
}
}
- if ($direction eq 'return') {
+ if ($direction eq 'return') {
# -------------------------------------------------------- Return to last known
my ($newloc,$usehttp);
if (($last) && (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db',
@@ -480,11 +483,15 @@ sub handler {
$id=$hash{'map_pc_'.&Apache::lonnet::clutter($murl)}.'.'.$id;
$newloc=$hash{'src_'.$id};
if ($newloc) {
- $usehttp = &check_http_req(\$newloc);
+ $usehttp = &check_http_req(\$newloc,$hostname);
if ($hash{'encrypted_'.$id}) {
$newloc=&Apache::lonenc::encrypted($newloc);
- } elsif ($newloc =~ m{^(/adm/wrapper/ext/[^\#]+)\#([^\#]+)$}) {
- $newloc = $1.&escape('#').$2;
+ }
+ if ($newloc =~ m{^(/adm/wrapper/ext/[^\#]+)(?:|(\#[^\#]+))$}) {
+ my ($url,$anchor) = ($1,$2);
+ if ($anchor) {
+ $newloc = $url.(($url=~/\?/)?'&':'?').'symb='.&escape($last).$anchor;
+ }
}
} else {
$newloc='/adm/navmaps';
@@ -520,7 +527,6 @@ sub handler {
$last=$hash{'last_known'};
untie(%hash);
}
- my $newloc;
if ($last) {
$currenturl=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($last))[2]);
} else {
@@ -619,7 +625,7 @@ sub handler {
# ------------------------------------- Check for and display critical messages
my ($redirect, $url) = &Apache::loncommon::critical_redirect(300,'flip');
unless ($redirect) {
- my $usehttp = &check_http_req(\$redirecturl);
+ my $usehttp = &check_http_req(\$redirecturl,$hostname);
if (($usehttp) && ($hostname ne '')) {
$url='http://'.$hostname.$redirecturl;
} else {
@@ -686,7 +692,7 @@ $lt{'pick'}:
ENDSTART
foreach my $id (@possibilities) {
my $src = $multichoicehash{'src_'.$id};
- my $usehttp = &check_http_req(\$src);
+ my $usehttp = &check_http_req(\$src,$hostname);
if (($usehttp) && ($hostname ne '')) {
$src = 'http://'.$hostname.$src;
}
500 Internal Server Error
Internal Server Error
The server encountered an internal error or
misconfiguration and was unable to complete
your request.
Please contact the server administrator at
root@localhost to inform them of the time this error occurred,
and the actions you performed just before this error.
More information about this error may be available
in the server error log.