File:  [LON-CAPA] / loncom / lonnet / perl / lonrep.pm
Revision 1.4: download - view: text, annotated - select for diffs
Thu Oct 5 21:34:59 2000 UTC (23 years, 9 months ago) by www
Branches: MAIN
CVS tags: HEAD
Now does not display "File Not Found" if no lonID cookie present

    1: # The LearningOnline Network
    2: # Replication Manager
    3: # (Access Handler for File Transfers
    4: # (lonacc: Cookie Based Access Handler
    5: # 5/21/99,5/22,5/29,5/31,6/15 Gerd Kortemeyer)
    6: # 6/16,6/18 Gerd Kortemeyer)
    7: # 6/18,6/21,6/26,6/28,6/29,6/30,
    8: # 7/2,7/3,7/9,7/10,7/12,
    9: # 01/06,01/14,10/5 Gerd Kortemeyer
   10: 
   11: package Apache::lonrep;
   12: 
   13: use strict;
   14: use Apache::Constants qw(:common :http);
   15: use Apache::lonnet();
   16: use Apache::File();
   17: use CGI::Cookie();
   18: 
   19: sub handler {
   20:     my $r = shift;
   21:     if (-e $r->finfo) {
   22:       return OK;
   23:     } else {
   24:       my $filename=$r->filename.$r->path_info;
   25:       if (-e "$filename.in.transfer") {
   26: 	sleep 10;
   27:         $r->filename($filename);
   28:         if (-e $r->finfo) {
   29: 	   return OK;
   30:         } else {
   31: 	   $r->log_reason("Waiting for file transfer timed out",$filename);
   32: 	   return HTTP_SERVICE_UNAVAILABLE;
   33:         }
   34:       } else {
   35:           my $response=Apache::lonnet::repcopy($filename);
   36:           if ($response==OK) {
   37: 	      $r->filename($filename);
   38:               return OK;
   39:           }
   40:           my %cookies=CGI::Cookie->parse($r->header_in('Cookie'));
   41:           my $lonid=$cookies{'lonID'};
   42:           if ($lonid) {
   43: 	     $r->log_reason('Replication failed for '.$lonid->value);
   44:              return $response;
   45: 	  } else {
   46: 	     $r->log_reason('Replication failed for unknown user'); 
   47:              return FORBIDDEN;
   48:           } 
   49:       }
   50:     }
   51: }
   52: 
   53: 1;
   54: __END__
   55: 
   56: 
   57: 
   58: 
   59: 
   60: 
   61: 
   62: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>