Annotation of loncom/lonnet/perl/lonrep.pm, revision 1.5
1.1 albertel 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,
1.2 www 8: # 7/2,7/3,7/9,7/10,7/12,
1.5 ! www 9: # 01/06,01/14,10/5,
! 10: # 06/14/01 Gerd Kortemeyer
1.1 albertel 11:
12: package Apache::lonrep;
13:
14: use strict;
15: use Apache::Constants qw(:common :http);
16: use Apache::lonnet();
17: use Apache::File();
1.4 www 18: use CGI::Cookie();
1.1 albertel 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;
1.5 ! www 26: if ($filename=~/\/$/) { return OK; }
1.2 www 27: if (-e "$filename.in.transfer") {
1.1 albertel 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 {
1.3 www 37: my $response=Apache::lonnet::repcopy($filename);
38: if ($response==OK) {
39: $r->filename($filename);
1.4 www 40: return OK;
1.3 www 41: }
1.4 www 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: }
1.1 albertel 51: }
1.2 www 52: }
1.1 albertel 53: }
54:
55: 1;
56: __END__
57:
58:
59:
60:
61:
62:
63:
64:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>