--- loncom/auth/lonlogin.pm 2019/01/27 16:02:43 1.179
+++ loncom/auth/lonlogin.pm 2021/05/03 15:27:44 1.183
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Login Screen
#
-# $Id: lonlogin.pm,v 1.179 2019/01/27 16:02:43 raeburn Exp $
+# $Id: lonlogin.pm,v 1.183 2021/05/03 15:27:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -143,6 +143,10 @@ sub handler {
if ($balancer_token) {
$dest .= (($dest=~/\?/)?'&;':'?') . 'btoken='.$balancer_token;
}
+ unless ($found_server eq $lonhost) {
+ my $alias = &Apache::lonnet::use_proxy_alias($r,$found_server);
+ $hostname = $alias if ($alias ne '');
+ }
my $url = $protocol.'://'.$hostname.$dest;
my $start_page =
&Apache::loncommon::start_page('Switching Server ...',undef,
@@ -425,22 +429,36 @@ sub handler {
&Apache::lonnet::logthis('No valid logtoken for log-in page -- unable to determine hostname for hostID: '.$lonhost.'. Check entry in hosts.tab');
}
my $spares='';
- my $last;
- foreach my $hostid (sort
- {
- &Apache::lonnet::hostname($a) cmp
- &Apache::lonnet::hostname($b);
- }
- keys(%Apache::lonnet::spareid)) {
+ my (@sparehosts,%spareservers);
+ my $sparesref = &Apache::lonnet::this_host_spares($defdom);
+ if (ref($sparesref) eq 'HASH') {
+ foreach my $key (keys(%{$sparesref})) {
+ if (ref($sparesref->{$key}) eq 'ARRAY') {
+ my @sorted = sort { &Apache::lonnet::hostname($a) cmp
+ &Apache::lonnet::hostname($b);
+ } @{$sparesref->{$key}};
+ if (@sorted) {
+ if ($key eq 'primary') {
+ unshift(@sparehosts,@sorted);
+ } elsif ($key eq 'default') {
+ push(@sparehosts,@sorted);
+ }
+ }
+ }
+ }
+ }
+ foreach my $hostid (@sparehosts) {
next if ($hostid eq $lonhost);
my $hostname = &Apache::lonnet::hostname($hostid);
- next if (($last eq $hostname) || ($hostname eq ''));
- $spares.='
'.
$hostname.''.
- ' '.&mt('(preferred)').''.$/;
- $last=$hostname;
+ ' '.&mt('(preferred)').''.$/;
}
if ($spares) {
$spares.= '
';
@@ -452,23 +470,26 @@ sub handler {
&Apache::lonnet::hostname($b);
}
keys(%all_hostnames)) {
- next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid});
+ next if ($hostid eq $lonhost);
my $hostname = &Apache::lonnet::hostname($hostid);
- next if (($last eq $hostname) || ($hostname eq ''));
- $spares.='
'.
$hostname.'';
- $last=$hostname;
}
$r->print(
- ''
- .'
'.&mt('Please attempt to login to one of the following servers:') @@ -588,7 +609,7 @@ ENDSCRIPT my $omitextra; if ($headextra_exempt ne '') { my @exempt = split(',',$headextra_exempt); - my $ip = $ENV{'REMOTE_ADDR'}; + my $ip = &Apache::lonnet::get_requestor_ip(); if (grep(/^\Q$ip\E$/,@exempt)) { $omitextra = 1; } @@ -831,7 +852,7 @@ sub check_loginvia { my $output; if ($loginvia ne '') { my $noredirect; - my $ip = $ENV{'REMOTE_ADDR'}; + my $ip = &Apache::lonnet::get_requestor_ip(); if ($ip eq '127.0.0.1') { $noredirect = 1; } else {