--- loncom/auth/lonlogin.pm 2009/05/16 01:19:29 1.121 +++ loncom/auth/lonlogin.pm 2012/08/27 00:52:45 1.152 @@ -1,7 +1,7 @@ # The LearningOnline Network # Login Screen # -# $Id: lonlogin.pm,v 1.121 2009/05/16 01:19:29 raeburn Exp $ +# $Id: lonlogin.pm,v 1.152 2012/08/27 00:52:45 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,7 +46,7 @@ sub handler { (join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'}, $ENV{'REDIRECT_QUERY_STRING'}), ['interface','username','domain','firsturl','localpath','localres', - 'token']); + 'token','role','symb']); if (!defined($env{'form.firsturl'})) { &Apache::lonacc::get_posted_cgi($r,['firsturl']); } @@ -64,32 +64,41 @@ sub handler { # 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); return OK; } + $env{'form.firsturl'} =~ s/(`)/'/g; # -------------------------------- Prevent users from attempting to login twice 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 - unlink($r->dir_config('lonIDsDir')."/$handle.id"); - } elsif ($handle ne '') { + unlink($r->dir_config('lonIDsDir')."/$handle.id"); + } else { # 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( + &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle); + my $start_page = + &Apache::loncommon::start_page('Already logged in'); + my $end_page = + &Apache::loncommon::end_page(); + my $dest = '/adm/roles'; + if ($env{'form.firsturl'} ne '') { + $dest = $env{'form.firsturl'}; + } + $r->print( $start_page - .'

'.&mt('You are already logged in!').'

' + .'

'.&mt('You are already logged in!').'

' .'

'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].', - '','','','').'

' - .'

'.&mt('Login problems?').'

' + '','','','').'

