--- loncom/auth/lonlogin.pm 2003/02/04 16:03:25 1.31 +++ loncom/auth/lonlogin.pm 2005/04/28 01:25:08 1.55.2.2 @@ -1,7 +1,7 @@ # The LearningOnline Network # Login Screen # -# $Id: lonlogin.pm,v 1.31 2003/02/04 16:03:25 www Exp $ +# $Id: lonlogin.pm,v 1.55.2.2 2005/04/28 01:25:08 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,40 +25,98 @@ # # 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; use strict; use Apache::Constants qw(:common); +use CGI::Cookie(); use Apache::File (); use Apache::lonnet(); use Apache::loncommon(); +use Apache::lonauth(); +use Apache::lonlocal; sub handler { my $r = shift; - $r->content_type('text/html'); &Apache::loncommon::no_cache($r); + &Apache::lonlocal::get_language_handle($r); + &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; return OK if $r->header_only; +# Are we re-routing? + if (-e '/home/httpd/html/lon-status/reroute.txt') { + &Apache::lonauth::reroute($r); + return OK; + } + +# -------------------------------- Prevent users from attempting to login twice + my %cookies=CGI::Cookie->parse($r->header_in('Cookie')); + my $lonid=$cookies{'lonID'}; + my $cookie; + if ($lonid) { + my $handle=$lonid->value; + $handle=~s/\W//g; + my $lonidsdir=$r->dir_config('lonIDsDir'); + if ((-e "$lonidsdir/$handle.id") && ($handle ne '')) { +# Indeed, a valid token is found + my $bodytag=&Apache::loncommon::bodytag('Already logged in'); + $r->print(< + +Already logged in + + +$bodytag +

You are already logged in

+

Please either continue the current session or +logout.

+

+Problems?

