File:  [LON-CAPA] / loncom / lonnet / perl / lonrep.pm
Revision 1.5: download - view: text, annotated - select for diffs
Thu Jun 14 17:54:04 2001 UTC (23 years ago) by www
Branches: MAIN
CVS tags: stable_2001_fall, HEAD
Does ignore directories (listings ending on /).

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

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