--- 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 { ENDDOCUMENT -&Apache::lonnet::logthis($doc); - $r->print($doc); + &Apache::lonnet::flushcourselogs(); return OK; }