--- loncom/lonenc.pm 2006/04/07 22:15:34 1.14 +++ loncom/lonenc.pm 2006/09/28 20:47:13 1.17 @@ -1,7 +1,7 @@ # The LearningOnline Network # URL translation for encrypted filenames # -# $Id: lonenc.pm,v 1.14 2006/04/07 22:15:34 albertel Exp $ +# $Id: lonenc.pm,v 1.17 2006/09/28 20:47:13 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -32,7 +32,8 @@ use strict; use Apache::lonnet; use Crypt::IDEA; use Time::HiRes qw(gettimeofday); - +use LONCAPA; + sub encryptseed { my $seed=$env{'course.'.$env{'request.course.id'}.'.internal.encseed'}; $seed=~s/[^0-9a-f]/0/g; @@ -45,11 +46,13 @@ sub unencrypted { my $uri=shift; $uri=~s/^\/enc\/(\d+)\///; my $cmdlength=$1; + # strip any added extension + $uri=~s/\.[^.]*//; my $seed=&encryptseed(); unless ($seed) { return '/'.$uri; } - $uri=&Apache::lonnet::unescape($uri); + $uri=&unescape($uri); my $cipher=new IDEA $seed; my $decuri=''; for (my $encidx=0;$encidxencrypt(substr($uri,$encidx,8))); } - return '/enc/'.$cmdlength.'/'.&Apache::lonnet::escape($encuri); + return '/enc/'.$cmdlength.'/'.&escape($encuri); } sub check_encrypt { @@ -128,7 +131,10 @@ sub encrypt_ref { if (!$value) { next; } my $href=&Apache::lonnet::hreflocation($Apache::lonxml::pwd[-1],$value); if ($href !~ /^http:/) { + # IE really wants an extension + my ($extension) = ($href =~ m/(\.[^.]*)$/); $href = &Apache::lonenc::encrypted($href,$force_enc); + $href .= $extension; } $token->[2]->{$name}=$href; }