Diff for /loncom/auth/lonlogin.pm between versions 1.106.2.2 and 1.150

version 1.106.2.2, 2008/12/25 05:53:17 version 1.150, 2012/04/11 11:40:07
Line 46  sub handler { Line 46  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']);    'token','role','symb']);
     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 64  sub handler { Line 64  sub handler {
   
   
 # 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;
     }      }
   
       $env{'form.firsturl'} =~ s/(`)/'/g;
   
 # -------------------------------- Prevent users from attempting to login twice  # -------------------------------- Prevent users from attempting to login twice
     my $handle = &Apache::lonnet::check_for_valid_session($r);      my $handle = &Apache::lonnet::check_for_valid_session($r);
     if ($handle=~/^publicuser\_/) {      if ($handle ne '') {
           my $lonidsdir=$r->dir_config('lonIDsDir');
           if ($handle=~/^publicuser\_/) {
 # For "public user" - remove it, we apparently really want to login  # For "public user" - remove it, we apparently really want to login
  unlink($r->dir_config('lonIDsDir')."/$handle.id");      unlink($r->dir_config('lonIDsDir')."/$handle.id");
     } elsif ($handle ne '') {          } else {
 # Indeed, a valid token is found  # Indeed, a valid token is found
  my $start_page =               &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
     &Apache::loncommon::start_page('Already logged in');      my $start_page = 
  my $end_page =           &Apache::loncommon::start_page('Already logged in');
     &Apache::loncommon::end_page();      my $end_page = 
  $r->print(          &Apache::loncommon::end_page();
               my $dest = '/adm/roles';
               if ($env{'form.firsturl'} ne '') {
                   $dest = $env{'form.firsturl'}; 
               }
       $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]logout[_4].',                   .'<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>'                    '<a href="'.$dest.'">','</a>','<a href="/adm/logout">','</a>').'</p>'
                  .'<p><a href="/adm/loginproblems.html">'.&mt('Login problems?').'</a></p>'  
                  .$end_page                   .$end_page
                  );                   );
         return OK;              return OK;
           }
     }      }
   
 # ---------------------------------------------------- No valid token, continue  # ---------------------------------------------------- No valid token, continue
Line 102  sub handler { Line 111  sub handler {
 # ----------------------------------------------------------- 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)) {  
  if ($httpbrowser=~/$_/i) {  
     $env{'form.interface'}='textual';  
         }  
     }  
   
     my $fullgraph=($env{'form.interface'} ne 'textual');  
   
     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 $domain = &Apache::lonnet::default_login_domain();      my $domain = &Apache::lonnet::default_login_domain();
       if ($lonhost ne '') {
           my $redirect = &check_loginvia($domain,$lonhost);
           if ($redirect) {
               $r->print($redirect);
               return OK;
           } 
       }
   
     if (($env{'form.domain'}) &&       if (($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 $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 $expire  = $r->dir_config('lonExpire');
Line 143  sub handler { Line 152  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();  
   
 # ------------------------------------------------------- Do the load balancing      my ($loadpercent,$userloadpercent);
     my $otherserver= &Apache::lonnet::absolute_url($host_name);      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'});
 # ---------------------------------------------------------- Are we overloaded?  
     if ((($userloadpercent>100.0)||($loadpercent>100.0))) {  
         my $unloaded=Apache::lonnet::spareserver($loadpercent,$userloadpercent);  
  if ($unloaded) { $otherserver=$unloaded; }  
     }  
   
 # ----------------------------------------------------------- Get announcements  # ----------------------------------------------------------- Get announcements
     my $announcements=&Apache::lonnet::getannounce();      my $announcements=&Apache::lonnet::getannounce();
Line 179  sub handler { Line 187  sub handler {
     if ($uextkey>2147483647) { $uextkey-=4294967296; }      if ($uextkey>2147483647) { $uextkey-=4294967296; }
   
 # -------------------------------------------------------- Store away log token  # -------------------------------------------------------- Store away log token
       my $tokenextras;
       if ($env{'form.role'}) {
           $tokenextras = '&role='.&escape($env{'form.role'});
       }
       if ($env{'form.symb'}) {
           if (!$tokenextras) {
               $tokenextras = '&';
           }
           $tokenextras .= '&symb='.&escape($env{'form.symb'});
       }
     my $logtoken=Apache::lonnet::reply(      my $logtoken=Apache::lonnet::reply(
        'tmpput:'.$ukey.$lkey.'&'.$firsturl,         '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 196  sub handler { Line 218  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 204  sub handler { Line 226  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  
     {  
  &Apache::lonnet::hostname($a) cmp  
     &Apache::lonnet::hostname($b);  
     }  
     keys(%all_hostnames)) {  
             next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid});  
     my $hostname = &Apache::lonnet::hostname($hostid);  
             next if ($last eq $hostname);  
             $spares.='<br /><a href="http://'.  
                 $hostname.  
                 '/adm/login?domain='.$authdomain.'">'.  
                 $hostname.'</a>';  
     $last=$hostname;  
         }          }
  $r->print(  my %all_hostnames = &Apache::lonnet::all_hostnames();
            '<html>'  foreach my $hostid (sort
           .'<head><title>'      {
           .&mt('The LearningOnline Network with CAPA')   &Apache::lonnet::hostname($a) cmp
           .'</title></head>'      &Apache::lonnet::hostname($b);
           .'<body bgcolor="#FFFFFF">'      }
           .'<h1>'.&mt('The LearningOnline Network with CAPA').'</h1>'      keys(%all_hostnames)) {
           .'<img src="/adm/lonKaputt/lonlogo_broken.gif" align="right" />'      next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid});
           .'<h3>'.&mt('This LON-CAPA server is temporarily not available for login.').'</h3>'      my $hostname = &Apache::lonnet::hostname($hostid);
           .'<p>'.&mt('Please attempt to login to one of the following servers:').'</p>'      next if (($last eq $hostname) || ($hostname eq ''));
           .$spares      $spares.='<br /><a href="http://'.
           .'</body>'   $hostname.
           .'</html>'   '/adm/login?domain='.$authdomain.'">'.
         );   $hostname.'</a>';
         return OK;      $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>');
       if ($spares) {
           $r->print('<p>'.&mt('Please attempt to login to one of the following servers:')
                    .'</p>'
                    .$spares);
       }
       $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=  my $pgbg=&Apache::loncommon::designparm('login.pgbg',$domain);
       ($fullgraph?&Apache::loncommon::designparm('login.pgbg',$domain):'#FFFFFF');  my $font=&Apache::loncommon::designparm('login.font',$domain);
     my $font=  my $link=&Apache::loncommon::designparm('login.link',$domain);
       ($fullgraph?&Apache::loncommon::designparm('login.font',$domain):'#000000');  my $vlink=&Apache::loncommon::designparm('login.vlink',$domain);
     my $link=  my $alink=&Apache::loncommon::designparm('login.alink',$domain);
       ($fullgraph?&Apache::loncommon::designparm('login.link',$domain):'#0000FF');  my $mainbg=&Apache::loncommon::designparm('login.mainbg',$domain);
     my $vlink=  my $loginbox_bg=&Apache::loncommon::designparm('login.sidebg',$domain);
       ($fullgraph?&Apache::loncommon::designparm('login.vlink',$domain):'#0000FF');  my $loginbox_header_bgcol=&Apache::loncommon::designparm('login.bgcol',$domain);
     my $alink=&Apache::loncommon::designparm('login.alink',$domain);  my $loginbox_header_textcol=&Apache::loncommon::designparm('login.textcol',$domain);
     my $mainbg=  my $logo=&Apache::loncommon::designparm('login.logo',$domain);
       ($fullgraph?&Apache::loncommon::designparm('login.mainbg',$domain):'#FFFFFF');  my $img=&Apache::loncommon::designparm('login.img',$domain);
     my $sidebg=  my $domainlogo=&Apache::loncommon::domainlogo($domain);
       ($fullgraph?&Apache::loncommon::designparm('login.sidebg',$domain):'#FFFFFF');  my $showbanner = 1;
     my $textcol =   my $showmainlogo = 1;
       ($fullgraph?&Apache::loncommon::designparm('login.textcol',$domain):'#000000');  if (defined(&Apache::loncommon::designparm('login.showlogo_img',$domain))) {
     my $bgcol =      $showbanner = &Apache::loncommon::designparm('login.showlogo_img',$domain);
       ($fullgraph?&Apache::loncommon::designparm('login.bgcol',$domain):'#FFFFFF');  }
     my $logo=&Apache::loncommon::designparm('login.logo',$domain);  if (defined(&Apache::loncommon::designparm('login.showlogo_logo',$domain))) {
     my $img=&Apache::loncommon::designparm('login.img',$domain);      $showmainlogo = &Apache::loncommon::designparm('login.showlogo_logo',$domain);
     my $domainlogo=&Apache::loncommon::domainlogo($domain);  }
     my $login=&Apache::loncommon::designparm('login.login',$domain);  my $showadminmail=&Apache::loncommon::designparm('login.adminmail',$domain);
     if ($login eq '') {  my $showcoursecat =
         $login = $iconpath.'/'.&mt('userauthentication.gif');  &Apache::loncommon::designparm('login.coursecatalog',$domain);
     }  my $shownewuserlink = 
     my $showbanner = 1;  &Apache::loncommon::designparm('login.newuser',$domain);
     my $showmainlogo = 1;  my $now=time;
     if (defined(&Apache::loncommon::designparm('login.showlogo_img',$domain))) {  my $js = (<<ENDSCRIPT);
         $showbanner = &Apache::loncommon::designparm('login.showlogo_img',$domain);  
     }  <script type="text/javascript" language="JavaScript">
     if (defined(&Apache::loncommon::designparm('login.showlogo_logo',$domain))) {  // <![CDATA[
         $showmainlogo = &Apache::loncommon::designparm('login.showlogo_logo',$domain);  function send()
     }  {
     my $showadminmail=&Apache::loncommon::designparm('login.adminmail',$domain);  this.document.server.elements.uname.value
     my $showcoursecat =  =this.document.client.elements.uname.value;
         &Apache::loncommon::designparm('login.coursecatalog',$domain);  
     my $loginheader =&Apache::loncommon::designparm('login.loginheader',$domain);  this.document.server.elements.udom.value
     my $shownewuserlink =   =this.document.client.elements.udom.value;
         &Apache::loncommon::designparm('login.newuser',$domain);  
     my $now=time;  uextkey=this.document.client.elements.uextkey.value;
     my $js = (<<ENDSCRIPT);  lextkey=this.document.client.elements.lextkey.value;
   initkeys();
  <script language="JavaScript">  
     function send()  this.document.server.elements.upass0.value
     {      =crypted(this.document.client.elements.upass$now.value.substr(0,15));
         this.document.server.elements.uname.value  this.document.server.elements.upass1.value
        =this.document.client.elements.uname.value;      =crypted(this.document.client.elements.upass$now.value.substr(15,15));
   this.document.server.elements.upass2.value
         this.document.server.elements.udom.value      =crypted(this.document.client.elements.upass$now.value.substr(30,15));
        =this.document.client.elements.udom.value;  
   
         this.document.server.elements.imagesuppress.value  
        =this.document.client.elements.imagesuppress.checked;  
   
         this.document.server.elements.embedsuppress.value  
        =this.document.client.elements.embedsuppress.checked;  
   
         this.document.server.elements.appletsuppress.value  
        =this.document.client.elements.appletsuppress.checked;  
   
         this.document.server.elements.fontenhance.value  
        =this.document.client.elements.fontenhance.checked;  
   
         this.document.server.elements.blackwhite.value  
        =this.document.client.elements.blackwhite.checked;  
   
         this.document.server.elements.remember.value  
        =this.document.client.elements.remember.checked;  
   
         uextkey=this.document.client.elements.uextkey.value;  this.document.client.elements.uname.value='';
         lextkey=this.document.client.elements.lextkey.value;  this.document.client.elements.upass$now.value='';
         initkeys();  
   
         this.document.server.elements.upass0.value  this.document.server.submit();
             =crypted(this.document.client.elements.upass$now.value.substr(0,15));  return false;
         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='';  function enableInput() {
         this.document.client.elements.upass$now.value='';      this.document.client.elements.upass$now.removeAttribute("readOnly");
       this.document.client.elements.uname.removeAttribute("readOnly");
       this.document.client.elements.udom.removeAttribute("readOnly");
       return;
   }
   
         this.document.server.submit();  // ]]>
         return false;  </script>
     }  
  </script>  
   
 ENDSCRIPT  ENDSCRIPT
   
 # --------------------------------------------------- Print login screen header  # --------------------------------------------------- Print login screen header
   
     my %add_entries = (topmargin    => "0",  my %add_entries = (
                        leftmargin   => "0",         bgcolor      => "$mainbg",
                        marginheight => "0",         text         => "$font",
                        marginwidth  => "0",         link         => "$link",
                        bgcolor      => "$pgbg",         vlink        => "$vlink",
                        text         => "$font",         alink        => "$alink",
                        link         => "$link",                 onload       => 'javascript:enableInput();',);
                        vlink        => "$vlink",  
                        alink        => "$alink",);  $r->print(&Apache::loncommon::start_page('The LearningOnline Network with CAPA Login',$js,
          { 'redirect'       => [$expire,'/adm/roles'], 
     $r->print(&Apache::loncommon::start_page('The LearningOnline Network with CAPA Login',$js,   'add_entries' => \%add_entries,
                                        { 'redirect'       => [$expire,'/adm/roles'],    'only_body'   => 1,}));
                                          'add_entries' => \%add_entries,  
                                          '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',
   'perc' => 'percent',            'perc'     => 'percent',
   'load' => 'Server Load',            'load'     => 'Server Load',
                   'userload' => 'User Load',            'userload' => 'User Load',
                   'about'  => 'About LON-CAPA',            'catalog'  => 'Course/Community Catalog',
                   'access' => 'Accessibility Options',            'log'      => 'Log in',
                   'catalog' => 'Course Catalog',            'help'     => 'Log-in Help',
   'log' => 'Log in',            'serv'     => 'Server',
   'help' => 'Log-in Help',            'servadm'  => 'Server Administration',
   'serv' => 'Server',            'helpdesk' => 'Contact Helpdesk',
                   'servadm' => 'Server Administration',            'forgotpw' => 'Forgot password?',
                   'helpdesk' => 'Contact Helpdesk',            'newuser'  => 'New User?',
                   'forgotpw' => 'Forgot password?',         );
                   'newuser'  => 'New User?',  
                   'options_headline' => 'Select Accessibility Options',  
                   'sprs_img' => 'Suppress rendering of images',  
                   'sprs_applet' => 'Suppress Java applets',  
                   'sprs_embed' => 'Suppress rendering of embedded multimedia',  
                   'sprs_font' => 'Increase font size',  
                   'sprs_blackwhite' => 'Switch to black and white mode',  
                   'remember' => 'Remember these settings for next login');  
 # -------------------------------------------------- Change password field name  # -------------------------------------------------- Change password field name
     my $forgotpw = &forgotpwdisplay(%lt);  
     my $loginhelp = &loginhelpdisplay(%lt);  my $forgotpw = &forgotpwdisplay(%lt);
   $forgotpw .= '<br />' if $forgotpw;
   my $loginhelp = &loginhelpdisplay($authdomain,%lt);
   $loginhelp .= '<br />' if $loginhelp;
   
 # ---------------------------------------------------- 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
   
     if ($fullgraph) {  $r->print(
  $r->print(      '<div class="LC_Box"'
   '<table width="100%" cellpadding=0 cellspacing=0 border=0>');     .' style="margin:0 auto; padding:10px; width:90%; height: auto; background-color:#FFFFFF;">'
     }  );
   
   #
   #  If the loadbalancing yielded just http:// because perhaps there's no loadbalancing?
   #  then just us a relative link to authenticate:
   #
   
     $r->print(<<ENDSERVERFORM);  $r->print(<<ENDSERVERFORM);
   <form name="server" action="$otherserver/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="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="upass0" value="" />
    <input type="hidden" name="upass1" value="" />     <input type="hidden" name="upass1" value="" />
    <input type="hidden" name="upass2" value="" />     <input type="hidden" name="upass2" value="" />
    <input type="hidden" name="udom" value="" />     <input type="hidden" name="udom" value="" />
    <input type="hidden" name="imagesuppress"  value="" />  
    <input type="hidden" name="appletsuppress"  value="" />  
    <input type="hidden" name="embedsuppress"  value="" />  
    <input type="hidden" name="fontenhance"  value="" />  
    <input type="hidden" name="blackwhite"  value="" />  
    <input type="hidden" name="remember"  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'});      $coursecatalog = &coursecatalog_link($lt{'catalog'}).'<br />';
     }  }
     my $newuserlink;  my $newuserlink;
     if ($shownewuserlink) {  if ($shownewuserlink) {
         $newuserlink = &newuser_link($lt{'newuser'});      $newuserlink = &newuser_link($lt{'newuser'}).'<br />';
     }  }
     if ($fullgraph) {  my $logintitle =
         $r->print(<<HEADER);      '<h2 class="LC_hcell"'
   <!-- The LON-CAPA Header -->     .' style="background:'.$loginbox_header_bgcol.';'
   <tr>     .' color:'.$loginbox_header_textcol.'">'
      .$lt{'log'}
      .'</h2>';
   
   my $noscript_warning='<noscript><span class="LC_warning"><b>'
                        .&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.')
                       .'</b></span></noscript>';
   my $helpdeskscript;
   my $contactblock = &contactdisplay(\%lt,$servadm,$showadminmail,
                                      $authdomain,\$helpdeskscript);
   
   my $loginform=(<<LFORM);
   <form name="client" action="" onsubmit="return(send())">
     <input type="hidden" name="lextkey" value="$lextkey" />
     <input type="hidden" name="uextkey" value="$uextkey" />
     <b><label for="uname">$lt{'un'}</label>:</b><br />
     <input type="text" name="uname" id="uname" size="15" value="$authusername" readonly="readonly" /><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 />
     <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="submit" value="$lt{'log'}" />
   </form>
   LFORM
   
    <!-- Row 1 Columns 2-4 -->      if ($showbanner) {
    <td width="100%" height=75 colspan=4 align="left" valign="top" bgcolor="$pgbg">          $r->print(<<HEADER);
   <!-- The LON-CAPA Header -->
   <div style="background:$pgbg;margin:0;width:100%;">
     <img src="$img" border="0" alt="The Learning Online Network with CAPA" />
   </div>
 HEADER  HEADER
         if ($showbanner) {      }
             $r->print(<<ENDBANNER);       $r->print(<<ENDTOP);
 <img src="$img" border=0 alt="The Learning Online Network with CAPA" />  <div style="float:left;margin-top:0;">
 ENDBANNER  <div class="LC_Box" style="background:$loginbox_bg;">
         }    $logintitle
         $r->print(<<ENDSTART);    $loginform
    </td>    $noscript_warning
   </tr>  </div>
     
   <!-- The gray bar that starts the two table frames -->  <div class="LC_Box" style="padding-top: 10px;">
   <tr>    $loginhelp
     $forgotpw
    <!-- Row 2 Column 1 -->    $contactblock
    <td width=182 height=27 bgcolor="$sidebg">&nbsp;</td>    $newuserlink
     $coursecatalog
    <!-- Row 2 Column 2 -->  </div>
    <td width=27 height=27 align="left" background="$iconpath/filltop.gif"><img src="$iconpath/upperleft.gif" border=0 alt="" /></td>  </div>
   
    <!-- 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', 'about', and 'catalog' links -->  
    <!-- Row 3 Column 1 -->  
    <td valign="top" height="60" align="left" bgcolor="$sidebg">  
     <table cellpadding="0" cellspacing="2" border="0">  
      <tr>  
       <td>&nbsp;</td>  
       <td><a href="/adm/login?interface=textual"><b>$lt{'access'}</b></a></td>  
      </tr>  
      <tr>  
       <td>&nbsp;</td>  
       <td><a href="/adm/about.html"><b>$lt{'about'}</b></a></td>  
      </tr>$coursecatalog  
      <tr>  
       <td colspan="2">&nbsp;</td>  
      </tr>  
     </table>  
    </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%" bgcolor="$mainbg">  
 ENDSTART  
         if ($showmainlogo) {  
             $r->print(<<ENDLOGO);  
     <center>  
      <img src="$logo" alt="" />  
     </center>  
 ENDLOGO  
         }  
         $r->print(<<ENDTOP);  
    </td>  
   
    <!-- Row 3 Column 4 -->  <div>
    <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  ENDTOP
     } else {      if ($showmainlogo) {
         $r->print('<h1>The Learning<i>Online</i> Network with CAPA</h1>'          $r->print(' <img src="'.$logo.'" alt="" />'."\n");
                  .'<h2>'.&mt('Text-based Interface Login').'</h2>'      }
                  .$announcements);  $r->print(<<ENDTOP);
     }  $announcements
     $r->print('<form name="client" onsubmit="return(send())">');  </div>
     unless ($fullgraph) {  <hr style="clear:both;" />
         $r->print(<<ENDACCESSOPTIONS);  ENDTOP
 <h3>$lt{'options_headline'}</h3>      my ($domainrow,$serverrow,$loadrow,$userloadrow,$versionrow);
 <label><input type="checkbox" name="imagesuppress" /> $lt{'sprs_img'}</label><br />      $domainrow = <<"END";
 <label><input type="checkbox" name="appletsuppress" /> $lt{'sprs_applet'}</label><br />  
 <label><input type="checkbox" name="embedsuppress" /> $lt{'sprs_embed'}</label><br />  
 <label><input type="checkbox" name="fontenhance" /> $lt{'sprs_font'}</label><br />  
 <label><input type="checkbox" name="blackwhite" /> $lt{'sprs_blackwhite'}</label><br />  
 <br />  
 <input type="checkbox" name="remember" /> $lt{'remember'}<hr />  
 ENDACCESSOPTIONS  
     } else {  
         $r->print(<<ENDNOOPT);  
 <input type="hidden" name="imagesuppress"  value="" />  
 <input type="hidden" name="embedsuppress"  value="" />  
 <input type="hidden" name="appletsuppress"  value="" />  
 <input type="hidden" name="fontenhance"  value="" />  
 <input type="hidden" name="blackwhite"  value="" />  
 <input type="hidden" name="remember"  value="" />  
 ENDNOOPT  
     }  
     my $logintitle;  
     if ($loginheader eq 'text') {  
         $logintitle = '<td bgcolor="'.$bgcol.'" colspan="2">&nbsp;&nbsp;&nbsp;<b><font size="+1" color="'.$textcol.'">'.$lt{'log'}.'</font></b></td>';  
     } else {  
         $logintitle = '<td bgcolor="'.$sidebg.'" colspan="2"><img src="'.$login.'" alt="'.  
                       &mt('User Authentication').'" /></td>';  
     }  
     my $noscript_warning='<td colspan="2" bgcolor="'.$mainbg.'">'  
                         .'<noscript><div class="LC_warning"><font size="-1">'  
                         .&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.')  
                         .'</font></div></noscript></td>';  
     $r->print(<<ENDLOGIN);  
      <input type="hidden" name="lextkey" value="$lextkey">  
      <input type="hidden" name="uextkey" value="$uextkey">  
   
      <!-- Start the sub-table for text and input alignment -->  
      <table border=0 cellspacing=0 cellpadding=0>  
       <tr>$logintitle</tr>  
       <tr>$noscript_warning</tr>  
       <tr>  
        <td bgcolor="$mainbg"><br /><font size=-1><b>&nbsp;&nbsp;&nbsp;<label for="uname">$lt{'un'}</label>:</b></font></td>  
        <td bgcolor="$mainbg"><br /><input type="text" name="uname" size="10" value="$authusername" /></td>  
       </tr>  
       <tr>  
        <td bgcolor="$mainbg"><font size=-1><b>&nbsp;&nbsp;&nbsp;<label for="upass$now">$lt{'pw'}</label>:</b></font></td>  
        <td bgcolor="$mainbg"><input type="password" name="upass$now" size="10" /></td>  
       </tr>  
       <tr>  
        <td bgcolor="$mainbg"><font size=-1><b>&nbsp;&nbsp;&nbsp;<label for="udom">$lt{'dom'}</label>:</b></font></td>  
        <td bgcolor="$mainbg"><input type="text" name="udom" size="10" value="$authdomain" /></td>  
       </tr>  
       <tr>  
        <td bgcolor="$mainbg">&nbsp;</td>  
        <td bgcolor="$mainbg" valign="bottom" align="center">  
         <br />  
         <input type="submit" value="$lt{'log'}" />  
        </td>  
       </tr>  
       <tr>  
        <td bgcolor="$mainbg" valign="bottom" align="left" colspan="2">  
         $loginhelp  
         $forgotpw  
         $newuserlink  
         <br />  
        </td>  
       </tr>  
      </table>  
      <!-- End sub-table -->  
     </form>  
 ENDLOGIN  
     if ($fullgraph) {  
         my $helpdeskscript;  
         my $contactblock = &contactdisplay(\%lt,$servadm,$showadminmail,  
                                   $version,$authdomain,\$helpdeskscript);  
  $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 3 -->  
 <td bgcolor="$mainbg">$announcements</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;$lt{'dom'}:&nbsp;</b></small>          <small><b>$lt{'dom'}:&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;$domain</tt></small>
        </td>         </td>
       </tr>        </tr>
   END
       $serverrow = <<"END";
       <tr>        <tr>
        <td bgcolor="$sidebg" align="left" valign="top">         <td  align="left" valign="top">
         <small><b>&nbsp;&nbsp;&nbsp;$lt{'serv'}:&nbsp;</b></small>          <small><b>$lt{'serv'}:&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;$lonhost ($role)</tt></small>
        </td>         </td>
       </tr>        </tr>
   END
       if ($loadlim) {
           $loadrow = <<"END";
       <tr>        <tr>
        <td bgcolor="$sidebg" align="left" valign="top"><span class="LC_nobreak">         <td align="left" valign="top">
         <small><b>&nbsp;&nbsp;&nbsp;$lt{'load'}:&nbsp;</b></small></span>          <small><b>$lt{'load'}:&nbsp;</b></small>
        </td>         </td>
        <td bgcolor="$sidebg" align="left" valign="top">         <td align="left" valign="top">
         <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 bgcolor="$sidebg" align="left" valign="top"><span class="LC_nobreak">         <td align="left" valign="top">
         <small><b>&nbsp;&nbsp;&nbsp;$lt{'userload'}:&nbsp;</b></small></span>          <small><b>$lt{'userload'}:&nbsp;</b></small>
        </td>         </td>
        <td bgcolor="$sidebg" align="left" valign="top">         <td align="left" valign="top">
         <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>
          <td colspan="2" align="left">
           <small>$version</small>
          </td>
         </tr>
   END
       }
   
   $r->print(<<ENDDOCUMENT);
       <div style="float: left;">
        <table border="0" cellspacing="0" cellpadding="0">
   $domainrow
   $serverrow
   $loadrow    
   $userloadrow
   $versionrow
      </table>       </table>
      <br />      </div>
     $contactblock      <div style="float: right;">
    </td>      $domainlogo
       </div>
    <!-- Row 5 Column 2 -->      <br style="clear:both;" />
    <td width=27 background="$iconpath/fillleft.gif"><img src="$iconpath/fillleft.gif" alt="" /></td>   </div>
   
    <!-- Row 5 Column 3 -->  
    <td width="100%" valign="bottom" bgcolor="$mainbg">  
 $domainlogo  
 </td>  
   
    <!-- Row 5 Column 4 -->  
    <td width=27 background="$iconpath/fillright.gif"><img src="$iconpath/fillright.gif" alt="" /></td>  
   </tr>  
   <tr>  
   
    <!-- Row 6 Column 1 -->  
    <td bgcolor="$sidebg">&nbsp;</td>  
   
    <!-- Row 6 Column 2 -->  
    <td align="left" background="$iconpath/fillbottom.gif"><img src="$iconpath/lowerleft.gif" alt="" /></td>  
   
    <!-- Row 6 Column 3 -->  
    <td background="$iconpath/fillbottom.gif"><img src="$iconpath/fillbottom.gif" alt="" /></td>  
   
    <!-- Row 6 Column 4 -->  
    <td align="right" background="$iconpath/fillbottom.gif"><img src="$iconpath/lowerright.gif" alt="" /></td>  
   </tr>  
  </table>  
   
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 // the if prevents the script error if the browser can not handle this  // the if prevents the script error if the browser can not handle this
 if ( document.client.uname ) { document.client.uname.focus(); }  if ( document.client.uname ) { document.client.uname.focus(); }
   // ]]>
 </script>  </script>
 $helpdeskscript  $helpdeskscript
   
 ENDDOCUMENT  ENDDOCUMENT
 }  
     my %endargs = ( 'noredirectlink' => 1, );      my %endargs = ( 'noredirectlink' => 1, );
     $r->print(&Apache::loncommon::end_page(\%endargs));      $r->print(&Apache::loncommon::end_page(\%endargs));
     return OK;      return OK;
 }  }
   
   sub check_loginvia {
       my ($domain,$lonhost) = @_;
       if ($domain eq '' || $lonhost eq '') {
           return;
       }
       my %domconfhash = &Apache::loncommon::get_domainconf($domain);
       my $loginvia = $domconfhash{$domain.'.login.loginvia_'.$lonhost};
       my $loginvia_exempt = $domconfhash{$domain.'.login.loginvia_exempt_'.$lonhost};
       my $output;
       if ($loginvia ne '') {
           my $noredirect;
           my $ip = $ENV{'REMOTE_ADDR'};
           if ($ip eq '127.0.0.1') {
               $noredirect = 1;
           } else {
               if ($loginvia_exempt ne '') {
                   my @exempt = split(',',$loginvia_exempt);
                   if (grep(/^\Q$ip\E$/,@exempt)) {
                       $noredirect = 1;
                   }
               }
           }
           unless ($noredirect) {
               my ($newhost,$path);
               if ($loginvia =~ /:/) {
                   ($newhost,$path) = split(':',$loginvia);
               } else {
                   $newhost = $loginvia;
               }
               if ($newhost ne $lonhost) {
                   if (&Apache::lonnet::hostname($newhost) ne '') {
                       $output = &redirect_page($newhost,$path);
                   }
               }
           }
       }
       return $output;
   }
   
   sub redirect_page {
       my ($desthost,$path) = @_;
       my $protocol = $Apache::lonnet::protocol{$desthost};
       $protocol = 'http' if ($protocol ne 'https');
       unless ($path =~ m{^/}) {
           $path = '/'.$path;
       }
       my $url = $protocol.'://'.&Apache::lonnet::hostname($desthost).$path;
       if ($env{'form.firsturl'} ne '') {
           $url .='?firsturl='.$env{'form.firsturl'};
       }
       my $start_page = &Apache::loncommon::start_page('Switching Server ...',undef,
                                                       {'redirect' => [0,$url],});
       my $end_page   = &Apache::loncommon::end_page();
       return $start_page.$end_page;
   }
   
 sub contactdisplay {  sub contactdisplay {
     my ($lt,$servadm,$showadminmail,$version,$authdomain,$helpdeskscript) = @_;      my ($lt,$servadm,$showadminmail,$authdomain,$helpdeskscript) = @_;
     my $contactblock;      my $contactblock;
     my $showhelpdesk = 0;      my $showhelpdesk = 0;
     my $requestmail = $Apache::lonnet::perlvar{'lonSupportEMail'};      my $requestmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
Line 681  sub contactdisplay { Line 628  sub contactdisplay {
         $showhelpdesk = 1;          $showhelpdesk = 1;
     }      }
     if ($servadm && $showadminmail) {      if ($servadm && $showadminmail) {
         $contactblock .= '<b>&nbsp;&nbsp;&nbsp;'.$$lt{'servadm'}.':</b><br />'.          $contactblock .= $$lt{'servadm'}.':<br />'.
                          '<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$servadm.'</tt><br />&nbsp;<br />';                           '<tt>'.$servadm.'</tt><br />';
     }      }
     if ($showhelpdesk) {      if ($showhelpdesk) {
         $contactblock .= '<b>&nbsp;&nbsp;&nbsp;<a href="javascript:helpdesk()"><font size="+1">'.$lt->{'helpdesk'}.'</font></a></b><br />';          $contactblock .= '<a href="javascript:helpdesk()">'.$lt->{'helpdesk'}.'</a><br />';
         my $thisurl = &escape('/adm/login');          my $thisurl = &escape('/adm/login');
         $$helpdeskscript = <<"ENDSCRIPT";          $$helpdeskscript = <<"ENDSCRIPT";
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 function helpdesk() {  function helpdesk() {
     var codedom = document.client.udom.value;      var codedom = document.client.udom.value;
     if (codedom == '') {      if (codedom == '') {
Line 698  function helpdesk() { Line 646  function helpdesk() {
     document.location.href = "/adm/helpdesk?"+querystr;      document.location.href = "/adm/helpdesk?"+querystr;
     return;      return;
 }  }
   // ]]>
 </script>  </script>
 ENDSCRIPT  ENDSCRIPT
     }      }
     $contactblock .= <<"ENDBLOCK";  
      &nbsp;&nbsp;&nbsp;$version  
 ENDBLOCK  
     return $contactblock;      return $contactblock;
 }  }
   
Line 711  sub forgotpwdisplay { Line 657  sub forgotpwdisplay {
     my (%lt) = @_;      my (%lt) = @_;
     my $prompt_for_resetpw = 1;       my $prompt_for_resetpw = 1; 
     if ($prompt_for_resetpw) {      if ($prompt_for_resetpw) {
         return '<br />&nbsp;&nbsp;&nbsp;<a href="/adm/resetpw">'.$lt{'forgotpw'}.'</a></b><br />';          return '<a href="/adm/resetpw">'.$lt{'forgotpw'}.'</a>';
     }      }
     return;      return;
 }  }
   
 sub loginhelpdisplay {  sub loginhelpdisplay {
     my (%lt) = @_;      my ($authdomain,%lt) = @_;
     my $login_help = 1;      my $login_help = 1;
     if ($login_help) {      if ($login_help) {
         return '&nbsp;&nbsp;&nbsp;<a href="/adm/loginproblems.html">'.$lt{'help'}.'</a></b>';          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;      return;
 }  }
Line 728  sub loginhelpdisplay { Line 684  sub loginhelpdisplay {
 sub coursecatalog_link {  sub coursecatalog_link {
     my ($linkname) = @_;      my ($linkname) = @_;
     return <<"END";      return <<"END";
      <tr>        <a href="/adm/coursecatalog">$linkname</a>
       <td>&nbsp;</td>  
       <td><a href="/adm/coursecatalog"><b>$linkname</b></a></td>  
      </tr>  
 END  END
 }  }
   
 sub newuser_link {  sub newuser_link {
     my ($linkname) = @_;      my ($linkname) = @_;
     return '&nbsp;&nbsp;&nbsp;<a href="/adm/createaccount"><b>'.$linkname.'</b></a><br />';      return '<a href="/adm/createaccount">'.$linkname.'</a>';
 }  }
   
 1;  1;

Removed from v.1.106.2.2  
changed lines
  Added in v.1.150


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.