Diff for /loncom/auth/lonlogin.pm between versions 1.143 and 1.158.2.6.2.1

version 1.143, 2010/08/26 08:10:47 version 1.158.2.6.2.1, 2017/10/14 20:59:35
Line 38  use Apache::lonlocal; Line 38  use Apache::lonlocal;
 use Apache::migrateuser();  use Apache::migrateuser();
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA;  use LONCAPA;
   use CGI::Cookie();
     
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 46  sub handler { Line 47  sub handler {
  (join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'},   (join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'},
       $ENV{'REDIRECT_QUERY_STRING'}),        $ENV{'REDIRECT_QUERY_STRING'}),
  ['interface','username','domain','firsturl','localpath','localres',   ['interface','username','domain','firsturl','localpath','localres',
   'token','role','symb']);    'token','role','symb','iptoken']);
     if (!defined($env{'form.firsturl'})) {      if (!defined($env{'form.firsturl'})) {
         &Apache::lonacc::get_posted_cgi($r,['firsturl']);          &Apache::lonacc::get_posted_cgi($r,['firsturl']);
     }      }
Line 56  sub handler { Line 57  sub handler {
  return &Apache::migrateuser::handler($r);   return &Apache::migrateuser::handler($r);
     }      }
   
   # For "public user" - remove any exising "public" cookie, as user really wants to log-in
       my ($handle,$lonidsdir,$expirepub,$userdom);
       unless ($r->header_only) {
           $handle = &Apache::lonnet::check_for_valid_session($r,'lonID',undef,\$userdom);
           if ($handle ne '') {
               $lonidsdir=$r->dir_config('lonIDsDir');
               if ($handle=~/^publicuser\_/) {
                   unlink($r->dir_config('lonIDsDir')."/$handle.id");
                   undef($handle);
                   undef($userdom);
                   $expirepub = 1;
               }
           }
       }
   
     &Apache::loncommon::no_cache($r);      &Apache::loncommon::no_cache($r);
     &Apache::lonlocal::get_language_handle($r);      &Apache::lonlocal::get_language_handle($r);
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
       if ($expirepub) {
           my $c = new CGI::Cookie(-name    => 'lonID',
                                   -value   => '',
                                   -expires => '-10y',);
           $r->header_out('Set-cookie' => $c);
       } elsif (($handle eq '') && ($userdom ne '')) {
           my $c = new CGI::Cookie(-name    => 'lonID',
                                   -value   => '',
                                   -expires => '-10y',);
           $r->headers_out->add('Set-cookie' => $c);
       }
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
   
 # Are we re-routing?  # Are we re-routing?
     if (-e '/home/httpd/html/lon-status/reroute.txt') {      my $londocroot = $r->dir_config('lonDocRoot'); 
       if (-e "$londocroot/lon-status/reroute.txt") {
  &Apache::lonauth::reroute($r);   &Apache::lonauth::reroute($r);
  return OK;   return OK;
     }      }
   
   #
   # If browser sent an old cookie for which the session file had been removed
   # check if configuration for user's domain has a portal URL set.  If so
   # switch user's log-in to the portal.
   #
   
       if (($handle eq '') && ($userdom ne '')) {
           my %domdefaults = &Apache::lonnet::get_domain_defaults($userdom);
           if ($domdefaults{'portal_def'} =~ /^https?\:/) {
               my $start_page = &Apache::loncommon::start_page('Switching Server ...',undef,
                                             {'redirect' => [0,$domdefaults{'portal_def'}],});
               my $end_page   = &Apache::loncommon::end_page();
               $r->print($start_page.$end_page);
               return OK;
           }
       }
   
     $env{'form.firsturl'} =~ s/(`)/'/g;      $env{'form.firsturl'} =~ s/(`)/'/g;
   
 # -------------------------------- Prevent users from attempting to login twice  # -------------------------------- Prevent users from attempting to login twice
Line 91  sub handler { Line 136  sub handler {
             }              }
     $r->print(      $r->print(
                   $start_page                    $start_page
                  .'<h1>'.&mt('You are already logged in!').'</h1>'                   .'<p class="LC_warning">'.&mt('You are already logged in!').'</p>'
                  .'<p>'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].',                   .'<p>'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].',
                   '<a href="'.$dest.'">','</a>','<a href="/adm/logout">','</a>').'</p>'                    '<a href="'.$dest.'">','</a>','<a href="/adm/logout">','</a>').'</p>'
                  .$end_page                   .$end_page
