--- loncom/auth/lonracc.pm 2005/04/07 06:56:21 1.17 +++ loncom/auth/lonracc.pm 2007/02/01 06:20:34 1.18 @@ -1,7 +1,7 @@ # The LearningOnline Network # Access Handler for File Transfers # -# $Id: lonracc.pm,v 1.17 2005/04/07 06:56:21 albertel Exp $ +# $Id: lonracc.pm,v 1.18 2007/02/01 06:20:34 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,14 +36,20 @@ use IO::Socket; sub subscribed { my ($filename,$id) = @_; - my $found=0; + + return 0 if (-e "$filename.subscription"); + my $hostname=$Apache::lonnet::hostname{$id}; my (undef,undef,undef,undef,$ip) = gethostbyname($hostname); + + return 0 if (length($ip) != 4); + $ip=inet_ntoa($ip); - my $expr='^'.$id.':'.$ip.':'; - $expr =~ s/\./\\\./g; - my $sh; - if ($sh=Apache::File->new("$filename.subscription")) { + + my $expr='^'.quotemeta($id).':'.quotemeta($ip).':'; + + my $found=0; + if (my $sh=Apache::File->new("$filename.subscription")) { while (my $subline=<$sh>) { if ($subline =~ /$expr/) { $found=1; } } $sh->close(); } @@ -64,16 +70,15 @@ sub handler { return OK; } my $return; - my @ids=(); - my $id; + my @ids; - foreach $id (@{$hostids}) { + foreach my $id (@{$hostids}) { my $filename=$r->filename; my $uri =$r->uri; - if ((-e "$filename.$id") || - &subscribed($filename,$id) || - ($filename=~/\.meta$/) || - ($uri=~m|^/raw/uploaded|)) { + if (($filename=~/\.meta$/) || + ($uri=~m|^/raw/uploaded|) || + (-e "$filename.$id") || + &subscribed($filename,$id) ) { return OK; } else { $return=FORBIDDEN;