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>