Line 102  sub handler { Line 147  sub handler {
   
 # ---------------------------------------------------- No valid token, continue  # ---------------------------------------------------- No valid token, continue
   
  # ---------------------------- Not possible to really login to domain "public"  # ---------------------------- Not possible to really login to domain "public"
     if ($env{'form.domain'} eq 'public') {      if ($env{'form.domain'} eq 'public') {
  $env{'form.domain'}='';   $env{'form.domain'}='';
  $env{'form.username'}='';   $env{'form.username'}='';
     }      }
   
   # ------ Is this page requested because /adm/migrateuser detected an IP change?
       my %sessiondata;
       if ($env{'form.iptoken'}) {
           %sessiondata = &Apache::lonnet::tmpget($env{'form.iptoken'});
           unless ($sessiondata{'sessionserver'}) {
               my $delete = &Apache::lonnet::tmpdel($env{'form.iptoken'});
               delete($env{'form.iptoken'});
           }
       }
 # ----------------------------------------------------------- Process Interface  # ----------------------------------------------------------- Process Interface
     $env{'form.interface'}=~s/\W//g;      $env{'form.interface'}=~s/\W//g;
   
     my $httpbrowser=$ENV{"HTTP_USER_AGENT"};      (undef,undef,undef,undef,undef,undef,my $clientmobile) =
           &Apache::loncommon::decode_user_agent();
   
     my $iconpath=       my $iconpath= 
  &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL'));   &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL'));
   
     my $lonhost = $r->dir_config('lonHostID');      my $lonhost = $r->dir_config('lonHostID');
     my $domain = &Apache::lonnet::default_login_domain();      my $domain = &Apache::lonnet::default_login_domain();
       my $defdom = $domain;
     if ($lonhost ne '') {      if ($lonhost ne '') {
         my $redirect = &check_loginvia($domain,$lonhost);          unless ($sessiondata{'sessionserver'}) {
         if ($redirect) {              my $redirect = &check_loginvia($domain,$lonhost);
             $r->print($redirect);              if ($redirect) {
             return OK;                  $r->print($redirect);
         }                   return OK;
               }
           }
     }      }
   
     if (($env{'form.domain'}) &&       if (($sessiondata{'domain'}) &&
           (&Apache::lonnet::domain($env{'form.domain'},'description'))) {
           $domain=$sessiondata{'domain'};
       } elsif (($env{'form.domain'}) && 
  (&Apache::lonnet::domain($env{'form.domain'},'description'))) {   (&Apache::lonnet::domain($env{'form.domain'},'description'))) {
  $domain=$env{'form.domain'};   $domain=$env{'form.domain'};
     }      }
   
     my $role    = $r->dir_config('lonRole');      my $role    = $r->dir_config('lonRole');
     my $loadlim = $r->dir_config('lonLoadLim');      my $loadlim = $r->dir_config('lonLoadLim');
       my $uloadlim= $r->dir_config('lonUserLoadLim');
     my $servadm = $r->dir_config('lonAdmEMail');      my $servadm = $r->dir_config('lonAdmEMail');
     my $tabdir  = $r->dir_config('lonTabDir');      my $tabdir  = $r->dir_config('lonTabDir');
     my $include = $r->dir_config('lonIncludes');      my $include = $r->dir_config('lonIncludes');
