[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