[LON-CAPA-cvs] cvs: loncom /auth migrateuser.pm switchserver.pm /lonnet/perl lonnet.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Fri, 28 Oct 2005 21:51:50 -0000
albertel Fri Oct 28 17:51:50 2005 EDT
Modified files:
/loncom/auth migrateuser.pm switchserver.pm
/loncom/lonnet/perl lonnet.pm
Log:
- switch server can now pick a destination server if one isn't specified
- migrate user can redirect to roles screen if no role specified
Index: loncom/auth/migrateuser.pm
diff -u loncom/auth/migrateuser.pm:1.2 loncom/auth/migrateuser.pm:1.3
--- loncom/auth/migrateuser.pm:1.2 Tue Oct 25 15:14:32 2005
+++ loncom/auth/migrateuser.pm Fri Oct 28 17:51:43 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Starts a user off based of an existing token.
#
-# $Id: migrateuser.pm,v 1.2 2005/10/25 19:14:32 albertel Exp $
+# $Id: migrateuser.pm,v 1.3 2005/10/28 21:51:43 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -71,12 +71,12 @@
my $home=&Apache::lonnet::homeserver($data{'username'},$data{'domain'});
if ($home =~ /(con_lost|no_such_host)/) { return &goto_login($r); }
- if (!defined($data{'role'})) {
+ if (!$data{'role'}) {
&Apache::lonauth::success($r,$data{'username'},$data{'domain'},
$home,'/adm/roles');
return OK;
}
-
+
my $cookie=&Apache::lonauth::success($r,$data{'username'},$data{'domain'},
$home,'noredirect');
$r->header_out('Set-cookie',"lonID=$cookie; path=/");
Index: loncom/auth/switchserver.pm
diff -u loncom/auth/switchserver.pm:1.3 loncom/auth/switchserver.pm:1.4
--- loncom/auth/switchserver.pm:1.3 Tue Oct 25 15:14:32 2005
+++ loncom/auth/switchserver.pm Fri Oct 28 17:51:43 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Switch Servers Handler
#
-# $Id: switchserver.pm,v 1.3 2005/10/25 19:14:32 albertel Exp $
+# $Id: switchserver.pm,v 1.4 2005/10/28 21:51:43 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -65,9 +65,16 @@
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['otherserver','role']);
+
my $switch_to=$Apache::lonnet::hostname{$env{'form.otherserver'}};
+ if (!$env{'form.otherserver'}) {
+ $env{'form.otherserver'}=&Apache::lonnet::spareserver(30000,undef,1);
+ $switch_to=$Apache::lonnet::hostname{$env{'form.otherserver'}};
+ }
if (!defined($switch_to)) { return FORBIDDEN; }
- if (!exists($env{'user.role.'.$env{'form.role'}})) { return FORBIDDEN; }
+
+ if ($env{'form.role'} &&
+ !exists($env{'user.role.'.$env{'form.role'}})) { return FORBIDDEN; }
#remove session env, and log event
unlink($r->dir_config('lonIDsDir')."/$handle.id");
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.669 loncom/lonnet/perl/lonnet.pm:1.670
--- loncom/lonnet/perl/lonnet.pm:1.669 Thu Oct 27 15:47:39 2005
+++ loncom/lonnet/perl/lonnet.pm Fri Oct 28 17:51:50 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.669 2005/10/27 19:47:39 raeburn Exp $
+# $Id: lonnet.pm,v 1.670 2005/10/28 21:51:50 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -443,15 +443,15 @@
# ------------------------------ Find server with least workload from spare.tab
sub spareserver {
- my ($loadpercent,$userloadpercent) = @_;
+ my ($loadpercent,$userloadpercent,$want_server_name) = @_;
my $tryserver;
my $spareserver='';
if ($userloadpercent !~ /\d/) { $userloadpercent=0; }
my $lowestserver=$loadpercent > $userloadpercent?
$loadpercent : $userloadpercent;
- foreach $tryserver (keys %spareid) {
- my $loadans=reply('load',$tryserver);
- my $userloadans=reply('userload',$tryserver);
+ foreach $tryserver (keys(%spareid)) {
+ my $loadans=&reply('load',$tryserver);
+ my $userloadans=&reply('userload',$tryserver);
if ($loadans !~ /\d/ && $userloadans !~ /\d/) {
next; #didn't get a number from the server
}
@@ -468,7 +468,11 @@
$answer = $userloadans;
}
if (($answer =~ /\d/) && ($answer<$lowestserver)) {
- $spareserver="http://$hostname{$tryserver}";
+ if ($want_server_name) {
+ $spareserver=$tryserver;
+ } else {
+ $spareserver="http://$hostname{$tryserver}";
+ }
$lowestserver=$answer;
}
}
@@ -3113,6 +3117,8 @@
$thisallowed='F';
}
}
+ } else {
+ $thisallowed='';
}
}