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

www lon-capa-cvs@mail.lon-capa.org
Thu, 01 Aug 2002 22:36:11 -0000


www		Thu Aug  1 18:36:11 2002 EDT

  Modified files:              
    /loncom/auth	lontokacc.pm 
  Log:
  Completely new version, derived from lonracc, to control access to
  userfile temp storage to registered servers only.
  
  
Index: loncom/auth/lontokacc.pm
diff -u loncom/auth/lontokacc.pm:1.3 loncom/auth/lontokacc.pm:1.4
--- loncom/auth/lontokacc.pm:1.3	Wed Jul 31 11:23:55 2002
+++ loncom/auth/lontokacc.pm	Thu Aug  1 18:36:11 2002
@@ -1,8 +1,7 @@
 # The LearningOnline Network
-# Low security Access Handler for Token-based access 
-# (clearance given by other loncapa host)
+# Access Handler for User File Transfers
 #
-# $Id: lontokacc.pm,v 1.3 2002/07/31 15:23:55 www Exp $
+# $Id: lontokacc.pm,v 1.4 2002/08/01 22:36:11 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -30,31 +29,42 @@
 package Apache::lontokacc;
 
 use strict;
-use Apache::Constants qw(:common);
+use Apache::Constants qw(:common :remotehost);
 use Apache::lonnet();
-use Apache::loncommon();
+use Apache::File();
 
 sub handler {
     my $r = shift;
-    my $query=$r->args;
-    &Apache::loncommon::get_unprocessed_cgi($query,['token','server']);
-    my $tmpinfo='no_token';
-    if (($ENV{'form.token'}) || ($ENV{'form.server'})) {
-        $tmpinfo=&Apache::lonnet::unescape(
-                   &Apache::lonnet::reply('tmpget:'.$ENV{'form.token'},
-                                                    $ENV{'form.server'}));
-        chomp($tmpinfo);
-        my $uri=$r->uri;
-        if ($tmpinfo=~/$uri$/) {
-	   return OK;
-        }
+    my $reqhost;
+    unless ($reqhost=$r->get_remote_host(REMOTE_DOUBLE_REV)) {
+       $r->log_reason("Spoof request");
+       return FORBIDDEN;
     }
-    $r->log_reason("Invalid token-based access:".$r->uri.' for '.$tmpinfo.'.',
-        $r->filename); 
+    my $readline;
+    my $lontabdir=$r->dir_config('lonTabDir');
+    {
+       my $fh;
+       unless ($fh=Apache::File->new("$lontabdir/hosts.tab")) {
+          $r->log_reason("Could not find host tab file");
+          return FORBIDDEN;
+       }
+       while ($readline=<$fh>) {
+          my ($id,$domain,$role,$name,$ip)=split(/:/,$readline);
+          if ($name =~ /$reqhost/i) { return OK; }
+       }
+
+    }
+    $r->log_reason("Invalid request for user file transfer from $reqhost", 
+                   $r->filename); 
     return FORBIDDEN;
 }
 
 1;
 __END__
+
+
+
+
+