--- loncom/lonnet/perl/lonnet.pm 2002/05/06 13:52:53 1.212 +++ loncom/lonnet/perl/lonnet.pm 2002/05/07 19:16:15 1.213 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.212 2002/05/06 13:52:53 www Exp $ +# $Id: lonnet.pm,v 1.213 2002/05/07 19:16:15 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1139,6 +1139,7 @@ sub store { if ($stuname) { $home=&homeserver($stuname,$domain); } + $symb=&symbclean($symb); if (!$symb) { unless ($symb=&symbread()) { return ''; } } &devalidate($symb); @@ -1169,6 +1170,7 @@ sub cstore { if ($stuname) { $home=&homeserver($stuname,$domain); } + $symb=&symbclean($symb); if (!$symb) { unless ($symb=&symbread()) { return ''; } } &devalidate($symb); @@ -1204,7 +1206,7 @@ sub restore { if (!$symb) { unless ($symb=escape(&symbread())) { return ''; } } else { - $symb=&escape($symb); + $symb=&escape(&symbclean($symb)); } if (!$namespace) { unless ($namespace=$ENV{'request.course.id'}) { @@ -2521,17 +2523,39 @@ sub symblist { sub symbverify { my ($symb,$thisfn)=@_; + $thisfn=&declutter($thisfn); + +# &logthis("Symb verify: $symb $thisfn"); + + my ($map,$resid,$url)=split(/\_\_\_/,$symb); + unless (&symbclean($url) eq &symbclean($thisfn)) { return 0; } + return 1; + + my %bighash; + my $okay=0; + if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', + &GDBM_READER,0640)) { + + untie(%bighash); + } + return $okay; } # --------------------------------------------------------------- Clean-up symb sub symbclean { my $symb=shift; + +# &logthis("Symb in: $symb"); + # remove version from map $symb=~s/\.(\d+)\.(\w+)\_\_\_/\.$2\_\_\_/; # remove version from URL $symb=~s/\.(\d+)\.(\w+)$/\.$2/; + +# &logthis("Symb out: $symb"); + return $symb; }