--- loncom/lontrans.pm 2004/04/01 20:18:29 1.8 +++ loncom/lontrans.pm 2011/10/21 16:03:06 1.14 @@ -1,7 +1,7 @@ # The LearningOnline Network # URL translation for User Files # -# $Id: lontrans.pm,v 1.8 2004/04/01 20:18:29 raeburn Exp $ +# $Id: lontrans.pm,v 1.14 2011/10/21 16:03:06 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -32,26 +32,26 @@ use strict; use Apache::Constants qw(:common :remotehost); use Apache::lonnet(); use Apache::File(); -use Apache::loncommon; +use LONCAPA; + sub handler { my $r = shift; + # FIXME line remove when mod_perl fixes BUG#4948 + $r->notes->set('error-notes' => ''); if ($r->uri=~m|^(/raw)?/uploaded/|) { my $fn = $r->uri(); $fn=~s/^\/raw//; my (undef,undef,$udom,$uname,@ufile)=split(/\//,$fn); - $ufile[-1]=~s/^[\~\.]+//; + if (@ufile) { $ufile[-1]=~s/^[\~\.]+//; } my $chome=&Apache::lonnet::homeserver($uname,$udom); - if ($chome eq $Apache::lonnet::perlvar{'lonHostID'}) { - $r->filename(&Apache::loncommon::propath($udom,$uname). - '/userfiles/'.(join('/',@ufile))); + my $allowed=0; + my @ids=&Apache::lonnet::current_machine_ids(); + foreach my $id (@ids) { if ($id eq $chome) { $allowed=1; } } + if ($allowed) { + $r->filename(&propath($udom,$uname). + '/userfiles/'.(join('/',@ufile))); } - } elsif ($r->uri=~m|^/~|) { - #internal authentication, needs fixup. - my $fn = $r->uri(); # non users do not get the full path request - # through SCRIPT_FILENAME - $fn=~s|^/~(\w+)|/home/$1/public_html|; - $r->filename($fn); } else { return DECLINED; } return OK; }