Line 139  sub handler { Line 203  sub handler {
     my $host_name = &Apache::lonnet::hostname($lonhost);      my $host_name = &Apache::lonnet::hostname($lonhost);
   
 # --------------------------------------------- Default values for login fields  # --------------------------------------------- Default values for login fields
       
     my $authusername=($env{'form.username'}?$env{'form.username'}:'');      my ($authusername,$authdomain);
     my $authdomain=($env{'form.domain'}?$env{'form.domain'}:$domain);      if ($sessiondata{'username'}) {
           $authusername=$sessiondata{'username'};
       } else {
           $env{'form.username'} = &Apache::loncommon::cleanup_html($env{'form.username'});
           $authusername=($env{'form.username'}?$env{'form.username'}:'');
       }
       if ($sessiondata{'domain'}) {
           $authdomain=$sessiondata{'domain'};
       } else {
           $env{'form.domain'} = &Apache::loncommon::cleanup_html($env{'form.domain'});
           $authdomain=($env{'form.domain'}?$env{'form.domain'}:$domain);
       }
   
 # ---------------------------------------------------------- Determine own load  # ---------------------------------------------------------- Determine own load
     my $loadavg;      my $loadavg;
Line 150  sub handler { Line 225  sub handler {
  $loadavg=<$loadfile>;   $loadavg=<$loadfile>;
     }      }
     $loadavg =~ s/\s.*//g;      $loadavg =~ s/\s.*//g;
     my $loadpercent=sprintf("%.1f",100*$loadavg/$loadlim);  
     my $userloadpercent=&Apache::lonnet::userload();      my ($loadpercent,$userloadpercent);
       if ($loadlim) {
           $loadpercent=sprintf("%.1f",100*$loadavg/$loadlim);
       }
       if ($uloadlim) {
           $userloadpercent=&Apache::lonnet::userload();
       }
   
     my $firsturl=      my $firsturl=
     ($env{'request.firsturl'}?$env{'request.firsturl'}:$env{'form.firsturl'});      ($env{'request.firsturl'}?$env{'request.firsturl'}:$env{'form.firsturl'});
Line 189  sub handler { Line 270  sub handler {
         }          }
         $tokenextras .= '&symb='.&escape($env{'form.symb'});          $tokenextras .= '&symb='.&escape($env{'form.symb'});
     }      }
       if ($env{'form.iptoken'}) {
           if (!$tokenextras) {
               $tokenextras = '&&';
           }
           $tokenextras .= '&iptoken='.&escape($env{'form.iptoken'});
       }
     my $logtoken=Apache::lonnet::reply(      my $logtoken=Apache::lonnet::reply(
        'tmpput:'.$ukey.$lkey.'&'.$firsturl.$tokenextras,         'tmpput:'.$ukey.$lkey.'&'.$firsturl.$tokenextras,
        $lonhost);         $lonhost);
   
 # ------------------- If we cannot talk to ourselves, we are in serious trouble  # -- If we cannot talk to ourselves, or hostID does not map to a hostname
   #    we are in serious trouble
   
     if ($logtoken eq 'con_lost') {      if (($logtoken eq 'con_lost') || ($logtoken eq 'no_such_host')) {
           if ($logtoken eq 'no_such_host') {
               &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 $spares='';
  my $last;   my $last;
         foreach my $hostid (sort          foreach my $hostid (sort
Line 206  sub handler { Line 297  sub handler {
     keys(%Apache::lonnet::spareid)) {      keys(%Apache::lonnet::spareid)) {
             next if ($hostid eq $lonhost);              next if ($hostid eq $lonhost);
     my $hostname = &Apache::lonnet::hostname($hostid);      my $hostname = &Apache::lonnet::hostname($hostid);
     next if ($last eq $hostname);      next if (($last eq $hostname) || ($hostname eq ''));
             $spares.='<br /><font size="+1"><a href="http://'.              $spares.='<br /><font size="+1"><a href="http://'.
                 $hostname.                  $hostname.
                 '/adm/login?domain='.$authdomain.'">'.                  '/adm/login?domain='.$authdomain.'">'.
Line 214  sub handler { Line 305  sub handler {
                 ' '.&mt('(preferred)').'</font>'.$/;                  ' '.&mt('(preferred)').'</font>'.$/;
     $last=$hostname;      $last=$hostname;
         }          }
 $spares.= '<br />';          if ($spares) {
 my %all_hostnames = &Apache::lonnet::all_hostnames();              $spares.= '<br />';
 foreach my $hostid (sort          }
           my %all_hostnames = &Apache::lonnet::all_hostnames();
           foreach my $hostid (sort
     {      {
  &Apache::lonnet::hostname($a) cmp   &Apache::lonnet::hostname($a) cmp
     &Apache::lonnet::hostname($b);      &Apache::lonnet::hostname($b);
     }      }
     keys(%all_hostnames)) {      keys(%all_hostnames)) {
     next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid});              next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid});
     my $hostname = &Apache::lonnet::hostname($hostid);              my $hostname = &Apache::lonnet::hostname($hostid);
     next if ($last eq $hostname);              next if (($last eq $hostname) || ($hostname eq ''));
     $spares.='<br /><a href="http://'.              $spares.='<br /><a href="http://'.
  $hostname.               $hostname.
  '/adm/login?domain='.$authdomain.'">'.               '/adm/login?domain='.$authdomain.'">'.
  $hostname.'</a>';               $hostname.'</a>';
     $last=$hostname;              $last=$hostname;
 }           }
 $r->print(           $r->print(
    '<html>'     '<html>'
   .'<head><title>'    .'<head><title>'
   .&mt('The LearningOnline Network with CAPA')    .&mt('The LearningOnline Network with CAPA')
Line 239  $r->print( Line 332  $r->print(
   .'<body bgcolor="#FFFFFF">'    .'<body bgcolor="#FFFFFF">'
   .'<h1>'.&mt('The LearningOnline Network with CAPA').'</h1>'    .'<h1>'.&mt('The LearningOnline Network with CAPA').'</h1>'
   .'<img src="/adm/lonKaputt/lonlogo_broken.gif" align="right" />'    .'<img src="/adm/lonKaputt/lonlogo_broken.gif" align="right" />'
   .'<h3>'.&mt('This LON-CAPA server is temporarily not available for login.').'</h3>'    .'<h3>'.&mt('This LON-CAPA server is temporarily not available for login.').'</h3>');
   .'<p>'.&mt('Please attempt to login to one of the following servers:').'</p>'          if ($spares) {
   .$spares              $r->print('<p>'.&mt('Please attempt to login to one of the following servers:')
   .'</body>'                       .'</p>'
   .'</html>'                       .$spares);
 );          }
 return OK;          $r->print('</body>'
 }                   .'</html>'
           );
           return OK;
       }
   
 # ----------------------------------------------- Apparently we are in business  # ----------------------------------------------- Apparently we are in business
 $servadm=~s/\,/\<br \/\>/g;      $servadm=~s/\,/\<br \/\>/g;
   
 # ----------------------------------------------------------- Front page design  # ----------------------------------------------------------- Front page design
 my $pgbg=&Apache::loncommon::designparm('login.pgbg',$domain);      my $pgbg=&Apache::loncommon::designparm('login.pgbg',$domain);
 my $font=&Apache::loncommon::designparm('login.font',$domain);      my $font=&Apache::loncommon::designparm('login.font',$domain);
 my $link=&Apache::loncommon::designparm('login.link',$domain);      my $link=&Apache::loncommon::designparm('login.link',$domain);
 my $vlink=&Apache::loncommon::designparm('login.vlink',$domain);      my $vlink=&Apache::loncommon::designparm('login.vlink',$domain);
 my $alink=&Apache::loncommon::designparm('login.alink',$domain);      my $alink=&Apache::loncommon::designparm('login.alink',$domain);
 my $mainbg=&Apache::loncommon::designparm('login.mainbg',$domain);      my $mainbg=&Apache::loncommon::designparm('login.mainbg',$domain);
 my $loginbox_bg=&Apache::loncommon::designparm('login.sidebg',$domain);      my $loginbox_bg=&Apache::loncommon::designparm('login.sidebg',$domain);
 my $loginbox_header_bgcol=&Apache::loncommon::designparm('login.bgcol',$domain);      my $loginbox_header_bgcol=&Apache::loncommon::designparm('login.bgcol',$domain);
 my $loginbox_header_textcol=&Apache::loncommon::designparm('login.textcol',$domain);      my $loginbox_header_textcol=&Apache::loncommon::designparm('login.textcol',$domain);
 my $logo=&Apache::loncommon::designparm('login.logo',$domain);      my $logo=&Apache::loncommon::designparm('login.logo',$domain);
 my $img=&Apache::loncommon::designparm('login.img',$domain);      my $img=&Apache::loncommon::designparm('login.img',$domain);
 my $domainlogo=&Apache::loncommon::domainlogo($domain);      my $domainlogo=&Apache::loncommon::domainlogo($domain);
 my $showbanner = 1;      my $showbanner = 1;
 my $showmainlogo = 1;      my $showmainlogo = 1;
 if (defined(&Apache::loncommon::designparm('login.showlogo_img',$domain))) {      if (defined(&Apache::loncommon::designparm('login.showlogo_img',$domain))) {
     $showbanner = &Apache::loncommon::designparm('login.showlogo_img',$domain);          $showbanner = &Apache::loncommon::designparm('login.showlogo_img',$domain);
 }      }
 if (defined(&Apache::loncommon::designparm('login.showlogo_logo',$domain))) {      if (defined(&Apache::loncommon::designparm('login.showlogo_logo',$domain))) {
     $showmainlogo = &Apache::loncommon::designparm('login.showlogo_logo',$domain);          $showmainlogo = &Apache::loncommon::designparm('login.showlogo_logo',$domain);
 }      }
 my $showadminmail=&Apache::loncommon::designparm('login.adminmail',$domain);      my $showadminmail;
 my $showcoursecat =      my @possdoms = &Apache::lonnet::current_machine_domains();
 &Apache::loncommon::designparm('login.coursecatalog',$domain);      if (grep(/^\Q$domain\E$/,@possdoms)) {
 my $shownewuserlink =           $showadminmail=&Apache::loncommon::designparm('login.adminmail',$domain);
 &Apache::loncommon::designparm('login.newuser',$domain);      }
 my $now=time;      my $showcoursecat =
 my $js = (<<ENDSCRIPT);          &Apache::loncommon::designparm('login.coursecatalog',$domain);
       my $shownewuserlink = 
           &Apache::loncommon::designparm('login.newuser',$domain);
       my $showhelpdesk =
           &Apache::loncommon::designparm('login.helpdesk',$domain);
       my $now=time;
       my $js = (<<ENDSCRIPT);
   
 <script type="text/javascript" language="JavaScript">  <script type="text/javascript" language="JavaScript">
 // <![CDATA[  // <![CDATA[
Line 295  lextkey=this.document.client.elements.le Line 397  lextkey=this.document.client.elements.le
 initkeys();  initkeys();
   
 this.document.server.elements.upass0.value  this.document.server.elements.upass0.value
     =crypted(this.document.client.elements.upass$now.value.substr(0,15));      =getCrypted(this.document.client.elements.upass$now.value);
 this.document.server.elements.upass1.value  
     =crypted(this.document.client.elements.upass$now.value.substr(15,15));  
 this.document.server.elements.upass2.value  
     =crypted(this.document.client.elements.upass$now.value.substr(30,15));  
   
 this.document.client.elements.uname.value='';  this.document.client.elements.uname.value='';
 this.document.client.elements.upass$now.value='';  this.document.client.elements.upass$now.value='';
Line 309  return false; Line 407  return false;
 }  }
   
 function enableInput() {  function enableInput() {
     this.document.client.elements.upass$now.removeAttribute("readonly");      this.document.client.elements.upass$now.removeAttribute("readOnly");
     this.document.client.elements.uname.removeAttribute("readonly");      this.document.client.elements.uname.removeAttribute("readOnly");
     this.document.client.elements.udom.removeAttribute("readonly");      this.document.client.elements.udom.removeAttribute("readOnly");
     return;      return;
 }  }
   
Line 322  ENDSCRIPT Line 420  ENDSCRIPT
   
 # --------------------------------------------------- Print login screen header  # --------------------------------------------------- Print login screen header
   
 my %add_entries = (      my %add_entries = (
        bgcolor      => "$mainbg",         bgcolor      => "$mainbg",
        text         => "$font",         text         => "$font",
        link         => "$link",         link         => "$link",
Line 330  my %add_entries = ( Line 428  my %add_entries = (
        alink        => "$alink",         alink        => "$alink",
                onload       => 'javascript:enableInput();',);                 onload       => 'javascript:enableInput();',);
   
 $r->print(&Apache::loncommon::start_page('The LearningOnline Network with CAPA Login',$js,      my ($lonhost_in_use,$headextra,$headextra_exempt,@hosts,%defaultdomconf);
       @hosts = &Apache::lonnet::current_machine_ids();
       $lonhost_in_use = $lonhost;
       if (@hosts > 1) {
           foreach my $hostid (@hosts) {
               if (&Apache::lonnet::host_domain($hostid) eq $defdom) {
                   $lonhost_in_use = $hostid;
                   last;
               }
           }
       }
       %defaultdomconf = &Apache::loncommon::get_domainconf($defdom);
       $headextra = $defaultdomconf{$defdom.'.login.headtag_'.$lonhost_in_use};
       $headextra_exempt = $defaultdomconf{$domain.'.login.headtag_exempt_'.$lonhost_in_use};
       if ($headextra) {
           my $omitextra;
           if ($headextra_exempt ne '') {
               my @exempt = split(',',$headextra_exempt);
               my $ip = $ENV{'REMOTE_ADDR'};
               if (grep(/^\Q$ip\E$/,@exempt)) {
                   $omitextra = 1;
               }
           }
           unless ($omitextra) {
               my $confname = $defdom.'-domainconfig';
               if ($headextra =~ m{^\Q/res/$defdom/$confname/login/headtag/$lonhost_in_use/\E}) {
                   my $extra = &Apache::lonnet::getfile(&Apache::lonnet::filelocation("",$headextra));
                   unless ($extra eq '-1') {
                       $js .= "\n".$extra."\n";
                   }
               }
           }
       }
   
       $r->print(&Apache::loncommon::start_page('The LearningOnline Network with CAPA Login',$js,
        { 'redirect'       => [$expire,'/adm/roles'],          { 'redirect'       => [$expire,'/adm/roles'], 
  'add_entries' => \%add_entries,   'add_entries' => \%add_entries,
  'only_body'   => 1,}));   'only_body'   => 1,}));
   
 # ----------------------------------------------------------------------- Texts  # ----------------------------------------------------------------------- Texts
   
 my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
           'un'       => 'Username',            'un'       => 'Username',
           'pw'       => 'Password',            'pw'       => 'Password',
           'dom'      => 'Domain',            'dom'      => 'Domain',
Line 355  my %lt=&Apache::lonlocal::texthash( Line 487  my %lt=&Apache::lonlocal::texthash(
        );         );
 # -------------------------------------------------- Change password field name  # -------------------------------------------------- Change password field name
   
 my $forgotpw = &forgotpwdisplay(%lt);      my $forgotpw = &forgotpwdisplay(%lt);
 $forgotpw .= '<br />' if $forgotpw;      $forgotpw .= '<br />' if $forgotpw;
 my $loginhelp = &loginhelpdisplay($authdomain,%lt);      my $loginhelp = &Apache::lonauth::loginhelpdisplay($authdomain);
 $loginhelp .= '<br />' if $loginhelp;      if ($loginhelp) {
           $loginhelp = '<a href="'.$loginhelp.'">'.$lt{'help'}.'</a><br />';
       }
   
 # ---------------------------------------------------- Serve out DES JavaScript  # ---------------------------------------------------- Serve out DES JavaScript
 {      {
 my $jsh=Apache::File->new($include."/londes.js");      my $jsh=Apache::File->new($include."/londes.js");
 $r->print(<$jsh>);      $r->print(<$jsh>);
 }      }
 # ---------------------------------------------------------- Serve rest of page  # ---------------------------------------------------------- Serve rest of page
   
 $r->print(      $r->print(
     '<div class="LC_Box"'      '<div class="LC_Box"'
    .' style="margin:0 auto; padding:10px; width:90%; height: auto; background-color:#FFFFFF;">'     .' style="margin:0 auto; padding:10px; width:90%; height: auto; background-color:#FFFFFF;">'
 );  );
   
 #      $r->print(<<ENDSERVERFORM);
 #  If the loadbalancing yielded just http:// because perhaps there's no loadbalancing?  
 #  then just us a relative link to authenticate:  
 #  
   
 $r->print(<<ENDSERVERFORM);  
 <form name="server" action="/adm/authenticate" method="post" target="_top">  <form name="server" action="/adm/authenticate" method="post" target="_top">
    <input type="hidden" name="logtoken" value="$logtoken" />     <input type="hidden" name="logtoken" value="$logtoken" />
    <input type="hidden" name="serverid" value="$lonhost" />     <input type="hidden" name="serverid" value="$lonhost" />
    <input type="hidden" name="uname" value="" />     <input type="hidden" name="uname" value="" />
    <input type="hidden" name="upass0" value="" />     <input type="hidden" name="upass0" value="" />
    <input type="hidden" name="upass1" value="" />  
    <input type="hidden" name="upass2" value="" />  
    <input type="hidden" name="udom" value="" />     <input type="hidden" name="udom" value="" />
    <input type="hidden" name="localpath" value="$env{'form.localpath'}" />     <input type="hidden" name="localpath" value="$env{'form.localpath'}" />
    <input type="hidden" name="localres" value="$env{'form.localres'}" />     <input type="hidden" name="localres" value="$env{'form.localres'}" />
   </form>    </form>
 ENDSERVERFORM  ENDSERVERFORM
 my $coursecatalog;      my $coursecatalog;
 if (($showcoursecat eq '') || ($showcoursecat)) {      if (($showcoursecat eq '') || ($showcoursecat)) {
     $coursecatalog = &coursecatalog_link($lt{'catalog'}).'<br />';          $coursecatalog = &coursecatalog_link($lt{'catalog'}).'<br />';
 }      }
 my $newuserlink;      my $newuserlink;
 if ($shownewuserlink) {      if ($shownewuserlink) {
     $newuserlink = &newuser_link($lt{'newuser'}).'<br />';          $newuserlink = &newuser_link($lt{'newuser'}).'<br />';
 }      }
 my $logintitle =      my $logintitle =
     '<h2 class="LC_hcell"'          '<h2 class="LC_hcell"'
    .' style="background:'.$loginbox_header_bgcol.';'         .' style="background:'.$loginbox_header_bgcol.';'
    .' color:'.$loginbox_header_textcol.'">'         .' color:'.$loginbox_header_textcol.'">'
    .$lt{'log'}         .$lt{'log'}
    .'</h2>';         .'</h2>';
   
 my $noscript_warning='<noscript><span class="LC_warning"><b>'      my $noscript_warning='<noscript><span class="LC_warning"><b>'
                      .&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.')                          .&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.')
                     .'</b></span></noscript>';                          .'</b></span></noscript>';
 my $helpdeskscript;      my $helpdeskscript;
 my $contactblock = &contactdisplay(\%lt,$servadm,$showadminmail,      my $contactblock = &contactdisplay(\%lt,$servadm,$showadminmail,
                                    $authdomain,\$helpdeskscript);                                         $authdomain,\$helpdeskscript,
                                          $showhelpdesk,\@possdoms);
 my $loginform=(<<LFORM);  
       my $mobileargs;
       if ($clientmobile) {
           $mobileargs = 'autocapitalize="off" autocorrect="off"'; 
       }
       my $loginform=(<<LFORM);
 <form name="client" action="" onsubmit="return(send())">  <form name="client" action="" onsubmit="return(send())">
   <input type="hidden" name="lextkey" value="$lextkey" />    <input type="hidden" name="lextkey" value="$lextkey" />
   <input type="hidden" name="uextkey" value="$uextkey" />    <input type="hidden" name="uextkey" value="$uextkey" />
   <b><label for="uname">$lt{'un'}</label>:</b><br />    <b><label for="uname">$lt{'un'}</label>:</b><br />
   <input type="text" name="uname" id="uname" size="15" value="$authusername" readonly="readonly" /><br />    <input type="text" name="uname" id="uname" size="15" value="$authusername" readonly="readonly" $mobileargs /><br />
   <b><label for="upass$now">$lt{'pw'}</label>:</b><br />    <b><label for="upass$now">$lt{'pw'}</label>:</b><br />
   <input type="password" name="upass$now" id="upass$now" size="15" readonly="readonly" /><br />    <input type="password" name="upass$now" id="upass$now" size="15" readonly="readonly" /><br />
   <b><label for="udom">$lt{'dom'}</label>:</b><br />    <b><label for="udom">$lt{'dom'}</label>:</b><br />
   <input type="text" name="udom" id="udom" size="15" value="$authdomain" readonly="readonly" /><br />    <input type="text" name="udom" id="udom" size="15" value="$authdomain" readonly="readonly" $mobileargs /><br />
   <input type="submit" value="$lt{'log'}" />    <input type="submit" value="$lt{'log'}" />
 </form>  </form>
 LFORM  LFORM
Line 430  LFORM Line 562  LFORM
         $r->print(<<HEADER);          $r->print(<<HEADER);
 <!-- The LON-CAPA Header -->  <!-- The LON-CAPA Header -->
 <div style="background:$pgbg;margin:0;width:100%;">  <div style="background:$pgbg;margin:0;width:100%;">
   <img src="$img" border="0" alt="The Learning Online Network with CAPA" />    <img src="$img" border="0" alt="The Learning Online Network with CAPA" class="LC_maxwidth" />
 </div>  </div>
 HEADER  HEADER
     }      }
     $r->print(<<ENDTOP);      $r->print(<<ENDTOP);
 <div style="float:left;">  <div style="float:left;margin-top:0;">
 <div class="LC_Box" style="background:$loginbox_bg;">  <div class="LC_Box" style="background:$loginbox_bg;">
   $logintitle    $logintitle
   $loginform    $loginform