' .$end_page ); - return OK; + return OK; + } } # ---------------------------------------------------- No valid token, continue @@ -107,15 +116,24 @@ sub handler { my $iconpath= &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL')); + my $lonhost = $r->dir_config('lonHostID'); 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'}) && (&Apache::lonnet::domain($env{'form.domain'},'description'))) { $domain=$env{'form.domain'}; } my $role = $r->dir_config('lonRole'); my $loadlim = $r->dir_config('lonLoadLim'); + my $uloadlim= $r->dir_config('lonUserLoadLim'); my $servadm = $r->dir_config('lonAdmEMail'); - my $lonhost = $r->dir_config('lonHostID'); my $tabdir = $r->dir_config('lonTabDir'); my $include = $r->dir_config('lonIncludes'); my $expire = $r->dir_config('lonExpire'); @@ -134,18 +152,17 @@ sub handler { $loadavg=<$loadfile>; } $loadavg =~ s/\s.*//g; - my $loadpercent=sprintf("%.1f",100*$loadavg/$loadlim); - my $userloadpercent=&Apache::lonnet::userload(); -# ------------------------------------------------------- Do the load balancing - my $otherserver= &Apache::lonnet::absolute_url($host_name); + my ($loadpercent,$userloadpercent); + if ($loadlim) { + $loadpercent=sprintf("%.1f",100*$loadavg/$loadlim); + } + if ($uloadlim) { + $userloadpercent=&Apache::lonnet::userload(); + } + my $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 my $announcements=&Apache::lonnet::getannounce(); @@ -170,13 +187,27 @@ sub handler { if ($uextkey>2147483647) { $uextkey-=4294967296; } # -------------------------------------------------------- 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( - 'tmpput:'.$ukey.$lkey.'&'.$firsturl, + 'tmpput:'.$ukey.$lkey.'&'.$firsturl.$tokenextras, $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 $last; foreach my $hostid (sort @@ -187,7 +218,7 @@ sub handler { keys(%Apache::lonnet::spareid)) { next if ($hostid eq $lonhost); my $hostname = &Apache::lonnet::hostname($hostid); - next if ($last eq $hostname); + next if (($last eq $hostname) || ($hostname eq '')); $spares.='
'. @@ -195,24 +226,26 @@ sub handler { ' '.&mt('(preferred)').''.$/; $last=$hostname; } -$spares.= '
'; -my %all_hostnames = &Apache::lonnet::all_hostnames(); -foreach my $hostid (sort + if ($spares) { + $spares.= '
'; + } + my %all_hostnames = &Apache::lonnet::all_hostnames(); + 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.='
'. - $hostname.''; - $last=$hostname; -} -$r->print( + next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid}); + my $hostname = &Apache::lonnet::hostname($hostid); + next if (($last eq $hostname) || ($hostname eq '')); + $spares.='
'. + $hostname.''; + $last=$hostname; + } + $r->print( '' .'' .&mt('The LearningOnline Network with CAPA') @@ -220,50 +253,52 @@ $r->print( .'<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; -} + .'<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 -$servadm=~s/\,/\<br \/\>/g; + $servadm=~s/\,/\<br \/\>/g; # ----------------------------------------------------------- Front page design -my $pgbg=&Apache::loncommon::designparm('login.pgbg',$domain); -my $font=&Apache::loncommon::designparm('login.font',$domain); -my $link=&Apache::loncommon::designparm('login.link',$domain); -my $vlink=&Apache::loncommon::designparm('login.vlink',$domain); -my $alink=&Apache::loncommon::designparm('login.alink',$domain); -my $mainbg=&Apache::loncommon::designparm('login.mainbg',$domain); -my $logo=&Apache::loncommon::designparm('login.logo',$domain); -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); + my $pgbg=&Apache::loncommon::designparm('login.pgbg',$domain); + my $font=&Apache::loncommon::designparm('login.font',$domain); + my $link=&Apache::loncommon::designparm('login.link',$domain); + my $vlink=&Apache::loncommon::designparm('login.vlink',$domain); + my $alink=&Apache::loncommon::designparm('login.alink',$domain); + my $mainbg=&Apache::loncommon::designparm('login.mainbg',$domain); + my $loginbox_bg=&Apache::loncommon::designparm('login.sidebg',$domain); + my $loginbox_header_bgcol=&Apache::loncommon::designparm('login.bgcol',$domain); + my $loginbox_header_textcol=&Apache::loncommon::designparm('login.textcol',$domain); + my $logo=&Apache::loncommon::designparm('login.logo',$domain); + my $img=&Apache::loncommon::designparm('login.img',$domain); + my $domainlogo=&Apache::loncommon::domainlogo($domain); + 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 $shownewuserlink = + &Apache::loncommon::designparm('login.newuser',$domain); + my $now=time; + my $js = (<<ENDSCRIPT); <script type="text/javascript" language="JavaScript"> +// <![CDATA[ function send() { this.document.server.elements.uname.value @@ -289,63 +324,75 @@ this.document.client.elements.upass$now. this.document.server.submit(); return false; } + +function enableInput() { + this.document.client.elements.upass$now.removeAttribute("readOnly"); + this.document.client.elements.uname.removeAttribute("readOnly"); + this.document.client.elements.udom.removeAttribute("readOnly"); + return; +} + +// ]]> </script> ENDSCRIPT # --------------------------------------------------- Print login screen header -my %add_entries = ( + my %add_entries = ( bgcolor => "$mainbg", text => "$font", link => "$link", vlink => "$vlink", - alink => "$alink",); + alink => "$alink", + onload => 'javascript:enableInput();',); -$r->print(&Apache::loncommon::start_page('The LearningOnline Network with CAPA Login',$js, + $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', - 'catalog' => 'Course Catalog', - 'log' => 'Log in', - 'help' => 'Log-in Help', - 'serv' => 'Server', - 'servadm' => 'Server Administration', - 'helpdesk' => 'Contact Helpdesk', - 'forgotpw' => 'Forgot password?', - 'newuser' => 'New User?', - ); + my %lt=&Apache::lonlocal::texthash( + 'un' => 'Username', + 'pw' => 'Password', + 'dom' => 'Domain', + 'perc' => 'percent', + 'load' => 'Server Load', + 'userload' => 'User Load', + 'catalog' => 'Course/Community 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); + + my $forgotpw = &forgotpwdisplay(%lt); + $forgotpw .= '<br />' if $forgotpw; + my $loginhelp = &Apache::lonauth::loginhelpdisplay($authdomain); + if ($loginhelp) { + $loginhelp = '<a href="'.$loginhelp.'">'.$lt{'help'}.'</a><br />'; + } # ---------------------------------------------------- Serve out DES JavaScript -{ -my $jsh=Apache::File->new($include."/londes.js"); -$r->print(<$jsh>); -} + { + my $jsh=Apache::File->new($include."/londes.js"); + $r->print(<$jsh>); + } # ---------------------------------------------------------- Serve rest of page -$r->print( - '<div class="LC_loginpage_container">'); - -# -# If the loadbalancing yielded just http:// because perhaps there's no loadbalancing? -# then just us a relative link to authenticate: -# + $r->print( + '<div class="LC_Box"' + .' style="margin:0 auto; padding:10px; width:90%; height: auto; background-color:#FFFFFF;">' +); -$r->print(<<ENDSERVERFORM); -<form name="server" action="$otherserver/adm/authenticate" method="post" target="_top"> + $r->print(<<ENDSERVERFORM); +<form name="server" action="/adm/authenticate" method="post" target="_top"> <input type="hidden" name="logtoken" value="$logtoken" /> <input type="hidden" name="serverid" value="$lonhost" /> <input type="hidden" name="uname" value="" /> @@ -357,39 +404,38 @@ $r->print(<<ENDSERVERFORM); <input type="hidden" name="localres" value="$env{'form.localres'}" /> </form> ENDSERVERFORM -my $coursecatalog; -if (($showcoursecat eq '') || ($showcoursecat)) { - $coursecatalog = &coursecatalog_link($lt{'catalog'}); -} -my $newuserlink; -if ($shownewuserlink) { - $newuserlink = &newuser_link($lt{'newuser'}).'<br />'; -} -my $logintitle; -if ($loginheader eq 'text') { - $logintitle ='<h2>'.$lt{'log'}.'</h2>'; -} else { - $logintitle = '<img src="'.$login.'" alt="'. - &mt('User Authentication').'" />'; -} - -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, - $version,$authdomain,\$helpdeskscript); + my $coursecatalog; + if (($showcoursecat eq '') || ($showcoursecat)) { + $coursecatalog = &coursecatalog_link($lt{'catalog'}).'<br />'; + } + my $newuserlink; + if ($shownewuserlink) { + $newuserlink = &newuser_link($lt{'newuser'}).'<br />'; + } + my $logintitle = + '<h2 class="LC_hcell"' + .' style="background:'.$loginbox_header_bgcol.';' + .' 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" onsubmit="return(send())"> + 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" size="15" value="$authusername" /><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" size="15" /><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" size="15" value="$authdomain" /><br /> + <input type="text" name="udom" id="udom" size="15" value="$authdomain" readonly="readonly" /><br /> <input type="submit" value="$lt{'log'}" /> </form> LFORM @@ -397,88 +443,114 @@ LFORM 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> +<div style="background:$pgbg;margin:0;width:100%;"> + <img src="$img" border="0" alt="The Learning Online Network with CAPA" /> +</div> HEADER } $r->print(<<ENDTOP); -<div class="LC_loginpage_space"> </div> -<div class="LC_loginpage_floatLeft"> -<div class="LC_loginpage_loginContainer"> +<div style="float:left;margin-top:0;"> +<div class="LC_Box" style="background:$loginbox_bg;"> $logintitle - <table border="0" align="left" cellspacing="1" cellpadding="2" width="100%"> - <tr> - <td> - $loginform - </td> - </tr> - </table> - $noscript_warning + $loginform + $noscript_warning </div> -<div class="LC_loginpage_loginInfo"> - $loginhelp<br /> - $forgotpw<br /> - $contactblock<br /> - $newuserlink - $coursecatalog +<div class="LC_Box" style="padding-top: 10px;"> + $loginhelp + $forgotpw + $contactblock + $newuserlink + $coursecatalog </div> </div> + +<div> ENDTOP if ($showmainlogo) { $r->print(' <img src="'.$logo.'" alt="" />'."\n"); } $r->print(<<ENDTOP); $announcements -$domainlogo -<div class="LC_loginpage_space"> </div> +</div> +<hr style="clear:both;" /> ENDTOP - -$r->print(<<ENDDOCUMENT); - <table border="0" cellspacing="0" cellpadding="0"> + my ($domainrow,$serverrow,$loadrow,$userloadrow,$versionrow); + $domainrow = <<"END"; <tr> <td align="left" valign="top"> - <small><b>   $lt{'dom'}: </b></small> + <small><b>$lt{'dom'}: </b></small> </td> <td align="left" valign="top"> <small><tt> $domain</tt></small> </td> </tr> +END + $serverrow = <<"END"; <tr> <td align="left" valign="top"> - <small><b>   $lt{'serv'}: </b></small> + <small><b>$lt{'serv'}: </b></small> </td> <td align="left" valign="top"> <small><tt> $lonhost ($role)</tt></small> </td> </tr> +END + if ($loadlim) { + $loadrow = <<"END"; <tr> <td align="left" valign="top"> - <small><b>   $lt{'load'}: </b></small> + <small><b>$lt{'load'}: </b></small> </td> <td align="left" valign="top"> <small><tt> $loadpercent $lt{'perc'}</tt></small> </td> </tr> +END + } + if ($uloadlim) { + $userloadrow = <<"END"; <tr> <td align="left" valign="top"> - <small><b>   $lt{'userload'}: </b></small> + <small><b>$lt{'userload'}: </b></small> </td> <td align="left" valign="top"> <small><tt> $userloadpercent $lt{'perc'}</tt></small> </td> </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> + </div> + <div style="float: right;"> + $domainlogo + </div> + <br style="clear:both;" /> </div> <script type="text/javascript"> +// <![CDATA[ // the if prevents the script error if the browser can not handle this if ( document.client.uname ) { document.client.uname.focus(); } +// ]]> </script> $helpdeskscript @@ -488,8 +560,64 @@ ENDDOCUMENT 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 { - my ($lt,$servadm,$showadminmail,$version,$authdomain,$helpdeskscript) = @_; + my ($lt,$servadm,$showadminmail,$authdomain,$helpdeskscript) = @_; my $contactblock; my $showhelpdesk = 0; my $requestmail = $Apache::lonnet::perlvar{'lonSupportEMail'}; @@ -497,14 +625,15 @@ sub contactdisplay { $showhelpdesk = 1; } if ($servadm && $showadminmail) { - $contactblock .= '<b>   '.$$lt{'servadm'}.':</b><br />'. - '<tt>      '.$servadm.'</tt><br /> <br />'; + $contactblock .= $$lt{'servadm'}.':<br />'. + '<tt>'.$servadm.'</tt><br />'; } if ($showhelpdesk) { $contactblock .= '<a href="javascript:helpdesk()">'.$lt->{'helpdesk'}.'</a><br />'; my $thisurl = &escape('/adm/login'); $$helpdeskscript = <<"ENDSCRIPT"; <script type="text/javascript"> +// <![CDATA[ function helpdesk() { var codedom = document.client.udom.value; if (codedom == '') { @@ -514,12 +643,10 @@ function helpdesk() { document.location.href = "/adm/helpdesk?"+querystr; return; } +// ]]> </script> ENDSCRIPT } - $contactblock .= <<"ENDBLOCK"; -    $version -ENDBLOCK return $contactblock; } @@ -532,15 +659,6 @@ sub forgotpwdisplay { return; } -sub loginhelpdisplay { - my (%lt) = @_; - my $login_help = 1; - if ($login_help) { - return '<a href="/adm/loginproblems.html">'.$lt{'help'}.'</a>'; - } - return; -} - sub coursecatalog_link { my ($linkname) = @_; return <<"END"; @@ -550,7 +668,7 @@ END sub newuser_link { my ($linkname) = @_; - return '   <a href="/adm/createaccount"><b>'.$linkname.'</b></a><br />'; + return '<a href="/adm/createaccount">'.$linkname.'</a>'; } 1; <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>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.