--- loncom/auth/lonlogin.pm 2019/08/04 12:18:44 1.158.2.9 +++ loncom/auth/lonlogin.pm 2020/10/24 19:49:06 1.158.2.10 @@ -1,7 +1,7 @@ # The LearningOnline Network # Login Screen # -# $Id: lonlogin.pm,v 1.158.2.9 2019/08/04 12:18:44 raeburn Exp $ +# $Id: lonlogin.pm,v 1.158.2.10 2020/10/24 19:49:06 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -328,22 +328,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.= '
'; @@ -355,23 +369,25 @@ 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:')