Line 454  HEADER Line 586  HEADER
 <div>  <div>
 ENDTOP  ENDTOP
     if ($showmainlogo) {      if ($showmainlogo) {
         $r->print(' <img src="'.$logo.'" alt="" />'."\n");          $r->print(' <img src="'.$logo.'" alt="" class="LC_maxwidth" />'."\n");
     }      }
 $r->print(<<ENDTOP);  $r->print(<<ENDTOP);
 $announcements  $announcements
 </div>  </div>
 <hr style="clear:both;" />  <hr style="clear:both;" />
 ENDTOP  ENDTOP
       my ($domainrow,$serverrow,$loadrow,$userloadrow,$versionrow);
 $r->print(<<ENDDOCUMENT);      $domainrow = <<"END";
     <div style="float: left;">  
      <table border="0" cellspacing="0" cellpadding="0">  
       <tr>        <tr>
        <td  align="left" valign="top">         <td  align="left" valign="top">
         <small><b>$lt{'dom'}:&nbsp;</b></small>          <small><b>$lt{'dom'}:&nbsp;</b></small>
Line 473  $r->print(<<ENDDOCUMENT); Line 603  $r->print(<<ENDDOCUMENT);
         <small><tt>&nbsp;$domain</tt></small>          <small><tt>&nbsp;$domain</tt></small>
        </td>         </td>
       </tr>        </tr>
   END
       $serverrow = <<"END";
       <tr>        <tr>
        <td  align="left" valign="top">         <td  align="left" valign="top">
         <small><b>$lt{'serv'}:&nbsp;</b></small>          <small><b>$lt{'serv'}:&nbsp;</b></small>
