[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__
+
+
+
+
+