+ + +ENDFAILED + return OK; + } + } + +# ---------------------------------------------------- No valid token, continue + &Apache::loncommon::get_unprocessed_cgi - ($ENV{'QUERY_STRING'},['interface','username','domain','firsturl']); + ($ENV{'QUERY_STRING'}.'&'.$ENV{'request.querystring'}, + ['interface','username','domain','firsturl','localpath','localres']); + +# ----------------------------------------------------------- Process Interface $ENV{'form.interface'}=~s/\W//g; - my $fullgraph=($ENV{'form.interface'} ne 'textual'); + my $textbrowsers=$r->dir_config('lonTextBrowsers'); + my $httpbrowser=$ENV{"HTTP_USER_AGENT"}; + + foreach (split(/\:/,$textbrowsers)) { + if ($httpbrowser=~/$_/i) { + $ENV{'form.interface'}='textual'; + } + } - my $iconpath= 'http://'.$ENV{'HTTP_HOST'}.':8080'. + my $fullgraph=($ENV{'form.interface'} ne 'textual'); + my $port_to_use=$r->dir_config('lonhttpdPort'); + if (!defined($port_to_use)) { + $port_to_use='8080'; + } + my $iconpath= 'http://'.$ENV{'HTTP_HOST'}.':'.$port_to_use. $r->dir_config('lonIconsURL'); my $domain = $r->dir_config('lonDefDomain'); + my $testdomain=(split(/\./,$ENV{'HTTP_HOST'}))[0]; + foreach my $posdom (values(%Apache::lonnet::hostdom)) { + if (lc($posdom) eq lc($testdomain)) { $domain=$testdomain; } + } + if (($ENV{'form.domain'}) && + ($Apache::lonnet::domaindescription{$ENV{'form.domain'}})) { + $domain=$ENV{'form.domain'}; + } my $role = $r->dir_config('lonRole'); my $loadlim = $r->dir_config('lonLoadLim'); my $servadm = $r->dir_config('lonAdmEMail'); @@ -66,6 +124,8 @@ sub handler { my $lonhost = $r->dir_config('lonHostID'); my $tabdir = $r->dir_config('lonTabDir'); my $include = $r->dir_config('lonIncludes'); + my $expire = $r->dir_config('lonExpire'); + my $version = $r->dir_config('lonVersion'); # --------------------------------------------- Default values for login fields @@ -74,22 +134,27 @@ sub handler { # ---------------------------------------------------------- Determine own load my $loadavg; - { - my $loadfile=Apache::File->new('/proc/loadavg'); - $loadavg=<$loadfile>; - } + { + my $loadfile=Apache::File->new('/proc/loadavg'); + $loadavg=<$loadfile>; + } $loadavg =~ s/\s.*//g; my $loadpercent=100*$loadavg/$loadlim; + my $userloadpercent=&Apache::lonnet::userload(); # ------------------------------------------------------- Do the load balancing my $otherserver='http://'.$ENV{'SERVER_NAME'}; my $firsturl= ($ENV{'request.firsturl'}?$ENV{'request.firsturl'}:$ENV{'form.firsturl'}); # ---------------------------------------- Are we access server and overloaded? - if (($role eq 'access') && ($loadpercent>100.0)) { - $otherserver=Apache::lonnet::spareserver($loadpercent); + if (($role eq 'access') && + (($userloadpercent>100.0)||($loadpercent>100.0))) { + my $unloaded=Apache::lonnet::spareserver($loadpercent,$userloadpercent); + if ($unloaded) { $otherserver=$unloaded; } } +# ----------------------------------------------------------- Get announcements + my $announcements=&Apache::lonnet::getannounce(); # -------------------------------------------------------- Set login parameters my @hexstr=('0','1','2','3','4','5','6','7', @@ -145,11 +210,15 @@ ENDTROUBLE # ----------------------------------------------- Apparently we are in business - my $domainlogo=&Apache::loncommon::domainlogo(); + my $domainlogo=&Apache::loncommon::domainlogo($domain); + $servadm=~s/\,/\
/g; + $sysadm=~s/\,/\
/g; + # --------------------------------------------------- Print login screen header $r->print(< + The LearningOnline Network with CAPA Login ENDHEADER @@ -160,15 +229,39 @@ ENDHEADER } # ----------------------------------------------------------- Front page design - my $pgbg=&Apache::loncommon::designparm('login.pgbg'); - my $font=&Apache::loncommon::designparm('login.font'); - my $link=&Apache::loncommon::designparm('login.link'); - my $vlink=&Apache::loncommon::designparm('login.vlink'); - my $alink=&Apache::loncommon::designparm('login.alink'); - my $mainbg=&Apache::loncommon::designparm('login.mainbg'); - my $sidebg=&Apache::loncommon::designparm('login.sidebg'); - my $logo=&Apache::loncommon::designparm('login.logo'); - my $img=&Apache::loncommon::designparm('login.img'); + my $pgbg= + ($fullgraph?&Apache::loncommon::designparm('login.pgbg',$domain):'#FFFFFF'); + my $font= + ($fullgraph?&Apache::loncommon::designparm('login.font',$domain):'#000000'); + my $link= + ($fullgraph?&Apache::loncommon::designparm('login.link',$domain):'#0000FF'); + my $vlink= + ($fullgraph?&Apache::loncommon::designparm('login.vlink',$domain):'#0000FF'); + my $alink=&Apache::loncommon::designparm('login.alink',$domain); + my $mainbg= + ($fullgraph?&Apache::loncommon::designparm('login.mainbg',$domain):'#FFFFFF'); + my $sidebg= + ($fullgraph?&Apache::loncommon::designparm('login.sidebg',$domain):'#FFFFFF'); + my $logo=&Apache::loncommon::designparm('login.logo',$domain); + my $img=&Apache::loncommon::designparm('login.img',$domain); + +# ----------------------------------------------------------------------- Texts + +my %lt=&Apache::lonlocal::texthash( + 'un' => 'Username', + 'pw' => 'Password', + 'dom' => 'Domain', + 'perc' => 'percent', + 'load' => 'Load', + 'userload' => 'User Load', + 'about' => 'aboutlon.gif', + 'access' => 'accessbutton.gif', + 'auth' => 'userauthentication.gif', + 'log' => 'Log in', + 'help' => 'Help', + 'serv' => 'Server', + 'servadm' => 'Server Administration', + 'sysadm' => 'System Administration'); # ---------------------------------------------------------- Serve rest of page @@ -186,6 +279,24 @@ ENDHEADER this.document.server.elements.udom.value =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; lextkey=this.document.client.elements.lextkey.value; initkeys(); @@ -206,12 +317,20 @@ ENDSCRIPT $r->print(< - - - - - - + + + + + + + + + + + + + + ENDSERVERFORM if ($fullgraph) { $r->print(< - Accessibility Options + Accessibility Options
- About LON-CAPA + About LON-CAPA @@ -253,7 +372,7 @@ ENDSERVERFORM - +
@@ -268,32 +387,57 @@ ENDSERVERFORM ENDTOP +} else { + $r->print('

The LearningOnline Network with CAPA

Text-based Interface Login

'.$announcements); +} + $r->print('
'); + unless ($fullgraph) { + $r->print(<Select Accessibility Options + Suppress rendering of images
+ Suppress Java applets
+ Suppress rendering of embedded multimedia
+ Increase font size
+ Switch to black and white mode
+

If you have accessibility needs that are not addressed by this interface, +please +contact the system administrator at $sysadm.


+ Remember these settings for next login
+ENDACCESSOPTIONS +} else { + $r->print(< + + + + + +ENDNOOPT } $r->print(< - + - + - + - + - +
User Authentication
User Authentication

   User Name:

   $lt{'un'}:

   Password:   $lt{'pw'}:
   Domain:   $lt{'dom'}:
   Help   $lt{'help'}
- +
@@ -307,6 +451,9 @@ ENDLOGIN + +$announcements + @@ -318,7 +465,7 @@ ENDLOGIN + + + +
-    Domain:  +    $lt{'dom'}:   $domain @@ -326,7 +473,7 @@ ENDLOGIN
-    Server:  +    $lt{'serv'}:   $lonhost ($role) @@ -334,19 +481,28 @@ ENDLOGIN
-    Load:  +    $lt{'load'}:  + +  $loadpercent $lt{'perc'} +
+    $lt{'userload'}:  -  $loadpercent percent +  $userloadpercent $lt{'perc'}

-    System Administration:
+    $lt{'sysadm'}:
      $sysadm
-    Server Administration:
-       $servadm
 
+    $lt{'servadm'}:
+       $servadm
 
+    $version
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.