--- loncom/auth/switchserver.pm 2005/11/29 20:59:37 1.5
+++ loncom/auth/switchserver.pm 2007/03/02 23:17:48 1.13
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Switch Servers Handler
#
-# $Id: switchserver.pm,v 1.5 2005/11/29 20:59:37 albertel Exp $
+# $Id: switchserver.pm,v 1.13 2007/03/02 23:17:48 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -47,8 +47,7 @@ sub init_env {
my $cookie;
if (!$lonid) { return undef; }
- my $handle=$lonid->value;
- $handle=~s/\W//g;
+ my $handle=&LONCAPA::clean_handle($lonid->value);
my $lonidsdir=$r->dir_config('lonIDsDir');
if ((!-e "$lonidsdir/$handle.id") || ($handle eq '')) {
$r->log_reason("Cookie $handle not valid", $r->filename);
@@ -69,10 +68,10 @@ sub handler {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['otherserver','role']);
- my $switch_to=$Apache::lonnet::hostname{$env{'form.otherserver'}};
+ 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'}};
+ $switch_to=&Apache::lonnet::hostname($env{'form.otherserver'});
}
if (!defined($switch_to)) { return FORBIDDEN; }
@@ -90,6 +89,12 @@ sub handler {
"Switch Server to $env{'form.otherserver'} with role $env{'form.role'} $ENV{'REMOTE_ADDR'}");
&Apache::loncommon::content_type($r,'text/html');
+
+ #expire the cookie
+ my $c = new CGI::Cookie(-name => 'lonID',
+ -value => '',
+ -expires => '-10y',);
+ $r->header_out('Set-cookie' => $c);
$r->send_http_header;
return OK if $r->header_only;
# -------------------------------------------------------- Menu script and info
@@ -103,20 +108,20 @@ sub handler {
'username' => $env{'user.name'},
'role' => $env{'form.role'},
'server' => $r->dir_config('lonHostID'));
+ if ($env{'request.sso.login'}) {
+ $info{'sso.login'} = $env{'request.sso.login'};
+ }
+ if ($env{'request.sso.reloginserver'}) {
+ $info{'sso.reloginserver'} = $env{'request.sso.reloginserver'};
+ }
my $token = &Apache::lonnet::tmpput(\%info,$env{'form.otherserver'});
- my $switch='';
- my $bodytag=&Apache::loncommon::bodytag('Switching Server ...');
+ my $switch='';
+ my $start_page = &Apache::loncommon::start_page('Switching Server ...',
+ $switch,
+ {'no_inline_link' => 1,});
+ my $end_page = &Apache::loncommon::end_page();
# --------------------------------------------------------------- Screen Output
- $r->print(<
- The LearningOnline Network with CAPA Logout
- $switch
-
- $bodytag
- $windowinfo
-