[LON-CAPA-cvs] cvs: loncom /auth lonracc.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Thu, 01 Feb 2007 06:20:37 -0000
albertel Thu Feb 1 01:20:37 2007 EDT
Modified files:
/loncom/auth lonracc.pm
Log:
- performace enhancements (no need to do hostname lookups in the uploaded case or if the .subscription file doesn't exist or its a meta file)
- some style
- notice when gethostbyname fails and fail gracefully rather than ISE
Index: loncom/auth/lonracc.pm
diff -u loncom/auth/lonracc.pm:1.17 loncom/auth/lonracc.pm:1.18
--- loncom/auth/lonracc.pm:1.17 Thu Apr 7 02:56:21 2005
+++ loncom/auth/lonracc.pm Thu Feb 1 01:20:34 2007
@@ -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 @@
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 @@
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;