--- loncom/auth/lonlogin.pm 2019/01/27 16:02:43 1.179 +++ loncom/auth/lonlogin.pm 2020/12/18 15:23:03 1.182 @@ -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.182 2020/12/18 15:23:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -425,22 +425,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 +466,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( - '' - .'' + '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' + .'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">' + .'<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>' .&mt('The LearningOnline Network with CAPA') .'' .'' .'

'.&mt('The LearningOnline Network with CAPA').'

' - .'' + .'broken icon' .'

'.&mt('This LON-CAPA server is temporarily not available for login.').'

'); if ($spares) { $r->print('

'.&mt('Please attempt to login to one of the following servers:') @@ -588,7 +605,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 +848,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 {