--- loncom/auth/lonlogin.pm 2002/03/23 21:06:54 1.15 +++ loncom/auth/lonlogin.pm 2003/02/04 16:03:25 1.31 @@ -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.31 2003/02/04 16:03:25 www 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,7 +48,16 @@ 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'},['interface','username','domain','firsturl']); + + $ENV{'form.interface'}=~s/\W//g; + + my $fullgraph=($ENV{'form.interface'} ne 'textual'); + + my $iconpath= 'http://'.$ENV{'HTTP_HOST'}.':8080'. + $r->dir_config('lonIconsURL'); my $domain = $r->dir_config('lonDefDomain'); my $role = $r->dir_config('lonRole'); my $loadlim = $r->dir_config('lonLoadLim'); @@ -56,6 +67,12 @@ sub handler { my $tabdir = $r->dir_config('lonTabDir'); my $include = $r->dir_config('lonIncludes'); +# --------------------------------------------- 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'); @@ -64,11 +81,13 @@ sub handler { $loadavg =~ s/\s.*//g; my $loadpercent=100*$loadavg/$loadlim; +# ------------------------------------------------------- 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(); + $otherserver=Apache::lonnet::spareserver($loadpercent); } # -------------------------------------------------------- Set login parameters @@ -91,10 +110,42 @@ 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. + +
Please attempt to login to one of the following servers:
If the problem persists, please contact $servadm.