Line 481  $r->print(<<ENDDOCUMENT); Line 613  $r->print(<<ENDDOCUMENT);
         <small><tt>&nbsp;$lonhost ($role)</tt></small>          <small><tt>&nbsp;$lonhost ($role)</tt></small>
        </td>         </td>
       </tr>        </tr>
   END
       if ($loadlim) {
           $loadrow = <<"END";
       <tr>        <tr>
        <td align="left" valign="top">         <td align="left" valign="top">
         <small><b>$lt{'load'}:&nbsp;</b></small>          <small><b>$lt{'load'}:&nbsp;</b></small>
Line 489  $r->print(<<ENDDOCUMENT); Line 624  $r->print(<<ENDDOCUMENT);
         <small><tt>&nbsp;$loadpercent $lt{'perc'}</tt></small>          <small><tt>&nbsp;$loadpercent $lt{'perc'}</tt></small>
        </td>         </td>
       </tr>        </tr>
   END
       }
       if ($uloadlim) {
           $userloadrow = <<"END";
       <tr>        <tr>
        <td align="left" valign="top">         <td align="left" valign="top">
         <small><b>$lt{'userload'}:&nbsp;</b></small>          <small><b>$lt{'userload'}:&nbsp;</b></small>
Line 497  $r->print(<<ENDDOCUMENT); Line 636  $r->print(<<ENDDOCUMENT);
         <small><tt>&nbsp;$userloadpercent $lt{'perc'}</tt></small>          <small><tt>&nbsp;$userloadpercent $lt{'perc'}</tt></small>
        </td>         </td>
       </tr>        </tr>
   END
       }
       if (($version ne '') && ($version ne '<!-- VERSION -->')) {
           $versionrow = <<"END";
       <tr>        <tr>
        <td colspan="2" align="left">         <td colspan="2" align="left">
         <small>$version</small>          <small>$version</small>
        </td>         </td>
       </tr>        </tr>
   END
       }
   
       $r->print(<<ENDDOCUMENT);
       <div style="float: left;">
        <table border="0" cellspacing="0" cellpadding="0">
   $domainrow
   $serverrow
   $loadrow    
   $userloadrow
   $versionrow
      </table>       </table>
     </div>      </div>
     <div style="float: right;">      <div style="float: right;">
