--- loncom/auth/lonlogin.pm 2002/03/23 21:06:54 1.15 +++ loncom/auth/lonlogin.pm 2003/08/26 19:48:41 1.44.2.2 @@ -1,7 +1,7 @@ # The LearningOnline Network # Login Screen # -# $Id: lonlogin.pm,v 1.15 2002/03/23 21:06:54 www Exp $ +# $Id: lonlogin.pm,v 1.44.2.2 2003/08/26 19:48:41 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,6 +30,8 @@ # 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; @@ -46,8 +48,35 @@ sub handler { $r->send_http_header; return OK if $r->header_only; - my $iconpath= $r->dir_config('lonIconsURL'); + + &Apache::loncommon::get_unprocessed_cgi + ($ENV{'QUERY_STRING'}.'&'.$ENV{'request.querystring'}, + ['interface','username','domain','firsturl','localpath','localres']); + +# ----------------------------------------------------------- Process Interface + $ENV{'form.interface'}=~s/\W//g; + + my $textbrowsers=$r->dir_config('lonTextBrowsers'); + my $httpbrowser=$ENV{"HTTP_USER_AGENT"}; + + foreach (split(/\:/,$textbrowsers)) { + if ($httpbrowser=~/$_/i) { + $ENV{'form.interface'}='textual'; + } + } + + 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'); + 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'); @@ -55,20 +84,33 @@ 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 + + my $authusername=($ENV{'form.username'}?$ENV{'form.username'}:''); + my $authdomain=($ENV{'form.domain'}?$ENV{'form.domain'}:$domain); + +# ---------------------------------------------------------- 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'}; + 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(); + if (($role eq 'access') && + (($userloadpercent>100.0)||($loadpercent>100.0))) { + my $unloaded=Apache::lonnet::spareserver($loadpercent,$userloadpercent); + if ($unloaded) { $otherserver=$unloaded; } } # -------------------------------------------------------- Set login parameters @@ -91,14 +133,50 @@ sub handler { my $uextkey=hex($ukey); if ($uextkey>2147483647) { $uextkey-=4294967296; } +# -------------------------------------------------------- Store away log token my $logtoken=Apache::lonnet::reply( 'tmpput:'.$ukey.$lkey.'&'.$firsturl, $lonhost); +# ------------------- If we cannot talk to ourselves, we are in serious trouble + + if ($logtoken eq 'con_lost') { + my $spares=''; + foreach (keys %Apache::lonnet::hostname) { + if ($_ ne $lonhost) { + $spares.='
'. + $Apache::lonnet::hostname{$_}.''; + if ($Apache::lonnet::spareid{$_}) { + $spares.=' (preferred)'; + } + } + } + $r->print(< +The LearningOnline Network with CAPA + + +

This LON-CAPA server is temporarily not available for login

+

Please attempt to login to one of the following servers:

$spares +

If the problem persists, please contact $servadm.

+ + +ENDTROUBLE + return OK; + } + +# ----------------------------------------------- Apparently we are in business + + my $domainlogo=&Apache::loncommon::domainlogo(); + $servadm=~s/\,/\
/g; + $sysadm=~s/\,/\
/g; + # --------------------------------------------------- Print login screen header $r->print(< + The LearningOnline Network with CAPA Login ENDHEADER @@ -107,11 +185,30 @@ ENDHEADER my $jsh=Apache::File->new($include."/londes.js"); $r->print(<$jsh>); } + +# ----------------------------------------------------------- Front page design + 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); + + # ---------------------------------------------------------- Serve rest of page - $r->print(<print(< + +ENDSCRIPT - - + if ($fullgraph) { + $r->print( + '
'); + } + $r->print(< - - - - - + + + + + + + + + + + + + + - +ENDSERVERFORM + if ($fullgraph) { $r->print(< - + - + - + - + - + - - + - - + - + - + - - + - + - + - + - + - + - +
The Learning Online Network with CAPA
  
- + + Accessibility Options
- + About LON-CAPA
+
- +
-
+
+ENDTOP +} else { + $r->print('

The LearningOnline Network with CAPA

Text-based Interface Login

'); +} + $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 Name:


   User Name:

   Password:   Password:
   Domain:   Domain:
+    Help
- +
- +ENDLOGIN + if ($fullgraph) { + $r->print(< -
+
- - - - - - + + + +
+    Domain:  +  $domain
+    Server:  +  $lonhost ($role)
+    Load:  +  $loadpercent percent
+    User Load:  + +  $userloadpercent percent +

   System Administration:
      $sysadm
   Server Administration:
-       $servadm +       $servadm
 
+    $version
+$domainlogo +
  
- - + + ENDDOCUMENT +} + $r->print(''); return OK; }