Diff for /rat/lonpageflip.pm between versions 1.80.8.12 and 1.80.8.13

version 1.80.8.12, 2021/03/04 01:33:43 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 556  sub handler { Line 566  sub handler {
 # ------------------------------------- Check for and display critical messages  # ------------------------------------- Check for and display critical messages
                   my ($redirect, $url) = &Apache::loncommon::critical_redirect(300);                    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;
                         }                          }

Removed from v.1.80.8.12  
changed lines
  Added in v.1.80.8.13


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