--- loncom/auth/switchserver.pm 2005/10/24 21:35:16 1.2 +++ 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.2 2005/10/24 21:35:16 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"); @@ -87,7 +94,12 @@ 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'}); + 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