Line 581  sub redirect_page { Line 735  sub redirect_page {
 }  }
   
 sub contactdisplay {  sub contactdisplay {
     my ($lt,$servadm,$showadminmail,$authdomain,$helpdeskscript) = @_;      my ($lt,$servadm,$showadminmail,$authdomain,$helpdeskscript,$showhelpdesk,
           $possdoms) = @_;
     my $contactblock;      my $contactblock;
     my $showhelpdesk = 0;      my $origmail;
     my $requestmail = $Apache::lonnet::perlvar{'lonSupportEMail'};      if (ref($possdoms) eq 'ARRAY') {
     if ($requestmail =~ m/^[^\@]+\@[^\@]+$/) {          if (grep(/^\Q$authdomain\E$/,@{$possdoms})) { 
         $showhelpdesk = 1;              $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
           }
       }
       my $requestmail = 
           &Apache::loncommon::build_recipient_list(undef,'helpdeskmail',
                                                    $authdomain,$origmail);
       unless ($showhelpdesk eq '0') {
           if ($requestmail =~ m/[^\@]+\@[^\@]+/) {
               $showhelpdesk = 1;
           } else {
               $showhelpdesk = 0;
           }
     }      }
     if ($servadm && $showadminmail) {      if ($servadm && $showadminmail) {
         $contactblock .= $$lt{'servadm'}.':<br />'.          $contactblock .= $$lt{'servadm'}.':<br />'.
Line 599  sub contactdisplay { Line 765  sub contactdisplay {
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA[
 function helpdesk() {  function helpdesk() {
     var codedom = document.client.udom.value;      var possdom = document.client.udom.value;
       var codedom = possdom.replace( new RegExp("[^A-Za-z0-9.\\-]","g"),'');
     if (codedom == '') {      if (codedom == '') {
         codedom = "$authdomain";          codedom = "$authdomain";
     }      }
Line 622  sub forgotpwdisplay { Line 789  sub forgotpwdisplay {
     }      }
     return;      return;
 }  }
   
 sub loginhelpdisplay {  
     my ($authdomain,%lt) = @_;  
     my $login_help = 1;  
     if ($login_help) {  
         my $dom = $authdomain;  
         if ($dom eq '') {  
             $dom = &Apache::lonnet::default_login_domain();  
         }  
         my %helpconfig = &Apache::lonnet::get_dom('configuration',['helpsettings'],$dom);  
         my $loginhelp_url = $helpconfig{'helpsettings'}{'loginhelpurl'};  
         if ($loginhelp_url ne '') {  
             return '<a href="'.$loginhelp_url.'">'.$lt{'help'}.'</a>';  
         } else {  
             return '<a href="/adm/loginproblems.html">'.$lt{'help'}.'</a>';  
         }  
     }  
     return;  
 }  
   
 sub coursecatalog_link {  sub coursecatalog_link {
     my ($linkname) = @_;      my ($linkname) = @_;

Removed from v.1.143  
changed lines
  Added in v.1.158.2.6.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.