Diff for /loncom/auth/lonlogin.pm between versions 1.32 and 1.118

version 1.32, 2003/02/17 23:25:59 version 1.118, 2009/04/08 10:13:13
Line 25 Line 25
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
 # 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14,  
 # 1/14/00,5/29,5/30,6/1,6/29,7/1,11/9,  
 # 1/17/01 Gerd Kortemeyer  
 #  
 # 2/7/02,2/8,2/12,2/14,2/15,2/19 Josh Brunskole  
 #   
 # 7/10/02 Jeremy Bowers  
   
 package Apache::lonlogin;  package Apache::lonlogin;
   
 use strict;  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::File ();  use Apache::File ();
 use Apache::lonnet();  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
   use Apache::lonauth();
   use Apache::lonlocal;
   use Apache::migrateuser();
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
    
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
     $r->content_type('text/html');  
       &Apache::loncommon::get_unprocessed_cgi
    (join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'},
         $ENV{'REDIRECT_QUERY_STRING'}),
    ['interface','username','domain','firsturl','localpath','localres',
     'token']);
       if (!defined($env{'form.firsturl'})) {
           &Apache::lonacc::get_posted_cgi($r,['firsturl']);
       }
   
   # -- check if they are a migrating user
       if (defined($env{'form.token'})) {
    return &Apache::migrateuser::handler($r);
       }
   
     &Apache::loncommon::no_cache($r);      &Apache::loncommon::no_cache($r);
       &Apache::lonlocal::get_language_handle($r);
       &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
   
     &Apache::loncommon::get_unprocessed_cgi  # Are we re-routing?
      ($ENV{'QUERY_STRING'},['interface','username','domain','firsturl']);      if (-e '/home/httpd/html/lon-status/reroute.txt') {
    &Apache::lonauth::reroute($r);
    return OK;
       }
   
   
   # -------------------------------- Prevent users from attempting to login twice
       my $handle = &Apache::lonnet::check_for_valid_session($r);
       if ($handle=~/^publicuser\_/) {
   # For "public user" - remove it, we apparently really want to login
    unlink($r->dir_config('lonIDsDir')."/$handle.id");
       } elsif ($handle ne '') {
   # Indeed, a valid token is found
    my $start_page = 
       &Apache::loncommon::start_page('Already logged in');
    my $end_page = 
       &Apache::loncommon::end_page();
    $r->print(
                     $start_page
                    .'<h1>'.&mt('You are already logged in!').'</h1>'
                    .'<p>'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].',
                     '<a href="/adm/roles">','</a>','<a href="/adm/logout">','</a>').'</p>'
                    .'<p><a href="/adm/loginproblems.html">'.&mt('Login problems?').'</a></p>'
                    .$end_page
                    );
           return OK;
       }
   
   # ---------------------------------------------------- No valid token, continue
   
    # ---------------------------- Not possible to really login to domain "public"
       if ($env{'form.domain'} eq 'public') {
    $env{'form.domain'}='';
    $env{'form.username'}='';
       }
 # ----------------------------------------------------------- Process Interface  # ----------------------------------------------------------- Process Interface
     $ENV{'form.interface'}=~s/\W//g;      $env{'form.interface'}=~s/\W//g;
   
     my $textbrowsers=$r->dir_config('lonTextBrowsers');  
     my $httpbrowser=$ENV{"HTTP_USER_AGENT"};      my $httpbrowser=$ENV{"HTTP_USER_AGENT"};
           
     foreach (split(/\:/,$textbrowsers)) {      my $fullgraph=($env{'form.interface'} ne 'textual');
  if ($httpbrowser=~/$_/i) {  
     $ENV{'form.interface'}='textual';  
         }  
     }  
   
     my $fullgraph=($ENV{'form.interface'} ne 'textual');      my $iconpath= 
    &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL'));
   
     my $iconpath= 'http://'.$ENV{'HTTP_HOST'}.':8080'.      my $domain = &Apache::lonnet::default_login_domain();
                   $r->dir_config('lonIconsURL');      if (($env{'form.domain'}) && 
     my $domain  = $r->dir_config('lonDefDomain');   (&Apache::lonnet::domain($env{'form.domain'},'description'))) {
    $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 $servadm = $r->dir_config('lonAdmEMail');      my $servadm = $r->dir_config('lonAdmEMail');
     my $sysadm  = $r->dir_config('lonSysEMail');  
     my $lonhost = $r->dir_config('lonHostID');      my $lonhost = $r->dir_config('lonHostID');
     my $tabdir  = $r->dir_config('lonTabDir');      my $tabdir  = $r->dir_config('lonTabDir');
     my $include = $r->dir_config('lonIncludes');      my $include = $r->dir_config('lonIncludes');
       my $expire  = $r->dir_config('lonExpire');
       my $version = $r->dir_config('lonVersion');
       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=($env{'form.username'}?$env{'form.username'}:'');
     my $authdomain=($ENV{'form.domain'}?$ENV{'form.domain'}:$domain);      my $authdomain=($env{'form.domain'}?$env{'form.domain'}:$domain);
   
 # ---------------------------------------------------------- Determine own load  # ---------------------------------------------------------- Determine own load
     my $loadavg;      my $loadavg;
    {      {
        my $loadfile=Apache::File->new('/proc/loadavg');   my $loadfile=Apache::File->new('/proc/loadavg');
        $loadavg=<$loadfile>;   $loadavg=<$loadfile>;
    }      }
     $loadavg =~ s/\s.*//g;      $loadavg =~ s/\s.*//g;
     my $loadpercent=100*$loadavg/$loadlim;      my $loadpercent=sprintf("%.1f",100*$loadavg/$loadlim);
       my $userloadpercent=&Apache::lonnet::userload();
   
 # ------------------------------------------------------- Do the load balancing  # ------------------------------------------------------- Do the load balancing
     my $otherserver='http://'.$ENV{'SERVER_NAME'};      my $otherserver= &Apache::lonnet::absolute_url($host_name);
     my $firsturl=      my $firsturl=
     ($ENV{'request.firsturl'}?$ENV{'request.firsturl'}:$ENV{'form.firsturl'});      ($env{'request.firsturl'}?$env{'request.firsturl'}:$env{'form.firsturl'});
 # ---------------------------------------- Are we access server and overloaded?  # ---------------------------------------------------------- Are we overloaded?
     if (($role eq 'access') && ($loadpercent>100.0)) {      if ((($userloadpercent>100.0)||($loadpercent>100.0))) {
         $otherserver=Apache::lonnet::spareserver($loadpercent);          my $unloaded=Apache::lonnet::spareserver($loadpercent,$userloadpercent);
    if ($unloaded) { $otherserver=$unloaded; }
     }      }
   
   # ----------------------------------------------------------- Get announcements
       my $announcements=&Apache::lonnet::getannounce();
 # -------------------------------------------------------- Set login parameters  # -------------------------------------------------------- Set login parameters
   
     my @hexstr=('0','1','2','3','4','5','6','7',      my @hexstr=('0','1','2','3','4','5','6','7',
Line 129  sub handler { Line 180  sub handler {
   
     if ($logtoken eq 'con_lost') {      if ($logtoken eq 'con_lost') {
         my $spares='';          my $spares='';
         foreach (keys %Apache::lonnet::hostname) {   my $last;
             if ($_ ne $lonhost) {          foreach my $hostid (sort
                $spares.='<br /><a href="http://'.$Apache::lonnet::hostname{$_}.      {
  '/adm/login?domain='.$authdomain.'">'.   &Apache::lonnet::hostname($a) cmp
                  $Apache::lonnet::hostname{$_}.'</a>';      &Apache::lonnet::hostname($b);
                if ($Apache::lonnet::spareid{$_}) {      }
    $spares.=' (preferred)';      keys(%Apache::lonnet::spareid)) {
                }              next if ($hostid eq $lonhost);
    }      my $hostname = &Apache::lonnet::hostname($hostid);
       next if ($last eq $hostname);
               $spares.='<br /><font size="+1"><a href="http://'.
                   $hostname.
                   '/adm/login?domain='.$authdomain.'">'.
                   $hostname.'</a>'.
                   ' '.&mt('(preferred)').'</font>'.$/;
       $last=$hostname;
         }          }
  $r->print(<<ENDTROUBLE);  $spares.= '<br />';
 <html>  my %all_hostnames = &Apache::lonnet::all_hostnames();
 <head><title>The LearningOnline Network with CAPA</title></head>  foreach my $hostid (sort
 <body bgcolor="#FFFFFF">      {
 <img src="/adm/lonKaputt/lonlogo_broken.gif" align="right" />   &Apache::lonnet::hostname($a) cmp
 <h3>This LON-CAPA server is temporarily not available for login</h3>      &Apache::lonnet::hostname($b);
 <p>Please attempt to login to one of the following servers:</p>$spares      }
 <p>If the problem persists, please contact <tt>$servadm</tt>.</p>      keys(%all_hostnames)) {
 </body>      next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid});
 </html>      my $hostname = &Apache::lonnet::hostname($hostid);
 ENDTROUBLE      next if ($last eq $hostname);
         return OK;      $spares.='<br /><a href="http://'.
     }   $hostname.
    '/adm/login?domain='.$authdomain.'">'.
    $hostname.'</a>';
       $last=$hostname;
   }
   $r->print(
      '<html>'
     .'<head><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" />'
     .'<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>'
     .$spares
     .'</body>'
     .'</html>'
   );
   return OK;
   }
   
 # ----------------------------------------------- Apparently we are in business  # ----------------------------------------------- Apparently we are in business
   $servadm=~s/\,/\<br \/\>/g;
     my $domainlogo=&Apache::loncommon::domainlogo();  
 # --------------------------------------------------- Print login screen header  
     $r->print(<<ENDHEADER);  
 <html>  
 <head>  
 <title>The LearningOnline Network with CAPA Login</title>  
 </head>  
 ENDHEADER  
 # ---------------------------------------------------- Serve out DES JavaScript  
     {  
  my $jsh=Apache::File->new($include."/londes.js");  
         $r->print(<$jsh>);  
     }  
   
 # ----------------------------------------------------------- Front page design  # ----------------------------------------------------------- Front page design
     my $pgbg=&Apache::loncommon::designparm('login.pgbg');  my $pgbg=
     my $font=&Apache::loncommon::designparm('login.font');  ($fullgraph?&Apache::loncommon::designparm('login.pgbg',$domain):'#FFFFFF');
     my $link=&Apache::loncommon::designparm('login.link');  my $font=
     my $vlink=&Apache::loncommon::designparm('login.vlink');  ($fullgraph?&Apache::loncommon::designparm('login.font',$domain):'#000000');
     my $alink=&Apache::loncommon::designparm('login.alink');  my $link=
     my $mainbg=&Apache::loncommon::designparm('login.mainbg');  ($fullgraph?&Apache::loncommon::designparm('login.link',$domain):'#0000FF');
     my $sidebg=&Apache::loncommon::designparm('login.sidebg');  my $vlink=
     my $logo=&Apache::loncommon::designparm('login.logo');  ($fullgraph?&Apache::loncommon::designparm('login.vlink',$domain):'#0000FF');
     my $img=&Apache::loncommon::designparm('login.img');  my $alink=&Apache::loncommon::designparm('login.alink',$domain);
   my $mainbg=
   ($fullgraph?&Apache::loncommon::designparm('login.mainbg',$domain):'#FFFFFF');
 # ---------------------------------------------------------- Serve rest of page  my $logo=&Apache::loncommon::designparm('login.logo',$domain);
     $r->print(<<ENDSCRIPT);  my $img=&Apache::loncommon::designparm('login.img',$domain);
   my $domainlogo=&Apache::loncommon::domainlogo($domain);
   my $login=&Apache::loncommon::designparm('login.login',$domain);
   if ($login eq '') {
   $login = $iconpath.'/'.&mt('userauthentication.gif');
   }
   my $showbanner = 1;
   my $showmainlogo = 1;
   if (defined(&Apache::loncommon::designparm('login.showlogo_img',$domain))) {
       $showbanner = &Apache::loncommon::designparm('login.showlogo_img',$domain);
   }
   if (defined(&Apache::loncommon::designparm('login.showlogo_logo',$domain))) {
       $showmainlogo = &Apache::loncommon::designparm('login.showlogo_logo',$domain);
   }
   my $showadminmail=&Apache::loncommon::designparm('login.adminmail',$domain);
   my $showcoursecat =
   &Apache::loncommon::designparm('login.coursecatalog',$domain);
   my $loginheader =&Apache::loncommon::designparm('login.loginheader',$domain);
   my $shownewuserlink = 
   &Apache::loncommon::designparm('login.newuser',$domain);
   my $now=time;
   my $js = (<<ENDSCRIPT);
   
   <script type="text/javascript" language="JavaScript">
   function send()
   {
   this.document.server.elements.uname.value
   =this.document.client.elements.uname.value;
   
   this.document.server.elements.udom.value
   =this.document.client.elements.udom.value;
   
   uextkey=this.document.client.elements.uextkey.value;
   lextkey=this.document.client.elements.lextkey.value;
   initkeys();
   
   this.document.server.elements.upass0.value
       =crypted(this.document.client.elements.upass$now.value.substr(0,15));
   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));
   
 <body bgcolor="$pgbg" text="$font" link="$link" vlink="$vlink" alink="$alink"  this.document.client.elements.uname.value='';
   topmargin=0 leftmargin=0 marginwidth=0 marginheight=0>  this.document.client.elements.upass$now.value='';
   
  <script language="JavaScript">  this.document.server.submit();
     function send()  return false;
     {  }
  this.document.server.elements.uname.value  </script>
        =this.document.client.elements.uname.value;  
   
         this.document.server.elements.udom.value  ENDSCRIPT
        =this.document.client.elements.udom.value;  
   
         uextkey=this.document.client.elements.uextkey.value;  # --------------------------------------------------- Print login screen header
         lextkey=this.document.client.elements.lextkey.value;  
         initkeys();  
   
         this.document.server.elements.upass.value  my %add_entries = (
     =crypted(this.document.client.elements.upass.value);         bgcolor      => "$mainbg",
          text         => "$font",
          link         => "$link",
          vlink        => "$vlink",
          alink        => "$alink",);
   
   $r->print(&Apache::loncommon::start_page('The LearningOnline Network with CAPA Login',$js,
          { 'redirect'       => [$expire,'/adm/roles'], 
    'add_entries' => \%add_entries,
    'only_body'   => 1,}));
   
   # ----------------------------------------------------------------------- Texts
   
   my %lt=&Apache::lonlocal::texthash(
     'un'  => 'Username',
     'pw'  => 'Password',
     'dom' => 'Domain',
     'perc' => 'percent',
     'load' => 'Server Load',
     'userload' => 'User Load',
     'about'  => 'About LON-CAPA',
     'catalog' => 'Course Catalog',
     'log' => 'Log in',
     'help' => 'Log-in Help',
     'serv' => 'Server',
     'servadm' => 'Server Administration',
     'helpdesk' => 'Contact Helpdesk',
     'forgotpw' => 'Forgot password?',
     'newuser'  => 'New User?',
     );
   # -------------------------------------------------- Change password field name
   my $forgotpw = &forgotpwdisplay(%lt);
   my $loginhelp = &loginhelpdisplay(%lt);
   
         this.document.server.submit();  # ---------------------------------------------------- Serve out DES JavaScript
  return false;  {
     }  my $jsh=Apache::File->new($include."/londes.js");
  </script>  $r->print(<$jsh>);
 ENDSCRIPT  }
   # ---------------------------------------------------------- Serve rest of page
   
     if ($fullgraph) {  if ($fullgraph) {
  $r->print(  $r->print(
   '<table width="100%" cellpadding=0 cellspacing=0 border=0>');    '<div class="LC_loginpage_container">');
     }  }
   
     $r->print(<<ENDSERVERFORM);  $r->print(<<ENDSERVERFORM);
   <form name="server" action="$otherserver/adm/authenticate" method="post" target="_top">  <form name="server" action="$otherserver/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=interface value="$ENV{'form.interface'}">     <input type="hidden" name="uname" value="" />
    <input type=hidden name=uname value="">     <input type="hidden" name="upass0" value="" />
    <input type=hidden name=upass value="">     <input type="hidden" name="upass1" value="" />
    <input type=hidden name=udom value="">     <input type="hidden" name="upass2" value="" />
      <input type="hidden" name="udom" value="" />
      <input type="hidden" name="localpath" value="$env{'form.localpath'}" />
      <input type="hidden" name="localres" value="$env{'form.localres'}" />
   </form>    </form>
 ENDSERVERFORM  ENDSERVERFORM
     if ($fullgraph) { $r->print(<<ENDTOP);  my $coursecatalog;
   <!-- The LON-CAPA Header -->  if (($showcoursecat eq '') || ($showcoursecat)) {
   <tr>      $coursecatalog = &coursecatalog_link($lt{'catalog'});
   }
    <!-- Row 1 Columns 2-4 -->  my $newuserlink;
    <td width="100%" height=75 colspan=4 align="left" valign="top" bgcolor="$pgbg"><img src="$img" border=0 alt="The Learning Online Network with CAPA" /></td>  if ($shownewuserlink) {
   </tr>      $newuserlink = &newuser_link($lt{'newuser'}).'<br />';
   }
   <!-- The gray bar that starts the two table frames -->  my $logintitle;
   <tr>  if ($loginheader eq 'text') {
       $logintitle ='<h2>'.$lt{'log'}.'</h2>';
    <!-- Row 2 Column 1 -->  
    <td width=182 height=27 bgcolor="$sidebg">&nbsp;</td>  
   
    <!-- Row 2 Column 2 -->  
    <td width=27 height=27 align="left" background="$iconpath/filltop.gif"><img src="$iconpath/upperleft.gif" border=0 alt="" /></td>  
   
    <!-- Row 2 Column 3 -->  
    <td height=27 background="$iconpath/filltop.gif"><img src="$iconpath/filltop.gif" alt="" /></td>  
   
    <!-- Row 2 Column 4 -->  
    <td width=27 height=27 align="right" background="$iconpath/filltop.gif"><img src="$iconpath/upperright.gif" border=0 alt="" /></td>  
   </tr>  
   <tr>  
      
    <!-- A cell that will hold the 'access' and 'about' buttons -->  
    <!-- Row 3 Column 1 -->  
    <td valign="top" height=60 align="center" bgcolor="$sidebg">  
     <a href="/adm/login?interface=textual"><img src="$iconpath/accessbutton.gif" border=0 alt="Accessibility Options" /></a>  
     <br />  
     <a href="/adm/about.html"><img src="$iconpath/aboutlon.gif" border=0 alt="About LON-CAPA" /></a>  
    </td>  
   
    <!-- The shaded space between the two main columns -->  
    <!-- Row 3 Column 2 -->  
    <td width=27 height=60 background="$iconpath/fillleft.gif"><img src="$iconpath/fillleft.gif" alt="" /></td>  
   
    <!-- The right main column holding the large LON-CAPA logo-->  
    <!-- Rows 3-4 Column 3 -->  
    <td align="center" valign="top" width="100%" height="100%" rowspan=2 bgcolor="$mainbg">  
     <center>  
      <img src="$logo" alt="" />  
     </center>  
    </td>  
   
    <!-- Row 3 Column 4 -->  
    <td width=27 background="$iconpath/fillright.gif"><img src="$iconpath/fillright.gif" alt="" /></td>  
   </tr>  
   <tr>  
   
    <!-- The entry form -->  
    <!-- Row 4 Column 1 -->  
    <td align="center" valign="middle" bgcolor="$sidebg">  
 ENDTOP  
 } else {  } else {
     $r->print('<font color="#FFFFFF"><h1>The Learning<i>Online</i> Network with CAPA</h1><h3>Text-based Interface Login</h3></font>');      $logintitle = '<img src="'.$login.'" alt="'.
                     &mt('User Authentication').'" />';
 }  }
     $r->print(<<ENDLOGIN);  
     <form name="client" onsubmit="return(send())">  my $noscript_warning='<noscript><span class="LC_warning"><b>'
      <input type="hidden" name="lextkey" value="$lextkey">                       .&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.')
      <input type="hidden" name="uextkey" value="$uextkey">                      .'</b></span></noscript>';
   my $helpdeskscript;
      <!-- Start the sub-table for text and input alignment -->  my $contactblock = &contactdisplay(\%lt,$servadm,$showadminmail,
      <table border=0 cellspacing=0 cellpadding=0>                              $version,$authdomain,\$helpdeskscript);
       <tr><td bgcolor="$sidebg" colspan=2><img src="$iconpath/userauthentication.gif" alt="User Authentication" /></td></tr>  
       <tr>  my $loginform=(<<LFORM);
        <td bgcolor="$mainbg"><br /><font size=-1><b>&nbsp;&nbsp;&nbsp;User Name:</b></font></td>  <form name="client" onsubmit="return(send())">
        <td bgcolor="$mainbg"><br /><input type="text" name="uname" size="10" value="$authusername" /></td>    <input type="hidden" name="lextkey" value="$lextkey" />
       </tr>    <input type="hidden" name="uextkey" value="$uextkey" />
       <tr>    <b><label for="uname">$lt{'un'}</label>:</b><br />
        <td bgcolor="$mainbg"><font size=-1><b>&nbsp;&nbsp;&nbsp;Password:</b></font></td>    <input type="text" name="uname" size="15" value="$authusername" /><br />
        <td bgcolor="$mainbg"><input type="password" name="upass" size="10" /></td>    <b><label for="upass$now">$lt{'pw'}</label>:</b><br />
       </tr>    <input type="password" name="upass$now" size="15" /><br />
     <b><label for="udom">$lt{'dom'}</label>:</b><br />
     <input type="text" name="udom" size="15" value="$authdomain" /><br />
     <input type="submit" value="$lt{'log'}" />
   </form>
   LFORM
   
   if ($fullgraph) {
       if ($showbanner) {
           $r->print(<<HEADER);
   <!-- The LON-CAPA Header -->
   <table border="0" align="left" width="100%" cellspacing="0" cellpadding="1">
    <tr>
     <td align="left" valign="top" bgcolor="$pgbg">
         <img src="$img" border="0" alt="The Learning Online Network with CAPA" />
     </td>
    </tr>
   </table>
   HEADER
       }
       $r->print(<<ENDTOP);
   <div class="LC_loginpage_space">&nbsp;</div>
   <div class="LC_loginpage_floatLeft">
   <div class="LC_loginpage_loginContainer">
     $logintitle
      <table border="0" align="left" cellspacing="1" cellpadding="2" width="100%">
       <tr>        <tr>
        <td bgcolor="$mainbg"><font size=-1><b>&nbsp;&nbsp;&nbsp;Domain:</b></font></td>     <td>
        <td bgcolor="$mainbg"><input type="text" name="udom" size="10" value="$authdomain" /></td>   $loginform
              </td>
       </tr>        </tr>
      </table>  
      $noscript_warning
   </div>
     
   <div class="LC_loginpage_loginInfo">
           $loginhelp<br />
           $forgotpw<br />
    $contactblock<br />
           $newuserlink
           $coursecatalog<br /><br />
           <a href="/adm/about.html"><b>$lt{'about'}</b></a>
   </div>
   </div>
   ENDTOP
       if ($showmainlogo) {
           $r->print(' <img src="'.$logo.'" alt="" />'."\n");
       }
   $r->print(<<ENDTOP);
   $announcements
   $domainlogo
   <div class="LC_loginpage_space">&nbsp;</div>
   ENDTOP
   }
   
   if ($fullgraph) {
   $r->print(<<ENDDOCUMENT);
        <table border="0" cellspacing="0" cellpadding="0">
       <tr>        <tr>
        <td bgcolor="$mainbg">&nbsp;&nbsp;&nbsp;<a href="/adm/loginproblems.html">Help</a></td>         <td  align="left" valign="top">
        <td bgcolor="$mainbg" valign="bottom" align="center">          <small><b>&nbsp;&nbsp;&nbsp;$lt{'dom'}:&nbsp;</b></small>
         <br />         </td>
         <input type="submit" value="Log In" />         <td  align="left" valign="top">
           <small><tt>&nbsp;$domain</tt></small>
        </td>         </td>
       </tr>        </tr>
      </table>  
      <!-- End sub-table -->  
     </form>  
 ENDLOGIN  
     if ($fullgraph) {  
  $r->print(<<ENDDOCUMENT);  
    </td>  
   
    <!-- Row 4 Column 2 -->  
    <td width=27 background="$iconpath/fillleft.gif"><img src="$iconpath/fillleft.gif" alt="" /></td>  
   
    <!-- Row 4 Column 4 -->  
    <td width=27 background="$iconpath/fillright.gif"><img src="$iconpath/fillright.gif" alt="" /></td>  
   </tr>  
   <tr>  
   
    <!-- Row 5 Column 1 -->  
    <td bgcolor="$sidebg" valign="middle" align="left">  
      <br />  
      <table border=0 cellspacing=0 cellpadding=0>  
       <tr>        <tr>
        <td bgcolor="$sidebg" align="left" valign="top">         <td  align="left" valign="top">
         <small><b>&nbsp;&nbsp;&nbsp;Domain:&nbsp;</b></small>          <small><b>&nbsp;&nbsp;&nbsp;$lt{'serv'}:&nbsp;</b></small>
        </td>         </td>
        <td bgcolor="$sidebg" align="left" valign="top">         <td align="left" valign="top">
         <small><tt>&nbsp;$domain</tt></small>          <small><tt>&nbsp;$lonhost ($role)</tt></small>
        </td>         </td>
       </tr>        </tr>
       <tr>        <tr>
        <td bgcolor="$sidebg" align="left" valign="top">         <td align="left" valign="top">
         <small><b>&nbsp;&nbsp;&nbsp;Server:&nbsp;</b></small>          <small><b>&nbsp;&nbsp;&nbsp;$lt{'load'}:&nbsp;</b></small>
        </td>         </td>
        <td bgcolor="$sidebg" align="left" valign="top">         <td align="left" valign="top">
         <small><tt>&nbsp;$lonhost ($role)</tt></small>          <small><tt>&nbsp;$loadpercent $lt{'perc'}</tt></small>
        </td>         </td>
       </tr>        </tr>
       <tr>        <tr>
        <td bgcolor="$sidebg" align="left" valign="top">         <td align="left" valign="top">
         <small><b>&nbsp;&nbsp;&nbsp;Load:&nbsp;</b></small>          <small><b>&nbsp;&nbsp;&nbsp;$lt{'userload'}:&nbsp;</b></small>
        </td>         </td>
        <td bgcolor="$sidebg" align="left" valign="top">         <td align="left" valign="top">
         <small><tt>&nbsp;$loadpercent percent</tt></small>          <small><tt>&nbsp;$userloadpercent $lt{'perc'}</tt></small>
        </td>         </td>
       </tr>        </tr>
      </table>       </table>
      <br />   </div>
     <small>  
      <b>&nbsp;&nbsp;&nbsp;System Administration:</b><br />  
      <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sysadm</tt><br />  
      <b>&nbsp;&nbsp;&nbsp;Server Administration:</b><br />  
      <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$servadm<br />&nbsp;</tt>  
     </small>  
    </td>  
   
    <!-- Row 5 Column 2 -->  
    <td width=27 background="$iconpath/fillleft.gif"><img src="$iconpath/fillleft.gif" alt="" /></td>  
   
    <!-- Row 5 Column 3 -->  
    <td width="100%" valign="bottom" bgcolor="$mainbg">  
 $domainlogo  
 </td>  
   
    <!-- Row 5 Column 4 -->  <script type="text/javascript">
    <td width=27 background="$iconpath/fillright.gif"><img src="$iconpath/fillright.gif" alt="" /></td>  // the if prevents the script error if the browser can not handle this
   </tr>  if ( document.client.uname ) { document.client.uname.focus(); }
   <tr>  </script>
   $helpdeskscript
   
    <!-- Row 6 Column 1 -->  ENDDOCUMENT
    <td bgcolor="$sidebg">&nbsp;</td>  }
       my %endargs = ( 'noredirectlink' => 1, );
       $r->print(&Apache::loncommon::end_page(\%endargs));
       return OK;
   }
   
    <!-- Row 6 Column 2 -->  sub contactdisplay {
    <td align="left" background="$iconpath/fillbottom.gif"><img src="$iconpath/lowerleft.gif" alt="" /></td>      my ($lt,$servadm,$showadminmail,$version,$authdomain,$helpdeskscript) = @_;
       my $contactblock;
       my $showhelpdesk = 0;
       my $requestmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
       if ($requestmail =~ m/^[^\@]+\@[^\@]+$/) {
           $showhelpdesk = 1;
       }
       if ($servadm && $showadminmail) {
           $contactblock .= '<b>&nbsp;&nbsp;&nbsp;'.$$lt{'servadm'}.':</b><br />'.
                            '<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$servadm.'</tt><br />&nbsp;<br />';
       }
       if ($showhelpdesk) {
           $contactblock .= '<a href="javascript:helpdesk()">'.$lt->{'helpdesk'}.'</a><br />';
           my $thisurl = &escape('/adm/login');
           $$helpdeskscript = <<"ENDSCRIPT";
   <script type="text/javascript">
   function helpdesk() {
       var codedom = document.client.udom.value;
       if (codedom == '') {
           codedom = "$authdomain";
       }
       var querystr = "origurl=$thisurl&codedom="+codedom;
       document.location.href = "/adm/helpdesk?"+querystr;
       return;
   }
   </script>
   ENDSCRIPT
       }
       $contactblock .= <<"ENDBLOCK";
        &nbsp;&nbsp;&nbsp;$version
   ENDBLOCK
       return $contactblock;
   }
   
    <!-- Row 6 Column 3 -->  sub forgotpwdisplay {
    <td background="$iconpath/fillbottom.gif"><img src="$iconpath/fillbottom.gif" alt="" /></td>      my (%lt) = @_;
       my $prompt_for_resetpw = 1; 
       if ($prompt_for_resetpw) {
           return '<a href="/adm/resetpw">'.$lt{'forgotpw'}.'</a>';
       }
       return;
   }
   
    <!-- Row 6 Column 4 -->  sub loginhelpdisplay {
    <td align="right" background="$iconpath/fillbottom.gif"><img src="$iconpath/lowerright.gif" alt="" /></td>      my (%lt) = @_;
   </tr>      my $login_help = 1;
  </table>      if ($login_help) {
           return '<a href="/adm/loginproblems.html">'.$lt{'help'}.'</a>';
       }
       return;
   }
   
 <script>  sub coursecatalog_link {
 // the if prevents the script error if the browser can't handle this      my ($linkname) = @_;
 if ( document.client.uname ) { document.client.uname.focus(); }      return <<"END";
 </script>        <a href="/adm/coursecatalog">$linkname</a>
   END
   }
   
 ENDDOCUMENT  sub newuser_link {
       my ($linkname) = @_;
       return '&nbsp;&nbsp;&nbsp;<a href="/adm/createaccount"><b>'.$linkname.'</b></a><br />';
 }  }
     $r->print('</body></html>');  
     return OK;  
 }   
   
 1;  1;
 __END__  __END__

Removed from v.1.32  
changed lines
  Added in v.1.118


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.