--- loncom/auth/lonlogin.pm 2018/07/04 16:58:19 1.173 +++ loncom/auth/lonlogin.pm 2018/11/24 16:19:04 1.174 @@ -1,7 +1,7 @@ # The LearningOnline Network # Login Screen # -# $Id: lonlogin.pm,v 1.173 2018/07/04 16:58:19 raeburn Exp $ +# $Id: lonlogin.pm,v 1.174 2018/11/24 16:19:04 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -106,6 +106,30 @@ sub handler { return OK; } + $env{'form.firsturl'} =~ s/(`)/'/g; + +# Check if browser sent a LON-CAPA load balancer cookie (and this is a balancer) + + my ($found_server,$balancer_cookie) = &Apache::lonnet::check_for_balancer_cookie($r,1); + if ($found_server) { + my $hostname = &Apache::lonnet::hostname($found_server); + if ($hostname ne '') { + my $protocol = $Apache::lonnet::protocol{$found_server}; + $protocol = 'http' if ($protocol ne 'https'); + my $dest = '/adm/roles'; + if ($env{'form.firsturl'} ne '') { + $dest = $env{'form.firsturl'}; + } + my $url = $protocol.'://'.$hostname.$dest; + my $start_page = + &Apache::loncommon::start_page('Switching Server ...',undef, + {'redirect' => [0,$url],}); + my $end_page = &Apache::loncommon::end_page(); + $r->print($start_page.$end_page); + return OK; + } + } + # # If browser sent an old cookie for which the session file had been removed # check if configuration for user's domain has a portal URL set. If so @@ -123,8 +147,6 @@ sub handler { } } - $env{'form.firsturl'} =~ s/(`)/'/g; - # -------------------------------- Prevent users from attempting to login twice if ($handle ne '') { &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);