[LON-CAPA-cvs] cvs: loncom /auth lonuploadedacc.pm /lonnet/perl lonnet.pm
www
lon-capa-cvs@mail.lon-capa.org
Wed, 04 Dec 2002 15:23:39 -0000
www Wed Dec 4 10:23:39 2002 EDT
Modified files:
/loncom/auth lonuploadedacc.pm
/loncom/lonnet/perl lonnet.pm
Log:
Bug #786 - removed the four computer confusion:
* client box running browser
* access server running session
* home server of user who provides file
* home server of user who is logged in, which is irrelevant
Index: loncom/auth/lonuploadedacc.pm
diff -u loncom/auth/lonuploadedacc.pm:1.6 loncom/auth/lonuploadedacc.pm:1.7
--- loncom/auth/lonuploadedacc.pm:1.6 Tue Nov 12 17:37:18 2002
+++ loncom/auth/lonuploadedacc.pm Wed Dec 4 10:23:39 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Access Handler for User Files
#
-# $Id: lonuploadedacc.pm,v 1.6 2002/11/12 22:37:18 albertel Exp $
+# $Id: lonuploadedacc.pm,v 1.7 2002/12/04 15:23:39 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -28,20 +28,31 @@
package Apache::lonuploadedacc;
+#
+# The way this is supposed to work:
+#
+# User A has client machine C
+# User A is logged into LON-CAPA server S
+# needs file from user B
+# homeserver for user B is H
+#
+# This handler runs on H
+# To access a userfile:
+# Server S generates a token and puts it into the query string of URL for H
+# Client box C asks H for file with token issued by C
+# H now must ask S if token is valid, uses S's lond-command tokenauthuserfile
+
use strict;
-use Apache::Constants qw(:common :remotehost);
+use Apache::Constants qw(:common);
use Apache::lonnet();
sub handler {
my $r = shift;
- my $c = $r->connection;
my $args=$r->args;
- &Apache::loncommon::get_unprocessed_cgi($args,['token']);
+ &Apache::loncommon::get_unprocessed_cgi($args,['token','tokenissued']);
my (undef,undef,$udom,$uname,$ufile)=split(/\//,$r->uri);
$ufile=~s/^[\~\.]+//;
- my ($homeserver)=($ENV{'form.token'}=~/\_([a-zA-Z0-9]+)$/);
- my $remoteip=$c->remote_ip;
- my $remoteserver=$Apache::lonnet::iphost{$remoteip};
+ my $remoteserver=$ENV{'form.tokenissued'};
my $reply=&Apache::lonnet::reply('tokenauthuserfile:'.
$udom.'/'.$uname.'/'.$ufile.':'.$ENV{'form.token'},
$remoteserver);
@@ -49,7 +60,7 @@
return OK;
} else {
&Apache::lonnet::logthis(
-"Refused userfile access $uname at $udom for $ufile from $remoteip -> $remoteserver home $homeserver with $ENV{'form.token'}: $reply");
+"Refused userfile access $uname at $udom for $ufile with $remoteserver token $ENV{'form.token'}: $reply");
return FORBIDDEN;
}
}
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.303 loncom/lonnet/perl/lonnet.pm:1.304
--- loncom/lonnet/perl/lonnet.pm:1.303 Wed Nov 27 10:33:10 2002
+++ loncom/lonnet/perl/lonnet.pm Wed Dec 4 10:23:39 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.303 2002/11/27 15:33:10 matthew Exp $
+# $Id: lonnet.pm,v 1.304 2002/12/04 15:23:39 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -840,7 +840,8 @@
if ($uri=~/^uploaded\/([^\/]+)\/([^\/]+)\/([^\/]+)(\?\.*)*$/) {
&appenv('userfile.'.$1.'/'.$2.'/'.$3 => $ENV{'request.course.id'});
return 'http://'.$hostname{ &homeserver($2,$1)}.'/'.$uri.
- (($uri=~/\?/)?'&':'?').'token='.$token;
+ (($uri=~/\?/)?'&':'?').'token='.$token.
+ '&tokenissued='.$perlvar{'lonHostID'};
} else {
return '/adm/notfound.html';
}