--- loncom/auth/lonacc.pm 2002/02/25 21:22:51 1.27 +++ loncom/auth/lonacc.pm 2002/06/15 19:45:26 1.33 @@ -1,7 +1,7 @@ # The LearningOnline Network # Cookie Based Access Handler # -# $Id: lonacc.pm,v 1.27 2002/02/25 21:22:51 www Exp $ +# $Id: lonacc.pm,v 1.33 2002/06/15 19:45:26 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -100,11 +100,7 @@ sub handler { $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; - if ($ENV{"form.$name"}) { - $ENV{"form.$name"}.=','.$value; - } else { - $ENV{"form.$name"}=$value; - } + &Apache::loncommon::add_to_env("form.$name",$value); } } else { my $contentsep=$1; @@ -124,7 +120,7 @@ sub handler { } else { $value=~s/\s+$//s; } - $ENV{"form.$name"}=$value; + &Apache::loncommon::add_to_env("form.$name",$value); } if ($i<$#lines) { $i++; @@ -176,7 +172,27 @@ sub handler { $requrl=~/\.(\w+)$/; if (&Apache::loncommon::fileembstyle($1) eq 'ssi') { # ------------------------------------- This is serious stuff, get symb and log - my $symb=&Apache::lonnet::symbread; + my $query=$r->args; + my $symb; + if ($query) { + &Apache::loncommon::get_unprocessed_cgi($query,['symb']); + } + if ($ENV{'form.symb'}) { + $symb=&Apache::lonnet::symbclean($ENV{'form.symb'}); + if (&Apache::lonnet::symbverify($symb,$requrl)) { + my ($map,$mid,$murl)=split(/\_\_\_/,$symb); + &Apache::lonnet::symblist($map,$murl => $mid, + 'last_known' => $murl); + } else { + $r->log_reason('Invalid symb for '.$requrl.': '. + $symb); + $ENV{'user.error.msg'}= + "$requrl:bre:1:1:Invalid Access"; + return HTTP_NOT_ACCEPTABLE; + } + } else { + $symb=&Apache::lonnet::symbread; + } $ENV{'request.symb'}=$symb; &Apache::lonnet::courseacclog($symb); } else {