version 1.1, 2004/03/31 04:38:06
|
version 1.2, 2004/03/31 05:29:23
|
Line 55 sub handler {
|
Line 55 sub handler {
|
return FORBIDDEN; |
return FORBIDDEN; |
} |
} |
|
|
|
sub encryptseed { |
|
my $seed=$ENV{'course.'.$ENV{'request.course.id'}.'.internal.encseed'}; |
|
$seed=~s/[^0-9a-f]/0/g; |
|
$seed.='0123456789abcdef'; |
|
$seed=substr($seed.$seed,0,32); |
|
return pack("H32",$seed); |
|
} |
|
|
sub unencrypted { |
sub unencrypted { |
my $uri=shift; |
my $uri=shift; |
$uri=~s/^\/enc\/(\d+)\///; |
$uri=~s/^\/enc\/(\d+)\///; |
&Apache::lonnet::logthis($uri); |
|
my $cmdlength=$1; |
my $cmdlength=$1; |
unless ($ENV{'course.'.$ENV{'request.course.id'}.'.internal.encseed'}) { |
my $seed=&encryptseed(); |
|
unless ($seed) { |
return '/'.$uri; |
return '/'.$uri; |
} |
} |
$uri=&Apache::lonnet::unescape($uri); |
$uri=&Apache::lonnet::unescape($uri); |
my $cipher= |
my $cipher=new IDEA $seed; |
new IDEA $ENV{'course.'.$ENV{'request.course.id'}.'.internal.encseed'}; |
|
&Apache::lonnet::logthis($ENV{'course.'.$ENV{'request.course.id'}.'.internal.encseed'}); |
|
my $decuri=''; |
my $decuri=''; |
for (my $encidx=0;$encidx<length($uri);$encidx+=16) { |
for (my $encidx=0;$encidx<length($uri);$encidx+=16) { |
$decuri.=$cipher->decrypt( |
$decuri.=$cipher->decrypt( |
Line 78 sub unencrypted {
|
Line 84 sub unencrypted {
|
|
|
sub encrypted { |
sub encrypted { |
my $uri=shift; |
my $uri=shift; |
|
my $seed=&encryptseed(); |
|
unless ($seed) { |
|
return $uri; |
|
} |
my $cmdlength=length($uri); |
my $cmdlength=length($uri); |
|
$uri.='00000000'; |
my $encuri=''; |
my $encuri=''; |
my $cipher= |
my $cipher=new IDEA $seed; |
new IDEA $ENV{'course.'.$ENV{'request.course.id'}.'.internal.encseed'}; |
|
for (my $encidx=0;$encidx<=$cmdlength;$encidx+=8) { |
for (my $encidx=0;$encidx<=$cmdlength;$encidx+=8) { |
$encuri.=unpack("H16", |
$encuri.=unpack("H16", |
$cipher->encrypt(substr($uri,$encidx,8))); |
$cipher->encrypt(substr($uri,$encidx,8))); |