[LON-CAPA-cvs] cvs: loncom /auth lonlogin.pm
raeburn
raeburn at source.lon-capa.org
Fri Oct 16 19:27:45 EDT 2020
raeburn Fri Oct 16 23:27:45 2020 EDT
Modified files:
/loncom/auth lonlogin.pm
Log:
- When server is unavailable for login because of local lonc/lond problem:
- Reinstate pre-2.2.2 behavior whereby list of other potential servers
featured "preferred" servers first.
- "Preferred" list from domain config for "User session hosting/offloading"
for the server, instead of from spare.tab file.
- satisfy w3c validation
- links are to https or http as appropriate from data in dns_hosts.tab
Index: loncom/auth/lonlogin.pm
diff -u loncom/auth/lonlogin.pm:1.179 loncom/auth/lonlogin.pm:1.180
--- loncom/auth/lonlogin.pm:1.179 Sun Jan 27 16:02:43 2019
+++ loncom/auth/lonlogin.pm Fri Oct 16 23:27:45 2020
@@ -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.180 2020/10/16 23:27:45 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -425,22 +425,36 @@
&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, at sorted);
+ } elsif ($key eq 'default') {
+ push(@sparehosts, at sorted);
+ }
+ }
+ }
+ }
+ }
+ foreach my $hostid (@sparehosts) {
next if ($hostid eq $lonhost);
my $hostname = &Apache::lonnet::hostname($hostid);
- next if (($last eq $hostname) || ($hostname eq ''));
- $spares.='<br /><font size="+1"><a href="http://'.
+ next if (($hostname eq '') || ($spareservers{$hostname}));
+ $spareservers{$hostname} = 1;
+ my $protocol = $Apache::lonnet::protocol{$hostid};
+ $protocol = 'http' if ($protocol ne 'https');
+ $spares.='<br /><span style="font-size: larger;"><a href="'.$protocol.'://'.
$hostname.
'/adm/login?domain='.$authdomain.'">'.
$hostname.'</a>'.
- ' '.&mt('(preferred)').'</font>'.$/;
- $last=$hostname;
+ ' '.&mt('(preferred)').'</span>'.$/;
}
if ($spares) {
$spares.= '<br />';
@@ -452,23 +466,25 @@
&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.='<br /><a href="http://'.
+ next if (($hostname eq '') || ($spareservers{$hostname}));
+ my $protocol = $Apache::lonnet::protocol{$hostid};
+ $protocol = 'http' if ($protocol ne 'https');
+ $spares.='<br /><a href="'.$protocol.'://'.
$hostname.
'/adm/login?domain='.$authdomain.'">'.
$hostname.'</a>';
- $last=$hostname;
}
$r->print(
- '<html>'
- .'<head><title>'
+ '<!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')
.'</title></head>'
.'<body bgcolor="#FFFFFF">'
.'<h1>'.&mt('The LearningOnline Network with CAPA').'</h1>'
- .'<img src="/adm/lonKaputt/lonlogo_broken.gif" align="right" />'
+ .'<img src="/adm/lonKaputt/lonlogo_broken.gif" alt="broken icon" align="right" />'
.'<h3>'.&mt('This LON-CAPA server is temporarily not available for login.').'</h3>');
if ($spares) {
$r->print('<p>'.&mt('Please attempt to login to one of the following servers:')
More information about the LON-CAPA-cvs
mailing list