Diff for /loncom/auth/lonacc.pm between versions 1.39 and 1.50

version 1.39, 2003/02/28 18:14:44 version 1.50, 2003/11/21 21:27:25
Line 44  use Apache::Constants qw(:common :http : Line 44  use Apache::Constants qw(:common :http :
 use Apache::File;  use Apache::File;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
   use Apache::lonlocal;
 use CGI::Cookie();  use CGI::Cookie();
 use Fcntl qw(:flock);  use Fcntl qw(:flock);
   
Line 59  sub handler { Line 60  sub handler {
         my $lonidsdir=$r->dir_config('lonIDsDir');          my $lonidsdir=$r->dir_config('lonIDsDir');
         if ((-e "$lonidsdir/$handle.id") && ($handle ne '')) {          if ((-e "$lonidsdir/$handle.id") && ($handle ne '')) {
   
 # ------------------------------------------- Transfer profile into environment  # ------------------------------------------------------ Initialize Environment
   
               &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
   
   # --------------------------------------------------------- Initialize Language
   
       &Apache::lonlocal::get_language_handle($r);
   
   # -------------------------------------------------------------- Resource State
   
             my @profile;  
     {  
              my $idf=Apache::File->new("$lonidsdir/$handle.id");  
              flock($idf,LOCK_SH);  
              @profile=<$idf>;  
              $idf->close();  
     }  
             my $envi;  
             for ($envi=0;$envi<=$#profile;$envi++) {  
  chomp($profile[$envi]);  
  my ($envname,$envvalue)=split(/=/,$profile[$envi]);  
                 $ENV{$envname} = $envvalue;  
             }  
             $ENV{'user.environment'} = "$lonidsdir/$handle.id";  
             if ($requrl=~/^\/res\//) {              if ($requrl=~/^\/res\//) {
                $ENV{'request.state'} = "published";                 $ENV{'request.state'} = "published";
     } else {      } else {
        $ENV{'request.state'} = 'unknown';         $ENV{'request.state'} = 'unknown';
             }              }
             $ENV{'request.filename'} = $r->filename;              $ENV{'request.filename'} = $r->filename;
               $ENV{'request.noversionuri'} = &Apache::lonnet::deversion($requrl);
 # -------------------------------------------------------- Load POST parameters  # -------------------------------------------------------- Load POST parameters
   
       &Apache::loncommon::get_posted_cgi($r);
              
         my $buffer;  
   
         $r->read($buffer,$r->header_in('Content-length'));  
  unless ($buffer=~/^(\-+\w+)\s+Content\-Disposition\:\s*form\-data/si) {  
             my @pairs=split(/&/,$buffer);  
             my $pair;  
             foreach $pair (@pairs) {  
                my ($name,$value) = split(/=/,$pair);  
                $value =~ tr/+/ /;  
                $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;  
        &Apache::loncommon::add_to_env("form.$name",$value);  
             }  
         } else {  
     my $contentsep=$1;  
             my @lines = split (/\n/,$buffer);  
             my $name='';  
             my $value='';  
             my $fname='';  
             my $fmime='';  
             my $i;  
             for ($i=0;$i<=$#lines;$i++) {  
  if ($lines[$i]=~/^$contentsep/) {  
     if ($name) {  
                         chomp($value);  
  if ($fname) {  
     $ENV{"form.$name.filename"}=$fname;  
                             $ENV{"form.$name.mimetype"}=$fmime;  
                         } else {  
                             $value=~s/\s+$//s;  
                         }  
  &Apache::loncommon::add_to_env("form.$name",$value);  
                     }  
                     if ($i<$#lines) {  
  $i++;  
                         $lines[$i]=~  
  /Content\-Disposition\:\s*form\-data\;\s*name\=\"([^\"]+)\"/i;  
                         $name=$1;  
                         $value='';  
                         if ($lines[$i]=~/filename\=\"([^\"]+)\"/i) {  
    $fname=$1;  
                            if   
                             ($lines[$i+1]=~/Content\-Type\:\s*([\w\-\/]+)/i) {  
       $fmime=$1;  
                               $i++;  
    } else {  
                               $fmime='';  
                            }  
                         } else {  
     $fname='';  
                             $fmime='';  
                         }  
                         $i++;  
                     }  
                 } else {  
     $value.=$lines[$i]."\n";  
                 }  
             }  
  }  
     $ENV{'request.method'}=$ENV{'REQUEST_METHOD'};  
             $r->method_number(M_GET);  
     $r->method('GET');  
             $r->headers_in->unset('Content-length');  
   
 # ---------------------------------------------------------------- Check access  # ---------------------------------------------------------------- Check access
   
Line 177  sub handler { Line 107  sub handler {
     &Apache::lonnet::countacc($requrl);      &Apache::lonnet::countacc($requrl);
             $requrl=~/\.(\w+)$/;              $requrl=~/\.(\w+)$/;
             if ((&Apache::loncommon::fileembstyle($1) eq 'ssi') ||              if ((&Apache::loncommon::fileembstyle($1) eq 'ssi') ||
  ($requrl=~/^\/adm\/(aboutme|navmaps|smppg|bulletinboard|wrapper)/) ||   ($requrl=~/^\/adm\/.*\/(aboutme|navmaps|smppg|bulletinboard)(\?|$)/) ||
    ($requrl=~/^\/adm\/wrapper\//) ||
  ($requrl=~/^\/public\/.*\/syllabus$/)) {   ($requrl=~/^\/public\/.*\/syllabus$/)) {
 # ------------------------------------- This is serious stuff, get symb and log  # ------------------------------------- This is serious stuff, get symb and log
  my $query=$r->args;   my $query=$r->args;
Line 188  sub handler { Line 119  sub handler {
                 if ($ENV{'form.symb'}) {                  if ($ENV{'form.symb'}) {
     $symb=&Apache::lonnet::symbclean($ENV{'form.symb'});      $symb=&Apache::lonnet::symbclean($ENV{'form.symb'});
                     if (&Apache::lonnet::symbverify($symb,$requrl)) {                      if (&Apache::lonnet::symbverify($symb,$requrl)) {
                       my ($map,$mid,$murl)=split(/\_\_\_/,$symb);                        my ($map,$mid,$murl)=&Apache::lonnet::decode_symb($symb);
                       &Apache::lonnet::symblist($map,$murl => $mid,                        &Apache::lonnet::symblist($map,$murl => $mid,
                                                'last_known' => $murl);                                                 'last_known' => $murl);
     } else {      } else {
Line 199  sub handler { Line 130  sub handler {
                  return HTTP_NOT_ACCEPTABLE;                    return HTTP_NOT_ACCEPTABLE; 
                     }                      }
                 } else {                  } else {
             $symb=&Apache::lonnet::symbread;              $symb=&Apache::lonnet::symbread($requrl);
                       my ($map,$mid,$murl)=split(/\_\_\_/,$symb);
       &Apache::lonnet::symblist($map,$murl => $mid,
                                                 'last_known' => $murl);
                 }                  }
                 $ENV{'request.symb'}=$symb;                  $ENV{'request.symb'}=$symb;
                 &Apache::lonnet::courseacclog($symb);                  &Apache::lonnet::courseacclog($symb);
Line 218  sub handler { Line 152  sub handler {
     if ($requrl=~m|^/public/|      if ($requrl=~m|^/public/|
  || (&Apache::lonnet::metadata($requrl,'copyright') eq 'public')) {   || (&Apache::lonnet::metadata($requrl,'copyright') eq 'public')) {
         &Apache::lonnet::logthis('Granting public access: '.$requrl);          &Apache::lonnet::logthis('Granting public access: '.$requrl);
    my $buffer;
    $r->read($buffer,$r->header_in('Content-length'),0);
    &Apache::loncommon::get_unprocessed_cgi($buffer);
  $ENV{'user.name'}='public';   $ENV{'user.name'}='public';
         $ENV{'user.domain'}='public';          $ENV{'user.domain'}='public';
         $ENV{'request.state'} = "published";          $ENV{'request.state'} = "published";
Line 228  sub handler { Line 165  sub handler {
 # -------------------------------------------------------------- Not authorized  # -------------------------------------------------------------- Not authorized
     $requrl=~/\.(\w+)$/;      $requrl=~/\.(\w+)$/;
     if ((&Apache::loncommon::fileembstyle($1) eq 'ssi') ||      if ((&Apache::loncommon::fileembstyle($1) eq 'ssi') ||
         ($requrl=~/^\/adm\/(roles|logout)/) ||          ($requrl=~/^\/adm\/(roles|logout|email|menu|remote)/) ||
         ($requrl=~m|^/prtspool/|)) {          ($requrl=~m|^/prtspool/|)) {
 # -------------------------- Store where they wanted to go and get login screen  # -------------------------- Store where they wanted to go and get login screen
        $ENV{'request.firsturl'}=$requrl;   $ENV{'request.querystring'}=$r->args;
    $ENV{'request.firsturl'}=$requrl;
        return FORBIDDEN;         return FORBIDDEN;
    } else {     } else {
 # --------------------------------------------------------------------- Goodbye  # --------------------------------------------------------------------- Goodbye

Removed from v.1.39  
changed lines
  Added in v.1.50


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.