Diff for /loncom/lonenc.pm between versions 1.20 and 1.26

version 1.20, 2006/12/27 17:11:08 version 1.26, 2020/03/15 23:04:05
Line 34  use Crypt::IDEA; Line 34  use Crypt::IDEA;
 use Time::HiRes qw(gettimeofday);  use Time::HiRes qw(gettimeofday);
 use LONCAPA;  use LONCAPA;
     
   
   #
   #  If a module makes multiple SSI calls and some of the ssi calls result in a
   #  resource for an encoded URL, and this can be done in an unprivileged role,
   #  there must be a mechanism t oreset the 'request.enc' environment variable.
   #  This sub centralizes that mechanism:
   #
   sub reset_enc {
       $env{'request.enc'} = 0;
   }
   
 sub encryptseed {  sub encryptseed {
     my ($cid) = @_;      my ($cid) = @_;
     if (!defined($cid)) {      if (!defined($cid)) {
Line 56  sub encryptseed { Line 67  sub encryptseed {
         $seed=substr($seed.$seed,0,32);          $seed=substr($seed.$seed,0,32);
         return pack("H32",$seed);          return pack("H32",$seed);
     } else {      } else {
         return;          return pack("H32",1);
     }      }
 }  }
   
Line 105  sub remove_noise { Line 116  sub remove_noise {
 }  }
   
 sub encrypted {  sub encrypted {
     my ($uri,$force_enc) = @_;      my ($uri,$force_enc,$cid) = @_;
     if (!$force_enc && $env{'request.role.adv'}) { return($uri); }      if (!$force_enc && $env{'request.role.adv'}) { return($uri); }
     my $seed=&encryptseed();      my $seed=&encryptseed($cid);
     unless ($seed) {      unless ($seed) {
  return $uri;   return $uri;
     }      }
Line 151  sub encrypt_ref { Line 162  sub encrypt_ref {
     my $html;      my $html;
     if ($force_enc || $env{'request.enc'}) {      if ($force_enc || $env{'request.enc'}) {
  while (my ($name,$value)= each(%{ $elements })) {   while (my ($name,$value)= each(%{ $elements })) {
     if (!$value) { next; }      next if (!$value); 
       next if ($value =~ /^\w+:/); # explict javascript: or http: link
     my $href=&Apache::lonnet::hreflocation($Apache::lonxml::pwd[-1],$value);      my $href=&Apache::lonnet::hreflocation($Apache::lonxml::pwd[-1],$value);
     if ($href !~ /^http:/) {      if ($href !~ /^https?\:/) {
  # IE really wants an extension   # IE really wants an extension
  my ($extension) = ($href =~ m/(\.[^.]*)$/);   my ($extension) = ($href =~ m/(\.[^.]*)$/);
  $href = &Apache::lonenc::encrypted($href,$force_enc);   my $newhref = &Apache::lonenc::encrypted($href,$force_enc);
  $href .= $extension;   unless ($newhref eq $href) {
       $href = $newhref.$extension;
    }
     }      }
     $token->[2]->{$name}=$href;      $token->[2]->{$name}=$href;
  }   }

Removed from v.1.20  
changed lines
  Added in v.1.26


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