[LON-CAPA-cvs] cvs: loncom /auth lonracc.pm lontokacc.pm

albertel lon-capa-cvs@mail.lon-capa.org
Thu, 10 Feb 2005 22:30:56 -0000


albertel		Thu Feb 10 17:30:56 2005 EDT

  Modified files:              
    /loncom/auth	lonracc.pm lontokacc.pm 
  Log:
  - more delayed IP rsoultion work
  
  
Index: loncom/auth/lonracc.pm
diff -u loncom/auth/lonracc.pm:1.15 loncom/auth/lonracc.pm:1.16
--- loncom/auth/lonracc.pm:1.15	Sun Feb  6 02:23:40 2005
+++ loncom/auth/lonracc.pm	Thu Feb 10 17:30:56 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Access Handler for File Transfers
 #
-# $Id: lonracc.pm,v 1.15 2005/02/06 07:23:40 albertel Exp $
+# $Id: lonracc.pm,v 1.16 2005/02/10 22:30:56 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -53,31 +53,31 @@
 sub handler {
     my $r = shift;
     my $reqhost = $r->get_remote_host(REMOTE_NOLOOKUP);
-    my $netaddr=inet_aton($reqhost);
-    ($reqhost) = gethostbyaddr($netaddr,AF_INET);
-    if (!$reqhost) {
-	$r->log_reason("Unable to do hostname $reqhost lookup for ".$r->get_remote_host(REMOTE_NOLOOKUP));
+    my %iphost=&Apache::lonnet::get_iphost();
+    my $hostids=$iphost{$reqhost};
+    if (!$hostids && $reqhost ne '127.0.0.1' ) {
+	$r->log_reason("Unable to find a host for ".
+		       $r->get_remote_host(REMOTE_NOLOOKUP));
 	return FORBIDDEN;
     }
-    if ($reqhost eq 'localhost.localdomain') {
+    if ($reqhost eq '127.0.0.1') {
 	return OK;
     }
     my $return;
     my @ids=();
     my $id;
-    foreach $id (keys %Apache::lonnet::hostname) {
-	if ($Apache::lonnet::hostname{$id} =~ /^\Q$reqhost\E$/i) {
-	    my $filename=$r->filename;
-	    my $uri =$r->uri;
-	    if ((-e "$filename.$id") ||
-		&subscribed($filename,$id) ||
-		($filename=~/\.meta$/) ||
-		($uri=~m|^/raw/uploaded|)) {
-		return OK;
-	    } else {
-		$return=FORBIDDEN;
-		push(@ids,$id);
-	    }
+
+    foreach $id (@{$hostids}) {
+	my $filename=$r->filename;
+	my $uri =$r->uri;
+	if ((-e "$filename.$id") ||
+	    &subscribed($filename,$id) ||
+	    ($filename=~/\.meta$/) ||
+	    ($uri=~m|^/raw/uploaded|)) {
+	    return OK;
+	} else {
+	    $return=FORBIDDEN;
+	    push(@ids,$id);
 	}
     }
     if ($return == FORBIDDEN) {
Index: loncom/auth/lontokacc.pm
diff -u loncom/auth/lontokacc.pm:1.13 loncom/auth/lontokacc.pm:1.14
--- loncom/auth/lontokacc.pm:1.13	Mon Feb  7 12:04:53 2005
+++ loncom/auth/lontokacc.pm	Thu Feb 10 17:30:56 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Access Handler for User File Transfers
 #
-# $Id: lontokacc.pm,v 1.13 2005/02/07 17:04:53 albertel Exp $
+# $Id: lontokacc.pm,v 1.14 2005/02/10 22:30:56 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -37,13 +37,14 @@
 sub handler {
     my $r = shift;
     my $reqhost = $r->get_remote_host(REMOTE_NOLOOKUP);
-    my $netaddr=inet_aton($reqhost);
-    ($reqhost) = gethostbyaddr($netaddr,AF_INET);
-    if (!$reqhost) {
-	$r->log_reason("Unable to do hostname $reqhost lookup for ".$r->get_remote_host(REMOTE_NOLOOKUP));
+    my %iphost=&Apache::lonnet::get_iphost();
+    my $hostids=$iphost{$reqhost};
+    if (!$hostids && $reqhost ne '127.0.0.1' ) {
+	$r->log_reason("Unable to find a host for ".
+		       $r->get_remote_host(REMOTE_NOLOOKUP));
 	return FORBIDDEN;
     }
-    if ($reqhost eq 'localhost.localdomain') {
+    if ($reqhost eq '127.0.0.1') {
        return OK;
     }
     my $readline;
@@ -57,8 +58,10 @@
        while ($readline=<$fh>) {
 	   $readline=~s/\s*$//;
 	   my ($id,$domain,$role,$name)=split(/:/,$readline);
-	   if ($name =~ /\Q$reqhost\E/i) {
-	       return OK; 
+	   foreach my $hostid (@{$hostids}) {
+	       if ($name =~ /^\Q$hostid\E$/i) {
+		   return OK; 
+	       }
 	   }
        }