[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;