--- loncom/auth/switchserver.pm 2005/10/24 21:32:43 1.1
+++ loncom/auth/switchserver.pm 2005/10/28 21:51:43 1.4
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Switch Servers Handler
#
-# $Id: switchserver.pm,v 1.1 2005/10/24 21:32:43 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 @@ sub handler {
&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");
@@ -77,9 +84,6 @@ sub handler {
&Apache::lonnet::log($env{'user.domain'},$env{'user.name'},
$env{'user.home'},
"Switch Server to $env{'form.otherserver'} with role $env{'form.role'} $ENV{'REMOTE_ADDR'}");
- &Apache::lonnet::logthis(join(' -- ',$env{'user.domain'},$env{'user.name'},
- $env{'user.home'},
- "Switch Server to $env{'form.otherserver'} with role $env{'form.role'} $ENV{'REMOTE_ADDR'}"));
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
@@ -90,12 +94,16 @@ sub handler {
$windowinfo.=&Apache::lonnavmaps::close();
# ---------------------------------------------------------------- Get handover
- my $token = &Apache::lonnet::reply('tmpput:'.join('&',$ENV{'REMOTE_ADDR'},$env{'user.domain'},$env{'user.name'},$env{'form.role'}),$env{'form.otherserver'});
- &Apache::lonnet::logthis("token is $token $switch_to");
+ my %info=('ip' => $ENV{'REMOTE_ADDR'},
+ 'domain' => $env{'user.domain'},
+ 'username' => $env{'user.name'},
+ 'role' => $env{'form.role'},
+ 'server' => $r->dir_config('lonHostID'));
+ my $token = &Apache::lonnet::tmpput(\%info,$env{'form.otherserver'});
my $switch='';
my $bodytag=&Apache::loncommon::bodytag('Switching Server ...');
# --------------------------------------------------------------- Screen Output
- my $doc=(<print(<
The LearningOnline Network with CAPA Logout
$switch
@@ -105,8 +113,7 @@ sub handler {