[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='';
 	}
     }